@usecanary/browser 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/error.js", "../../../node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/argument.js", "../../../node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/help.js", "../../../node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/option.js", "../../../node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/suggestSimilar.js", "../../../node_modules/.pnpm/commander@12.1.0/node_modules/commander/lib/command.js", "../../../node_modules/.pnpm/commander@12.1.0/node_modules/commander/index.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/err-helpers.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/err-proto.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/err.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/err-with-cause.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/req.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/res.js", "../../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/index.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/caller.js", "../../../node_modules/.pnpm/@pinojs+redact@0.4.0/node_modules/@pinojs/redact/index.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/symbols.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/redaction.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/time.js", "../../../node_modules/.pnpm/quick-format-unescaped@4.0.4/node_modules/quick-format-unescaped/index.js", "../../../node_modules/.pnpm/atomic-sleep@1.0.0/node_modules/atomic-sleep/index.js", "../../../node_modules/.pnpm/sonic-boom@4.2.1/node_modules/sonic-boom/index.js", "../../../node_modules/.pnpm/on-exit-leak-free@2.1.2/node_modules/on-exit-leak-free/index.js", "../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/package.json", "../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/lib/wait.js", "../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/lib/indexes.js", "../../../node_modules/.pnpm/thread-stream@3.1.0/node_modules/thread-stream/index.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/transport.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/tools.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/constants.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/levels.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/meta.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/proto.js", "../../../node_modules/.pnpm/safe-stable-stringify@2.5.0/node_modules/safe-stable-stringify/index.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/lib/multistream.js", "../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/pino.js", "../../../node_modules/.pnpm/colorette@2.0.20/node_modules/colorette/index.cjs", "../../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js", "../../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js", "../../../node_modules/.pnpm/end-of-stream@1.4.5/node_modules/end-of-stream/index.js", "../../../node_modules/.pnpm/pump@3.0.4/node_modules/pump/index.js", "../../../node_modules/.pnpm/split2@4.2.0/node_modules/split2/index.js", "../../../node_modules/.pnpm/pino-abstract-transport@3.0.0/node_modules/pino-abstract-transport/index.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/constants.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/get-level-label-data.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/colors.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/noop.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/build-safe-sonic-boom.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/is-valid-date.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/create-date.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/split-property-key.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/get-property-value.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/delete-log-property.js", "../../../node_modules/.pnpm/fast-copy@4.0.3/node_modules/src/utils.ts", "../../../node_modules/.pnpm/fast-copy@4.0.3/node_modules/src/copier.ts", "../../../node_modules/.pnpm/fast-copy@4.0.3/node_modules/src/options.ts", "../../../node_modules/.pnpm/fast-copy@4.0.3/node_modules/src/index.ts", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/filter-log.js", "../../../node_modules/.pnpm/dateformat@4.6.3/node_modules/dateformat/lib/dateformat.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/format-time.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/handle-custom-levels-names-opts.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/handle-custom-levels-opts.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/interpret-conditionals.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/is-object.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/join-lines-with-indentation.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/parse-factory-options.js", "../../../node_modules/.pnpm/fast-safe-stringify@2.1.1/node_modules/fast-safe-stringify/index.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/prettify-error.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/prettify-object.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/prettify-error-log.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/prettify-level.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/prettify-message.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/prettify-metadata.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/prettify-time.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/utils/index.js", "../../../node_modules/.pnpm/secure-json-parse@4.1.0/node_modules/secure-json-parse/index.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/lib/pretty.js", "../../../node_modules/.pnpm/pino-pretty@13.1.3/node_modules/pino-pretty/index.js", "../../../node_modules/.pnpm/commander@12.1.0/node_modules/commander/esm.mjs", "../../../packages/daemon-client/src/daemon/entry.ts", "../../../packages/daemon-client/src/paths.ts", "../../../packages/daemon-client/src/ipc/pipename.ts", "../../../packages/daemon-client/src/daemon/extract.ts", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js", "../../../packages/protocol/src/index.ts", "../../../packages/daemon-client/src/assets/embedded.generated.ts", "../../../packages/daemon-client/src/daemon/install.ts", "../../../packages/daemon-client/src/daemon/npm.ts", "../../../packages/daemon-client/src/daemon/lifecycle.ts", "../../../packages/daemon-client/src/ipc/connect.ts", "../../../packages/logger/src/index.ts", "../../../packages/daemon-client/src/logger.ts", "../../../packages/daemon-client/src/daemon/spawn.ts", "../../../packages/cli-kit/src/index.ts", "../src/commands/render.ts", "../src/commands/browsers.ts", "../src/commands/flags.ts", "../src/assets/embedded.generated.ts", "../src/commands/help-text.ts", "../src/commands/install.ts", "../src/commands/preprocess.ts", "../src/commands/run.ts", "../src/inject-scripts.ts", "../src/commands/status.ts", "../src/commands/stop.ts", "../src/logger.ts", "../src/cli.ts"],
4
+ "sourcesContent": ["/**\n * CommanderError class\n */\nclass CommanderError extends Error {\n /**\n * Constructs the CommanderError class\n * @param {number} exitCode suggested exit code which could be used with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n */\n constructor(exitCode, code, message) {\n super(message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n this.code = code;\n this.exitCode = exitCode;\n this.nestedError = undefined;\n }\n}\n\n/**\n * InvalidArgumentError class\n */\nclass InvalidArgumentError extends CommanderError {\n /**\n * Constructs the InvalidArgumentError class\n * @param {string} [message] explanation of why argument is invalid\n */\n constructor(message) {\n super(1, 'commander.invalidArgument', message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n }\n}\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\n", "const { InvalidArgumentError } = require('./error.js');\n\nclass Argument {\n /**\n * Initialize a new command argument with the given name and description.\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @param {string} name\n * @param {string} [description]\n */\n\n constructor(name, description) {\n this.description = description || '';\n this.variadic = false;\n this.parseArg = undefined;\n this.defaultValue = undefined;\n this.defaultValueDescription = undefined;\n this.argChoices = undefined;\n\n switch (name[0]) {\n case '<': // e.g. <required>\n this.required = true;\n this._name = name.slice(1, -1);\n break;\n case '[': // e.g. [optional]\n this.required = false;\n this._name = name.slice(1, -1);\n break;\n default:\n this.required = true;\n this._name = name;\n break;\n }\n\n if (this._name.length > 3 && this._name.slice(-3) === '...') {\n this.variadic = true;\n this._name = this._name.slice(0, -3);\n }\n }\n\n /**\n * Return argument name.\n *\n * @return {string}\n */\n\n name() {\n return this._name;\n }\n\n /**\n * @package\n */\n\n _concatValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n return previous.concat(value);\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Argument}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI command arguments into argument values.\n *\n * @param {Function} [fn]\n * @return {Argument}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Only allow argument value to be one of choices.\n *\n * @param {string[]} values\n * @return {Argument}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._concatValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Make argument required.\n *\n * @returns {Argument}\n */\n argRequired() {\n this.required = true;\n return this;\n }\n\n /**\n * Make argument optional.\n *\n * @returns {Argument}\n */\n argOptional() {\n this.required = false;\n return this;\n }\n}\n\n/**\n * Takes an argument and returns its human readable equivalent for help usage.\n *\n * @param {Argument} arg\n * @return {string}\n * @private\n */\n\nfunction humanReadableArgName(arg) {\n const nameOutput = arg.name() + (arg.variadic === true ? '...' : '');\n\n return arg.required ? '<' + nameOutput + '>' : '[' + nameOutput + ']';\n}\n\nexports.Argument = Argument;\nexports.humanReadableArgName = humanReadableArgName;\n", "const { humanReadableArgName } = require('./argument.js');\n\n/**\n * TypeScript import types for JSDoc, used by Visual Studio Code IntelliSense and `npm run typescript-checkJS`\n * https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#import-types\n * @typedef { import(\"./argument.js\").Argument } Argument\n * @typedef { import(\"./command.js\").Command } Command\n * @typedef { import(\"./option.js\").Option } Option\n */\n\n// Although this is a class, methods are static in style to allow override using subclass or just functions.\nclass Help {\n constructor() {\n this.helpWidth = undefined;\n this.sortSubcommands = false;\n this.sortOptions = false;\n this.showGlobalOptions = false;\n }\n\n /**\n * Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one.\n *\n * @param {Command} cmd\n * @returns {Command[]}\n */\n\n visibleCommands(cmd) {\n const visibleCommands = cmd.commands.filter((cmd) => !cmd._hidden);\n const helpCommand = cmd._getHelpCommand();\n if (helpCommand && !helpCommand._hidden) {\n visibleCommands.push(helpCommand);\n }\n if (this.sortSubcommands) {\n visibleCommands.sort((a, b) => {\n // @ts-ignore: because overloaded return type\n return a.name().localeCompare(b.name());\n });\n }\n return visibleCommands;\n }\n\n /**\n * Compare options for sort.\n *\n * @param {Option} a\n * @param {Option} b\n * @returns {number}\n */\n compareOptions(a, b) {\n const getSortKey = (option) => {\n // WYSIWYG for order displayed in help. Short used for comparison if present. No special handling for negated.\n return option.short\n ? option.short.replace(/^-/, '')\n : option.long.replace(/^--/, '');\n };\n return getSortKey(a).localeCompare(getSortKey(b));\n }\n\n /**\n * Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one.\n *\n * @param {Command} cmd\n * @returns {Option[]}\n */\n\n visibleOptions(cmd) {\n const visibleOptions = cmd.options.filter((option) => !option.hidden);\n // Built-in help option.\n const helpOption = cmd._getHelpOption();\n if (helpOption && !helpOption.hidden) {\n // Automatically hide conflicting flags. Bit dubious but a historical behaviour that is convenient for single-command programs.\n const removeShort = helpOption.short && cmd._findOption(helpOption.short);\n const removeLong = helpOption.long && cmd._findOption(helpOption.long);\n if (!removeShort && !removeLong) {\n visibleOptions.push(helpOption); // no changes needed\n } else if (helpOption.long && !removeLong) {\n visibleOptions.push(\n cmd.createOption(helpOption.long, helpOption.description),\n );\n } else if (helpOption.short && !removeShort) {\n visibleOptions.push(\n cmd.createOption(helpOption.short, helpOption.description),\n );\n }\n }\n if (this.sortOptions) {\n visibleOptions.sort(this.compareOptions);\n }\n return visibleOptions;\n }\n\n /**\n * Get an array of the visible global options. (Not including help.)\n *\n * @param {Command} cmd\n * @returns {Option[]}\n */\n\n visibleGlobalOptions(cmd) {\n if (!this.showGlobalOptions) return [];\n\n const globalOptions = [];\n for (\n let ancestorCmd = cmd.parent;\n ancestorCmd;\n ancestorCmd = ancestorCmd.parent\n ) {\n const visibleOptions = ancestorCmd.options.filter(\n (option) => !option.hidden,\n );\n globalOptions.push(...visibleOptions);\n }\n if (this.sortOptions) {\n globalOptions.sort(this.compareOptions);\n }\n return globalOptions;\n }\n\n /**\n * Get an array of the arguments if any have a description.\n *\n * @param {Command} cmd\n * @returns {Argument[]}\n */\n\n visibleArguments(cmd) {\n // Side effect! Apply the legacy descriptions before the arguments are displayed.\n if (cmd._argsDescription) {\n cmd.registeredArguments.forEach((argument) => {\n argument.description =\n argument.description || cmd._argsDescription[argument.name()] || '';\n });\n }\n\n // If there are any arguments with a description then return all the arguments.\n if (cmd.registeredArguments.find((argument) => argument.description)) {\n return cmd.registeredArguments;\n }\n return [];\n }\n\n /**\n * Get the command term to show in the list of subcommands.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n subcommandTerm(cmd) {\n // Legacy. Ignores custom usage string, and nested commands.\n const args = cmd.registeredArguments\n .map((arg) => humanReadableArgName(arg))\n .join(' ');\n return (\n cmd._name +\n (cmd._aliases[0] ? '|' + cmd._aliases[0] : '') +\n (cmd.options.length ? ' [options]' : '') + // simplistic check for non-help option\n (args ? ' ' + args : '')\n );\n }\n\n /**\n * Get the option term to show in the list of options.\n *\n * @param {Option} option\n * @returns {string}\n */\n\n optionTerm(option) {\n return option.flags;\n }\n\n /**\n * Get the argument term to show in the list of arguments.\n *\n * @param {Argument} argument\n * @returns {string}\n */\n\n argumentTerm(argument) {\n return argument.name();\n }\n\n /**\n * Get the longest command term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestSubcommandTermLength(cmd, helper) {\n return helper.visibleCommands(cmd).reduce((max, command) => {\n return Math.max(max, helper.subcommandTerm(command).length);\n }, 0);\n }\n\n /**\n * Get the longest option term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestOptionTermLength(cmd, helper) {\n return helper.visibleOptions(cmd).reduce((max, option) => {\n return Math.max(max, helper.optionTerm(option).length);\n }, 0);\n }\n\n /**\n * Get the longest global option term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestGlobalOptionTermLength(cmd, helper) {\n return helper.visibleGlobalOptions(cmd).reduce((max, option) => {\n return Math.max(max, helper.optionTerm(option).length);\n }, 0);\n }\n\n /**\n * Get the longest argument term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n longestArgumentTermLength(cmd, helper) {\n return helper.visibleArguments(cmd).reduce((max, argument) => {\n return Math.max(max, helper.argumentTerm(argument).length);\n }, 0);\n }\n\n /**\n * Get the command usage to be displayed at the top of the built-in help.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n commandUsage(cmd) {\n // Usage\n let cmdName = cmd._name;\n if (cmd._aliases[0]) {\n cmdName = cmdName + '|' + cmd._aliases[0];\n }\n let ancestorCmdNames = '';\n for (\n let ancestorCmd = cmd.parent;\n ancestorCmd;\n ancestorCmd = ancestorCmd.parent\n ) {\n ancestorCmdNames = ancestorCmd.name() + ' ' + ancestorCmdNames;\n }\n return ancestorCmdNames + cmdName + ' ' + cmd.usage();\n }\n\n /**\n * Get the description for the command.\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n commandDescription(cmd) {\n // @ts-ignore: because overloaded return type\n return cmd.description();\n }\n\n /**\n * Get the subcommand summary to show in the list of subcommands.\n * (Fallback to description for backwards compatibility.)\n *\n * @param {Command} cmd\n * @returns {string}\n */\n\n subcommandDescription(cmd) {\n // @ts-ignore: because overloaded return type\n return cmd.summary() || cmd.description();\n }\n\n /**\n * Get the option description to show in the list of options.\n *\n * @param {Option} option\n * @return {string}\n */\n\n optionDescription(option) {\n const extraInfo = [];\n\n if (option.argChoices) {\n extraInfo.push(\n // use stringify to match the display of the default value\n `choices: ${option.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n );\n }\n if (option.defaultValue !== undefined) {\n // default for boolean and negated more for programmer than end user,\n // but show true/false for boolean option as may be for hand-rolled env or config processing.\n const showDefault =\n option.required ||\n option.optional ||\n (option.isBoolean() && typeof option.defaultValue === 'boolean');\n if (showDefault) {\n extraInfo.push(\n `default: ${option.defaultValueDescription || JSON.stringify(option.defaultValue)}`,\n );\n }\n }\n // preset for boolean and negated are more for programmer than end user\n if (option.presetArg !== undefined && option.optional) {\n extraInfo.push(`preset: ${JSON.stringify(option.presetArg)}`);\n }\n if (option.envVar !== undefined) {\n extraInfo.push(`env: ${option.envVar}`);\n }\n if (extraInfo.length > 0) {\n return `${option.description} (${extraInfo.join(', ')})`;\n }\n\n return option.description;\n }\n\n /**\n * Get the argument description to show in the list of arguments.\n *\n * @param {Argument} argument\n * @return {string}\n */\n\n argumentDescription(argument) {\n const extraInfo = [];\n if (argument.argChoices) {\n extraInfo.push(\n // use stringify to match the display of the default value\n `choices: ${argument.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n );\n }\n if (argument.defaultValue !== undefined) {\n extraInfo.push(\n `default: ${argument.defaultValueDescription || JSON.stringify(argument.defaultValue)}`,\n );\n }\n if (extraInfo.length > 0) {\n const extraDescripton = `(${extraInfo.join(', ')})`;\n if (argument.description) {\n return `${argument.description} ${extraDescripton}`;\n }\n return extraDescripton;\n }\n return argument.description;\n }\n\n /**\n * Generate the built-in help text.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {string}\n */\n\n formatHelp(cmd, helper) {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth || 80;\n const itemIndentWidth = 2;\n const itemSeparatorWidth = 2; // between term and description\n function formatItem(term, description) {\n if (description) {\n const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;\n return helper.wrap(\n fullText,\n helpWidth - itemIndentWidth,\n termWidth + itemSeparatorWidth,\n );\n }\n return term;\n }\n function formatList(textArray) {\n return textArray.join('\\n').replace(/^/gm, ' '.repeat(itemIndentWidth));\n }\n\n // Usage\n let output = [`Usage: ${helper.commandUsage(cmd)}`, ''];\n\n // Description\n const commandDescription = helper.commandDescription(cmd);\n if (commandDescription.length > 0) {\n output = output.concat([\n helper.wrap(commandDescription, helpWidth, 0),\n '',\n ]);\n }\n\n // Arguments\n const argumentList = helper.visibleArguments(cmd).map((argument) => {\n return formatItem(\n helper.argumentTerm(argument),\n helper.argumentDescription(argument),\n );\n });\n if (argumentList.length > 0) {\n output = output.concat(['Arguments:', formatList(argumentList), '']);\n }\n\n // Options\n const optionList = helper.visibleOptions(cmd).map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (optionList.length > 0) {\n output = output.concat(['Options:', formatList(optionList), '']);\n }\n\n if (this.showGlobalOptions) {\n const globalOptionList = helper\n .visibleGlobalOptions(cmd)\n .map((option) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (globalOptionList.length > 0) {\n output = output.concat([\n 'Global Options:',\n formatList(globalOptionList),\n '',\n ]);\n }\n }\n\n // Commands\n const commandList = helper.visibleCommands(cmd).map((cmd) => {\n return formatItem(\n helper.subcommandTerm(cmd),\n helper.subcommandDescription(cmd),\n );\n });\n if (commandList.length > 0) {\n output = output.concat(['Commands:', formatList(commandList), '']);\n }\n\n return output.join('\\n');\n }\n\n /**\n * Calculate the pad width from the maximum term length.\n *\n * @param {Command} cmd\n * @param {Help} helper\n * @returns {number}\n */\n\n padWidth(cmd, helper) {\n return Math.max(\n helper.longestOptionTermLength(cmd, helper),\n helper.longestGlobalOptionTermLength(cmd, helper),\n helper.longestSubcommandTermLength(cmd, helper),\n helper.longestArgumentTermLength(cmd, helper),\n );\n }\n\n /**\n * Wrap the given string to width characters per line, with lines after the first indented.\n * Do not wrap if insufficient room for wrapping (minColumnWidth), or string is manually formatted.\n *\n * @param {string} str\n * @param {number} width\n * @param {number} indent\n * @param {number} [minColumnWidth=40]\n * @return {string}\n *\n */\n\n wrap(str, width, indent, minColumnWidth = 40) {\n // Full \\s characters, minus the linefeeds.\n const indents =\n ' \\\\f\\\\t\\\\v\\u00a0\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff';\n // Detect manually wrapped and indented strings by searching for line break followed by spaces.\n const manualIndent = new RegExp(`[\\\\n][${indents}]+`);\n if (str.match(manualIndent)) return str;\n // Do not wrap if not enough room for a wrapped column of text (as could end up with a word per line).\n const columnWidth = width - indent;\n if (columnWidth < minColumnWidth) return str;\n\n const leadingStr = str.slice(0, indent);\n const columnText = str.slice(indent).replace('\\r\\n', '\\n');\n const indentString = ' '.repeat(indent);\n const zeroWidthSpace = '\\u200B';\n const breaks = `\\\\s${zeroWidthSpace}`;\n // Match line end (so empty lines don't collapse),\n // or as much text as will fit in column, or excess text up to first break.\n const regex = new RegExp(\n `\\n|.{1,${columnWidth - 1}}([${breaks}]|$)|[^${breaks}]+?([${breaks}]|$)`,\n 'g',\n );\n const lines = columnText.match(regex) || [];\n return (\n leadingStr +\n lines\n .map((line, i) => {\n if (line === '\\n') return ''; // preserve empty lines\n return (i > 0 ? indentString : '') + line.trimEnd();\n })\n .join('\\n')\n );\n }\n}\n\nexports.Help = Help;\n", "const { InvalidArgumentError } = require('./error.js');\n\nclass Option {\n /**\n * Initialize a new `Option` with the given `flags` and `description`.\n *\n * @param {string} flags\n * @param {string} [description]\n */\n\n constructor(flags, description) {\n this.flags = flags;\n this.description = description || '';\n\n this.required = flags.includes('<'); // A value must be supplied when the option is specified.\n this.optional = flags.includes('['); // A value is optional when the option is specified.\n // variadic test ignores <value,...> et al which might be used to describe custom splitting of single argument\n this.variadic = /\\w\\.\\.\\.[>\\]]$/.test(flags); // The option can take multiple values.\n this.mandatory = false; // The option must have a value after parsing, which usually means it must be specified on command line.\n const optionFlags = splitOptionFlags(flags);\n this.short = optionFlags.shortFlag;\n this.long = optionFlags.longFlag;\n this.negate = false;\n if (this.long) {\n this.negate = this.long.startsWith('--no-');\n }\n this.defaultValue = undefined;\n this.defaultValueDescription = undefined;\n this.presetArg = undefined;\n this.envVar = undefined;\n this.parseArg = undefined;\n this.hidden = false;\n this.argChoices = undefined;\n this.conflictsWith = [];\n this.implied = undefined;\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Option}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Preset to use when option used without option-argument, especially optional but also boolean and negated.\n * The custom processing (parseArg) is called.\n *\n * @example\n * new Option('--color').default('GREYSCALE').preset('RGB');\n * new Option('--donate [amount]').preset('20').argParser(parseFloat);\n *\n * @param {*} arg\n * @return {Option}\n */\n\n preset(arg) {\n this.presetArg = arg;\n return this;\n }\n\n /**\n * Add option name(s) that conflict with this option.\n * An error will be displayed if conflicting options are found during parsing.\n *\n * @example\n * new Option('--rgb').conflicts('cmyk');\n * new Option('--js').conflicts(['ts', 'jsx']);\n *\n * @param {(string | string[])} names\n * @return {Option}\n */\n\n conflicts(names) {\n this.conflictsWith = this.conflictsWith.concat(names);\n return this;\n }\n\n /**\n * Specify implied option values for when this option is set and the implied options are not.\n *\n * The custom processing (parseArg) is not called on the implied values.\n *\n * @example\n * program\n * .addOption(new Option('--log', 'write logging information to file'))\n * .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' }));\n *\n * @param {object} impliedOptionValues\n * @return {Option}\n */\n implies(impliedOptionValues) {\n let newImplied = impliedOptionValues;\n if (typeof impliedOptionValues === 'string') {\n // string is not documented, but easy mistake and we can do what user probably intended.\n newImplied = { [impliedOptionValues]: true };\n }\n this.implied = Object.assign(this.implied || {}, newImplied);\n return this;\n }\n\n /**\n * Set environment variable to check for option value.\n *\n * An environment variable is only used if when processed the current option value is\n * undefined, or the source of the current value is 'default' or 'config' or 'env'.\n *\n * @param {string} name\n * @return {Option}\n */\n\n env(name) {\n this.envVar = name;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI option arguments into option values.\n *\n * @param {Function} [fn]\n * @return {Option}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Whether the option is mandatory and must have a value after parsing.\n *\n * @param {boolean} [mandatory=true]\n * @return {Option}\n */\n\n makeOptionMandatory(mandatory = true) {\n this.mandatory = !!mandatory;\n return this;\n }\n\n /**\n * Hide option in help.\n *\n * @param {boolean} [hide=true]\n * @return {Option}\n */\n\n hideHelp(hide = true) {\n this.hidden = !!hide;\n return this;\n }\n\n /**\n * @package\n */\n\n _concatValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n return previous.concat(value);\n }\n\n /**\n * Only allow option value to be one of choices.\n *\n * @param {string[]} values\n * @return {Option}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._concatValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Return option name.\n *\n * @return {string}\n */\n\n name() {\n if (this.long) {\n return this.long.replace(/^--/, '');\n }\n return this.short.replace(/^-/, '');\n }\n\n /**\n * Return option name, in a camelcase format that can be used\n * as a object attribute key.\n *\n * @return {string}\n */\n\n attributeName() {\n return camelcase(this.name().replace(/^no-/, ''));\n }\n\n /**\n * Check if `arg` matches the short or long flag.\n *\n * @param {string} arg\n * @return {boolean}\n * @package\n */\n\n is(arg) {\n return this.short === arg || this.long === arg;\n }\n\n /**\n * Return whether a boolean option.\n *\n * Options are one of boolean, negated, required argument, or optional argument.\n *\n * @return {boolean}\n * @package\n */\n\n isBoolean() {\n return !this.required && !this.optional && !this.negate;\n }\n}\n\n/**\n * This class is to make it easier to work with dual options, without changing the existing\n * implementation. We support separate dual options for separate positive and negative options,\n * like `--build` and `--no-build`, which share a single option value. This works nicely for some\n * use cases, but is tricky for others where we want separate behaviours despite\n * the single shared option value.\n */\nclass DualOptions {\n /**\n * @param {Option[]} options\n */\n constructor(options) {\n this.positiveOptions = new Map();\n this.negativeOptions = new Map();\n this.dualOptions = new Set();\n options.forEach((option) => {\n if (option.negate) {\n this.negativeOptions.set(option.attributeName(), option);\n } else {\n this.positiveOptions.set(option.attributeName(), option);\n }\n });\n this.negativeOptions.forEach((value, key) => {\n if (this.positiveOptions.has(key)) {\n this.dualOptions.add(key);\n }\n });\n }\n\n /**\n * Did the value come from the option, and not from possible matching dual option?\n *\n * @param {*} value\n * @param {Option} option\n * @returns {boolean}\n */\n valueFromOption(value, option) {\n const optionKey = option.attributeName();\n if (!this.dualOptions.has(optionKey)) return true;\n\n // Use the value to deduce if (probably) came from the option.\n const preset = this.negativeOptions.get(optionKey).presetArg;\n const negativeValue = preset !== undefined ? preset : false;\n return option.negate === (negativeValue === value);\n }\n}\n\n/**\n * Convert string from kebab-case to camelCase.\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction camelcase(str) {\n return str.split('-').reduce((str, word) => {\n return str + word[0].toUpperCase() + word.slice(1);\n });\n}\n\n/**\n * Split the short and long flag out of something like '-m,--mixed <value>'\n *\n * @private\n */\n\nfunction splitOptionFlags(flags) {\n let shortFlag;\n let longFlag;\n // Use original very loose parsing to maintain backwards compatibility for now,\n // which allowed for example unintended `-sw, --short-word` [sic].\n const flagParts = flags.split(/[ |,]+/);\n if (flagParts.length > 1 && !/^[[<]/.test(flagParts[1]))\n shortFlag = flagParts.shift();\n longFlag = flagParts.shift();\n // Add support for lone short flag without significantly changing parsing!\n if (!shortFlag && /^-[^-]$/.test(longFlag)) {\n shortFlag = longFlag;\n longFlag = undefined;\n }\n return { shortFlag, longFlag };\n}\n\nexports.Option = Option;\nexports.DualOptions = DualOptions;\n", "const maxDistance = 3;\n\nfunction editDistance(a, b) {\n // https://en.wikipedia.org/wiki/Damerau\u2013Levenshtein_distance\n // Calculating optimal string alignment distance, no substring is edited more than once.\n // (Simple implementation.)\n\n // Quick early exit, return worst case.\n if (Math.abs(a.length - b.length) > maxDistance)\n return Math.max(a.length, b.length);\n\n // distance between prefix substrings of a and b\n const d = [];\n\n // pure deletions turn a into empty string\n for (let i = 0; i <= a.length; i++) {\n d[i] = [i];\n }\n // pure insertions turn empty string into b\n for (let j = 0; j <= b.length; j++) {\n d[0][j] = j;\n }\n\n // fill matrix\n for (let j = 1; j <= b.length; j++) {\n for (let i = 1; i <= a.length; i++) {\n let cost = 1;\n if (a[i - 1] === b[j - 1]) {\n cost = 0;\n } else {\n cost = 1;\n }\n d[i][j] = Math.min(\n d[i - 1][j] + 1, // deletion\n d[i][j - 1] + 1, // insertion\n d[i - 1][j - 1] + cost, // substitution\n );\n // transposition\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1);\n }\n }\n }\n\n return d[a.length][b.length];\n}\n\n/**\n * Find close matches, restricted to same number of edits.\n *\n * @param {string} word\n * @param {string[]} candidates\n * @returns {string}\n */\n\nfunction suggestSimilar(word, candidates) {\n if (!candidates || candidates.length === 0) return '';\n // remove possible duplicates\n candidates = Array.from(new Set(candidates));\n\n const searchingOptions = word.startsWith('--');\n if (searchingOptions) {\n word = word.slice(2);\n candidates = candidates.map((candidate) => candidate.slice(2));\n }\n\n let similar = [];\n let bestDistance = maxDistance;\n const minSimilarity = 0.4;\n candidates.forEach((candidate) => {\n if (candidate.length <= 1) return; // no one character guesses\n\n const distance = editDistance(word, candidate);\n const length = Math.max(word.length, candidate.length);\n const similarity = (length - distance) / length;\n if (similarity > minSimilarity) {\n if (distance < bestDistance) {\n // better edit distance, throw away previous worse matches\n bestDistance = distance;\n similar = [candidate];\n } else if (distance === bestDistance) {\n similar.push(candidate);\n }\n }\n });\n\n similar.sort((a, b) => a.localeCompare(b));\n if (searchingOptions) {\n similar = similar.map((candidate) => `--${candidate}`);\n }\n\n if (similar.length > 1) {\n return `\\n(Did you mean one of ${similar.join(', ')}?)`;\n }\n if (similar.length === 1) {\n return `\\n(Did you mean ${similar[0]}?)`;\n }\n return '';\n}\n\nexports.suggestSimilar = suggestSimilar;\n", "const EventEmitter = require('node:events').EventEmitter;\nconst childProcess = require('node:child_process');\nconst path = require('node:path');\nconst fs = require('node:fs');\nconst process = require('node:process');\n\nconst { Argument, humanReadableArgName } = require('./argument.js');\nconst { CommanderError } = require('./error.js');\nconst { Help } = require('./help.js');\nconst { Option, DualOptions } = require('./option.js');\nconst { suggestSimilar } = require('./suggestSimilar');\n\nclass Command extends EventEmitter {\n /**\n * Initialize a new `Command`.\n *\n * @param {string} [name]\n */\n\n constructor(name) {\n super();\n /** @type {Command[]} */\n this.commands = [];\n /** @type {Option[]} */\n this.options = [];\n this.parent = null;\n this._allowUnknownOption = false;\n this._allowExcessArguments = true;\n /** @type {Argument[]} */\n this.registeredArguments = [];\n this._args = this.registeredArguments; // deprecated old name\n /** @type {string[]} */\n this.args = []; // cli args with options removed\n this.rawArgs = [];\n this.processedArgs = []; // like .args but after custom processing and collecting variadic\n this._scriptPath = null;\n this._name = name || '';\n this._optionValues = {};\n this._optionValueSources = {}; // default, env, cli etc\n this._storeOptionsAsProperties = false;\n this._actionHandler = null;\n this._executableHandler = false;\n this._executableFile = null; // custom name for executable\n this._executableDir = null; // custom search directory for subcommands\n this._defaultCommandName = null;\n this._exitCallback = null;\n this._aliases = [];\n this._combineFlagAndOptionalValue = true;\n this._description = '';\n this._summary = '';\n this._argsDescription = undefined; // legacy\n this._enablePositionalOptions = false;\n this._passThroughOptions = false;\n this._lifeCycleHooks = {}; // a hash of arrays\n /** @type {(boolean | string)} */\n this._showHelpAfterError = false;\n this._showSuggestionAfterError = true;\n\n // see .configureOutput() for docs\n this._outputConfiguration = {\n writeOut: (str) => process.stdout.write(str),\n writeErr: (str) => process.stderr.write(str),\n getOutHelpWidth: () =>\n process.stdout.isTTY ? process.stdout.columns : undefined,\n getErrHelpWidth: () =>\n process.stderr.isTTY ? process.stderr.columns : undefined,\n outputError: (str, write) => write(str),\n };\n\n this._hidden = false;\n /** @type {(Option | null | undefined)} */\n this._helpOption = undefined; // Lazy created on demand. May be null if help option is disabled.\n this._addImplicitHelpCommand = undefined; // undecided whether true or false yet, not inherited\n /** @type {Command} */\n this._helpCommand = undefined; // lazy initialised, inherited\n this._helpConfiguration = {};\n }\n\n /**\n * Copy settings that are useful to have in common across root command and subcommands.\n *\n * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.)\n *\n * @param {Command} sourceCommand\n * @return {Command} `this` command for chaining\n */\n copyInheritedSettings(sourceCommand) {\n this._outputConfiguration = sourceCommand._outputConfiguration;\n this._helpOption = sourceCommand._helpOption;\n this._helpCommand = sourceCommand._helpCommand;\n this._helpConfiguration = sourceCommand._helpConfiguration;\n this._exitCallback = sourceCommand._exitCallback;\n this._storeOptionsAsProperties = sourceCommand._storeOptionsAsProperties;\n this._combineFlagAndOptionalValue =\n sourceCommand._combineFlagAndOptionalValue;\n this._allowExcessArguments = sourceCommand._allowExcessArguments;\n this._enablePositionalOptions = sourceCommand._enablePositionalOptions;\n this._showHelpAfterError = sourceCommand._showHelpAfterError;\n this._showSuggestionAfterError = sourceCommand._showSuggestionAfterError;\n\n return this;\n }\n\n /**\n * @returns {Command[]}\n * @private\n */\n\n _getCommandAndAncestors() {\n const result = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n for (let command = this; command; command = command.parent) {\n result.push(command);\n }\n return result;\n }\n\n /**\n * Define a command.\n *\n * There are two styles of command: pay attention to where to put the description.\n *\n * @example\n * // Command implemented using action handler (description is supplied separately to `.command`)\n * program\n * .command('clone <source> [destination]')\n * .description('clone a repository into a newly created directory')\n * .action((source, destination) => {\n * console.log('clone command called');\n * });\n *\n * // Command implemented using separate executable file (description is second parameter to `.command`)\n * program\n * .command('start <service>', 'start named service')\n * .command('stop [service]', 'stop named service, or all if no name supplied');\n *\n * @param {string} nameAndArgs - command name and arguments, args are `<required>` or `[optional]` and last may also be `variadic...`\n * @param {(object | string)} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable)\n * @param {object} [execOpts] - configuration options (for executable)\n * @return {Command} returns new command for action handler, or `this` for executable command\n */\n\n command(nameAndArgs, actionOptsOrExecDesc, execOpts) {\n let desc = actionOptsOrExecDesc;\n let opts = execOpts;\n if (typeof desc === 'object' && desc !== null) {\n opts = desc;\n desc = null;\n }\n opts = opts || {};\n const [, name, args] = nameAndArgs.match(/([^ ]+) *(.*)/);\n\n const cmd = this.createCommand(name);\n if (desc) {\n cmd.description(desc);\n cmd._executableHandler = true;\n }\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n cmd._hidden = !!(opts.noHelp || opts.hidden); // noHelp is deprecated old name for hidden\n cmd._executableFile = opts.executableFile || null; // Custom name for executable file, set missing to null to match constructor\n if (args) cmd.arguments(args);\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd.copyInheritedSettings(this);\n\n if (desc) return this;\n return cmd;\n }\n\n /**\n * Factory routine to create a new unattached command.\n *\n * See .command() for creating an attached subcommand, which uses this routine to\n * create the command. You can override createCommand to customise subcommands.\n *\n * @param {string} [name]\n * @return {Command} new command\n */\n\n createCommand(name) {\n return new Command(name);\n }\n\n /**\n * You can customise the help with a subclass of Help by overriding createHelp,\n * or by overriding Help properties using configureHelp().\n *\n * @return {Help}\n */\n\n createHelp() {\n return Object.assign(new Help(), this.configureHelp());\n }\n\n /**\n * You can customise the help by overriding Help properties using configureHelp(),\n * or with a subclass of Help by overriding createHelp().\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureHelp(configuration) {\n if (configuration === undefined) return this._helpConfiguration;\n\n this._helpConfiguration = configuration;\n return this;\n }\n\n /**\n * The default output goes to stdout and stderr. You can customise this for special\n * applications. You can also customise the display of errors by overriding outputError.\n *\n * The configuration properties are all functions:\n *\n * // functions to change where being written, stdout and stderr\n * writeOut(str)\n * writeErr(str)\n * // matching functions to specify width for wrapping help\n * getOutHelpWidth()\n * getErrHelpWidth()\n * // functions based on what is being written out\n * outputError(str, write) // used for displaying errors, and not used for displaying help\n *\n * @param {object} [configuration] - configuration options\n * @return {(Command | object)} `this` command for chaining, or stored configuration\n */\n\n configureOutput(configuration) {\n if (configuration === undefined) return this._outputConfiguration;\n\n Object.assign(this._outputConfiguration, configuration);\n return this;\n }\n\n /**\n * Display the help or a custom message after an error occurs.\n *\n * @param {(boolean|string)} [displayHelp]\n * @return {Command} `this` command for chaining\n */\n showHelpAfterError(displayHelp = true) {\n if (typeof displayHelp !== 'string') displayHelp = !!displayHelp;\n this._showHelpAfterError = displayHelp;\n return this;\n }\n\n /**\n * Display suggestion of similar commands for unknown commands, or options for unknown options.\n *\n * @param {boolean} [displaySuggestion]\n * @return {Command} `this` command for chaining\n */\n showSuggestionAfterError(displaySuggestion = true) {\n this._showSuggestionAfterError = !!displaySuggestion;\n return this;\n }\n\n /**\n * Add a prepared subcommand.\n *\n * See .command() for creating an attached subcommand which inherits settings from its parent.\n *\n * @param {Command} cmd - new subcommand\n * @param {object} [opts] - configuration options\n * @return {Command} `this` command for chaining\n */\n\n addCommand(cmd, opts) {\n if (!cmd._name) {\n throw new Error(`Command passed to .addCommand() must have a name\n- specify the name in Command constructor or using .name()`);\n }\n\n opts = opts || {};\n if (opts.isDefault) this._defaultCommandName = cmd._name;\n if (opts.noHelp || opts.hidden) cmd._hidden = true; // modifying passed command due to existing implementation\n\n this._registerCommand(cmd);\n cmd.parent = this;\n cmd._checkForBrokenPassThrough();\n\n return this;\n }\n\n /**\n * Factory routine to create a new unattached argument.\n *\n * See .argument() for creating an attached argument, which uses this routine to\n * create the argument. You can override createArgument to return a custom argument.\n *\n * @param {string} name\n * @param {string} [description]\n * @return {Argument} new argument\n */\n\n createArgument(name, description) {\n return new Argument(name, description);\n }\n\n /**\n * Define argument syntax for command.\n *\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @example\n * program.argument('<input-file>');\n * program.argument('[output-file]');\n *\n * @param {string} name\n * @param {string} [description]\n * @param {(Function|*)} [fn] - custom argument processing function\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n argument(name, description, fn, defaultValue) {\n const argument = this.createArgument(name, description);\n if (typeof fn === 'function') {\n argument.default(defaultValue).argParser(fn);\n } else {\n argument.default(fn);\n }\n this.addArgument(argument);\n return this;\n }\n\n /**\n * Define argument syntax for command, adding multiple at once (without descriptions).\n *\n * See also .argument().\n *\n * @example\n * program.arguments('<cmd> [env]');\n *\n * @param {string} names\n * @return {Command} `this` command for chaining\n */\n\n arguments(names) {\n names\n .trim()\n .split(/ +/)\n .forEach((detail) => {\n this.argument(detail);\n });\n return this;\n }\n\n /**\n * Define argument syntax for command, adding a prepared argument.\n *\n * @param {Argument} argument\n * @return {Command} `this` command for chaining\n */\n addArgument(argument) {\n const previousArgument = this.registeredArguments.slice(-1)[0];\n if (previousArgument && previousArgument.variadic) {\n throw new Error(\n `only the last argument can be variadic '${previousArgument.name()}'`,\n );\n }\n if (\n argument.required &&\n argument.defaultValue !== undefined &&\n argument.parseArg === undefined\n ) {\n throw new Error(\n `a default value for a required argument is never used: '${argument.name()}'`,\n );\n }\n this.registeredArguments.push(argument);\n return this;\n }\n\n /**\n * Customise or override default help command. By default a help command is automatically added if your command has subcommands.\n *\n * @example\n * program.helpCommand('help [cmd]');\n * program.helpCommand('help [cmd]', 'show help');\n * program.helpCommand(false); // suppress default help command\n * program.helpCommand(true); // add help command even if no subcommands\n *\n * @param {string|boolean} enableOrNameAndArgs - enable with custom name and/or arguments, or boolean to override whether added\n * @param {string} [description] - custom description\n * @return {Command} `this` command for chaining\n */\n\n helpCommand(enableOrNameAndArgs, description) {\n if (typeof enableOrNameAndArgs === 'boolean') {\n this._addImplicitHelpCommand = enableOrNameAndArgs;\n return this;\n }\n\n enableOrNameAndArgs = enableOrNameAndArgs ?? 'help [command]';\n const [, helpName, helpArgs] = enableOrNameAndArgs.match(/([^ ]+) *(.*)/);\n const helpDescription = description ?? 'display help for command';\n\n const helpCommand = this.createCommand(helpName);\n helpCommand.helpOption(false);\n if (helpArgs) helpCommand.arguments(helpArgs);\n if (helpDescription) helpCommand.description(helpDescription);\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n\n return this;\n }\n\n /**\n * Add prepared custom help command.\n *\n * @param {(Command|string|boolean)} helpCommand - custom help command, or deprecated enableOrNameAndArgs as for `.helpCommand()`\n * @param {string} [deprecatedDescription] - deprecated custom description used with custom name only\n * @return {Command} `this` command for chaining\n */\n addHelpCommand(helpCommand, deprecatedDescription) {\n // If not passed an object, call through to helpCommand for backwards compatibility,\n // as addHelpCommand was originally used like helpCommand is now.\n if (typeof helpCommand !== 'object') {\n this.helpCommand(helpCommand, deprecatedDescription);\n return this;\n }\n\n this._addImplicitHelpCommand = true;\n this._helpCommand = helpCommand;\n return this;\n }\n\n /**\n * Lazy create help command.\n *\n * @return {(Command|null)}\n * @package\n */\n _getHelpCommand() {\n const hasImplicitHelpCommand =\n this._addImplicitHelpCommand ??\n (this.commands.length &&\n !this._actionHandler &&\n !this._findCommand('help'));\n\n if (hasImplicitHelpCommand) {\n if (this._helpCommand === undefined) {\n this.helpCommand(undefined, undefined); // use default name and description\n }\n return this._helpCommand;\n }\n return null;\n }\n\n /**\n * Add hook for life cycle event.\n *\n * @param {string} event\n * @param {Function} listener\n * @return {Command} `this` command for chaining\n */\n\n hook(event, listener) {\n const allowedValues = ['preSubcommand', 'preAction', 'postAction'];\n if (!allowedValues.includes(event)) {\n throw new Error(`Unexpected value for event passed to hook : '${event}'.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n if (this._lifeCycleHooks[event]) {\n this._lifeCycleHooks[event].push(listener);\n } else {\n this._lifeCycleHooks[event] = [listener];\n }\n return this;\n }\n\n /**\n * Register callback to use as replacement for calling process.exit.\n *\n * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing\n * @return {Command} `this` command for chaining\n */\n\n exitOverride(fn) {\n if (fn) {\n this._exitCallback = fn;\n } else {\n this._exitCallback = (err) => {\n if (err.code !== 'commander.executeSubCommandAsync') {\n throw err;\n } else {\n // Async callback from spawn events, not useful to throw.\n }\n };\n }\n return this;\n }\n\n /**\n * Call process.exit, and _exitCallback if defined.\n *\n * @param {number} exitCode exit code for using with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n * @return never\n * @private\n */\n\n _exit(exitCode, code, message) {\n if (this._exitCallback) {\n this._exitCallback(new CommanderError(exitCode, code, message));\n // Expecting this line is not reached.\n }\n process.exit(exitCode);\n }\n\n /**\n * Register callback `fn` for the command.\n *\n * @example\n * program\n * .command('serve')\n * .description('start service')\n * .action(function() {\n * // do work here\n * });\n *\n * @param {Function} fn\n * @return {Command} `this` command for chaining\n */\n\n action(fn) {\n const listener = (args) => {\n // The .action callback takes an extra parameter which is the command or options.\n const expectedArgsCount = this.registeredArguments.length;\n const actionArgs = args.slice(0, expectedArgsCount);\n if (this._storeOptionsAsProperties) {\n actionArgs[expectedArgsCount] = this; // backwards compatible \"options\"\n } else {\n actionArgs[expectedArgsCount] = this.opts();\n }\n actionArgs.push(this);\n\n return fn.apply(this, actionArgs);\n };\n this._actionHandler = listener;\n return this;\n }\n\n /**\n * Factory routine to create a new unattached option.\n *\n * See .option() for creating an attached option, which uses this routine to\n * create the option. You can override createOption to return a custom option.\n *\n * @param {string} flags\n * @param {string} [description]\n * @return {Option} new option\n */\n\n createOption(flags, description) {\n return new Option(flags, description);\n }\n\n /**\n * Wrap parseArgs to catch 'commander.invalidArgument'.\n *\n * @param {(Option | Argument)} target\n * @param {string} value\n * @param {*} previous\n * @param {string} invalidArgumentMessage\n * @private\n */\n\n _callParseArg(target, value, previous, invalidArgumentMessage) {\n try {\n return target.parseArg(value, previous);\n } catch (err) {\n if (err.code === 'commander.invalidArgument') {\n const message = `${invalidArgumentMessage} ${err.message}`;\n this.error(message, { exitCode: err.exitCode, code: err.code });\n }\n throw err;\n }\n }\n\n /**\n * Check for option flag conflicts.\n * Register option if no conflicts found, or throw on conflict.\n *\n * @param {Option} option\n * @private\n */\n\n _registerOption(option) {\n const matchingOption =\n (option.short && this._findOption(option.short)) ||\n (option.long && this._findOption(option.long));\n if (matchingOption) {\n const matchingFlag =\n option.long && this._findOption(option.long)\n ? option.long\n : option.short;\n throw new Error(`Cannot add option '${option.flags}'${this._name && ` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'\n- already used by option '${matchingOption.flags}'`);\n }\n\n this.options.push(option);\n }\n\n /**\n * Check for command name and alias conflicts with existing commands.\n * Register command if no conflicts found, or throw on conflict.\n *\n * @param {Command} command\n * @private\n */\n\n _registerCommand(command) {\n const knownBy = (cmd) => {\n return [cmd.name()].concat(cmd.aliases());\n };\n\n const alreadyUsed = knownBy(command).find((name) =>\n this._findCommand(name),\n );\n if (alreadyUsed) {\n const existingCmd = knownBy(this._findCommand(alreadyUsed)).join('|');\n const newCmd = knownBy(command).join('|');\n throw new Error(\n `cannot add command '${newCmd}' as already have command '${existingCmd}'`,\n );\n }\n\n this.commands.push(command);\n }\n\n /**\n * Add an option.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addOption(option) {\n this._registerOption(option);\n\n const oname = option.name();\n const name = option.attributeName();\n\n // store default value\n if (option.negate) {\n // --no-foo is special and defaults foo to true, unless a --foo option is already defined\n const positiveLongFlag = option.long.replace(/^--no-/, '--');\n if (!this._findOption(positiveLongFlag)) {\n this.setOptionValueWithSource(\n name,\n option.defaultValue === undefined ? true : option.defaultValue,\n 'default',\n );\n }\n } else if (option.defaultValue !== undefined) {\n this.setOptionValueWithSource(name, option.defaultValue, 'default');\n }\n\n // handler for cli and env supplied values\n const handleOptionValue = (val, invalidValueMessage, valueSource) => {\n // val is null for optional option used without an optional-argument.\n // val is undefined for boolean and negated option.\n if (val == null && option.presetArg !== undefined) {\n val = option.presetArg;\n }\n\n // custom processing\n const oldValue = this.getOptionValue(name);\n if (val !== null && option.parseArg) {\n val = this._callParseArg(option, val, oldValue, invalidValueMessage);\n } else if (val !== null && option.variadic) {\n val = option._concatValue(val, oldValue);\n }\n\n // Fill-in appropriate missing values. Long winded but easy to follow.\n if (val == null) {\n if (option.negate) {\n val = false;\n } else if (option.isBoolean() || option.optional) {\n val = true;\n } else {\n val = ''; // not normal, parseArg might have failed or be a mock function for testing\n }\n }\n this.setOptionValueWithSource(name, val, valueSource);\n };\n\n this.on('option:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' argument '${val}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'cli');\n });\n\n if (option.envVar) {\n this.on('optionEnv:' + oname, (val) => {\n const invalidValueMessage = `error: option '${option.flags}' value '${val}' from env '${option.envVar}' is invalid.`;\n handleOptionValue(val, invalidValueMessage, 'env');\n });\n }\n\n return this;\n }\n\n /**\n * Internal implementation shared by .option() and .requiredOption()\n *\n * @return {Command} `this` command for chaining\n * @private\n */\n _optionEx(config, flags, description, fn, defaultValue) {\n if (typeof flags === 'object' && flags instanceof Option) {\n throw new Error(\n 'To add an Option object use addOption() instead of option() or requiredOption()',\n );\n }\n const option = this.createOption(flags, description);\n option.makeOptionMandatory(!!config.mandatory);\n if (typeof fn === 'function') {\n option.default(defaultValue).argParser(fn);\n } else if (fn instanceof RegExp) {\n // deprecated\n const regex = fn;\n fn = (val, def) => {\n const m = regex.exec(val);\n return m ? m[0] : def;\n };\n option.default(defaultValue).argParser(fn);\n } else {\n option.default(fn);\n }\n\n return this.addOption(option);\n }\n\n /**\n * Define option with `flags`, `description`, and optional argument parsing function or `defaultValue` or both.\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. A required\n * option-argument is indicated by `<>` and an optional option-argument by `[]`.\n *\n * See the README for more details, and see also addOption() and requiredOption().\n *\n * @example\n * program\n * .option('-p, --pepper', 'add pepper')\n * .option('-p, --pizza-type <TYPE>', 'type of pizza') // required option-argument\n * .option('-c, --cheese [CHEESE]', 'add extra cheese', 'mozzarella') // optional option-argument with default\n * .option('-t, --tip <VALUE>', 'add tip to purchase cost', parseFloat) // custom parse function\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n option(flags, description, parseArg, defaultValue) {\n return this._optionEx({}, flags, description, parseArg, defaultValue);\n }\n\n /**\n * Add a required option which must have a value after parsing. This usually means\n * the option must be specified on the command line. (Otherwise the same as .option().)\n *\n * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space.\n *\n * @param {string} flags\n * @param {string} [description]\n * @param {(Function|*)} [parseArg] - custom option processing function or default value\n * @param {*} [defaultValue]\n * @return {Command} `this` command for chaining\n */\n\n requiredOption(flags, description, parseArg, defaultValue) {\n return this._optionEx(\n { mandatory: true },\n flags,\n description,\n parseArg,\n defaultValue,\n );\n }\n\n /**\n * Alter parsing of short flags with optional values.\n *\n * @example\n * // for `.option('-f,--flag [value]'):\n * program.combineFlagAndOptionalValue(true); // `-f80` is treated like `--flag=80`, this is the default behaviour\n * program.combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b`\n *\n * @param {boolean} [combine] - if `true` or omitted, an optional value can be specified directly after the flag.\n * @return {Command} `this` command for chaining\n */\n combineFlagAndOptionalValue(combine = true) {\n this._combineFlagAndOptionalValue = !!combine;\n return this;\n }\n\n /**\n * Allow unknown options on the command line.\n *\n * @param {boolean} [allowUnknown] - if `true` or omitted, no error will be thrown for unknown options.\n * @return {Command} `this` command for chaining\n */\n allowUnknownOption(allowUnknown = true) {\n this._allowUnknownOption = !!allowUnknown;\n return this;\n }\n\n /**\n * Allow excess command-arguments on the command line. Pass false to make excess arguments an error.\n *\n * @param {boolean} [allowExcess] - if `true` or omitted, no error will be thrown for excess arguments.\n * @return {Command} `this` command for chaining\n */\n allowExcessArguments(allowExcess = true) {\n this._allowExcessArguments = !!allowExcess;\n return this;\n }\n\n /**\n * Enable positional options. Positional means global options are specified before subcommands which lets\n * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions.\n * The default behaviour is non-positional and global options may appear anywhere on the command line.\n *\n * @param {boolean} [positional]\n * @return {Command} `this` command for chaining\n */\n enablePositionalOptions(positional = true) {\n this._enablePositionalOptions = !!positional;\n return this;\n }\n\n /**\n * Pass through options that come after command-arguments rather than treat them as command-options,\n * so actual command-options come before command-arguments. Turning this on for a subcommand requires\n * positional options to have been enabled on the program (parent commands).\n * The default behaviour is non-positional and options may appear before or after command-arguments.\n *\n * @param {boolean} [passThrough] for unknown options.\n * @return {Command} `this` command for chaining\n */\n passThroughOptions(passThrough = true) {\n this._passThroughOptions = !!passThrough;\n this._checkForBrokenPassThrough();\n return this;\n }\n\n /**\n * @private\n */\n\n _checkForBrokenPassThrough() {\n if (\n this.parent &&\n this._passThroughOptions &&\n !this.parent._enablePositionalOptions\n ) {\n throw new Error(\n `passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`,\n );\n }\n }\n\n /**\n * Whether to store option values as properties on command object,\n * or store separately (specify false). In both cases the option values can be accessed using .opts().\n *\n * @param {boolean} [storeAsProperties=true]\n * @return {Command} `this` command for chaining\n */\n\n storeOptionsAsProperties(storeAsProperties = true) {\n if (this.options.length) {\n throw new Error('call .storeOptionsAsProperties() before adding options');\n }\n if (Object.keys(this._optionValues).length) {\n throw new Error(\n 'call .storeOptionsAsProperties() before setting option values',\n );\n }\n this._storeOptionsAsProperties = !!storeAsProperties;\n return this;\n }\n\n /**\n * Retrieve option value.\n *\n * @param {string} key\n * @return {object} value\n */\n\n getOptionValue(key) {\n if (this._storeOptionsAsProperties) {\n return this[key];\n }\n return this._optionValues[key];\n }\n\n /**\n * Store option value.\n *\n * @param {string} key\n * @param {object} value\n * @return {Command} `this` command for chaining\n */\n\n setOptionValue(key, value) {\n return this.setOptionValueWithSource(key, value, undefined);\n }\n\n /**\n * Store option value and where the value came from.\n *\n * @param {string} key\n * @param {object} value\n * @param {string} source - expected values are default/config/env/cli/implied\n * @return {Command} `this` command for chaining\n */\n\n setOptionValueWithSource(key, value, source) {\n if (this._storeOptionsAsProperties) {\n this[key] = value;\n } else {\n this._optionValues[key] = value;\n }\n this._optionValueSources[key] = source;\n return this;\n }\n\n /**\n * Get source of option value.\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSource(key) {\n return this._optionValueSources[key];\n }\n\n /**\n * Get source of option value. See also .optsWithGlobals().\n * Expected values are default | config | env | cli | implied\n *\n * @param {string} key\n * @return {string}\n */\n\n getOptionValueSourceWithGlobals(key) {\n // global overwrites local, like optsWithGlobals\n let source;\n this._getCommandAndAncestors().forEach((cmd) => {\n if (cmd.getOptionValueSource(key) !== undefined) {\n source = cmd.getOptionValueSource(key);\n }\n });\n return source;\n }\n\n /**\n * Get user arguments from implied or explicit arguments.\n * Side-effects: set _scriptPath if args included script. Used for default program name, and subcommand searches.\n *\n * @private\n */\n\n _prepareUserArgs(argv, parseOptions) {\n if (argv !== undefined && !Array.isArray(argv)) {\n throw new Error('first parameter to parse must be array or undefined');\n }\n parseOptions = parseOptions || {};\n\n // auto-detect argument conventions if nothing supplied\n if (argv === undefined && parseOptions.from === undefined) {\n if (process.versions?.electron) {\n parseOptions.from = 'electron';\n }\n // check node specific options for scenarios where user CLI args follow executable without scriptname\n const execArgv = process.execArgv ?? [];\n if (\n execArgv.includes('-e') ||\n execArgv.includes('--eval') ||\n execArgv.includes('-p') ||\n execArgv.includes('--print')\n ) {\n parseOptions.from = 'eval'; // internal usage, not documented\n }\n }\n\n // default to using process.argv\n if (argv === undefined) {\n argv = process.argv;\n }\n this.rawArgs = argv.slice();\n\n // extract the user args and scriptPath\n let userArgs;\n switch (parseOptions.from) {\n case undefined:\n case 'node':\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n break;\n case 'electron':\n // @ts-ignore: because defaultApp is an unknown property\n if (process.defaultApp) {\n this._scriptPath = argv[1];\n userArgs = argv.slice(2);\n } else {\n userArgs = argv.slice(1);\n }\n break;\n case 'user':\n userArgs = argv.slice(0);\n break;\n case 'eval':\n userArgs = argv.slice(1);\n break;\n default:\n throw new Error(\n `unexpected parse option { from: '${parseOptions.from}' }`,\n );\n }\n\n // Find default name for program from arguments.\n if (!this._name && this._scriptPath)\n this.nameFromFilename(this._scriptPath);\n this._name = this._name || 'program';\n\n return userArgs;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Use parseAsync instead of parse if any of your action handlers are async.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * program.parse(); // parse process.argv and auto-detect electron and special node flags\n * program.parse(process.argv); // assume argv[0] is app and argv[1] is script\n * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv] - optional, defaults to process.argv\n * @param {object} [parseOptions] - optionally specify style of options with from: node/user/electron\n * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron'\n * @return {Command} `this` command for chaining\n */\n\n parse(argv, parseOptions) {\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n this._parseCommand([], userArgs);\n\n return this;\n }\n\n /**\n * Parse `argv`, setting options and invoking commands when defined.\n *\n * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n *\n * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n * - `'user'`: just user arguments\n *\n * @example\n * await program.parseAsync(); // parse process.argv and auto-detect electron and special node flags\n * await program.parseAsync(process.argv); // assume argv[0] is app and argv[1] is script\n * await program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n *\n * @param {string[]} [argv]\n * @param {object} [parseOptions]\n * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron'\n * @return {Promise}\n */\n\n async parseAsync(argv, parseOptions) {\n const userArgs = this._prepareUserArgs(argv, parseOptions);\n await this._parseCommand([], userArgs);\n\n return this;\n }\n\n /**\n * Execute a sub-command executable.\n *\n * @private\n */\n\n _executeSubCommand(subcommand, args) {\n args = args.slice();\n let launchWithNode = false; // Use node for source targets so do not need to get permissions correct, and on Windows.\n const sourceExt = ['.js', '.ts', '.tsx', '.mjs', '.cjs'];\n\n function findFile(baseDir, baseName) {\n // Look for specified file\n const localBin = path.resolve(baseDir, baseName);\n if (fs.existsSync(localBin)) return localBin;\n\n // Stop looking if candidate already has an expected extension.\n if (sourceExt.includes(path.extname(baseName))) return undefined;\n\n // Try all the extensions.\n const foundExt = sourceExt.find((ext) =>\n fs.existsSync(`${localBin}${ext}`),\n );\n if (foundExt) return `${localBin}${foundExt}`;\n\n return undefined;\n }\n\n // Not checking for help first. Unlikely to have mandatory and executable, and can't robustly test for help flags in external command.\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // executableFile and executableDir might be full path, or just a name\n let executableFile =\n subcommand._executableFile || `${this._name}-${subcommand._name}`;\n let executableDir = this._executableDir || '';\n if (this._scriptPath) {\n let resolvedScriptPath; // resolve possible symlink for installed npm binary\n try {\n resolvedScriptPath = fs.realpathSync(this._scriptPath);\n } catch (err) {\n resolvedScriptPath = this._scriptPath;\n }\n executableDir = path.resolve(\n path.dirname(resolvedScriptPath),\n executableDir,\n );\n }\n\n // Look for a local file in preference to a command in PATH.\n if (executableDir) {\n let localFile = findFile(executableDir, executableFile);\n\n // Legacy search using prefix of script name instead of command name\n if (!localFile && !subcommand._executableFile && this._scriptPath) {\n const legacyName = path.basename(\n this._scriptPath,\n path.extname(this._scriptPath),\n );\n if (legacyName !== this._name) {\n localFile = findFile(\n executableDir,\n `${legacyName}-${subcommand._name}`,\n );\n }\n }\n executableFile = localFile || executableFile;\n }\n\n launchWithNode = sourceExt.includes(path.extname(executableFile));\n\n let proc;\n if (process.platform !== 'win32') {\n if (launchWithNode) {\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n\n proc = childProcess.spawn(process.argv[0], args, { stdio: 'inherit' });\n } else {\n proc = childProcess.spawn(executableFile, args, { stdio: 'inherit' });\n }\n } else {\n args.unshift(executableFile);\n // add executable arguments to spawn\n args = incrementNodeInspectorPort(process.execArgv).concat(args);\n proc = childProcess.spawn(process.execPath, args, { stdio: 'inherit' });\n }\n\n if (!proc.killed) {\n // testing mainly to avoid leak warnings during unit tests with mocked spawn\n const signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP'];\n signals.forEach((signal) => {\n process.on(signal, () => {\n if (proc.killed === false && proc.exitCode === null) {\n // @ts-ignore because signals not typed to known strings\n proc.kill(signal);\n }\n });\n });\n }\n\n // By default terminate process when spawned process terminates.\n const exitCallback = this._exitCallback;\n proc.on('close', (code) => {\n code = code ?? 1; // code is null if spawned process terminated due to a signal\n if (!exitCallback) {\n process.exit(code);\n } else {\n exitCallback(\n new CommanderError(\n code,\n 'commander.executeSubCommandAsync',\n '(close)',\n ),\n );\n }\n });\n proc.on('error', (err) => {\n // @ts-ignore: because err.code is an unknown property\n if (err.code === 'ENOENT') {\n const executableDirMessage = executableDir\n ? `searched for local subcommand relative to directory '${executableDir}'`\n : 'no directory for search for local subcommand, use .executableDir() to supply a custom directory';\n const executableMissing = `'${executableFile}' does not exist\n - if '${subcommand._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead\n - if the default executable name is not suitable, use the executableFile option to supply a custom name or path\n - ${executableDirMessage}`;\n throw new Error(executableMissing);\n // @ts-ignore: because err.code is an unknown property\n } else if (err.code === 'EACCES') {\n throw new Error(`'${executableFile}' not executable`);\n }\n if (!exitCallback) {\n process.exit(1);\n } else {\n const wrappedError = new CommanderError(\n 1,\n 'commander.executeSubCommandAsync',\n '(error)',\n );\n wrappedError.nestedError = err;\n exitCallback(wrappedError);\n }\n });\n\n // Store the reference to the child process\n this.runningCommand = proc;\n }\n\n /**\n * @private\n */\n\n _dispatchSubcommand(commandName, operands, unknown) {\n const subCommand = this._findCommand(commandName);\n if (!subCommand) this.help({ error: true });\n\n let promiseChain;\n promiseChain = this._chainOrCallSubCommandHook(\n promiseChain,\n subCommand,\n 'preSubcommand',\n );\n promiseChain = this._chainOrCall(promiseChain, () => {\n if (subCommand._executableHandler) {\n this._executeSubCommand(subCommand, operands.concat(unknown));\n } else {\n return subCommand._parseCommand(operands, unknown);\n }\n });\n return promiseChain;\n }\n\n /**\n * Invoke help directly if possible, or dispatch if necessary.\n * e.g. help foo\n *\n * @private\n */\n\n _dispatchHelpCommand(subcommandName) {\n if (!subcommandName) {\n this.help();\n }\n const subCommand = this._findCommand(subcommandName);\n if (subCommand && !subCommand._executableHandler) {\n subCommand.help();\n }\n\n // Fallback to parsing the help flag to invoke the help.\n return this._dispatchSubcommand(\n subcommandName,\n [],\n [this._getHelpOption()?.long ?? this._getHelpOption()?.short ?? '--help'],\n );\n }\n\n /**\n * Check this.args against expected this.registeredArguments.\n *\n * @private\n */\n\n _checkNumberOfArguments() {\n // too few\n this.registeredArguments.forEach((arg, i) => {\n if (arg.required && this.args[i] == null) {\n this.missingArgument(arg.name());\n }\n });\n // too many\n if (\n this.registeredArguments.length > 0 &&\n this.registeredArguments[this.registeredArguments.length - 1].variadic\n ) {\n return;\n }\n if (this.args.length > this.registeredArguments.length) {\n this._excessArguments(this.args);\n }\n }\n\n /**\n * Process this.args using this.registeredArguments and save as this.processedArgs!\n *\n * @private\n */\n\n _processArguments() {\n const myParseArg = (argument, value, previous) => {\n // Extra processing for nice error message on parsing failure.\n let parsedValue = value;\n if (value !== null && argument.parseArg) {\n const invalidValueMessage = `error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`;\n parsedValue = this._callParseArg(\n argument,\n value,\n previous,\n invalidValueMessage,\n );\n }\n return parsedValue;\n };\n\n this._checkNumberOfArguments();\n\n const processedArgs = [];\n this.registeredArguments.forEach((declaredArg, index) => {\n let value = declaredArg.defaultValue;\n if (declaredArg.variadic) {\n // Collect together remaining arguments for passing together as an array.\n if (index < this.args.length) {\n value = this.args.slice(index);\n if (declaredArg.parseArg) {\n value = value.reduce((processed, v) => {\n return myParseArg(declaredArg, v, processed);\n }, declaredArg.defaultValue);\n }\n } else if (value === undefined) {\n value = [];\n }\n } else if (index < this.args.length) {\n value = this.args[index];\n if (declaredArg.parseArg) {\n value = myParseArg(declaredArg, value, declaredArg.defaultValue);\n }\n }\n processedArgs[index] = value;\n });\n this.processedArgs = processedArgs;\n }\n\n /**\n * Once we have a promise we chain, but call synchronously until then.\n *\n * @param {(Promise|undefined)} promise\n * @param {Function} fn\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCall(promise, fn) {\n // thenable\n if (promise && promise.then && typeof promise.then === 'function') {\n // already have a promise, chain callback\n return promise.then(() => fn());\n }\n // callback might return a promise\n return fn();\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallHooks(promise, event) {\n let result = promise;\n const hooks = [];\n this._getCommandAndAncestors()\n .reverse()\n .filter((cmd) => cmd._lifeCycleHooks[event] !== undefined)\n .forEach((hookedCommand) => {\n hookedCommand._lifeCycleHooks[event].forEach((callback) => {\n hooks.push({ hookedCommand, callback });\n });\n });\n if (event === 'postAction') {\n hooks.reverse();\n }\n\n hooks.forEach((hookDetail) => {\n result = this._chainOrCall(result, () => {\n return hookDetail.callback(hookDetail.hookedCommand, this);\n });\n });\n return result;\n }\n\n /**\n *\n * @param {(Promise|undefined)} promise\n * @param {Command} subCommand\n * @param {string} event\n * @return {(Promise|undefined)}\n * @private\n */\n\n _chainOrCallSubCommandHook(promise, subCommand, event) {\n let result = promise;\n if (this._lifeCycleHooks[event] !== undefined) {\n this._lifeCycleHooks[event].forEach((hook) => {\n result = this._chainOrCall(result, () => {\n return hook(this, subCommand);\n });\n });\n }\n return result;\n }\n\n /**\n * Process arguments in context of this command.\n * Returns action result, in case it is a promise.\n *\n * @private\n */\n\n _parseCommand(operands, unknown) {\n const parsed = this.parseOptions(unknown);\n this._parseOptionsEnv(); // after cli, so parseArg not called on both cli and env\n this._parseOptionsImplied();\n operands = operands.concat(parsed.operands);\n unknown = parsed.unknown;\n this.args = operands.concat(unknown);\n\n if (operands && this._findCommand(operands[0])) {\n return this._dispatchSubcommand(operands[0], operands.slice(1), unknown);\n }\n if (\n this._getHelpCommand() &&\n operands[0] === this._getHelpCommand().name()\n ) {\n return this._dispatchHelpCommand(operands[1]);\n }\n if (this._defaultCommandName) {\n this._outputHelpIfRequested(unknown); // Run the help for default command from parent rather than passing to default command\n return this._dispatchSubcommand(\n this._defaultCommandName,\n operands,\n unknown,\n );\n }\n if (\n this.commands.length &&\n this.args.length === 0 &&\n !this._actionHandler &&\n !this._defaultCommandName\n ) {\n // probably missing subcommand and no handler, user needs help (and exit)\n this.help({ error: true });\n }\n\n this._outputHelpIfRequested(parsed.unknown);\n this._checkForMissingMandatoryOptions();\n this._checkForConflictingOptions();\n\n // We do not always call this check to avoid masking a \"better\" error, like unknown command.\n const checkForUnknownOptions = () => {\n if (parsed.unknown.length > 0) {\n this.unknownOption(parsed.unknown[0]);\n }\n };\n\n const commandEvent = `command:${this.name()}`;\n if (this._actionHandler) {\n checkForUnknownOptions();\n this._processArguments();\n\n let promiseChain;\n promiseChain = this._chainOrCallHooks(promiseChain, 'preAction');\n promiseChain = this._chainOrCall(promiseChain, () =>\n this._actionHandler(this.processedArgs),\n );\n if (this.parent) {\n promiseChain = this._chainOrCall(promiseChain, () => {\n this.parent.emit(commandEvent, operands, unknown); // legacy\n });\n }\n promiseChain = this._chainOrCallHooks(promiseChain, 'postAction');\n return promiseChain;\n }\n if (this.parent && this.parent.listenerCount(commandEvent)) {\n checkForUnknownOptions();\n this._processArguments();\n this.parent.emit(commandEvent, operands, unknown); // legacy\n } else if (operands.length) {\n if (this._findCommand('*')) {\n // legacy default command\n return this._dispatchSubcommand('*', operands, unknown);\n }\n if (this.listenerCount('command:*')) {\n // skip option check, emit event for possible misspelling suggestion\n this.emit('command:*', operands, unknown);\n } else if (this.commands.length) {\n this.unknownCommand();\n } else {\n checkForUnknownOptions();\n this._processArguments();\n }\n } else if (this.commands.length) {\n checkForUnknownOptions();\n // This command has subcommands and nothing hooked up at this level, so display help (and exit).\n this.help({ error: true });\n } else {\n checkForUnknownOptions();\n this._processArguments();\n // fall through for caller to handle after calling .parse()\n }\n }\n\n /**\n * Find matching command.\n *\n * @private\n * @return {Command | undefined}\n */\n _findCommand(name) {\n if (!name) return undefined;\n return this.commands.find(\n (cmd) => cmd._name === name || cmd._aliases.includes(name),\n );\n }\n\n /**\n * Return an option matching `arg` if any.\n *\n * @param {string} arg\n * @return {Option}\n * @package\n */\n\n _findOption(arg) {\n return this.options.find((option) => option.is(arg));\n }\n\n /**\n * Display an error message if a mandatory option does not have a value.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n\n _checkForMissingMandatoryOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd.options.forEach((anOption) => {\n if (\n anOption.mandatory &&\n cmd.getOptionValue(anOption.attributeName()) === undefined\n ) {\n cmd.missingMandatoryOptionValue(anOption);\n }\n });\n });\n }\n\n /**\n * Display an error message if conflicting options are used together in this.\n *\n * @private\n */\n _checkForConflictingLocalOptions() {\n const definedNonDefaultOptions = this.options.filter((option) => {\n const optionKey = option.attributeName();\n if (this.getOptionValue(optionKey) === undefined) {\n return false;\n }\n return this.getOptionValueSource(optionKey) !== 'default';\n });\n\n const optionsWithConflicting = definedNonDefaultOptions.filter(\n (option) => option.conflictsWith.length > 0,\n );\n\n optionsWithConflicting.forEach((option) => {\n const conflictingAndDefined = definedNonDefaultOptions.find((defined) =>\n option.conflictsWith.includes(defined.attributeName()),\n );\n if (conflictingAndDefined) {\n this._conflictingOption(option, conflictingAndDefined);\n }\n });\n }\n\n /**\n * Display an error message if conflicting options are used together.\n * Called after checking for help flags in leaf subcommand.\n *\n * @private\n */\n _checkForConflictingOptions() {\n // Walk up hierarchy so can call in subcommand after checking for displaying help.\n this._getCommandAndAncestors().forEach((cmd) => {\n cmd._checkForConflictingLocalOptions();\n });\n }\n\n /**\n * Parse options from `argv` removing known options,\n * and return argv split into operands and unknown arguments.\n *\n * Examples:\n *\n * argv => operands, unknown\n * --known kkk op => [op], []\n * op --known kkk => [op], []\n * sub --unknown uuu op => [sub], [--unknown uuu op]\n * sub -- --unknown uuu op => [sub --unknown uuu op], []\n *\n * @param {string[]} argv\n * @return {{operands: string[], unknown: string[]}}\n */\n\n parseOptions(argv) {\n const operands = []; // operands, not options or values\n const unknown = []; // first unknown option and remaining unknown args\n let dest = operands;\n const args = argv.slice();\n\n function maybeOption(arg) {\n return arg.length > 1 && arg[0] === '-';\n }\n\n // parse options\n let activeVariadicOption = null;\n while (args.length) {\n const arg = args.shift();\n\n // literal\n if (arg === '--') {\n if (dest === unknown) dest.push(arg);\n dest.push(...args);\n break;\n }\n\n if (activeVariadicOption && !maybeOption(arg)) {\n this.emit(`option:${activeVariadicOption.name()}`, arg);\n continue;\n }\n activeVariadicOption = null;\n\n if (maybeOption(arg)) {\n const option = this._findOption(arg);\n // recognised option, call listener to assign value with possible custom processing\n if (option) {\n if (option.required) {\n const value = args.shift();\n if (value === undefined) this.optionMissingArgument(option);\n this.emit(`option:${option.name()}`, value);\n } else if (option.optional) {\n let value = null;\n // historical behaviour is optional value is following arg unless an option\n if (args.length > 0 && !maybeOption(args[0])) {\n value = args.shift();\n }\n this.emit(`option:${option.name()}`, value);\n } else {\n // boolean flag\n this.emit(`option:${option.name()}`);\n }\n activeVariadicOption = option.variadic ? option : null;\n continue;\n }\n }\n\n // Look for combo options following single dash, eat first one if known.\n if (arg.length > 2 && arg[0] === '-' && arg[1] !== '-') {\n const option = this._findOption(`-${arg[1]}`);\n if (option) {\n if (\n option.required ||\n (option.optional && this._combineFlagAndOptionalValue)\n ) {\n // option with value following in same argument\n this.emit(`option:${option.name()}`, arg.slice(2));\n } else {\n // boolean option, emit and put back remainder of arg for further processing\n this.emit(`option:${option.name()}`);\n args.unshift(`-${arg.slice(2)}`);\n }\n continue;\n }\n }\n\n // Look for known long flag with value, like --foo=bar\n if (/^--[^=]+=/.test(arg)) {\n const index = arg.indexOf('=');\n const option = this._findOption(arg.slice(0, index));\n if (option && (option.required || option.optional)) {\n this.emit(`option:${option.name()}`, arg.slice(index + 1));\n continue;\n }\n }\n\n // Not a recognised option by this command.\n // Might be a command-argument, or subcommand option, or unknown option, or help command or option.\n\n // An unknown option means further arguments also classified as unknown so can be reprocessed by subcommands.\n if (maybeOption(arg)) {\n dest = unknown;\n }\n\n // If using positionalOptions, stop processing our options at subcommand.\n if (\n (this._enablePositionalOptions || this._passThroughOptions) &&\n operands.length === 0 &&\n unknown.length === 0\n ) {\n if (this._findCommand(arg)) {\n operands.push(arg);\n if (args.length > 0) unknown.push(...args);\n break;\n } else if (\n this._getHelpCommand() &&\n arg === this._getHelpCommand().name()\n ) {\n operands.push(arg);\n if (args.length > 0) operands.push(...args);\n break;\n } else if (this._defaultCommandName) {\n unknown.push(arg);\n if (args.length > 0) unknown.push(...args);\n break;\n }\n }\n\n // If using passThroughOptions, stop processing options at first command-argument.\n if (this._passThroughOptions) {\n dest.push(arg);\n if (args.length > 0) dest.push(...args);\n break;\n }\n\n // add arg\n dest.push(arg);\n }\n\n return { operands, unknown };\n }\n\n /**\n * Return an object containing local option values as key-value pairs.\n *\n * @return {object}\n */\n opts() {\n if (this._storeOptionsAsProperties) {\n // Preserve original behaviour so backwards compatible when still using properties\n const result = {};\n const len = this.options.length;\n\n for (let i = 0; i < len; i++) {\n const key = this.options[i].attributeName();\n result[key] =\n key === this._versionOptionName ? this._version : this[key];\n }\n return result;\n }\n\n return this._optionValues;\n }\n\n /**\n * Return an object containing merged local and global option values as key-value pairs.\n *\n * @return {object}\n */\n optsWithGlobals() {\n // globals overwrite locals\n return this._getCommandAndAncestors().reduce(\n (combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()),\n {},\n );\n }\n\n /**\n * Display error message and exit (or call exitOverride).\n *\n * @param {string} message\n * @param {object} [errorOptions]\n * @param {string} [errorOptions.code] - an id string representing the error\n * @param {number} [errorOptions.exitCode] - used with process.exit\n */\n error(message, errorOptions) {\n // output handling\n this._outputConfiguration.outputError(\n `${message}\\n`,\n this._outputConfiguration.writeErr,\n );\n if (typeof this._showHelpAfterError === 'string') {\n this._outputConfiguration.writeErr(`${this._showHelpAfterError}\\n`);\n } else if (this._showHelpAfterError) {\n this._outputConfiguration.writeErr('\\n');\n this.outputHelp({ error: true });\n }\n\n // exit handling\n const config = errorOptions || {};\n const exitCode = config.exitCode || 1;\n const code = config.code || 'commander.error';\n this._exit(exitCode, code, message);\n }\n\n /**\n * Apply any option related environment variables, if option does\n * not have a value from cli or client code.\n *\n * @private\n */\n _parseOptionsEnv() {\n this.options.forEach((option) => {\n if (option.envVar && option.envVar in process.env) {\n const optionKey = option.attributeName();\n // Priority check. Do not overwrite cli or options from unknown source (client-code).\n if (\n this.getOptionValue(optionKey) === undefined ||\n ['default', 'config', 'env'].includes(\n this.getOptionValueSource(optionKey),\n )\n ) {\n if (option.required || option.optional) {\n // option can take a value\n // keep very simple, optional always takes value\n this.emit(`optionEnv:${option.name()}`, process.env[option.envVar]);\n } else {\n // boolean\n // keep very simple, only care that envVar defined and not the value\n this.emit(`optionEnv:${option.name()}`);\n }\n }\n }\n });\n }\n\n /**\n * Apply any implied option values, if option is undefined or default value.\n *\n * @private\n */\n _parseOptionsImplied() {\n const dualHelper = new DualOptions(this.options);\n const hasCustomOptionValue = (optionKey) => {\n return (\n this.getOptionValue(optionKey) !== undefined &&\n !['default', 'implied'].includes(this.getOptionValueSource(optionKey))\n );\n };\n this.options\n .filter(\n (option) =>\n option.implied !== undefined &&\n hasCustomOptionValue(option.attributeName()) &&\n dualHelper.valueFromOption(\n this.getOptionValue(option.attributeName()),\n option,\n ),\n )\n .forEach((option) => {\n Object.keys(option.implied)\n .filter((impliedKey) => !hasCustomOptionValue(impliedKey))\n .forEach((impliedKey) => {\n this.setOptionValueWithSource(\n impliedKey,\n option.implied[impliedKey],\n 'implied',\n );\n });\n });\n }\n\n /**\n * Argument `name` is missing.\n *\n * @param {string} name\n * @private\n */\n\n missingArgument(name) {\n const message = `error: missing required argument '${name}'`;\n this.error(message, { code: 'commander.missingArgument' });\n }\n\n /**\n * `Option` is missing an argument.\n *\n * @param {Option} option\n * @private\n */\n\n optionMissingArgument(option) {\n const message = `error: option '${option.flags}' argument missing`;\n this.error(message, { code: 'commander.optionMissingArgument' });\n }\n\n /**\n * `Option` does not have a value, and is a mandatory option.\n *\n * @param {Option} option\n * @private\n */\n\n missingMandatoryOptionValue(option) {\n const message = `error: required option '${option.flags}' not specified`;\n this.error(message, { code: 'commander.missingMandatoryOptionValue' });\n }\n\n /**\n * `Option` conflicts with another option.\n *\n * @param {Option} option\n * @param {Option} conflictingOption\n * @private\n */\n _conflictingOption(option, conflictingOption) {\n // The calling code does not know whether a negated option is the source of the\n // value, so do some work to take an educated guess.\n const findBestOptionFromValue = (option) => {\n const optionKey = option.attributeName();\n const optionValue = this.getOptionValue(optionKey);\n const negativeOption = this.options.find(\n (target) => target.negate && optionKey === target.attributeName(),\n );\n const positiveOption = this.options.find(\n (target) => !target.negate && optionKey === target.attributeName(),\n );\n if (\n negativeOption &&\n ((negativeOption.presetArg === undefined && optionValue === false) ||\n (negativeOption.presetArg !== undefined &&\n optionValue === negativeOption.presetArg))\n ) {\n return negativeOption;\n }\n return positiveOption || option;\n };\n\n const getErrorMessage = (option) => {\n const bestOption = findBestOptionFromValue(option);\n const optionKey = bestOption.attributeName();\n const source = this.getOptionValueSource(optionKey);\n if (source === 'env') {\n return `environment variable '${bestOption.envVar}'`;\n }\n return `option '${bestOption.flags}'`;\n };\n\n const message = `error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;\n this.error(message, { code: 'commander.conflictingOption' });\n }\n\n /**\n * Unknown option `flag`.\n *\n * @param {string} flag\n * @private\n */\n\n unknownOption(flag) {\n if (this._allowUnknownOption) return;\n let suggestion = '';\n\n if (flag.startsWith('--') && this._showSuggestionAfterError) {\n // Looping to pick up the global options too\n let candidateFlags = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n do {\n const moreFlags = command\n .createHelp()\n .visibleOptions(command)\n .filter((option) => option.long)\n .map((option) => option.long);\n candidateFlags = candidateFlags.concat(moreFlags);\n command = command.parent;\n } while (command && !command._enablePositionalOptions);\n suggestion = suggestSimilar(flag, candidateFlags);\n }\n\n const message = `error: unknown option '${flag}'${suggestion}`;\n this.error(message, { code: 'commander.unknownOption' });\n }\n\n /**\n * Excess arguments, more than expected.\n *\n * @param {string[]} receivedArgs\n * @private\n */\n\n _excessArguments(receivedArgs) {\n if (this._allowExcessArguments) return;\n\n const expected = this.registeredArguments.length;\n const s = expected === 1 ? '' : 's';\n const forSubcommand = this.parent ? ` for '${this.name()}'` : '';\n const message = `error: too many arguments${forSubcommand}. Expected ${expected} argument${s} but got ${receivedArgs.length}.`;\n this.error(message, { code: 'commander.excessArguments' });\n }\n\n /**\n * Unknown command.\n *\n * @private\n */\n\n unknownCommand() {\n const unknownName = this.args[0];\n let suggestion = '';\n\n if (this._showSuggestionAfterError) {\n const candidateNames = [];\n this.createHelp()\n .visibleCommands(this)\n .forEach((command) => {\n candidateNames.push(command.name());\n // just visible alias\n if (command.alias()) candidateNames.push(command.alias());\n });\n suggestion = suggestSimilar(unknownName, candidateNames);\n }\n\n const message = `error: unknown command '${unknownName}'${suggestion}`;\n this.error(message, { code: 'commander.unknownCommand' });\n }\n\n /**\n * Get or set the program version.\n *\n * This method auto-registers the \"-V, --version\" option which will print the version number.\n *\n * You can optionally supply the flags and description to override the defaults.\n *\n * @param {string} [str]\n * @param {string} [flags]\n * @param {string} [description]\n * @return {(this | string | undefined)} `this` command for chaining, or version string if no arguments\n */\n\n version(str, flags, description) {\n if (str === undefined) return this._version;\n this._version = str;\n flags = flags || '-V, --version';\n description = description || 'output the version number';\n const versionOption = this.createOption(flags, description);\n this._versionOptionName = versionOption.attributeName();\n this._registerOption(versionOption);\n\n this.on('option:' + versionOption.name(), () => {\n this._outputConfiguration.writeOut(`${str}\\n`);\n this._exit(0, 'commander.version', str);\n });\n return this;\n }\n\n /**\n * Set the description.\n *\n * @param {string} [str]\n * @param {object} [argsDescription]\n * @return {(string|Command)}\n */\n description(str, argsDescription) {\n if (str === undefined && argsDescription === undefined)\n return this._description;\n this._description = str;\n if (argsDescription) {\n this._argsDescription = argsDescription;\n }\n return this;\n }\n\n /**\n * Set the summary. Used when listed as subcommand of parent.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n summary(str) {\n if (str === undefined) return this._summary;\n this._summary = str;\n return this;\n }\n\n /**\n * Set an alias for the command.\n *\n * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help.\n *\n * @param {string} [alias]\n * @return {(string|Command)}\n */\n\n alias(alias) {\n if (alias === undefined) return this._aliases[0]; // just return first, for backwards compatibility\n\n /** @type {Command} */\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let command = this;\n if (\n this.commands.length !== 0 &&\n this.commands[this.commands.length - 1]._executableHandler\n ) {\n // assume adding alias for last added executable subcommand, rather than this\n command = this.commands[this.commands.length - 1];\n }\n\n if (alias === command._name)\n throw new Error(\"Command alias can't be the same as its name\");\n const matchingCommand = this.parent?._findCommand(alias);\n if (matchingCommand) {\n // c.f. _registerCommand\n const existingCmd = [matchingCommand.name()]\n .concat(matchingCommand.aliases())\n .join('|');\n throw new Error(\n `cannot add alias '${alias}' to command '${this.name()}' as already have command '${existingCmd}'`,\n );\n }\n\n command._aliases.push(alias);\n return this;\n }\n\n /**\n * Set aliases for the command.\n *\n * Only the first alias is shown in the auto-generated help.\n *\n * @param {string[]} [aliases]\n * @return {(string[]|Command)}\n */\n\n aliases(aliases) {\n // Getter for the array of aliases is the main reason for having aliases() in addition to alias().\n if (aliases === undefined) return this._aliases;\n\n aliases.forEach((alias) => this.alias(alias));\n return this;\n }\n\n /**\n * Set / get the command usage `str`.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n usage(str) {\n if (str === undefined) {\n if (this._usage) return this._usage;\n\n const args = this.registeredArguments.map((arg) => {\n return humanReadableArgName(arg);\n });\n return []\n .concat(\n this.options.length || this._helpOption !== null ? '[options]' : [],\n this.commands.length ? '[command]' : [],\n this.registeredArguments.length ? args : [],\n )\n .join(' ');\n }\n\n this._usage = str;\n return this;\n }\n\n /**\n * Get or set the name of the command.\n *\n * @param {string} [str]\n * @return {(string|Command)}\n */\n\n name(str) {\n if (str === undefined) return this._name;\n this._name = str;\n return this;\n }\n\n /**\n * Set the name of the command from script filename, such as process.argv[1],\n * or require.main.filename, or __filename.\n *\n * (Used internally and public although not documented in README.)\n *\n * @example\n * program.nameFromFilename(require.main.filename);\n *\n * @param {string} filename\n * @return {Command}\n */\n\n nameFromFilename(filename) {\n this._name = path.basename(filename, path.extname(filename));\n\n return this;\n }\n\n /**\n * Get or set the directory for searching for executable subcommands of this command.\n *\n * @example\n * program.executableDir(__dirname);\n * // or\n * program.executableDir('subcommands');\n *\n * @param {string} [path]\n * @return {(string|null|Command)}\n */\n\n executableDir(path) {\n if (path === undefined) return this._executableDir;\n this._executableDir = path;\n return this;\n }\n\n /**\n * Return program help documentation.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to wrap for stderr instead of stdout\n * @return {string}\n */\n\n helpInformation(contextOptions) {\n const helper = this.createHelp();\n if (helper.helpWidth === undefined) {\n helper.helpWidth =\n contextOptions && contextOptions.error\n ? this._outputConfiguration.getErrHelpWidth()\n : this._outputConfiguration.getOutHelpWidth();\n }\n return helper.formatHelp(this, helper);\n }\n\n /**\n * @private\n */\n\n _getHelpContext(contextOptions) {\n contextOptions = contextOptions || {};\n const context = { error: !!contextOptions.error };\n let write;\n if (context.error) {\n write = (arg) => this._outputConfiguration.writeErr(arg);\n } else {\n write = (arg) => this._outputConfiguration.writeOut(arg);\n }\n context.write = contextOptions.write || write;\n context.command = this;\n return context;\n }\n\n /**\n * Output help information for this command.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n outputHelp(contextOptions) {\n let deprecatedCallback;\n if (typeof contextOptions === 'function') {\n deprecatedCallback = contextOptions;\n contextOptions = undefined;\n }\n const context = this._getHelpContext(contextOptions);\n\n this._getCommandAndAncestors()\n .reverse()\n .forEach((command) => command.emit('beforeAllHelp', context));\n this.emit('beforeHelp', context);\n\n let helpInformation = this.helpInformation(context);\n if (deprecatedCallback) {\n helpInformation = deprecatedCallback(helpInformation);\n if (\n typeof helpInformation !== 'string' &&\n !Buffer.isBuffer(helpInformation)\n ) {\n throw new Error('outputHelp callback must return a string or a Buffer');\n }\n }\n context.write(helpInformation);\n\n if (this._getHelpOption()?.long) {\n this.emit(this._getHelpOption().long); // deprecated\n }\n this.emit('afterHelp', context);\n this._getCommandAndAncestors().forEach((command) =>\n command.emit('afterAllHelp', context),\n );\n }\n\n /**\n * You can pass in flags and a description to customise the built-in help option.\n * Pass in false to disable the built-in help option.\n *\n * @example\n * program.helpOption('-?, --help' 'show help'); // customise\n * program.helpOption(false); // disable\n *\n * @param {(string | boolean)} flags\n * @param {string} [description]\n * @return {Command} `this` command for chaining\n */\n\n helpOption(flags, description) {\n // Support disabling built-in help option.\n if (typeof flags === 'boolean') {\n if (flags) {\n this._helpOption = this._helpOption ?? undefined; // preserve existing option\n } else {\n this._helpOption = null; // disable\n }\n return this;\n }\n\n // Customise flags and description.\n flags = flags ?? '-h, --help';\n description = description ?? 'display help for command';\n this._helpOption = this.createOption(flags, description);\n\n return this;\n }\n\n /**\n * Lazy create help option.\n * Returns null if has been disabled with .helpOption(false).\n *\n * @returns {(Option | null)} the help option\n * @package\n */\n _getHelpOption() {\n // Lazy create help option on demand.\n if (this._helpOption === undefined) {\n this.helpOption(undefined, undefined);\n }\n return this._helpOption;\n }\n\n /**\n * Supply your own option to use for the built-in help option.\n * This is an alternative to using helpOption() to customise the flags and description etc.\n *\n * @param {Option} option\n * @return {Command} `this` command for chaining\n */\n addHelpOption(option) {\n this._helpOption = option;\n return this;\n }\n\n /**\n * Output help information and exit.\n *\n * Outputs built-in help, and custom text added using `.addHelpText()`.\n *\n * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n */\n\n help(contextOptions) {\n this.outputHelp(contextOptions);\n let exitCode = process.exitCode || 0;\n if (\n exitCode === 0 &&\n contextOptions &&\n typeof contextOptions !== 'function' &&\n contextOptions.error\n ) {\n exitCode = 1;\n }\n // message: do not have all displayed text available so only passing placeholder.\n this._exit(exitCode, 'commander.help', '(outputHelp)');\n }\n\n /**\n * Add additional text to be displayed with the built-in help.\n *\n * Position is 'before' or 'after' to affect just this command,\n * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.\n *\n * @param {string} position - before or after built-in help\n * @param {(string | Function)} text - string to add, or a function returning a string\n * @return {Command} `this` command for chaining\n */\n addHelpText(position, text) {\n const allowedValues = ['beforeAll', 'before', 'after', 'afterAll'];\n if (!allowedValues.includes(position)) {\n throw new Error(`Unexpected value for position to addHelpText.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n }\n const helpEvent = `${position}Help`;\n this.on(helpEvent, (context) => {\n let helpStr;\n if (typeof text === 'function') {\n helpStr = text({ error: context.error, command: context.command });\n } else {\n helpStr = text;\n }\n // Ignore falsy value when nothing to output.\n if (helpStr) {\n context.write(`${helpStr}\\n`);\n }\n });\n return this;\n }\n\n /**\n * Output help information if help flags specified\n *\n * @param {Array} args - array of options to search for help flags\n * @private\n */\n\n _outputHelpIfRequested(args) {\n const helpOption = this._getHelpOption();\n const helpRequested = helpOption && args.find((arg) => helpOption.is(arg));\n if (helpRequested) {\n this.outputHelp();\n // (Do not have all displayed text available so only passing placeholder.)\n this._exit(0, 'commander.helpDisplayed', '(outputHelp)');\n }\n }\n}\n\n/**\n * Scan arguments and increment port number for inspect calls (to avoid conflicts when spawning new command).\n *\n * @param {string[]} args - array of arguments from node.execArgv\n * @returns {string[]}\n * @private\n */\n\nfunction incrementNodeInspectorPort(args) {\n // Testing for these options:\n // --inspect[=[host:]port]\n // --inspect-brk[=[host:]port]\n // --inspect-port=[host:]port\n return args.map((arg) => {\n if (!arg.startsWith('--inspect')) {\n return arg;\n }\n let debugOption;\n let debugHost = '127.0.0.1';\n let debugPort = '9229';\n let match;\n if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {\n // e.g. --inspect\n debugOption = match[1];\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null\n ) {\n debugOption = match[1];\n if (/^\\d+$/.test(match[3])) {\n // e.g. --inspect=1234\n debugPort = match[3];\n } else {\n // e.g. --inspect=localhost\n debugHost = match[3];\n }\n } else if (\n (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\\d+)$/)) !== null\n ) {\n // e.g. --inspect=localhost:1234\n debugOption = match[1];\n debugHost = match[3];\n debugPort = match[4];\n }\n\n if (debugOption && debugPort !== '0') {\n return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;\n }\n return arg;\n });\n}\n\nexports.Command = Command;\n", "const { Argument } = require('./lib/argument.js');\nconst { Command } = require('./lib/command.js');\nconst { CommanderError, InvalidArgumentError } = require('./lib/error.js');\nconst { Help } = require('./lib/help.js');\nconst { Option } = require('./lib/option.js');\n\nexports.program = new Command();\n\nexports.createCommand = (name) => new Command(name);\nexports.createOption = (flags, description) => new Option(flags, description);\nexports.createArgument = (name, description) => new Argument(name, description);\n\n/**\n * Expose classes\n */\n\nexports.Command = Command;\nexports.Option = Option;\nexports.Argument = Argument;\nexports.Help = Help;\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\nexports.InvalidOptionArgumentError = InvalidArgumentError; // Deprecated\n", "'use strict'\n\n// **************************************************************\n// * Code initially copied/adapted from \"pony-cause\" npm module *\n// * Please upstream improvements there *\n// **************************************************************\n\nconst isErrorLike = (err) => {\n return err && typeof err.message === 'string'\n}\n\n/**\n * @param {Error|{ cause?: unknown|(()=>err)}} err\n * @returns {Error|Object|undefined}\n */\nconst getErrorCause = (err) => {\n if (!err) return\n\n /** @type {unknown} */\n // @ts-ignore\n const cause = err.cause\n\n // VError / NError style causes\n if (typeof cause === 'function') {\n // @ts-ignore\n const causeResult = err.cause()\n\n return isErrorLike(causeResult)\n ? causeResult\n : undefined\n } else {\n return isErrorLike(cause)\n ? cause\n : undefined\n }\n}\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @returns {string}\n */\nconst _stackWithCauses = (err, seen) => {\n if (!isErrorLike(err)) return ''\n\n const stack = err.stack || ''\n\n // Ensure we don't go circular or crazily deep\n if (seen.has(err)) {\n return stack + '\\ncauses have become circular...'\n }\n\n const cause = getErrorCause(err)\n\n if (cause) {\n seen.add(err)\n return (stack + '\\ncaused by: ' + _stackWithCauses(cause, seen))\n } else {\n return stack\n }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst stackWithCauses = (err) => _stackWithCauses(err, new Set())\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @param {boolean} [skip]\n * @returns {string}\n */\nconst _messageWithCauses = (err, seen, skip) => {\n if (!isErrorLike(err)) return ''\n\n const message = skip ? '' : (err.message || '')\n\n // Ensure we don't go circular or crazily deep\n if (seen.has(err)) {\n return message + ': ...'\n }\n\n const cause = getErrorCause(err)\n\n if (cause) {\n seen.add(err)\n\n // @ts-ignore\n const skipIfVErrorStyleCause = typeof err.cause === 'function'\n\n return (message +\n (skipIfVErrorStyleCause ? '' : ': ') +\n _messageWithCauses(cause, seen, skipIfVErrorStyleCause))\n } else {\n return message\n }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst messageWithCauses = (err) => _messageWithCauses(err, new Set())\n\nmodule.exports = {\n isErrorLike,\n getErrorCause,\n stackWithCauses,\n messageWithCauses\n}\n", "'use strict'\n\nconst seen = Symbol('circular-ref-tag')\nconst rawSymbol = Symbol('pino-raw-err-ref')\n\nconst pinoErrProto = Object.create({}, {\n type: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n message: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n stack: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n aggregateErrors: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoErrProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nmodule.exports = {\n pinoErrProto,\n pinoErrorSymbols: {\n seen,\n rawSymbol\n }\n}\n", "'use strict'\n\nmodule.exports = errSerializer\n\nconst { messageWithCauses, stackWithCauses, isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errSerializer (err) {\n if (!isErrorLike(err)) {\n return err\n }\n\n err[seen] = undefined // tag to prevent re-looking at this\n const _err = Object.create(pinoErrProto)\n _err.type = toString.call(err.constructor) === '[object Function]'\n ? err.constructor.name\n : err.name\n _err.message = messageWithCauses(err)\n _err.stack = stackWithCauses(err)\n\n if (Array.isArray(err.errors)) {\n _err.aggregateErrors = err.errors.map(err => errSerializer(err))\n }\n\n for (const key in err) {\n if (_err[key] === undefined) {\n const val = err[key]\n if (isErrorLike(val)) {\n // We append cause messages and stacks to _err, therefore skipping causes here\n if (key !== 'cause' && !Object.prototype.hasOwnProperty.call(val, seen)) {\n _err[key] = errSerializer(val)\n }\n } else {\n _err[key] = val\n }\n }\n }\n\n delete err[seen] // clean up tag in case err is serialized again later\n _err.raw = err\n return _err\n}\n", "'use strict'\n\nmodule.exports = errWithCauseSerializer\n\nconst { isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errWithCauseSerializer (err) {\n if (!isErrorLike(err)) {\n return err\n }\n\n err[seen] = undefined // tag to prevent re-looking at this\n const _err = Object.create(pinoErrProto)\n _err.type = toString.call(err.constructor) === '[object Function]'\n ? err.constructor.name\n : err.name\n _err.message = err.message\n _err.stack = err.stack\n\n if (Array.isArray(err.errors)) {\n _err.aggregateErrors = err.errors.map(err => errWithCauseSerializer(err))\n }\n\n if (isErrorLike(err.cause) && !Object.prototype.hasOwnProperty.call(err.cause, seen)) {\n _err.cause = errWithCauseSerializer(err.cause)\n }\n\n for (const key in err) {\n if (_err[key] === undefined) {\n const val = err[key]\n if (isErrorLike(val)) {\n if (!Object.prototype.hasOwnProperty.call(val, seen)) {\n _err[key] = errWithCauseSerializer(val)\n }\n } else {\n _err[key] = val\n }\n }\n }\n\n delete err[seen] // clean up tag in case err is serialized again later\n _err.raw = err\n return _err\n}\n", "'use strict'\n\nmodule.exports = {\n mapHttpRequest,\n reqSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-req-ref')\nconst pinoReqProto = Object.create({}, {\n id: {\n enumerable: true,\n writable: true,\n value: ''\n },\n method: {\n enumerable: true,\n writable: true,\n value: ''\n },\n url: {\n enumerable: true,\n writable: true,\n value: ''\n },\n query: {\n enumerable: true,\n writable: true,\n value: ''\n },\n params: {\n enumerable: true,\n writable: true,\n value: ''\n },\n headers: {\n enumerable: true,\n writable: true,\n value: {}\n },\n remoteAddress: {\n enumerable: true,\n writable: true,\n value: ''\n },\n remotePort: {\n enumerable: true,\n writable: true,\n value: ''\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoReqProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nfunction reqSerializer (req) {\n // req.info is for hapi compat.\n const connection = req.info || req.socket\n const _req = Object.create(pinoReqProto)\n _req.id = (typeof req.id === 'function' ? req.id() : (req.id || (req.info ? req.info.id : undefined)))\n _req.method = req.method\n // req.originalUrl is for expressjs compat.\n if (req.originalUrl) {\n _req.url = req.originalUrl\n } else {\n const path = req.path\n // path for safe hapi compat.\n _req.url = typeof path === 'string' ? path : (req.url ? req.url.path || req.url : undefined)\n }\n\n if (req.query) {\n _req.query = req.query\n }\n\n if (req.params) {\n _req.params = req.params\n }\n\n _req.headers = req.headers\n _req.remoteAddress = connection && connection.remoteAddress\n _req.remotePort = connection && connection.remotePort\n // req.raw is for hapi compat/equivalence\n _req.raw = req.raw || req\n return _req\n}\n\nfunction mapHttpRequest (req) {\n return {\n req: reqSerializer(req)\n }\n}\n", "'use strict'\n\nmodule.exports = {\n mapHttpResponse,\n resSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-res-ref')\nconst pinoResProto = Object.create({}, {\n statusCode: {\n enumerable: true,\n writable: true,\n value: 0\n },\n headers: {\n enumerable: true,\n writable: true,\n value: ''\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoResProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nfunction resSerializer (res) {\n const _res = Object.create(pinoResProto)\n _res.statusCode = res.headersSent ? res.statusCode : null\n _res.headers = res.getHeaders ? res.getHeaders() : res._headers\n _res.raw = res\n return _res\n}\n\nfunction mapHttpResponse (res) {\n return {\n res: resSerializer(res)\n }\n}\n", "'use strict'\n\nconst errSerializer = require('./lib/err')\nconst errWithCauseSerializer = require('./lib/err-with-cause')\nconst reqSerializers = require('./lib/req')\nconst resSerializers = require('./lib/res')\n\nmodule.exports = {\n err: errSerializer,\n errWithCause: errWithCauseSerializer,\n mapHttpRequest: reqSerializers.mapHttpRequest,\n mapHttpResponse: resSerializers.mapHttpResponse,\n req: reqSerializers.reqSerializer,\n res: resSerializers.resSerializer,\n\n wrapErrorSerializer: function wrapErrorSerializer (customSerializer) {\n if (customSerializer === errSerializer) return customSerializer\n return function wrapErrSerializer (err) {\n return customSerializer(errSerializer(err))\n }\n },\n\n wrapRequestSerializer: function wrapRequestSerializer (customSerializer) {\n if (customSerializer === reqSerializers.reqSerializer) return customSerializer\n return function wrappedReqSerializer (req) {\n return customSerializer(reqSerializers.reqSerializer(req))\n }\n },\n\n wrapResponseSerializer: function wrapResponseSerializer (customSerializer) {\n if (customSerializer === resSerializers.resSerializer) return customSerializer\n return function wrappedResSerializer (res) {\n return customSerializer(resSerializers.resSerializer(res))\n }\n }\n}\n", "'use strict'\n\nfunction noOpPrepareStackTrace (_, stack) {\n return stack\n}\n\nmodule.exports = function getCallers () {\n const originalPrepare = Error.prepareStackTrace\n Error.prepareStackTrace = noOpPrepareStackTrace\n const stack = new Error().stack\n Error.prepareStackTrace = originalPrepare\n\n if (!Array.isArray(stack)) {\n return undefined\n }\n\n const entries = stack.slice(2)\n\n const fileNames = []\n\n for (const entry of entries) {\n if (!entry) {\n continue\n }\n\n fileNames.push(entry.getFileName())\n }\n\n return fileNames\n}\n", "'use strict'\n\nfunction deepClone (obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n if (obj instanceof Date) {\n return new Date(obj.getTime())\n }\n\n if (obj instanceof Array) {\n const cloned = []\n for (let i = 0; i < obj.length; i++) {\n cloned[i] = deepClone(obj[i])\n }\n return cloned\n }\n\n if (typeof obj === 'object') {\n const cloned = Object.create(Object.getPrototypeOf(obj))\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n cloned[key] = deepClone(obj[key])\n }\n }\n return cloned\n }\n\n return obj\n}\n\nfunction parsePath (path) {\n const parts = []\n let current = ''\n let inBrackets = false\n let inQuotes = false\n let quoteChar = ''\n\n for (let i = 0; i < path.length; i++) {\n const char = path[i]\n\n if (!inBrackets && char === '.') {\n if (current) {\n parts.push(current)\n current = ''\n }\n } else if (char === '[') {\n if (current) {\n parts.push(current)\n current = ''\n }\n inBrackets = true\n } else if (char === ']' && inBrackets) {\n // Always push the current value when closing brackets, even if it's an empty string\n parts.push(current)\n current = ''\n inBrackets = false\n inQuotes = false\n } else if ((char === '\"' || char === \"'\") && inBrackets) {\n if (!inQuotes) {\n inQuotes = true\n quoteChar = char\n } else if (char === quoteChar) {\n inQuotes = false\n quoteChar = ''\n } else {\n current += char\n }\n } else {\n current += char\n }\n }\n\n if (current) {\n parts.push(current)\n }\n\n return parts\n}\n\nfunction setValue (obj, parts, value) {\n let current = obj\n\n for (let i = 0; i < parts.length - 1; i++) {\n const key = parts[i]\n // Type safety: Check if current is an object before using 'in' operator\n if (typeof current !== 'object' || current === null || !(key in current)) {\n return false // Path doesn't exist, don't create it\n }\n if (typeof current[key] !== 'object' || current[key] === null) {\n return false // Path doesn't exist properly\n }\n current = current[key]\n }\n\n const lastKey = parts[parts.length - 1]\n if (lastKey === '*') {\n if (Array.isArray(current)) {\n for (let i = 0; i < current.length; i++) {\n current[i] = value\n }\n } else if (typeof current === 'object' && current !== null) {\n for (const key in current) {\n if (Object.prototype.hasOwnProperty.call(current, key)) {\n current[key] = value\n }\n }\n }\n } else {\n // Type safety: Check if current is an object before using 'in' operator\n if (typeof current === 'object' && current !== null && lastKey in current && Object.prototype.hasOwnProperty.call(current, lastKey)) {\n current[lastKey] = value\n }\n }\n return true\n}\n\nfunction removeKey (obj, parts) {\n let current = obj\n\n for (let i = 0; i < parts.length - 1; i++) {\n const key = parts[i]\n // Type safety: Check if current is an object before using 'in' operator\n if (typeof current !== 'object' || current === null || !(key in current)) {\n return false // Path doesn't exist, don't create it\n }\n if (typeof current[key] !== 'object' || current[key] === null) {\n return false // Path doesn't exist properly\n }\n current = current[key]\n }\n\n const lastKey = parts[parts.length - 1]\n if (lastKey === '*') {\n if (Array.isArray(current)) {\n // For arrays, we can't really \"remove\" all items as that would change indices\n // Instead, we set them to undefined which will be omitted by JSON.stringify\n for (let i = 0; i < current.length; i++) {\n current[i] = undefined\n }\n } else if (typeof current === 'object' && current !== null) {\n for (const key in current) {\n if (Object.prototype.hasOwnProperty.call(current, key)) {\n delete current[key]\n }\n }\n }\n } else {\n // Type safety: Check if current is an object before using 'in' operator\n if (typeof current === 'object' && current !== null && lastKey in current && Object.prototype.hasOwnProperty.call(current, lastKey)) {\n delete current[lastKey]\n }\n }\n return true\n}\n\n// Sentinel object to distinguish between undefined value and non-existent path\nconst PATH_NOT_FOUND = Symbol('PATH_NOT_FOUND')\n\nfunction getValueIfExists (obj, parts) {\n let current = obj\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return PATH_NOT_FOUND\n }\n // Type safety: Check if current is an object before property access\n if (typeof current !== 'object' || current === null) {\n return PATH_NOT_FOUND\n }\n // Check if the property exists before accessing it\n if (!(part in current)) {\n return PATH_NOT_FOUND\n }\n current = current[part]\n }\n\n return current\n}\n\nfunction getValue (obj, parts) {\n let current = obj\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return undefined\n }\n // Type safety: Check if current is an object before property access\n if (typeof current !== 'object' || current === null) {\n return undefined\n }\n current = current[part]\n }\n\n return current\n}\n\nfunction redactPaths (obj, paths, censor, remove = false) {\n for (const path of paths) {\n const parts = parsePath(path)\n\n if (parts.includes('*')) {\n redactWildcardPath(obj, parts, censor, path, remove)\n } else {\n if (remove) {\n removeKey(obj, parts)\n } else {\n // Get value only if path exists - single traversal\n const value = getValueIfExists(obj, parts)\n if (value === PATH_NOT_FOUND) {\n continue\n }\n\n const actualCensor = typeof censor === 'function'\n ? censor(value, parts)\n : censor\n setValue(obj, parts, actualCensor)\n }\n }\n }\n}\n\nfunction redactWildcardPath (obj, parts, censor, originalPath, remove = false) {\n const wildcardIndex = parts.indexOf('*')\n\n if (wildcardIndex === parts.length - 1) {\n const parentParts = parts.slice(0, -1)\n let current = obj\n\n for (const part of parentParts) {\n if (current === null || current === undefined) return\n // Type safety: Check if current is an object before property access\n if (typeof current !== 'object' || current === null) return\n current = current[part]\n }\n\n if (Array.isArray(current)) {\n if (remove) {\n // For arrays, set all items to undefined which will be omitted by JSON.stringify\n for (let i = 0; i < current.length; i++) {\n current[i] = undefined\n }\n } else {\n for (let i = 0; i < current.length; i++) {\n const indexPath = [...parentParts, i.toString()]\n const actualCensor = typeof censor === 'function'\n ? censor(current[i], indexPath)\n : censor\n current[i] = actualCensor\n }\n }\n } else if (typeof current === 'object' && current !== null) {\n if (remove) {\n // Collect keys to delete to avoid issues with deleting during iteration\n const keysToDelete = []\n for (const key in current) {\n if (Object.prototype.hasOwnProperty.call(current, key)) {\n keysToDelete.push(key)\n }\n }\n for (const key of keysToDelete) {\n delete current[key]\n }\n } else {\n for (const key in current) {\n const keyPath = [...parentParts, key]\n const actualCensor = typeof censor === 'function'\n ? censor(current[key], keyPath)\n : censor\n current[key] = actualCensor\n }\n }\n }\n } else {\n redactIntermediateWildcard(obj, parts, censor, wildcardIndex, originalPath, remove)\n }\n}\n\nfunction redactIntermediateWildcard (obj, parts, censor, wildcardIndex, originalPath, remove = false) {\n const beforeWildcard = parts.slice(0, wildcardIndex)\n const afterWildcard = parts.slice(wildcardIndex + 1)\n const pathArray = [] // Cached array to avoid allocations\n\n function traverse (current, pathLength) {\n if (pathLength === beforeWildcard.length) {\n if (Array.isArray(current)) {\n for (let i = 0; i < current.length; i++) {\n pathArray[pathLength] = i.toString()\n traverse(current[i], pathLength + 1)\n }\n } else if (typeof current === 'object' && current !== null) {\n for (const key in current) {\n pathArray[pathLength] = key\n traverse(current[key], pathLength + 1)\n }\n }\n } else if (pathLength < beforeWildcard.length) {\n const nextKey = beforeWildcard[pathLength]\n // Type safety: Check if current is an object before using 'in' operator\n if (current && typeof current === 'object' && current !== null && nextKey in current) {\n pathArray[pathLength] = nextKey\n traverse(current[nextKey], pathLength + 1)\n }\n } else {\n // Check if afterWildcard contains more wildcards\n if (afterWildcard.includes('*')) {\n // Recursively handle remaining wildcards\n // Wrap censor to prepend current path context\n const wrappedCensor = typeof censor === 'function'\n ? (value, path) => {\n const fullPath = [...pathArray.slice(0, pathLength), ...path]\n return censor(value, fullPath)\n }\n : censor\n redactWildcardPath(current, afterWildcard, wrappedCensor, originalPath, remove)\n } else {\n // No more wildcards, apply the redaction directly\n if (remove) {\n removeKey(current, afterWildcard)\n } else {\n const actualCensor = typeof censor === 'function'\n ? censor(getValue(current, afterWildcard), [...pathArray.slice(0, pathLength), ...afterWildcard])\n : censor\n setValue(current, afterWildcard, actualCensor)\n }\n }\n }\n }\n\n if (beforeWildcard.length === 0) {\n traverse(obj, 0)\n } else {\n let current = obj\n for (let i = 0; i < beforeWildcard.length; i++) {\n const part = beforeWildcard[i]\n if (current === null || current === undefined) return\n // Type safety: Check if current is an object before property access\n if (typeof current !== 'object' || current === null) return\n current = current[part]\n pathArray[i] = part\n }\n if (current !== null && current !== undefined) {\n traverse(current, beforeWildcard.length)\n }\n }\n}\n\nfunction buildPathStructure (pathsToClone) {\n if (pathsToClone.length === 0) {\n return null // No paths to redact\n }\n\n // Parse all paths and organize by depth\n const pathStructure = new Map()\n for (const path of pathsToClone) {\n const parts = parsePath(path)\n let current = pathStructure\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i]\n if (!current.has(part)) {\n current.set(part, new Map())\n }\n current = current.get(part)\n }\n }\n return pathStructure\n}\n\nfunction selectiveClone (obj, pathStructure) {\n if (!pathStructure) {\n return obj // No paths to redact, return original\n }\n\n function cloneSelectively (source, pathMap, depth = 0) {\n if (!pathMap || pathMap.size === 0) {\n return source // No more paths to clone, return reference\n }\n\n if (source === null || typeof source !== 'object') {\n return source\n }\n\n if (source instanceof Date) {\n return new Date(source.getTime())\n }\n\n if (Array.isArray(source)) {\n const cloned = []\n for (let i = 0; i < source.length; i++) {\n const indexStr = i.toString()\n if (pathMap.has(indexStr) || pathMap.has('*')) {\n cloned[i] = cloneSelectively(source[i], pathMap.get(indexStr) || pathMap.get('*'))\n } else {\n cloned[i] = source[i] // Share reference for non-redacted items\n }\n }\n return cloned\n }\n\n // Handle objects\n const cloned = Object.create(Object.getPrototypeOf(source))\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (pathMap.has(key) || pathMap.has('*')) {\n cloned[key] = cloneSelectively(source[key], pathMap.get(key) || pathMap.get('*'))\n } else {\n cloned[key] = source[key] // Share reference for non-redacted properties\n }\n }\n }\n return cloned\n }\n\n return cloneSelectively(obj, pathStructure)\n}\n\nfunction validatePath (path) {\n if (typeof path !== 'string') {\n throw new Error('Paths must be (non-empty) strings')\n }\n\n if (path === '') {\n throw new Error('Invalid redaction path ()')\n }\n\n // Check for double dots\n if (path.includes('..')) {\n throw new Error(`Invalid redaction path (${path})`)\n }\n\n // Check for comma-separated paths (invalid syntax)\n if (path.includes(',')) {\n throw new Error(`Invalid redaction path (${path})`)\n }\n\n // Check for unmatched brackets\n let bracketCount = 0\n let inQuotes = false\n let quoteChar = ''\n\n for (let i = 0; i < path.length; i++) {\n const char = path[i]\n\n if ((char === '\"' || char === \"'\") && bracketCount > 0) {\n if (!inQuotes) {\n inQuotes = true\n quoteChar = char\n } else if (char === quoteChar) {\n inQuotes = false\n quoteChar = ''\n }\n } else if (char === '[' && !inQuotes) {\n bracketCount++\n } else if (char === ']' && !inQuotes) {\n bracketCount--\n if (bracketCount < 0) {\n throw new Error(`Invalid redaction path (${path})`)\n }\n }\n }\n\n if (bracketCount !== 0) {\n throw new Error(`Invalid redaction path (${path})`)\n }\n}\n\nfunction validatePaths (paths) {\n if (!Array.isArray(paths)) {\n throw new TypeError('paths must be an array')\n }\n\n for (const path of paths) {\n validatePath(path)\n }\n}\n\nfunction slowRedact (options = {}) {\n const {\n paths = [],\n censor = '[REDACTED]',\n serialize = JSON.stringify,\n strict = true,\n remove = false\n } = options\n\n // Validate paths upfront to match fast-redact behavior\n validatePaths(paths)\n\n // Build path structure once during setup, not on every call\n const pathStructure = buildPathStructure(paths)\n\n return function redact (obj) {\n if (strict && (obj === null || typeof obj !== 'object')) {\n if (obj === null || obj === undefined) {\n return serialize ? serialize(obj) : obj\n }\n if (typeof obj !== 'object') {\n return serialize ? serialize(obj) : obj\n }\n }\n\n // Only clone paths that need redaction\n const cloned = selectiveClone(obj, pathStructure)\n const original = obj // Keep reference to original for restore\n\n let actualCensor = censor\n if (typeof censor === 'function') {\n actualCensor = censor\n }\n\n redactPaths(cloned, paths, actualCensor, remove)\n\n if (serialize === false) {\n cloned.restore = function () {\n return deepClone(original) // Full clone only when restore is called\n }\n return cloned\n }\n\n if (typeof serialize === 'function') {\n return serialize(cloned)\n }\n\n return JSON.stringify(cloned)\n }\n}\n\nmodule.exports = slowRedact\n", "'use strict'\n\nconst setLevelSym = Symbol('pino.setLevel')\nconst getLevelSym = Symbol('pino.getLevel')\nconst levelValSym = Symbol('pino.levelVal')\nconst levelCompSym = Symbol('pino.levelComp')\nconst useLevelLabelsSym = Symbol('pino.useLevelLabels')\nconst useOnlyCustomLevelsSym = Symbol('pino.useOnlyCustomLevels')\nconst mixinSym = Symbol('pino.mixin')\n\nconst lsCacheSym = Symbol('pino.lsCache')\nconst chindingsSym = Symbol('pino.chindings')\n\nconst asJsonSym = Symbol('pino.asJson')\nconst writeSym = Symbol('pino.write')\nconst redactFmtSym = Symbol('pino.redactFmt')\n\nconst timeSym = Symbol('pino.time')\nconst timeSliceIndexSym = Symbol('pino.timeSliceIndex')\nconst streamSym = Symbol('pino.stream')\nconst stringifySym = Symbol('pino.stringify')\nconst stringifySafeSym = Symbol('pino.stringifySafe')\nconst stringifiersSym = Symbol('pino.stringifiers')\nconst endSym = Symbol('pino.end')\nconst formatOptsSym = Symbol('pino.formatOpts')\nconst messageKeySym = Symbol('pino.messageKey')\nconst errorKeySym = Symbol('pino.errorKey')\nconst nestedKeySym = Symbol('pino.nestedKey')\nconst nestedKeyStrSym = Symbol('pino.nestedKeyStr')\nconst mixinMergeStrategySym = Symbol('pino.mixinMergeStrategy')\nconst msgPrefixSym = Symbol('pino.msgPrefix')\n\nconst wildcardFirstSym = Symbol('pino.wildcardFirst')\n\n// public symbols, no need to use the same pino\n// version for these\nconst serializersSym = Symbol.for('pino.serializers')\nconst formattersSym = Symbol.for('pino.formatters')\nconst hooksSym = Symbol.for('pino.hooks')\nconst needsMetadataGsym = Symbol.for('pino.metadata')\n\nmodule.exports = {\n setLevelSym,\n getLevelSym,\n levelValSym,\n levelCompSym,\n useLevelLabelsSym,\n mixinSym,\n lsCacheSym,\n chindingsSym,\n asJsonSym,\n writeSym,\n serializersSym,\n redactFmtSym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n stringifySym,\n stringifySafeSym,\n stringifiersSym,\n endSym,\n formatOptsSym,\n messageKeySym,\n errorKeySym,\n nestedKeySym,\n wildcardFirstSym,\n needsMetadataGsym,\n useOnlyCustomLevelsSym,\n formattersSym,\n hooksSym,\n nestedKeyStrSym,\n mixinMergeStrategySym,\n msgPrefixSym\n}\n", "'use strict'\n\nconst Redact = require('@pinojs/redact')\nconst { redactFmtSym, wildcardFirstSym } = require('./symbols')\n\n// Custom rx regex equivalent to fast-redact's rx\nconst rx = /[^.[\\]]+|\\[([^[\\]]*?)\\]/g\n\nconst CENSOR = '[Redacted]'\nconst strict = false // TODO should this be configurable?\n\nfunction redaction (opts, serialize) {\n const { paths, censor, remove } = handle(opts)\n\n const shape = paths.reduce((o, str) => {\n rx.lastIndex = 0\n const first = rx.exec(str)\n const next = rx.exec(str)\n\n // ns is the top-level path segment, brackets + quoting removed.\n let ns = first[1] !== undefined\n ? first[1].replace(/^(?:\"|'|`)(.*)(?:\"|'|`)$/, '$1')\n : first[0]\n\n if (ns === '*') {\n ns = wildcardFirstSym\n }\n\n // top level key:\n if (next === null) {\n o[ns] = null\n return o\n }\n\n // path with at least two segments:\n // if ns is already redacted at the top level, ignore lower level redactions\n if (o[ns] === null) {\n return o\n }\n\n const { index } = next\n const nextPath = `${str.substr(index, str.length - 1)}`\n\n o[ns] = o[ns] || []\n\n // shape is a mix of paths beginning with literal values and wildcard\n // paths [ \"a.b.c\", \"*.b.z\" ] should reduce to a shape of\n // { \"a\": [ \"b.c\", \"b.z\" ], *: [ \"b.z\" ] }\n // note: \"b.z\" is in both \"a\" and * arrays because \"a\" matches the wildcard.\n // (* entry has wildcardFirstSym as key)\n if (ns !== wildcardFirstSym && o[ns].length === 0) {\n // first time ns's get all '*' redactions so far\n o[ns].push(...(o[wildcardFirstSym] || []))\n }\n\n if (ns === wildcardFirstSym) {\n // new * path gets added to all previously registered literal ns's.\n Object.keys(o).forEach(function (k) {\n if (o[k]) {\n o[k].push(nextPath)\n }\n })\n }\n\n o[ns].push(nextPath)\n return o\n }, {})\n\n // the redactor assigned to the format symbol key\n // provides top level redaction for instances where\n // an object is interpolated into the msg string\n const result = {\n [redactFmtSym]: Redact({ paths, censor, serialize, strict, remove })\n }\n\n const topCensor = (...args) => {\n return typeof censor === 'function' ? serialize(censor(...args)) : serialize(censor)\n }\n\n return [...Object.keys(shape), ...Object.getOwnPropertySymbols(shape)].reduce((o, k) => {\n // top level key:\n if (shape[k] === null) {\n o[k] = (value) => topCensor(value, [k])\n } else {\n const wrappedCensor = typeof censor === 'function'\n ? (value, path) => {\n return censor(value, [k, ...path])\n }\n : censor\n o[k] = Redact({\n paths: shape[k],\n censor: wrappedCensor,\n serialize,\n strict,\n remove\n })\n }\n return o\n }, result)\n}\n\nfunction handle (opts) {\n if (Array.isArray(opts)) {\n opts = { paths: opts, censor: CENSOR }\n return opts\n }\n let { paths, censor = CENSOR, remove } = opts\n if (Array.isArray(paths) === false) { throw Error('pino \u2013 redact must contain an array of strings') }\n if (remove === true) censor = undefined\n\n return { paths, censor, remove }\n}\n\nmodule.exports = redaction\n", "'use strict'\n\nconst nullTime = () => ''\n\nconst epochTime = () => `,\"time\":${Date.now()}`\n\nconst unixTime = () => `,\"time\":${Math.round(Date.now() / 1000.0)}`\n\nconst isoTime = () => `,\"time\":\"${new Date(Date.now()).toISOString()}\"` // using Date.now() for testability\n\nconst NS_PER_MS = 1_000_000n\nconst NS_PER_SEC = 1_000_000_000n\n\nconst startWallTimeNs = BigInt(Date.now()) * NS_PER_MS\nconst startHrTime = process.hrtime.bigint()\n\nconst isoTimeNano = () => {\n const elapsedNs = process.hrtime.bigint() - startHrTime\n const currentTimeNs = startWallTimeNs + elapsedNs\n\n const secondsSinceEpoch = currentTimeNs / NS_PER_SEC\n const nanosWithinSecond = currentTimeNs % NS_PER_SEC\n\n const msSinceEpoch = Number(secondsSinceEpoch * 1000n + nanosWithinSecond / 1_000_000n)\n const date = new Date(msSinceEpoch)\n\n const year = date.getUTCFullYear()\n const month = (date.getUTCMonth() + 1).toString().padStart(2, '0')\n const day = date.getUTCDate().toString().padStart(2, '0')\n const hours = date.getUTCHours().toString().padStart(2, '0')\n const minutes = date.getUTCMinutes().toString().padStart(2, '0')\n const seconds = date.getUTCSeconds().toString().padStart(2, '0')\n\n return `,\"time\":\"${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${nanosWithinSecond\n .toString()\n .padStart(9, '0')}Z\"`\n}\n\nmodule.exports = { nullTime, epochTime, unixTime, isoTime, isoTimeNano }\n", "'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n", "'use strict'\n\n/* global SharedArrayBuffer, Atomics */\n\nif (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {\n const nil = new Int32Array(new SharedArrayBuffer(4))\n\n function sleep (ms) {\n // also filters out NaN, non-number types, including empty strings, but allows bigints\n const valid = ms > 0 && ms < Infinity \n if (valid === false) {\n if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n throw TypeError('sleep: ms must be a number')\n }\n throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n }\n\n Atomics.wait(nil, 0, 0, Number(ms))\n }\n module.exports = sleep\n} else {\n\n function sleep (ms) {\n // also filters out NaN, non-number types, including empty strings, but allows bigints\n const valid = ms > 0 && ms < Infinity \n if (valid === false) {\n if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n throw TypeError('sleep: ms must be a number')\n }\n throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n }\n const target = Date.now() + Number(ms)\n while (target > Date.now()){}\n }\n\n module.exports = sleep\n\n}\n", "'use strict'\n\nconst fs = require('fs')\nconst EventEmitter = require('events')\nconst inherits = require('util').inherits\nconst path = require('path')\nconst sleep = require('atomic-sleep')\nconst assert = require('assert')\n\nconst BUSY_WRITE_TIMEOUT = 100\nconst kEmptyBuffer = Buffer.allocUnsafe(0)\n\n// 16 KB. Don't write more than docker buffer size.\n// https://github.com/moby/moby/blob/513ec73831269947d38a644c278ce3cac36783b2/daemon/logger/copier.go#L13\nconst MAX_WRITE = 16 * 1024\n\nconst kContentModeBuffer = 'buffer'\nconst kContentModeUtf8 = 'utf8'\n\nconst [major, minor] = (process.versions.node || '0.0').split('.').map(Number)\nconst kCopyBuffer = major >= 22 && minor >= 7\n\nfunction openFile (file, sonic) {\n sonic._opening = true\n sonic._writing = true\n sonic._asyncDrainScheduled = false\n\n // NOTE: 'error' and 'ready' events emitted below only relevant when sonic.sync===false\n // for sync mode, there is no way to add a listener that will receive these\n\n function fileOpened (err, fd) {\n if (err) {\n sonic._reopening = false\n sonic._writing = false\n sonic._opening = false\n\n if (sonic.sync) {\n process.nextTick(() => {\n if (sonic.listenerCount('error') > 0) {\n sonic.emit('error', err)\n }\n })\n } else {\n sonic.emit('error', err)\n }\n return\n }\n\n const reopening = sonic._reopening\n\n sonic.fd = fd\n sonic.file = file\n sonic._reopening = false\n sonic._opening = false\n sonic._writing = false\n\n if (sonic.sync) {\n process.nextTick(() => sonic.emit('ready'))\n } else {\n sonic.emit('ready')\n }\n\n if (sonic.destroyed) {\n return\n }\n\n // start\n if ((!sonic._writing && sonic._len > sonic.minLength) || sonic._flushPending) {\n sonic._actualWrite()\n } else if (reopening) {\n process.nextTick(() => sonic.emit('drain'))\n }\n }\n\n const flags = sonic.append ? 'a' : 'w'\n const mode = sonic.mode\n\n if (sonic.sync) {\n try {\n if (sonic.mkdir) fs.mkdirSync(path.dirname(file), { recursive: true })\n const fd = fs.openSync(file, flags, mode)\n fileOpened(null, fd)\n } catch (err) {\n fileOpened(err)\n throw err\n }\n } else if (sonic.mkdir) {\n fs.mkdir(path.dirname(file), { recursive: true }, (err) => {\n if (err) return fileOpened(err)\n fs.open(file, flags, mode, fileOpened)\n })\n } else {\n fs.open(file, flags, mode, fileOpened)\n }\n}\n\nfunction SonicBoom (opts) {\n if (!(this instanceof SonicBoom)) {\n return new SonicBoom(opts)\n }\n\n let { fd, dest, minLength, maxLength, maxWrite, periodicFlush, sync, append = true, mkdir, retryEAGAIN, fsync, contentMode, mode } = opts || {}\n\n fd = fd || dest\n\n this._len = 0\n this.fd = -1\n this._bufs = []\n this._lens = []\n this._writing = false\n this._ending = false\n this._reopening = false\n this._asyncDrainScheduled = false\n this._flushPending = false\n this._hwm = Math.max(minLength || 0, 16387)\n this.file = null\n this.destroyed = false\n this.minLength = minLength || 0\n this.maxLength = maxLength || 0\n this.maxWrite = maxWrite || MAX_WRITE\n this._periodicFlush = periodicFlush || 0\n this._periodicFlushTimer = undefined\n this.sync = sync || false\n this.writable = true\n this._fsync = fsync || false\n this.append = append || false\n this.mode = mode\n this.retryEAGAIN = retryEAGAIN || (() => true)\n this.mkdir = mkdir || false\n\n let fsWriteSync\n let fsWrite\n if (contentMode === kContentModeBuffer) {\n this._writingBuf = kEmptyBuffer\n this.write = writeBuffer\n this.flush = flushBuffer\n this.flushSync = flushBufferSync\n this._actualWrite = actualWriteBuffer\n fsWriteSync = () => fs.writeSync(this.fd, this._writingBuf)\n fsWrite = () => fs.write(this.fd, this._writingBuf, this.release)\n } else if (contentMode === undefined || contentMode === kContentModeUtf8) {\n this._writingBuf = ''\n this.write = write\n this.flush = flush\n this.flushSync = flushSync\n this._actualWrite = actualWrite\n fsWriteSync = () => {\n if (Buffer.isBuffer(this._writingBuf)) {\n return fs.writeSync(this.fd, this._writingBuf)\n }\n return fs.writeSync(this.fd, this._writingBuf, 'utf8')\n }\n fsWrite = () => {\n if (Buffer.isBuffer(this._writingBuf)) {\n return fs.write(this.fd, this._writingBuf, this.release)\n }\n return fs.write(this.fd, this._writingBuf, 'utf8', this.release)\n }\n } else {\n throw new Error(`SonicBoom supports \"${kContentModeUtf8}\" and \"${kContentModeBuffer}\", but passed ${contentMode}`)\n }\n\n if (typeof fd === 'number') {\n this.fd = fd\n process.nextTick(() => this.emit('ready'))\n } else if (typeof fd === 'string') {\n openFile(fd, this)\n } else {\n throw new Error('SonicBoom supports only file descriptors and files')\n }\n if (this.minLength >= this.maxWrite) {\n throw new Error(`minLength should be smaller than maxWrite (${this.maxWrite})`)\n }\n\n this.release = (err, n) => {\n if (err) {\n if ((err.code === 'EAGAIN' || err.code === 'EBUSY') && this.retryEAGAIN(err, this._writingBuf.length, this._len - this._writingBuf.length)) {\n if (this.sync) {\n // This error code should not happen in sync mode, because it is\n // not using the underlining operating system asynchronous functions.\n // However it happens, and so we handle it.\n // Ref: https://github.com/pinojs/pino/issues/783\n try {\n sleep(BUSY_WRITE_TIMEOUT)\n this.release(undefined, 0)\n } catch (err) {\n this.release(err)\n }\n } else {\n // Let's give the destination some time to process the chunk.\n setTimeout(fsWrite, BUSY_WRITE_TIMEOUT)\n }\n } else {\n this._writing = false\n\n this.emit('error', err)\n }\n return\n }\n\n this.emit('write', n)\n const releasedBufObj = releaseWritingBuf(this._writingBuf, this._len, n)\n this._len = releasedBufObj.len\n this._writingBuf = releasedBufObj.writingBuf\n\n if (this._writingBuf.length) {\n if (!this.sync) {\n fsWrite()\n return\n }\n\n try {\n do {\n const n = fsWriteSync()\n const releasedBufObj = releaseWritingBuf(this._writingBuf, this._len, n)\n this._len = releasedBufObj.len\n this._writingBuf = releasedBufObj.writingBuf\n } while (this._writingBuf.length)\n } catch (err) {\n this.release(err)\n return\n }\n }\n\n if (this._fsync) {\n fs.fsyncSync(this.fd)\n }\n\n const len = this._len\n if (this._reopening) {\n this._writing = false\n this._reopening = false\n this.reopen()\n } else if (len > this.minLength) {\n this._actualWrite()\n } else if (this._ending) {\n if (len > 0) {\n this._actualWrite()\n } else {\n this._writing = false\n actualClose(this)\n }\n } else {\n this._writing = false\n if (this.sync) {\n if (!this._asyncDrainScheduled) {\n this._asyncDrainScheduled = true\n process.nextTick(emitDrain, this)\n }\n } else {\n this.emit('drain')\n }\n }\n }\n\n this.on('newListener', function (name) {\n if (name === 'drain') {\n this._asyncDrainScheduled = false\n }\n })\n\n if (this._periodicFlush !== 0) {\n this._periodicFlushTimer = setInterval(() => this.flush(null), this._periodicFlush)\n this._periodicFlushTimer.unref()\n }\n}\n\n/**\n * Release the writingBuf after fs.write n bytes data\n * @param {string | Buffer} writingBuf - currently writing buffer, usually be instance._writingBuf.\n * @param {number} len - currently buffer length, usually be instance._len.\n * @param {number} n - number of bytes fs already written\n * @returns {{writingBuf: string | Buffer, len: number}} released writingBuf and length\n */\nfunction releaseWritingBuf (writingBuf, len, n) {\n if (typeof writingBuf === 'string') {\n writingBuf = Buffer.from(writingBuf)\n }\n\n len = Math.max(len - n, 0)\n writingBuf = writingBuf.subarray(n)\n return { writingBuf, len }\n}\n\nfunction emitDrain (sonic) {\n const hasListeners = sonic.listenerCount('drain') > 0\n if (!hasListeners) return\n sonic._asyncDrainScheduled = false\n sonic.emit('drain')\n}\n\ninherits(SonicBoom, EventEmitter)\n\nfunction mergeBuf (bufs, len) {\n if (bufs.length === 0) {\n return kEmptyBuffer\n }\n\n if (bufs.length === 1) {\n return bufs[0]\n }\n\n return Buffer.concat(bufs, len)\n}\n\nfunction write (data) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n data = '' + data\n const dataLen = Buffer.byteLength(data)\n const len = this._len + dataLen\n const bufs = this._bufs\n\n if (this.maxLength && len > this.maxLength) {\n this.emit('drop', data)\n return this._len < this._hwm\n }\n\n if (\n bufs.length === 0 ||\n Buffer.byteLength(bufs[bufs.length - 1]) + dataLen > this.maxWrite\n ) {\n bufs.push(data)\n } else {\n bufs[bufs.length - 1] += data\n }\n\n this._len = len\n\n if (!this._writing && this._len >= this.minLength) {\n this._actualWrite()\n }\n\n return this._len < this._hwm\n}\n\nfunction writeBuffer (data) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n const len = this._len + data.length\n const bufs = this._bufs\n const lens = this._lens\n\n if (this.maxLength && len > this.maxLength) {\n this.emit('drop', data)\n return this._len < this._hwm\n }\n\n if (\n bufs.length === 0 ||\n lens[lens.length - 1] + data.length > this.maxWrite\n ) {\n bufs.push([data])\n lens.push(data.length)\n } else {\n bufs[bufs.length - 1].push(data)\n lens[lens.length - 1] += data.length\n }\n\n this._len = len\n\n if (!this._writing && this._len >= this.minLength) {\n this._actualWrite()\n }\n\n return this._len < this._hwm\n}\n\nfunction callFlushCallbackOnDrain (cb) {\n this._flushPending = true\n const onDrain = () => {\n // only if _fsync is false to avoid double fsync\n if (!this._fsync) {\n try {\n fs.fsync(this.fd, (err) => {\n this._flushPending = false\n cb(err)\n })\n } catch (err) {\n cb(err)\n }\n } else {\n this._flushPending = false\n cb()\n }\n this.off('error', onError)\n }\n const onError = (err) => {\n this._flushPending = false\n cb(err)\n this.off('drain', onDrain)\n }\n\n this.once('drain', onDrain)\n this.once('error', onError)\n}\n\nfunction flush (cb) {\n if (cb != null && typeof cb !== 'function') {\n throw new Error('flush cb must be a function')\n }\n\n if (this.destroyed) {\n const error = new Error('SonicBoom destroyed')\n if (cb) {\n cb(error)\n return\n }\n\n throw error\n }\n\n if (this.minLength <= 0) {\n cb?.()\n return\n }\n\n if (cb) {\n callFlushCallbackOnDrain.call(this, cb)\n }\n\n if (this._writing) {\n return\n }\n\n if (this._bufs.length === 0) {\n this._bufs.push('')\n }\n\n this._actualWrite()\n}\n\nfunction flushBuffer (cb) {\n if (cb != null && typeof cb !== 'function') {\n throw new Error('flush cb must be a function')\n }\n\n if (this.destroyed) {\n const error = new Error('SonicBoom destroyed')\n if (cb) {\n cb(error)\n return\n }\n\n throw error\n }\n\n if (this.minLength <= 0) {\n cb?.()\n return\n }\n\n if (cb) {\n callFlushCallbackOnDrain.call(this, cb)\n }\n\n if (this._writing) {\n return\n }\n\n if (this._bufs.length === 0) {\n this._bufs.push([])\n this._lens.push(0)\n }\n\n this._actualWrite()\n}\n\nSonicBoom.prototype.reopen = function (file) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._opening) {\n this.once('ready', () => {\n this.reopen(file)\n })\n return\n }\n\n if (this._ending) {\n return\n }\n\n if (!this.file) {\n throw new Error('Unable to reopen a file descriptor, you must pass a file to SonicBoom')\n }\n\n if (file) {\n this.file = file\n }\n this._reopening = true\n\n if (this._writing) {\n return\n }\n\n const fd = this.fd\n this.once('ready', () => {\n if (fd !== this.fd) {\n fs.close(fd, (err) => {\n if (err) {\n return this.emit('error', err)\n }\n })\n }\n })\n\n openFile(this.file, this)\n}\n\nSonicBoom.prototype.end = function () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._opening) {\n this.once('ready', () => {\n this.end()\n })\n return\n }\n\n if (this._ending) {\n return\n }\n\n this._ending = true\n\n if (this._writing) {\n return\n }\n\n if (this._len > 0 && this.fd >= 0) {\n this._actualWrite()\n } else {\n actualClose(this)\n }\n}\n\nfunction flushSync () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this.fd < 0) {\n throw new Error('sonic boom is not ready yet')\n }\n\n if (!this._writing && this._writingBuf.length > 0) {\n this._bufs.unshift(this._writingBuf)\n this._writingBuf = ''\n }\n\n let buf = ''\n while (this._bufs.length || buf.length) {\n if (buf.length <= 0) {\n buf = this._bufs[0]\n }\n try {\n const n = Buffer.isBuffer(buf)\n ? fs.writeSync(this.fd, buf)\n : fs.writeSync(this.fd, buf, 'utf8')\n const releasedBufObj = releaseWritingBuf(buf, this._len, n)\n buf = releasedBufObj.writingBuf\n this._len = releasedBufObj.len\n if (buf.length <= 0) {\n this._bufs.shift()\n }\n } catch (err) {\n const shouldRetry = err.code === 'EAGAIN' || err.code === 'EBUSY'\n if (shouldRetry && !this.retryEAGAIN(err, buf.length, this._len - buf.length)) {\n throw err\n }\n\n sleep(BUSY_WRITE_TIMEOUT)\n }\n }\n\n try {\n fs.fsyncSync(this.fd)\n } catch {\n // Skip the error. The fd might not support fsync.\n }\n}\n\nfunction flushBufferSync () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this.fd < 0) {\n throw new Error('sonic boom is not ready yet')\n }\n\n if (!this._writing && this._writingBuf.length > 0) {\n this._bufs.unshift([this._writingBuf])\n this._writingBuf = kEmptyBuffer\n }\n\n let buf = kEmptyBuffer\n while (this._bufs.length || buf.length) {\n if (buf.length <= 0) {\n buf = mergeBuf(this._bufs[0], this._lens[0])\n }\n try {\n const n = fs.writeSync(this.fd, buf)\n buf = buf.subarray(n)\n this._len = Math.max(this._len - n, 0)\n if (buf.length <= 0) {\n this._bufs.shift()\n this._lens.shift()\n }\n } catch (err) {\n const shouldRetry = err.code === 'EAGAIN' || err.code === 'EBUSY'\n if (shouldRetry && !this.retryEAGAIN(err, buf.length, this._len - buf.length)) {\n throw err\n }\n\n sleep(BUSY_WRITE_TIMEOUT)\n }\n }\n}\n\nSonicBoom.prototype.destroy = function () {\n if (this.destroyed) {\n return\n }\n actualClose(this)\n}\n\nfunction actualWrite () {\n const release = this.release\n this._writing = true\n this._writingBuf = this._writingBuf.length ? this._writingBuf : this._bufs.shift() || ''\n\n if (this.sync) {\n try {\n const written = Buffer.isBuffer(this._writingBuf)\n ? fs.writeSync(this.fd, this._writingBuf)\n : fs.writeSync(this.fd, this._writingBuf, 'utf8')\n release(null, written)\n } catch (err) {\n release(err)\n }\n } else {\n fs.write(this.fd, this._writingBuf, release)\n }\n}\n\nfunction actualWriteBuffer () {\n const release = this.release\n this._writing = true\n this._writingBuf = this._writingBuf.length ? this._writingBuf : mergeBuf(this._bufs.shift(), this._lens.shift())\n\n if (this.sync) {\n try {\n const written = fs.writeSync(this.fd, this._writingBuf)\n release(null, written)\n } catch (err) {\n release(err)\n }\n } else {\n // fs.write will need to copy string to buffer anyway so\n // we do it here to avoid the overhead of calculating the buffer size\n // in releaseWritingBuf.\n if (kCopyBuffer) {\n this._writingBuf = Buffer.from(this._writingBuf)\n }\n fs.write(this.fd, this._writingBuf, release)\n }\n}\n\nfunction actualClose (sonic) {\n if (sonic.fd === -1) {\n sonic.once('ready', actualClose.bind(null, sonic))\n return\n }\n\n if (sonic._periodicFlushTimer !== undefined) {\n clearInterval(sonic._periodicFlushTimer)\n }\n\n sonic.destroyed = true\n sonic._bufs = []\n sonic._lens = []\n\n assert(typeof sonic.fd === 'number', `sonic.fd must be a number, got ${typeof sonic.fd}`)\n try {\n fs.fsync(sonic.fd, closeWrapped)\n } catch {\n }\n\n function closeWrapped () {\n // We skip errors in fsync\n\n if (sonic.fd !== 1 && sonic.fd !== 2) {\n fs.close(sonic.fd, done)\n } else {\n done()\n }\n }\n\n function done (err) {\n if (err) {\n sonic.emit('error', err)\n return\n }\n\n if (sonic._ending && !sonic._writing) {\n sonic.emit('finish')\n }\n sonic.emit('close')\n }\n}\n\n/**\n * These export configurations enable JS and TS developers\n * to consumer SonicBoom in whatever way best suits their needs.\n * Some examples of supported import syntax includes:\n * - `const SonicBoom = require('SonicBoom')`\n * - `const { SonicBoom } = require('SonicBoom')`\n * - `import * as SonicBoom from 'SonicBoom'`\n * - `import { SonicBoom } from 'SonicBoom'`\n * - `import SonicBoom from 'SonicBoom'`\n */\nSonicBoom.SonicBoom = SonicBoom\nSonicBoom.default = SonicBoom\nmodule.exports = SonicBoom\n", "'use strict'\n\nconst refs = {\n exit: [],\n beforeExit: []\n}\nconst functions = {\n exit: onExit,\n beforeExit: onBeforeExit\n}\n\nlet registry\n\nfunction ensureRegistry () {\n if (registry === undefined) {\n registry = new FinalizationRegistry(clear)\n }\n}\n\nfunction install (event) {\n if (refs[event].length > 0) {\n return\n }\n\n process.on(event, functions[event])\n}\n\nfunction uninstall (event) {\n if (refs[event].length > 0) {\n return\n }\n process.removeListener(event, functions[event])\n if (refs.exit.length === 0 && refs.beforeExit.length === 0) {\n registry = undefined\n }\n}\n\nfunction onExit () {\n callRefs('exit')\n}\n\nfunction onBeforeExit () {\n callRefs('beforeExit')\n}\n\nfunction callRefs (event) {\n for (const ref of refs[event]) {\n const obj = ref.deref()\n const fn = ref.fn\n\n // This should always happen, however GC is\n // undeterministic so it might not happen.\n /* istanbul ignore else */\n if (obj !== undefined) {\n fn(obj, event)\n }\n }\n refs[event] = []\n}\n\nfunction clear (ref) {\n for (const event of ['exit', 'beforeExit']) {\n const index = refs[event].indexOf(ref)\n refs[event].splice(index, index + 1)\n uninstall(event)\n }\n}\n\nfunction _register (event, obj, fn) {\n if (obj === undefined) {\n throw new Error('the object can\\'t be undefined')\n }\n install(event)\n const ref = new WeakRef(obj)\n ref.fn = fn\n\n ensureRegistry()\n registry.register(obj, ref)\n refs[event].push(ref)\n}\n\nfunction register (obj, fn) {\n _register('exit', obj, fn)\n}\n\nfunction registerBeforeExit (obj, fn) {\n _register('beforeExit', obj, fn)\n}\n\nfunction unregister (obj) {\n if (registry === undefined) {\n return\n }\n registry.unregister(obj)\n for (const event of ['exit', 'beforeExit']) {\n refs[event] = refs[event].filter((ref) => {\n const _obj = ref.deref()\n return _obj && _obj !== obj\n })\n uninstall(event)\n }\n}\n\nmodule.exports = {\n register,\n registerBeforeExit,\n unregister\n}\n", "{\n \"name\": \"thread-stream\",\n \"version\": \"3.1.0\",\n \"description\": \"A streaming way to send data to a Node.js Worker Thread\",\n \"main\": \"index.js\",\n \"types\": \"index.d.ts\",\n \"dependencies\": {\n \"real-require\": \"^0.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.1.0\",\n \"@types/tap\": \"^15.0.0\",\n \"@yao-pkg/pkg\": \"^5.11.5\",\n \"desm\": \"^1.3.0\",\n \"fastbench\": \"^1.0.1\",\n \"husky\": \"^9.0.6\",\n \"pino-elasticsearch\": \"^8.0.0\",\n \"sonic-boom\": \"^4.0.1\",\n \"standard\": \"^17.0.0\",\n \"tap\": \"^16.2.0\",\n \"ts-node\": \"^10.8.0\",\n \"typescript\": \"^5.3.2\",\n \"why-is-node-running\": \"^2.2.2\"\n },\n \"scripts\": {\n \"build\": \"tsc --noEmit\",\n \"test\": \"standard && npm run build && npm run transpile && tap \\\"test/**/*.test.*js\\\" && tap --ts test/*.test.*ts\",\n \"test:ci\": \"standard && npm run transpile && npm run test:ci:js && npm run test:ci:ts\",\n \"test:ci:js\": \"tap --no-check-coverage --timeout=120 --coverage-report=lcovonly \\\"test/**/*.test.*js\\\"\",\n \"test:ci:ts\": \"tap --ts --no-check-coverage --coverage-report=lcovonly \\\"test/**/*.test.*ts\\\"\",\n \"test:yarn\": \"npm run transpile && tap \\\"test/**/*.test.js\\\" --no-check-coverage\",\n \"transpile\": \"sh ./test/ts/transpile.sh\",\n \"prepare\": \"husky install\"\n },\n \"standard\": {\n \"ignore\": [\n \"test/ts/**/*\",\n \"test/syntax-error.mjs\"\n ]\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/mcollina/thread-stream.git\"\n },\n \"keywords\": [\n \"worker\",\n \"thread\",\n \"threads\",\n \"stream\"\n ],\n \"author\": \"Matteo Collina <hello@matteocollina.com>\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mcollina/thread-stream/issues\"\n },\n \"homepage\": \"https://github.com/mcollina/thread-stream#readme\"\n}\n", "'use strict'\n\nconst MAX_TIMEOUT = 1000\n\nfunction wait (state, index, expected, timeout, done) {\n const max = Date.now() + timeout\n let current = Atomics.load(state, index)\n if (current === expected) {\n done(null, 'ok')\n return\n }\n let prior = current\n const check = (backoff) => {\n if (Date.now() > max) {\n done(null, 'timed-out')\n } else {\n setTimeout(() => {\n prior = current\n current = Atomics.load(state, index)\n if (current === prior) {\n check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)\n } else {\n if (current === expected) done(null, 'ok')\n else done(null, 'not-equal')\n }\n }, backoff)\n }\n }\n check(1)\n}\n\n// let waitDiffCount = 0\nfunction waitDiff (state, index, expected, timeout, done) {\n // const id = waitDiffCount++\n // process._rawDebug(`>>> waitDiff ${id}`)\n const max = Date.now() + timeout\n let current = Atomics.load(state, index)\n if (current !== expected) {\n done(null, 'ok')\n return\n }\n const check = (backoff) => {\n // process._rawDebug(`${id} ${index} current ${current} expected ${expected}`)\n // process._rawDebug('' + backoff)\n if (Date.now() > max) {\n done(null, 'timed-out')\n } else {\n setTimeout(() => {\n current = Atomics.load(state, index)\n if (current !== expected) {\n done(null, 'ok')\n } else {\n check(backoff >= MAX_TIMEOUT ? MAX_TIMEOUT : backoff * 2)\n }\n }, backoff)\n }\n }\n check(1)\n}\n\nmodule.exports = { wait, waitDiff }\n", "'use strict'\n\nconst WRITE_INDEX = 4\nconst READ_INDEX = 8\n\nmodule.exports = {\n WRITE_INDEX,\n READ_INDEX\n}\n", "'use strict'\n\nconst { version } = require('./package.json')\nconst { EventEmitter } = require('events')\nconst { Worker } = require('worker_threads')\nconst { join } = require('path')\nconst { pathToFileURL } = require('url')\nconst { wait } = require('./lib/wait')\nconst {\n WRITE_INDEX,\n READ_INDEX\n} = require('./lib/indexes')\nconst buffer = require('buffer')\nconst assert = require('assert')\n\nconst kImpl = Symbol('kImpl')\n\n// V8 limit for string size\nconst MAX_STRING = buffer.constants.MAX_STRING_LENGTH\n\nclass FakeWeakRef {\n constructor (value) {\n this._value = value\n }\n\n deref () {\n return this._value\n }\n}\n\nclass FakeFinalizationRegistry {\n register () {}\n\n unregister () {}\n}\n\n// Currently using FinalizationRegistry with code coverage breaks the world\n// Ref: https://github.com/nodejs/node/issues/49344\nconst FinalizationRegistry = process.env.NODE_V8_COVERAGE ? FakeFinalizationRegistry : global.FinalizationRegistry || FakeFinalizationRegistry\nconst WeakRef = process.env.NODE_V8_COVERAGE ? FakeWeakRef : global.WeakRef || FakeWeakRef\n\nconst registry = new FinalizationRegistry((worker) => {\n if (worker.exited) {\n return\n }\n worker.terminate()\n})\n\nfunction createWorker (stream, opts) {\n const { filename, workerData } = opts\n\n const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}\n const toExecute = bundlerOverrides['thread-stream-worker'] || join(__dirname, 'lib', 'worker.js')\n\n const worker = new Worker(toExecute, {\n ...opts.workerOpts,\n trackUnmanagedFds: false,\n workerData: {\n filename: filename.indexOf('file://') === 0\n ? filename\n : pathToFileURL(filename).href,\n dataBuf: stream[kImpl].dataBuf,\n stateBuf: stream[kImpl].stateBuf,\n workerData: {\n $context: {\n threadStreamVersion: version\n },\n ...workerData\n }\n }\n })\n\n // We keep a strong reference for now,\n // we need to start writing first\n worker.stream = new FakeWeakRef(stream)\n\n worker.on('message', onWorkerMessage)\n worker.on('exit', onWorkerExit)\n registry.register(stream, worker)\n\n return worker\n}\n\nfunction drain (stream) {\n assert(!stream[kImpl].sync)\n if (stream[kImpl].needDrain) {\n stream[kImpl].needDrain = false\n stream.emit('drain')\n }\n}\n\nfunction nextFlush (stream) {\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n let leftover = stream[kImpl].data.length - writeIndex\n\n if (leftover > 0) {\n if (stream[kImpl].buf.length === 0) {\n stream[kImpl].flushing = false\n\n if (stream[kImpl].ending) {\n end(stream)\n } else if (stream[kImpl].needDrain) {\n process.nextTick(drain, stream)\n }\n\n return\n }\n\n let toWrite = stream[kImpl].buf.slice(0, leftover)\n let toWriteBytes = Buffer.byteLength(toWrite)\n if (toWriteBytes <= leftover) {\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n // process._rawDebug('writing ' + toWrite.length)\n write(stream, toWrite, nextFlush.bind(null, stream))\n } else {\n // multi-byte utf-8\n stream.flush(() => {\n // err is already handled in flush()\n if (stream.destroyed) {\n return\n }\n\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n\n // Find a toWrite length that fits the buffer\n // it must exists as the buffer is at least 4 bytes length\n // and the max utf-8 length for a char is 4 bytes.\n while (toWriteBytes > stream[kImpl].data.length) {\n leftover = leftover / 2\n toWrite = stream[kImpl].buf.slice(0, leftover)\n toWriteBytes = Buffer.byteLength(toWrite)\n }\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n write(stream, toWrite, nextFlush.bind(null, stream))\n })\n }\n } else if (leftover === 0) {\n if (writeIndex === 0 && stream[kImpl].buf.length === 0) {\n // we had a flushSync in the meanwhile\n return\n }\n stream.flush(() => {\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n nextFlush(stream)\n })\n } else {\n // This should never happen\n destroy(stream, new Error('overwritten'))\n }\n}\n\nfunction onWorkerMessage (msg) {\n const stream = this.stream.deref()\n if (stream === undefined) {\n this.exited = true\n // Terminate the worker.\n this.terminate()\n return\n }\n\n switch (msg.code) {\n case 'READY':\n // Replace the FakeWeakRef with a\n // proper one.\n this.stream = new WeakRef(stream)\n\n stream.flush(() => {\n stream[kImpl].ready = true\n stream.emit('ready')\n })\n break\n case 'ERROR':\n destroy(stream, msg.err)\n break\n case 'EVENT':\n if (Array.isArray(msg.args)) {\n stream.emit(msg.name, ...msg.args)\n } else {\n stream.emit(msg.name, msg.args)\n }\n break\n case 'WARNING':\n process.emitWarning(msg.err)\n break\n default:\n destroy(stream, new Error('this should not happen: ' + msg.code))\n }\n}\n\nfunction onWorkerExit (code) {\n const stream = this.stream.deref()\n if (stream === undefined) {\n // Nothing to do, the worker already exit\n return\n }\n registry.unregister(stream)\n stream.worker.exited = true\n stream.worker.off('exit', onWorkerExit)\n destroy(stream, code !== 0 ? new Error('the worker thread exited') : null)\n}\n\nclass ThreadStream extends EventEmitter {\n constructor (opts = {}) {\n super()\n\n if (opts.bufferSize < 4) {\n throw new Error('bufferSize must at least fit a 4-byte utf-8 char')\n }\n\n this[kImpl] = {}\n this[kImpl].stateBuf = new SharedArrayBuffer(128)\n this[kImpl].state = new Int32Array(this[kImpl].stateBuf)\n this[kImpl].dataBuf = new SharedArrayBuffer(opts.bufferSize || 4 * 1024 * 1024)\n this[kImpl].data = Buffer.from(this[kImpl].dataBuf)\n this[kImpl].sync = opts.sync || false\n this[kImpl].ending = false\n this[kImpl].ended = false\n this[kImpl].needDrain = false\n this[kImpl].destroyed = false\n this[kImpl].flushing = false\n this[kImpl].ready = false\n this[kImpl].finished = false\n this[kImpl].errored = null\n this[kImpl].closed = false\n this[kImpl].buf = ''\n\n // TODO (fix): Make private?\n this.worker = createWorker(this, opts) // TODO (fix): make private\n this.on('message', (message, transferList) => {\n this.worker.postMessage(message, transferList)\n })\n }\n\n write (data) {\n if (this[kImpl].destroyed) {\n error(this, new Error('the worker has exited'))\n return false\n }\n\n if (this[kImpl].ending) {\n error(this, new Error('the worker is ending'))\n return false\n }\n\n if (this[kImpl].flushing && this[kImpl].buf.length + data.length >= MAX_STRING) {\n try {\n writeSync(this)\n this[kImpl].flushing = true\n } catch (err) {\n destroy(this, err)\n return false\n }\n }\n\n this[kImpl].buf += data\n\n if (this[kImpl].sync) {\n try {\n writeSync(this)\n return true\n } catch (err) {\n destroy(this, err)\n return false\n }\n }\n\n if (!this[kImpl].flushing) {\n this[kImpl].flushing = true\n setImmediate(nextFlush, this)\n }\n\n this[kImpl].needDrain = this[kImpl].data.length - this[kImpl].buf.length - Atomics.load(this[kImpl].state, WRITE_INDEX) <= 0\n return !this[kImpl].needDrain\n }\n\n end () {\n if (this[kImpl].destroyed) {\n return\n }\n\n this[kImpl].ending = true\n end(this)\n }\n\n flush (cb) {\n if (this[kImpl].destroyed) {\n if (typeof cb === 'function') {\n process.nextTick(cb, new Error('the worker has exited'))\n }\n return\n }\n\n // TODO write all .buf\n const writeIndex = Atomics.load(this[kImpl].state, WRITE_INDEX)\n // process._rawDebug(`(flush) readIndex (${Atomics.load(this.state, READ_INDEX)}) writeIndex (${Atomics.load(this.state, WRITE_INDEX)})`)\n wait(this[kImpl].state, READ_INDEX, writeIndex, Infinity, (err, res) => {\n if (err) {\n destroy(this, err)\n process.nextTick(cb, err)\n return\n }\n if (res === 'not-equal') {\n // TODO handle deadlock\n this.flush(cb)\n return\n }\n process.nextTick(cb)\n })\n }\n\n flushSync () {\n if (this[kImpl].destroyed) {\n return\n }\n\n writeSync(this)\n flushSync(this)\n }\n\n unref () {\n this.worker.unref()\n }\n\n ref () {\n this.worker.ref()\n }\n\n get ready () {\n return this[kImpl].ready\n }\n\n get destroyed () {\n return this[kImpl].destroyed\n }\n\n get closed () {\n return this[kImpl].closed\n }\n\n get writable () {\n return !this[kImpl].destroyed && !this[kImpl].ending\n }\n\n get writableEnded () {\n return this[kImpl].ending\n }\n\n get writableFinished () {\n return this[kImpl].finished\n }\n\n get writableNeedDrain () {\n return this[kImpl].needDrain\n }\n\n get writableObjectMode () {\n return false\n }\n\n get writableErrored () {\n return this[kImpl].errored\n }\n}\n\nfunction error (stream, err) {\n setImmediate(() => {\n stream.emit('error', err)\n })\n}\n\nfunction destroy (stream, err) {\n if (stream[kImpl].destroyed) {\n return\n }\n stream[kImpl].destroyed = true\n\n if (err) {\n stream[kImpl].errored = err\n error(stream, err)\n }\n\n if (!stream.worker.exited) {\n stream.worker.terminate()\n .catch(() => {})\n .then(() => {\n stream[kImpl].closed = true\n stream.emit('close')\n })\n } else {\n setImmediate(() => {\n stream[kImpl].closed = true\n stream.emit('close')\n })\n }\n}\n\nfunction write (stream, data, cb) {\n // data is smaller than the shared buffer length\n const current = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n const length = Buffer.byteLength(data)\n stream[kImpl].data.write(data, current)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, current + length)\n Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n cb()\n return true\n}\n\nfunction end (stream) {\n if (stream[kImpl].ended || !stream[kImpl].ending || stream[kImpl].flushing) {\n return\n }\n stream[kImpl].ended = true\n\n try {\n stream.flushSync()\n\n let readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n // process._rawDebug('writing index')\n Atomics.store(stream[kImpl].state, WRITE_INDEX, -1)\n // process._rawDebug(`(end) readIndex (${Atomics.load(stream.state, READ_INDEX)}) writeIndex (${Atomics.load(stream.state, WRITE_INDEX)})`)\n Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n\n // Wait for the process to complete\n let spins = 0\n while (readIndex !== -1) {\n // process._rawDebug(`read = ${read}`)\n Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n if (readIndex === -2) {\n destroy(stream, new Error('end() failed'))\n return\n }\n\n if (++spins === 10) {\n destroy(stream, new Error('end() took too long (10s)'))\n return\n }\n }\n\n process.nextTick(() => {\n stream[kImpl].finished = true\n stream.emit('finish')\n })\n } catch (err) {\n destroy(stream, err)\n }\n // process._rawDebug('end finished...')\n}\n\nfunction writeSync (stream) {\n const cb = () => {\n if (stream[kImpl].ending) {\n end(stream)\n } else if (stream[kImpl].needDrain) {\n process.nextTick(drain, stream)\n }\n }\n stream[kImpl].flushing = false\n\n while (stream[kImpl].buf.length !== 0) {\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n let leftover = stream[kImpl].data.length - writeIndex\n if (leftover === 0) {\n flushSync(stream)\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n continue\n } else if (leftover < 0) {\n // stream should never happen\n throw new Error('overwritten')\n }\n\n let toWrite = stream[kImpl].buf.slice(0, leftover)\n let toWriteBytes = Buffer.byteLength(toWrite)\n if (toWriteBytes <= leftover) {\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n // process._rawDebug('writing ' + toWrite.length)\n write(stream, toWrite, cb)\n } else {\n // multi-byte utf-8\n flushSync(stream)\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n\n // Find a toWrite length that fits the buffer\n // it must exists as the buffer is at least 4 bytes length\n // and the max utf-8 length for a char is 4 bytes.\n while (toWriteBytes > stream[kImpl].buf.length) {\n leftover = leftover / 2\n toWrite = stream[kImpl].buf.slice(0, leftover)\n toWriteBytes = Buffer.byteLength(toWrite)\n }\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n write(stream, toWrite, cb)\n }\n }\n}\n\nfunction flushSync (stream) {\n if (stream[kImpl].flushing) {\n throw new Error('unable to flush while flushing')\n }\n\n // process._rawDebug('flushSync started')\n\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n\n let spins = 0\n\n // TODO handle deadlock\n while (true) {\n const readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n if (readIndex === -2) {\n throw Error('_flushSync failed')\n }\n\n // process._rawDebug(`(flushSync) readIndex (${readIndex}) writeIndex (${writeIndex})`)\n if (readIndex !== writeIndex) {\n // TODO stream timeouts for some reason.\n Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n } else {\n break\n }\n\n if (++spins === 10) {\n throw new Error('_flushSync took too long (10s)')\n }\n }\n // process._rawDebug('flushSync finished')\n}\n\nmodule.exports = ThreadStream\n", "'use strict'\n\nconst { createRequire } = require('module')\nconst getCallers = require('./caller')\nconst { join, isAbsolute, sep } = require('node:path')\nconst sleep = require('atomic-sleep')\nconst onExit = require('on-exit-leak-free')\nconst ThreadStream = require('thread-stream')\n\nfunction setupOnExit (stream) {\n // This is leak free, it does not leave event handlers\n onExit.register(stream, autoEnd)\n onExit.registerBeforeExit(stream, flush)\n\n stream.on('close', function () {\n onExit.unregister(stream)\n })\n}\n\nfunction buildStream (filename, workerData, workerOpts, sync) {\n const stream = new ThreadStream({\n filename,\n workerData,\n workerOpts,\n sync\n })\n\n stream.on('ready', onReady)\n stream.on('close', function () {\n process.removeListener('exit', onExit)\n })\n\n process.on('exit', onExit)\n\n function onReady () {\n process.removeListener('exit', onExit)\n stream.unref()\n\n if (workerOpts.autoEnd !== false) {\n setupOnExit(stream)\n }\n }\n\n function onExit () {\n /* istanbul ignore next */\n if (stream.closed) {\n return\n }\n stream.flushSync()\n // Apparently there is a very sporadic race condition\n // that in certain OS would prevent the messages to be flushed\n // because the thread might not have been created still.\n // Unfortunately we need to sleep(100) in this case.\n sleep(100)\n stream.end()\n }\n\n return stream\n}\n\nfunction autoEnd (stream) {\n stream.ref()\n stream.flushSync()\n stream.end()\n stream.once('close', function () {\n stream.unref()\n })\n}\n\nfunction flush (stream) {\n stream.flushSync()\n}\n\nfunction transport (fullOptions) {\n const { pipeline, targets, levels, dedupe, worker = {}, caller = getCallers(), sync = false } = fullOptions\n\n const options = {\n ...fullOptions.options\n }\n\n // Backwards compatibility\n const callers = typeof caller === 'string' ? [caller] : caller\n\n // This will be eventually modified by bundlers\n const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}\n\n let target = fullOptions.target\n\n if (target && targets) {\n throw new Error('only one of target or targets can be specified')\n }\n\n if (targets) {\n target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')\n options.targets = targets.filter(dest => dest.target).map((dest) => {\n return {\n ...dest,\n target: fixTarget(dest.target)\n }\n })\n options.pipelines = targets.filter(dest => dest.pipeline).map((dest) => {\n return dest.pipeline.map((t) => {\n return {\n ...t,\n level: dest.level, // duplicate the pipeline `level` property defined in the upper level\n target: fixTarget(t.target)\n }\n })\n })\n } else if (pipeline) {\n target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')\n options.pipelines = [pipeline.map((dest) => {\n return {\n ...dest,\n target: fixTarget(dest.target)\n }\n })]\n }\n\n if (levels) {\n options.levels = levels\n }\n\n if (dedupe) {\n options.dedupe = dedupe\n }\n\n options.pinoWillSendConfig = true\n\n return buildStream(fixTarget(target), options, worker, sync)\n\n function fixTarget (origin) {\n origin = bundlerOverrides[origin] || origin\n\n if (isAbsolute(origin) || origin.indexOf('file://') === 0) {\n return origin\n }\n\n if (origin === 'pino/file') {\n return join(__dirname, '..', 'file.js')\n }\n\n let fixTarget\n\n for (const filePath of callers) {\n try {\n const context = filePath === 'node:repl'\n ? process.cwd() + sep\n : filePath\n\n fixTarget = createRequire(context).resolve(origin)\n break\n } catch (err) {\n // Silent catch\n continue\n }\n }\n\n if (!fixTarget) {\n throw new Error(`unable to determine transport target for \"${origin}\"`)\n }\n\n return fixTarget\n }\n}\n\nmodule.exports = transport\n", "'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst diagChan = require('node:diagnostics_channel')\nconst format = require('quick-format-unescaped')\nconst { mapHttpRequest, mapHttpResponse } = require('pino-std-serializers')\nconst SonicBoom = require('sonic-boom')\nconst onExit = require('on-exit-leak-free')\nconst {\n lsCacheSym,\n chindingsSym,\n writeSym,\n serializersSym,\n formatOptsSym,\n endSym,\n stringifiersSym,\n stringifySym,\n stringifySafeSym,\n wildcardFirstSym,\n nestedKeySym,\n formattersSym,\n messageKeySym,\n errorKeySym,\n nestedKeyStrSym,\n msgPrefixSym\n} = require('./symbols')\nconst { isMainThread } = require('worker_threads')\nconst transport = require('./transport')\n\nlet asJsonChan\n// Node >= 18.19 supports diagnostics_channel.tracingChannel\nif (typeof diagChan.tracingChannel === 'function') {\n asJsonChan = diagChan.tracingChannel('pino_asJson')\n} else {\n // Older Node 18.x (e.g. 18.18), provided a no-op fallback\n asJsonChan = {\n hasSubscribers: false,\n traceSync (fn, store, thisArg, ...args) {\n return fn.call(thisArg, ...args)\n }\n }\n}\n\nfunction noop () {\n}\n\nfunction genLog (level, hook) {\n if (!hook) return LOG\n\n return function hookWrappedLog (...args) {\n hook.call(this, args, LOG, level)\n }\n\n function LOG (o, ...n) {\n if (typeof o === 'object') {\n let msg = o\n if (o !== null) {\n if (o.method && o.headers && o.socket) {\n o = mapHttpRequest(o)\n } else if (typeof o.setHeader === 'function') {\n o = mapHttpResponse(o)\n }\n }\n let formatParams\n if (msg === null && n.length === 0) {\n formatParams = [null]\n } else {\n msg = n.shift()\n formatParams = n\n }\n // We do not use a coercive check for `msg` as it is\n // measurably slower than the explicit checks.\n if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n msg = this[msgPrefixSym] + msg\n }\n this[writeSym](o, format(msg, formatParams, this[formatOptsSym]), level)\n } else {\n let msg = o === undefined ? n.shift() : o\n\n // We do not use a coercive check for `msg` as it is\n // measurably slower than the explicit checks.\n if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n msg = this[msgPrefixSym] + msg\n }\n this[writeSym](null, format(msg, n, this[formatOptsSym]), level)\n }\n }\n}\n\n// magically escape strings for json\n// relying on their charCodeAt\n// everything below 32 needs JSON.stringify()\n// 34 and 92 happens all the time, so we\n// have a fast case for them\nfunction asString (str) {\n let result = ''\n let last = 0\n let found = false\n let point = 255\n const l = str.length\n if (l > 100) {\n return JSON.stringify(str)\n }\n for (var i = 0; i < l && point >= 32; i++) {\n point = str.charCodeAt(i)\n if (point === 34 || point === 92) {\n result += str.slice(last, i) + '\\\\'\n last = i\n found = true\n }\n }\n if (!found) {\n result = str\n } else {\n result += str.slice(last)\n }\n return point < 32 ? JSON.stringify(str) : '\"' + result + '\"'\n}\n\n/**\n * `asJson` wraps `_asJson` in order to facilitate generating diagnostics.\n *\n * @param {object} obj The merging object passed to the log method.\n * @param {string} msg The log message passed to the log method.\n * @param {number} num The log level number.\n * @param {number} time The log time in milliseconds.\n *\n * @returns {string}\n */\nfunction asJson (obj, msg, num, time) {\n if (asJsonChan.hasSubscribers === false) {\n return _asJson.call(this, obj, msg, num, time)\n }\n\n const store = { instance: this, arguments }\n return asJsonChan.traceSync(_asJson, store, this, obj, msg, num, time)\n}\n\n/**\n * `_asJson` parses all collected data and generates the finalized newline\n * delimited JSON string.\n *\n * @param {object} obj The merging object passed to the log method.\n * @param {string} msg The log message passed to the log method.\n * @param {number} num The log level number.\n * @param {number} time The log time in milliseconds.\n *\n * @returns {string} The finalized log string terminated with a newline.\n * @private\n */\nfunction _asJson (obj, msg, num, time) {\n const stringify = this[stringifySym]\n const stringifySafe = this[stringifySafeSym]\n const stringifiers = this[stringifiersSym]\n const end = this[endSym]\n const chindings = this[chindingsSym]\n const serializers = this[serializersSym]\n const formatters = this[formattersSym]\n const messageKey = this[messageKeySym]\n const errorKey = this[errorKeySym]\n let data = this[lsCacheSym][num] + time\n\n // we need the child bindings added to the output first so instance logged\n // objects can take precedence when JSON.parse-ing the resulting log line\n data = data + chindings\n\n let value\n if (formatters.log) {\n obj = formatters.log(obj)\n }\n const wildcardStringifier = stringifiers[wildcardFirstSym]\n let propStr = ''\n for (const key in obj) {\n value = obj[key]\n if (Object.prototype.hasOwnProperty.call(obj, key) && value !== undefined) {\n if (serializers[key]) {\n value = serializers[key](value)\n } else if (key === errorKey && serializers.err) {\n value = serializers.err(value)\n }\n\n const stringifier = stringifiers[key] || wildcardStringifier\n\n switch (typeof value) {\n case 'undefined':\n case 'function':\n continue\n case 'number':\n /* eslint no-fallthrough: \"off\" */\n if (Number.isFinite(value) === false) {\n value = null\n }\n // this case explicitly falls through to the next one\n case 'boolean':\n if (stringifier) value = stringifier(value)\n break\n case 'string':\n value = (stringifier || asString)(value)\n break\n default:\n value = (stringifier || stringify)(value, stringifySafe)\n }\n if (value === undefined) continue\n const strKey = asString(key)\n propStr += ',' + strKey + ':' + value\n }\n }\n\n let msgStr = ''\n if (msg !== undefined) {\n value = serializers[messageKey] ? serializers[messageKey](msg) : msg\n const stringifier = stringifiers[messageKey] || wildcardStringifier\n\n switch (typeof value) {\n case 'function':\n break\n case 'number':\n /* eslint no-fallthrough: \"off\" */\n if (Number.isFinite(value) === false) {\n value = null\n }\n // this case explicitly falls through to the next one\n case 'boolean':\n if (stringifier) value = stringifier(value)\n msgStr = ',\"' + messageKey + '\":' + value\n break\n case 'string':\n value = (stringifier || asString)(value)\n msgStr = ',\"' + messageKey + '\":' + value\n break\n default:\n value = (stringifier || stringify)(value, stringifySafe)\n msgStr = ',\"' + messageKey + '\":' + value\n }\n }\n\n if (this[nestedKeySym] && propStr) {\n // place all the obj properties under the specified key\n // the nested key is already formatted from the constructor\n return data + this[nestedKeyStrSym] + propStr.slice(1) + '}' + msgStr + end\n } else {\n return data + propStr + msgStr + end\n }\n}\n\nfunction asChindings (instance, bindings) {\n let value\n let data = instance[chindingsSym]\n const stringify = instance[stringifySym]\n const stringifySafe = instance[stringifySafeSym]\n const stringifiers = instance[stringifiersSym]\n const wildcardStringifier = stringifiers[wildcardFirstSym]\n const serializers = instance[serializersSym]\n const formatter = instance[formattersSym].bindings\n bindings = formatter(bindings)\n\n for (const key in bindings) {\n value = bindings[key]\n const valid = (key.length < 5 || (key !== 'level' &&\n key !== 'serializers' &&\n key !== 'formatters' &&\n key !== 'customLevels')) &&\n bindings.hasOwnProperty(key) &&\n value !== undefined\n if (valid === true) {\n value = serializers[key] ? serializers[key](value) : value\n value = (stringifiers[key] || wildcardStringifier || stringify)(value, stringifySafe)\n if (value === undefined) continue\n data += ',\"' + key + '\":' + value\n }\n }\n return data\n}\n\nfunction hasBeenTampered (stream) {\n return stream.write !== stream.constructor.prototype.write\n}\n\nfunction buildSafeSonicBoom (opts) {\n const stream = new SonicBoom(opts)\n stream.on('error', filterBrokenPipe)\n // If we are sync: false, we must flush on exit\n if (!opts.sync && isMainThread) {\n onExit.register(stream, autoEnd)\n\n stream.on('close', function () {\n onExit.unregister(stream)\n })\n }\n return stream\n\n function filterBrokenPipe (err) {\n // Impossible to replicate across all operating systems\n /* istanbul ignore next */\n if (err.code === 'EPIPE') {\n // If we get EPIPE, we should stop logging here\n // however we have no control to the consumer of\n // SonicBoom, so we just overwrite the write method\n stream.write = noop\n stream.end = noop\n stream.flushSync = noop\n stream.destroy = noop\n return\n }\n stream.removeListener('error', filterBrokenPipe)\n stream.emit('error', err)\n }\n}\n\nfunction autoEnd (stream, eventName) {\n // This check is needed only on some platforms\n /* istanbul ignore next */\n if (stream.destroyed) {\n return\n }\n\n if (eventName === 'beforeExit') {\n // We still have an event loop, let's use it\n stream.flush()\n stream.on('drain', function () {\n stream.end()\n })\n } else {\n // For some reason istanbul is not detecting this, but it's there\n /* istanbul ignore next */\n // We do not have an event loop, so flush synchronously\n stream.flushSync()\n }\n}\n\nfunction createArgsNormalizer (defaultOptions) {\n return function normalizeArgs (instance, caller, opts = {}, stream) {\n // support stream as a string\n if (typeof opts === 'string') {\n stream = buildSafeSonicBoom({ dest: opts })\n opts = {}\n } else if (typeof stream === 'string') {\n if (opts && opts.transport) {\n throw Error('only one of option.transport or stream can be specified')\n }\n stream = buildSafeSonicBoom({ dest: stream })\n } else if (opts instanceof SonicBoom || opts.writable || opts._writableState) {\n stream = opts\n opts = {}\n } else if (opts.transport) {\n if (opts.transport instanceof SonicBoom || opts.transport.writable || opts.transport._writableState) {\n throw Error('option.transport do not allow stream, please pass to option directly. e.g. pino(transport)')\n }\n if (opts.transport.targets && opts.transport.targets.length && opts.formatters && typeof opts.formatters.level === 'function') {\n throw Error('option.transport.targets do not allow custom level formatters')\n }\n\n let customLevels\n if (opts.customLevels) {\n customLevels = opts.useOnlyCustomLevels ? opts.customLevels : Object.assign({}, opts.levels, opts.customLevels)\n }\n stream = transport({ caller, ...opts.transport, levels: customLevels })\n }\n opts = Object.assign({}, defaultOptions, opts)\n opts.serializers = Object.assign({}, defaultOptions.serializers, opts.serializers)\n opts.formatters = Object.assign({}, defaultOptions.formatters, opts.formatters)\n\n if (opts.prettyPrint) {\n throw new Error('prettyPrint option is no longer supported, see the pino-pretty package (https://github.com/pinojs/pino-pretty)')\n }\n\n const { enabled, onChild } = opts\n if (enabled === false) opts.level = 'silent'\n if (!onChild) opts.onChild = noop\n if (!stream) {\n if (!hasBeenTampered(process.stdout)) {\n // If process.stdout.fd is undefined, it means that we are running\n // in a worker thread. Let's assume we are logging to file descriptor 1.\n stream = buildSafeSonicBoom({ fd: process.stdout.fd || 1 })\n } else {\n stream = process.stdout\n }\n }\n return { opts, stream }\n }\n}\n\nfunction stringify (obj, stringifySafeFn) {\n try {\n return JSON.stringify(obj)\n } catch (_) {\n try {\n const stringify = stringifySafeFn || this[stringifySafeSym]\n return stringify(obj)\n } catch (_) {\n return '\"[unable to serialize, circular reference is too complex to analyze]\"'\n }\n }\n}\n\nfunction buildFormatters (level, bindings, log) {\n return {\n level,\n bindings,\n log\n }\n}\n\n/**\n * Convert a string integer file descriptor to a proper native integer\n * file descriptor.\n *\n * @param {string} destination The file descriptor string to attempt to convert.\n *\n * @returns {Number}\n */\nfunction normalizeDestFileDescriptor (destination) {\n const fd = Number(destination)\n if (typeof destination === 'string' && Number.isFinite(fd)) {\n return fd\n }\n // destination could be undefined if we are in a worker\n if (destination === undefined) {\n // This is stdout in UNIX systems\n return 1\n }\n return destination\n}\n\nmodule.exports = {\n noop,\n buildSafeSonicBoom,\n asChindings,\n asJson,\n genLog,\n createArgsNormalizer,\n stringify,\n buildFormatters,\n normalizeDestFileDescriptor\n}\n", "/**\n * Represents default log level values\n *\n * @enum {number}\n */\nconst DEFAULT_LEVELS = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60\n}\n\n/**\n * Represents sort order direction: `ascending` or `descending`\n *\n * @enum {string}\n */\nconst SORTING_ORDER = {\n ASC: 'ASC',\n DESC: 'DESC'\n}\n\nmodule.exports = {\n DEFAULT_LEVELS,\n SORTING_ORDER\n}\n", "'use strict'\n/* eslint no-prototype-builtins: 0 */\nconst {\n lsCacheSym,\n levelValSym,\n useOnlyCustomLevelsSym,\n streamSym,\n formattersSym,\n hooksSym,\n levelCompSym\n} = require('./symbols')\nconst { noop, genLog } = require('./tools')\nconst { DEFAULT_LEVELS, SORTING_ORDER } = require('./constants')\n\nconst levelMethods = {\n fatal: (hook) => {\n const logFatal = genLog(DEFAULT_LEVELS.fatal, hook)\n return function (...args) {\n const stream = this[streamSym]\n logFatal.call(this, ...args)\n if (typeof stream.flushSync === 'function') {\n try {\n stream.flushSync()\n } catch (e) {\n // https://github.com/pinojs/pino/pull/740#discussion_r346788313\n }\n }\n }\n },\n error: (hook) => genLog(DEFAULT_LEVELS.error, hook),\n warn: (hook) => genLog(DEFAULT_LEVELS.warn, hook),\n info: (hook) => genLog(DEFAULT_LEVELS.info, hook),\n debug: (hook) => genLog(DEFAULT_LEVELS.debug, hook),\n trace: (hook) => genLog(DEFAULT_LEVELS.trace, hook)\n}\n\nconst nums = Object.keys(DEFAULT_LEVELS).reduce((o, k) => {\n o[DEFAULT_LEVELS[k]] = k\n return o\n}, {})\n\nconst initialLsCache = Object.keys(nums).reduce((o, k) => {\n o[k] = '{\"level\":' + Number(k)\n return o\n}, {})\n\nfunction genLsCache (instance) {\n const formatter = instance[formattersSym].level\n const { labels } = instance.levels\n const cache = {}\n for (const label in labels) {\n const level = formatter(labels[label], Number(label))\n cache[label] = JSON.stringify(level).slice(0, -1)\n }\n instance[lsCacheSym] = cache\n return instance\n}\n\nfunction isStandardLevel (level, useOnlyCustomLevels) {\n if (useOnlyCustomLevels) {\n return false\n }\n\n switch (level) {\n case 'fatal':\n case 'error':\n case 'warn':\n case 'info':\n case 'debug':\n case 'trace':\n return true\n default:\n return false\n }\n}\n\nfunction setLevel (level) {\n const { labels, values } = this.levels\n if (typeof level === 'number') {\n if (labels[level] === undefined) throw Error('unknown level value' + level)\n level = labels[level]\n }\n if (values[level] === undefined) throw Error('unknown level ' + level)\n const preLevelVal = this[levelValSym]\n const levelVal = this[levelValSym] = values[level]\n const useOnlyCustomLevelsVal = this[useOnlyCustomLevelsSym]\n const levelComparison = this[levelCompSym]\n const hook = this[hooksSym].logMethod\n\n for (const key in values) {\n if (levelComparison(values[key], levelVal) === false) {\n this[key] = noop\n continue\n }\n this[key] = isStandardLevel(key, useOnlyCustomLevelsVal) ? levelMethods[key](hook) : genLog(values[key], hook)\n }\n\n this.emit(\n 'level-change',\n level,\n levelVal,\n labels[preLevelVal],\n preLevelVal,\n this\n )\n}\n\nfunction getLevel (level) {\n const { levels, levelVal } = this\n // protection against potential loss of Pino scope from serializers (edge case with circular refs - https://github.com/pinojs/pino/issues/833)\n return (levels && levels.labels) ? levels.labels[levelVal] : ''\n}\n\nfunction isLevelEnabled (logLevel) {\n const { values } = this.levels\n const logLevelVal = values[logLevel]\n return logLevelVal !== undefined && this[levelCompSym](logLevelVal, this[levelValSym])\n}\n\n/**\n * Determine if the given `current` level is enabled by comparing it\n * against the current threshold (`expected`).\n *\n * @param {SORTING_ORDER} direction comparison direction \"ASC\" or \"DESC\"\n * @param {number} current current log level number representation\n * @param {number} expected threshold value to compare with\n * @returns {boolean}\n */\nfunction compareLevel (direction, current, expected) {\n if (direction === SORTING_ORDER.DESC) {\n return current <= expected\n }\n\n return current >= expected\n}\n\n/**\n * Create a level comparison function based on `levelComparison`\n * it could a default function which compares levels either in \"ascending\" or \"descending\" order or custom comparison function\n *\n * @param {SORTING_ORDER | Function} levelComparison sort levels order direction or custom comparison function\n * @returns Function\n */\nfunction genLevelComparison (levelComparison) {\n if (typeof levelComparison === 'string') {\n return compareLevel.bind(null, levelComparison)\n }\n\n return levelComparison\n}\n\nfunction mappings (customLevels = null, useOnlyCustomLevels = false) {\n const customNums = customLevels\n /* eslint-disable */\n ? Object.keys(customLevels).reduce((o, k) => {\n o[customLevels[k]] = k\n return o\n }, {})\n : null\n /* eslint-enable */\n\n const labels = Object.assign(\n Object.create(Object.prototype, { Infinity: { value: 'silent' } }),\n useOnlyCustomLevels ? null : nums,\n customNums\n )\n const values = Object.assign(\n Object.create(Object.prototype, { silent: { value: Infinity } }),\n useOnlyCustomLevels ? null : DEFAULT_LEVELS,\n customLevels\n )\n return { labels, values }\n}\n\nfunction assertDefaultLevelFound (defaultLevel, customLevels, useOnlyCustomLevels) {\n if (typeof defaultLevel === 'number') {\n const values = [].concat(\n Object.keys(customLevels || {}).map(key => customLevels[key]),\n useOnlyCustomLevels ? [] : Object.keys(nums).map(level => +level),\n Infinity\n )\n if (!values.includes(defaultLevel)) {\n throw Error(`default level:${defaultLevel} must be included in custom levels`)\n }\n return\n }\n\n const labels = Object.assign(\n Object.create(Object.prototype, { silent: { value: Infinity } }),\n useOnlyCustomLevels ? null : DEFAULT_LEVELS,\n customLevels\n )\n if (!(defaultLevel in labels)) {\n throw Error(`default level:${defaultLevel} must be included in custom levels`)\n }\n}\n\nfunction assertNoLevelCollisions (levels, customLevels) {\n const { labels, values } = levels\n for (const k in customLevels) {\n if (k in values) {\n throw Error('levels cannot be overridden')\n }\n if (customLevels[k] in labels) {\n throw Error('pre-existing level values cannot be used for new levels')\n }\n }\n}\n\n/**\n * Validates whether `levelComparison` is correct\n *\n * @throws Error\n * @param {SORTING_ORDER | Function} levelComparison - value to validate\n * @returns\n */\nfunction assertLevelComparison (levelComparison) {\n if (typeof levelComparison === 'function') {\n return\n }\n\n if (typeof levelComparison === 'string' && Object.values(SORTING_ORDER).includes(levelComparison)) {\n return\n }\n\n throw new Error('Levels comparison should be one of \"ASC\", \"DESC\" or \"function\" type')\n}\n\nmodule.exports = {\n initialLsCache,\n genLsCache,\n levelMethods,\n getLevel,\n setLevel,\n isLevelEnabled,\n mappings,\n assertNoLevelCollisions,\n assertDefaultLevelFound,\n genLevelComparison,\n assertLevelComparison\n}\n", "'use strict'\n\nmodule.exports = { version: '9.14.0' }\n", "'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst { EventEmitter } = require('node:events')\nconst {\n lsCacheSym,\n levelValSym,\n setLevelSym,\n getLevelSym,\n chindingsSym,\n parsedChindingsSym,\n mixinSym,\n asJsonSym,\n writeSym,\n mixinMergeStrategySym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n serializersSym,\n formattersSym,\n errorKeySym,\n messageKeySym,\n useOnlyCustomLevelsSym,\n needsMetadataGsym,\n redactFmtSym,\n stringifySym,\n formatOptsSym,\n stringifiersSym,\n msgPrefixSym,\n hooksSym\n} = require('./symbols')\nconst {\n getLevel,\n setLevel,\n isLevelEnabled,\n mappings,\n initialLsCache,\n genLsCache,\n assertNoLevelCollisions\n} = require('./levels')\nconst {\n asChindings,\n asJson,\n buildFormatters,\n stringify,\n noop\n} = require('./tools')\nconst {\n version\n} = require('./meta')\nconst redaction = require('./redaction')\n\n// note: use of class is satirical\n// https://github.com/pinojs/pino/pull/433#pullrequestreview-127703127\nconst constructor = class Pino {}\nconst prototype = {\n constructor,\n child,\n bindings,\n setBindings,\n flush,\n isLevelEnabled,\n version,\n get level () { return this[getLevelSym]() },\n set level (lvl) { this[setLevelSym](lvl) },\n get levelVal () { return this[levelValSym] },\n set levelVal (n) { throw Error('levelVal is read-only') },\n get msgPrefix () { return this[msgPrefixSym] },\n get [Symbol.toStringTag] () { return 'Pino' },\n [lsCacheSym]: initialLsCache,\n [writeSym]: write,\n [asJsonSym]: asJson,\n [getLevelSym]: getLevel,\n [setLevelSym]: setLevel\n}\n\nObject.setPrototypeOf(prototype, EventEmitter.prototype)\n\n// exporting and consuming the prototype object using factory pattern fixes scoping issues with getters when serializing\nmodule.exports = function () {\n return Object.create(prototype)\n}\n\nconst resetChildingsFormatter = bindings => bindings\nfunction child (bindings, options) {\n if (!bindings) {\n throw Error('missing bindings for child Pino')\n }\n const serializers = this[serializersSym]\n const formatters = this[formattersSym]\n const instance = Object.create(this)\n\n // If an `options` object was not supplied, we can improve\n // the performance of child creation by skipping\n // the checks for set options and simply return\n // a baseline instance.\n if (options == null) {\n if (instance[formattersSym].bindings !== resetChildingsFormatter) {\n instance[formattersSym] = buildFormatters(\n formatters.level,\n resetChildingsFormatter,\n formatters.log\n )\n }\n\n instance[chindingsSym] = asChindings(instance, bindings)\n\n // Always call setLevel to ensure child gets own method references\n // This prevents issues when parent methods are wrapped (e.g., by Sinon)\n instance[setLevelSym](this.level)\n\n if (this.onChild !== noop) {\n this.onChild(instance)\n }\n\n return instance\n }\n\n if (options.hasOwnProperty('serializers') === true) {\n instance[serializersSym] = Object.create(null)\n\n for (const k in serializers) {\n instance[serializersSym][k] = serializers[k]\n }\n const parentSymbols = Object.getOwnPropertySymbols(serializers)\n /* eslint no-var: off */\n for (var i = 0; i < parentSymbols.length; i++) {\n const ks = parentSymbols[i]\n instance[serializersSym][ks] = serializers[ks]\n }\n\n for (const bk in options.serializers) {\n instance[serializersSym][bk] = options.serializers[bk]\n }\n const bindingsSymbols = Object.getOwnPropertySymbols(options.serializers)\n for (var bi = 0; bi < bindingsSymbols.length; bi++) {\n const bks = bindingsSymbols[bi]\n instance[serializersSym][bks] = options.serializers[bks]\n }\n } else instance[serializersSym] = serializers\n if (options.hasOwnProperty('formatters')) {\n const { level, bindings: chindings, log } = options.formatters\n instance[formattersSym] = buildFormatters(\n level || formatters.level,\n chindings || resetChildingsFormatter,\n log || formatters.log\n )\n } else {\n instance[formattersSym] = buildFormatters(\n formatters.level,\n resetChildingsFormatter,\n formatters.log\n )\n }\n if (options.hasOwnProperty('customLevels') === true) {\n assertNoLevelCollisions(this.levels, options.customLevels)\n instance.levels = mappings(options.customLevels, instance[useOnlyCustomLevelsSym])\n genLsCache(instance)\n }\n\n // redact must place before asChindings and only replace if exist\n if ((typeof options.redact === 'object' && options.redact !== null) || Array.isArray(options.redact)) {\n instance.redact = options.redact // replace redact directly\n const stringifiers = redaction(instance.redact, stringify)\n const formatOpts = { stringify: stringifiers[redactFmtSym] }\n instance[stringifySym] = stringify\n instance[stringifiersSym] = stringifiers\n instance[formatOptsSym] = formatOpts\n }\n\n if (typeof options.msgPrefix === 'string') {\n instance[msgPrefixSym] = (this[msgPrefixSym] || '') + options.msgPrefix\n }\n\n instance[chindingsSym] = asChindings(instance, bindings)\n const childLevel = options.level || this.level\n instance[setLevelSym](childLevel)\n this.onChild(instance)\n return instance\n}\n\nfunction bindings () {\n const chindings = this[chindingsSym]\n const chindingsJson = `{${chindings.substr(1)}}` // at least contains ,\"pid\":7068,\"hostname\":\"myMac\"\n const bindingsFromJson = JSON.parse(chindingsJson)\n delete bindingsFromJson.pid\n delete bindingsFromJson.hostname\n return bindingsFromJson\n}\n\nfunction setBindings (newBindings) {\n const chindings = asChindings(this, newBindings)\n this[chindingsSym] = chindings\n delete this[parsedChindingsSym]\n}\n\n/**\n * Default strategy for creating `mergeObject` from arguments and the result from `mixin()`.\n * Fields from `mergeObject` have higher priority in this strategy.\n *\n * @param {Object} mergeObject The object a user has supplied to the logging function.\n * @param {Object} mixinObject The result of the `mixin` method.\n * @return {Object}\n */\nfunction defaultMixinMergeStrategy (mergeObject, mixinObject) {\n return Object.assign(mixinObject, mergeObject)\n}\n\nfunction write (_obj, msg, num) {\n const t = this[timeSym]()\n const mixin = this[mixinSym]\n const errorKey = this[errorKeySym]\n const messageKey = this[messageKeySym]\n const mixinMergeStrategy = this[mixinMergeStrategySym] || defaultMixinMergeStrategy\n let obj\n const streamWriteHook = this[hooksSym].streamWrite\n\n if (_obj === undefined || _obj === null) {\n obj = {}\n } else if (_obj instanceof Error) {\n obj = { [errorKey]: _obj }\n if (msg === undefined) {\n msg = _obj.message\n }\n } else {\n obj = _obj\n if (msg === undefined && _obj[messageKey] === undefined && _obj[errorKey]) {\n msg = _obj[errorKey].message\n }\n }\n\n if (mixin) {\n obj = mixinMergeStrategy(obj, mixin(obj, num, this))\n }\n\n const s = this[asJsonSym](obj, msg, num, t)\n\n const stream = this[streamSym]\n if (stream[needsMetadataGsym] === true) {\n stream.lastLevel = num\n stream.lastObj = obj\n stream.lastMsg = msg\n stream.lastTime = t.slice(this[timeSliceIndexSym])\n stream.lastLogger = this // for child loggers\n }\n stream.write(streamWriteHook ? streamWriteHook(s) : s)\n}\n\nfunction flush (cb) {\n if (cb != null && typeof cb !== 'function') {\n throw Error('callback must be a function')\n }\n\n const stream = this[streamSym]\n\n if (typeof stream.flush === 'function') {\n stream.flush(cb || noop)\n } else if (cb) cb()\n}\n", "'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n // Some magic numbers that worked out fine while benchmarking with v8 8.0\n if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n return `\"${str}\"`\n }\n return JSON.stringify(str)\n}\n\nfunction sort (array, comparator) {\n // Insertion sort is very efficient for small input sizes, but it has a bad\n // worst case complexity. Thus, use native array sort for bigger values.\n if (array.length > 2e2 || comparator) {\n return array.sort(comparator)\n }\n for (let i = 1; i < array.length; i++) {\n const currentValue = array[i]\n let position = i\n while (position !== 0 && array[position - 1] > currentValue) {\n array[position] = array[position - 1]\n position--\n }\n array[position] = currentValue\n }\n return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(\n Object.getPrototypeOf(\n new Int8Array()\n )\n ),\n Symbol.toStringTag\n ).get\n\nfunction isTypedArrayWithEntries (value) {\n return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n if (array.length < maximumBreadth) {\n maximumBreadth = array.length\n }\n const whitespace = separator === ',' ? '' : ' '\n let res = `\"0\":${whitespace}${array[0]}`\n for (let i = 1; i < maximumBreadth; i++) {\n res += `${separator}\"${i}\":${whitespace}${array[i]}`\n }\n return res\n}\n\nfunction getCircularValueOption (options) {\n if (hasOwnProperty.call(options, 'circularValue')) {\n const circularValue = options.circularValue\n if (typeof circularValue === 'string') {\n return `\"${circularValue}\"`\n }\n if (circularValue == null) {\n return circularValue\n }\n if (circularValue === Error || circularValue === TypeError) {\n return {\n toString () {\n throw new TypeError('Converting circular structure to JSON')\n }\n }\n }\n throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n }\n return '\"[Circular]\"'\n}\n\nfunction getDeterministicOption (options) {\n let value\n if (hasOwnProperty.call(options, 'deterministic')) {\n value = options.deterministic\n if (typeof value !== 'boolean' && typeof value !== 'function') {\n throw new TypeError('The \"deterministic\" argument must be of type boolean or comparator function')\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getBooleanOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'boolean') {\n throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'number') {\n throw new TypeError(`The \"${key}\" argument must be of type number`)\n }\n if (!Number.isInteger(value)) {\n throw new TypeError(`The \"${key}\" argument must be an integer`)\n }\n if (value < 1) {\n throw new RangeError(`The \"${key}\" argument must be >= 1`)\n }\n }\n return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n if (number === 1) {\n return '1 item'\n }\n return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n const replacerSet = new Set()\n for (const value of replacerArray) {\n if (typeof value === 'string' || typeof value === 'number') {\n replacerSet.add(String(value))\n }\n }\n return replacerSet\n}\n\nfunction getStrictOption (options) {\n if (hasOwnProperty.call(options, 'strict')) {\n const value = options.strict\n if (typeof value !== 'boolean') {\n throw new TypeError('The \"strict\" argument must be of type boolean')\n }\n if (value) {\n return (value) => {\n let message = `Object can not safely be stringified. Received type ${typeof value}`\n if (typeof value !== 'function') message += ` (${value.toString()})`\n throw new Error(message)\n }\n }\n }\n}\n\nfunction configure (options) {\n options = { ...options }\n const fail = getStrictOption(options)\n if (fail) {\n if (options.bigint === undefined) {\n options.bigint = false\n }\n if (!('circularValue' in options)) {\n options.circularValue = Error\n }\n }\n const circularValue = getCircularValueOption(options)\n const bigint = getBooleanOption(options, 'bigint')\n const deterministic = getDeterministicOption(options)\n const comparator = typeof deterministic === 'function' ? deterministic : undefined\n const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n let value = parent[key]\n\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n value = replacer.call(parent, key, value)\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n let join = ','\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let whitespace = ''\n let separator = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (deterministic && !isTypedArrayWithEntries(value)) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n const originalIndentation = indentation\n let res = ''\n let join = ','\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n stack.push(value)\n let whitespace = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n let separator = ''\n for (const key of replacer) {\n const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyIndent (key, value, stack, spacer, indentation) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again.\n if (typeof value !== 'object') {\n return stringifyIndent(key, value, stack, spacer, indentation)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n indentation += spacer\n let res = `\\n${indentation}`\n const join = `,\\n${indentation}`\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n res += `\\n${originalIndentation}`\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n indentation += spacer\n const join = `,\\n${indentation}`\n let res = ''\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, join, maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = join\n }\n if (deterministic) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}: ${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (separator !== '') {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifySimple (key, value, stack) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again\n if (typeof value !== 'object') {\n return stringifySimple(key, value, stack)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n\n const hasLength = value.length !== undefined\n if (hasLength && Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n res += ','\n }\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (hasLength && isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, ',', maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = ','\n }\n if (deterministic) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifySimple(key, value[key], stack)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${tmp}`\n separator = ','\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringify (value, replacer, space) {\n if (arguments.length > 1) {\n let spacer = ''\n if (typeof space === 'number') {\n spacer = ' '.repeat(Math.min(space, 10))\n } else if (typeof space === 'string') {\n spacer = space.slice(0, 10)\n }\n if (replacer != null) {\n if (typeof replacer === 'function') {\n return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n }\n if (Array.isArray(replacer)) {\n return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n }\n }\n if (spacer.length !== 0) {\n return stringifyIndent('', value, [], spacer, '')\n }\n }\n return stringifySimple('', value, [])\n }\n\n return stringify\n}\n", "'use strict'\n\nconst metadata = Symbol.for('pino.metadata')\nconst { DEFAULT_LEVELS } = require('./constants')\n\nconst DEFAULT_INFO_LEVEL = DEFAULT_LEVELS.info\n\nfunction multistream (streamsArray, opts) {\n streamsArray = streamsArray || []\n opts = opts || { dedupe: false }\n\n const streamLevels = Object.create(DEFAULT_LEVELS)\n streamLevels.silent = Infinity\n if (opts.levels && typeof opts.levels === 'object') {\n Object.keys(opts.levels).forEach(i => {\n streamLevels[i] = opts.levels[i]\n })\n }\n\n const res = {\n write,\n add,\n remove,\n emit,\n flushSync,\n end,\n minLevel: 0,\n lastId: 0,\n streams: [],\n clone,\n [metadata]: true,\n streamLevels\n }\n\n if (Array.isArray(streamsArray)) {\n streamsArray.forEach(add, res)\n } else {\n add.call(res, streamsArray)\n }\n\n // clean this object up\n // or it will stay allocated forever\n // as it is closed on the following closures\n streamsArray = null\n\n return res\n\n // we can exit early because the streams are ordered by level\n function write (data) {\n let dest\n const level = this.lastLevel\n const { streams } = this\n // for handling situation when several streams has the same level\n let recordedLevel = 0\n let stream\n\n // if dedupe set to true we send logs to the stream with the highest level\n // therefore, we have to change sorting order\n for (let i = initLoopVar(streams.length, opts.dedupe); checkLoopVar(i, streams.length, opts.dedupe); i = adjustLoopVar(i, opts.dedupe)) {\n dest = streams[i]\n if (dest.level <= level) {\n if (recordedLevel !== 0 && recordedLevel !== dest.level) {\n break\n }\n stream = dest.stream\n if (stream[metadata]) {\n const { lastTime, lastMsg, lastObj, lastLogger } = this\n stream.lastLevel = level\n stream.lastTime = lastTime\n stream.lastMsg = lastMsg\n stream.lastObj = lastObj\n stream.lastLogger = lastLogger\n }\n stream.write(data)\n if (opts.dedupe) {\n recordedLevel = dest.level\n }\n } else if (!opts.dedupe) {\n break\n }\n }\n }\n\n function emit (...args) {\n for (const { stream } of this.streams) {\n if (typeof stream.emit === 'function') {\n stream.emit(...args)\n }\n }\n }\n\n function flushSync () {\n for (const { stream } of this.streams) {\n if (typeof stream.flushSync === 'function') {\n stream.flushSync()\n }\n }\n }\n\n function add (dest) {\n if (!dest) {\n return res\n }\n\n // Check that dest implements either StreamEntry or DestinationStream\n const isStream = typeof dest.write === 'function' || dest.stream\n const stream_ = dest.write ? dest : dest.stream\n // This is necessary to provide a meaningful error message, otherwise it throws somewhere inside write()\n if (!isStream) {\n throw Error('stream object needs to implement either StreamEntry or DestinationStream interface')\n }\n\n const { streams, streamLevels } = this\n\n let level\n if (typeof dest.levelVal === 'number') {\n level = dest.levelVal\n } else if (typeof dest.level === 'string') {\n level = streamLevels[dest.level]\n } else if (typeof dest.level === 'number') {\n level = dest.level\n } else {\n level = DEFAULT_INFO_LEVEL\n }\n\n const dest_ = {\n stream: stream_,\n level,\n levelVal: undefined,\n id: ++res.lastId\n }\n\n streams.unshift(dest_)\n streams.sort(compareByLevel)\n\n this.minLevel = streams[0].level\n\n return res\n }\n\n function remove (id) {\n const { streams } = this\n const index = streams.findIndex(s => s.id === id)\n\n if (index >= 0) {\n streams.splice(index, 1)\n streams.sort(compareByLevel)\n this.minLevel = streams.length > 0 ? streams[0].level : -1\n }\n\n return res\n }\n\n function end () {\n for (const { stream } of this.streams) {\n if (typeof stream.flushSync === 'function') {\n stream.flushSync()\n }\n stream.end()\n }\n }\n\n function clone (level) {\n const streams = new Array(this.streams.length)\n\n for (let i = 0; i < streams.length; i++) {\n streams[i] = {\n level,\n stream: this.streams[i].stream\n }\n }\n\n return {\n write,\n add,\n remove,\n minLevel: level,\n streams,\n clone,\n emit,\n flushSync,\n [metadata]: true\n }\n }\n}\n\nfunction compareByLevel (a, b) {\n return a.level - b.level\n}\n\nfunction initLoopVar (length, dedupe) {\n return dedupe ? length - 1 : 0\n}\n\nfunction adjustLoopVar (i, dedupe) {\n return dedupe ? i - 1 : i + 1\n}\n\nfunction checkLoopVar (i, length, dedupe) {\n return dedupe ? i >= 0 : i < length\n}\n\nmodule.exports = multistream\n", "'use strict'\n\nconst os = require('node:os')\nconst stdSerializers = require('pino-std-serializers')\nconst caller = require('./lib/caller')\nconst redaction = require('./lib/redaction')\nconst time = require('./lib/time')\nconst proto = require('./lib/proto')\nconst symbols = require('./lib/symbols')\nconst { configure } = require('safe-stable-stringify')\nconst { assertDefaultLevelFound, mappings, genLsCache, genLevelComparison, assertLevelComparison } = require('./lib/levels')\nconst { DEFAULT_LEVELS, SORTING_ORDER } = require('./lib/constants')\nconst {\n createArgsNormalizer,\n asChindings,\n buildSafeSonicBoom,\n buildFormatters,\n stringify,\n normalizeDestFileDescriptor,\n noop\n} = require('./lib/tools')\nconst { version } = require('./lib/meta')\nconst {\n chindingsSym,\n redactFmtSym,\n serializersSym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n stringifySym,\n stringifySafeSym,\n stringifiersSym,\n setLevelSym,\n endSym,\n formatOptsSym,\n messageKeySym,\n errorKeySym,\n nestedKeySym,\n mixinSym,\n levelCompSym,\n useOnlyCustomLevelsSym,\n formattersSym,\n hooksSym,\n nestedKeyStrSym,\n mixinMergeStrategySym,\n msgPrefixSym\n} = symbols\nconst { epochTime, nullTime } = time\nconst { pid } = process\nconst hostname = os.hostname()\nconst defaultErrorSerializer = stdSerializers.err\nconst defaultOptions = {\n level: 'info',\n levelComparison: SORTING_ORDER.ASC,\n levels: DEFAULT_LEVELS,\n messageKey: 'msg',\n errorKey: 'err',\n nestedKey: null,\n enabled: true,\n base: { pid, hostname },\n serializers: Object.assign(Object.create(null), {\n err: defaultErrorSerializer\n }),\n formatters: Object.assign(Object.create(null), {\n bindings (bindings) {\n return bindings\n },\n level (label, number) {\n return { level: number }\n }\n }),\n hooks: {\n logMethod: undefined,\n streamWrite: undefined\n },\n timestamp: epochTime,\n name: undefined,\n redact: null,\n customLevels: null,\n useOnlyCustomLevels: false,\n depthLimit: 5,\n edgeLimit: 100\n}\n\nconst normalize = createArgsNormalizer(defaultOptions)\n\nconst serializers = Object.assign(Object.create(null), stdSerializers)\n\nfunction pino (...args) {\n const instance = {}\n const { opts, stream } = normalize(instance, caller(), ...args)\n\n if (opts.level && typeof opts.level === 'string' && DEFAULT_LEVELS[opts.level.toLowerCase()] !== undefined) opts.level = opts.level.toLowerCase()\n\n const {\n redact,\n crlf,\n serializers,\n timestamp,\n messageKey,\n errorKey,\n nestedKey,\n base,\n name,\n level,\n customLevels,\n levelComparison,\n mixin,\n mixinMergeStrategy,\n useOnlyCustomLevels,\n formatters,\n hooks,\n depthLimit,\n edgeLimit,\n onChild,\n msgPrefix\n } = opts\n\n const stringifySafe = configure({\n maximumDepth: depthLimit,\n maximumBreadth: edgeLimit\n })\n\n const allFormatters = buildFormatters(\n formatters.level,\n formatters.bindings,\n formatters.log\n )\n\n const stringifyFn = stringify.bind({\n [stringifySafeSym]: stringifySafe\n })\n const stringifiers = redact ? redaction(redact, stringifyFn) : {}\n const formatOpts = redact\n ? { stringify: stringifiers[redactFmtSym] }\n : { stringify: stringifyFn }\n const end = '}' + (crlf ? '\\r\\n' : '\\n')\n const coreChindings = asChindings.bind(null, {\n [chindingsSym]: '',\n [serializersSym]: serializers,\n [stringifiersSym]: stringifiers,\n [stringifySym]: stringify,\n [stringifySafeSym]: stringifySafe,\n [formattersSym]: allFormatters\n })\n\n let chindings = ''\n if (base !== null) {\n if (name === undefined) {\n chindings = coreChindings(base)\n } else {\n chindings = coreChindings(Object.assign({}, base, { name }))\n }\n }\n\n const time = (timestamp instanceof Function)\n ? timestamp\n : (timestamp ? epochTime : nullTime)\n const timeSliceIndex = time().indexOf(':') + 1\n\n if (useOnlyCustomLevels && !customLevels) throw Error('customLevels is required if useOnlyCustomLevels is set true')\n if (mixin && typeof mixin !== 'function') throw Error(`Unknown mixin type \"${typeof mixin}\" - expected \"function\"`)\n if (msgPrefix && typeof msgPrefix !== 'string') throw Error(`Unknown msgPrefix type \"${typeof msgPrefix}\" - expected \"string\"`)\n\n assertDefaultLevelFound(level, customLevels, useOnlyCustomLevels)\n const levels = mappings(customLevels, useOnlyCustomLevels)\n\n if (typeof stream.emit === 'function') {\n stream.emit('message', { code: 'PINO_CONFIG', config: { levels, messageKey, errorKey } })\n }\n\n assertLevelComparison(levelComparison)\n const levelCompFunc = genLevelComparison(levelComparison)\n\n Object.assign(instance, {\n levels,\n [levelCompSym]: levelCompFunc,\n [useOnlyCustomLevelsSym]: useOnlyCustomLevels,\n [streamSym]: stream,\n [timeSym]: time,\n [timeSliceIndexSym]: timeSliceIndex,\n [stringifySym]: stringify,\n [stringifySafeSym]: stringifySafe,\n [stringifiersSym]: stringifiers,\n [endSym]: end,\n [formatOptsSym]: formatOpts,\n [messageKeySym]: messageKey,\n [errorKeySym]: errorKey,\n [nestedKeySym]: nestedKey,\n // protect against injection\n [nestedKeyStrSym]: nestedKey ? `,${JSON.stringify(nestedKey)}:{` : '',\n [serializersSym]: serializers,\n [mixinSym]: mixin,\n [mixinMergeStrategySym]: mixinMergeStrategy,\n [chindingsSym]: chindings,\n [formattersSym]: allFormatters,\n [hooksSym]: hooks,\n silent: noop,\n onChild,\n [msgPrefixSym]: msgPrefix\n })\n\n Object.setPrototypeOf(instance, proto())\n\n genLsCache(instance)\n\n instance[setLevelSym](level)\n\n return instance\n}\n\nmodule.exports = pino\n\nmodule.exports.destination = (dest = process.stdout.fd) => {\n if (typeof dest === 'object') {\n dest.dest = normalizeDestFileDescriptor(dest.dest || process.stdout.fd)\n return buildSafeSonicBoom(dest)\n } else {\n return buildSafeSonicBoom({ dest: normalizeDestFileDescriptor(dest), minLength: 0 })\n }\n}\n\nmodule.exports.transport = require('./lib/transport')\nmodule.exports.multistream = require('./lib/multistream')\n\nmodule.exports.levels = mappings()\nmodule.exports.stdSerializers = serializers\nmodule.exports.stdTimeFunctions = Object.assign({}, time)\nmodule.exports.symbols = symbols\nmodule.exports.version = version\n\n// Enables default and name export with TypeScript and Babel\nmodule.exports.default = pino\nmodule.exports.pino = pino\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar tty = require('tty');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar tty__namespace = /*#__PURE__*/_interopNamespace(tty);\n\nconst {\n env = {},\n argv = [],\n platform = \"\",\n} = typeof process === \"undefined\" ? {} : process;\n\nconst isDisabled = \"NO_COLOR\" in env || argv.includes(\"--no-color\");\nconst isForced = \"FORCE_COLOR\" in env || argv.includes(\"--color\");\nconst isWindows = platform === \"win32\";\nconst isDumbTerminal = env.TERM === \"dumb\";\n\nconst isCompatibleTerminal =\n tty__namespace && tty__namespace.isatty && tty__namespace.isatty(1) && env.TERM && !isDumbTerminal;\n\nconst isCI =\n \"CI\" in env &&\n (\"GITHUB_ACTIONS\" in env || \"GITLAB_CI\" in env || \"CIRCLECI\" in env);\n\nconst isColorSupported =\n !isDisabled &&\n (isForced || (isWindows && !isDumbTerminal) || isCompatibleTerminal || isCI);\n\nconst replaceClose = (\n index,\n string,\n close,\n replace,\n head = string.substring(0, index) + replace,\n tail = string.substring(index + close.length),\n next = tail.indexOf(close)\n) => head + (next < 0 ? tail : replaceClose(next, tail, close, replace));\n\nconst clearBleed = (index, string, open, close, replace) =>\n index < 0\n ? open + string + close\n : open + replaceClose(index, string, close, replace) + close;\n\nconst filterEmpty =\n (open, close, replace = open, at = open.length + 1) =>\n (string) =>\n string || !(string === \"\" || string === undefined)\n ? clearBleed(\n (\"\" + string).indexOf(close, at),\n string,\n open,\n close,\n replace\n )\n : \"\";\n\nconst init = (open, close, replace) =>\n filterEmpty(`\\x1b[${open}m`, `\\x1b[${close}m`, replace);\n\nconst colors = {\n reset: init(0, 0),\n bold: init(1, 22, \"\\x1b[22m\\x1b[1m\"),\n dim: init(2, 22, \"\\x1b[22m\\x1b[2m\"),\n italic: init(3, 23),\n underline: init(4, 24),\n inverse: init(7, 27),\n hidden: init(8, 28),\n strikethrough: init(9, 29),\n black: init(30, 39),\n red: init(31, 39),\n green: init(32, 39),\n yellow: init(33, 39),\n blue: init(34, 39),\n magenta: init(35, 39),\n cyan: init(36, 39),\n white: init(37, 39),\n gray: init(90, 39),\n bgBlack: init(40, 49),\n bgRed: init(41, 49),\n bgGreen: init(42, 49),\n bgYellow: init(43, 49),\n bgBlue: init(44, 49),\n bgMagenta: init(45, 49),\n bgCyan: init(46, 49),\n bgWhite: init(47, 49),\n blackBright: init(90, 39),\n redBright: init(91, 39),\n greenBright: init(92, 39),\n yellowBright: init(93, 39),\n blueBright: init(94, 39),\n magentaBright: init(95, 39),\n cyanBright: init(96, 39),\n whiteBright: init(97, 39),\n bgBlackBright: init(100, 49),\n bgRedBright: init(101, 49),\n bgGreenBright: init(102, 49),\n bgYellowBright: init(103, 49),\n bgBlueBright: init(104, 49),\n bgMagentaBright: init(105, 49),\n bgCyanBright: init(106, 49),\n bgWhiteBright: init(107, 49),\n};\n\nconst createColors = ({ useColor = isColorSupported } = {}) =>\n useColor\n ? colors\n : Object.keys(colors).reduce(\n (colors, key) => ({ ...colors, [key]: String }),\n {}\n );\n\nconst {\n reset,\n bold,\n dim,\n italic,\n underline,\n inverse,\n hidden,\n strikethrough,\n black,\n red,\n green,\n yellow,\n blue,\n magenta,\n cyan,\n white,\n gray,\n bgBlack,\n bgRed,\n bgGreen,\n bgYellow,\n bgBlue,\n bgMagenta,\n bgCyan,\n bgWhite,\n blackBright,\n redBright,\n greenBright,\n yellowBright,\n blueBright,\n magentaBright,\n cyanBright,\n whiteBright,\n bgBlackBright,\n bgRedBright,\n bgGreenBright,\n bgYellowBright,\n bgBlueBright,\n bgMagentaBright,\n bgCyanBright,\n bgWhiteBright,\n} = createColors();\n\nexports.bgBlack = bgBlack;\nexports.bgBlackBright = bgBlackBright;\nexports.bgBlue = bgBlue;\nexports.bgBlueBright = bgBlueBright;\nexports.bgCyan = bgCyan;\nexports.bgCyanBright = bgCyanBright;\nexports.bgGreen = bgGreen;\nexports.bgGreenBright = bgGreenBright;\nexports.bgMagenta = bgMagenta;\nexports.bgMagentaBright = bgMagentaBright;\nexports.bgRed = bgRed;\nexports.bgRedBright = bgRedBright;\nexports.bgWhite = bgWhite;\nexports.bgWhiteBright = bgWhiteBright;\nexports.bgYellow = bgYellow;\nexports.bgYellowBright = bgYellowBright;\nexports.black = black;\nexports.blackBright = blackBright;\nexports.blue = blue;\nexports.blueBright = blueBright;\nexports.bold = bold;\nexports.createColors = createColors;\nexports.cyan = cyan;\nexports.cyanBright = cyanBright;\nexports.dim = dim;\nexports.gray = gray;\nexports.green = green;\nexports.greenBright = greenBright;\nexports.hidden = hidden;\nexports.inverse = inverse;\nexports.isColorSupported = isColorSupported;\nexports.italic = italic;\nexports.magenta = magenta;\nexports.magentaBright = magentaBright;\nexports.red = red;\nexports.redBright = redBright;\nexports.reset = reset;\nexports.strikethrough = strikethrough;\nexports.underline = underline;\nexports.white = white;\nexports.whiteBright = whiteBright;\nexports.yellow = yellow;\nexports.yellowBright = yellowBright;\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n", "var once = require('once');\n\nvar noop = function() {};\n\nvar qnt = global.Bare ? queueMicrotask : process.nextTick.bind(process);\n\nvar isRequest = function(stream) {\n\treturn stream.setHeader && typeof stream.abort === 'function';\n};\n\nvar isChildProcess = function(stream) {\n\treturn stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3\n};\n\nvar eos = function(stream, opts, callback) {\n\tif (typeof opts === 'function') return eos(stream, null, opts);\n\tif (!opts) opts = {};\n\n\tcallback = once(callback || noop);\n\n\tvar ws = stream._writableState;\n\tvar rs = stream._readableState;\n\tvar readable = opts.readable || (opts.readable !== false && stream.readable);\n\tvar writable = opts.writable || (opts.writable !== false && stream.writable);\n\tvar cancelled = false;\n\n\tvar onlegacyfinish = function() {\n\t\tif (!stream.writable) onfinish();\n\t};\n\n\tvar onfinish = function() {\n\t\twritable = false;\n\t\tif (!readable) callback.call(stream);\n\t};\n\n\tvar onend = function() {\n\t\treadable = false;\n\t\tif (!writable) callback.call(stream);\n\t};\n\n\tvar onexit = function(exitCode) {\n\t\tcallback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);\n\t};\n\n\tvar onerror = function(err) {\n\t\tcallback.call(stream, err);\n\t};\n\n\tvar onclose = function() {\n\t\tqnt(onclosenexttick);\n\t};\n\n\tvar onclosenexttick = function() {\n\t\tif (cancelled) return;\n\t\tif (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close'));\n\t\tif (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close'));\n\t};\n\n\tvar onrequest = function() {\n\t\tstream.req.on('finish', onfinish);\n\t};\n\n\tif (isRequest(stream)) {\n\t\tstream.on('complete', onfinish);\n\t\tstream.on('abort', onclose);\n\t\tif (stream.req) onrequest();\n\t\telse stream.on('request', onrequest);\n\t} else if (writable && !ws) { // legacy streams\n\t\tstream.on('end', onlegacyfinish);\n\t\tstream.on('close', onlegacyfinish);\n\t}\n\n\tif (isChildProcess(stream)) stream.on('exit', onexit);\n\n\tstream.on('end', onend);\n\tstream.on('finish', onfinish);\n\tif (opts.error !== false) stream.on('error', onerror);\n\tstream.on('close', onclose);\n\n\treturn function() {\n\t\tcancelled = true;\n\t\tstream.removeListener('complete', onfinish);\n\t\tstream.removeListener('abort', onclose);\n\t\tstream.removeListener('request', onrequest);\n\t\tif (stream.req) stream.req.removeListener('finish', onfinish);\n\t\tstream.removeListener('end', onlegacyfinish);\n\t\tstream.removeListener('close', onlegacyfinish);\n\t\tstream.removeListener('finish', onfinish);\n\t\tstream.removeListener('exit', onexit);\n\t\tstream.removeListener('end', onend);\n\t\tstream.removeListener('error', onerror);\n\t\tstream.removeListener('close', onclose);\n\t};\n};\n\nmodule.exports = eos;\n", "var once = require('once')\nvar eos = require('end-of-stream')\nvar fs\n\ntry {\n fs = require('fs') // we only need fs to get the ReadStream and WriteStream prototypes\n} catch (e) {}\n\nvar noop = function () {}\nvar ancient = typeof process === 'undefined' ? false : /^v?\\.0/.test(process.version)\n\nvar isFn = function (fn) {\n return typeof fn === 'function'\n}\n\nvar isFS = function (stream) {\n if (!ancient) return false // newer node version do not need to care about fs is a special way\n if (!fs) return false // browser\n return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)\n}\n\nvar isRequest = function (stream) {\n return stream.setHeader && isFn(stream.abort)\n}\n\nvar destroyer = function (stream, reading, writing, callback) {\n callback = once(callback)\n\n var closed = false\n stream.on('close', function () {\n closed = true\n })\n\n eos(stream, {readable: reading, writable: writing}, function (err) {\n if (err) return callback(err)\n closed = true\n callback()\n })\n\n var destroyed = false\n return function (err) {\n if (closed) return\n if (destroyed) return\n destroyed = true\n\n if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks\n if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want\n\n if (isFn(stream.destroy)) return stream.destroy()\n\n callback(err || new Error('stream was destroyed'))\n }\n}\n\nvar call = function (fn) {\n fn()\n}\n\nvar pipe = function (from, to) {\n return from.pipe(to)\n}\n\nvar pump = function () {\n var streams = Array.prototype.slice.call(arguments)\n var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop\n\n if (Array.isArray(streams[0])) streams = streams[0]\n if (streams.length < 2) throw new Error('pump requires two streams per minimum')\n\n var error\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1\n var writing = i > 0\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err\n if (err) destroys.forEach(call)\n if (reading) return\n destroys.forEach(call)\n callback(error)\n })\n })\n\n return streams.reduce(pipe)\n}\n\nmodule.exports = pump\n", "/*\nCopyright (c) 2014-2021, Matteo Collina <hello@matteocollina.com>\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n*/\n\n'use strict'\n\nconst { Transform } = require('stream')\nconst { StringDecoder } = require('string_decoder')\nconst kLast = Symbol('last')\nconst kDecoder = Symbol('decoder')\n\nfunction transform (chunk, enc, cb) {\n let list\n if (this.overflow) { // Line buffer is full. Skip to start of next line.\n const buf = this[kDecoder].write(chunk)\n list = buf.split(this.matcher)\n\n if (list.length === 1) return cb() // Line ending not found. Discard entire chunk.\n\n // Line ending found. Discard trailing fragment of previous line and reset overflow state.\n list.shift()\n this.overflow = false\n } else {\n this[kLast] += this[kDecoder].write(chunk)\n list = this[kLast].split(this.matcher)\n }\n\n this[kLast] = list.pop()\n\n for (let i = 0; i < list.length; i++) {\n try {\n push(this, this.mapper(list[i]))\n } catch (error) {\n return cb(error)\n }\n }\n\n this.overflow = this[kLast].length > this.maxLength\n if (this.overflow && !this.skipOverflow) {\n cb(new Error('maximum buffer reached'))\n return\n }\n\n cb()\n}\n\nfunction flush (cb) {\n // forward any gibberish left in there\n this[kLast] += this[kDecoder].end()\n\n if (this[kLast]) {\n try {\n push(this, this.mapper(this[kLast]))\n } catch (error) {\n return cb(error)\n }\n }\n\n cb()\n}\n\nfunction push (self, val) {\n if (val !== undefined) {\n self.push(val)\n }\n}\n\nfunction noop (incoming) {\n return incoming\n}\n\nfunction split (matcher, mapper, options) {\n // Set defaults for any arguments not supplied.\n matcher = matcher || /\\r?\\n/\n mapper = mapper || noop\n options = options || {}\n\n // Test arguments explicitly.\n switch (arguments.length) {\n case 1:\n // If mapper is only argument.\n if (typeof matcher === 'function') {\n mapper = matcher\n matcher = /\\r?\\n/\n // If options is only argument.\n } else if (typeof matcher === 'object' && !(matcher instanceof RegExp) && !matcher[Symbol.split]) {\n options = matcher\n matcher = /\\r?\\n/\n }\n break\n\n case 2:\n // If mapper and options are arguments.\n if (typeof matcher === 'function') {\n options = mapper\n mapper = matcher\n matcher = /\\r?\\n/\n // If matcher and options are arguments.\n } else if (typeof mapper === 'object') {\n options = mapper\n mapper = noop\n }\n }\n\n options = Object.assign({}, options)\n options.autoDestroy = true\n options.transform = transform\n options.flush = flush\n options.readableObjectMode = true\n\n const stream = new Transform(options)\n\n stream[kLast] = ''\n stream[kDecoder] = new StringDecoder('utf8')\n stream.matcher = matcher\n stream.mapper = mapper\n stream.maxLength = options.maxLength\n stream.skipOverflow = options.skipOverflow || false\n stream.overflow = false\n stream._destroy = function (err, cb) {\n // Weird Node v12 bug that we need to work around\n this._writableState.errorEmitted = false\n cb(err)\n }\n\n return stream\n}\n\nmodule.exports = split\n", "'use strict'\n\nconst metadata = Symbol.for('pino.metadata')\nconst split = require('split2')\nconst { Duplex } = require('stream')\nconst { parentPort, workerData } = require('worker_threads')\n\nfunction createDeferred () {\n let resolve\n let reject\n const promise = new Promise((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n })\n promise.resolve = resolve\n promise.reject = reject\n return promise\n}\n\nmodule.exports = function build (fn, opts = {}) {\n const waitForConfig = opts.expectPinoConfig === true && workerData?.workerData?.pinoWillSendConfig === true\n const parseLines = opts.parse === 'lines'\n const parseLine = typeof opts.parseLine === 'function' ? opts.parseLine : JSON.parse\n const close = opts.close || defaultClose\n const stream = split(function (line) {\n let value\n\n try {\n value = parseLine(line)\n } catch (error) {\n this.emit('unknown', line, error)\n return\n }\n\n if (value === null) {\n this.emit('unknown', line, 'Null value ignored')\n return\n }\n\n if (typeof value !== 'object') {\n value = {\n data: value,\n time: Date.now()\n }\n }\n\n if (stream[metadata]) {\n stream.lastTime = value.time\n stream.lastLevel = value.level\n stream.lastObj = value\n }\n\n if (parseLines) {\n return line\n }\n\n return value\n }, { autoDestroy: true })\n\n stream._destroy = function (err, cb) {\n const promise = close(err, cb)\n if (promise && typeof promise.then === 'function') {\n promise.then(cb, cb)\n }\n }\n\n if (opts.expectPinoConfig === true && workerData?.workerData?.pinoWillSendConfig !== true) {\n setImmediate(() => {\n stream.emit('error', new Error('This transport is not compatible with the current version of pino. Please upgrade pino to the latest version.'))\n })\n }\n\n if (opts.metadata !== false) {\n stream[metadata] = true\n stream.lastTime = 0\n stream.lastLevel = 0\n stream.lastObj = null\n }\n\n if (waitForConfig) {\n let pinoConfig = {}\n const configReceived = createDeferred()\n parentPort.on('message', function handleMessage (message) {\n if (message.code === 'PINO_CONFIG') {\n pinoConfig = message.config\n configReceived.resolve()\n parentPort.off('message', handleMessage)\n }\n })\n\n Object.defineProperties(stream, {\n levels: {\n get () { return pinoConfig.levels }\n },\n messageKey: {\n get () { return pinoConfig.messageKey }\n },\n errorKey: {\n get () { return pinoConfig.errorKey }\n }\n })\n\n return configReceived.then(finish)\n }\n\n return finish()\n\n function finish () {\n let res = fn(stream)\n\n if (res && typeof res.catch === 'function') {\n res.catch((err) => {\n stream.destroy(err)\n })\n\n // set it to null to not retain a reference to the promise\n res = null\n } else if (opts.enablePipelining && res) {\n return Duplex.from({ writable: stream, readable: res })\n }\n\n return stream\n }\n}\n\nfunction defaultClose (err, cb) {\n process.nextTick(cb, err)\n}\n", "'use strict'\n\n/**\n * A set of property names that indicate the value represents an error object.\n *\n * @typedef {string[]} K_ERROR_LIKE_KEYS\n */\n\nmodule.exports = {\n DATE_FORMAT: 'yyyy-mm-dd HH:MM:ss.l o',\n DATE_FORMAT_SIMPLE: 'HH:MM:ss.l',\n\n /**\n * @type {K_ERROR_LIKE_KEYS}\n */\n ERROR_LIKE_KEYS: ['err', 'error'],\n\n MESSAGE_KEY: 'msg',\n\n LEVEL_KEY: 'level',\n\n LEVEL_LABEL: 'levelLabel',\n\n TIMESTAMP_KEY: 'time',\n\n LEVELS: {\n default: 'USERLVL',\n 60: 'FATAL',\n 50: 'ERROR',\n 40: 'WARN',\n 30: 'INFO',\n 20: 'DEBUG',\n 10: 'TRACE'\n },\n\n LEVEL_NAMES: {\n fatal: 60,\n error: 50,\n warn: 40,\n info: 30,\n debug: 20,\n trace: 10\n },\n\n // Object keys that probably came from a logger like Pino or Bunyan.\n LOGGER_KEYS: [\n 'pid',\n 'hostname',\n 'name',\n 'level',\n 'time',\n 'timestamp',\n 'caller'\n ]\n}\n", "'use strict'\n\nmodule.exports = getLevelLabelData\nconst { LEVELS, LEVEL_NAMES } = require('../constants')\n\n/**\n * Given initial settings for custom levels/names and use of only custom props\n * get the level label that corresponds with a given level number\n *\n * @param {boolean} useOnlyCustomProps\n * @param {object} customLevels\n * @param {object} customLevelNames\n *\n * @returns {function} A function that takes a number level and returns the level's label string\n */\nfunction getLevelLabelData (useOnlyCustomProps, customLevels, customLevelNames) {\n const levels = useOnlyCustomProps ? customLevels || LEVELS : Object.assign({}, LEVELS, customLevels)\n const levelNames = useOnlyCustomProps ? customLevelNames || LEVEL_NAMES : Object.assign({}, LEVEL_NAMES, customLevelNames)\n return function (level) {\n let levelNum = 'default'\n if (Number.isInteger(+level)) {\n levelNum = Object.prototype.hasOwnProperty.call(levels, level) ? level : levelNum\n } else {\n levelNum = Object.prototype.hasOwnProperty.call(levelNames, level.toLowerCase()) ? levelNames[level.toLowerCase()] : levelNum\n }\n\n return [levels[levelNum], levelNum]\n }\n}\n", "'use strict'\n\nconst nocolor = input => input\nconst plain = {\n default: nocolor,\n 60: nocolor,\n 50: nocolor,\n 40: nocolor,\n 30: nocolor,\n 20: nocolor,\n 10: nocolor,\n message: nocolor,\n greyMessage: nocolor,\n property: nocolor\n}\n\nconst { createColors } = require('colorette')\nconst getLevelLabelData = require('./utils/get-level-label-data')\nconst availableColors = createColors({ useColor: true })\nconst { white, bgRed, red, yellow, green, blue, gray, cyan, magenta } = availableColors\n\nconst colored = {\n default: white,\n 60: bgRed,\n 50: red,\n 40: yellow,\n 30: green,\n 20: blue,\n 10: gray,\n message: cyan,\n greyMessage: gray,\n property: magenta\n}\n\nfunction resolveCustomColoredColorizer (customColors) {\n return customColors.reduce(\n function (agg, [level, color]) {\n agg[level] = typeof availableColors[color] === 'function' ? availableColors[color] : white\n\n return agg\n },\n { default: white, message: cyan, greyMessage: gray, property: magenta }\n )\n}\n\nfunction colorizeLevel (useOnlyCustomProps) {\n return function (level, colorizer, { customLevels, customLevelNames } = {}) {\n const [levelStr, levelNum] = getLevelLabelData(useOnlyCustomProps, customLevels, customLevelNames)(level)\n\n return Object.prototype.hasOwnProperty.call(colorizer, levelNum) ? colorizer[levelNum](levelStr) : colorizer.default(levelStr)\n }\n}\n\nfunction plainColorizer (useOnlyCustomProps) {\n const newPlainColorizer = colorizeLevel(useOnlyCustomProps)\n const customColoredColorizer = function (level, opts) {\n return newPlainColorizer(level, plain, opts)\n }\n customColoredColorizer.message = plain.message\n customColoredColorizer.greyMessage = plain.greyMessage\n customColoredColorizer.property = plain.property\n customColoredColorizer.colors = createColors({ useColor: false })\n return customColoredColorizer\n}\n\nfunction coloredColorizer (useOnlyCustomProps) {\n const newColoredColorizer = colorizeLevel(useOnlyCustomProps)\n const customColoredColorizer = function (level, opts) {\n return newColoredColorizer(level, colored, opts)\n }\n customColoredColorizer.message = colored.message\n customColoredColorizer.property = colored.property\n customColoredColorizer.greyMessage = colored.greyMessage\n customColoredColorizer.colors = availableColors\n return customColoredColorizer\n}\n\nfunction customColoredColorizerFactory (customColors, useOnlyCustomProps) {\n const onlyCustomColored = resolveCustomColoredColorizer(customColors)\n const customColored = useOnlyCustomProps ? onlyCustomColored : Object.assign({}, colored, onlyCustomColored)\n const colorizeLevelCustom = colorizeLevel(useOnlyCustomProps)\n\n const customColoredColorizer = function (level, opts) {\n return colorizeLevelCustom(level, customColored, opts)\n }\n customColoredColorizer.colors = availableColors\n customColoredColorizer.message = customColoredColorizer.message || customColored.message\n customColoredColorizer.property = customColoredColorizer.property || customColored.property\n customColoredColorizer.greyMessage = customColoredColorizer.greyMessage || customColored.greyMessage\n\n return customColoredColorizer\n}\n\n/**\n * Applies colorization, if possible, to a string representing the passed in\n * `level`. For example, the default colorizer will return a \"green\" colored\n * string for the \"info\" level.\n *\n * @typedef {function} ColorizerFunc\n * @param {string|number} level In either case, the input will map to a color\n * for the specified level or to the color for `USERLVL` if the level is not\n * recognized.\n * @property {function} message Accepts one string parameter that will be\n * colorized to a predefined color.\n * @property {Colorette.Colorette} colors Available color functions based on `useColor` (or `colorize`) context\n */\n\n/**\n * Factory function get a function to colorized levels. The returned function\n * also includes a `.message(str)` method to colorize strings.\n *\n * @param {boolean} [useColors=false] When `true` a function that applies standard\n * terminal colors is returned.\n * @param {array[]} [customColors] Tuple where first item of each array is the\n * level index and the second item is the color\n * @param {boolean} [useOnlyCustomProps] When `true`, only use the provided\n * custom colors provided and not fallback to default\n *\n * @returns {ColorizerFunc} `function (level) {}` has a `.message(str)` method to\n * apply colorization to a string. The core function accepts either an integer\n * `level` or a `string` level. The integer level will map to a known level\n * string or to `USERLVL` if not known. The string `level` will map to the same\n * colors as the integer `level` and will also default to `USERLVL` if the given\n * string is not a recognized level name.\n */\nmodule.exports = function getColorizer (useColors = false, customColors, useOnlyCustomProps) {\n if (useColors && customColors !== undefined) {\n return customColoredColorizerFactory(customColors, useOnlyCustomProps)\n } else if (useColors) {\n return coloredColorizer(useOnlyCustomProps)\n }\n\n return plainColorizer(useOnlyCustomProps)\n}\n", "'use strict'\n\nmodule.exports = function noop () {}\n", "'use strict'\n\nmodule.exports = buildSafeSonicBoom\n\nconst { isMainThread } = require('node:worker_threads')\nconst SonicBoom = require('sonic-boom')\nconst noop = require('./noop')\n\n/**\n * Creates a safe SonicBoom instance\n *\n * @param {object} opts Options for SonicBoom\n *\n * @returns {object} A new SonicBoom stream\n */\nfunction buildSafeSonicBoom (opts) {\n const stream = new SonicBoom(opts)\n stream.on('error', filterBrokenPipe)\n // if we are sync: false, we must flush on exit\n if (!opts.sync && isMainThread) {\n setupOnExit(stream)\n }\n return stream\n\n function filterBrokenPipe (err) {\n if (err.code === 'EPIPE') {\n stream.write = noop\n stream.end = noop\n stream.flushSync = noop\n stream.destroy = noop\n return\n }\n stream.removeListener('error', filterBrokenPipe)\n }\n}\n\nfunction setupOnExit (stream) {\n /* istanbul ignore next */\n if (global.WeakRef && global.WeakMap && global.FinalizationRegistry) {\n // This is leak free, it does not leave event handlers\n const onExit = require('on-exit-leak-free')\n\n onExit.register(stream, autoEnd)\n\n stream.on('close', function () {\n onExit.unregister(stream)\n })\n }\n}\n\n/* istanbul ignore next */\nfunction autoEnd (stream, eventName) {\n // This check is needed only on some platforms\n\n if (stream.destroyed) {\n return\n }\n\n if (eventName === 'beforeExit') {\n // We still have an event loop, let's use it\n stream.flush()\n stream.on('drain', function () {\n stream.end()\n })\n } else {\n // We do not have an event loop, so flush synchronously\n stream.flushSync()\n }\n}\n", "'use strict'\n\nmodule.exports = isValidDate\n\n/**\n * Checks if the argument is a JS Date and not 'Invalid Date'.\n *\n * @param {Date} date The date to check.\n *\n * @returns {boolean} true if the argument is a JS Date and not 'Invalid Date'.\n */\nfunction isValidDate (date) {\n return date instanceof Date && !Number.isNaN(date.getTime())\n}\n", "'use strict'\n\nmodule.exports = createDate\n\nconst isValidDate = require('./is-valid-date')\n\n/**\n * Constructs a JS Date from a number or string. Accepts any single number\n * or single string argument that is valid for the Date() constructor,\n * or an epoch as a string.\n *\n * @param {string|number} epoch The representation of the Date.\n *\n * @returns {Date} The constructed Date.\n */\nfunction createDate (epoch) {\n // If epoch is already a valid argument, return the valid Date\n let date = new Date(epoch)\n if (isValidDate(date)) {\n return date\n }\n\n // Convert to a number to permit epoch as a string\n date = new Date(+epoch)\n return date\n}\n", "'use strict'\n\nmodule.exports = splitPropertyKey\n\n/**\n * Splits the property key delimited by a dot character but not when it is preceded\n * by a backslash.\n *\n * @param {string} key A string identifying the property.\n *\n * @returns {string[]} Returns a list of string containing each delimited property.\n * e.g. `'prop2\\.domain\\.corp.prop2'` should return [ 'prop2.domain.com', 'prop2' ]\n */\nfunction splitPropertyKey (key) {\n const result = []\n let backslash = false\n let segment = ''\n\n for (let i = 0; i < key.length; i++) {\n const c = key.charAt(i)\n\n if (c === '\\\\') {\n backslash = true\n continue\n }\n\n if (backslash) {\n backslash = false\n segment += c\n continue\n }\n\n /* Non-escaped dot, push to result */\n if (c === '.') {\n result.push(segment)\n segment = ''\n continue\n }\n\n segment += c\n }\n\n /* Push last entry to result */\n if (segment.length) {\n result.push(segment)\n }\n\n return result\n}\n", "'use strict'\n\nmodule.exports = getPropertyValue\n\nconst splitPropertyKey = require('./split-property-key')\n\n/**\n * Gets a specified property from an object if it exists.\n *\n * @param {object} obj The object to be searched.\n * @param {string|string[]} property A string, or an array of strings, identifying\n * the property to be retrieved from the object.\n * Accepts nested properties delimited by a `.`.\n * Delimiter can be escaped to preserve property names that contain the delimiter.\n * e.g. `'prop1.prop2'` or `'prop2\\.domain\\.corp.prop2'`.\n *\n * @returns {*}\n */\nfunction getPropertyValue (obj, property) {\n const props = Array.isArray(property) ? property : splitPropertyKey(property)\n\n for (const prop of props) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n return\n }\n obj = obj[prop]\n }\n\n return obj\n}\n", "'use strict'\n\nmodule.exports = deleteLogProperty\n\nconst getPropertyValue = require('./get-property-value')\nconst splitPropertyKey = require('./split-property-key')\n\n/**\n * Deletes a specified property from a log object if it exists.\n * This function mutates the passed in `log` object.\n *\n * @param {object} log The log object to be modified.\n * @param {string} property A string identifying the property to be deleted from\n * the log object. Accepts nested properties delimited by a `.`\n * Delimiter can be escaped to preserve property names that contain the delimiter.\n * e.g. `'prop1.prop2'` or `'prop2\\.domain\\.corp.prop2'`\n */\nfunction deleteLogProperty (log, property) {\n const props = splitPropertyKey(property)\n const propToDelete = props.pop()\n\n log = getPropertyValue(log, props)\n\n /* istanbul ignore else */\n if (log !== null && typeof log === 'object' && Object.prototype.hasOwnProperty.call(log, propToDelete)) {\n delete log[propToDelete]\n }\n}\n", "export interface Cache {\n has: (value: any) => boolean;\n set: (key: any, value: any) => void;\n get: (key: any) => any;\n}\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toStringFunction = Function.prototype.toString;\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toStringObject = Object.prototype.toString;\n\n/**\n * Get an empty version of the object with the same prototype it has.\n */\nexport function getCleanClone(prototype: any): any {\n if (!prototype) {\n return Object.create(null);\n }\n\n const Constructor = prototype.constructor;\n\n if (Constructor === Object) {\n return prototype === Object.prototype ? {} : Object.create(prototype as object | null);\n }\n\n if (Constructor && ~toStringFunction.call(Constructor).indexOf('[native code]')) {\n try {\n return new Constructor();\n } catch {\n // Ignore\n }\n }\n\n return Object.create(prototype as object | null);\n}\n\n/**\n * Get the tag of the value passed, so that the correct copier can be used.\n */\nexport function getTag(value: any): string {\n const stringTag = value[Symbol.toStringTag];\n\n if (stringTag) {\n return stringTag;\n }\n\n const type = toStringObject.call(value);\n\n return type.substring(8, type.length - 1);\n}\n", "import { getCleanClone } from './utils.js';\nimport type { Cache } from './utils.ts';\n\nexport type InternalCopier<Value> = (value: Value, state: State) => Value;\n\nexport interface State {\n Constructor: any;\n cache: Cache;\n copier: InternalCopier<any>;\n prototype: any;\n}\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst { hasOwnProperty, propertyIsEnumerable } = Object.prototype;\n\nfunction copyOwnDescriptor<Value extends object>(\n original: Value,\n clone: Value,\n property: string | symbol,\n state: State,\n): void {\n const ownDescriptor = Object.getOwnPropertyDescriptor(original, property) || {\n configurable: true,\n enumerable: true,\n value: original[property as keyof Value],\n writable: true,\n };\n const descriptor =\n ownDescriptor.get || ownDescriptor.set\n ? ownDescriptor\n : {\n configurable: ownDescriptor.configurable,\n enumerable: ownDescriptor.enumerable,\n value: state.copier(ownDescriptor.value, state),\n writable: ownDescriptor.writable,\n };\n\n try {\n Object.defineProperty(clone, property, descriptor);\n } catch {\n // The above can fail on node in extreme edge cases, so fall back to the loose assignment.\n clone[property as keyof Value] = descriptor.get ? descriptor.get() : descriptor.value;\n }\n}\n\n/**\n * Striclty copy all properties contained on the object.\n */\nfunction copyOwnPropertiesStrict<Value extends object>(value: Value, clone: Value, state: State): Value {\n const names = Object.getOwnPropertyNames(value);\n\n for (let index = 0; index < names.length; ++index) {\n copyOwnDescriptor(value, clone, names[index]!, state);\n }\n\n const symbols = Object.getOwnPropertySymbols(value);\n\n for (let index = 0; index < symbols.length; ++index) {\n copyOwnDescriptor(value, clone, symbols[index]!, state);\n }\n\n return clone;\n}\n\n/**\n * Deeply copy the indexed values in the array.\n */\nexport function copyArrayLoose(array: any[], state: State) {\n const clone = new state.Constructor();\n\n // set in the cache immediately to be able to reuse the object recursively\n state.cache.set(array, clone);\n\n for (let index = 0; index < array.length; ++index) {\n clone[index] = state.copier(array[index], state);\n }\n\n return clone;\n}\n\n/**\n * Deeply copy the indexed values in the array, as well as any custom properties.\n */\nexport function copyArrayStrict<Value extends any[]>(array: Value, state: State) {\n const clone = new state.Constructor() as Value;\n\n // set in the cache immediately to be able to reuse the object recursively\n state.cache.set(array, clone);\n\n return copyOwnPropertiesStrict(array, clone, state);\n}\n\n/**\n * Copy the contents of the ArrayBuffer.\n */\nexport function copyArrayBuffer<Value extends ArrayBufferLike>(arrayBuffer: Value, _state: State): Value {\n return arrayBuffer.slice(0) as Value;\n}\n\n/**\n * Create a new Blob with the contents of the original.\n */\nexport function copyBlob<Value extends Blob>(blob: Value, _state: State): Value {\n return blob.slice(0, blob.size, blob.type) as Value;\n}\n\n/**\n * Create a new DataView with the contents of the original.\n */\nexport function copyDataView<Value extends DataView>(dataView: Value, state: State): Value {\n return new state.Constructor(copyArrayBuffer(dataView.buffer, state));\n}\n\n/**\n * Create a new Date based on the time of the original.\n */\nexport function copyDate<Value extends Date>(date: Value, state: State): Value {\n return new state.Constructor(date.getTime());\n}\n\n/**\n * Deeply copy the keys and values of the original.\n */\nexport function copyMapLoose<Value extends Map<any, any>>(map: Value, state: State): Value {\n const clone = new state.Constructor() as Value;\n\n // set in the cache immediately to be able to reuse the object recursively\n state.cache.set(map, clone);\n\n map.forEach((value, key) => {\n clone.set(key, state.copier(value, state));\n });\n\n return clone;\n}\n\n/**\n * Deeply copy the keys and values of the original, as well as any custom properties.\n */\nexport function copyMapStrict<Value extends Map<any, any>>(map: Value, state: State) {\n return copyOwnPropertiesStrict(map, copyMapLoose(map, state), state);\n}\n\n/**\n * Deeply copy the properties (keys and symbols) and values of the original.\n */\nexport function copyObjectLoose<Value extends Record<string, any>>(object: Value, state: State): Value {\n const clone = getCleanClone(state.prototype);\n\n // set in the cache immediately to be able to reuse the object recursively\n state.cache.set(object, clone);\n\n for (const key in object) {\n if (hasOwnProperty.call(object, key)) {\n clone[key] = state.copier(object[key], state);\n }\n }\n\n const symbols = Object.getOwnPropertySymbols(object);\n\n for (let index = 0; index < symbols.length; ++index) {\n const symbol = symbols[index]!;\n\n if (propertyIsEnumerable.call(object, symbol)) {\n clone[symbol] = state.copier((object as any)[symbol], state);\n }\n }\n\n return clone;\n}\n\n/**\n * Deeply copy the properties (keys and symbols) and values of the original, as well\n * as any hidden or non-enumerable properties.\n */\nexport function copyObjectStrict<Value extends Record<string, any>>(object: Value, state: State): Value {\n const clone = getCleanClone(state.prototype);\n\n // set in the cache immediately to be able to reuse the object recursively\n state.cache.set(object, clone);\n\n return copyOwnPropertiesStrict(object, clone, state);\n}\n\n/**\n * Create a new primitive wrapper from the value of the original.\n */\nexport function copyPrimitiveWrapper<\n // Specifically use the object constructor types\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n Value extends Boolean | Number | String,\n>(primitiveObject: Value, state: State): Value {\n return new state.Constructor(primitiveObject.valueOf());\n}\n\n/**\n * Create a new RegExp based on the value and flags of the original.\n */\nexport function copyRegExp<Value extends RegExp>(regExp: Value, state: State): Value {\n const clone = new state.Constructor(regExp.source, regExp.flags) as Value;\n\n clone.lastIndex = regExp.lastIndex;\n\n return clone;\n}\n\n/**\n * Return the original value (an identity function).\n *\n * @note\n * THis is used for objects that cannot be copied, such as WeakMap.\n */\nexport function copySelf<Value>(value: Value, _state: State): Value {\n return value;\n}\n\n/**\n * Deeply copy the values of the original.\n */\nexport function copySetLoose<Value extends Set<any>>(set: Value, state: State): Value {\n const clone = new state.Constructor() as Value;\n\n // set in the cache immediately to be able to reuse the object recursively\n state.cache.set(set, clone);\n\n set.forEach((value) => {\n clone.add(state.copier(value, state));\n });\n\n return clone;\n}\n\n/**\n * Deeply copy the values of the original, as well as any custom properties.\n */\nexport function copySetStrict<Value extends Set<any>>(set: Value, state: State): Value {\n return copyOwnPropertiesStrict(set, copySetLoose(set, state), state);\n}\n", "import {\n copyArrayBuffer,\n copyArrayLoose,\n copyArrayStrict,\n copyBlob,\n copyDataView,\n copyDate,\n copyMapLoose,\n copyMapStrict,\n copyObjectLoose,\n copyObjectStrict,\n copyPrimitiveWrapper,\n copyRegExp,\n copySelf,\n copySetLoose,\n copySetStrict,\n} from './copier.js';\nimport type { InternalCopier } from './copier.ts';\nimport type { Cache } from './utils.ts';\n\nexport interface CopierMethods {\n array?: InternalCopier<any[]>;\n arrayBuffer?: InternalCopier<ArrayBuffer>;\n asyncGenerator?: InternalCopier<AsyncGenerator>;\n blob?: InternalCopier<Blob>;\n dataView?: InternalCopier<DataView>;\n date?: InternalCopier<Date>;\n error?: InternalCopier<Error>;\n generator?: InternalCopier<Generator>;\n map?: InternalCopier<Map<any, any>>;\n object?: InternalCopier<Record<string, any>>;\n regExp?: InternalCopier<RegExp>;\n set?: InternalCopier<Set<any>>;\n}\n\ninterface Copiers {\n [key: string]: InternalCopier<any> | undefined;\n\n Arguments: InternalCopier<Record<string, any>>;\n Array: InternalCopier<any[]>;\n ArrayBuffer: InternalCopier<ArrayBuffer>;\n AsyncGenerator: InternalCopier<AsyncGenerator>;\n BigInt64Array: InternalCopier<ArrayBuffer>;\n BigUint64Array: InternalCopier<ArrayBuffer>;\n Blob: InternalCopier<Blob>;\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n Boolean: InternalCopier<Boolean>;\n DataView: InternalCopier<DataView>;\n Date: InternalCopier<Date>;\n Error: InternalCopier<Error>;\n Float32Array: InternalCopier<ArrayBuffer>;\n Float64Array: InternalCopier<ArrayBuffer>;\n Generator: InternalCopier<Generator>;\n Int8Array: InternalCopier<ArrayBuffer>;\n Int16Array: InternalCopier<ArrayBuffer>;\n Int32Array: InternalCopier<ArrayBuffer>;\n Map: InternalCopier<Map<any, any>>;\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n Number: InternalCopier<Number>;\n Object: InternalCopier<Record<string, any>>;\n Promise: InternalCopier<Promise<any>>;\n RegExp: InternalCopier<RegExp>;\n Set: InternalCopier<Set<any>>;\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n String: InternalCopier<String>;\n WeakMap: InternalCopier<WeakMap<any, any>>;\n WeakSet: InternalCopier<WeakSet<any>>;\n Uint8Array: InternalCopier<ArrayBuffer>;\n Uint8ClampedArray: InternalCopier<ArrayBuffer>;\n Uint16Array: InternalCopier<ArrayBuffer>;\n Uint32Array: InternalCopier<ArrayBuffer>;\n}\n\nexport interface CreateCopierOptions {\n createCache?: () => Cache;\n methods?: CopierMethods;\n strict?: boolean;\n}\n\nexport interface RequiredCreateCopierOptions extends Omit<Required<CreateCopierOptions>, 'methods'> {\n copiers: Copiers;\n methods: Required<CopierMethods>;\n}\n\nexport function createDefaultCache(): Cache {\n return new WeakMap();\n}\n\nexport function getOptions({\n createCache: createCacheOverride,\n methods: methodsOverride,\n strict,\n}: CreateCopierOptions): RequiredCreateCopierOptions {\n const defaultMethods = {\n array: strict ? copyArrayStrict : copyArrayLoose,\n arrayBuffer: copyArrayBuffer,\n asyncGenerator: copySelf,\n blob: copyBlob,\n dataView: copyDataView,\n date: copyDate,\n error: copySelf,\n generator: copySelf,\n map: strict ? copyMapStrict : copyMapLoose,\n object: strict ? copyObjectStrict : copyObjectLoose,\n regExp: copyRegExp,\n set: strict ? copySetStrict : copySetLoose,\n };\n\n const methods = methodsOverride ? Object.assign(defaultMethods, methodsOverride) : defaultMethods;\n const copiers = getTagSpecificCopiers(methods);\n const createCache = createCacheOverride || createDefaultCache;\n\n // Extra safety check to ensure that object and array copiers are always provided,\n // avoiding runtime errors.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!copiers.Object || !copiers.Array) {\n throw new Error('An object and array copier must be provided.');\n }\n\n return { createCache, copiers, methods, strict: Boolean(strict) };\n}\n\n/**\n * Get the copiers used for each specific object tag.\n */\nexport function getTagSpecificCopiers(methods: Required<CopierMethods>): Copiers {\n return {\n Arguments: methods.object,\n Array: methods.array,\n ArrayBuffer: methods.arrayBuffer,\n AsyncGenerator: methods.asyncGenerator,\n BigInt64Array: methods.arrayBuffer,\n BigUint64Array: methods.arrayBuffer,\n Blob: methods.blob,\n Boolean: copyPrimitiveWrapper,\n DataView: methods.dataView,\n Date: methods.date,\n Error: methods.error,\n Float32Array: methods.arrayBuffer,\n Float64Array: methods.arrayBuffer,\n Generator: methods.generator,\n Int8Array: methods.arrayBuffer,\n Int16Array: methods.arrayBuffer,\n Int32Array: methods.arrayBuffer,\n Map: methods.map,\n Number: copyPrimitiveWrapper,\n Object: methods.object,\n Promise: copySelf,\n RegExp: methods.regExp,\n Set: methods.set,\n String: copyPrimitiveWrapper,\n WeakMap: copySelf,\n WeakSet: copySelf,\n Uint8Array: methods.arrayBuffer,\n Uint8ClampedArray: methods.arrayBuffer,\n Uint16Array: methods.arrayBuffer,\n Uint32Array: methods.arrayBuffer,\n };\n}\n", "import type { State } from './copier.ts';\nimport { getOptions } from './options.js';\nimport type { CreateCopierOptions } from './options.ts';\nimport { getTag } from './utils.js';\n\nexport type { State } from './copier.ts';\nexport type { CreateCopierOptions } from './options.ts';\n\n/**\n * Create a custom copier based on custom options for any of the following:\n * - `createCache` method to create a cache for copied objects\n * - custom copier `methods` for specific object types\n * - `strict` mode to copy all properties with their descriptors\n */\nexport function createCopier(options: CreateCopierOptions = {}) {\n const { createCache, copiers } = getOptions(options);\n const { Array: copyArray, Object: copyObject } = copiers;\n\n function copier(value: any, state: State): any {\n state.prototype = state.Constructor = undefined;\n\n if (!value || typeof value !== 'object') {\n return value;\n }\n\n if (state.cache.has(value)) {\n return state.cache.get(value);\n }\n\n state.prototype = Object.getPrototypeOf(value);\n // Using logical AND for speed, since optional chaining transforms to\n // a local variable usage.\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n state.Constructor = state.prototype && state.prototype.constructor;\n\n // plain objects\n if (!state.Constructor || state.Constructor === Object) {\n return copyObject(value as Record<string, any>, state);\n }\n\n // arrays\n if (Array.isArray(value)) {\n return copyArray(value, state);\n }\n\n const tagSpecificCopier = copiers[getTag(value)];\n\n if (tagSpecificCopier) {\n return tagSpecificCopier(value, state);\n }\n\n return typeof value.then === 'function' ? value : copyObject(value as Record<string, any>, state);\n }\n\n return function copy<Value>(value: Value): Value {\n return copier(value, {\n Constructor: undefined,\n cache: createCache(),\n copier,\n prototype: undefined,\n });\n };\n}\n\n/**\n * Copy an value deeply as much as possible, where strict recreation of object properties\n * are maintained. All properties (including non-enumerable ones) are copied with their\n * original property descriptors on both objects and arrays.\n */\nexport const copyStrict = createCopier({ strict: true });\n\n/**\n * Copy an value deeply as much as possible.\n */\nexport const copy = createCopier();\n", "'use strict'\n\nmodule.exports = filterLog\n\nconst { createCopier } = require('fast-copy')\nconst fastCopy = createCopier({})\n\nconst deleteLogProperty = require('./delete-log-property')\n\n/**\n * @typedef {object} FilterLogParams\n * @property {object} log The log object to be modified.\n * @property {PrettyContext} context The context object built from parsing\n * the options.\n */\n\n/**\n * Filter a log object by removing or including keys accordingly.\n * When `includeKeys` is passed, `ignoredKeys` will be ignored.\n * One of ignoreKeys or includeKeys must be pass in.\n *\n * @param {FilterLogParams} input\n *\n * @returns {object} A new `log` object instance that\n * either only includes the keys in ignoreKeys\n * or does not include those in ignoredKeys.\n */\nfunction filterLog ({ log, context }) {\n const { ignoreKeys, includeKeys } = context\n const logCopy = fastCopy(log)\n\n if (includeKeys) {\n const logIncluded = {}\n\n includeKeys.forEach((key) => {\n logIncluded[key] = logCopy[key]\n })\n return logIncluded\n }\n\n ignoreKeys.forEach((ignoreKey) => {\n deleteLogProperty(logCopy, ignoreKey)\n })\n return logCopy\n}\n", "\"use strict\";function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"){_typeof=function _typeof(obj){return typeof obj}}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj}}return _typeof(obj)}(function(global){var _arguments=arguments;var dateFormat=function(){var token=/d{1,4}|D{3,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\\1?|W{1,2}|[LlopSZN]|\"[^\"]*\"|'[^']*'/g;var timezone=/\\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\\d{4})?)\\b/g;var timezoneClip=/[^-+\\dA-Z]/g;return function(date,mask,utc,gmt){if(_arguments.length===1&&kindOf(date)===\"string\"&&!/\\d/.test(date)){mask=date;date=undefined}date=date||date===0?date:new Date;if(!(date instanceof Date)){date=new Date(date)}if(isNaN(date)){throw TypeError(\"Invalid date\")}mask=String(dateFormat.masks[mask]||mask||dateFormat.masks[\"default\"]);var maskSlice=mask.slice(0,4);if(maskSlice===\"UTC:\"||maskSlice===\"GMT:\"){mask=mask.slice(4);utc=true;if(maskSlice===\"GMT:\"){gmt=true}}var _=function _(){return utc?\"getUTC\":\"get\"};var _d=function d(){return date[_()+\"Date\"]()};var D=function D(){return date[_()+\"Day\"]()};var _m=function m(){return date[_()+\"Month\"]()};var y=function y(){return date[_()+\"FullYear\"]()};var _H=function H(){return date[_()+\"Hours\"]()};var _M=function M(){return date[_()+\"Minutes\"]()};var _s=function s(){return date[_()+\"Seconds\"]()};var _L=function L(){return date[_()+\"Milliseconds\"]()};var _o=function o(){return utc?0:date.getTimezoneOffset()};var _W=function W(){return getWeek(date)};var _N=function N(){return getDayOfWeek(date)};var flags={d:function d(){return _d()},dd:function dd(){return pad(_d())},ddd:function ddd(){return dateFormat.i18n.dayNames[D()]},DDD:function DDD(){return getDayName({y:y(),m:_m(),d:_d(),_:_(),dayName:dateFormat.i18n.dayNames[D()],short:true})},dddd:function dddd(){return dateFormat.i18n.dayNames[D()+7]},DDDD:function DDDD(){return getDayName({y:y(),m:_m(),d:_d(),_:_(),dayName:dateFormat.i18n.dayNames[D()+7]})},m:function m(){return _m()+1},mm:function mm(){return pad(_m()+1)},mmm:function mmm(){return dateFormat.i18n.monthNames[_m()]},mmmm:function mmmm(){return dateFormat.i18n.monthNames[_m()+12]},yy:function yy(){return String(y()).slice(2)},yyyy:function yyyy(){return pad(y(),4)},h:function h(){return _H()%12||12},hh:function hh(){return pad(_H()%12||12)},H:function H(){return _H()},HH:function HH(){return pad(_H())},M:function M(){return _M()},MM:function MM(){return pad(_M())},s:function s(){return _s()},ss:function ss(){return pad(_s())},l:function l(){return pad(_L(),3)},L:function L(){return pad(Math.floor(_L()/10))},t:function t(){return _H()<12?dateFormat.i18n.timeNames[0]:dateFormat.i18n.timeNames[1]},tt:function tt(){return _H()<12?dateFormat.i18n.timeNames[2]:dateFormat.i18n.timeNames[3]},T:function T(){return _H()<12?dateFormat.i18n.timeNames[4]:dateFormat.i18n.timeNames[5]},TT:function TT(){return _H()<12?dateFormat.i18n.timeNames[6]:dateFormat.i18n.timeNames[7]},Z:function Z(){return gmt?\"GMT\":utc?\"UTC\":(String(date).match(timezone)||[\"\"]).pop().replace(timezoneClip,\"\").replace(/GMT\\+0000/g,\"UTC\")},o:function o(){return(_o()>0?\"-\":\"+\")+pad(Math.floor(Math.abs(_o())/60)*100+Math.abs(_o())%60,4)},p:function p(){return(_o()>0?\"-\":\"+\")+pad(Math.floor(Math.abs(_o())/60),2)+\":\"+pad(Math.floor(Math.abs(_o())%60),2)},S:function S(){return[\"th\",\"st\",\"nd\",\"rd\"][_d()%10>3?0:(_d()%100-_d()%10!=10)*_d()%10]},W:function W(){return _W()},WW:function WW(){return pad(_W())},N:function N(){return _N()}};return mask.replace(token,function(match){if(match in flags){return flags[match]()}return match.slice(1,match.length-1)})}}();dateFormat.masks={default:\"ddd mmm dd yyyy HH:MM:ss\",shortDate:\"m/d/yy\",paddedShortDate:\"mm/dd/yyyy\",mediumDate:\"mmm d, yyyy\",longDate:\"mmmm d, yyyy\",fullDate:\"dddd, mmmm d, yyyy\",shortTime:\"h:MM TT\",mediumTime:\"h:MM:ss TT\",longTime:\"h:MM:ss TT Z\",isoDate:\"yyyy-mm-dd\",isoTime:\"HH:MM:ss\",isoDateTime:\"yyyy-mm-dd'T'HH:MM:sso\",isoUtcDateTime:\"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\",expiresHeaderFormat:\"ddd, dd mmm yyyy HH:MM:ss Z\"};dateFormat.i18n={dayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],monthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],timeNames:[\"a\",\"p\",\"am\",\"pm\",\"A\",\"P\",\"AM\",\"PM\"]};var pad=function pad(val,len){val=String(val);len=len||2;while(val.length<len){val=\"0\"+val}return val};var getDayName=function getDayName(_ref){var y=_ref.y,m=_ref.m,d=_ref.d,_=_ref._,dayName=_ref.dayName,_ref$short=_ref[\"short\"],_short=_ref$short===void 0?false:_ref$short;var today=new Date;var yesterday=new Date;yesterday.setDate(yesterday[_+\"Date\"]()-1);var tomorrow=new Date;tomorrow.setDate(tomorrow[_+\"Date\"]()+1);var today_d=function today_d(){return today[_+\"Date\"]()};var today_m=function today_m(){return today[_+\"Month\"]()};var today_y=function today_y(){return today[_+\"FullYear\"]()};var yesterday_d=function yesterday_d(){return yesterday[_+\"Date\"]()};var yesterday_m=function yesterday_m(){return yesterday[_+\"Month\"]()};var yesterday_y=function yesterday_y(){return yesterday[_+\"FullYear\"]()};var tomorrow_d=function tomorrow_d(){return tomorrow[_+\"Date\"]()};var tomorrow_m=function tomorrow_m(){return tomorrow[_+\"Month\"]()};var tomorrow_y=function tomorrow_y(){return tomorrow[_+\"FullYear\"]()};if(today_y()===y&&today_m()===m&&today_d()===d){return _short?\"Tdy\":\"Today\"}else if(yesterday_y()===y&&yesterday_m()===m&&yesterday_d()===d){return _short?\"Ysd\":\"Yesterday\"}else if(tomorrow_y()===y&&tomorrow_m()===m&&tomorrow_d()===d){return _short?\"Tmw\":\"Tomorrow\"}return dayName};var getWeek=function getWeek(date){var targetThursday=new Date(date.getFullYear(),date.getMonth(),date.getDate());targetThursday.setDate(targetThursday.getDate()-(targetThursday.getDay()+6)%7+3);var firstThursday=new Date(targetThursday.getFullYear(),0,4);firstThursday.setDate(firstThursday.getDate()-(firstThursday.getDay()+6)%7+3);var ds=targetThursday.getTimezoneOffset()-firstThursday.getTimezoneOffset();targetThursday.setHours(targetThursday.getHours()-ds);var weekDiff=(targetThursday-firstThursday)/(864e5*7);return 1+Math.floor(weekDiff)};var getDayOfWeek=function getDayOfWeek(date){var dow=date.getDay();if(dow===0){dow=7}return dow};var kindOf=function kindOf(val){if(val===null){return\"null\"}if(val===undefined){return\"undefined\"}if(_typeof(val)!==\"object\"){return _typeof(val)}if(Array.isArray(val)){return\"array\"}return{}.toString.call(val).slice(8,-1).toLowerCase()};if(typeof define===\"function\"&&define.amd){define(function(){return dateFormat})}else if((typeof exports===\"undefined\"?\"undefined\":_typeof(exports))===\"object\"){module.exports=dateFormat}else{global.dateFormat=dateFormat}})(void 0);", "'use strict'\n\nmodule.exports = formatTime\n\nconst {\n DATE_FORMAT,\n DATE_FORMAT_SIMPLE\n} = require('../constants')\n\nconst dateformat = require('dateformat')\nconst createDate = require('./create-date')\nconst isValidDate = require('./is-valid-date')\n\n/**\n * Converts a given `epoch` to a desired display format.\n *\n * @param {number|string} epoch The time to convert. May be any value that is\n * valid for `new Date()`.\n * @param {boolean|string} [translateTime=false] When `false`, the given `epoch`\n * will simply be returned. When `true`, the given `epoch` will be converted\n * to a string at UTC using the `DATE_FORMAT_SIMPLE` constant. If `translateTime` is\n * a string, the following rules are available:\n *\n * - `<format string>`: The string is a literal format string. This format\n * string will be used to interpret the `epoch` and return a display string\n * at UTC.\n * - `SYS:STANDARD`: The returned display string will follow the `DATE_FORMAT`\n * constant at the system's local timezone.\n * - `SYS:<format string>`: The returned display string will follow the given\n * `<format string>` at the system's local timezone.\n * - `UTC:<format string>`: The returned display string will follow the given\n * `<format string>` at UTC.\n *\n * @returns {number|string} The formatted time.\n */\nfunction formatTime (epoch, translateTime = false) {\n if (translateTime === false) {\n return epoch\n }\n\n const instant = createDate(epoch)\n\n // If the Date is invalid, do not attempt to format\n if (!isValidDate(instant)) {\n return epoch\n }\n\n if (translateTime === true) {\n return dateformat(instant, DATE_FORMAT_SIMPLE)\n }\n\n const upperFormat = translateTime.toUpperCase()\n if (upperFormat === 'SYS:STANDARD') {\n return dateformat(instant, DATE_FORMAT)\n }\n\n const prefix = upperFormat.substr(0, 4)\n if (prefix === 'SYS:' || prefix === 'UTC:') {\n if (prefix === 'UTC:') {\n return dateformat(instant, translateTime)\n }\n return dateformat(instant, translateTime.slice(4))\n }\n\n return dateformat(instant, `UTC:${translateTime}`)\n}\n", "'use strict'\n\nmodule.exports = handleCustomLevelsNamesOpts\n\n/**\n * Parse a CSV string or options object that maps level\n * labels to level values.\n *\n * @param {string|object} cLevels An object mapping level\n * names to level values, e.g. `{ info: 30, debug: 65 }`, or a\n * CSV string in the format `level_name:level_value`, e.g.\n * `info:30,debug:65`.\n *\n * @returns {object} An object mapping levels names to level values\n * e.g. `{ info: 30, debug: 65 }`.\n */\nfunction handleCustomLevelsNamesOpts (cLevels) {\n if (!cLevels) return {}\n\n if (typeof cLevels === 'string') {\n return cLevels\n .split(',')\n .reduce((agg, value, idx) => {\n const [levelName, levelNum = idx] = value.split(':')\n agg[levelName.toLowerCase()] = levelNum\n return agg\n }, {})\n } else if (Object.prototype.toString.call(cLevels) === '[object Object]') {\n return Object\n .keys(cLevels)\n .reduce((agg, levelName) => {\n agg[levelName.toLowerCase()] = cLevels[levelName]\n return agg\n }, {})\n } else {\n return {}\n }\n}\n", "'use strict'\n\nmodule.exports = handleCustomLevelsOpts\n\n/**\n * Parse a CSV string or options object that specifies\n * configuration for custom levels.\n *\n * @param {string|object} cLevels An object mapping level\n * names to values, e.g. `{ info: 30, debug: 65 }`, or a\n * CSV string in the format `level_name:level_value`, e.g.\n * `info:30,debug:65`.\n *\n * @returns {object} An object mapping levels to labels that\n * appear in logs, e.g. `{ '30': 'INFO', '65': 'DEBUG' }`.\n */\nfunction handleCustomLevelsOpts (cLevels) {\n if (!cLevels) return {}\n\n if (typeof cLevels === 'string') {\n return cLevels\n .split(',')\n .reduce((agg, value, idx) => {\n const [levelName, levelNum = idx] = value.split(':')\n agg[levelNum] = levelName.toUpperCase()\n return agg\n },\n { default: 'USERLVL' })\n } else if (Object.prototype.toString.call(cLevels) === '[object Object]') {\n return Object\n .keys(cLevels)\n .reduce((agg, levelName) => {\n agg[cLevels[levelName]] = levelName.toUpperCase()\n return agg\n }, { default: 'USERLVL' })\n } else {\n return {}\n }\n}\n", "'use strict'\n\nmodule.exports = interpretConditionals\n\nconst getPropertyValue = require('./get-property-value')\n\n/**\n * Translates all conditional blocks from within the messageFormat. Translates\n * any matching {if key}{key}{end} statements and returns everything between\n * if and else blocks if the key provided was found in log.\n *\n * @param {MessageFormatString|MessageFormatFunction} messageFormat A format\n * string or function that defines how the logged message should be\n * conditionally formatted.\n * @param {object} log The log object to be modified.\n *\n * @returns {string} The parsed messageFormat.\n */\nfunction interpretConditionals (messageFormat, log) {\n messageFormat = messageFormat.replace(/{if (.*?)}(.*?){end}/g, replacer)\n\n // Remove non-terminated if blocks\n messageFormat = messageFormat.replace(/{if (.*?)}/g, '')\n // Remove floating end blocks\n messageFormat = messageFormat.replace(/{end}/g, '')\n\n return messageFormat.replace(/\\s+/g, ' ').trim()\n\n function replacer (_, key, value) {\n const propertyValue = getPropertyValue(log, key)\n if (propertyValue && value.includes(key)) {\n return value.replace(new RegExp('{' + key + '}', 'g'), propertyValue)\n } else {\n return ''\n }\n }\n}\n", "'use strict'\n\nmodule.exports = isObject\n\nfunction isObject (input) {\n return Object.prototype.toString.apply(input) === '[object Object]'\n}\n", "'use strict'\n\nmodule.exports = joinLinesWithIndentation\n\n/**\n * @typedef {object} JoinLinesWithIndentationParams\n * @property {string} input The string to split and reformat.\n * @property {string} [ident] The indentation string. Default: ` ` (4 spaces).\n * @property {string} [eol] The end of line sequence to use when rejoining\n * the lines. Default: `'\\n'`.\n */\n\n/**\n * Given a string with line separators, either `\\r\\n` or `\\n`, add indentation\n * to all lines subsequent to the first line and rejoin the lines using an\n * end of line sequence.\n *\n * @param {JoinLinesWithIndentationParams} input\n *\n * @returns {string} A string with lines subsequent to the first indented\n * with the given indentation sequence.\n */\nfunction joinLinesWithIndentation ({ input, ident = ' ', eol = '\\n' }) {\n const lines = input.split(/\\r?\\n/)\n for (let i = 1; i < lines.length; i += 1) {\n lines[i] = ident + lines[i]\n }\n return lines.join(eol)\n}\n", "'use strict'\n\nmodule.exports = parseFactoryOptions\n\nconst {\n LEVEL_NAMES\n} = require('../constants')\nconst colors = require('../colors')\nconst handleCustomLevelsOpts = require('./handle-custom-levels-opts')\nconst handleCustomLevelsNamesOpts = require('./handle-custom-levels-names-opts')\nconst handleLevelLabelData = require('./get-level-label-data')\n\n/**\n * A `PrettyContext` is an object to be used by the various functions that\n * process log data. It is derived from the provided {@link PinoPrettyOptions}.\n * It may be used as a `this` context.\n *\n * @typedef {object} PrettyContext\n * @property {string} EOL The escape sequence chosen as the line terminator.\n * @property {string} IDENT The string to use as the indentation sequence.\n * @property {ColorizerFunc} colorizer A configured colorizer function.\n * @property {Array[Array<number, string>]} customColors A set of custom color\n * names associated with level numbers.\n * @property {object} customLevelNames A hash of level numbers to level names,\n * e.g. `{ 30: \"info\" }`.\n * @property {object} customLevels A hash of level names to level numbers,\n * e.g. `{ info: 30 }`.\n * @property {CustomPrettifiers} customPrettifiers A hash of custom prettifier\n * functions.\n * @property {object} customProperties Comprised of `customLevels` and\n * `customLevelNames` if such options are provided.\n * @property {string[]} errorLikeObjectKeys The key names in the log data that\n * should be considered as holding error objects.\n * @property {string[]} errorProps A list of error object keys that should be\n * included in the output.\n * @property {function} getLevelLabelData Pass a numeric level to return [levelLabelString,levelNum]\n * @property {boolean} hideObject Indicates the prettifier should omit objects\n * in the output.\n * @property {string[]} ignoreKeys Set of log data keys to omit.\n * @property {string[]} includeKeys Opposite of `ignoreKeys`.\n * @property {boolean} levelFirst Indicates the level should be printed first.\n * @property {string} levelKey Name of the key in the log data that contains\n * the message.\n * @property {string} levelLabel Format token to represent the position of the\n * level name in the output string.\n * @property {MessageFormatString|MessageFormatFunction} messageFormat\n * @property {string} messageKey Name of the key in the log data that contains\n * the message.\n * @property {string|number} minimumLevel The minimum log level to process\n * and output.\n * @property {ColorizerFunc} objectColorizer\n * @property {boolean} singleLine Indicates objects should be printed on a\n * single output line.\n * @property {string} timestampKey The name of the key in the log data that\n * contains the log timestamp.\n * @property {boolean} translateTime Indicates if timestamps should be\n * translated to a human-readable string.\n * @property {boolean} useOnlyCustomProps\n */\n\n/**\n * @param {PinoPrettyOptions} options The user supplied object of options.\n *\n * @returns {PrettyContext}\n */\nfunction parseFactoryOptions (options) {\n const EOL = options.crlf ? '\\r\\n' : '\\n'\n const IDENT = ' '\n const {\n customPrettifiers,\n errorLikeObjectKeys,\n hideObject,\n levelFirst,\n levelKey,\n levelLabel,\n messageFormat,\n messageKey,\n minimumLevel,\n singleLine,\n timestampKey,\n translateTime\n } = options\n const errorProps = options.errorProps.split(',')\n const useOnlyCustomProps = typeof options.useOnlyCustomProps === 'boolean'\n ? options.useOnlyCustomProps\n : (options.useOnlyCustomProps === 'true')\n const customLevels = handleCustomLevelsOpts(options.customLevels)\n const customLevelNames = handleCustomLevelsNamesOpts(options.customLevels)\n const getLevelLabelData = handleLevelLabelData(useOnlyCustomProps, customLevels, customLevelNames)\n\n let customColors\n if (options.customColors) {\n if (typeof options.customColors === 'string') {\n customColors = options.customColors.split(',').reduce((agg, value) => {\n const [level, color] = value.split(':')\n const condition = useOnlyCustomProps\n ? options.customLevels\n : customLevelNames[level] !== undefined\n const levelNum = condition\n ? customLevelNames[level]\n : LEVEL_NAMES[level]\n const colorIdx = levelNum !== undefined\n ? levelNum\n : level\n agg.push([colorIdx, color])\n return agg\n }, [])\n } else if (typeof options.customColors === 'object') {\n customColors = Object.keys(options.customColors).reduce((agg, value) => {\n const [level, color] = [value, options.customColors[value]]\n const condition = useOnlyCustomProps\n ? options.customLevels\n : customLevelNames[level] !== undefined\n const levelNum = condition\n ? customLevelNames[level]\n : LEVEL_NAMES[level]\n const colorIdx = levelNum !== undefined\n ? levelNum\n : level\n agg.push([colorIdx, color])\n return agg\n }, [])\n } else {\n throw new Error('options.customColors must be of type string or object.')\n }\n }\n\n const customProperties = { customLevels, customLevelNames }\n if (useOnlyCustomProps === true && !options.customLevels) {\n customProperties.customLevels = undefined\n customProperties.customLevelNames = undefined\n }\n\n const includeKeys = options.include !== undefined\n ? new Set(options.include.split(','))\n : undefined\n const ignoreKeys = (!includeKeys && options.ignore)\n ? new Set(options.ignore.split(','))\n : undefined\n\n const colorizer = colors(options.colorize, customColors, useOnlyCustomProps)\n const objectColorizer = options.colorizeObjects\n ? colorizer\n : colors(false, [], false)\n\n return {\n EOL,\n IDENT,\n colorizer,\n customColors,\n customLevelNames,\n customLevels,\n customPrettifiers,\n customProperties,\n errorLikeObjectKeys,\n errorProps,\n getLevelLabelData,\n hideObject,\n ignoreKeys,\n includeKeys,\n levelFirst,\n levelKey,\n levelLabel,\n messageFormat,\n messageKey,\n minimumLevel,\n objectColorizer,\n singleLine,\n timestampKey,\n translateTime,\n useOnlyCustomProps\n }\n}\n", "module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n", "'use strict'\n\nmodule.exports = prettifyError\n\nconst joinLinesWithIndentation = require('./join-lines-with-indentation')\n\n/**\n * @typedef {object} PrettifyErrorParams\n * @property {string} keyName The key assigned to this error in the log object.\n * @property {string} lines The STRINGIFIED error. If the error field has a\n * custom prettifier, that should be pre-applied as well.\n * @property {string} ident The indentation sequence to use.\n * @property {string} eol The EOL sequence to use.\n */\n\n/**\n * Prettifies an error string into a multi-line format.\n *\n * @param {PrettifyErrorParams} input\n *\n * @returns {string}\n */\nfunction prettifyError ({ keyName, lines, eol, ident }) {\n let result = ''\n const joinedLines = joinLinesWithIndentation({ input: lines, ident, eol })\n const splitLines = `${ident}${keyName}: ${joinedLines}${eol}`.split(eol)\n\n for (let j = 0; j < splitLines.length; j += 1) {\n if (j !== 0) result += eol\n\n const line = splitLines[j]\n if (/^\\s*\"stack\"/.test(line)) {\n const matches = /^(\\s*\"stack\":)\\s*(\".*\"),?$/.exec(line)\n /* istanbul ignore else */\n if (matches && matches.length === 3) {\n const indentSize = /^\\s*/.exec(line)[0].length + 4\n const indentation = ' '.repeat(indentSize)\n const stackMessage = matches[2]\n result += matches[1] + eol + indentation + JSON.parse(stackMessage).replace(/\\n/g, eol + indentation)\n } else {\n result += line\n }\n } else {\n result += line\n }\n }\n\n return result\n}\n", "'use strict'\n\nmodule.exports = prettifyObject\n\nconst {\n LOGGER_KEYS\n} = require('../constants')\n\nconst stringifySafe = require('fast-safe-stringify')\nconst joinLinesWithIndentation = require('./join-lines-with-indentation')\nconst prettifyError = require('./prettify-error')\n\n/**\n * @typedef {object} PrettifyObjectParams\n * @property {object} log The object to prettify.\n * @property {boolean} [excludeLoggerKeys] Indicates if known logger specific\n * keys should be excluded from prettification. Default: `true`.\n * @property {string[]} [skipKeys] A set of object keys to exclude from the\n * * prettified result. Default: `[]`.\n * @property {PrettyContext} context The context object built from parsing\n * the options.\n */\n\n/**\n * Prettifies a standard object. Special care is taken when processing the object\n * to handle child objects that are attached to keys known to contain error\n * objects.\n *\n * @param {PrettifyObjectParams} input\n *\n * @returns {string} The prettified string. This can be as little as `''` if\n * there was nothing to prettify.\n */\nfunction prettifyObject ({\n log,\n excludeLoggerKeys = true,\n skipKeys = [],\n context\n}) {\n const {\n EOL: eol,\n IDENT: ident,\n customPrettifiers,\n errorLikeObjectKeys: errorLikeKeys,\n objectColorizer,\n singleLine,\n colorizer\n } = context\n const keysToIgnore = [].concat(skipKeys)\n\n /* istanbul ignore else */\n if (excludeLoggerKeys === true) Array.prototype.push.apply(keysToIgnore, LOGGER_KEYS)\n\n let result = ''\n\n // Split object keys into two categories: error and non-error\n const { plain, errors } = Object.entries(log).reduce(({ plain, errors }, [k, v]) => {\n if (keysToIgnore.includes(k) === false) {\n // Pre-apply custom prettifiers, because all 3 cases below will need this\n const pretty = typeof customPrettifiers[k] === 'function'\n ? customPrettifiers[k](v, k, log, { colors: colorizer.colors })\n : v\n if (errorLikeKeys.includes(k)) {\n errors[k] = pretty\n } else {\n plain[k] = pretty\n }\n }\n return { plain, errors }\n }, { plain: {}, errors: {} })\n\n if (singleLine) {\n // Stringify the entire object as a single JSON line\n /* istanbul ignore else */\n if (Object.keys(plain).length > 0) {\n result += objectColorizer.greyMessage(stringifySafe(plain))\n }\n result += eol\n // Avoid printing the escape character on escaped backslashes.\n result = result.replace(/\\\\\\\\/gi, '\\\\')\n } else {\n // Put each object entry on its own line\n Object.entries(plain).forEach(([keyName, keyValue]) => {\n // custom prettifiers are already applied above, so we can skip it now\n let lines = typeof customPrettifiers[keyName] === 'function'\n ? keyValue\n : stringifySafe(keyValue, null, 2)\n\n if (lines === undefined) return\n\n // Avoid printing the escape character on escaped backslashes.\n lines = lines.replace(/\\\\\\\\/gi, '\\\\')\n\n const joinedLines = joinLinesWithIndentation({ input: lines, ident, eol })\n result += `${ident}${objectColorizer.property(keyName)}:${joinedLines.startsWith(eol) ? '' : ' '}${joinedLines}${eol}`\n })\n }\n\n // Errors\n Object.entries(errors).forEach(([keyName, keyValue]) => {\n // custom prettifiers are already applied above, so we can skip it now\n const lines = typeof customPrettifiers[keyName] === 'function'\n ? keyValue\n : stringifySafe(keyValue, null, 2)\n\n if (lines === undefined) return\n\n result += prettifyError({ keyName, lines, eol, ident })\n })\n\n return result\n}\n", "'use strict'\n\nmodule.exports = prettifyErrorLog\n\nconst {\n LOGGER_KEYS\n} = require('../constants')\n\nconst isObject = require('./is-object')\nconst joinLinesWithIndentation = require('./join-lines-with-indentation')\nconst prettifyObject = require('./prettify-object')\n\n/**\n * @typedef {object} PrettifyErrorLogParams\n * @property {object} log The error log to prettify.\n * @property {PrettyContext} context The context object built from parsing\n * the options.\n */\n\n/**\n * Given a log object that has a `type: 'Error'` key, prettify the object and\n * return the result. In other\n *\n * @param {PrettifyErrorLogParams} input\n *\n * @returns {string} A string that represents the prettified error log.\n */\nfunction prettifyErrorLog ({ log, context }) {\n const {\n EOL: eol,\n IDENT: ident,\n errorProps: errorProperties,\n messageKey\n } = context\n const stack = log.stack\n const joinedLines = joinLinesWithIndentation({ input: stack, ident, eol })\n let result = `${ident}${joinedLines}${eol}`\n\n if (errorProperties.length > 0) {\n const excludeProperties = LOGGER_KEYS.concat(messageKey, 'type', 'stack')\n let propertiesToPrint\n if (errorProperties[0] === '*') {\n // Print all sibling properties except for the standard exclusions.\n propertiesToPrint = Object.keys(log).filter(k => excludeProperties.includes(k) === false)\n } else {\n // Print only specified properties unless the property is a standard exclusion.\n propertiesToPrint = errorProperties.filter(k => excludeProperties.includes(k) === false)\n }\n\n for (let i = 0; i < propertiesToPrint.length; i += 1) {\n const key = propertiesToPrint[i]\n if (key in log === false) continue\n if (isObject(log[key])) {\n // The nested object may have \"logger\" type keys but since they are not\n // at the root level of the object being processed, we want to print them.\n // Thus, we invoke with `excludeLoggerKeys: false`.\n const prettifiedObject = prettifyObject({\n log: log[key],\n excludeLoggerKeys: false,\n context: {\n ...context,\n IDENT: ident + ident\n }\n })\n result = `${result}${ident}${key}: {${eol}${prettifiedObject}${ident}}${eol}`\n continue\n }\n result = `${result}${ident}${key}: ${log[key]}${eol}`\n }\n }\n\n return result\n}\n", "'use strict'\n\nmodule.exports = prettifyLevel\n\nconst getPropertyValue = require('./get-property-value')\n\n/**\n * @typedef {object} PrettifyLevelParams\n * @property {object} log The log object.\n * @property {PrettyContext} context The context object built from parsing\n * the options.\n */\n\n/**\n * Checks if the passed in log has a `level` value and returns a prettified\n * string for that level if so.\n *\n * @param {PrettifyLevelParams} input\n *\n * @returns {undefined|string} If `log` does not have a `level` property then\n * `undefined` will be returned. Otherwise, a string from the specified\n * `colorizer` is returned.\n */\nfunction prettifyLevel ({ log, context }) {\n const {\n colorizer,\n customLevels,\n customLevelNames,\n levelKey,\n getLevelLabelData\n } = context\n const prettifier = context.customPrettifiers?.level\n const output = getPropertyValue(log, levelKey)\n if (output === undefined) return undefined\n const labelColorized = colorizer(output, { customLevels, customLevelNames })\n if (prettifier) {\n const [label] = getLevelLabelData(output)\n return prettifier(output, levelKey, log, { label, labelColorized, colors: colorizer.colors })\n }\n return labelColorized\n}\n", "'use strict'\n\nmodule.exports = prettifyMessage\n\nconst {\n LEVELS\n} = require('../constants')\n\nconst getPropertyValue = require('./get-property-value')\nconst interpretConditionals = require('./interpret-conditionals')\n\n/**\n * @typedef {object} PrettifyMessageParams\n * @property {object} log The log object with the message to colorize.\n * @property {PrettyContext} context The context object built from parsing\n * the options.\n */\n\n/**\n * Prettifies a message string if the given `log` has a message property.\n *\n * @param {PrettifyMessageParams} input\n *\n * @returns {undefined|string} If the message key is not found, or the message\n * key is not a string, then `undefined` will be returned. Otherwise, a string\n * that is the prettified message.\n */\nfunction prettifyMessage ({ log, context }) {\n const {\n colorizer,\n customLevels,\n levelKey,\n levelLabel,\n messageFormat,\n messageKey,\n useOnlyCustomProps\n } = context\n if (messageFormat && typeof messageFormat === 'string') {\n const parsedMessageFormat = interpretConditionals(messageFormat, log)\n\n const message = String(parsedMessageFormat).replace(\n /{([^{}]+)}/g,\n function (match, p1) {\n // return log level as string instead of int\n let level\n if (p1 === levelLabel && (level = getPropertyValue(log, levelKey)) !== undefined) {\n const condition = useOnlyCustomProps ? customLevels === undefined : customLevels[level] === undefined\n return condition ? LEVELS[level] : customLevels[level]\n }\n\n // Parse nested key access, e.g. `{keyA.subKeyB}`.\n const value = getPropertyValue(log, p1)\n return value !== undefined ? value : ''\n })\n return colorizer.message(message)\n }\n if (messageFormat && typeof messageFormat === 'function') {\n const msg = messageFormat(log, messageKey, levelLabel, { colors: colorizer.colors })\n return colorizer.message(msg)\n }\n if (messageKey in log === false) return undefined\n if (typeof log[messageKey] !== 'string' && typeof log[messageKey] !== 'number' && typeof log[messageKey] !== 'boolean') return undefined\n return colorizer.message(log[messageKey])\n}\n", "'use strict'\n\nmodule.exports = prettifyMetadata\n\n/**\n * @typedef {object} PrettifyMetadataParams\n * @property {object} log The log that may or may not contain metadata to\n * be prettified.\n * @property {PrettyContext} context The context object built from parsing\n * the options.\n */\n\n/**\n * Prettifies metadata that is usually present in a Pino log line. It looks for\n * fields `name`, `pid`, `hostname`, and `caller` and returns a formatted string using\n * the fields it finds.\n *\n * @param {PrettifyMetadataParams} input\n *\n * @returns {undefined|string} If no metadata is found then `undefined` is\n * returned. Otherwise, a string of prettified metadata is returned.\n */\nfunction prettifyMetadata ({ log, context }) {\n const { customPrettifiers: prettifiers, colorizer } = context\n let line = ''\n\n if (log.name || log.pid || log.hostname) {\n line += '('\n\n if (log.name) {\n line += prettifiers.name\n ? prettifiers.name(log.name, 'name', log, { colors: colorizer.colors })\n : log.name\n }\n\n if (log.pid) {\n const prettyPid = prettifiers.pid\n ? prettifiers.pid(log.pid, 'pid', log, { colors: colorizer.colors })\n : log.pid\n if (log.name && log.pid) {\n line += '/' + prettyPid\n } else {\n line += prettyPid\n }\n }\n\n if (log.hostname) {\n // If `pid` and `name` were in the ignore keys list then we don't need\n // the leading space.\n const prettyHostname = prettifiers.hostname\n ? prettifiers.hostname(log.hostname, 'hostname', log, { colors: colorizer.colors })\n : log.hostname\n\n line += `${line === '(' ? 'on' : ' on'} ${prettyHostname}`\n }\n\n line += ')'\n }\n\n if (log.caller) {\n const prettyCaller = prettifiers.caller\n ? prettifiers.caller(log.caller, 'caller', log, { colors: colorizer.colors })\n : log.caller\n\n line += `${line === '' ? '' : ' '}<${prettyCaller}>`\n }\n\n if (line === '') {\n return undefined\n } else {\n return line\n }\n}\n", "'use strict'\n\nmodule.exports = prettifyTime\n\nconst formatTime = require('./format-time')\n\n/**\n * @typedef {object} PrettifyTimeParams\n * @property {object} log The log object with the timestamp to be prettified.\n * @property {PrettyContext} context The context object built from parsing\n * the options.\n */\n\n/**\n * Prettifies a timestamp if the given `log` has either `time`, `timestamp` or custom specified timestamp\n * property.\n *\n * @param {PrettifyTimeParams} input\n *\n * @returns {undefined|string} If a timestamp property cannot be found then\n * `undefined` is returned. Otherwise, the prettified time is returned as a\n * string.\n */\nfunction prettifyTime ({ log, context }) {\n const {\n timestampKey,\n translateTime: translateFormat\n } = context\n const prettifier = context.customPrettifiers?.time\n let time = null\n\n if (timestampKey in log) {\n time = log[timestampKey]\n } else if ('timestamp' in log) {\n time = log.timestamp\n }\n\n if (time === null) return undefined\n const output = translateFormat ? formatTime(time, translateFormat) : time\n\n return prettifier ? prettifier(output) : `[${output}]`\n}\n", "'use strict'\n\nmodule.exports = {\n buildSafeSonicBoom: require('./build-safe-sonic-boom.js'),\n createDate: require('./create-date.js'),\n deleteLogProperty: require('./delete-log-property.js'),\n filterLog: require('./filter-log.js'),\n formatTime: require('./format-time.js'),\n getPropertyValue: require('./get-property-value.js'),\n handleCustomLevelsNamesOpts: require('./handle-custom-levels-names-opts.js'),\n handleCustomLevelsOpts: require('./handle-custom-levels-opts.js'),\n interpretConditionals: require('./interpret-conditionals.js'),\n isObject: require('./is-object.js'),\n isValidDate: require('./is-valid-date.js'),\n joinLinesWithIndentation: require('./join-lines-with-indentation.js'),\n noop: require('./noop.js'),\n parseFactoryOptions: require('./parse-factory-options.js'),\n prettifyErrorLog: require('./prettify-error-log.js'),\n prettifyError: require('./prettify-error.js'),\n prettifyLevel: require('./prettify-level.js'),\n prettifyMessage: require('./prettify-message.js'),\n prettifyMetadata: require('./prettify-metadata.js'),\n prettifyObject: require('./prettify-object.js'),\n prettifyTime: require('./prettify-time.js'),\n splitPropertyKey: require('./split-property-key.js'),\n getLevelLabelData: require('./get-level-label-data')\n}\n\n// The remainder of this file consists of jsdoc blocks that are difficult to\n// determine a more appropriate \"home\" for. As an example, the blocks associated\n// with custom prettifiers could live in either the `prettify-level`,\n// `prettify-metadata`, or `prettify-time` files since they are the primary\n// files where such code is used. But we want a central place to define common\n// doc blocks, so we are picking this file as the answer.\n\n/**\n * A hash of log property names mapped to prettifier functions. When the\n * incoming log data is being processed for prettification, any key on the log\n * that matches a key in a custom prettifiers hash will be prettified using\n * that matching custom prettifier. The value passed to the custom prettifier\n * will the value associated with the corresponding log key.\n *\n * The hash may contain any arbitrary keys for arbitrary log properties, but it\n * may also contain a set of predefined key names that map to well-known log\n * properties. These keys are:\n *\n * + `time` (for the timestamp field)\n * + `level` (for the level label field; value may be a level number instead\n * of a level label)\n * + `hostname`\n * + `pid`\n * + `name`\n * + `caller`\n *\n * @typedef {Object.<string, CustomPrettifierFunc>} CustomPrettifiers\n */\n\n/**\n * A synchronous function to be used for prettifying a log property. It must\n * return a string.\n *\n * @typedef {function} CustomPrettifierFunc\n * @param {any} value The value to be prettified for the key associated with\n * the prettifier.\n * @returns {string}\n */\n\n/**\n * A tokenized string that indicates how the prettified log line should be\n * formatted. Tokens are either log properties enclosed in curly braces, e.g.\n * `{levelLabel}`, `{pid}`, or `{req.url}`, or conditional directives in curly\n * braces. The only conditional directives supported are `if` and `end`, e.g.\n * `{if pid}{pid}{end}`; every `if` must have a matching `end`. Nested\n * conditions are not supported.\n *\n * @typedef {string} MessageFormatString\n *\n * @example\n * `{levelLabel} - {if pid}{pid} - {end}url:{req.url}`\n */\n\n/**\n * @typedef {object} PrettifyMessageExtras\n * @property {object} colors Available color functions based on `useColor` (or `colorize`) context\n * the options.\n */\n\n/**\n * A function that accepts a log object, name of the message key, and name of\n * the level label key and returns a formatted log line.\n *\n * Note: this function must be synchronous.\n *\n * @typedef {function} MessageFormatFunction\n * @param {object} log The log object to be processed.\n * @param {string} messageKey The name of the key in the `log` object that\n * contains the log message.\n * @param {string} levelLabel The name of the key in the `log` object that\n * contains the log level name.\n * @param {PrettifyMessageExtras} extras Additional data available for message context\n * @returns {string}\n *\n * @example\n * function (log, messageKey, levelLabel) {\n * return `${log[levelLabel]} - ${log[messageKey]}`\n * }\n */\n", "'use strict'\n\nconst hasBuffer = typeof Buffer !== 'undefined'\nconst suspectProtoRx = /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*:/\nconst suspectConstructorRx = /\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/\n\n/**\n * @description Internal parse function that parses JSON text with security checks.\n * @private\n * @param {string|Buffer} text - The JSON text string or Buffer to parse.\n * @param {Function} [reviver] - The JSON.parse() optional reviver argument.\n * @param {import('./types').ParseOptions} [options] - Optional configuration object.\n * @returns {*} The parsed object.\n * @throws {SyntaxError} If a forbidden prototype property is found and `options.protoAction` or\n * `options.constructorAction` is `'error'`.\n */\nfunction _parse (text, reviver, options) {\n // Normalize arguments\n if (options == null) {\n if (reviver !== null && typeof reviver === 'object') {\n options = reviver\n reviver = undefined\n }\n }\n\n if (hasBuffer && Buffer.isBuffer(text)) {\n text = text.toString()\n }\n\n // BOM checker\n if (text && text.charCodeAt(0) === 0xFEFF) {\n text = text.slice(1)\n }\n\n // Parse normally, allowing exceptions\n const obj = JSON.parse(text, reviver)\n\n // Ignore null and non-objects\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n const protoAction = (options && options.protoAction) || 'error'\n const constructorAction = (options && options.constructorAction) || 'error'\n\n // options: 'error' (default) / 'remove' / 'ignore'\n if (protoAction === 'ignore' && constructorAction === 'ignore') {\n return obj\n }\n\n if (protoAction !== 'ignore' && constructorAction !== 'ignore') {\n if (suspectProtoRx.test(text) === false && suspectConstructorRx.test(text) === false) {\n return obj\n }\n } else if (protoAction !== 'ignore' && constructorAction === 'ignore') {\n if (suspectProtoRx.test(text) === false) {\n return obj\n }\n } else {\n if (suspectConstructorRx.test(text) === false) {\n return obj\n }\n }\n\n // Scan result for proto keys\n return filter(obj, { protoAction, constructorAction, safe: options && options.safe })\n}\n\n/**\n * @description Scans and filters an object for forbidden prototype properties.\n * @param {Object} obj - The object being scanned.\n * @param {import('./types').ParseOptions} [options] - Optional configuration object.\n * @returns {Object|null} The filtered object, or `null` if safe mode is enabled and issues are found.\n * @throws {SyntaxError} If a forbidden prototype property is found and `options.protoAction` or\n * `options.constructorAction` is `'error'`.\n */\nfunction filter (obj, { protoAction = 'error', constructorAction = 'error', safe } = {}) {\n let next = [obj]\n\n while (next.length) {\n const nodes = next\n next = []\n\n for (const node of nodes) {\n if (protoAction !== 'ignore' && Object.prototype.hasOwnProperty.call(node, '__proto__')) { // Avoid calling node.hasOwnProperty directly\n if (safe === true) {\n return null\n } else if (protoAction === 'error') {\n throw new SyntaxError('Object contains forbidden prototype property')\n }\n\n delete node.__proto__ // eslint-disable-line no-proto\n }\n\n if (constructorAction !== 'ignore' &&\n Object.prototype.hasOwnProperty.call(node, 'constructor') &&\n node.constructor !== null &&\n typeof node.constructor === 'object' &&\n Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')) { // Avoid calling node.hasOwnProperty directly\n if (safe === true) {\n return null\n } else if (constructorAction === 'error') {\n throw new SyntaxError('Object contains forbidden prototype property')\n }\n\n delete node.constructor\n }\n\n for (const key in node) {\n const value = node[key]\n if (value && typeof value === 'object') {\n next.push(value)\n }\n }\n }\n }\n return obj\n}\n\n/**\n * @description Parses a given JSON-formatted text into an object.\n * @param {string|Buffer} text - The JSON text string or Buffer to parse.\n * @param {Function} [reviver] - The `JSON.parse()` optional reviver argument, or options object.\n * @param {import('./types').ParseOptions} [options] - Optional configuration object.\n * @returns {*} The parsed object.\n * @throws {SyntaxError} If the JSON text is malformed or contains forbidden prototype properties\n * when `options.protoAction` or `options.constructorAction` is `'error'`.\n */\nfunction parse (text, reviver, options) {\n const { stackTraceLimit } = Error\n Error.stackTraceLimit = 0\n try {\n return _parse(text, reviver, options)\n } finally {\n Error.stackTraceLimit = stackTraceLimit\n }\n}\n\n/**\n * @description Safely parses a given JSON-formatted text into an object.\n * @param {string|Buffer} text - The JSON text string or Buffer to parse.\n * @param {Function} [reviver] - The `JSON.parse()` optional reviver argument.\n * @returns {*|null|undefined} The parsed object, `null` if security issues found, or `undefined` on parse error.\n */\nfunction safeParse (text, reviver) {\n const { stackTraceLimit } = Error\n Error.stackTraceLimit = 0\n try {\n return _parse(text, reviver, { safe: true })\n } catch {\n return undefined\n } finally {\n Error.stackTraceLimit = stackTraceLimit\n }\n}\n\nmodule.exports = parse\nmodule.exports.default = parse\nmodule.exports.parse = parse\nmodule.exports.safeParse = safeParse\nmodule.exports.scan = filter\n", "'use strict'\n\nmodule.exports = pretty\n\nconst sjs = require('secure-json-parse')\n\nconst isObject = require('./utils/is-object')\nconst prettifyErrorLog = require('./utils/prettify-error-log')\nconst prettifyLevel = require('./utils/prettify-level')\nconst prettifyMessage = require('./utils/prettify-message')\nconst prettifyMetadata = require('./utils/prettify-metadata')\nconst prettifyObject = require('./utils/prettify-object')\nconst prettifyTime = require('./utils/prettify-time')\nconst filterLog = require('./utils/filter-log')\n\nconst {\n LEVELS,\n LEVEL_KEY,\n LEVEL_NAMES\n} = require('./constants')\n\nconst jsonParser = input => {\n try {\n return { value: sjs.parse(input, { protoAction: 'remove' }) }\n } catch (err) {\n return { err }\n }\n}\n\n/**\n * Orchestrates processing the received log data according to the provided\n * configuration and returns a prettified log string.\n *\n * @typedef {function} LogPrettifierFunc\n * @param {string|object} inputData A log string or a log-like object.\n * @returns {string} A string that represents the prettified log data.\n */\nfunction pretty (inputData) {\n let log\n if (!isObject(inputData)) {\n const parsed = jsonParser(inputData)\n if (parsed.err || !isObject(parsed.value)) {\n // pass through\n return inputData + this.EOL\n }\n log = parsed.value\n } else {\n log = inputData\n }\n\n if (this.minimumLevel) {\n // We need to figure out if the custom levels has the desired minimum\n // level & use that one if found. If not, determine if the level exists\n // in the standard levels. In both cases, make sure we have the level\n // number instead of the level name.\n let condition\n if (this.useOnlyCustomProps) {\n condition = this.customLevels\n } else {\n condition = this.customLevelNames[this.minimumLevel] !== undefined\n }\n let minimum\n if (condition) {\n minimum = this.customLevelNames[this.minimumLevel]\n } else {\n minimum = LEVEL_NAMES[this.minimumLevel]\n }\n if (!minimum) {\n minimum = typeof this.minimumLevel === 'string'\n ? LEVEL_NAMES[this.minimumLevel]\n : LEVEL_NAMES[LEVELS[this.minimumLevel].toLowerCase()]\n }\n\n const level = log[this.levelKey === undefined ? LEVEL_KEY : this.levelKey]\n if (level < minimum) return\n }\n\n const prettifiedMessage = prettifyMessage({ log, context: this.context })\n\n if (this.ignoreKeys || this.includeKeys) {\n log = filterLog({ log, context: this.context })\n }\n\n const prettifiedLevel = prettifyLevel({\n log,\n context: {\n ...this.context,\n // This is odd. The colorizer ends up relying on the value of\n // `customProperties` instead of the original `customLevels` and\n // `customLevelNames`.\n ...this.context.customProperties\n }\n })\n const prettifiedMetadata = prettifyMetadata({ log, context: this.context })\n const prettifiedTime = prettifyTime({ log, context: this.context })\n\n let line = ''\n if (this.levelFirst && prettifiedLevel) {\n line = `${prettifiedLevel}`\n }\n\n if (prettifiedTime && line === '') {\n line = `${prettifiedTime}`\n } else if (prettifiedTime) {\n line = `${line} ${prettifiedTime}`\n }\n\n if (!this.levelFirst && prettifiedLevel) {\n if (line.length > 0) {\n line = `${line} ${prettifiedLevel}`\n } else {\n line = prettifiedLevel\n }\n }\n\n if (prettifiedMetadata) {\n if (line.length > 0) {\n line = `${line} ${prettifiedMetadata}:`\n } else {\n line = prettifiedMetadata\n }\n }\n\n if (line.endsWith(':') === false && line !== '') {\n line += ':'\n }\n\n if (prettifiedMessage !== undefined) {\n if (line.length > 0) {\n line = `${line} ${prettifiedMessage}`\n } else {\n line = prettifiedMessage\n }\n }\n\n if (line.length > 0 && !this.singleLine) {\n line += this.EOL\n }\n\n // pino@7+ does not log this anymore\n if (log.type === 'Error' && typeof log.stack === 'string') {\n const prettifiedErrorLog = prettifyErrorLog({ log, context: this.context })\n if (this.singleLine) line += this.EOL\n line += prettifiedErrorLog\n } else if (this.hideObject === false) {\n const skipKeys = [\n this.messageKey,\n this.levelKey,\n this.timestampKey\n ]\n .map((key) => key.replaceAll(/\\\\/g, ''))\n .filter(key => {\n return typeof log[key] === 'string' ||\n typeof log[key] === 'number' ||\n typeof log[key] === 'boolean'\n })\n const prettifiedObject = prettifyObject({\n log,\n skipKeys,\n context: this.context\n })\n\n // In single line mode, include a space only if prettified version isn't empty\n if (this.singleLine && !/^\\s$/.test(prettifiedObject)) {\n line += ' '\n }\n line += prettifiedObject\n }\n\n return line\n}\n", "'use strict'\n\nconst { isColorSupported } = require('colorette')\nconst pump = require('pump')\nconst { Transform } = require('node:stream')\nconst abstractTransport = require('pino-abstract-transport')\nconst colors = require('./lib/colors')\nconst {\n ERROR_LIKE_KEYS,\n LEVEL_KEY,\n LEVEL_LABEL,\n MESSAGE_KEY,\n TIMESTAMP_KEY\n} = require('./lib/constants')\nconst {\n buildSafeSonicBoom,\n parseFactoryOptions\n} = require('./lib/utils')\nconst pretty = require('./lib/pretty')\n\n/**\n * @typedef {object} PinoPrettyOptions\n * @property {boolean} [colorize] Indicates if colors should be used when\n * prettifying. The default will be determined by the terminal capabilities at\n * run time.\n * @property {boolean} [colorizeObjects=true] Apply coloring to rendered objects\n * when coloring is enabled.\n * @property {boolean} [crlf=false] End lines with `\\r\\n` instead of `\\n`.\n * @property {string|null} [customColors=null] A comma separated list of colors\n * to use for specific level labels, e.g. `err:red,info:blue`.\n * @property {string|null} [customLevels=null] A comma separated list of user\n * defined level names and numbers, e.g. `err:99,info:1`.\n * @property {CustomPrettifiers} [customPrettifiers={}] A set of prettifier\n * functions to apply to keys defined in this object.\n * @property {K_ERROR_LIKE_KEYS} [errorLikeObjectKeys] A list of string property\n * names to consider as error objects.\n * @property {string} [errorProps=''] A comma separated list of properties on\n * error objects to include in the output.\n * @property {boolean} [hideObject=false] When `true`, data objects will be\n * omitted from the output (except for error objects).\n * @property {string} [ignore='hostname'] A comma separated list of log keys\n * to omit when outputting the prettified log information.\n * @property {undefined|string} [include=undefined] A comma separated list of\n * log keys to include in the prettified log information. Only the keys in this\n * list will be included in the output.\n * @property {boolean} [levelFirst=false] When true, the log level will be the\n * first field in the prettified output.\n * @property {string} [levelKey='level'] The key name in the log data that\n * contains the level value for the log.\n * @property {string} [levelLabel='levelLabel'] Token name to use in\n * `messageFormat` to represent the name of the logged level.\n * @property {null|MessageFormatString|MessageFormatFunction} [messageFormat=null]\n * When a string, defines how the prettified line should be formatted according\n * to defined tokens. When a function, a synchronous function that returns a\n * formatted string.\n * @property {string} [messageKey='msg'] Defines the key in incoming logs that\n * contains the message of the log, if present.\n * @property {undefined|string|number} [minimumLevel=undefined] The minimum\n * level for logs that should be processed. Any logs below this level will\n * be omitted.\n * @property {object} [outputStream=process.stdout] The stream to write\n * prettified log lines to.\n * @property {boolean} [singleLine=false] When `true` any objects, except error\n * objects, in the log data will be printed as a single line instead as multiple\n * lines.\n * @property {string} [timestampKey='time'] Defines the key in incoming logs\n * that contains the timestamp of the log, if present.\n * @property {boolean|string} [translateTime=true] When true, will translate a\n * JavaScript date integer into a human-readable string. If set to a string,\n * it must be a format string.\n * @property {boolean} [useOnlyCustomProps=true] When true, only custom levels\n * and colors will be used if they have been provided.\n */\n\n/**\n * The default options that will be used when prettifying log lines.\n *\n * @type {PinoPrettyOptions}\n */\nconst defaultOptions = {\n colorize: isColorSupported,\n colorizeObjects: true,\n crlf: false,\n customColors: null,\n customLevels: null,\n customPrettifiers: {},\n errorLikeObjectKeys: ERROR_LIKE_KEYS,\n errorProps: '',\n hideObject: false,\n ignore: 'hostname',\n include: undefined,\n levelFirst: false,\n levelKey: LEVEL_KEY,\n levelLabel: LEVEL_LABEL,\n messageFormat: null,\n messageKey: MESSAGE_KEY,\n minimumLevel: undefined,\n outputStream: process.stdout,\n singleLine: false,\n timestampKey: TIMESTAMP_KEY,\n translateTime: true,\n useOnlyCustomProps: true\n}\n\n/**\n * Processes the supplied options and returns a function that accepts log data\n * and produces a prettified log string.\n *\n * @param {PinoPrettyOptions} options Configuration for the prettifier.\n * @returns {LogPrettifierFunc}\n */\nfunction prettyFactory (options) {\n const context = parseFactoryOptions(Object.assign({}, defaultOptions, options))\n return pretty.bind({ ...context, context })\n}\n\n/**\n * @typedef {PinoPrettyOptions} BuildStreamOpts\n * @property {object|number|string} [destination] A destination stream, file\n * descriptor, or target path to a file.\n * @property {boolean} [append]\n * @property {boolean} [mkdir]\n * @property {boolean} [sync=false]\n */\n\n/**\n * Constructs a {@link LogPrettifierFunc} and a stream to which the produced\n * prettified log data will be written.\n *\n * @param {BuildStreamOpts} opts\n * @returns {Transform | (Transform & OnUnknown)}\n */\nfunction build (opts = {}) {\n let pretty = prettyFactory(opts)\n let destination\n return abstractTransport(function (source) {\n source.on('message', function pinoConfigListener (message) {\n if (!message || message.code !== 'PINO_CONFIG') return\n Object.assign(opts, {\n messageKey: message.config.messageKey,\n errorLikeObjectKeys: Array.from(new Set([...(opts.errorLikeObjectKeys || ERROR_LIKE_KEYS), message.config.errorKey])),\n customLevels: message.config.levels.values\n })\n pretty = prettyFactory(opts)\n source.off('message', pinoConfigListener)\n })\n const stream = new Transform({\n objectMode: true,\n autoDestroy: true,\n transform (chunk, enc, cb) {\n const line = pretty(chunk)\n cb(null, line)\n }\n })\n\n if (typeof opts.destination === 'object' && typeof opts.destination.write === 'function') {\n destination = opts.destination\n } else {\n destination = buildSafeSonicBoom({\n dest: opts.destination || 1,\n append: opts.append,\n mkdir: opts.mkdir,\n sync: opts.sync // by default sonic will be async\n })\n }\n\n source.on('unknown', function (line) {\n destination.write(line + '\\n')\n })\n\n pump(source, stream, destination)\n return stream\n }, {\n parse: 'lines',\n close (err, cb) {\n destination.on('close', () => {\n cb(err)\n })\n }\n })\n}\n\nmodule.exports = build\nmodule.exports.build = build\nmodule.exports.PinoPretty = build\nmodule.exports.prettyFactory = prettyFactory\nmodule.exports.colorizerFactory = colors\nmodule.exports.isColorSupported = isColorSupported\nmodule.exports.default = build\n", "import commander from './index.js';\n\n// wrapper to provide named exports for ESM.\nexport const {\n program,\n createCommand,\n createArgument,\n createOption,\n CommanderError,\n InvalidArgumentError,\n InvalidOptionArgumentError, // deprecated old name\n Command,\n Argument,\n Option,\n Help,\n} = commander;\n", "import { realpath, stat } from \"node:fs/promises\";\nimport { dirname, extname, isAbsolute, join, resolve } from \"node:path\";\nimport { canaryDir } from \"../paths.js\";\nimport { ensureDaemonExtracted } from \"./extract.js\";\nimport type { DaemonCommand } from \"./spawn.js\";\n\n// Resolve the daemon launch command. Honors the CANARY_DAEMON env var for\n// custom entrypoints.\nexport async function findDaemonCommand(): Promise<DaemonCommand> {\n const override = process.env.CANARY_DAEMON;\n if (override && override.length > 0) {\n return commandFromEntry(override);\n }\n const bundle = await ensureDaemonExtracted();\n return {\n program: \"node\",\n args: [bundle],\n workdir: canaryDir(),\n requiresRuntimeInstall: true,\n };\n}\n\nasync function commandFromEntry(entry: string): Promise<DaemonCommand> {\n const abs = isAbsolute(entry) ? entry : resolve(entry);\n let resolved: string;\n try {\n resolved = await realpath(abs);\n } catch (err) {\n throw new Error(\n `Failed to resolve CANARY_DAEMON entry ${abs}: ${(err as Error).message}`\n );\n }\n const parent = dirname(resolved);\n if (!parent || parent === \".\" || parent === resolved) {\n throw new Error(\"Daemon entrypoint has no parent directory\");\n }\n const ext = extname(resolved); // includes the dot, case-sensitive \u2014 matches Rust\n\n switch (ext) {\n case \".js\":\n case \".mjs\":\n case \".cjs\":\n return {\n program: \"node\",\n args: [resolved],\n workdir: parent,\n requiresRuntimeInstall: false,\n };\n case \".ts\":\n case \".mts\":\n case \".cts\": {\n const tsxCli = await findTsxCli(resolved);\n return {\n program: \"node\",\n args: [tsxCli, resolved],\n workdir: parent,\n requiresRuntimeInstall: false,\n };\n }\n default:\n return {\n program: resolved,\n args: [],\n workdir: parent,\n requiresRuntimeInstall: false,\n };\n }\n}\n\nasync function findTsxCli(entry: string): Promise<string> {\n let dir = dirname(entry);\n while (true) {\n const candidate = join(dir, \"node_modules\", \"tsx\", \"dist\", \"cli.mjs\");\n try {\n const info = await stat(candidate);\n if (info.isFile()) {\n return candidate;\n }\n } catch {\n // try parent\n }\n const parent = dirname(dir);\n if (parent === dir) {\n break;\n }\n dir = parent;\n }\n throw new Error(\n \"Could not locate the tsx runtime required to launch the TypeScript daemon.\"\n );\n}\n", "import { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { daemonPipeName } from \"./ipc/pipename.js\";\n\nconst DIR_NAME = \".canary\";\nconst DAEMON_SOCKET = \"daemon.sock\";\nconst DAEMON_PID = \"daemon.pid\";\nconst DAEMON_BUNDLE = \"daemon.mjs\";\nconst SANDBOX_CLIENT = \"sandbox-client.js\";\nconst PACKAGE_JSON = \"package.json\";\nconst TMP_DIR = \"tmp\";\nconst SESSIONS_DIR = \"sessions\";\nconst SESSION_RECORD = \"session.json\";\nconst SESSION_MANIFEST = \"manifest.json\";\nconst SESSION_RESULTS = \"results.json\";\nconst SESSION_REPORT = \"report.html\";\n\nexport function home(): string {\n const dir = homedir();\n if (!dir) {\n throw new Error(\"Could not determine home directory\");\n }\n return dir;\n}\n\nexport function canaryDir(): string {\n return join(home(), DIR_NAME);\n}\n\nexport function daemonSocketPath(): string {\n return join(canaryDir(), DAEMON_SOCKET);\n}\n\nexport function daemonPidPath(): string {\n return join(canaryDir(), DAEMON_PID);\n}\n\nexport function daemonBundlePath(): string {\n return join(canaryDir(), DAEMON_BUNDLE);\n}\n\nexport function sandboxClientPath(): string {\n return join(canaryDir(), SANDBOX_CLIENT);\n}\n\nexport function packageJsonPath(): string {\n return join(canaryDir(), PACKAGE_JSON);\n}\n\nexport function tmpDir(): string {\n return join(canaryDir(), TMP_DIR);\n}\n\n// Endpoint path used by net.createConnection / createServer. On POSIX this\n// is a Unix domain socket path; on Windows it is a named-pipe path\n// (`\\\\.\\pipe\\canary-daemon-{user}`) \u2014 Node's `net` module accepts both.\nexport function daemonEndpoint(): string {\n if (process.platform === \"win32\") {\n return `\\\\\\\\.\\\\pipe\\\\${daemonPipeName()}`;\n }\n return daemonSocketPath();\n}\n\n// ---- Session artifact layout: ~/.canary/sessions/<id>/ ----\n// Shared by the daemon (writes trace/video/HAR/console + manifest) and the\n// `canary` orchestrator (writes session.json, reads artifacts, renders report).\n\nexport function sessionsRootDir(): string {\n return join(canaryDir(), SESSIONS_DIR);\n}\n\nexport function sessionDir(sessionId: string): string {\n return join(sessionsRootDir(), sessionId);\n}\n\nexport function sessionRecordPath(sessionId: string): string {\n return join(sessionDir(sessionId), SESSION_RECORD);\n}\n\nexport function sessionManifestPath(sessionId: string): string {\n return join(sessionDir(sessionId), SESSION_MANIFEST);\n}\n\n// Canonical, schema-versioned per-session record (references every artifact).\nexport function sessionResultsPath(sessionId: string): string {\n return join(sessionDir(sessionId), SESSION_RESULTS);\n}\n\nexport function sessionReportPath(sessionId: string): string {\n return join(sessionDir(sessionId), SESSION_REPORT);\n}\n", "import { homedir } from \"node:os\";\nimport { basename, sep } from \"node:path\";\n\n// Make a value safe for use in a socket/pipe name: keep ASCII letters/digits\n// and `. _ -`, replace anything else with `-`, trim leading/trailing `-`,\n// lowercase, and fall back to \"user\" if empty.\nexport function sanitizePipeSegment(value: string): string {\n const out = value\n .replace(/[^A-Za-z0-9._-]/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .toLowerCase();\n return out === \"\" ? \"user\" : out;\n}\n\nexport function currentUserSegment(): string {\n const username = (process.env.USERNAME ?? \"\").trim();\n if (username !== \"\") {\n return username;\n }\n const user = (process.env.USER ?? \"\").trim();\n if (user !== \"\") {\n return user;\n }\n try {\n const home = homedir();\n if (home) {\n const base = basename(home);\n if (base !== \".\" && base !== sep) {\n return base;\n }\n }\n } catch {\n // fall through\n }\n return \"user\";\n}\n\nexport function daemonPipeName(): string {\n return `canary-daemon-${sanitizePipeSegment(currentUserSegment())}`;\n}\n", "import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport {\n DAEMON_RUNTIME_DEPENDENCIES,\n EMBEDDED_PACKAGE_JSON,\n} from \"@usecanary/protocol\";\nimport { DAEMON_BUNDLE, SANDBOX_CLIENT } from \"../assets/embedded.generated.js\";\nimport {\n canaryDir,\n daemonBundlePath,\n packageJsonPath,\n sandboxClientPath,\n} from \"../paths.js\";\n\nconst DAEMON_BUNDLE_TEXT: string = DAEMON_BUNDLE;\nconst SANDBOX_CLIENT_TEXT: string = SANDBOX_CLIENT;\nconst PACKAGE_JSON_TEXT: string = EMBEDDED_PACKAGE_JSON;\n\n// Write the embedded daemon bundle, sandbox client, and package.json\n// template into ~/.canary/ if missing or stale. Returns the daemon bundle path.\nexport async function ensureDaemonExtracted(): Promise<string> {\n const dir = canaryDir();\n await mkdir(dir, { recursive: true });\n\n const daemonPath = daemonBundlePath();\n const sandboxPath = sandboxClientPath();\n const pkgPath = packageJsonPath();\n\n await Promise.all([\n syncTextFile(daemonPath, DAEMON_BUNDLE_TEXT),\n syncTextFile(sandboxPath, SANDBOX_CLIENT_TEXT),\n syncTextFile(pkgPath, PACKAGE_JSON_TEXT),\n ]);\n\n return daemonPath;\n}\n\n// Returns true if the npm-managed runtime has been installed (i.e.\n// `canary install` has been run). The set checked is derived from the single\n// source of truth (DAEMON_RUNTIME_DEPENDENCIES), so a new runtime dependency is\n// gated automatically without editing this allowlist.\nexport async function embeddedRuntimeInstalled(\n baseDir: string\n): Promise<boolean> {\n const deps = Object.keys(DAEMON_RUNTIME_DEPENDENCIES);\n const installed = await Promise.all(\n deps.map((pkg) => dependencyInstalled(baseDir, pkg))\n );\n return installed.every(Boolean);\n}\n\nasync function dependencyInstalled(\n baseDir: string,\n pkg: string\n): Promise<boolean> {\n try {\n await readFile(`${baseDir}/node_modules/${pkg}/package.json`);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function syncTextFile(path: string, contents: string): Promise<void> {\n try {\n const existing = await readFile(path, \"utf8\");\n if (existing === contents) {\n return;\n }\n } catch (err) {\n const code = (err as NodeJS.ErrnoException).code;\n if (code !== \"ENOENT\") {\n throw new Error(`Failed to inspect ${path}: ${(err as Error).message}`);\n }\n }\n await writeFile(path, contents);\n}\n", "export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n", "export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n", "import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n", "import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n", "import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n", "import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n", "export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n", "import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n", "// Canary daemon IPC protocol \u2014 single source of truth.\n//\n// All requests and responses on the daemon's named-pipe / Unix socket are\n// validated against these Zod schemas. CLIs (`canary`, `canary-browser`)\n// import the inferred TypeScript types only; the daemon imports the schemas\n// for runtime validation.\n//\n// Previously this lived in two places (daemon Zod + CLI plain types) with a\n// CI drift-check. The extraction here eliminates that class of bug entirely.\n\nimport { z } from \"zod\";\n\n// ---------- Requests ----------\n\nconst RequestBaseSchema = z.object({\n id: z.string().min(1),\n});\n\nexport const ExecuteRequestSchema = RequestBaseSchema.extend({\n type: z.literal(\"execute\"),\n browser: z.string().min(1).default(\"default\"),\n script: z.string(),\n headless: z.boolean().optional(),\n ignoreHTTPSErrors: z.boolean().optional(),\n connect: z.string().min(1).optional(),\n timeoutMs: z.number().int().positive().optional(),\n initScripts: z.array(z.string()).optional(),\n // Optional step label. When the target browser is a session context, the\n // daemon wraps the run in tracing.group(step)/groupEnd and screenshots the\n // active page to the session's screenshots/<step>.png after a successful run.\n step: z.string().min(1).max(200).optional(),\n});\n\nexport const BrowsersRequestSchema = RequestBaseSchema.extend({\n type: z.literal(\"browsers\"),\n});\n\nexport const BrowserStopRequestSchema = RequestBaseSchema.extend({\n type: z.literal(\"browser-stop\"),\n browser: z.string().min(1),\n});\n\nexport const StatusRequestSchema = RequestBaseSchema.extend({\n type: z.literal(\"status\"),\n});\n\nexport const InstallRequestSchema = RequestBaseSchema.extend({\n type: z.literal(\"install\"),\n});\n\nexport const StopRequestSchema = RequestBaseSchema.extend({\n type: z.literal(\"stop\"),\n});\n\n// ---------- Session capture ----------\n\n// Which auditability artifacts a session records. All default on; the\n// orchestrator turns individual ones off via `--no-<kind>` flags.\nexport const CaptureOptionsSchema = z.object({\n trace: z.boolean().default(true),\n video: z.boolean().default(true),\n har: z.boolean().default(true),\n console: z.boolean().default(true),\n});\n\n// Session ids double as on-disk directory names and the reserved browser key\n// `__session__<id>`. Reject path traversal and anything outside a safe set.\nconst SessionIdSchema = z\n .string()\n .min(1)\n .max(128)\n .regex(/^(?!.*\\.\\.)[A-Za-z0-9._-]+$/, \"invalid session id\");\n\nexport const SessionStartRequestSchema = RequestBaseSchema.extend({\n type: z.literal(\"session-start\"),\n sessionId: SessionIdSchema,\n name: z.string().min(1).max(200).optional(),\n headless: z.boolean().optional(),\n ignoreHTTPSErrors: z.boolean().optional(),\n capture: CaptureOptionsSchema.default({}),\n});\n\nexport const SessionEndRequestSchema = RequestBaseSchema.extend({\n type: z.literal(\"session-end\"),\n sessionId: SessionIdSchema,\n reason: z.enum([\"end\", \"abort\"]).default(\"end\"),\n});\n\nexport const SessionStatusRequestSchema = RequestBaseSchema.extend({\n type: z.literal(\"session-status\"),\n sessionId: SessionIdSchema,\n});\n\nexport const SessionListRequestSchema = RequestBaseSchema.extend({\n type: z.literal(\"session-list\"),\n});\n\nexport const RequestSchema = z.discriminatedUnion(\"type\", [\n ExecuteRequestSchema,\n BrowsersRequestSchema,\n BrowserStopRequestSchema,\n StatusRequestSchema,\n InstallRequestSchema,\n StopRequestSchema,\n SessionStartRequestSchema,\n SessionEndRequestSchema,\n SessionStatusRequestSchema,\n SessionListRequestSchema,\n]);\n\nexport type Request = z.infer<typeof RequestSchema>;\nexport type ExecuteRequest = z.infer<typeof ExecuteRequestSchema>;\nexport type BrowsersRequest = z.infer<typeof BrowsersRequestSchema>;\nexport type BrowserStopRequest = z.infer<typeof BrowserStopRequestSchema>;\nexport type StatusRequest = z.infer<typeof StatusRequestSchema>;\nexport type InstallRequest = z.infer<typeof InstallRequestSchema>;\nexport type StopRequest = z.infer<typeof StopRequestSchema>;\nexport type SessionStartRequest = z.infer<typeof SessionStartRequestSchema>;\nexport type SessionEndRequest = z.infer<typeof SessionEndRequestSchema>;\nexport type SessionStatusRequest = z.infer<typeof SessionStatusRequestSchema>;\nexport type SessionListRequest = z.infer<typeof SessionListRequestSchema>;\nexport type CaptureOptions = z.infer<typeof CaptureOptionsSchema>;\n\n// ---------- Responses ----------\n\nconst ResponseBaseSchema = z.object({\n id: z.string().min(1),\n});\n\nexport const StdoutMessageSchema = ResponseBaseSchema.extend({\n type: z.literal(\"stdout\"),\n data: z.string(),\n});\n\nexport const StderrMessageSchema = ResponseBaseSchema.extend({\n type: z.literal(\"stderr\"),\n data: z.string(),\n});\n\nexport const CompleteMessageSchema = ResponseBaseSchema.extend({\n type: z.literal(\"complete\"),\n success: z.literal(true),\n});\n\nexport const ErrorMessageSchema = ResponseBaseSchema.extend({\n type: z.literal(\"error\"),\n message: z.string(),\n});\n\nexport const ResultMessageSchema = ResponseBaseSchema.extend({\n type: z.literal(\"result\"),\n data: z.unknown(),\n});\n\nexport const ResponseSchema = z.discriminatedUnion(\"type\", [\n StdoutMessageSchema,\n StderrMessageSchema,\n CompleteMessageSchema,\n ErrorMessageSchema,\n ResultMessageSchema,\n]);\n\nexport type Response = z.infer<typeof ResponseSchema>;\nexport type StdoutMessage = z.infer<typeof StdoutMessageSchema>;\nexport type StderrMessage = z.infer<typeof StderrMessageSchema>;\nexport type CompleteMessage = z.infer<typeof CompleteMessageSchema>;\nexport type ErrorMessage = z.infer<typeof ErrorMessageSchema>;\nexport type ResultMessage = z.infer<typeof ResultMessageSchema>;\n\n// ---------- Result payload shapes ----------\n// These are the `data` carried by certain ResultMessage responses. They're\n// not validated on the wire (the daemon shapes them, the CLI consumes), but\n// they're typed here so both sides agree.\n\nexport interface BrowserSummary {\n name: string;\n pages: string[];\n status: \"running\" | \"connected\" | \"disconnected\";\n type: \"launched\" | \"connected\";\n}\n\nexport interface StatusSummary {\n browserCount: number;\n browsers: BrowserSummary[];\n pid: number;\n socketPath: string;\n uptimeMs: number;\n}\n\n// ---------- Session result payloads ----------\n// Shaped by the daemon, consumed by the `canary` orchestrator. Like the other\n// result payloads, these are not validated on the wire.\n\nexport type SessionPhase = \"active\" | \"ending\" | \"ended\" | \"aborted\" | \"failed\";\n\nexport interface ArtifactInfo {\n bytes: number;\n kind: \"trace\" | \"video\" | \"har\" | \"console\" | \"screenshot\";\n pageName?: string;\n path: string;\n}\n\nexport interface SessionSummary {\n artifactsDir: string;\n browser: string;\n capture: CaptureOptions;\n endedAt?: number;\n headless: boolean;\n name?: string;\n pageCount: number;\n phase: SessionPhase;\n runCount: number;\n sessionId: string;\n startedAt: number;\n}\n\nexport interface SessionStartResult {\n session: SessionSummary;\n}\n\nexport interface SessionEndResult {\n artifacts: ArtifactInfo[];\n manifestPath: string;\n session: SessionSummary;\n}\n\nexport interface SessionStatusResult {\n session: SessionSummary;\n}\n\nexport interface SessionListResult {\n sessions: SessionSummary[];\n}\n\n// Deterministic, content-derived hash so two distinct step names can't map to\n// the same slug. Pure JS (djb2) \u2014 no node:crypto \u2014 so @usecanary/protocol stays\n// dependency-light. 32-bit, base36; collision across a session's handful of\n// steps is astronomically unlikely.\nfunction slugHash(value: string): string {\n // djb2 in modular arithmetic (no bitwise ops). Each step stays under 2^53, so\n // it's exact; the result is a stable non-negative base36 string.\n let hash = 5381;\n for (let i = 0; i < value.length; i += 1) {\n hash = (hash * 33 + value.charCodeAt(i)) % 2_147_483_647;\n }\n return hash.toString(36);\n}\n\n// Filesystem-safe screenshot filename stem for a session step. Shared by the\n// daemon (which writes screenshots/<slug>.png) and the orchestrator's report\n// (which maps steps \u2192 screenshots) so the two never drift. A short hash of the\n// ORIGINAL name is appended so distinct names that sanitize to the same stem\n// (e.g. \"login/admin\" vs \"login-admin\", or names differing only past char 200)\n// don't collide on one screenshot file and get misattributed in the report.\nexport function sessionStepSlug(step: string): string {\n const base =\n step\n .replace(/[^A-Za-z0-9._-]/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 200) || \"step\";\n return `${base}-${slugHash(step)}`;\n}\n\n// ---------- Session artifact layout ----------\n// Filenames/dirs the daemon writes under a session's artifacts dir. Shared with\n// the orchestrator's on-disk report fallback (endResultFromDisk) so the two\n// always enumerate the same set \u2014 renaming an artifact here updates both.\nexport const SESSION_TRACE_FILE = \"trace.zip\";\nexport const SESSION_HAR_FILE = \"network.har\";\nexport const SESSION_CONSOLE_FILE = \"console.log\";\nexport const SESSION_VIDEO_DIR = \"video\";\nexport const SESSION_VIDEO_EXT = \".webm\";\nexport const SESSION_SCREENSHOTS_DIR = \"screenshots\";\nexport const SESSION_SCREENSHOT_EXT = \".png\";\n\n// ---------- Daemon runtime ----------\n// Single source of truth for the npm-managed runtime the daemon needs in\n// ~/.canary (installed by `canary install`). Both the daemon's socket `install`\n// handler (apps/canary-daemon) and the daemon-client extract path write the\n// identical EMBEDDED_PACKAGE_JSON, and the readiness check derives its allowlist\n// from DAEMON_RUNTIME_DEPENDENCIES \u2014 so adding a dependency can't drift them.\n\nexport const DAEMON_RUNTIME_DEPENDENCIES: Record<string, string> = {\n pino: \"^9.5.0\",\n playwright: \"1.58.2\",\n \"playwright-core\": \"1.58.2\",\n \"quickjs-emscripten\": \"^0.32.0\",\n};\n\nexport const EMBEDDED_PACKAGE_JSON: string = JSON.stringify(\n {\n name: \"canary-runtime\",\n private: true,\n type: \"module\",\n dependencies: DAEMON_RUNTIME_DEPENDENCIES,\n },\n null,\n 2\n);\n\n// ---------- Helpers ----------\n\ninterface ParseSuccess {\n request: Request;\n success: true;\n}\ninterface ParseFailure {\n error: string;\n id?: string;\n success: false;\n}\n\nfunction describeZodError(error: z.ZodError): string {\n return error.issues\n .map((issue) => {\n const path = issue.path.length > 0 ? issue.path.join(\".\") : \"request\";\n return `${path}: ${issue.message}`;\n })\n .join(\"; \");\n}\n\nfunction extractId(value: unknown): string | undefined {\n if (!value || typeof value !== \"object\") {\n return;\n }\n const maybeId = (value as { id?: unknown }).id;\n return typeof maybeId === \"string\" && maybeId.length > 0\n ? maybeId\n : undefined;\n}\n\nexport function parseRequest(line: string): ParseSuccess | ParseFailure {\n let parsed: unknown;\n\n try {\n parsed = JSON.parse(line);\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : \"Invalid JSON request\",\n };\n }\n\n const result = RequestSchema.safeParse(parsed);\n if (!result.success) {\n const id = extractId(parsed);\n return {\n success: false,\n error: describeZodError(result.error),\n ...(id === undefined ? {} : { id }),\n };\n }\n\n return {\n success: true,\n request: result.data,\n };\n}\n\nexport function serialize(message: Response): string {\n return `${JSON.stringify(ResponseSchema.parse(message))}\\n`;\n}\n", "// AUTO-GENERATED by scripts/embed-daemon.mjs. DO NOT EDIT.\n// Sources: apps/canary-daemon/dist/. Regenerate by running `pnpm prebuild`.\n/* eslint-disable */\n\nexport const DAEMON_BUNDLE: string = \"var __defProp = Object.defineProperty;\\nvar __export = (target, all) => {\\n for (var name in all)\\n __defProp(target, name, { get: all[name], enumerable: true });\\n};\\n\\n// src/daemon.ts\\nimport { spawn } from \\\"node:child_process\\\";\\nimport { mkdir as mkdir4, unlink, writeFile as writeFile2 } from \\\"node:fs/promises\\\";\\nimport net from \\\"node:net\\\";\\nimport path6 from \\\"node:path\\\";\\n\\n// ../../packages/logger/src/index.ts\\nimport pino from \\\"pino\\\";\\nvar VALID_LEVELS = /* @__PURE__ */ new Set([\\n \\\"trace\\\",\\n \\\"debug\\\",\\n \\\"info\\\",\\n \\\"warn\\\",\\n \\\"error\\\",\\n \\\"fatal\\\",\\n \\\"silent\\\"\\n]);\\nfunction resolveLevel(opts = {}) {\\n if (opts.level) {\\n return opts.level;\\n }\\n const fromEnv = process.env.CANARY_LOG_LEVEL?.trim().toLowerCase();\\n if (fromEnv && VALID_LEVELS.has(fromEnv)) {\\n return fromEnv;\\n }\\n return opts.fallbackLevel ?? \\\"info\\\";\\n}\\nfunction createLogger(opts = {}) {\\n const options = {\\n level: resolveLevel(opts),\\n timestamp: pino.stdTimeFunctions.isoTime,\\n // Serialize `err`/`error` bindings into structured { type, message, stack }.\\n serializers: { err: pino.stdSerializers.err },\\n formatters: {\\n // Log the level name (\\\"info\\\") instead of the numeric code (30).\\n level: (label) => ({ level: label })\\n }\\n };\\n if (opts.name) {\\n options.name = opts.name;\\n }\\n if (opts.redact) {\\n options.redact = opts.redact;\\n }\\n const stream = opts.stream ?? pino.destination({\\n dest: opts.destination ?? 2,\\n sync: opts.sync ?? false,\\n mkdir: true\\n });\\n const logger = pino(options, stream);\\n return opts.base ? logger.child(opts.base) : logger;\\n}\\n\\n// ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js\\nvar external_exports = {};\\n__export(external_exports, {\\n BRAND: () => BRAND,\\n DIRTY: () => DIRTY,\\n EMPTY_PATH: () => EMPTY_PATH,\\n INVALID: () => INVALID,\\n NEVER: () => NEVER,\\n OK: () => OK,\\n ParseStatus: () => ParseStatus,\\n Schema: () => ZodType,\\n ZodAny: () => ZodAny,\\n ZodArray: () => ZodArray,\\n ZodBigInt: () => ZodBigInt,\\n ZodBoolean: () => ZodBoolean,\\n ZodBranded: () => ZodBranded,\\n ZodCatch: () => ZodCatch,\\n ZodDate: () => ZodDate,\\n ZodDefault: () => ZodDefault,\\n ZodDiscriminatedUnion: () => ZodDiscriminatedUnion,\\n ZodEffects: () => ZodEffects,\\n ZodEnum: () => ZodEnum,\\n ZodError: () => ZodError,\\n ZodFirstPartyTypeKind: () => ZodFirstPartyTypeKind,\\n ZodFunction: () => ZodFunction,\\n ZodIntersection: () => ZodIntersection,\\n ZodIssueCode: () => ZodIssueCode,\\n ZodLazy: () => ZodLazy,\\n ZodLiteral: () => ZodLiteral,\\n ZodMap: () => ZodMap,\\n ZodNaN: () => ZodNaN,\\n ZodNativeEnum: () => ZodNativeEnum,\\n ZodNever: () => ZodNever,\\n ZodNull: () => ZodNull,\\n ZodNullable: () => ZodNullable,\\n ZodNumber: () => ZodNumber,\\n ZodObject: () => ZodObject,\\n ZodOptional: () => ZodOptional,\\n ZodParsedType: () => ZodParsedType,\\n ZodPipeline: () => ZodPipeline,\\n ZodPromise: () => ZodPromise,\\n ZodReadonly: () => ZodReadonly,\\n ZodRecord: () => ZodRecord,\\n ZodSchema: () => ZodType,\\n ZodSet: () => ZodSet,\\n ZodString: () => ZodString,\\n ZodSymbol: () => ZodSymbol,\\n ZodTransformer: () => ZodEffects,\\n ZodTuple: () => ZodTuple,\\n ZodType: () => ZodType,\\n ZodUndefined: () => ZodUndefined,\\n ZodUnion: () => ZodUnion,\\n ZodUnknown: () => ZodUnknown,\\n ZodVoid: () => ZodVoid,\\n addIssueToContext: () => addIssueToContext,\\n any: () => anyType,\\n array: () => arrayType,\\n bigint: () => bigIntType,\\n boolean: () => booleanType,\\n coerce: () => coerce,\\n custom: () => custom,\\n date: () => dateType,\\n datetimeRegex: () => datetimeRegex,\\n defaultErrorMap: () => en_default,\\n discriminatedUnion: () => discriminatedUnionType,\\n effect: () => effectsType,\\n enum: () => enumType,\\n function: () => functionType,\\n getErrorMap: () => getErrorMap,\\n getParsedType: () => getParsedType,\\n instanceof: () => instanceOfType,\\n intersection: () => intersectionType,\\n isAborted: () => isAborted,\\n isAsync: () => isAsync,\\n isDirty: () => isDirty,\\n isValid: () => isValid,\\n late: () => late,\\n lazy: () => lazyType,\\n literal: () => literalType,\\n makeIssue: () => makeIssue,\\n map: () => mapType,\\n nan: () => nanType,\\n nativeEnum: () => nativeEnumType,\\n never: () => neverType,\\n null: () => nullType,\\n nullable: () => nullableType,\\n number: () => numberType,\\n object: () => objectType,\\n objectUtil: () => objectUtil,\\n oboolean: () => oboolean,\\n onumber: () => onumber,\\n optional: () => optionalType,\\n ostring: () => ostring,\\n pipeline: () => pipelineType,\\n preprocess: () => preprocessType,\\n promise: () => promiseType,\\n quotelessJson: () => quotelessJson,\\n record: () => recordType,\\n set: () => setType,\\n setErrorMap: () => setErrorMap,\\n strictObject: () => strictObjectType,\\n string: () => stringType,\\n symbol: () => symbolType,\\n transformer: () => effectsType,\\n tuple: () => tupleType,\\n undefined: () => undefinedType,\\n union: () => unionType,\\n unknown: () => unknownType,\\n util: () => util,\\n void: () => voidType\\n});\\n\\n// ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js\\nvar util;\\n(function(util3) {\\n util3.assertEqual = (_) => {\\n };\\n function assertIs(_arg) {\\n }\\n util3.assertIs = assertIs;\\n function assertNever(_x) {\\n throw new Error();\\n }\\n util3.assertNever = assertNever;\\n util3.arrayToEnum = (items) => {\\n const obj = {};\\n for (const item of items) {\\n obj[item] = item;\\n }\\n return obj;\\n };\\n util3.getValidEnumValues = (obj) => {\\n const validKeys = util3.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \\\"number\\\");\\n const filtered = {};\\n for (const k of validKeys) {\\n filtered[k] = obj[k];\\n }\\n return util3.objectValues(filtered);\\n };\\n util3.objectValues = (obj) => {\\n return util3.objectKeys(obj).map(function(e) {\\n return obj[e];\\n });\\n };\\n util3.objectKeys = typeof Object.keys === \\\"function\\\" ? (obj) => Object.keys(obj) : (object) => {\\n const keys = [];\\n for (const key in object) {\\n if (Object.prototype.hasOwnProperty.call(object, key)) {\\n keys.push(key);\\n }\\n }\\n return keys;\\n };\\n util3.find = (arr, checker) => {\\n for (const item of arr) {\\n if (checker(item))\\n return item;\\n }\\n return void 0;\\n };\\n util3.isInteger = typeof Number.isInteger === \\\"function\\\" ? (val) => Number.isInteger(val) : (val) => typeof val === \\\"number\\\" && Number.isFinite(val) && Math.floor(val) === val;\\n function joinValues(array, separator = \\\" | \\\") {\\n return array.map((val) => typeof val === \\\"string\\\" ? `'${val}'` : val).join(separator);\\n }\\n util3.joinValues = joinValues;\\n util3.jsonStringifyReplacer = (_, value) => {\\n if (typeof value === \\\"bigint\\\") {\\n return value.toString();\\n }\\n return value;\\n };\\n})(util || (util = {}));\\nvar objectUtil;\\n(function(objectUtil2) {\\n objectUtil2.mergeShapes = (first, second) => {\\n return {\\n ...first,\\n ...second\\n // second overwrites first\\n };\\n };\\n})(objectUtil || (objectUtil = {}));\\nvar ZodParsedType = util.arrayToEnum([\\n \\\"string\\\",\\n \\\"nan\\\",\\n \\\"number\\\",\\n \\\"integer\\\",\\n \\\"float\\\",\\n \\\"boolean\\\",\\n \\\"date\\\",\\n \\\"bigint\\\",\\n \\\"symbol\\\",\\n \\\"function\\\",\\n \\\"undefined\\\",\\n \\\"null\\\",\\n \\\"array\\\",\\n \\\"object\\\",\\n \\\"unknown\\\",\\n \\\"promise\\\",\\n \\\"void\\\",\\n \\\"never\\\",\\n \\\"map\\\",\\n \\\"set\\\"\\n]);\\nvar getParsedType = (data) => {\\n const t = typeof data;\\n switch (t) {\\n case \\\"undefined\\\":\\n return ZodParsedType.undefined;\\n case \\\"string\\\":\\n return ZodParsedType.string;\\n case \\\"number\\\":\\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\\n case \\\"boolean\\\":\\n return ZodParsedType.boolean;\\n case \\\"function\\\":\\n return ZodParsedType.function;\\n case \\\"bigint\\\":\\n return ZodParsedType.bigint;\\n case \\\"symbol\\\":\\n return ZodParsedType.symbol;\\n case \\\"object\\\":\\n if (Array.isArray(data)) {\\n return ZodParsedType.array;\\n }\\n if (data === null) {\\n return ZodParsedType.null;\\n }\\n if (data.then && typeof data.then === \\\"function\\\" && data.catch && typeof data.catch === \\\"function\\\") {\\n return ZodParsedType.promise;\\n }\\n if (typeof Map !== \\\"undefined\\\" && data instanceof Map) {\\n return ZodParsedType.map;\\n }\\n if (typeof Set !== \\\"undefined\\\" && data instanceof Set) {\\n return ZodParsedType.set;\\n }\\n if (typeof Date !== \\\"undefined\\\" && data instanceof Date) {\\n return ZodParsedType.date;\\n }\\n return ZodParsedType.object;\\n default:\\n return ZodParsedType.unknown;\\n }\\n};\\n\\n// ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js\\nvar ZodIssueCode = util.arrayToEnum([\\n \\\"invalid_type\\\",\\n \\\"invalid_literal\\\",\\n \\\"custom\\\",\\n \\\"invalid_union\\\",\\n \\\"invalid_union_discriminator\\\",\\n \\\"invalid_enum_value\\\",\\n \\\"unrecognized_keys\\\",\\n \\\"invalid_arguments\\\",\\n \\\"invalid_return_type\\\",\\n \\\"invalid_date\\\",\\n \\\"invalid_string\\\",\\n \\\"too_small\\\",\\n \\\"too_big\\\",\\n \\\"invalid_intersection_types\\\",\\n \\\"not_multiple_of\\\",\\n \\\"not_finite\\\"\\n]);\\nvar quotelessJson = (obj) => {\\n const json = JSON.stringify(obj, null, 2);\\n return json.replace(/\\\"([^\\\"]+)\\\":/g, \\\"$1:\\\");\\n};\\nvar ZodError = class _ZodError extends Error {\\n get errors() {\\n return this.issues;\\n }\\n constructor(issues) {\\n super();\\n this.issues = [];\\n this.addIssue = (sub) => {\\n this.issues = [...this.issues, sub];\\n };\\n this.addIssues = (subs = []) => {\\n this.issues = [...this.issues, ...subs];\\n };\\n const actualProto = new.target.prototype;\\n if (Object.setPrototypeOf) {\\n Object.setPrototypeOf(this, actualProto);\\n } else {\\n this.__proto__ = actualProto;\\n }\\n this.name = \\\"ZodError\\\";\\n this.issues = issues;\\n }\\n format(_mapper) {\\n const mapper = _mapper || function(issue) {\\n return issue.message;\\n };\\n const fieldErrors = { _errors: [] };\\n const processError = (error) => {\\n for (const issue of error.issues) {\\n if (issue.code === \\\"invalid_union\\\") {\\n issue.unionErrors.map(processError);\\n } else if (issue.code === \\\"invalid_return_type\\\") {\\n processError(issue.returnTypeError);\\n } else if (issue.code === \\\"invalid_arguments\\\") {\\n processError(issue.argumentsError);\\n } else if (issue.path.length === 0) {\\n fieldErrors._errors.push(mapper(issue));\\n } else {\\n let curr = fieldErrors;\\n let i = 0;\\n while (i < issue.path.length) {\\n const el = issue.path[i];\\n const terminal = i === issue.path.length - 1;\\n if (!terminal) {\\n curr[el] = curr[el] || { _errors: [] };\\n } else {\\n curr[el] = curr[el] || { _errors: [] };\\n curr[el]._errors.push(mapper(issue));\\n }\\n curr = curr[el];\\n i++;\\n }\\n }\\n }\\n };\\n processError(this);\\n return fieldErrors;\\n }\\n static assert(value) {\\n if (!(value instanceof _ZodError)) {\\n throw new Error(`Not a ZodError: ${value}`);\\n }\\n }\\n toString() {\\n return this.message;\\n }\\n get message() {\\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\\n }\\n get isEmpty() {\\n return this.issues.length === 0;\\n }\\n flatten(mapper = (issue) => issue.message) {\\n const fieldErrors = {};\\n const formErrors = [];\\n for (const sub of this.issues) {\\n if (sub.path.length > 0) {\\n const firstEl = sub.path[0];\\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\\n fieldErrors[firstEl].push(mapper(sub));\\n } else {\\n formErrors.push(mapper(sub));\\n }\\n }\\n return { formErrors, fieldErrors };\\n }\\n get formErrors() {\\n return this.flatten();\\n }\\n};\\nZodError.create = (issues) => {\\n const error = new ZodError(issues);\\n return error;\\n};\\n\\n// ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js\\nvar errorMap = (issue, _ctx) => {\\n let message;\\n switch (issue.code) {\\n case ZodIssueCode.invalid_type:\\n if (issue.received === ZodParsedType.undefined) {\\n message = \\\"Required\\\";\\n } else {\\n message = `Expected ${issue.expected}, received ${issue.received}`;\\n }\\n break;\\n case ZodIssueCode.invalid_literal:\\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\\n break;\\n case ZodIssueCode.unrecognized_keys:\\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \\\", \\\")}`;\\n break;\\n case ZodIssueCode.invalid_union:\\n message = `Invalid input`;\\n break;\\n case ZodIssueCode.invalid_union_discriminator:\\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\\n break;\\n case ZodIssueCode.invalid_enum_value:\\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\\n break;\\n case ZodIssueCode.invalid_arguments:\\n message = `Invalid function arguments`;\\n break;\\n case ZodIssueCode.invalid_return_type:\\n message = `Invalid function return type`;\\n break;\\n case ZodIssueCode.invalid_date:\\n message = `Invalid date`;\\n break;\\n case ZodIssueCode.invalid_string:\\n if (typeof issue.validation === \\\"object\\\") {\\n if (\\\"includes\\\" in issue.validation) {\\n message = `Invalid input: must include \\\"${issue.validation.includes}\\\"`;\\n if (typeof issue.validation.position === \\\"number\\\") {\\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\\n }\\n } else if (\\\"startsWith\\\" in issue.validation) {\\n message = `Invalid input: must start with \\\"${issue.validation.startsWith}\\\"`;\\n } else if (\\\"endsWith\\\" in issue.validation) {\\n message = `Invalid input: must end with \\\"${issue.validation.endsWith}\\\"`;\\n } else {\\n util.assertNever(issue.validation);\\n }\\n } else if (issue.validation !== \\\"regex\\\") {\\n message = `Invalid ${issue.validation}`;\\n } else {\\n message = \\\"Invalid\\\";\\n }\\n break;\\n case ZodIssueCode.too_small:\\n if (issue.type === \\\"array\\\")\\n message = `Array must contain ${issue.exact ? \\\"exactly\\\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\\n else if (issue.type === \\\"string\\\")\\n message = `String must contain ${issue.exact ? \\\"exactly\\\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\\n else if (issue.type === \\\"number\\\")\\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\\n else if (issue.type === \\\"bigint\\\")\\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\\n else if (issue.type === \\\"date\\\")\\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\\n else\\n message = \\\"Invalid input\\\";\\n break;\\n case ZodIssueCode.too_big:\\n if (issue.type === \\\"array\\\")\\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\\n else if (issue.type === \\\"string\\\")\\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\\n else if (issue.type === \\\"number\\\")\\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\\n else if (issue.type === \\\"bigint\\\")\\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\\n else if (issue.type === \\\"date\\\")\\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\\n else\\n message = \\\"Invalid input\\\";\\n break;\\n case ZodIssueCode.custom:\\n message = `Invalid input`;\\n break;\\n case ZodIssueCode.invalid_intersection_types:\\n message = `Intersection results could not be merged`;\\n break;\\n case ZodIssueCode.not_multiple_of:\\n message = `Number must be a multiple of ${issue.multipleOf}`;\\n break;\\n case ZodIssueCode.not_finite:\\n message = \\\"Number must be finite\\\";\\n break;\\n default:\\n message = _ctx.defaultError;\\n util.assertNever(issue);\\n }\\n return { message };\\n};\\nvar en_default = errorMap;\\n\\n// ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js\\nvar overrideErrorMap = en_default;\\nfunction setErrorMap(map) {\\n overrideErrorMap = map;\\n}\\nfunction getErrorMap() {\\n return overrideErrorMap;\\n}\\n\\n// ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js\\nvar makeIssue = (params) => {\\n const { data, path: path7, errorMaps, issueData } = params;\\n const fullPath = [...path7, ...issueData.path || []];\\n const fullIssue = {\\n ...issueData,\\n path: fullPath\\n };\\n if (issueData.message !== void 0) {\\n return {\\n ...issueData,\\n path: fullPath,\\n message: issueData.message\\n };\\n }\\n let errorMessage = \\\"\\\";\\n const maps = errorMaps.filter((m) => !!m).slice().reverse();\\n for (const map of maps) {\\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\\n }\\n return {\\n ...issueData,\\n path: fullPath,\\n message: errorMessage\\n };\\n};\\nvar EMPTY_PATH = [];\\nfunction addIssueToContext(ctx, issueData) {\\n const overrideMap = getErrorMap();\\n const issue = makeIssue({\\n issueData,\\n data: ctx.data,\\n path: ctx.path,\\n errorMaps: [\\n ctx.common.contextualErrorMap,\\n // contextual error map is first priority\\n ctx.schemaErrorMap,\\n // then schema-bound map if available\\n overrideMap,\\n // then global override map\\n overrideMap === en_default ? void 0 : en_default\\n // then global default map\\n ].filter((x) => !!x)\\n });\\n ctx.common.issues.push(issue);\\n}\\nvar ParseStatus = class _ParseStatus {\\n constructor() {\\n this.value = \\\"valid\\\";\\n }\\n dirty() {\\n if (this.value === \\\"valid\\\")\\n this.value = \\\"dirty\\\";\\n }\\n abort() {\\n if (this.value !== \\\"aborted\\\")\\n this.value = \\\"aborted\\\";\\n }\\n static mergeArray(status, results) {\\n const arrayValue = [];\\n for (const s of results) {\\n if (s.status === \\\"aborted\\\")\\n return INVALID;\\n if (s.status === \\\"dirty\\\")\\n status.dirty();\\n arrayValue.push(s.value);\\n }\\n return { status: status.value, value: arrayValue };\\n }\\n static async mergeObjectAsync(status, pairs) {\\n const syncPairs = [];\\n for (const pair of pairs) {\\n const key = await pair.key;\\n const value = await pair.value;\\n syncPairs.push({\\n key,\\n value\\n });\\n }\\n return _ParseStatus.mergeObjectSync(status, syncPairs);\\n }\\n static mergeObjectSync(status, pairs) {\\n const finalObject = {};\\n for (const pair of pairs) {\\n const { key, value } = pair;\\n if (key.status === \\\"aborted\\\")\\n return INVALID;\\n if (value.status === \\\"aborted\\\")\\n return INVALID;\\n if (key.status === \\\"dirty\\\")\\n status.dirty();\\n if (value.status === \\\"dirty\\\")\\n status.dirty();\\n if (key.value !== \\\"__proto__\\\" && (typeof value.value !== \\\"undefined\\\" || pair.alwaysSet)) {\\n finalObject[key.value] = value.value;\\n }\\n }\\n return { status: status.value, value: finalObject };\\n }\\n};\\nvar INVALID = Object.freeze({\\n status: \\\"aborted\\\"\\n});\\nvar DIRTY = (value) => ({ status: \\\"dirty\\\", value });\\nvar OK = (value) => ({ status: \\\"valid\\\", value });\\nvar isAborted = (x) => x.status === \\\"aborted\\\";\\nvar isDirty = (x) => x.status === \\\"dirty\\\";\\nvar isValid = (x) => x.status === \\\"valid\\\";\\nvar isAsync = (x) => typeof Promise !== \\\"undefined\\\" && x instanceof Promise;\\n\\n// ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js\\nvar errorUtil;\\n(function(errorUtil2) {\\n errorUtil2.errToObj = (message) => typeof message === \\\"string\\\" ? { message } : message || {};\\n errorUtil2.toString = (message) => typeof message === \\\"string\\\" ? message : message?.message;\\n})(errorUtil || (errorUtil = {}));\\n\\n// ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js\\nvar ParseInputLazyPath = class {\\n constructor(parent, value, path7, key) {\\n this._cachedPath = [];\\n this.parent = parent;\\n this.data = value;\\n this._path = path7;\\n this._key = key;\\n }\\n get path() {\\n if (!this._cachedPath.length) {\\n if (Array.isArray(this._key)) {\\n this._cachedPath.push(...this._path, ...this._key);\\n } else {\\n this._cachedPath.push(...this._path, this._key);\\n }\\n }\\n return this._cachedPath;\\n }\\n};\\nvar handleResult = (ctx, result) => {\\n if (isValid(result)) {\\n return { success: true, data: result.value };\\n } else {\\n if (!ctx.common.issues.length) {\\n throw new Error(\\\"Validation failed but no issues detected.\\\");\\n }\\n return {\\n success: false,\\n get error() {\\n if (this._error)\\n return this._error;\\n const error = new ZodError(ctx.common.issues);\\n this._error = error;\\n return this._error;\\n }\\n };\\n }\\n};\\nfunction processCreateParams(params) {\\n if (!params)\\n return {};\\n const { errorMap: errorMap2, invalid_type_error, required_error, description } = params;\\n if (errorMap2 && (invalid_type_error || required_error)) {\\n throw new Error(`Can't use \\\"invalid_type_error\\\" or \\\"required_error\\\" in conjunction with custom error map.`);\\n }\\n if (errorMap2)\\n return { errorMap: errorMap2, description };\\n const customMap = (iss, ctx) => {\\n const { message } = params;\\n if (iss.code === \\\"invalid_enum_value\\\") {\\n return { message: message ?? ctx.defaultError };\\n }\\n if (typeof ctx.data === \\\"undefined\\\") {\\n return { message: message ?? required_error ?? ctx.defaultError };\\n }\\n if (iss.code !== \\\"invalid_type\\\")\\n return { message: ctx.defaultError };\\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\\n };\\n return { errorMap: customMap, description };\\n}\\nvar ZodType = class {\\n get description() {\\n return this._def.description;\\n }\\n _getType(input) {\\n return getParsedType(input.data);\\n }\\n _getOrReturnCtx(input, ctx) {\\n return ctx || {\\n common: input.parent.common,\\n data: input.data,\\n parsedType: getParsedType(input.data),\\n schemaErrorMap: this._def.errorMap,\\n path: input.path,\\n parent: input.parent\\n };\\n }\\n _processInputParams(input) {\\n return {\\n status: new ParseStatus(),\\n ctx: {\\n common: input.parent.common,\\n data: input.data,\\n parsedType: getParsedType(input.data),\\n schemaErrorMap: this._def.errorMap,\\n path: input.path,\\n parent: input.parent\\n }\\n };\\n }\\n _parseSync(input) {\\n const result = this._parse(input);\\n if (isAsync(result)) {\\n throw new Error(\\\"Synchronous parse encountered promise.\\\");\\n }\\n return result;\\n }\\n _parseAsync(input) {\\n const result = this._parse(input);\\n return Promise.resolve(result);\\n }\\n parse(data, params) {\\n const result = this.safeParse(data, params);\\n if (result.success)\\n return result.data;\\n throw result.error;\\n }\\n safeParse(data, params) {\\n const ctx = {\\n common: {\\n issues: [],\\n async: params?.async ?? false,\\n contextualErrorMap: params?.errorMap\\n },\\n path: params?.path || [],\\n schemaErrorMap: this._def.errorMap,\\n parent: null,\\n data,\\n parsedType: getParsedType(data)\\n };\\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\\n return handleResult(ctx, result);\\n }\\n \\\"~validate\\\"(data) {\\n const ctx = {\\n common: {\\n issues: [],\\n async: !!this[\\\"~standard\\\"].async\\n },\\n path: [],\\n schemaErrorMap: this._def.errorMap,\\n parent: null,\\n data,\\n parsedType: getParsedType(data)\\n };\\n if (!this[\\\"~standard\\\"].async) {\\n try {\\n const result = this._parseSync({ data, path: [], parent: ctx });\\n return isValid(result) ? {\\n value: result.value\\n } : {\\n issues: ctx.common.issues\\n };\\n } catch (err) {\\n if (err?.message?.toLowerCase()?.includes(\\\"encountered\\\")) {\\n this[\\\"~standard\\\"].async = true;\\n }\\n ctx.common = {\\n issues: [],\\n async: true\\n };\\n }\\n }\\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result) ? {\\n value: result.value\\n } : {\\n issues: ctx.common.issues\\n });\\n }\\n async parseAsync(data, params) {\\n const result = await this.safeParseAsync(data, params);\\n if (result.success)\\n return result.data;\\n throw result.error;\\n }\\n async safeParseAsync(data, params) {\\n const ctx = {\\n common: {\\n issues: [],\\n contextualErrorMap: params?.errorMap,\\n async: true\\n },\\n path: params?.path || [],\\n schemaErrorMap: this._def.errorMap,\\n parent: null,\\n data,\\n parsedType: getParsedType(data)\\n };\\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\\n return handleResult(ctx, result);\\n }\\n refine(check, message) {\\n const getIssueProperties = (val) => {\\n if (typeof message === \\\"string\\\" || typeof message === \\\"undefined\\\") {\\n return { message };\\n } else if (typeof message === \\\"function\\\") {\\n return message(val);\\n } else {\\n return message;\\n }\\n };\\n return this._refinement((val, ctx) => {\\n const result = check(val);\\n const setError = () => ctx.addIssue({\\n code: ZodIssueCode.custom,\\n ...getIssueProperties(val)\\n });\\n if (typeof Promise !== \\\"undefined\\\" && result instanceof Promise) {\\n return result.then((data) => {\\n if (!data) {\\n setError();\\n return false;\\n } else {\\n return true;\\n }\\n });\\n }\\n if (!result) {\\n setError();\\n return false;\\n } else {\\n return true;\\n }\\n });\\n }\\n refinement(check, refinementData) {\\n return this._refinement((val, ctx) => {\\n if (!check(val)) {\\n ctx.addIssue(typeof refinementData === \\\"function\\\" ? refinementData(val, ctx) : refinementData);\\n return false;\\n } else {\\n return true;\\n }\\n });\\n }\\n _refinement(refinement) {\\n return new ZodEffects({\\n schema: this,\\n typeName: ZodFirstPartyTypeKind.ZodEffects,\\n effect: { type: \\\"refinement\\\", refinement }\\n });\\n }\\n superRefine(refinement) {\\n return this._refinement(refinement);\\n }\\n constructor(def) {\\n this.spa = this.safeParseAsync;\\n this._def = def;\\n this.parse = this.parse.bind(this);\\n this.safeParse = this.safeParse.bind(this);\\n this.parseAsync = this.parseAsync.bind(this);\\n this.safeParseAsync = this.safeParseAsync.bind(this);\\n this.spa = this.spa.bind(this);\\n this.refine = this.refine.bind(this);\\n this.refinement = this.refinement.bind(this);\\n this.superRefine = this.superRefine.bind(this);\\n this.optional = this.optional.bind(this);\\n this.nullable = this.nullable.bind(this);\\n this.nullish = this.nullish.bind(this);\\n this.array = this.array.bind(this);\\n this.promise = this.promise.bind(this);\\n this.or = this.or.bind(this);\\n this.and = this.and.bind(this);\\n this.transform = this.transform.bind(this);\\n this.brand = this.brand.bind(this);\\n this.default = this.default.bind(this);\\n this.catch = this.catch.bind(this);\\n this.describe = this.describe.bind(this);\\n this.pipe = this.pipe.bind(this);\\n this.readonly = this.readonly.bind(this);\\n this.isNullable = this.isNullable.bind(this);\\n this.isOptional = this.isOptional.bind(this);\\n this[\\\"~standard\\\"] = {\\n version: 1,\\n vendor: \\\"zod\\\",\\n validate: (data) => this[\\\"~validate\\\"](data)\\n };\\n }\\n optional() {\\n return ZodOptional.create(this, this._def);\\n }\\n nullable() {\\n return ZodNullable.create(this, this._def);\\n }\\n nullish() {\\n return this.nullable().optional();\\n }\\n array() {\\n return ZodArray.create(this);\\n }\\n promise() {\\n return ZodPromise.create(this, this._def);\\n }\\n or(option) {\\n return ZodUnion.create([this, option], this._def);\\n }\\n and(incoming) {\\n return ZodIntersection.create(this, incoming, this._def);\\n }\\n transform(transform) {\\n return new ZodEffects({\\n ...processCreateParams(this._def),\\n schema: this,\\n typeName: ZodFirstPartyTypeKind.ZodEffects,\\n effect: { type: \\\"transform\\\", transform }\\n });\\n }\\n default(def) {\\n const defaultValueFunc = typeof def === \\\"function\\\" ? def : () => def;\\n return new ZodDefault({\\n ...processCreateParams(this._def),\\n innerType: this,\\n defaultValue: defaultValueFunc,\\n typeName: ZodFirstPartyTypeKind.ZodDefault\\n });\\n }\\n brand() {\\n return new ZodBranded({\\n typeName: ZodFirstPartyTypeKind.ZodBranded,\\n type: this,\\n ...processCreateParams(this._def)\\n });\\n }\\n catch(def) {\\n const catchValueFunc = typeof def === \\\"function\\\" ? def : () => def;\\n return new ZodCatch({\\n ...processCreateParams(this._def),\\n innerType: this,\\n catchValue: catchValueFunc,\\n typeName: ZodFirstPartyTypeKind.ZodCatch\\n });\\n }\\n describe(description) {\\n const This = this.constructor;\\n return new This({\\n ...this._def,\\n description\\n });\\n }\\n pipe(target) {\\n return ZodPipeline.create(this, target);\\n }\\n readonly() {\\n return ZodReadonly.create(this);\\n }\\n isOptional() {\\n return this.safeParse(void 0).success;\\n }\\n isNullable() {\\n return this.safeParse(null).success;\\n }\\n};\\nvar cuidRegex = /^c[^\\\\s-]{8,}$/i;\\nvar cuid2Regex = /^[0-9a-z]+$/;\\nvar ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\\nvar uuidRegex = /^[0-9a-fA-F]{8}\\\\b-[0-9a-fA-F]{4}\\\\b-[0-9a-fA-F]{4}\\\\b-[0-9a-fA-F]{4}\\\\b-[0-9a-fA-F]{12}$/i;\\nvar nanoidRegex = /^[a-z0-9_-]{21}$/i;\\nvar jwtRegex = /^[A-Za-z0-9-_]+\\\\.[A-Za-z0-9-_]+\\\\.[A-Za-z0-9-_]*$/;\\nvar durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\\\d+Y)|(?:[-+]?\\\\d+[.,]\\\\d+Y$))?(?:(?:[-+]?\\\\d+M)|(?:[-+]?\\\\d+[.,]\\\\d+M$))?(?:(?:[-+]?\\\\d+W)|(?:[-+]?\\\\d+[.,]\\\\d+W$))?(?:(?:[-+]?\\\\d+D)|(?:[-+]?\\\\d+[.,]\\\\d+D$))?(?:T(?=[\\\\d+-])(?:(?:[-+]?\\\\d+H)|(?:[-+]?\\\\d+[.,]\\\\d+H$))?(?:(?:[-+]?\\\\d+M)|(?:[-+]?\\\\d+[.,]\\\\d+M$))?(?:[-+]?\\\\d+(?:[.,]\\\\d+)?S)?)??$/;\\nvar emailRegex = /^(?!\\\\.)(?!.*\\\\.\\\\.)([A-Z0-9_'+\\\\-\\\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\\\-]*\\\\.)+[A-Z]{2,}$/i;\\nvar _emojiRegex = `^(\\\\\\\\p{Extended_Pictographic}|\\\\\\\\p{Emoji_Component})+$`;\\nvar emojiRegex;\\nvar ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\\nvar ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\/(3[0-2]|[12]?[0-9])$/;\\nvar ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\\nvar ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\\nvar base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\\nvar base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\\nvar dateRegexSource = `((\\\\\\\\d\\\\\\\\d[2468][048]|\\\\\\\\d\\\\\\\\d[13579][26]|\\\\\\\\d\\\\\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\\\\\d|30)|(02)-(0[1-9]|1\\\\\\\\d|2[0-8])))`;\\nvar dateRegex = new RegExp(`^${dateRegexSource}$`);\\nfunction timeRegexSource(args) {\\n let secondsRegexSource = `[0-5]\\\\\\\\d`;\\n if (args.precision) {\\n secondsRegexSource = `${secondsRegexSource}\\\\\\\\.\\\\\\\\d{${args.precision}}`;\\n } else if (args.precision == null) {\\n secondsRegexSource = `${secondsRegexSource}(\\\\\\\\.\\\\\\\\d+)?`;\\n }\\n const secondsQuantifier = args.precision ? \\\"+\\\" : \\\"?\\\";\\n return `([01]\\\\\\\\d|2[0-3]):[0-5]\\\\\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\\n}\\nfunction timeRegex(args) {\\n return new RegExp(`^${timeRegexSource(args)}$`);\\n}\\nfunction datetimeRegex(args) {\\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\\n const opts = [];\\n opts.push(args.local ? `Z?` : `Z`);\\n if (args.offset)\\n opts.push(`([+-]\\\\\\\\d{2}:?\\\\\\\\d{2})`);\\n regex = `${regex}(${opts.join(\\\"|\\\")})`;\\n return new RegExp(`^${regex}$`);\\n}\\nfunction isValidIP(ip, version) {\\n if ((version === \\\"v4\\\" || !version) && ipv4Regex.test(ip)) {\\n return true;\\n }\\n if ((version === \\\"v6\\\" || !version) && ipv6Regex.test(ip)) {\\n return true;\\n }\\n return false;\\n}\\nfunction isValidJWT(jwt, alg) {\\n if (!jwtRegex.test(jwt))\\n return false;\\n try {\\n const [header] = jwt.split(\\\".\\\");\\n if (!header)\\n return false;\\n const base64 = header.replace(/-/g, \\\"+\\\").replace(/_/g, \\\"/\\\").padEnd(header.length + (4 - header.length % 4) % 4, \\\"=\\\");\\n const decoded = JSON.parse(atob(base64));\\n if (typeof decoded !== \\\"object\\\" || decoded === null)\\n return false;\\n if (\\\"typ\\\" in decoded && decoded?.typ !== \\\"JWT\\\")\\n return false;\\n if (!decoded.alg)\\n return false;\\n if (alg && decoded.alg !== alg)\\n return false;\\n return true;\\n } catch {\\n return false;\\n }\\n}\\nfunction isValidCidr(ip, version) {\\n if ((version === \\\"v4\\\" || !version) && ipv4CidrRegex.test(ip)) {\\n return true;\\n }\\n if ((version === \\\"v6\\\" || !version) && ipv6CidrRegex.test(ip)) {\\n return true;\\n }\\n return false;\\n}\\nvar ZodString = class _ZodString extends ZodType {\\n _parse(input) {\\n if (this._def.coerce) {\\n input.data = String(input.data);\\n }\\n const parsedType = this._getType(input);\\n if (parsedType !== ZodParsedType.string) {\\n const ctx2 = this._getOrReturnCtx(input);\\n addIssueToContext(ctx2, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.string,\\n received: ctx2.parsedType\\n });\\n return INVALID;\\n }\\n const status = new ParseStatus();\\n let ctx = void 0;\\n for (const check of this._def.checks) {\\n if (check.kind === \\\"min\\\") {\\n if (input.data.length < check.value) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_small,\\n minimum: check.value,\\n type: \\\"string\\\",\\n inclusive: true,\\n exact: false,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"max\\\") {\\n if (input.data.length > check.value) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_big,\\n maximum: check.value,\\n type: \\\"string\\\",\\n inclusive: true,\\n exact: false,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"length\\\") {\\n const tooBig = input.data.length > check.value;\\n const tooSmall = input.data.length < check.value;\\n if (tooBig || tooSmall) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n if (tooBig) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_big,\\n maximum: check.value,\\n type: \\\"string\\\",\\n inclusive: true,\\n exact: true,\\n message: check.message\\n });\\n } else if (tooSmall) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_small,\\n minimum: check.value,\\n type: \\\"string\\\",\\n inclusive: true,\\n exact: true,\\n message: check.message\\n });\\n }\\n status.dirty();\\n }\\n } else if (check.kind === \\\"email\\\") {\\n if (!emailRegex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"email\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"emoji\\\") {\\n if (!emojiRegex) {\\n emojiRegex = new RegExp(_emojiRegex, \\\"u\\\");\\n }\\n if (!emojiRegex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"emoji\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"uuid\\\") {\\n if (!uuidRegex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"uuid\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"nanoid\\\") {\\n if (!nanoidRegex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"nanoid\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"cuid\\\") {\\n if (!cuidRegex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"cuid\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"cuid2\\\") {\\n if (!cuid2Regex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"cuid2\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"ulid\\\") {\\n if (!ulidRegex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"ulid\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"url\\\") {\\n try {\\n new URL(input.data);\\n } catch {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"url\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"regex\\\") {\\n check.regex.lastIndex = 0;\\n const testResult = check.regex.test(input.data);\\n if (!testResult) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"regex\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"trim\\\") {\\n input.data = input.data.trim();\\n } else if (check.kind === \\\"includes\\\") {\\n if (!input.data.includes(check.value, check.position)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_string,\\n validation: { includes: check.value, position: check.position },\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"toLowerCase\\\") {\\n input.data = input.data.toLowerCase();\\n } else if (check.kind === \\\"toUpperCase\\\") {\\n input.data = input.data.toUpperCase();\\n } else if (check.kind === \\\"startsWith\\\") {\\n if (!input.data.startsWith(check.value)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_string,\\n validation: { startsWith: check.value },\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"endsWith\\\") {\\n if (!input.data.endsWith(check.value)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_string,\\n validation: { endsWith: check.value },\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"datetime\\\") {\\n const regex = datetimeRegex(check);\\n if (!regex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_string,\\n validation: \\\"datetime\\\",\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"date\\\") {\\n const regex = dateRegex;\\n if (!regex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_string,\\n validation: \\\"date\\\",\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"time\\\") {\\n const regex = timeRegex(check);\\n if (!regex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_string,\\n validation: \\\"time\\\",\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"duration\\\") {\\n if (!durationRegex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"duration\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"ip\\\") {\\n if (!isValidIP(input.data, check.version)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"ip\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"jwt\\\") {\\n if (!isValidJWT(input.data, check.alg)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"jwt\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"cidr\\\") {\\n if (!isValidCidr(input.data, check.version)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"cidr\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"base64\\\") {\\n if (!base64Regex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"base64\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"base64url\\\") {\\n if (!base64urlRegex.test(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n validation: \\\"base64url\\\",\\n code: ZodIssueCode.invalid_string,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else {\\n util.assertNever(check);\\n }\\n }\\n return { status: status.value, value: input.data };\\n }\\n _regex(regex, validation, message) {\\n return this.refinement((data) => regex.test(data), {\\n validation,\\n code: ZodIssueCode.invalid_string,\\n ...errorUtil.errToObj(message)\\n });\\n }\\n _addCheck(check) {\\n return new _ZodString({\\n ...this._def,\\n checks: [...this._def.checks, check]\\n });\\n }\\n email(message) {\\n return this._addCheck({ kind: \\\"email\\\", ...errorUtil.errToObj(message) });\\n }\\n url(message) {\\n return this._addCheck({ kind: \\\"url\\\", ...errorUtil.errToObj(message) });\\n }\\n emoji(message) {\\n return this._addCheck({ kind: \\\"emoji\\\", ...errorUtil.errToObj(message) });\\n }\\n uuid(message) {\\n return this._addCheck({ kind: \\\"uuid\\\", ...errorUtil.errToObj(message) });\\n }\\n nanoid(message) {\\n return this._addCheck({ kind: \\\"nanoid\\\", ...errorUtil.errToObj(message) });\\n }\\n cuid(message) {\\n return this._addCheck({ kind: \\\"cuid\\\", ...errorUtil.errToObj(message) });\\n }\\n cuid2(message) {\\n return this._addCheck({ kind: \\\"cuid2\\\", ...errorUtil.errToObj(message) });\\n }\\n ulid(message) {\\n return this._addCheck({ kind: \\\"ulid\\\", ...errorUtil.errToObj(message) });\\n }\\n base64(message) {\\n return this._addCheck({ kind: \\\"base64\\\", ...errorUtil.errToObj(message) });\\n }\\n base64url(message) {\\n return this._addCheck({\\n kind: \\\"base64url\\\",\\n ...errorUtil.errToObj(message)\\n });\\n }\\n jwt(options) {\\n return this._addCheck({ kind: \\\"jwt\\\", ...errorUtil.errToObj(options) });\\n }\\n ip(options) {\\n return this._addCheck({ kind: \\\"ip\\\", ...errorUtil.errToObj(options) });\\n }\\n cidr(options) {\\n return this._addCheck({ kind: \\\"cidr\\\", ...errorUtil.errToObj(options) });\\n }\\n datetime(options) {\\n if (typeof options === \\\"string\\\") {\\n return this._addCheck({\\n kind: \\\"datetime\\\",\\n precision: null,\\n offset: false,\\n local: false,\\n message: options\\n });\\n }\\n return this._addCheck({\\n kind: \\\"datetime\\\",\\n precision: typeof options?.precision === \\\"undefined\\\" ? null : options?.precision,\\n offset: options?.offset ?? false,\\n local: options?.local ?? false,\\n ...errorUtil.errToObj(options?.message)\\n });\\n }\\n date(message) {\\n return this._addCheck({ kind: \\\"date\\\", message });\\n }\\n time(options) {\\n if (typeof options === \\\"string\\\") {\\n return this._addCheck({\\n kind: \\\"time\\\",\\n precision: null,\\n message: options\\n });\\n }\\n return this._addCheck({\\n kind: \\\"time\\\",\\n precision: typeof options?.precision === \\\"undefined\\\" ? null : options?.precision,\\n ...errorUtil.errToObj(options?.message)\\n });\\n }\\n duration(message) {\\n return this._addCheck({ kind: \\\"duration\\\", ...errorUtil.errToObj(message) });\\n }\\n regex(regex, message) {\\n return this._addCheck({\\n kind: \\\"regex\\\",\\n regex,\\n ...errorUtil.errToObj(message)\\n });\\n }\\n includes(value, options) {\\n return this._addCheck({\\n kind: \\\"includes\\\",\\n value,\\n position: options?.position,\\n ...errorUtil.errToObj(options?.message)\\n });\\n }\\n startsWith(value, message) {\\n return this._addCheck({\\n kind: \\\"startsWith\\\",\\n value,\\n ...errorUtil.errToObj(message)\\n });\\n }\\n endsWith(value, message) {\\n return this._addCheck({\\n kind: \\\"endsWith\\\",\\n value,\\n ...errorUtil.errToObj(message)\\n });\\n }\\n min(minLength, message) {\\n return this._addCheck({\\n kind: \\\"min\\\",\\n value: minLength,\\n ...errorUtil.errToObj(message)\\n });\\n }\\n max(maxLength, message) {\\n return this._addCheck({\\n kind: \\\"max\\\",\\n value: maxLength,\\n ...errorUtil.errToObj(message)\\n });\\n }\\n length(len, message) {\\n return this._addCheck({\\n kind: \\\"length\\\",\\n value: len,\\n ...errorUtil.errToObj(message)\\n });\\n }\\n /**\\n * Equivalent to `.min(1)`\\n */\\n nonempty(message) {\\n return this.min(1, errorUtil.errToObj(message));\\n }\\n trim() {\\n return new _ZodString({\\n ...this._def,\\n checks: [...this._def.checks, { kind: \\\"trim\\\" }]\\n });\\n }\\n toLowerCase() {\\n return new _ZodString({\\n ...this._def,\\n checks: [...this._def.checks, { kind: \\\"toLowerCase\\\" }]\\n });\\n }\\n toUpperCase() {\\n return new _ZodString({\\n ...this._def,\\n checks: [...this._def.checks, { kind: \\\"toUpperCase\\\" }]\\n });\\n }\\n get isDatetime() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"datetime\\\");\\n }\\n get isDate() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"date\\\");\\n }\\n get isTime() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"time\\\");\\n }\\n get isDuration() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"duration\\\");\\n }\\n get isEmail() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"email\\\");\\n }\\n get isURL() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"url\\\");\\n }\\n get isEmoji() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"emoji\\\");\\n }\\n get isUUID() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"uuid\\\");\\n }\\n get isNANOID() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"nanoid\\\");\\n }\\n get isCUID() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"cuid\\\");\\n }\\n get isCUID2() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"cuid2\\\");\\n }\\n get isULID() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"ulid\\\");\\n }\\n get isIP() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"ip\\\");\\n }\\n get isCIDR() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"cidr\\\");\\n }\\n get isBase64() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"base64\\\");\\n }\\n get isBase64url() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"base64url\\\");\\n }\\n get minLength() {\\n let min = null;\\n for (const ch of this._def.checks) {\\n if (ch.kind === \\\"min\\\") {\\n if (min === null || ch.value > min)\\n min = ch.value;\\n }\\n }\\n return min;\\n }\\n get maxLength() {\\n let max = null;\\n for (const ch of this._def.checks) {\\n if (ch.kind === \\\"max\\\") {\\n if (max === null || ch.value < max)\\n max = ch.value;\\n }\\n }\\n return max;\\n }\\n};\\nZodString.create = (params) => {\\n return new ZodString({\\n checks: [],\\n typeName: ZodFirstPartyTypeKind.ZodString,\\n coerce: params?.coerce ?? false,\\n ...processCreateParams(params)\\n });\\n};\\nfunction floatSafeRemainder(val, step) {\\n const valDecCount = (val.toString().split(\\\".\\\")[1] || \\\"\\\").length;\\n const stepDecCount = (step.toString().split(\\\".\\\")[1] || \\\"\\\").length;\\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\\\".\\\", \\\"\\\"));\\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\\\".\\\", \\\"\\\"));\\n return valInt % stepInt / 10 ** decCount;\\n}\\nvar ZodNumber = class _ZodNumber extends ZodType {\\n constructor() {\\n super(...arguments);\\n this.min = this.gte;\\n this.max = this.lte;\\n this.step = this.multipleOf;\\n }\\n _parse(input) {\\n if (this._def.coerce) {\\n input.data = Number(input.data);\\n }\\n const parsedType = this._getType(input);\\n if (parsedType !== ZodParsedType.number) {\\n const ctx2 = this._getOrReturnCtx(input);\\n addIssueToContext(ctx2, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.number,\\n received: ctx2.parsedType\\n });\\n return INVALID;\\n }\\n let ctx = void 0;\\n const status = new ParseStatus();\\n for (const check of this._def.checks) {\\n if (check.kind === \\\"int\\\") {\\n if (!util.isInteger(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: \\\"integer\\\",\\n received: \\\"float\\\",\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"min\\\") {\\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\\n if (tooSmall) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_small,\\n minimum: check.value,\\n type: \\\"number\\\",\\n inclusive: check.inclusive,\\n exact: false,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"max\\\") {\\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\\n if (tooBig) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_big,\\n maximum: check.value,\\n type: \\\"number\\\",\\n inclusive: check.inclusive,\\n exact: false,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"multipleOf\\\") {\\n if (floatSafeRemainder(input.data, check.value) !== 0) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.not_multiple_of,\\n multipleOf: check.value,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"finite\\\") {\\n if (!Number.isFinite(input.data)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.not_finite,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else {\\n util.assertNever(check);\\n }\\n }\\n return { status: status.value, value: input.data };\\n }\\n gte(value, message) {\\n return this.setLimit(\\\"min\\\", value, true, errorUtil.toString(message));\\n }\\n gt(value, message) {\\n return this.setLimit(\\\"min\\\", value, false, errorUtil.toString(message));\\n }\\n lte(value, message) {\\n return this.setLimit(\\\"max\\\", value, true, errorUtil.toString(message));\\n }\\n lt(value, message) {\\n return this.setLimit(\\\"max\\\", value, false, errorUtil.toString(message));\\n }\\n setLimit(kind, value, inclusive, message) {\\n return new _ZodNumber({\\n ...this._def,\\n checks: [\\n ...this._def.checks,\\n {\\n kind,\\n value,\\n inclusive,\\n message: errorUtil.toString(message)\\n }\\n ]\\n });\\n }\\n _addCheck(check) {\\n return new _ZodNumber({\\n ...this._def,\\n checks: [...this._def.checks, check]\\n });\\n }\\n int(message) {\\n return this._addCheck({\\n kind: \\\"int\\\",\\n message: errorUtil.toString(message)\\n });\\n }\\n positive(message) {\\n return this._addCheck({\\n kind: \\\"min\\\",\\n value: 0,\\n inclusive: false,\\n message: errorUtil.toString(message)\\n });\\n }\\n negative(message) {\\n return this._addCheck({\\n kind: \\\"max\\\",\\n value: 0,\\n inclusive: false,\\n message: errorUtil.toString(message)\\n });\\n }\\n nonpositive(message) {\\n return this._addCheck({\\n kind: \\\"max\\\",\\n value: 0,\\n inclusive: true,\\n message: errorUtil.toString(message)\\n });\\n }\\n nonnegative(message) {\\n return this._addCheck({\\n kind: \\\"min\\\",\\n value: 0,\\n inclusive: true,\\n message: errorUtil.toString(message)\\n });\\n }\\n multipleOf(value, message) {\\n return this._addCheck({\\n kind: \\\"multipleOf\\\",\\n value,\\n message: errorUtil.toString(message)\\n });\\n }\\n finite(message) {\\n return this._addCheck({\\n kind: \\\"finite\\\",\\n message: errorUtil.toString(message)\\n });\\n }\\n safe(message) {\\n return this._addCheck({\\n kind: \\\"min\\\",\\n inclusive: true,\\n value: Number.MIN_SAFE_INTEGER,\\n message: errorUtil.toString(message)\\n })._addCheck({\\n kind: \\\"max\\\",\\n inclusive: true,\\n value: Number.MAX_SAFE_INTEGER,\\n message: errorUtil.toString(message)\\n });\\n }\\n get minValue() {\\n let min = null;\\n for (const ch of this._def.checks) {\\n if (ch.kind === \\\"min\\\") {\\n if (min === null || ch.value > min)\\n min = ch.value;\\n }\\n }\\n return min;\\n }\\n get maxValue() {\\n let max = null;\\n for (const ch of this._def.checks) {\\n if (ch.kind === \\\"max\\\") {\\n if (max === null || ch.value < max)\\n max = ch.value;\\n }\\n }\\n return max;\\n }\\n get isInt() {\\n return !!this._def.checks.find((ch) => ch.kind === \\\"int\\\" || ch.kind === \\\"multipleOf\\\" && util.isInteger(ch.value));\\n }\\n get isFinite() {\\n let max = null;\\n let min = null;\\n for (const ch of this._def.checks) {\\n if (ch.kind === \\\"finite\\\" || ch.kind === \\\"int\\\" || ch.kind === \\\"multipleOf\\\") {\\n return true;\\n } else if (ch.kind === \\\"min\\\") {\\n if (min === null || ch.value > min)\\n min = ch.value;\\n } else if (ch.kind === \\\"max\\\") {\\n if (max === null || ch.value < max)\\n max = ch.value;\\n }\\n }\\n return Number.isFinite(min) && Number.isFinite(max);\\n }\\n};\\nZodNumber.create = (params) => {\\n return new ZodNumber({\\n checks: [],\\n typeName: ZodFirstPartyTypeKind.ZodNumber,\\n coerce: params?.coerce || false,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodBigInt = class _ZodBigInt extends ZodType {\\n constructor() {\\n super(...arguments);\\n this.min = this.gte;\\n this.max = this.lte;\\n }\\n _parse(input) {\\n if (this._def.coerce) {\\n try {\\n input.data = BigInt(input.data);\\n } catch {\\n return this._getInvalidInput(input);\\n }\\n }\\n const parsedType = this._getType(input);\\n if (parsedType !== ZodParsedType.bigint) {\\n return this._getInvalidInput(input);\\n }\\n let ctx = void 0;\\n const status = new ParseStatus();\\n for (const check of this._def.checks) {\\n if (check.kind === \\\"min\\\") {\\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\\n if (tooSmall) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_small,\\n type: \\\"bigint\\\",\\n minimum: check.value,\\n inclusive: check.inclusive,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"max\\\") {\\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\\n if (tooBig) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_big,\\n type: \\\"bigint\\\",\\n maximum: check.value,\\n inclusive: check.inclusive,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"multipleOf\\\") {\\n if (input.data % check.value !== BigInt(0)) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.not_multiple_of,\\n multipleOf: check.value,\\n message: check.message\\n });\\n status.dirty();\\n }\\n } else {\\n util.assertNever(check);\\n }\\n }\\n return { status: status.value, value: input.data };\\n }\\n _getInvalidInput(input) {\\n const ctx = this._getOrReturnCtx(input);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.bigint,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n gte(value, message) {\\n return this.setLimit(\\\"min\\\", value, true, errorUtil.toString(message));\\n }\\n gt(value, message) {\\n return this.setLimit(\\\"min\\\", value, false, errorUtil.toString(message));\\n }\\n lte(value, message) {\\n return this.setLimit(\\\"max\\\", value, true, errorUtil.toString(message));\\n }\\n lt(value, message) {\\n return this.setLimit(\\\"max\\\", value, false, errorUtil.toString(message));\\n }\\n setLimit(kind, value, inclusive, message) {\\n return new _ZodBigInt({\\n ...this._def,\\n checks: [\\n ...this._def.checks,\\n {\\n kind,\\n value,\\n inclusive,\\n message: errorUtil.toString(message)\\n }\\n ]\\n });\\n }\\n _addCheck(check) {\\n return new _ZodBigInt({\\n ...this._def,\\n checks: [...this._def.checks, check]\\n });\\n }\\n positive(message) {\\n return this._addCheck({\\n kind: \\\"min\\\",\\n value: BigInt(0),\\n inclusive: false,\\n message: errorUtil.toString(message)\\n });\\n }\\n negative(message) {\\n return this._addCheck({\\n kind: \\\"max\\\",\\n value: BigInt(0),\\n inclusive: false,\\n message: errorUtil.toString(message)\\n });\\n }\\n nonpositive(message) {\\n return this._addCheck({\\n kind: \\\"max\\\",\\n value: BigInt(0),\\n inclusive: true,\\n message: errorUtil.toString(message)\\n });\\n }\\n nonnegative(message) {\\n return this._addCheck({\\n kind: \\\"min\\\",\\n value: BigInt(0),\\n inclusive: true,\\n message: errorUtil.toString(message)\\n });\\n }\\n multipleOf(value, message) {\\n return this._addCheck({\\n kind: \\\"multipleOf\\\",\\n value,\\n message: errorUtil.toString(message)\\n });\\n }\\n get minValue() {\\n let min = null;\\n for (const ch of this._def.checks) {\\n if (ch.kind === \\\"min\\\") {\\n if (min === null || ch.value > min)\\n min = ch.value;\\n }\\n }\\n return min;\\n }\\n get maxValue() {\\n let max = null;\\n for (const ch of this._def.checks) {\\n if (ch.kind === \\\"max\\\") {\\n if (max === null || ch.value < max)\\n max = ch.value;\\n }\\n }\\n return max;\\n }\\n};\\nZodBigInt.create = (params) => {\\n return new ZodBigInt({\\n checks: [],\\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\\n coerce: params?.coerce ?? false,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodBoolean = class extends ZodType {\\n _parse(input) {\\n if (this._def.coerce) {\\n input.data = Boolean(input.data);\\n }\\n const parsedType = this._getType(input);\\n if (parsedType !== ZodParsedType.boolean) {\\n const ctx = this._getOrReturnCtx(input);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.boolean,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n return OK(input.data);\\n }\\n};\\nZodBoolean.create = (params) => {\\n return new ZodBoolean({\\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\\n coerce: params?.coerce || false,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodDate = class _ZodDate extends ZodType {\\n _parse(input) {\\n if (this._def.coerce) {\\n input.data = new Date(input.data);\\n }\\n const parsedType = this._getType(input);\\n if (parsedType !== ZodParsedType.date) {\\n const ctx2 = this._getOrReturnCtx(input);\\n addIssueToContext(ctx2, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.date,\\n received: ctx2.parsedType\\n });\\n return INVALID;\\n }\\n if (Number.isNaN(input.data.getTime())) {\\n const ctx2 = this._getOrReturnCtx(input);\\n addIssueToContext(ctx2, {\\n code: ZodIssueCode.invalid_date\\n });\\n return INVALID;\\n }\\n const status = new ParseStatus();\\n let ctx = void 0;\\n for (const check of this._def.checks) {\\n if (check.kind === \\\"min\\\") {\\n if (input.data.getTime() < check.value) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_small,\\n message: check.message,\\n inclusive: true,\\n exact: false,\\n minimum: check.value,\\n type: \\\"date\\\"\\n });\\n status.dirty();\\n }\\n } else if (check.kind === \\\"max\\\") {\\n if (input.data.getTime() > check.value) {\\n ctx = this._getOrReturnCtx(input, ctx);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_big,\\n message: check.message,\\n inclusive: true,\\n exact: false,\\n maximum: check.value,\\n type: \\\"date\\\"\\n });\\n status.dirty();\\n }\\n } else {\\n util.assertNever(check);\\n }\\n }\\n return {\\n status: status.value,\\n value: new Date(input.data.getTime())\\n };\\n }\\n _addCheck(check) {\\n return new _ZodDate({\\n ...this._def,\\n checks: [...this._def.checks, check]\\n });\\n }\\n min(minDate, message) {\\n return this._addCheck({\\n kind: \\\"min\\\",\\n value: minDate.getTime(),\\n message: errorUtil.toString(message)\\n });\\n }\\n max(maxDate, message) {\\n return this._addCheck({\\n kind: \\\"max\\\",\\n value: maxDate.getTime(),\\n message: errorUtil.toString(message)\\n });\\n }\\n get minDate() {\\n let min = null;\\n for (const ch of this._def.checks) {\\n if (ch.kind === \\\"min\\\") {\\n if (min === null || ch.value > min)\\n min = ch.value;\\n }\\n }\\n return min != null ? new Date(min) : null;\\n }\\n get maxDate() {\\n let max = null;\\n for (const ch of this._def.checks) {\\n if (ch.kind === \\\"max\\\") {\\n if (max === null || ch.value < max)\\n max = ch.value;\\n }\\n }\\n return max != null ? new Date(max) : null;\\n }\\n};\\nZodDate.create = (params) => {\\n return new ZodDate({\\n checks: [],\\n coerce: params?.coerce || false,\\n typeName: ZodFirstPartyTypeKind.ZodDate,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodSymbol = class extends ZodType {\\n _parse(input) {\\n const parsedType = this._getType(input);\\n if (parsedType !== ZodParsedType.symbol) {\\n const ctx = this._getOrReturnCtx(input);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.symbol,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n return OK(input.data);\\n }\\n};\\nZodSymbol.create = (params) => {\\n return new ZodSymbol({\\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodUndefined = class extends ZodType {\\n _parse(input) {\\n const parsedType = this._getType(input);\\n if (parsedType !== ZodParsedType.undefined) {\\n const ctx = this._getOrReturnCtx(input);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.undefined,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n return OK(input.data);\\n }\\n};\\nZodUndefined.create = (params) => {\\n return new ZodUndefined({\\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodNull = class extends ZodType {\\n _parse(input) {\\n const parsedType = this._getType(input);\\n if (parsedType !== ZodParsedType.null) {\\n const ctx = this._getOrReturnCtx(input);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.null,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n return OK(input.data);\\n }\\n};\\nZodNull.create = (params) => {\\n return new ZodNull({\\n typeName: ZodFirstPartyTypeKind.ZodNull,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodAny = class extends ZodType {\\n constructor() {\\n super(...arguments);\\n this._any = true;\\n }\\n _parse(input) {\\n return OK(input.data);\\n }\\n};\\nZodAny.create = (params) => {\\n return new ZodAny({\\n typeName: ZodFirstPartyTypeKind.ZodAny,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodUnknown = class extends ZodType {\\n constructor() {\\n super(...arguments);\\n this._unknown = true;\\n }\\n _parse(input) {\\n return OK(input.data);\\n }\\n};\\nZodUnknown.create = (params) => {\\n return new ZodUnknown({\\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodNever = class extends ZodType {\\n _parse(input) {\\n const ctx = this._getOrReturnCtx(input);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.never,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n};\\nZodNever.create = (params) => {\\n return new ZodNever({\\n typeName: ZodFirstPartyTypeKind.ZodNever,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodVoid = class extends ZodType {\\n _parse(input) {\\n const parsedType = this._getType(input);\\n if (parsedType !== ZodParsedType.undefined) {\\n const ctx = this._getOrReturnCtx(input);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.void,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n return OK(input.data);\\n }\\n};\\nZodVoid.create = (params) => {\\n return new ZodVoid({\\n typeName: ZodFirstPartyTypeKind.ZodVoid,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodArray = class _ZodArray extends ZodType {\\n _parse(input) {\\n const { ctx, status } = this._processInputParams(input);\\n const def = this._def;\\n if (ctx.parsedType !== ZodParsedType.array) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.array,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n if (def.exactLength !== null) {\\n const tooBig = ctx.data.length > def.exactLength.value;\\n const tooSmall = ctx.data.length < def.exactLength.value;\\n if (tooBig || tooSmall) {\\n addIssueToContext(ctx, {\\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\\n minimum: tooSmall ? def.exactLength.value : void 0,\\n maximum: tooBig ? def.exactLength.value : void 0,\\n type: \\\"array\\\",\\n inclusive: true,\\n exact: true,\\n message: def.exactLength.message\\n });\\n status.dirty();\\n }\\n }\\n if (def.minLength !== null) {\\n if (ctx.data.length < def.minLength.value) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_small,\\n minimum: def.minLength.value,\\n type: \\\"array\\\",\\n inclusive: true,\\n exact: false,\\n message: def.minLength.message\\n });\\n status.dirty();\\n }\\n }\\n if (def.maxLength !== null) {\\n if (ctx.data.length > def.maxLength.value) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_big,\\n maximum: def.maxLength.value,\\n type: \\\"array\\\",\\n inclusive: true,\\n exact: false,\\n message: def.maxLength.message\\n });\\n status.dirty();\\n }\\n }\\n if (ctx.common.async) {\\n return Promise.all([...ctx.data].map((item, i) => {\\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\\n })).then((result2) => {\\n return ParseStatus.mergeArray(status, result2);\\n });\\n }\\n const result = [...ctx.data].map((item, i) => {\\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\\n });\\n return ParseStatus.mergeArray(status, result);\\n }\\n get element() {\\n return this._def.type;\\n }\\n min(minLength, message) {\\n return new _ZodArray({\\n ...this._def,\\n minLength: { value: minLength, message: errorUtil.toString(message) }\\n });\\n }\\n max(maxLength, message) {\\n return new _ZodArray({\\n ...this._def,\\n maxLength: { value: maxLength, message: errorUtil.toString(message) }\\n });\\n }\\n length(len, message) {\\n return new _ZodArray({\\n ...this._def,\\n exactLength: { value: len, message: errorUtil.toString(message) }\\n });\\n }\\n nonempty(message) {\\n return this.min(1, message);\\n }\\n};\\nZodArray.create = (schema, params) => {\\n return new ZodArray({\\n type: schema,\\n minLength: null,\\n maxLength: null,\\n exactLength: null,\\n typeName: ZodFirstPartyTypeKind.ZodArray,\\n ...processCreateParams(params)\\n });\\n};\\nfunction deepPartialify(schema) {\\n if (schema instanceof ZodObject) {\\n const newShape = {};\\n for (const key in schema.shape) {\\n const fieldSchema = schema.shape[key];\\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\\n }\\n return new ZodObject({\\n ...schema._def,\\n shape: () => newShape\\n });\\n } else if (schema instanceof ZodArray) {\\n return new ZodArray({\\n ...schema._def,\\n type: deepPartialify(schema.element)\\n });\\n } else if (schema instanceof ZodOptional) {\\n return ZodOptional.create(deepPartialify(schema.unwrap()));\\n } else if (schema instanceof ZodNullable) {\\n return ZodNullable.create(deepPartialify(schema.unwrap()));\\n } else if (schema instanceof ZodTuple) {\\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\\n } else {\\n return schema;\\n }\\n}\\nvar ZodObject = class _ZodObject extends ZodType {\\n constructor() {\\n super(...arguments);\\n this._cached = null;\\n this.nonstrict = this.passthrough;\\n this.augment = this.extend;\\n }\\n _getCached() {\\n if (this._cached !== null)\\n return this._cached;\\n const shape = this._def.shape();\\n const keys = util.objectKeys(shape);\\n this._cached = { shape, keys };\\n return this._cached;\\n }\\n _parse(input) {\\n const parsedType = this._getType(input);\\n if (parsedType !== ZodParsedType.object) {\\n const ctx2 = this._getOrReturnCtx(input);\\n addIssueToContext(ctx2, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.object,\\n received: ctx2.parsedType\\n });\\n return INVALID;\\n }\\n const { status, ctx } = this._processInputParams(input);\\n const { shape, keys: shapeKeys } = this._getCached();\\n const extraKeys = [];\\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \\\"strip\\\")) {\\n for (const key in ctx.data) {\\n if (!shapeKeys.includes(key)) {\\n extraKeys.push(key);\\n }\\n }\\n }\\n const pairs = [];\\n for (const key of shapeKeys) {\\n const keyValidator = shape[key];\\n const value = ctx.data[key];\\n pairs.push({\\n key: { status: \\\"valid\\\", value: key },\\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\\n alwaysSet: key in ctx.data\\n });\\n }\\n if (this._def.catchall instanceof ZodNever) {\\n const unknownKeys = this._def.unknownKeys;\\n if (unknownKeys === \\\"passthrough\\\") {\\n for (const key of extraKeys) {\\n pairs.push({\\n key: { status: \\\"valid\\\", value: key },\\n value: { status: \\\"valid\\\", value: ctx.data[key] }\\n });\\n }\\n } else if (unknownKeys === \\\"strict\\\") {\\n if (extraKeys.length > 0) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.unrecognized_keys,\\n keys: extraKeys\\n });\\n status.dirty();\\n }\\n } else if (unknownKeys === \\\"strip\\\") {\\n } else {\\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\\n }\\n } else {\\n const catchall = this._def.catchall;\\n for (const key of extraKeys) {\\n const value = ctx.data[key];\\n pairs.push({\\n key: { status: \\\"valid\\\", value: key },\\n value: catchall._parse(\\n new ParseInputLazyPath(ctx, value, ctx.path, key)\\n //, ctx.child(key), value, getParsedType(value)\\n ),\\n alwaysSet: key in ctx.data\\n });\\n }\\n }\\n if (ctx.common.async) {\\n return Promise.resolve().then(async () => {\\n const syncPairs = [];\\n for (const pair of pairs) {\\n const key = await pair.key;\\n const value = await pair.value;\\n syncPairs.push({\\n key,\\n value,\\n alwaysSet: pair.alwaysSet\\n });\\n }\\n return syncPairs;\\n }).then((syncPairs) => {\\n return ParseStatus.mergeObjectSync(status, syncPairs);\\n });\\n } else {\\n return ParseStatus.mergeObjectSync(status, pairs);\\n }\\n }\\n get shape() {\\n return this._def.shape();\\n }\\n strict(message) {\\n errorUtil.errToObj;\\n return new _ZodObject({\\n ...this._def,\\n unknownKeys: \\\"strict\\\",\\n ...message !== void 0 ? {\\n errorMap: (issue, ctx) => {\\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\\n if (issue.code === \\\"unrecognized_keys\\\")\\n return {\\n message: errorUtil.errToObj(message).message ?? defaultError\\n };\\n return {\\n message: defaultError\\n };\\n }\\n } : {}\\n });\\n }\\n strip() {\\n return new _ZodObject({\\n ...this._def,\\n unknownKeys: \\\"strip\\\"\\n });\\n }\\n passthrough() {\\n return new _ZodObject({\\n ...this._def,\\n unknownKeys: \\\"passthrough\\\"\\n });\\n }\\n // const AugmentFactory =\\n // <Def extends ZodObjectDef>(def: Def) =>\\n // <Augmentation extends ZodRawShape>(\\n // augmentation: Augmentation\\n // ): ZodObject<\\n // extendShape<ReturnType<Def[\\\"shape\\\"]>, Augmentation>,\\n // Def[\\\"unknownKeys\\\"],\\n // Def[\\\"catchall\\\"]\\n // > => {\\n // return new ZodObject({\\n // ...def,\\n // shape: () => ({\\n // ...def.shape(),\\n // ...augmentation,\\n // }),\\n // }) as any;\\n // };\\n extend(augmentation) {\\n return new _ZodObject({\\n ...this._def,\\n shape: () => ({\\n ...this._def.shape(),\\n ...augmentation\\n })\\n });\\n }\\n /**\\n * Prior to zod@1.0.12 there was a bug in the\\n * inferred type of merged objects. Please\\n * upgrade if you are experiencing issues.\\n */\\n merge(merging) {\\n const merged = new _ZodObject({\\n unknownKeys: merging._def.unknownKeys,\\n catchall: merging._def.catchall,\\n shape: () => ({\\n ...this._def.shape(),\\n ...merging._def.shape()\\n }),\\n typeName: ZodFirstPartyTypeKind.ZodObject\\n });\\n return merged;\\n }\\n // merge<\\n // Incoming extends AnyZodObject,\\n // Augmentation extends Incoming[\\\"shape\\\"],\\n // NewOutput extends {\\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\\n // ? Augmentation[k][\\\"_output\\\"]\\n // : k extends keyof Output\\n // ? Output[k]\\n // : never;\\n // },\\n // NewInput extends {\\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\\n // ? Augmentation[k][\\\"_input\\\"]\\n // : k extends keyof Input\\n // ? Input[k]\\n // : never;\\n // }\\n // >(\\n // merging: Incoming\\n // ): ZodObject<\\n // extendShape<T, ReturnType<Incoming[\\\"_def\\\"][\\\"shape\\\"]>>,\\n // Incoming[\\\"_def\\\"][\\\"unknownKeys\\\"],\\n // Incoming[\\\"_def\\\"][\\\"catchall\\\"],\\n // NewOutput,\\n // NewInput\\n // > {\\n // const merged: any = new ZodObject({\\n // unknownKeys: merging._def.unknownKeys,\\n // catchall: merging._def.catchall,\\n // shape: () =>\\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\\n // typeName: ZodFirstPartyTypeKind.ZodObject,\\n // }) as any;\\n // return merged;\\n // }\\n setKey(key, schema) {\\n return this.augment({ [key]: schema });\\n }\\n // merge<Incoming extends AnyZodObject>(\\n // merging: Incoming\\n // ): //ZodObject<T & Incoming[\\\"_shape\\\"], UnknownKeys, Catchall> = (merging) => {\\n // ZodObject<\\n // extendShape<T, ReturnType<Incoming[\\\"_def\\\"][\\\"shape\\\"]>>,\\n // Incoming[\\\"_def\\\"][\\\"unknownKeys\\\"],\\n // Incoming[\\\"_def\\\"][\\\"catchall\\\"]\\n // > {\\n // // const mergedShape = objectUtil.mergeShapes(\\n // // this._def.shape(),\\n // // merging._def.shape()\\n // // );\\n // const merged: any = new ZodObject({\\n // unknownKeys: merging._def.unknownKeys,\\n // catchall: merging._def.catchall,\\n // shape: () =>\\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\\n // typeName: ZodFirstPartyTypeKind.ZodObject,\\n // }) as any;\\n // return merged;\\n // }\\n catchall(index) {\\n return new _ZodObject({\\n ...this._def,\\n catchall: index\\n });\\n }\\n pick(mask) {\\n const shape = {};\\n for (const key of util.objectKeys(mask)) {\\n if (mask[key] && this.shape[key]) {\\n shape[key] = this.shape[key];\\n }\\n }\\n return new _ZodObject({\\n ...this._def,\\n shape: () => shape\\n });\\n }\\n omit(mask) {\\n const shape = {};\\n for (const key of util.objectKeys(this.shape)) {\\n if (!mask[key]) {\\n shape[key] = this.shape[key];\\n }\\n }\\n return new _ZodObject({\\n ...this._def,\\n shape: () => shape\\n });\\n }\\n /**\\n * @deprecated\\n */\\n deepPartial() {\\n return deepPartialify(this);\\n }\\n partial(mask) {\\n const newShape = {};\\n for (const key of util.objectKeys(this.shape)) {\\n const fieldSchema = this.shape[key];\\n if (mask && !mask[key]) {\\n newShape[key] = fieldSchema;\\n } else {\\n newShape[key] = fieldSchema.optional();\\n }\\n }\\n return new _ZodObject({\\n ...this._def,\\n shape: () => newShape\\n });\\n }\\n required(mask) {\\n const newShape = {};\\n for (const key of util.objectKeys(this.shape)) {\\n if (mask && !mask[key]) {\\n newShape[key] = this.shape[key];\\n } else {\\n const fieldSchema = this.shape[key];\\n let newField = fieldSchema;\\n while (newField instanceof ZodOptional) {\\n newField = newField._def.innerType;\\n }\\n newShape[key] = newField;\\n }\\n }\\n return new _ZodObject({\\n ...this._def,\\n shape: () => newShape\\n });\\n }\\n keyof() {\\n return createZodEnum(util.objectKeys(this.shape));\\n }\\n};\\nZodObject.create = (shape, params) => {\\n return new ZodObject({\\n shape: () => shape,\\n unknownKeys: \\\"strip\\\",\\n catchall: ZodNever.create(),\\n typeName: ZodFirstPartyTypeKind.ZodObject,\\n ...processCreateParams(params)\\n });\\n};\\nZodObject.strictCreate = (shape, params) => {\\n return new ZodObject({\\n shape: () => shape,\\n unknownKeys: \\\"strict\\\",\\n catchall: ZodNever.create(),\\n typeName: ZodFirstPartyTypeKind.ZodObject,\\n ...processCreateParams(params)\\n });\\n};\\nZodObject.lazycreate = (shape, params) => {\\n return new ZodObject({\\n shape,\\n unknownKeys: \\\"strip\\\",\\n catchall: ZodNever.create(),\\n typeName: ZodFirstPartyTypeKind.ZodObject,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodUnion = class extends ZodType {\\n _parse(input) {\\n const { ctx } = this._processInputParams(input);\\n const options = this._def.options;\\n function handleResults(results) {\\n for (const result of results) {\\n if (result.result.status === \\\"valid\\\") {\\n return result.result;\\n }\\n }\\n for (const result of results) {\\n if (result.result.status === \\\"dirty\\\") {\\n ctx.common.issues.push(...result.ctx.common.issues);\\n return result.result;\\n }\\n }\\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_union,\\n unionErrors\\n });\\n return INVALID;\\n }\\n if (ctx.common.async) {\\n return Promise.all(options.map(async (option) => {\\n const childCtx = {\\n ...ctx,\\n common: {\\n ...ctx.common,\\n issues: []\\n },\\n parent: null\\n };\\n return {\\n result: await option._parseAsync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: childCtx\\n }),\\n ctx: childCtx\\n };\\n })).then(handleResults);\\n } else {\\n let dirty = void 0;\\n const issues = [];\\n for (const option of options) {\\n const childCtx = {\\n ...ctx,\\n common: {\\n ...ctx.common,\\n issues: []\\n },\\n parent: null\\n };\\n const result = option._parseSync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: childCtx\\n });\\n if (result.status === \\\"valid\\\") {\\n return result;\\n } else if (result.status === \\\"dirty\\\" && !dirty) {\\n dirty = { result, ctx: childCtx };\\n }\\n if (childCtx.common.issues.length) {\\n issues.push(childCtx.common.issues);\\n }\\n }\\n if (dirty) {\\n ctx.common.issues.push(...dirty.ctx.common.issues);\\n return dirty.result;\\n }\\n const unionErrors = issues.map((issues2) => new ZodError(issues2));\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_union,\\n unionErrors\\n });\\n return INVALID;\\n }\\n }\\n get options() {\\n return this._def.options;\\n }\\n};\\nZodUnion.create = (types, params) => {\\n return new ZodUnion({\\n options: types,\\n typeName: ZodFirstPartyTypeKind.ZodUnion,\\n ...processCreateParams(params)\\n });\\n};\\nvar getDiscriminator = (type) => {\\n if (type instanceof ZodLazy) {\\n return getDiscriminator(type.schema);\\n } else if (type instanceof ZodEffects) {\\n return getDiscriminator(type.innerType());\\n } else if (type instanceof ZodLiteral) {\\n return [type.value];\\n } else if (type instanceof ZodEnum) {\\n return type.options;\\n } else if (type instanceof ZodNativeEnum) {\\n return util.objectValues(type.enum);\\n } else if (type instanceof ZodDefault) {\\n return getDiscriminator(type._def.innerType);\\n } else if (type instanceof ZodUndefined) {\\n return [void 0];\\n } else if (type instanceof ZodNull) {\\n return [null];\\n } else if (type instanceof ZodOptional) {\\n return [void 0, ...getDiscriminator(type.unwrap())];\\n } else if (type instanceof ZodNullable) {\\n return [null, ...getDiscriminator(type.unwrap())];\\n } else if (type instanceof ZodBranded) {\\n return getDiscriminator(type.unwrap());\\n } else if (type instanceof ZodReadonly) {\\n return getDiscriminator(type.unwrap());\\n } else if (type instanceof ZodCatch) {\\n return getDiscriminator(type._def.innerType);\\n } else {\\n return [];\\n }\\n};\\nvar ZodDiscriminatedUnion = class _ZodDiscriminatedUnion extends ZodType {\\n _parse(input) {\\n const { ctx } = this._processInputParams(input);\\n if (ctx.parsedType !== ZodParsedType.object) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.object,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n const discriminator = this.discriminator;\\n const discriminatorValue = ctx.data[discriminator];\\n const option = this.optionsMap.get(discriminatorValue);\\n if (!option) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_union_discriminator,\\n options: Array.from(this.optionsMap.keys()),\\n path: [discriminator]\\n });\\n return INVALID;\\n }\\n if (ctx.common.async) {\\n return option._parseAsync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: ctx\\n });\\n } else {\\n return option._parseSync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: ctx\\n });\\n }\\n }\\n get discriminator() {\\n return this._def.discriminator;\\n }\\n get options() {\\n return this._def.options;\\n }\\n get optionsMap() {\\n return this._def.optionsMap;\\n }\\n /**\\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\\n * have a different value for each object in the union.\\n * @param discriminator the name of the discriminator property\\n * @param types an array of object schemas\\n * @param params\\n */\\n static create(discriminator, options, params) {\\n const optionsMap = /* @__PURE__ */ new Map();\\n for (const type of options) {\\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\\n if (!discriminatorValues.length) {\\n throw new Error(`A discriminator value for key \\\\`${discriminator}\\\\` could not be extracted from all schema options`);\\n }\\n for (const value of discriminatorValues) {\\n if (optionsMap.has(value)) {\\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\\n }\\n optionsMap.set(value, type);\\n }\\n }\\n return new _ZodDiscriminatedUnion({\\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\\n discriminator,\\n options,\\n optionsMap,\\n ...processCreateParams(params)\\n });\\n }\\n};\\nfunction mergeValues(a, b) {\\n const aType = getParsedType(a);\\n const bType = getParsedType(b);\\n if (a === b) {\\n return { valid: true, data: a };\\n } else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\\n const bKeys = util.objectKeys(b);\\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\\n const newObj = { ...a, ...b };\\n for (const key of sharedKeys) {\\n const sharedValue = mergeValues(a[key], b[key]);\\n if (!sharedValue.valid) {\\n return { valid: false };\\n }\\n newObj[key] = sharedValue.data;\\n }\\n return { valid: true, data: newObj };\\n } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\\n if (a.length !== b.length) {\\n return { valid: false };\\n }\\n const newArray = [];\\n for (let index = 0; index < a.length; index++) {\\n const itemA = a[index];\\n const itemB = b[index];\\n const sharedValue = mergeValues(itemA, itemB);\\n if (!sharedValue.valid) {\\n return { valid: false };\\n }\\n newArray.push(sharedValue.data);\\n }\\n return { valid: true, data: newArray };\\n } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\\n return { valid: true, data: a };\\n } else {\\n return { valid: false };\\n }\\n}\\nvar ZodIntersection = class extends ZodType {\\n _parse(input) {\\n const { status, ctx } = this._processInputParams(input);\\n const handleParsed = (parsedLeft, parsedRight) => {\\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\\n return INVALID;\\n }\\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\\n if (!merged.valid) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_intersection_types\\n });\\n return INVALID;\\n }\\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\\n status.dirty();\\n }\\n return { status: status.value, value: merged.data };\\n };\\n if (ctx.common.async) {\\n return Promise.all([\\n this._def.left._parseAsync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: ctx\\n }),\\n this._def.right._parseAsync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: ctx\\n })\\n ]).then(([left, right]) => handleParsed(left, right));\\n } else {\\n return handleParsed(this._def.left._parseSync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: ctx\\n }), this._def.right._parseSync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: ctx\\n }));\\n }\\n }\\n};\\nZodIntersection.create = (left, right, params) => {\\n return new ZodIntersection({\\n left,\\n right,\\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodTuple = class _ZodTuple extends ZodType {\\n _parse(input) {\\n const { status, ctx } = this._processInputParams(input);\\n if (ctx.parsedType !== ZodParsedType.array) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.array,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n if (ctx.data.length < this._def.items.length) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_small,\\n minimum: this._def.items.length,\\n inclusive: true,\\n exact: false,\\n type: \\\"array\\\"\\n });\\n return INVALID;\\n }\\n const rest = this._def.rest;\\n if (!rest && ctx.data.length > this._def.items.length) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_big,\\n maximum: this._def.items.length,\\n inclusive: true,\\n exact: false,\\n type: \\\"array\\\"\\n });\\n status.dirty();\\n }\\n const items = [...ctx.data].map((item, itemIndex) => {\\n const schema = this._def.items[itemIndex] || this._def.rest;\\n if (!schema)\\n return null;\\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\\n }).filter((x) => !!x);\\n if (ctx.common.async) {\\n return Promise.all(items).then((results) => {\\n return ParseStatus.mergeArray(status, results);\\n });\\n } else {\\n return ParseStatus.mergeArray(status, items);\\n }\\n }\\n get items() {\\n return this._def.items;\\n }\\n rest(rest) {\\n return new _ZodTuple({\\n ...this._def,\\n rest\\n });\\n }\\n};\\nZodTuple.create = (schemas, params) => {\\n if (!Array.isArray(schemas)) {\\n throw new Error(\\\"You must pass an array of schemas to z.tuple([ ... ])\\\");\\n }\\n return new ZodTuple({\\n items: schemas,\\n typeName: ZodFirstPartyTypeKind.ZodTuple,\\n rest: null,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodRecord = class _ZodRecord extends ZodType {\\n get keySchema() {\\n return this._def.keyType;\\n }\\n get valueSchema() {\\n return this._def.valueType;\\n }\\n _parse(input) {\\n const { status, ctx } = this._processInputParams(input);\\n if (ctx.parsedType !== ZodParsedType.object) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.object,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n const pairs = [];\\n const keyType = this._def.keyType;\\n const valueType = this._def.valueType;\\n for (const key in ctx.data) {\\n pairs.push({\\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\\n alwaysSet: key in ctx.data\\n });\\n }\\n if (ctx.common.async) {\\n return ParseStatus.mergeObjectAsync(status, pairs);\\n } else {\\n return ParseStatus.mergeObjectSync(status, pairs);\\n }\\n }\\n get element() {\\n return this._def.valueType;\\n }\\n static create(first, second, third) {\\n if (second instanceof ZodType) {\\n return new _ZodRecord({\\n keyType: first,\\n valueType: second,\\n typeName: ZodFirstPartyTypeKind.ZodRecord,\\n ...processCreateParams(third)\\n });\\n }\\n return new _ZodRecord({\\n keyType: ZodString.create(),\\n valueType: first,\\n typeName: ZodFirstPartyTypeKind.ZodRecord,\\n ...processCreateParams(second)\\n });\\n }\\n};\\nvar ZodMap = class extends ZodType {\\n get keySchema() {\\n return this._def.keyType;\\n }\\n get valueSchema() {\\n return this._def.valueType;\\n }\\n _parse(input) {\\n const { status, ctx } = this._processInputParams(input);\\n if (ctx.parsedType !== ZodParsedType.map) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.map,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n const keyType = this._def.keyType;\\n const valueType = this._def.valueType;\\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\\n return {\\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \\\"key\\\"])),\\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \\\"value\\\"]))\\n };\\n });\\n if (ctx.common.async) {\\n const finalMap = /* @__PURE__ */ new Map();\\n return Promise.resolve().then(async () => {\\n for (const pair of pairs) {\\n const key = await pair.key;\\n const value = await pair.value;\\n if (key.status === \\\"aborted\\\" || value.status === \\\"aborted\\\") {\\n return INVALID;\\n }\\n if (key.status === \\\"dirty\\\" || value.status === \\\"dirty\\\") {\\n status.dirty();\\n }\\n finalMap.set(key.value, value.value);\\n }\\n return { status: status.value, value: finalMap };\\n });\\n } else {\\n const finalMap = /* @__PURE__ */ new Map();\\n for (const pair of pairs) {\\n const key = pair.key;\\n const value = pair.value;\\n if (key.status === \\\"aborted\\\" || value.status === \\\"aborted\\\") {\\n return INVALID;\\n }\\n if (key.status === \\\"dirty\\\" || value.status === \\\"dirty\\\") {\\n status.dirty();\\n }\\n finalMap.set(key.value, value.value);\\n }\\n return { status: status.value, value: finalMap };\\n }\\n }\\n};\\nZodMap.create = (keyType, valueType, params) => {\\n return new ZodMap({\\n valueType,\\n keyType,\\n typeName: ZodFirstPartyTypeKind.ZodMap,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodSet = class _ZodSet extends ZodType {\\n _parse(input) {\\n const { status, ctx } = this._processInputParams(input);\\n if (ctx.parsedType !== ZodParsedType.set) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.set,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n const def = this._def;\\n if (def.minSize !== null) {\\n if (ctx.data.size < def.minSize.value) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_small,\\n minimum: def.minSize.value,\\n type: \\\"set\\\",\\n inclusive: true,\\n exact: false,\\n message: def.minSize.message\\n });\\n status.dirty();\\n }\\n }\\n if (def.maxSize !== null) {\\n if (ctx.data.size > def.maxSize.value) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.too_big,\\n maximum: def.maxSize.value,\\n type: \\\"set\\\",\\n inclusive: true,\\n exact: false,\\n message: def.maxSize.message\\n });\\n status.dirty();\\n }\\n }\\n const valueType = this._def.valueType;\\n function finalizeSet(elements2) {\\n const parsedSet = /* @__PURE__ */ new Set();\\n for (const element of elements2) {\\n if (element.status === \\\"aborted\\\")\\n return INVALID;\\n if (element.status === \\\"dirty\\\")\\n status.dirty();\\n parsedSet.add(element.value);\\n }\\n return { status: status.value, value: parsedSet };\\n }\\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\\n if (ctx.common.async) {\\n return Promise.all(elements).then((elements2) => finalizeSet(elements2));\\n } else {\\n return finalizeSet(elements);\\n }\\n }\\n min(minSize, message) {\\n return new _ZodSet({\\n ...this._def,\\n minSize: { value: minSize, message: errorUtil.toString(message) }\\n });\\n }\\n max(maxSize, message) {\\n return new _ZodSet({\\n ...this._def,\\n maxSize: { value: maxSize, message: errorUtil.toString(message) }\\n });\\n }\\n size(size, message) {\\n return this.min(size, message).max(size, message);\\n }\\n nonempty(message) {\\n return this.min(1, message);\\n }\\n};\\nZodSet.create = (valueType, params) => {\\n return new ZodSet({\\n valueType,\\n minSize: null,\\n maxSize: null,\\n typeName: ZodFirstPartyTypeKind.ZodSet,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodFunction = class _ZodFunction extends ZodType {\\n constructor() {\\n super(...arguments);\\n this.validate = this.implement;\\n }\\n _parse(input) {\\n const { ctx } = this._processInputParams(input);\\n if (ctx.parsedType !== ZodParsedType.function) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.function,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n function makeArgsIssue(args, error) {\\n return makeIssue({\\n data: args,\\n path: ctx.path,\\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), en_default].filter((x) => !!x),\\n issueData: {\\n code: ZodIssueCode.invalid_arguments,\\n argumentsError: error\\n }\\n });\\n }\\n function makeReturnsIssue(returns, error) {\\n return makeIssue({\\n data: returns,\\n path: ctx.path,\\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), en_default].filter((x) => !!x),\\n issueData: {\\n code: ZodIssueCode.invalid_return_type,\\n returnTypeError: error\\n }\\n });\\n }\\n const params = { errorMap: ctx.common.contextualErrorMap };\\n const fn = ctx.data;\\n if (this._def.returns instanceof ZodPromise) {\\n const me = this;\\n return OK(async function(...args) {\\n const error = new ZodError([]);\\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\\n error.addIssue(makeArgsIssue(args, e));\\n throw error;\\n });\\n const result = await Reflect.apply(fn, this, parsedArgs);\\n const parsedReturns = await me._def.returns._def.type.parseAsync(result, params).catch((e) => {\\n error.addIssue(makeReturnsIssue(result, e));\\n throw error;\\n });\\n return parsedReturns;\\n });\\n } else {\\n const me = this;\\n return OK(function(...args) {\\n const parsedArgs = me._def.args.safeParse(args, params);\\n if (!parsedArgs.success) {\\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\\n }\\n const result = Reflect.apply(fn, this, parsedArgs.data);\\n const parsedReturns = me._def.returns.safeParse(result, params);\\n if (!parsedReturns.success) {\\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\\n }\\n return parsedReturns.data;\\n });\\n }\\n }\\n parameters() {\\n return this._def.args;\\n }\\n returnType() {\\n return this._def.returns;\\n }\\n args(...items) {\\n return new _ZodFunction({\\n ...this._def,\\n args: ZodTuple.create(items).rest(ZodUnknown.create())\\n });\\n }\\n returns(returnType) {\\n return new _ZodFunction({\\n ...this._def,\\n returns: returnType\\n });\\n }\\n implement(func) {\\n const validatedFunc = this.parse(func);\\n return validatedFunc;\\n }\\n strictImplement(func) {\\n const validatedFunc = this.parse(func);\\n return validatedFunc;\\n }\\n static create(args, returns, params) {\\n return new _ZodFunction({\\n args: args ? args : ZodTuple.create([]).rest(ZodUnknown.create()),\\n returns: returns || ZodUnknown.create(),\\n typeName: ZodFirstPartyTypeKind.ZodFunction,\\n ...processCreateParams(params)\\n });\\n }\\n};\\nvar ZodLazy = class extends ZodType {\\n get schema() {\\n return this._def.getter();\\n }\\n _parse(input) {\\n const { ctx } = this._processInputParams(input);\\n const lazySchema = this._def.getter();\\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\\n }\\n};\\nZodLazy.create = (getter, params) => {\\n return new ZodLazy({\\n getter,\\n typeName: ZodFirstPartyTypeKind.ZodLazy,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodLiteral = class extends ZodType {\\n _parse(input) {\\n if (input.data !== this._def.value) {\\n const ctx = this._getOrReturnCtx(input);\\n addIssueToContext(ctx, {\\n received: ctx.data,\\n code: ZodIssueCode.invalid_literal,\\n expected: this._def.value\\n });\\n return INVALID;\\n }\\n return { status: \\\"valid\\\", value: input.data };\\n }\\n get value() {\\n return this._def.value;\\n }\\n};\\nZodLiteral.create = (value, params) => {\\n return new ZodLiteral({\\n value,\\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\\n ...processCreateParams(params)\\n });\\n};\\nfunction createZodEnum(values, params) {\\n return new ZodEnum({\\n values,\\n typeName: ZodFirstPartyTypeKind.ZodEnum,\\n ...processCreateParams(params)\\n });\\n}\\nvar ZodEnum = class _ZodEnum extends ZodType {\\n _parse(input) {\\n if (typeof input.data !== \\\"string\\\") {\\n const ctx = this._getOrReturnCtx(input);\\n const expectedValues = this._def.values;\\n addIssueToContext(ctx, {\\n expected: util.joinValues(expectedValues),\\n received: ctx.parsedType,\\n code: ZodIssueCode.invalid_type\\n });\\n return INVALID;\\n }\\n if (!this._cache) {\\n this._cache = new Set(this._def.values);\\n }\\n if (!this._cache.has(input.data)) {\\n const ctx = this._getOrReturnCtx(input);\\n const expectedValues = this._def.values;\\n addIssueToContext(ctx, {\\n received: ctx.data,\\n code: ZodIssueCode.invalid_enum_value,\\n options: expectedValues\\n });\\n return INVALID;\\n }\\n return OK(input.data);\\n }\\n get options() {\\n return this._def.values;\\n }\\n get enum() {\\n const enumValues = {};\\n for (const val of this._def.values) {\\n enumValues[val] = val;\\n }\\n return enumValues;\\n }\\n get Values() {\\n const enumValues = {};\\n for (const val of this._def.values) {\\n enumValues[val] = val;\\n }\\n return enumValues;\\n }\\n get Enum() {\\n const enumValues = {};\\n for (const val of this._def.values) {\\n enumValues[val] = val;\\n }\\n return enumValues;\\n }\\n extract(values, newDef = this._def) {\\n return _ZodEnum.create(values, {\\n ...this._def,\\n ...newDef\\n });\\n }\\n exclude(values, newDef = this._def) {\\n return _ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\\n ...this._def,\\n ...newDef\\n });\\n }\\n};\\nZodEnum.create = createZodEnum;\\nvar ZodNativeEnum = class extends ZodType {\\n _parse(input) {\\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\\n const ctx = this._getOrReturnCtx(input);\\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\\n const expectedValues = util.objectValues(nativeEnumValues);\\n addIssueToContext(ctx, {\\n expected: util.joinValues(expectedValues),\\n received: ctx.parsedType,\\n code: ZodIssueCode.invalid_type\\n });\\n return INVALID;\\n }\\n if (!this._cache) {\\n this._cache = new Set(util.getValidEnumValues(this._def.values));\\n }\\n if (!this._cache.has(input.data)) {\\n const expectedValues = util.objectValues(nativeEnumValues);\\n addIssueToContext(ctx, {\\n received: ctx.data,\\n code: ZodIssueCode.invalid_enum_value,\\n options: expectedValues\\n });\\n return INVALID;\\n }\\n return OK(input.data);\\n }\\n get enum() {\\n return this._def.values;\\n }\\n};\\nZodNativeEnum.create = (values, params) => {\\n return new ZodNativeEnum({\\n values,\\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodPromise = class extends ZodType {\\n unwrap() {\\n return this._def.type;\\n }\\n _parse(input) {\\n const { ctx } = this._processInputParams(input);\\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.promise,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\\n return OK(promisified.then((data) => {\\n return this._def.type.parseAsync(data, {\\n path: ctx.path,\\n errorMap: ctx.common.contextualErrorMap\\n });\\n }));\\n }\\n};\\nZodPromise.create = (schema, params) => {\\n return new ZodPromise({\\n type: schema,\\n typeName: ZodFirstPartyTypeKind.ZodPromise,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodEffects = class extends ZodType {\\n innerType() {\\n return this._def.schema;\\n }\\n sourceType() {\\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects ? this._def.schema.sourceType() : this._def.schema;\\n }\\n _parse(input) {\\n const { status, ctx } = this._processInputParams(input);\\n const effect = this._def.effect || null;\\n const checkCtx = {\\n addIssue: (arg) => {\\n addIssueToContext(ctx, arg);\\n if (arg.fatal) {\\n status.abort();\\n } else {\\n status.dirty();\\n }\\n },\\n get path() {\\n return ctx.path;\\n }\\n };\\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\\n if (effect.type === \\\"preprocess\\\") {\\n const processed = effect.transform(ctx.data, checkCtx);\\n if (ctx.common.async) {\\n return Promise.resolve(processed).then(async (processed2) => {\\n if (status.value === \\\"aborted\\\")\\n return INVALID;\\n const result = await this._def.schema._parseAsync({\\n data: processed2,\\n path: ctx.path,\\n parent: ctx\\n });\\n if (result.status === \\\"aborted\\\")\\n return INVALID;\\n if (result.status === \\\"dirty\\\")\\n return DIRTY(result.value);\\n if (status.value === \\\"dirty\\\")\\n return DIRTY(result.value);\\n return result;\\n });\\n } else {\\n if (status.value === \\\"aborted\\\")\\n return INVALID;\\n const result = this._def.schema._parseSync({\\n data: processed,\\n path: ctx.path,\\n parent: ctx\\n });\\n if (result.status === \\\"aborted\\\")\\n return INVALID;\\n if (result.status === \\\"dirty\\\")\\n return DIRTY(result.value);\\n if (status.value === \\\"dirty\\\")\\n return DIRTY(result.value);\\n return result;\\n }\\n }\\n if (effect.type === \\\"refinement\\\") {\\n const executeRefinement = (acc) => {\\n const result = effect.refinement(acc, checkCtx);\\n if (ctx.common.async) {\\n return Promise.resolve(result);\\n }\\n if (result instanceof Promise) {\\n throw new Error(\\\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\\\");\\n }\\n return acc;\\n };\\n if (ctx.common.async === false) {\\n const inner = this._def.schema._parseSync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: ctx\\n });\\n if (inner.status === \\\"aborted\\\")\\n return INVALID;\\n if (inner.status === \\\"dirty\\\")\\n status.dirty();\\n executeRefinement(inner.value);\\n return { status: status.value, value: inner.value };\\n } else {\\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\\n if (inner.status === \\\"aborted\\\")\\n return INVALID;\\n if (inner.status === \\\"dirty\\\")\\n status.dirty();\\n return executeRefinement(inner.value).then(() => {\\n return { status: status.value, value: inner.value };\\n });\\n });\\n }\\n }\\n if (effect.type === \\\"transform\\\") {\\n if (ctx.common.async === false) {\\n const base = this._def.schema._parseSync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: ctx\\n });\\n if (!isValid(base))\\n return INVALID;\\n const result = effect.transform(base.value, checkCtx);\\n if (result instanceof Promise) {\\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\\n }\\n return { status: status.value, value: result };\\n } else {\\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\\n if (!isValid(base))\\n return INVALID;\\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\\n status: status.value,\\n value: result\\n }));\\n });\\n }\\n }\\n util.assertNever(effect);\\n }\\n};\\nZodEffects.create = (schema, effect, params) => {\\n return new ZodEffects({\\n schema,\\n typeName: ZodFirstPartyTypeKind.ZodEffects,\\n effect,\\n ...processCreateParams(params)\\n });\\n};\\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\\n return new ZodEffects({\\n schema,\\n effect: { type: \\\"preprocess\\\", transform: preprocess },\\n typeName: ZodFirstPartyTypeKind.ZodEffects,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodOptional = class extends ZodType {\\n _parse(input) {\\n const parsedType = this._getType(input);\\n if (parsedType === ZodParsedType.undefined) {\\n return OK(void 0);\\n }\\n return this._def.innerType._parse(input);\\n }\\n unwrap() {\\n return this._def.innerType;\\n }\\n};\\nZodOptional.create = (type, params) => {\\n return new ZodOptional({\\n innerType: type,\\n typeName: ZodFirstPartyTypeKind.ZodOptional,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodNullable = class extends ZodType {\\n _parse(input) {\\n const parsedType = this._getType(input);\\n if (parsedType === ZodParsedType.null) {\\n return OK(null);\\n }\\n return this._def.innerType._parse(input);\\n }\\n unwrap() {\\n return this._def.innerType;\\n }\\n};\\nZodNullable.create = (type, params) => {\\n return new ZodNullable({\\n innerType: type,\\n typeName: ZodFirstPartyTypeKind.ZodNullable,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodDefault = class extends ZodType {\\n _parse(input) {\\n const { ctx } = this._processInputParams(input);\\n let data = ctx.data;\\n if (ctx.parsedType === ZodParsedType.undefined) {\\n data = this._def.defaultValue();\\n }\\n return this._def.innerType._parse({\\n data,\\n path: ctx.path,\\n parent: ctx\\n });\\n }\\n removeDefault() {\\n return this._def.innerType;\\n }\\n};\\nZodDefault.create = (type, params) => {\\n return new ZodDefault({\\n innerType: type,\\n typeName: ZodFirstPartyTypeKind.ZodDefault,\\n defaultValue: typeof params.default === \\\"function\\\" ? params.default : () => params.default,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodCatch = class extends ZodType {\\n _parse(input) {\\n const { ctx } = this._processInputParams(input);\\n const newCtx = {\\n ...ctx,\\n common: {\\n ...ctx.common,\\n issues: []\\n }\\n };\\n const result = this._def.innerType._parse({\\n data: newCtx.data,\\n path: newCtx.path,\\n parent: {\\n ...newCtx\\n }\\n });\\n if (isAsync(result)) {\\n return result.then((result2) => {\\n return {\\n status: \\\"valid\\\",\\n value: result2.status === \\\"valid\\\" ? result2.value : this._def.catchValue({\\n get error() {\\n return new ZodError(newCtx.common.issues);\\n },\\n input: newCtx.data\\n })\\n };\\n });\\n } else {\\n return {\\n status: \\\"valid\\\",\\n value: result.status === \\\"valid\\\" ? result.value : this._def.catchValue({\\n get error() {\\n return new ZodError(newCtx.common.issues);\\n },\\n input: newCtx.data\\n })\\n };\\n }\\n }\\n removeCatch() {\\n return this._def.innerType;\\n }\\n};\\nZodCatch.create = (type, params) => {\\n return new ZodCatch({\\n innerType: type,\\n typeName: ZodFirstPartyTypeKind.ZodCatch,\\n catchValue: typeof params.catch === \\\"function\\\" ? params.catch : () => params.catch,\\n ...processCreateParams(params)\\n });\\n};\\nvar ZodNaN = class extends ZodType {\\n _parse(input) {\\n const parsedType = this._getType(input);\\n if (parsedType !== ZodParsedType.nan) {\\n const ctx = this._getOrReturnCtx(input);\\n addIssueToContext(ctx, {\\n code: ZodIssueCode.invalid_type,\\n expected: ZodParsedType.nan,\\n received: ctx.parsedType\\n });\\n return INVALID;\\n }\\n return { status: \\\"valid\\\", value: input.data };\\n }\\n};\\nZodNaN.create = (params) => {\\n return new ZodNaN({\\n typeName: ZodFirstPartyTypeKind.ZodNaN,\\n ...processCreateParams(params)\\n });\\n};\\nvar BRAND = /* @__PURE__ */ Symbol(\\\"zod_brand\\\");\\nvar ZodBranded = class extends ZodType {\\n _parse(input) {\\n const { ctx } = this._processInputParams(input);\\n const data = ctx.data;\\n return this._def.type._parse({\\n data,\\n path: ctx.path,\\n parent: ctx\\n });\\n }\\n unwrap() {\\n return this._def.type;\\n }\\n};\\nvar ZodPipeline = class _ZodPipeline extends ZodType {\\n _parse(input) {\\n const { status, ctx } = this._processInputParams(input);\\n if (ctx.common.async) {\\n const handleAsync = async () => {\\n const inResult = await this._def.in._parseAsync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: ctx\\n });\\n if (inResult.status === \\\"aborted\\\")\\n return INVALID;\\n if (inResult.status === \\\"dirty\\\") {\\n status.dirty();\\n return DIRTY(inResult.value);\\n } else {\\n return this._def.out._parseAsync({\\n data: inResult.value,\\n path: ctx.path,\\n parent: ctx\\n });\\n }\\n };\\n return handleAsync();\\n } else {\\n const inResult = this._def.in._parseSync({\\n data: ctx.data,\\n path: ctx.path,\\n parent: ctx\\n });\\n if (inResult.status === \\\"aborted\\\")\\n return INVALID;\\n if (inResult.status === \\\"dirty\\\") {\\n status.dirty();\\n return {\\n status: \\\"dirty\\\",\\n value: inResult.value\\n };\\n } else {\\n return this._def.out._parseSync({\\n data: inResult.value,\\n path: ctx.path,\\n parent: ctx\\n });\\n }\\n }\\n }\\n static create(a, b) {\\n return new _ZodPipeline({\\n in: a,\\n out: b,\\n typeName: ZodFirstPartyTypeKind.ZodPipeline\\n });\\n }\\n};\\nvar ZodReadonly = class extends ZodType {\\n _parse(input) {\\n const result = this._def.innerType._parse(input);\\n const freeze = (data) => {\\n if (isValid(data)) {\\n data.value = Object.freeze(data.value);\\n }\\n return data;\\n };\\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\\n }\\n unwrap() {\\n return this._def.innerType;\\n }\\n};\\nZodReadonly.create = (type, params) => {\\n return new ZodReadonly({\\n innerType: type,\\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\\n ...processCreateParams(params)\\n });\\n};\\nfunction cleanParams(params, data) {\\n const p = typeof params === \\\"function\\\" ? params(data) : typeof params === \\\"string\\\" ? { message: params } : params;\\n const p2 = typeof p === \\\"string\\\" ? { message: p } : p;\\n return p2;\\n}\\nfunction custom(check, _params = {}, fatal) {\\n if (check)\\n return ZodAny.create().superRefine((data, ctx) => {\\n const r = check(data);\\n if (r instanceof Promise) {\\n return r.then((r2) => {\\n if (!r2) {\\n const params = cleanParams(_params, data);\\n const _fatal = params.fatal ?? fatal ?? true;\\n ctx.addIssue({ code: \\\"custom\\\", ...params, fatal: _fatal });\\n }\\n });\\n }\\n if (!r) {\\n const params = cleanParams(_params, data);\\n const _fatal = params.fatal ?? fatal ?? true;\\n ctx.addIssue({ code: \\\"custom\\\", ...params, fatal: _fatal });\\n }\\n return;\\n });\\n return ZodAny.create();\\n}\\nvar late = {\\n object: ZodObject.lazycreate\\n};\\nvar ZodFirstPartyTypeKind;\\n(function(ZodFirstPartyTypeKind2) {\\n ZodFirstPartyTypeKind2[\\\"ZodString\\\"] = \\\"ZodString\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodNumber\\\"] = \\\"ZodNumber\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodNaN\\\"] = \\\"ZodNaN\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodBigInt\\\"] = \\\"ZodBigInt\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodBoolean\\\"] = \\\"ZodBoolean\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodDate\\\"] = \\\"ZodDate\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodSymbol\\\"] = \\\"ZodSymbol\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodUndefined\\\"] = \\\"ZodUndefined\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodNull\\\"] = \\\"ZodNull\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodAny\\\"] = \\\"ZodAny\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodUnknown\\\"] = \\\"ZodUnknown\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodNever\\\"] = \\\"ZodNever\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodVoid\\\"] = \\\"ZodVoid\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodArray\\\"] = \\\"ZodArray\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodObject\\\"] = \\\"ZodObject\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodUnion\\\"] = \\\"ZodUnion\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodDiscriminatedUnion\\\"] = \\\"ZodDiscriminatedUnion\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodIntersection\\\"] = \\\"ZodIntersection\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodTuple\\\"] = \\\"ZodTuple\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodRecord\\\"] = \\\"ZodRecord\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodMap\\\"] = \\\"ZodMap\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodSet\\\"] = \\\"ZodSet\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodFunction\\\"] = \\\"ZodFunction\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodLazy\\\"] = \\\"ZodLazy\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodLiteral\\\"] = \\\"ZodLiteral\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodEnum\\\"] = \\\"ZodEnum\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodEffects\\\"] = \\\"ZodEffects\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodNativeEnum\\\"] = \\\"ZodNativeEnum\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodOptional\\\"] = \\\"ZodOptional\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodNullable\\\"] = \\\"ZodNullable\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodDefault\\\"] = \\\"ZodDefault\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodCatch\\\"] = \\\"ZodCatch\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodPromise\\\"] = \\\"ZodPromise\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodBranded\\\"] = \\\"ZodBranded\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodPipeline\\\"] = \\\"ZodPipeline\\\";\\n ZodFirstPartyTypeKind2[\\\"ZodReadonly\\\"] = \\\"ZodReadonly\\\";\\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\\nvar instanceOfType = (cls, params = {\\n message: `Input not instance of ${cls.name}`\\n}) => custom((data) => data instanceof cls, params);\\nvar stringType = ZodString.create;\\nvar numberType = ZodNumber.create;\\nvar nanType = ZodNaN.create;\\nvar bigIntType = ZodBigInt.create;\\nvar booleanType = ZodBoolean.create;\\nvar dateType = ZodDate.create;\\nvar symbolType = ZodSymbol.create;\\nvar undefinedType = ZodUndefined.create;\\nvar nullType = ZodNull.create;\\nvar anyType = ZodAny.create;\\nvar unknownType = ZodUnknown.create;\\nvar neverType = ZodNever.create;\\nvar voidType = ZodVoid.create;\\nvar arrayType = ZodArray.create;\\nvar objectType = ZodObject.create;\\nvar strictObjectType = ZodObject.strictCreate;\\nvar unionType = ZodUnion.create;\\nvar discriminatedUnionType = ZodDiscriminatedUnion.create;\\nvar intersectionType = ZodIntersection.create;\\nvar tupleType = ZodTuple.create;\\nvar recordType = ZodRecord.create;\\nvar mapType = ZodMap.create;\\nvar setType = ZodSet.create;\\nvar functionType = ZodFunction.create;\\nvar lazyType = ZodLazy.create;\\nvar literalType = ZodLiteral.create;\\nvar enumType = ZodEnum.create;\\nvar nativeEnumType = ZodNativeEnum.create;\\nvar promiseType = ZodPromise.create;\\nvar effectsType = ZodEffects.create;\\nvar optionalType = ZodOptional.create;\\nvar nullableType = ZodNullable.create;\\nvar preprocessType = ZodEffects.createWithPreprocess;\\nvar pipelineType = ZodPipeline.create;\\nvar ostring = () => stringType().optional();\\nvar onumber = () => numberType().optional();\\nvar oboolean = () => booleanType().optional();\\nvar coerce = {\\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\\n boolean: ((arg) => ZodBoolean.create({\\n ...arg,\\n coerce: true\\n })),\\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\\n date: ((arg) => ZodDate.create({ ...arg, coerce: true }))\\n};\\nvar NEVER = INVALID;\\n\\n// ../../packages/protocol/src/index.ts\\nvar RequestBaseSchema = external_exports.object({\\n id: external_exports.string().min(1)\\n});\\nvar ExecuteRequestSchema = RequestBaseSchema.extend({\\n type: external_exports.literal(\\\"execute\\\"),\\n browser: external_exports.string().min(1).default(\\\"default\\\"),\\n script: external_exports.string(),\\n headless: external_exports.boolean().optional(),\\n ignoreHTTPSErrors: external_exports.boolean().optional(),\\n connect: external_exports.string().min(1).optional(),\\n timeoutMs: external_exports.number().int().positive().optional(),\\n initScripts: external_exports.array(external_exports.string()).optional(),\\n // Optional step label. When the target browser is a session context, the\\n // daemon wraps the run in tracing.group(step)/groupEnd and screenshots the\\n // active page to the session's screenshots/<step>.png after a successful run.\\n step: external_exports.string().min(1).max(200).optional()\\n});\\nvar BrowsersRequestSchema = RequestBaseSchema.extend({\\n type: external_exports.literal(\\\"browsers\\\")\\n});\\nvar BrowserStopRequestSchema = RequestBaseSchema.extend({\\n type: external_exports.literal(\\\"browser-stop\\\"),\\n browser: external_exports.string().min(1)\\n});\\nvar StatusRequestSchema = RequestBaseSchema.extend({\\n type: external_exports.literal(\\\"status\\\")\\n});\\nvar InstallRequestSchema = RequestBaseSchema.extend({\\n type: external_exports.literal(\\\"install\\\")\\n});\\nvar StopRequestSchema = RequestBaseSchema.extend({\\n type: external_exports.literal(\\\"stop\\\")\\n});\\nvar CaptureOptionsSchema = external_exports.object({\\n trace: external_exports.boolean().default(true),\\n video: external_exports.boolean().default(true),\\n har: external_exports.boolean().default(true),\\n console: external_exports.boolean().default(true)\\n});\\nvar SessionIdSchema = external_exports.string().min(1).max(128).regex(/^(?!.*\\\\.\\\\.)[A-Za-z0-9._-]+$/, \\\"invalid session id\\\");\\nvar SessionStartRequestSchema = RequestBaseSchema.extend({\\n type: external_exports.literal(\\\"session-start\\\"),\\n sessionId: SessionIdSchema,\\n name: external_exports.string().min(1).max(200).optional(),\\n headless: external_exports.boolean().optional(),\\n ignoreHTTPSErrors: external_exports.boolean().optional(),\\n capture: CaptureOptionsSchema.default({})\\n});\\nvar SessionEndRequestSchema = RequestBaseSchema.extend({\\n type: external_exports.literal(\\\"session-end\\\"),\\n sessionId: SessionIdSchema,\\n reason: external_exports.enum([\\\"end\\\", \\\"abort\\\"]).default(\\\"end\\\")\\n});\\nvar SessionStatusRequestSchema = RequestBaseSchema.extend({\\n type: external_exports.literal(\\\"session-status\\\"),\\n sessionId: SessionIdSchema\\n});\\nvar SessionListRequestSchema = RequestBaseSchema.extend({\\n type: external_exports.literal(\\\"session-list\\\")\\n});\\nvar RequestSchema = external_exports.discriminatedUnion(\\\"type\\\", [\\n ExecuteRequestSchema,\\n BrowsersRequestSchema,\\n BrowserStopRequestSchema,\\n StatusRequestSchema,\\n InstallRequestSchema,\\n StopRequestSchema,\\n SessionStartRequestSchema,\\n SessionEndRequestSchema,\\n SessionStatusRequestSchema,\\n SessionListRequestSchema\\n]);\\nvar ResponseBaseSchema = external_exports.object({\\n id: external_exports.string().min(1)\\n});\\nvar StdoutMessageSchema = ResponseBaseSchema.extend({\\n type: external_exports.literal(\\\"stdout\\\"),\\n data: external_exports.string()\\n});\\nvar StderrMessageSchema = ResponseBaseSchema.extend({\\n type: external_exports.literal(\\\"stderr\\\"),\\n data: external_exports.string()\\n});\\nvar CompleteMessageSchema = ResponseBaseSchema.extend({\\n type: external_exports.literal(\\\"complete\\\"),\\n success: external_exports.literal(true)\\n});\\nvar ErrorMessageSchema = ResponseBaseSchema.extend({\\n type: external_exports.literal(\\\"error\\\"),\\n message: external_exports.string()\\n});\\nvar ResultMessageSchema = ResponseBaseSchema.extend({\\n type: external_exports.literal(\\\"result\\\"),\\n data: external_exports.unknown()\\n});\\nvar ResponseSchema = external_exports.discriminatedUnion(\\\"type\\\", [\\n StdoutMessageSchema,\\n StderrMessageSchema,\\n CompleteMessageSchema,\\n ErrorMessageSchema,\\n ResultMessageSchema\\n]);\\nfunction slugHash(value) {\\n let hash = 5381;\\n for (let i = 0; i < value.length; i += 1) {\\n hash = (hash * 33 + value.charCodeAt(i)) % 2147483647;\\n }\\n return hash.toString(36);\\n}\\nfunction sessionStepSlug(step) {\\n const base = step.replace(/[^A-Za-z0-9._-]/g, \\\"-\\\").replace(/^-+|-+$/g, \\\"\\\").slice(0, 200) || \\\"step\\\";\\n return `${base}-${slugHash(step)}`;\\n}\\nvar SESSION_TRACE_FILE = \\\"trace.zip\\\";\\nvar SESSION_HAR_FILE = \\\"network.har\\\";\\nvar SESSION_CONSOLE_FILE = \\\"console.log\\\";\\nvar SESSION_VIDEO_DIR = \\\"video\\\";\\nvar SESSION_VIDEO_EXT = \\\".webm\\\";\\nvar SESSION_SCREENSHOTS_DIR = \\\"screenshots\\\";\\nvar SESSION_SCREENSHOT_EXT = \\\".png\\\";\\nvar DAEMON_RUNTIME_DEPENDENCIES = {\\n pino: \\\"^9.5.0\\\",\\n playwright: \\\"1.58.2\\\",\\n \\\"playwright-core\\\": \\\"1.58.2\\\",\\n \\\"quickjs-emscripten\\\": \\\"^0.32.0\\\"\\n};\\nvar EMBEDDED_PACKAGE_JSON = JSON.stringify(\\n {\\n name: \\\"canary-runtime\\\",\\n private: true,\\n type: \\\"module\\\",\\n dependencies: DAEMON_RUNTIME_DEPENDENCIES\\n },\\n null,\\n 2\\n);\\nfunction describeZodError(error) {\\n return error.issues.map((issue) => {\\n const path7 = issue.path.length > 0 ? issue.path.join(\\\".\\\") : \\\"request\\\";\\n return `${path7}: ${issue.message}`;\\n }).join(\\\"; \\\");\\n}\\nfunction extractId(value) {\\n if (!value || typeof value !== \\\"object\\\") {\\n return;\\n }\\n const maybeId = value.id;\\n return typeof maybeId === \\\"string\\\" && maybeId.length > 0 ? maybeId : void 0;\\n}\\nfunction parseRequest(line) {\\n let parsed;\\n try {\\n parsed = JSON.parse(line);\\n } catch (error) {\\n return {\\n success: false,\\n error: error instanceof Error ? error.message : \\\"Invalid JSON request\\\"\\n };\\n }\\n const result = RequestSchema.safeParse(parsed);\\n if (!result.success) {\\n const id = extractId(parsed);\\n return {\\n success: false,\\n error: describeZodError(result.error),\\n ...id === void 0 ? {} : { id }\\n };\\n }\\n return {\\n success: true,\\n request: result.data\\n };\\n}\\nfunction serialize(message) {\\n return `${JSON.stringify(ResponseSchema.parse(message))}\\n`;\\n}\\n\\n// src/browser-manager.ts\\nimport { createHash } from \\\"node:crypto\\\";\\nimport { mkdir, readFile } from \\\"node:fs/promises\\\";\\nimport os from \\\"node:os\\\";\\nimport path from \\\"node:path\\\";\\nimport {\\n chromium\\n} from \\\"playwright\\\";\\nvar DISCOVERY_PORTS = [9222, 9223, 9224, 9225, 9226, 9227, 9228, 9229];\\nvar PROBE_TIMEOUT_MS = 750;\\nvar MANUAL_CONNECT_TIMEOUT_MS = 5e3;\\nvar PAGE_TITLE_TIMEOUT_MS = 1500;\\nvar TARGET_ID_PATTERN = /^[a-f0-9]{16,}$/i;\\nfunction isIgnorableFileError(error) {\\n const code = error?.code;\\n return code === \\\"ENOENT\\\" || code === \\\"ENOTDIR\\\" || code === \\\"EACCES\\\";\\n}\\nfunction isHttpEndpoint(endpoint) {\\n return endpoint.startsWith(\\\"http://\\\") || endpoint.startsWith(\\\"https://\\\");\\n}\\nvar BrowserManager = class {\\n browsers = /* @__PURE__ */ new Map();\\n baseDir;\\n dependencies;\\n disconnectHandlers = /* @__PURE__ */ new Set();\\n constructor(baseDir = path.join(os.homedir(), \\\".canary\\\", \\\"browsers\\\"), dependencies = {}) {\\n this.baseDir = baseDir;\\n this.dependencies = {\\n connectOverCDP: chromium.connectOverCDP.bind(\\n chromium\\n ),\\n fetch: globalThis.fetch,\\n homedir: os.homedir,\\n launchPersistentContext: chromium.launchPersistentContext.bind(\\n chromium\\n ),\\n mkdir,\\n platform: process.platform,\\n readFile,\\n ...dependencies\\n };\\n }\\n // Register a callback fired when a managed browser disconnects (crash or\\n // external close). SessionManager uses this to reconcile a session whose\\n // capture context died out from under it.\\n onBrowserDisconnect(handler) {\\n this.disconnectHandlers.add(handler);\\n }\\n async ensureBrowser(name, options = {}) {\\n await this.ensureBaseDir();\\n const existing = this.browsers.get(name);\\n const requestedHeadless = options.headless ?? existing?.headless ?? false;\\n const requestedIgnoreHTTPSErrors = options.ignoreHTTPSErrors ?? existing?.ignoreHTTPSErrors ?? false;\\n if (existing) {\\n if (existing.isSession) {\\n return existing;\\n }\\n const needsRelaunch = existing.type !== \\\"launched\\\" || !existing.browser.isConnected() || options.headless !== void 0 && existing.headless !== requestedHeadless || options.ignoreHTTPSErrors !== void 0 && existing.ignoreHTTPSErrors !== requestedIgnoreHTTPSErrors;\\n if (!needsRelaunch) {\\n return existing;\\n }\\n await this.stopBrowser(name);\\n }\\n return this.launchBrowser(name, {\\n headless: requestedHeadless,\\n ignoreHTTPSErrors: requestedIgnoreHTTPSErrors\\n });\\n }\\n async autoConnect(name) {\\n await this.ensureBaseDir();\\n const existing = this.browsers.get(name);\\n if (existing?.type === \\\"connected\\\" && existing.browser.isConnected()) {\\n return existing;\\n }\\n if (existing) {\\n await this.stopBrowser(name);\\n }\\n const attemptedEndpoints = /* @__PURE__ */ new Set();\\n let lastError;\\n const tryEndpoint = async (endpoint) => {\\n if (!endpoint || attemptedEndpoints.has(endpoint)) {\\n return null;\\n }\\n attemptedEndpoints.add(endpoint);\\n try {\\n return await this.openConnectedBrowser(name, endpoint);\\n } catch (error) {\\n lastError = error;\\n return null;\\n }\\n };\\n const devToolsEndpoint = await this.readDevToolsActivePort();\\n const devToolsBrowser = await tryEndpoint(devToolsEndpoint);\\n if (devToolsBrowser) {\\n return devToolsBrowser;\\n }\\n for (const port of DISCOVERY_PORTS) {\\n const endpoint = await this.probePort(port);\\n const connectedBrowser = await tryEndpoint(endpoint);\\n if (connectedBrowser) {\\n return connectedBrowser;\\n }\\n }\\n throw new Error(this.buildAutoConnectError(lastError));\\n }\\n async connectBrowser(name, endpoint) {\\n if (endpoint === \\\"auto\\\") {\\n return this.autoConnect(name);\\n }\\n await this.ensureBaseDir();\\n const resolvedEndpoint = await this.resolveEndpoint(endpoint);\\n const existing = this.browsers.get(name);\\n if (existing) {\\n const isSameConnection = existing.type === \\\"connected\\\" && existing.endpoint === resolvedEndpoint && existing.browser.isConnected();\\n if (isSameConnection) {\\n return existing;\\n }\\n await this.stopBrowser(name);\\n }\\n return this.openConnectedBrowser(name, resolvedEndpoint);\\n }\\n getBrowser(name) {\\n const entry = this.browsers.get(name);\\n if (!entry?.browser.isConnected()) {\\n return;\\n }\\n return entry;\\n }\\n async getPage(browserName, pageNameOrId) {\\n const entry = this.getBrowserEntry(browserName);\\n const existingPage = entry.pages.get(pageNameOrId);\\n if (existingPage && !existingPage.isClosed()) {\\n return existingPage;\\n }\\n entry.pages.delete(pageNameOrId);\\n if (TARGET_ID_PATTERN.test(pageNameOrId)) {\\n const page2 = await this.findPageByTargetId(entry, pageNameOrId);\\n if (page2) {\\n return page2;\\n }\\n }\\n const page = await entry.context.newPage();\\n this.registerNamedPage(entry, pageNameOrId, page);\\n return page;\\n }\\n newPage(browserName) {\\n const entry = this.getBrowserEntry(browserName);\\n return entry.context.newPage();\\n }\\n // Scripts dedupe by content (SHA-256). Already-applied scripts are no-ops, so\\n // re-issuing the same set across consecutive `execute` requests is safe and\\n // does not re-register the script on the context. Hashing is byte-exact:\\n // editing a script file (even just whitespace) yields a new hash and a new\\n // addInitScript call. Stop the browser to clear all applied scripts.\\n async applyInitScripts(browserName, scripts) {\\n if (scripts.length === 0) {\\n return;\\n }\\n const entry = this.getBrowserEntry(browserName);\\n for (const script of scripts) {\\n const hash = createHash(\\\"sha256\\\").update(script).digest(\\\"hex\\\");\\n if (entry.appliedInitScripts.has(hash)) {\\n continue;\\n }\\n await entry.context.addInitScript({ content: script });\\n entry.appliedInitScripts.add(hash);\\n }\\n }\\n async listPages(browserName) {\\n const entry = this.browsers.get(browserName);\\n if (!entry?.browser.isConnected()) {\\n return [];\\n }\\n this.pruneClosedPages(entry);\\n const namesByPage = this.getNamedPagesByPage(entry);\\n const summaries = [];\\n for (const { context, page } of this.getContextPages(entry)) {\\n const id = await this.getPageTargetId(context, page);\\n if (!id) {\\n continue;\\n }\\n let title = \\\"\\\";\\n try {\\n title = await this.getPageTitle(page);\\n } catch (error) {\\n if (page.isClosed()) {\\n continue;\\n }\\n throw error;\\n }\\n summaries.push({\\n id,\\n url: page.url(),\\n title,\\n name: namesByPage.get(page) ?? null\\n });\\n }\\n return summaries;\\n }\\n async closePage(browserName, pageName) {\\n const entry = this.getBrowserEntry(browserName);\\n const page = entry.pages.get(pageName);\\n if (!page || page.isClosed()) {\\n entry.pages.delete(pageName);\\n throw new Error(`Page \\\"${browserName}/${pageName}\\\" not found`);\\n }\\n entry.pages.delete(pageName);\\n if (!page.isClosed()) {\\n await page.close();\\n }\\n }\\n listBrowsers() {\\n return Array.from(this.browsers.values()).filter((entry) => !entry.isSession).map((entry) => {\\n this.pruneClosedPages(entry);\\n const connected = entry.browser.isConnected();\\n let status;\\n if (entry.type === \\\"connected\\\") {\\n status = connected ? \\\"connected\\\" : \\\"disconnected\\\";\\n } else {\\n status = connected ? \\\"running\\\" : \\\"disconnected\\\";\\n }\\n return {\\n name: entry.name,\\n type: entry.type,\\n status,\\n pages: this.listNamedPages(entry)\\n };\\n }).sort((left, right) => left.name.localeCompare(right.name));\\n }\\n async stopBrowser(name) {\\n const entry = this.browsers.get(name);\\n if (!entry) {\\n return;\\n }\\n this.browsers.delete(name);\\n entry.pages.clear();\\n try {\\n if (entry.type === \\\"launched\\\") {\\n await this.closeLaunchedBrowser(entry);\\n } else {\\n await entry.browser.close();\\n }\\n } catch {\\n }\\n }\\n async stopAll() {\\n const names = Array.from(this.browsers.keys());\\n await Promise.allSettled(names.map(async (name) => this.stopBrowser(name)));\\n }\\n browserCount() {\\n let count = 0;\\n for (const entry of this.browsers.values()) {\\n if (!entry.isSession) {\\n count += 1;\\n }\\n }\\n return count;\\n }\\n async ensureBaseDir() {\\n await this.dependencies.mkdir(this.baseDir, { recursive: true });\\n }\\n getBrowserEntry(name) {\\n const entry = this.browsers.get(name);\\n if (!entry?.browser.isConnected()) {\\n throw new Error(`Browser \\\"${name}\\\" is not running`);\\n }\\n return entry;\\n }\\n // Launch a session-scoped capture context: a dedicated persistent context\\n // (isolated profile) configured at launch time with recordVideo / recordHar.\\n // The caller (SessionManager) then starts tracing and attaches listeners on\\n // the returned entry's context.\\n launchSessionBrowser(name, options) {\\n return this.launchBrowser(name, { ...options, isSession: true });\\n }\\n // Best-effort screenshot of the most-recently-active page in a browser, used\\n // to populate the report's per-step timeline. Silent if no page is open; the\\n // caller must never let a screenshot failure fail the underlying step.\\n async screenshotActivePage(browserName, outPath) {\\n const entry = this.browsers.get(browserName);\\n if (!entry?.browser.isConnected()) {\\n return;\\n }\\n const pages = this.getContextPages(entry);\\n const last = pages.at(-1);\\n if (!last) {\\n return;\\n }\\n await this.dependencies.mkdir(path.dirname(outPath), { recursive: true });\\n await last.page.screenshot({ path: outPath });\\n }\\n async launchBrowser(name, options) {\\n const profileDir = options.profileDirOverride ?? path.join(this.baseDir, name, \\\"chromium-profile\\\");\\n await this.dependencies.mkdir(profileDir, { recursive: true });\\n if (options.record?.videoDir) {\\n await this.dependencies.mkdir(options.record.videoDir, {\\n recursive: true\\n });\\n }\\n const context = await this.dependencies.launchPersistentContext(\\n profileDir,\\n {\\n headless: options.headless,\\n viewport: options.headless ? void 0 : null,\\n ignoreHTTPSErrors: options.ignoreHTTPSErrors,\\n handleSIGINT: false,\\n handleSIGTERM: false,\\n handleSIGHUP: false,\\n ...options.record?.videoDir ? { recordVideo: { dir: options.record.videoDir } } : {},\\n ...options.record?.har ? {\\n recordHar: {\\n path: options.record.har.path,\\n content: options.record.har.content\\n }\\n } : {}\\n }\\n );\\n const browser = context.browser();\\n if (!browser) {\\n await context.close();\\n throw new Error(\\n `Playwright did not expose a browser handle for \\\"${name}\\\"`\\n );\\n }\\n const entry = {\\n name,\\n type: \\\"launched\\\",\\n browser,\\n context,\\n pages: /* @__PURE__ */ new Map(),\\n profileDir,\\n headless: options.headless,\\n ignoreHTTPSErrors: options.ignoreHTTPSErrors,\\n isSession: options.isSession ?? false,\\n appliedInitScripts: /* @__PURE__ */ new Set()\\n };\\n this.attachBrowserLifecycle(entry);\\n this.browsers.set(name, entry);\\n return entry;\\n }\\n async openConnectedBrowser(name, endpoint) {\\n const browser = await this.dependencies.connectOverCDP(endpoint);\\n const contexts = browser.contexts();\\n for (const browserContext of contexts) {\\n browserContext.pages();\\n }\\n const context = contexts[0] ?? await browser.newContext();\\n const entry = {\\n name,\\n type: \\\"connected\\\",\\n browser,\\n context,\\n pages: /* @__PURE__ */ new Map(),\\n endpoint,\\n headless: false,\\n ignoreHTTPSErrors: false,\\n isSession: false,\\n appliedInitScripts: /* @__PURE__ */ new Set()\\n };\\n this.attachBrowserLifecycle(entry);\\n this.browsers.set(name, entry);\\n return entry;\\n }\\n attachBrowserLifecycle(entry) {\\n entry.browser.on(\\\"disconnected\\\", () => {\\n const current = this.browsers.get(entry.name);\\n if (current !== entry) {\\n return;\\n }\\n entry.pages.clear();\\n if (entry.type === \\\"launched\\\") {\\n this.browsers.delete(entry.name);\\n }\\n for (const handler of this.disconnectHandlers) {\\n try {\\n handler(entry.name);\\n } catch {\\n }\\n }\\n });\\n }\\n async closeLaunchedBrowser(entry) {\\n const contexts = this.getBrowserContexts(entry);\\n await Promise.allSettled(contexts.map(async (context) => context.close()));\\n if (entry.browser.isConnected()) {\\n await entry.browser.close().catch(() => void 0);\\n }\\n }\\n async discoverChrome() {\\n const devToolsEndpoint = await this.readDevToolsActivePort();\\n if (devToolsEndpoint) {\\n return devToolsEndpoint;\\n }\\n for (const port of DISCOVERY_PORTS) {\\n const endpoint = await this.probePort(port);\\n if (endpoint) {\\n return endpoint;\\n }\\n }\\n return null;\\n }\\n async readDevToolsActivePort(expectedPort) {\\n for (const candidate of this.getDevToolsActivePortCandidates()) {\\n let contents;\\n try {\\n contents = await this.dependencies.readFile(candidate, \\\"utf8\\\");\\n } catch (error) {\\n if (isIgnorableFileError(error)) {\\n continue;\\n }\\n throw error;\\n }\\n const endpoint = this.parseDevToolsActivePort(contents, expectedPort);\\n if (endpoint) {\\n return endpoint;\\n }\\n }\\n return null;\\n }\\n async probePort(port) {\\n const endpoint = `http://127.0.0.1:${port}`;\\n const result = await this.fetchDebuggerWebSocketUrl(\\n endpoint,\\n PROBE_TIMEOUT_MS\\n );\\n if (result.status === \\\"ok\\\") {\\n return result.webSocketDebuggerUrl;\\n }\\n if (result.status === \\\"not-found\\\") {\\n return this.readDevToolsActivePort(port);\\n }\\n return null;\\n }\\n getDevToolsActivePortCandidates() {\\n const homeDir = this.dependencies.homedir();\\n switch (this.dependencies.platform) {\\n case \\\"darwin\\\":\\n return [\\n path.join(\\n homeDir,\\n \\\"Library\\\",\\n \\\"Application Support\\\",\\n \\\"Google\\\",\\n \\\"Chrome\\\",\\n \\\"DevToolsActivePort\\\"\\n ),\\n path.join(\\n homeDir,\\n \\\"Library\\\",\\n \\\"Application Support\\\",\\n \\\"Google\\\",\\n \\\"Chrome Canary\\\",\\n \\\"DevToolsActivePort\\\"\\n ),\\n path.join(\\n homeDir,\\n \\\"Library\\\",\\n \\\"Application Support\\\",\\n \\\"Chromium\\\",\\n \\\"DevToolsActivePort\\\"\\n ),\\n path.join(\\n homeDir,\\n \\\"Library\\\",\\n \\\"Application Support\\\",\\n \\\"BraveSoftware\\\",\\n \\\"Brave-Browser\\\",\\n \\\"DevToolsActivePort\\\"\\n )\\n ];\\n case \\\"linux\\\":\\n return [\\n path.join(homeDir, \\\".config\\\", \\\"google-chrome\\\", \\\"DevToolsActivePort\\\"),\\n path.join(homeDir, \\\".config\\\", \\\"chromium\\\", \\\"DevToolsActivePort\\\"),\\n path.join(\\n homeDir,\\n \\\".config\\\",\\n \\\"google-chrome-beta\\\",\\n \\\"DevToolsActivePort\\\"\\n ),\\n path.join(\\n homeDir,\\n \\\".config\\\",\\n \\\"google-chrome-unstable\\\",\\n \\\"DevToolsActivePort\\\"\\n ),\\n path.join(\\n homeDir,\\n \\\".config\\\",\\n \\\"BraveSoftware\\\",\\n \\\"Brave-Browser\\\",\\n \\\"DevToolsActivePort\\\"\\n )\\n ];\\n case \\\"win32\\\":\\n return [\\n path.join(\\n homeDir,\\n \\\"AppData\\\",\\n \\\"Local\\\",\\n \\\"Google\\\",\\n \\\"Chrome\\\",\\n \\\"User Data\\\",\\n \\\"DevToolsActivePort\\\"\\n ),\\n path.join(\\n homeDir,\\n \\\"AppData\\\",\\n \\\"Local\\\",\\n \\\"Google\\\",\\n \\\"Chrome Beta\\\",\\n \\\"User Data\\\",\\n \\\"DevToolsActivePort\\\"\\n ),\\n path.join(\\n homeDir,\\n \\\"AppData\\\",\\n \\\"Local\\\",\\n \\\"Google\\\",\\n \\\"Chrome SxS\\\",\\n \\\"User Data\\\",\\n \\\"DevToolsActivePort\\\"\\n ),\\n path.join(\\n homeDir,\\n \\\"AppData\\\",\\n \\\"Local\\\",\\n \\\"Chromium\\\",\\n \\\"User Data\\\",\\n \\\"DevToolsActivePort\\\"\\n ),\\n path.join(\\n homeDir,\\n \\\"AppData\\\",\\n \\\"Local\\\",\\n \\\"BraveSoftware\\\",\\n \\\"Brave-Browser\\\",\\n \\\"User Data\\\",\\n \\\"DevToolsActivePort\\\"\\n )\\n ];\\n default:\\n return [];\\n }\\n }\\n async resolveEndpoint(endpoint) {\\n if (endpoint === \\\"auto\\\") {\\n const discoveredEndpoint = await this.discoverChrome();\\n if (discoveredEndpoint) {\\n return discoveredEndpoint;\\n }\\n throw new Error(this.buildAutoConnectError());\\n }\\n if (isHttpEndpoint(endpoint)) {\\n const discoveredEndpoint = await this.resolveHttpEndpoint(\\n endpoint,\\n MANUAL_CONNECT_TIMEOUT_MS\\n );\\n if (!discoveredEndpoint) {\\n throw new Error(this.buildManualConnectError(endpoint));\\n }\\n return discoveredEndpoint;\\n }\\n return endpoint;\\n }\\n async fetchDebuggerWebSocketUrl(endpoint, timeoutMs) {\\n let response;\\n try {\\n response = await this.dependencies.fetch(\\n this.toJsonVersionUrl(endpoint),\\n {\\n headers: {\\n accept: \\\"application/json\\\"\\n },\\n signal: AbortSignal.timeout(timeoutMs)\\n }\\n );\\n } catch {\\n return { status: \\\"unavailable\\\" };\\n }\\n if (response.status === 404) {\\n return { status: \\\"not-found\\\" };\\n }\\n if (!response.ok) {\\n return { status: \\\"unavailable\\\" };\\n }\\n let payload;\\n try {\\n payload = await response.json();\\n } catch {\\n return { status: \\\"unavailable\\\" };\\n }\\n const webSocketDebuggerUrl = typeof payload === \\\"object\\\" && payload !== null ? payload.webSocketDebuggerUrl : void 0;\\n return typeof webSocketDebuggerUrl === \\\"string\\\" && webSocketDebuggerUrl.length > 0 ? {\\n status: \\\"ok\\\",\\n webSocketDebuggerUrl\\n } : { status: \\\"unavailable\\\" };\\n }\\n toJsonVersionUrl(endpoint) {\\n const url = new URL(endpoint);\\n if (url.pathname !== \\\"/json/version\\\") {\\n url.pathname = \\\"/json/version\\\";\\n url.search = \\\"\\\";\\n url.hash = \\\"\\\";\\n }\\n return url;\\n }\\n buildAutoConnectError(lastError) {\\n let launchCommand = \\\"google-chrome --remote-debugging-port=9222\\\";\\n if (this.dependencies.platform === \\\"darwin\\\") {\\n launchCommand = \\\"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome --remote-debugging-port=9222\\\";\\n } else if (this.dependencies.platform === \\\"win32\\\") {\\n launchCommand = \\\"chrome.exe --remote-debugging-port=9222\\\";\\n }\\n const details = [\\n \\\"Could not auto-discover a running Chrome instance with remote debugging enabled.\\\",\\n \\\"Enable Chrome remote debugging at chrome://inspect/#remote-debugging\\\",\\n `or launch Chrome with: ${launchCommand}`\\n ];\\n let lastErrorMessage = null;\\n if (lastError instanceof Error) {\\n lastErrorMessage = lastError.message;\\n } else if (typeof lastError === \\\"string\\\" && lastError.length > 0) {\\n lastErrorMessage = lastError;\\n }\\n if (lastErrorMessage) {\\n details.push(`Last connection error: ${lastErrorMessage}`);\\n }\\n return details.join(\\\"\\\\n\\\");\\n }\\n async resolveHttpEndpoint(endpoint, timeoutMs) {\\n const result = await this.fetchDebuggerWebSocketUrl(endpoint, timeoutMs);\\n if (result.status === \\\"ok\\\") {\\n return result.webSocketDebuggerUrl;\\n }\\n if (result.status === \\\"not-found\\\") {\\n const port = this.getEndpointPort(endpoint);\\n if (port !== null) {\\n return this.readDevToolsActivePort(port);\\n }\\n }\\n return null;\\n }\\n parseDevToolsActivePort(contents, expectedPort) {\\n const lines = contents.split(/\\\\r?\\\\n/).map((line) => line.trim()).filter((line) => line.length > 0);\\n const port = Number.parseInt(lines[0] ?? \\\"\\\", 10);\\n const webSocketPath = lines[1] ?? \\\"\\\";\\n if (!Number.isInteger(port) || port < 1 || port > 65535) {\\n return null;\\n }\\n if (expectedPort !== void 0 && port !== expectedPort) {\\n return null;\\n }\\n if (!webSocketPath.startsWith(\\\"/devtools/browser/\\\")) {\\n return null;\\n }\\n return `ws://127.0.0.1:${port}${webSocketPath}`;\\n }\\n getEndpointPort(endpoint) {\\n let url;\\n try {\\n url = new URL(endpoint);\\n } catch {\\n return null;\\n }\\n let defaultPort = \\\"\\\";\\n if (url.protocol === \\\"https:\\\") {\\n defaultPort = \\\"443\\\";\\n } else if (url.protocol === \\\"http:\\\") {\\n defaultPort = \\\"80\\\";\\n }\\n const rawPort = url.port || defaultPort;\\n const port = Number.parseInt(rawPort, 10);\\n return Number.isInteger(port) && port > 0 && port <= 65535 ? port : null;\\n }\\n buildManualConnectError(endpoint) {\\n return [\\n `Could not resolve a CDP WebSocket endpoint from ${endpoint}.`,\\n \\\"If Chrome is using built-in remote debugging, run `canary-browser --connect` without a URL so DevToolsActivePort can be auto-discovered.\\\",\\n \\\"Or connect with the exact ws://127.0.0.1:<port>/devtools/browser/... URL from DevToolsActivePort, or launch Chrome with --remote-debugging-port=9222.\\\"\\n ].join(\\\"\\\\n\\\");\\n }\\n registerNamedPage(entry, pageName, page) {\\n entry.pages.set(pageName, page);\\n page.on(\\\"close\\\", () => {\\n const current = entry.pages.get(pageName);\\n if (current === page) {\\n entry.pages.delete(pageName);\\n }\\n });\\n }\\n pruneClosedPages(entry) {\\n for (const [pageName, page] of entry.pages.entries()) {\\n if (page.isClosed()) {\\n entry.pages.delete(pageName);\\n }\\n }\\n }\\n listNamedPages(entry) {\\n this.pruneClosedPages(entry);\\n return Array.from(entry.pages.entries()).filter(([, page]) => !page.isClosed()).map(([name]) => name).sort((left, right) => left.localeCompare(right));\\n }\\n getNamedPagesByPage(entry) {\\n const namesByPage = /* @__PURE__ */ new Map();\\n for (const [name, page] of entry.pages.entries()) {\\n if (!(page.isClosed() || namesByPage.has(page))) {\\n namesByPage.set(page, name);\\n }\\n }\\n return namesByPage;\\n }\\n getBrowserContexts(entry) {\\n return [.../* @__PURE__ */ new Set([entry.context, ...entry.browser.contexts()])];\\n }\\n getContextPages(entry) {\\n const pages = [];\\n for (const context of this.getBrowserContexts(entry)) {\\n for (const page of context.pages()) {\\n if (!page.isClosed()) {\\n pages.push({ context, page });\\n }\\n }\\n }\\n return pages;\\n }\\n async getPageTitle(page) {\\n let timeoutId;\\n try {\\n return await Promise.race([\\n page.title(),\\n new Promise((resolve) => {\\n timeoutId = setTimeout(() => resolve(\\\"\\\"), PAGE_TITLE_TIMEOUT_MS);\\n })\\n ]);\\n } finally {\\n if (timeoutId !== void 0) {\\n clearTimeout(timeoutId);\\n }\\n }\\n }\\n async findPageByTargetId(entry, targetId) {\\n for (const { context, page } of this.getContextPages(entry)) {\\n const pageTargetId = await this.getPageTargetId(context, page);\\n if (pageTargetId === targetId) {\\n return page;\\n }\\n }\\n return null;\\n }\\n async getPageTargetId(context, page) {\\n let session;\\n try {\\n session = await context.newCDPSession(page);\\n const result = await session.send(\\\"Target.getTargetInfo\\\");\\n const targetId = typeof result === \\\"object\\\" && result !== null && \\\"targetInfo\\\" in result && typeof result.targetInfo === \\\"object\\\" && result.targetInfo !== null && \\\"targetId\\\" in result.targetInfo ? result.targetInfo.targetId : void 0;\\n if (typeof targetId !== \\\"string\\\" || targetId.length === 0) {\\n throw new Error(\\\"CDP target info did not include a targetId\\\");\\n }\\n return targetId;\\n } catch (error) {\\n if (page.isClosed()) {\\n return null;\\n }\\n throw error;\\n } finally {\\n await session?.detach().catch(() => void 0);\\n }\\n }\\n};\\n\\n// src/local-endpoint.ts\\nimport os2 from \\\"node:os\\\";\\nimport path2 from \\\"node:path\\\";\\nfunction sanitizePipeSegment(value) {\\n const sanitized = value.replace(/[^A-Za-z0-9._-]/g, \\\"-\\\").replace(/^-+|-+$/g, \\\"\\\").toLowerCase();\\n return sanitized.length > 0 ? sanitized : \\\"user\\\";\\n}\\nfunction getDefaultUsername(homedir) {\\n const fromEnv = process.env.USERNAME || process.env.USER;\\n if (typeof fromEnv === \\\"string\\\" && fromEnv.trim().length > 0) {\\n return fromEnv;\\n }\\n try {\\n const username = os2.userInfo().username;\\n if (username.trim().length > 0) {\\n return username;\\n }\\n } catch {\\n }\\n return path2.basename(homedir) || \\\"user\\\";\\n}\\nfunction getCanaryBaseDir(homedir = os2.homedir()) {\\n return path2.join(homedir, \\\".canary\\\");\\n}\\nfunction getDaemonEndpoint(options = {}) {\\n const homedir = options.homedir ?? os2.homedir();\\n const platform = options.platform ?? process.platform;\\n if (platform === \\\"win32\\\") {\\n const username = sanitizePipeSegment(\\n options.username ?? getDefaultUsername(homedir)\\n );\\n return `\\\\\\\\\\\\\\\\.\\\\\\\\pipe\\\\\\\\canary-daemon-${username}`;\\n }\\n return path2.join(getCanaryBaseDir(homedir), \\\"daemon.sock\\\");\\n}\\nfunction getPidPath(homedir = os2.homedir()) {\\n return path2.join(getCanaryBaseDir(homedir), \\\"daemon.pid\\\");\\n}\\nfunction getBrowsersDir(homedir = os2.homedir()) {\\n return path2.join(getCanaryBaseDir(homedir), \\\"browsers\\\");\\n}\\nfunction getSessionsDir(homedir = os2.homedir()) {\\n return path2.join(getCanaryBaseDir(homedir), \\\"sessions\\\");\\n}\\nfunction getSessionDir(sessionId, homedir = os2.homedir()) {\\n return path2.join(getSessionsDir(homedir), sessionId);\\n}\\nfunction requiresDaemonEndpointCleanup(platform = process.platform) {\\n return platform !== \\\"win32\\\";\\n}\\n\\n// src/lock.ts\\nfunction createKeyedLock() {\\n const locks = /* @__PURE__ */ new Map();\\n return async function withLock(key, action) {\\n const previous = locks.get(key) ?? Promise.resolve();\\n let release;\\n const current = new Promise((resolve) => {\\n release = resolve;\\n });\\n const tail = previous.catch(() => void 0).then(() => current);\\n locks.set(key, tail);\\n await previous.catch(() => void 0);\\n try {\\n return await action();\\n } finally {\\n release();\\n if (locks.get(key) === tail) {\\n locks.delete(key);\\n }\\n }\\n };\\n}\\nfunction createMutex() {\\n const withLock = createKeyedLock();\\n const lockKey = /* @__PURE__ */ Symbol(\\\"mutex\\\");\\n return function withMutex(action) {\\n return withLock(lockKey, action);\\n };\\n}\\n\\n// src/sandbox/quickjs-sandbox.ts\\nimport { readFile as readFile2 } from \\\"node:fs/promises\\\";\\nimport util2 from \\\"node:util\\\";\\n\\n// src/temp-files.ts\\nimport { constants } from \\\"node:fs\\\";\\nimport { lstat, mkdir as mkdir2, open } from \\\"node:fs/promises\\\";\\nimport path3 from \\\"node:path\\\";\\nvar SAFE_PATH_SEGMENT_PATTERN = /[^A-Za-z0-9._-]/g;\\nvar NOFOLLOW_FLAG = constants.O_NOFOLLOW ?? 0;\\nvar CANARY_BASE_DIR = getCanaryBaseDir();\\nvar CANARY_TMP_DIR = path3.join(CANARY_BASE_DIR, \\\"tmp\\\");\\nfunction requireNonEmptyString(value, label) {\\n if (typeof value !== \\\"string\\\" || value.length === 0) {\\n throw new TypeError(`${label} must be a non-empty string`);\\n }\\n return value;\\n}\\nfunction isWithinDirectory(rootDir, candidatePath) {\\n if (candidatePath === rootDir) {\\n return true;\\n }\\n const rootWithSeparator = rootDir.endsWith(path3.sep) ? rootDir : `${rootDir}${path3.sep}`;\\n return candidatePath.startsWith(rootWithSeparator);\\n}\\nfunction sanitizePathSegment(segment) {\\n if (segment.length === 0) {\\n throw new Error(\\\"File paths must not contain empty path segments\\\");\\n }\\n if (segment === \\\".\\\" || segment === \\\"..\\\" || segment.includes(\\\"..\\\")) {\\n throw new Error(\\\"File paths must not contain '.' or '..' segments\\\");\\n }\\n const sanitized = segment.replace(SAFE_PATH_SEGMENT_PATTERN, \\\"_\\\");\\n if (sanitized.length === 0 || sanitized === \\\".\\\" || sanitized === \\\"..\\\") {\\n throw new Error(\\\"File paths must resolve to a valid filename\\\");\\n }\\n return sanitized;\\n}\\nfunction sanitizeRelativePath(fileName) {\\n const rawPath = requireNonEmptyString(fileName, \\\"File name\\\");\\n if (rawPath.includes(\\\"\\\\0\\\")) {\\n throw new Error(\\\"File names must not contain null bytes\\\");\\n }\\n if (path3.posix.isAbsolute(rawPath) || path3.win32.isAbsolute(rawPath)) {\\n throw new Error(\\\"Absolute paths are not allowed\\\");\\n }\\n const normalized = rawPath.replace(/\\\\\\\\/g, \\\"/\\\");\\n if (normalized.startsWith(\\\"/\\\")) {\\n throw new Error(\\\"Absolute paths are not allowed\\\");\\n }\\n return normalized.split(\\\"/\\\").map(sanitizePathSegment);\\n}\\nasync function assertControlledDirectory(directoryPath, label) {\\n const stats = await lstat(directoryPath);\\n if (stats.isSymbolicLink()) {\\n throw new Error(`${label} must not be a symlink`);\\n }\\n if (!stats.isDirectory()) {\\n throw new Error(`${label} must be a directory`);\\n }\\n}\\nasync function assertSafeParentDirectories(rootDir, destinationPath, createParents) {\\n const relativeParent = path3.relative(rootDir, path3.dirname(destinationPath));\\n if (relativeParent.length === 0) {\\n return;\\n }\\n const segments = relativeParent.split(path3.sep).filter((segment) => segment.length > 0);\\n let currentPath = rootDir;\\n for (const segment of segments) {\\n currentPath = path3.join(currentPath, segment);\\n if (createParents) {\\n await mkdir2(currentPath, {\\n recursive: true\\n });\\n }\\n try {\\n const stats = await lstat(currentPath);\\n if (stats.isSymbolicLink()) {\\n throw new Error(\\n `Temp path parent must not be a symlink: ${currentPath}`\\n );\\n }\\n if (!stats.isDirectory()) {\\n throw new Error(`Temp path parent must be a directory: ${currentPath}`);\\n }\\n } catch (error) {\\n if (error.code === \\\"ENOENT\\\" && !createParents) {\\n return;\\n }\\n throw error;\\n }\\n }\\n}\\nfunction normalizeSymlinkError(error, destinationPath) {\\n if (error.code === \\\"ELOOP\\\") {\\n return new Error(\\n `Refusing to follow symlinked temp file: ${destinationPath}`\\n );\\n }\\n return error instanceof Error ? error : new Error(String(error));\\n}\\nasync function assertDestinationIsNotSymlink(destinationPath) {\\n try {\\n const stats = await lstat(destinationPath);\\n if (stats.isSymbolicLink()) {\\n throw new Error(\\n `Refusing to follow symlinked temp file: ${destinationPath}`\\n );\\n }\\n } catch (error) {\\n if (error.code === \\\"ENOENT\\\") {\\n return;\\n }\\n throw error;\\n }\\n}\\nasync function ensureCanaryTempDir() {\\n await mkdir2(CANARY_BASE_DIR, {\\n recursive: true\\n });\\n await assertControlledDirectory(\\n CANARY_BASE_DIR,\\n \\\"Dev Browser base directory\\\"\\n );\\n await mkdir2(CANARY_TMP_DIR, {\\n recursive: true\\n });\\n await assertControlledDirectory(CANARY_TMP_DIR, \\\"Dev Browser temp directory\\\");\\n return path3.resolve(CANARY_TMP_DIR);\\n}\\nasync function resolveCanaryTempPath(fileName, options = {}) {\\n const rootDir = await ensureCanaryTempDir();\\n const segments = sanitizeRelativePath(fileName);\\n const destinationPath = path3.resolve(rootDir, ...segments);\\n if (!isWithinDirectory(rootDir, destinationPath)) {\\n throw new Error(\\n \\\"Resolved temp file path escapes the controlled temp directory\\\"\\n );\\n }\\n await assertSafeParentDirectories(\\n rootDir,\\n destinationPath,\\n options.createParents ?? false\\n );\\n return destinationPath;\\n}\\nasync function writeCanaryTempFile(fileName, data) {\\n const destinationPath = await resolveCanaryTempPath(fileName, {\\n createParents: true\\n });\\n await assertDestinationIsNotSymlink(destinationPath);\\n let handle;\\n try {\\n handle = await open(\\n destinationPath,\\n constants.O_WRONLY | constants.O_CREAT | constants.O_TRUNC | NOFOLLOW_FLAG,\\n 384\\n );\\n await handle.writeFile(data);\\n } catch (error) {\\n throw normalizeSymlinkError(error, destinationPath);\\n } finally {\\n await handle?.close();\\n }\\n return destinationPath;\\n}\\nasync function readCanaryTempFile(fileName) {\\n const destinationPath = await resolveCanaryTempPath(fileName);\\n await assertDestinationIsNotSymlink(destinationPath);\\n let handle;\\n try {\\n handle = await open(destinationPath, constants.O_RDONLY | NOFOLLOW_FLAG);\\n return await handle.readFile({\\n encoding: \\\"utf8\\\"\\n });\\n } catch (error) {\\n throw normalizeSymlinkError(error, destinationPath);\\n } finally {\\n await handle?.close();\\n }\\n}\\n\\n// src/sandbox/playwright-internals.ts\\nimport { existsSync } from \\\"node:fs\\\";\\nimport { createRequire } from \\\"node:module\\\";\\nimport path4 from \\\"node:path\\\";\\nimport { fileURLToPath } from \\\"node:url\\\";\\nvar require2 = createRequire(import.meta.url);\\nvar currentDir = path4.dirname(fileURLToPath(import.meta.url));\\nfunction resolvePlaywrightInternal(modulePath) {\\n const candidates = [\\n path4.resolve(currentDir, \\\"../../node_modules/playwright-core\\\", modulePath),\\n path4.resolve(currentDir, \\\"node_modules/playwright-core\\\", modulePath),\\n path4.resolve(process.cwd(), \\\"node_modules/playwright-core\\\", modulePath)\\n ];\\n for (const candidate of candidates) {\\n if (existsSync(candidate)) {\\n return candidate;\\n }\\n }\\n throw new Error(`Could not locate Playwright internals at ${modulePath}`);\\n}\\nvar serverInternals = require2(\\n resolvePlaywrightInternal(path4.join(\\\"lib\\\", \\\"server\\\", \\\"index.js\\\"))\\n);\\nvar clientInternals = require2(\\n resolvePlaywrightInternal(path4.join(\\\"lib\\\", \\\"client\\\", \\\"connection.js\\\"))\\n);\\nvar nodePlatformInternals = require2(\\n resolvePlaywrightInternal(\\n path4.join(\\\"lib\\\", \\\"server\\\", \\\"utils\\\", \\\"nodePlatform.js\\\")\\n )\\n);\\nvar {\\n createPlaywright,\\n DispatcherConnection,\\n RootDispatcher,\\n PlaywrightDispatcher\\n} = serverInternals;\\nvar { Connection } = clientInternals;\\nvar { nodePlatform } = nodePlatformInternals;\\n\\n// src/sandbox/host-bridge.ts\\nvar WITHHELD_EVENTS = /* @__PURE__ */ new Set([\\\"video\\\"]);\\nvar HostBridge = class {\\n dispatcherConnection;\\n rootDispatcher;\\n playwright;\\n sendToSandbox;\\n options;\\n playwrightDispatcher;\\n disposed = false;\\n constructor(options) {\\n this.sendToSandbox = options.sendToSandbox;\\n this.options = {\\n preLaunchedBrowser: options.preLaunchedBrowser,\\n sharedBrowser: options.sharedBrowser,\\n denyLaunch: options.denyLaunch,\\n sdkLanguage: options.sdkLanguage ?? \\\"javascript\\\"\\n };\\n this.playwright = createPlaywright({\\n sdkLanguage: this.options.sdkLanguage ?? \\\"javascript\\\"\\n });\\n this.dispatcherConnection = new DispatcherConnection(false);\\n this.dispatcherConnection.onmessage = (message) => {\\n if (this.shouldWithhold(message)) {\\n return;\\n }\\n this.sendToSandbox(JSON.stringify(message));\\n };\\n this.rootDispatcher = new RootDispatcher(\\n this.dispatcherConnection,\\n async (rootScope) => {\\n this.playwrightDispatcher = new PlaywrightDispatcher(\\n rootScope,\\n this.playwright,\\n {\\n preLaunchedBrowser: this.options.preLaunchedBrowser,\\n sharedBrowser: this.options.sharedBrowser,\\n denyLaunch: this.options.denyLaunch\\n }\\n );\\n return this.playwrightDispatcher;\\n }\\n );\\n }\\n // True when a host\u2192sandbox protocol message must be withheld because the\\n // vendored sandbox client has no validator for it. Only the `video` event\\n // qualifies; the daemon still records video on its own real context.\\n shouldWithhold(message) {\\n return message.method ? WITHHELD_EVENTS.has(message.method) : false;\\n }\\n async receiveFromSandbox(json) {\\n await this.dispatcherConnection.dispatch(\\n JSON.parse(json)\\n );\\n }\\n async dispose() {\\n if (this.disposed) {\\n return;\\n }\\n this.disposed = true;\\n this.dispatcherConnection.onmessage = () => {\\n };\\n try {\\n await this.playwrightDispatcher?.cleanup();\\n } finally {\\n this.rootDispatcher._dispose();\\n }\\n }\\n};\\n\\n// src/sandbox/quickjs-host.ts\\nimport {\\n getQuickJS\\n} from \\\"quickjs-emscripten\\\";\\nvar QuickJSHost = class _QuickJSHost {\\n static async create(options = {}) {\\n const quickjs = await getQuickJS();\\n return new _QuickJSHost(quickjs, options);\\n }\\n #runtime;\\n #context;\\n #options;\\n #timers = /* @__PURE__ */ new Map();\\n #pendingDeferreds = /* @__PURE__ */ new Set();\\n #disposed = false;\\n #interruptDeadline;\\n #nextTimerId = 1;\\n constructor(quickjs, options) {\\n this.#options = options;\\n this.#runtime = quickjs.newRuntime();\\n if (options.memoryLimitBytes !== void 0) {\\n this.#runtime.setMemoryLimit(options.memoryLimitBytes);\\n }\\n if (options.maxStackSizeBytes !== void 0) {\\n this.#runtime.setMaxStackSize(options.maxStackSizeBytes);\\n }\\n if (options.cpuTimeoutMs !== void 0) {\\n this.#runtime.setInterruptHandler(\\n () => this.#interruptDeadline !== void 0 && Date.now() > this.#interruptDeadline\\n );\\n }\\n this.#context = this.#runtime.newContext();\\n this.#installConsole();\\n this.#installTimers();\\n this.#installHostCall();\\n this.#installTransportSend();\\n for (const [name, value] of Object.entries(options.globals ?? {})) {\\n this.setGlobal(name, value);\\n }\\n }\\n get disposed() {\\n return this.#disposed;\\n }\\n setGlobal(name, value) {\\n this.#assertAlive();\\n const valueHandle = this.#toHandle(value);\\n try {\\n this.#context.setProp(this.#context.global, name, valueHandle);\\n } finally {\\n valueHandle.dispose();\\n }\\n }\\n executeScriptSync(code, options = {}) {\\n const resultHandle = this.#evalCode(code, options);\\n try {\\n const promiseState = this.#context.getPromiseState(resultHandle);\\n if (!(promiseState.type === \\\"fulfilled\\\" && promiseState.notAPromise)) {\\n throw new Error(\\n \\\"QuickJS script returned a promise; use executeScript() instead\\\"\\n );\\n }\\n return this.#dumpHandle(resultHandle);\\n } finally {\\n resultHandle.dispose();\\n }\\n }\\n async executeScript(code, options = {}) {\\n const resultHandle = this.#evalCode(code, options);\\n return this.#consumeHandle(resultHandle);\\n }\\n async callFunction(name, ...args) {\\n this.#assertAlive();\\n const functionHandle = this.#context.getProp(this.#context.global, name);\\n const argHandles = args.map((value) => this.#toHandle(value));\\n try {\\n if (this.#context.typeof(functionHandle) !== \\\"function\\\") {\\n throw new Error(`QuickJS global \\\"${name}\\\" is not a function`);\\n }\\n const result = this.#runWithCpuLimit(\\n () => this.#context.callFunction(\\n functionHandle,\\n this.#context.global,\\n ...argHandles\\n )\\n );\\n const resultHandle = this.#unwrapResult(\\n result,\\n `QuickJS function \\\"${name}\\\" failed`\\n );\\n return await this.#consumeHandle(resultHandle);\\n } finally {\\n for (const argHandle of argHandles) {\\n argHandle.dispose();\\n }\\n functionHandle.dispose();\\n }\\n }\\n dispose() {\\n if (this.#disposed) {\\n return;\\n }\\n this.#disposed = true;\\n for (const timerId of [...this.#timers.keys()]) {\\n this.#clearTimer(timerId);\\n }\\n for (const deferred of [...this.#pendingDeferreds]) {\\n deferred.dispose();\\n this.#pendingDeferreds.delete(deferred);\\n }\\n this.#context.dispose();\\n this.#runtime.dispose();\\n }\\n #installConsole() {\\n const consoleObject = this.#context.newObject();\\n try {\\n for (const level of [\\\"log\\\", \\\"warn\\\", \\\"error\\\", \\\"info\\\"]) {\\n const fn = this.#context.newFunction(level, (...args) => {\\n const nativeArgs = args.map((arg) => this.#context.dump(arg));\\n this.#options.onConsole?.(level, nativeArgs);\\n });\\n this.#context.setProp(consoleObject, level, fn);\\n fn.dispose();\\n }\\n this.#context.setProp(this.#context.global, \\\"console\\\", consoleObject);\\n } finally {\\n consoleObject.dispose();\\n }\\n }\\n #installHostCall() {\\n const hostCall = this.#context.newFunction(\\n \\\"__hostCall\\\",\\n (nameHandle, argsJsonHandle) => {\\n const name = this.#context.getString(nameHandle);\\n const argsJson = this.#context.getString(argsJsonHandle);\\n const args = this.#parseArgs(name, argsJson);\\n const invoke = () => {\\n if (this.#options.onHostCall) {\\n return this.#options.onHostCall(name, args);\\n }\\n const handler = this.#options.hostFunctions?.[name];\\n if (!handler) {\\n throw new Error(`No host function registered for \\\"${name}\\\"`);\\n }\\n return handler(...args);\\n };\\n return this.#bridgeHostResult(invoke);\\n }\\n );\\n this.#context.setProp(this.#context.global, \\\"__hostCall\\\", hostCall);\\n hostCall.dispose();\\n }\\n #installTransportSend() {\\n const transportSend = this.#context.newFunction(\\n \\\"__transport_send\\\",\\n (messageHandle) => {\\n const message = this.#context.getString(messageHandle);\\n return this.#bridgeHostResult(\\n () => this.#options.onTransportSend?.(message)\\n );\\n }\\n );\\n this.#context.setProp(\\n this.#context.global,\\n \\\"__transport_send\\\",\\n transportSend\\n );\\n transportSend.dispose();\\n }\\n #installTimers() {\\n const setTimeoutHandle = this.#context.newFunction(\\n \\\"setTimeout\\\",\\n (callbackHandle, delayHandle, ...argHandles) => {\\n if (this.#context.typeof(callbackHandle) !== \\\"function\\\") {\\n throw new TypeError(\\\"setTimeout callback must be a function\\\");\\n }\\n const timerId = this.#nextTimerId++;\\n const delay = Math.max(0, this.#context.getNumber(delayHandle));\\n const callback = callbackHandle.dup();\\n const args = argHandles.map((arg) => arg.dup());\\n const timeout = globalThis.setTimeout(() => {\\n if (this.#disposed) {\\n this.#clearTimer(timerId);\\n return;\\n }\\n const record = this.#timers.get(timerId);\\n if (!record) {\\n return;\\n }\\n try {\\n const result = this.#runWithCpuLimit(\\n () => this.#context.callFunction(\\n record.callback,\\n this.#context.undefined,\\n ...record.args\\n )\\n );\\n if (result.error) {\\n this.#emitConsoleError(this.#context.dump(result.error));\\n result.error.dispose();\\n } else {\\n result.value.dispose();\\n }\\n this.#tryDrainPendingJobs();\\n } finally {\\n this.#clearTimer(timerId);\\n }\\n }, delay);\\n this.#timers.set(timerId, { callback, args, timeout });\\n return this.#context.newNumber(timerId);\\n }\\n );\\n const clearTimeoutHandle = this.#context.newFunction(\\n \\\"clearTimeout\\\",\\n (timerIdHandle) => {\\n this.#clearTimer(this.#context.getNumber(timerIdHandle));\\n }\\n );\\n this.#context.setProp(this.#context.global, \\\"setTimeout\\\", setTimeoutHandle);\\n this.#context.setProp(\\n this.#context.global,\\n \\\"clearTimeout\\\",\\n clearTimeoutHandle\\n );\\n setTimeoutHandle.dispose();\\n clearTimeoutHandle.dispose();\\n }\\n #clearTimer(timerId) {\\n const record = this.#timers.get(timerId);\\n if (!record) {\\n return;\\n }\\n globalThis.clearTimeout(record.timeout);\\n record.callback.dispose();\\n for (const arg of record.args) {\\n arg.dispose();\\n }\\n this.#timers.delete(timerId);\\n }\\n #bridgeHostResult(invoker) {\\n try {\\n const result = invoker();\\n if (this.#isPromiseLike(result)) {\\n return this.#createDeferredPromise(result);\\n }\\n if (result === void 0) {\\n return;\\n }\\n return this.#toHandle(result);\\n } catch (error) {\\n throw this.#normalizeHostError(error);\\n }\\n }\\n #createDeferredPromise(promise) {\\n const deferred = this.#context.newPromise();\\n this.#pendingDeferreds.add(deferred);\\n promise.then((value) => {\\n if (this.#disposed || !deferred.alive) {\\n return;\\n }\\n const valueHandle = value === void 0 ? void 0 : this.#toHandle(value);\\n try {\\n deferred.resolve(valueHandle);\\n } finally {\\n valueHandle?.dispose();\\n }\\n }).catch((error) => {\\n if (this.#disposed || !deferred.alive) {\\n return;\\n }\\n const errorHandle = this.#newGuestErrorHandle(error);\\n try {\\n deferred.reject(errorHandle);\\n } finally {\\n errorHandle.dispose();\\n }\\n }).finally(() => {\\n this.#pendingDeferreds.delete(deferred);\\n this.#tryDrainPendingJobs();\\n });\\n return deferred.handle;\\n }\\n #evalCode(code, options) {\\n this.#assertAlive();\\n const result = this.#runWithCpuLimit(\\n () => this.#context.evalCode(code, options.filename ?? \\\"sandbox.js\\\", {\\n type: options.type\\n })\\n );\\n return this.#unwrapResult(result, \\\"QuickJS evaluation failed\\\");\\n }\\n async #consumeHandle(handle) {\\n try {\\n const promiseState = this.#context.getPromiseState(handle);\\n if (promiseState.type === \\\"fulfilled\\\" && promiseState.notAPromise) {\\n return this.#dumpHandle(handle);\\n }\\n if (promiseState.type === \\\"fulfilled\\\") {\\n try {\\n return this.#dumpHandle(promiseState.value);\\n } finally {\\n promiseState.value.dispose();\\n }\\n }\\n if (promiseState.type === \\\"pending\\\") {\\n const resolved2 = await this.#awaitQuickJSPromise(handle);\\n try {\\n return this.#dumpHandle(resolved2);\\n } finally {\\n resolved2.dispose();\\n }\\n }\\n if (promiseState.type === \\\"rejected\\\") {\\n try {\\n throw this.#toError(\\\"QuickJS promise rejected\\\", promiseState.error);\\n } finally {\\n promiseState.error.dispose();\\n }\\n }\\n const resolved = await this.#awaitQuickJSPromise(handle);\\n try {\\n return this.#dumpHandle(resolved);\\n } finally {\\n resolved.dispose();\\n }\\n } finally {\\n handle.dispose();\\n }\\n }\\n async #awaitQuickJSPromise(promiseHandle) {\\n let settled = false;\\n const nativePromise = this.#context.resolvePromise(promiseHandle).finally(() => {\\n settled = true;\\n });\\n while (!settled) {\\n this.#drainPendingJobs();\\n if (settled) {\\n break;\\n }\\n await this.#options.onDrain?.();\\n this.#drainPendingJobs();\\n if (settled) {\\n break;\\n }\\n await new Promise((resolve) => {\\n globalThis.setTimeout(resolve, 0);\\n });\\n }\\n this.#drainPendingJobs();\\n return this.#unwrapResult(await nativePromise, \\\"QuickJS promise rejected\\\");\\n }\\n #drainPendingJobs() {\\n this.#assertAlive();\\n while (true) {\\n const jobResult = this.#runWithCpuLimit(\\n () => this.#runtime.executePendingJobs()\\n );\\n if (jobResult.error) {\\n const error = this.#toError(\\n \\\"QuickJS pending job failed\\\",\\n jobResult.error\\n );\\n jobResult.error.dispose();\\n throw error;\\n }\\n if (jobResult.value === 0) {\\n return;\\n }\\n }\\n }\\n #tryDrainPendingJobs() {\\n if (this.#disposed) {\\n return;\\n }\\n try {\\n this.#drainPendingJobs();\\n } catch (error) {\\n this.#emitConsoleError(this.#normalizeHostError(error));\\n }\\n }\\n #unwrapResult(result, prefix) {\\n if (result.error) {\\n const error = this.#toError(prefix, result.error);\\n result.error.dispose();\\n throw error;\\n }\\n return result.value;\\n }\\n #toHandle(value) {\\n if (value === void 0) {\\n return this.#context.undefined.dup();\\n }\\n if (value === null) {\\n return this.#context.null.dup();\\n }\\n if (value === true) {\\n return this.#context.true.dup();\\n }\\n if (value === false) {\\n return this.#context.false.dup();\\n }\\n switch (typeof value) {\\n case \\\"number\\\":\\n return this.#context.newNumber(value);\\n case \\\"string\\\":\\n return this.#context.newString(value);\\n case \\\"bigint\\\":\\n return this.#context.newBigInt(value);\\n case \\\"object\\\": {\\n if (Array.isArray(value)) {\\n const arrayHandle = this.#context.newArray();\\n try {\\n value.forEach((item, index) => {\\n const itemHandle = this.#toHandle(item);\\n try {\\n this.#context.setProp(arrayHandle, index, itemHandle);\\n } finally {\\n itemHandle.dispose();\\n }\\n });\\n return arrayHandle;\\n } catch (error) {\\n arrayHandle.dispose();\\n throw error;\\n }\\n }\\n const objectHandle = this.#context.newObject();\\n try {\\n for (const [key, item] of Object.entries(value)) {\\n const itemHandle = this.#toHandle(item);\\n try {\\n this.#context.setProp(objectHandle, key, itemHandle);\\n } finally {\\n itemHandle.dispose();\\n }\\n }\\n return objectHandle;\\n } catch (error) {\\n objectHandle.dispose();\\n throw error;\\n }\\n }\\n default:\\n throw new TypeError(`Unsupported host value type: ${typeof value}`);\\n }\\n }\\n #dumpHandle(handle) {\\n return this.#context.dump(handle);\\n }\\n #parseArgs(name, argsJson) {\\n try {\\n const parsed = JSON.parse(argsJson);\\n if (!Array.isArray(parsed)) {\\n throw new Error(\\\"Expected a JSON array\\\");\\n }\\n return parsed;\\n } catch (error) {\\n throw new Error(\\n `Invalid JSON arguments for host call \\\"${name}\\\": ${this.#normalizeHostError(error).message}`\\n );\\n }\\n }\\n #newGuestErrorHandle(error) {\\n const normalized = this.#normalizeHostError(error);\\n const errorHandle = this.#context.newError({\\n name: normalized.name || \\\"Error\\\",\\n message: normalized.message\\n });\\n if (normalized.stack) {\\n const stackHandle = this.#context.newString(normalized.stack);\\n try {\\n this.#context.setProp(errorHandle, \\\"stack\\\", stackHandle);\\n } finally {\\n stackHandle.dispose();\\n }\\n }\\n return errorHandle;\\n }\\n #toError(prefix, errorHandle) {\\n const dumped = this.#context.dump(errorHandle);\\n const normalized = this.#normalizeHostError(dumped);\\n normalized.message = `${prefix}: ${normalized.message}`;\\n return normalized;\\n }\\n #emitConsoleError(error) {\\n const normalized = this.#normalizeHostError(error);\\n this.#options.onConsole?.(\\\"error\\\", [\\n {\\n name: normalized.name,\\n message: normalized.message,\\n stack: normalized.stack\\n }\\n ]);\\n }\\n #normalizeHostError(error) {\\n if (error instanceof Error) {\\n return error;\\n }\\n if (typeof error === \\\"object\\\" && error !== null) {\\n const name = \\\"name\\\" in error && typeof error.name === \\\"string\\\" ? error.name : \\\"Error\\\";\\n const message = \\\"message\\\" in error && typeof error.message === \\\"string\\\" ? error.message : JSON.stringify(error);\\n const normalized = new Error(message);\\n normalized.name = name;\\n if (\\\"stack\\\" in error && typeof error.stack === \\\"string\\\") {\\n normalized.stack = error.stack;\\n }\\n return normalized;\\n }\\n return new Error(String(error));\\n }\\n #runWithCpuLimit(callback) {\\n if (this.#options.cpuTimeoutMs === void 0) {\\n return callback();\\n }\\n const previousDeadline = this.#interruptDeadline;\\n this.#interruptDeadline = Date.now() + this.#options.cpuTimeoutMs;\\n try {\\n return callback();\\n } finally {\\n this.#interruptDeadline = previousDeadline;\\n }\\n }\\n #assertAlive() {\\n if (this.#disposed) {\\n throw new Error(\\\"QuickJSHost has been disposed\\\");\\n }\\n }\\n #isPromiseLike(value) {\\n return typeof value === \\\"object\\\" && value !== null && \\\"then\\\" in value;\\n }\\n};\\n\\n// src/sandbox/quickjs-sandbox.ts\\nimport { existsSync as existsSync2 } from \\\"node:fs\\\";\\nimport { fileURLToPath as fileURLToPath2 } from \\\"node:url\\\";\\nvar DEFAULT_MEMORY_LIMIT_BYTES = 512 * 1024 * 1024;\\nvar WAIT_FOR_OBJECT_ATTEMPTS = 1e3;\\nfunction findBundlePath() {\\n const candidates = [\\n fileURLToPath2(new URL(\\\"./sandbox-client.js\\\", import.meta.url)),\\n fileURLToPath2(new URL(\\\"../../dist/sandbox-client.js\\\", import.meta.url))\\n ];\\n for (const p of candidates) {\\n if (existsSync2(p)) {\\n return p;\\n }\\n }\\n throw new Error(\\n `Failed to find sandbox-client.js. Searched:\\n${candidates.map((c) => ` - ${c}`).join(\\\"\\\\n\\\")}`\\n );\\n}\\nvar BUNDLE_PATH = findBundlePath();\\nvar TRANSPORT_RECEIVE_GLOBAL = \\\"__transport_receive\\\";\\nvar bundleCodePromise;\\nfunction formatArgs(args) {\\n return args.map(\\n (arg) => typeof arg === \\\"string\\\" ? arg : util2.inspect(arg, {\\n colors: false,\\n depth: 6,\\n compact: 3,\\n breakLength: Number.POSITIVE_INFINITY\\n })\\n ).join(\\\" \\\");\\n}\\nfunction normalizeError(error) {\\n if (error instanceof Error) {\\n return error;\\n }\\n return new Error(String(error));\\n}\\nfunction getSandboxClientBundleCode() {\\n bundleCodePromise ??= readFile2(BUNDLE_PATH, \\\"utf8\\\").catch(\\n (error) => {\\n bundleCodePromise = void 0;\\n const message = error instanceof Error ? error.message : \\\"Sandbox client bundle could not be read\\\";\\n throw new Error(\\n `Failed to load sandbox client bundle at ${BUNDLE_PATH}: ${message}`\\n );\\n }\\n );\\n return bundleCodePromise;\\n}\\nfunction formatTimeoutDuration(timeoutMs) {\\n if (timeoutMs % 1e3 === 0) {\\n return `${timeoutMs / 1e3}s`;\\n }\\n return `${timeoutMs}ms`;\\n}\\nfunction createScriptTimeoutError(timeoutMs) {\\n const error = new Error(\\n `Script timed out after ${formatTimeoutDuration(timeoutMs)} and was terminated.`\\n );\\n error.name = \\\"ScriptTimeoutError\\\";\\n return error;\\n}\\nfunction createGuestScriptTimeoutErrorSource(timeoutMs) {\\n const message = JSON.stringify(createScriptTimeoutError(timeoutMs).message);\\n return `(() => {\\n const error = new Error(${message});\\n error.name = \\\"ScriptTimeoutError\\\";\\n return error;\\n })()`;\\n}\\nfunction wrapScriptWithWallClockTimeout(script, timeoutMs) {\\n if (timeoutMs === void 0) {\\n return script;\\n }\\n return `\\n (() => {\\n return new Promise((resolve, reject) => {\\n const timeoutId = setTimeout(() => {\\n reject(${createGuestScriptTimeoutErrorSource(timeoutMs)});\\n }, ${timeoutMs});\\n\\n Promise.resolve()\\n .then(() => (${script}))\\n .then(resolve, reject)\\n .finally(() => {\\n clearTimeout(timeoutId);\\n });\\n });\\n })()\\n `;\\n}\\nfunction requireString(value, label) {\\n if (typeof value !== \\\"string\\\" || value.length === 0) {\\n throw new TypeError(`${label} must be a non-empty string`);\\n }\\n return value;\\n}\\nfunction toServerImpl(clientObject, label) {\\n const connection = clientObject._connection;\\n const toImpl = connection?.toImpl;\\n if (typeof toImpl !== \\\"function\\\") {\\n throw new Error(`${label} does not expose a server implementation`);\\n }\\n const impl = toImpl(clientObject);\\n if (!impl) {\\n throw new Error(`${label} could not be mapped to a server implementation`);\\n }\\n return impl;\\n}\\nfunction extractGuid(page) {\\n const guid = toServerImpl(page, \\\"Playwright page\\\").guid;\\n if (typeof guid !== \\\"string\\\" || guid.length === 0) {\\n throw new Error(\\\"Playwright page did not expose a guid\\\");\\n }\\n return guid;\\n}\\nfunction decodeSandboxFilePayload(value, label) {\\n if (typeof value !== \\\"object\\\" || value === null) {\\n throw new TypeError(`${label} must be an object`);\\n }\\n const encoding = \\\"encoding\\\" in value ? value.encoding : void 0;\\n const data = \\\"data\\\" in value ? value.data : void 0;\\n if (encoding !== \\\"utf8\\\" && encoding !== \\\"base64\\\" || typeof data !== \\\"string\\\") {\\n throw new TypeError(\\n `${label} must include a valid encoding and string data`\\n );\\n }\\n if (encoding === \\\"utf8\\\") {\\n return data;\\n }\\n return Buffer.from(data, \\\"base64\\\");\\n}\\nvar QuickJSSandbox = class {\\n #options;\\n #anonymousPages = /* @__PURE__ */ new Set();\\n #pendingHostOperations = /* @__PURE__ */ new Set();\\n #transportInbox = [];\\n #asyncError;\\n #host;\\n #hostBridge;\\n #flushPromise;\\n #disposed = false;\\n #initialized = false;\\n constructor(options) {\\n this.#options = options;\\n }\\n async initialize() {\\n this.#assertAlive();\\n if (this.#initialized) {\\n return;\\n }\\n try {\\n await ensureCanaryTempDir();\\n this.#host = await QuickJSHost.create({\\n memoryLimitBytes: this.#options.memoryLimitBytes ?? DEFAULT_MEMORY_LIMIT_BYTES,\\n cpuTimeoutMs: this.#options.timeoutMs,\\n hostFunctions: {\\n getPage: (name) => this.#getPage(name),\\n newPage: () => this.#newPage(),\\n listPages: () => this.#options.manager.listPages(this.#options.browserName),\\n closePage: (name) => this.#closePage(name),\\n saveScreenshot: (name, data) => this.#writeTempFile(name, data),\\n writeFile: (name, data) => this.#writeTempFile(name, data),\\n readFile: (name) => this.#readTempFile(name)\\n },\\n onConsole: (level, args) => {\\n this.#routeConsole(level, args);\\n },\\n onDrain: () => this.#drainAsyncOps(),\\n onTransportSend: (message) => {\\n this.#handleTransportSend(message);\\n }\\n });\\n this.#host.executeScriptSync(\\n `\\n const __performanceOrigin = Date.now();\\n const __base64Alphabet =\\n \\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\";\\n\\n const __encodeBase64 = (bytes) => {\\n let result = \\\"\\\";\\n for (let index = 0; index < bytes.length; index += 3) {\\n const chunk =\\n (bytes[index] << 16) |\\n ((bytes[index + 1] ?? 0) << 8) |\\n (bytes[index + 2] ?? 0);\\n result += __base64Alphabet[(chunk >> 18) & 63];\\n result += __base64Alphabet[(chunk >> 12) & 63];\\n result += index + 1 < bytes.length ? __base64Alphabet[(chunk >> 6) & 63] : \\\"=\\\";\\n result += index + 2 < bytes.length ? __base64Alphabet[chunk & 63] : \\\"=\\\";\\n }\\n return result;\\n };\\n\\n const __decodeBase64 = (base64) => {\\n const normalized = String(base64).replace(/\\\\\\\\s+/g, \\\"\\\");\\n const output = [];\\n for (let index = 0; index < normalized.length; index += 4) {\\n const a = __base64Alphabet.indexOf(normalized[index] ?? \\\"A\\\");\\n const b = __base64Alphabet.indexOf(normalized[index + 1] ?? \\\"A\\\");\\n const c =\\n normalized[index + 2] === \\\"=\\\"\\n ? 64\\n : __base64Alphabet.indexOf(normalized[index + 2] ?? \\\"A\\\");\\n const d =\\n normalized[index + 3] === \\\"=\\\"\\n ? 64\\n : __base64Alphabet.indexOf(normalized[index + 3] ?? \\\"A\\\");\\n const chunk = (a << 18) | (b << 12) | ((c & 63) << 6) | (d & 63);\\n output.push((chunk >> 16) & 255);\\n if (c !== 64) {\\n output.push((chunk >> 8) & 255);\\n }\\n if (d !== 64) {\\n output.push(chunk & 255);\\n }\\n }\\n return new Uint8Array(output);\\n };\\n\\n globalThis.URL ??= class URL {\\n constructor(value, base) {\\n this.href = base === undefined ? String(value) : String(base) + String(value);\\n }\\n\\n toJSON() {\\n return this.href;\\n }\\n\\n toString() {\\n return this.href;\\n }\\n };\\n\\n globalThis.Buffer ??= class Buffer extends Uint8Array {\\n constructor(value, byteOffset, length) {\\n if (typeof value === \\\"number\\\") {\\n super(value);\\n return;\\n }\\n if (value instanceof ArrayBuffer) {\\n super(value, byteOffset, length);\\n return;\\n }\\n if (ArrayBuffer.isView(value)) {\\n super(value.buffer, value.byteOffset, value.byteLength);\\n return;\\n }\\n super(value);\\n }\\n\\n static from(value, encodingOrOffset, length) {\\n if (typeof value === \\\"string\\\") {\\n if (encodingOrOffset !== undefined && encodingOrOffset !== \\\"base64\\\") {\\n throw new Error(\\\"QuickJS Buffer only supports base64 string input\\\");\\n }\\n return new Buffer(__decodeBase64(value));\\n }\\n if (value instanceof ArrayBuffer) {\\n return new Buffer(value, encodingOrOffset, length);\\n }\\n if (ArrayBuffer.isView(value)) {\\n return new Buffer(\\n value.buffer.slice(\\n value.byteOffset,\\n value.byteOffset + value.byteLength,\\n ),\\n );\\n }\\n if (Array.isArray(value)) {\\n return new Buffer(value);\\n }\\n throw new TypeError(\\\"Unsupported Buffer.from input\\\");\\n }\\n\\n toString(encoding) {\\n if (encoding === undefined || encoding === \\\"utf8\\\") {\\n return Array.from(this)\\n .map((value) => String.fromCharCode(value))\\n .join(\\\"\\\");\\n }\\n if (encoding === \\\"base64\\\") {\\n return __encodeBase64(this);\\n }\\n throw new Error(\\\"QuickJS Buffer only supports utf8 and base64 output\\\");\\n }\\n };\\n\\n globalThis.performance ??= {\\n now: () => Date.now() - __performanceOrigin,\\n timeOrigin: __performanceOrigin,\\n };\\n globalThis.global = globalThis;\\n `,\\n {\\n filename: \\\"quickjs-runtime.js\\\"\\n }\\n );\\n const bundleCode = await getSandboxClientBundleCode();\\n const bundleFactorySource = JSON.stringify(\\n `${bundleCode}\\nreturn __PlaywrightClient;`\\n );\\n this.#host.executeScriptSync(\\n `\\n globalThis.__createPlaywrightClient = () => {\\n return new Function(${bundleFactorySource})();\\n };\\n `,\\n {\\n filename: \\\"sandbox-client.js\\\"\\n }\\n );\\n const browserEntry = this.#options.manager.getBrowser(\\n this.#options.browserName\\n );\\n if (!browserEntry) {\\n throw new Error(\\n `Browser \\\"${this.#options.browserName}\\\" not found. It should have been created before script execution.`\\n );\\n }\\n this.#hostBridge = new HostBridge({\\n sendToSandbox: (json) => {\\n this.#transportInbox.push(json);\\n },\\n preLaunchedBrowser: toServerImpl(\\n browserEntry.browser,\\n \\\"Playwright browser\\\"\\n ),\\n sharedBrowser: true,\\n denyLaunch: true\\n });\\n await this.#host.executeScript(\\n `\\n (() => {\\n const hostCall = globalThis.__hostCall;\\n const transportSend = globalThis.__transport_send;\\n const createPlaywrightClient = globalThis.__createPlaywrightClient;\\n\\n if (typeof hostCall !== \\\"function\\\") {\\n throw new Error(\\\"Sandbox bridge did not expose a host-call function\\\");\\n }\\n if (typeof transportSend !== \\\"function\\\") {\\n throw new Error(\\\"Sandbox bridge did not expose a transport sender\\\");\\n }\\n if (typeof createPlaywrightClient !== \\\"function\\\") {\\n throw new Error(\\\"Sandbox client bundle did not expose a Playwright client factory\\\");\\n }\\n\\n if (!delete globalThis.__hostCall) {\\n globalThis.__hostCall = undefined;\\n }\\n if (!delete globalThis.__transport_send) {\\n globalThis.__transport_send = undefined;\\n }\\n if (!delete globalThis.__createPlaywrightClient) {\\n globalThis.__createPlaywrightClient = undefined;\\n }\\n\\n const playwrightClient = createPlaywrightClient();\\n const connection = new playwrightClient.Connection(playwrightClient.quickjsPlatform);\\n connection.onmessage = (message) => {\\n transportSend(JSON.stringify(message));\\n };\\n\\n Object.defineProperty(globalThis, \\\"${TRANSPORT_RECEIVE_GLOBAL}\\\", {\\n value: (json) => {\\n connection.dispatch(JSON.parse(json));\\n },\\n configurable: false,\\n enumerable: false,\\n writable: false,\\n });\\n\\n const waitForConnectionObject = async (guid, label) => {\\n if (typeof guid !== \\\"string\\\" || guid.length === 0) {\\n throw new Error(\\\\`\\\\${label} did not return a valid guid\\\\`);\\n }\\n\\n for (let attempt = 0; attempt < ${WAIT_FOR_OBJECT_ATTEMPTS}; attempt += 1) {\\n const object = connection.getObjectWithKnownName(guid);\\n if (object) {\\n return object;\\n }\\n await new Promise((resolve) => setTimeout(resolve, 0));\\n }\\n\\n throw new Error(\\\\`Timed out waiting for \\\\${label} (\\\\${guid}) in the sandbox\\\\`);\\n };\\n\\n const encodeHostFilePayload = (value) => {\\n if (typeof value === \\\"string\\\") {\\n return { encoding: \\\"utf8\\\", data: value };\\n }\\n if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {\\n return { encoding: \\\"base64\\\", data: Buffer.from(value).toString(\\\"base64\\\") };\\n }\\n throw new TypeError(\\n \\\"File data must be a string, Buffer, Uint8Array, or ArrayBuffer\\\",\\n );\\n };\\n\\n return (async () => {\\n await connection.initializePlaywright();\\n\\n const browserApi = Object.create(null);\\n Object.defineProperties(browserApi, {\\n getPage: {\\n value: async (name) => {\\n const guid = await hostCall(\\\"getPage\\\", JSON.stringify([name]));\\n return await waitForConnectionObject(guid, \\\\`page \\\"\\\\${name}\\\"\\\\`);\\n },\\n enumerable: true,\\n },\\n newPage: {\\n value: async () => {\\n const guid = await hostCall(\\\"newPage\\\", JSON.stringify([]));\\n return await waitForConnectionObject(guid, \\\"anonymous page\\\");\\n },\\n enumerable: true,\\n },\\n listPages: {\\n value: async () => {\\n return await hostCall(\\\"listPages\\\", JSON.stringify([]));\\n },\\n enumerable: true,\\n },\\n closePage: {\\n value: async (name) => {\\n await hostCall(\\\"closePage\\\", JSON.stringify([name]));\\n },\\n enumerable: true,\\n },\\n });\\n Object.freeze(browserApi);\\n\\n Object.defineProperty(globalThis, \\\"browser\\\", {\\n value: browserApi,\\n configurable: false,\\n enumerable: true,\\n writable: false,\\n });\\n\\n Object.defineProperties(globalThis, {\\n saveScreenshot: {\\n value: async (buffer, name) => {\\n return await hostCall(\\n \\\"saveScreenshot\\\",\\n JSON.stringify([name, encodeHostFilePayload(buffer)]),\\n );\\n },\\n configurable: false,\\n enumerable: true,\\n writable: false,\\n },\\n writeFile: {\\n value: async (name, data) => {\\n return await hostCall(\\n \\\"writeFile\\\",\\n JSON.stringify([name, encodeHostFilePayload(data)]),\\n );\\n },\\n configurable: false,\\n enumerable: true,\\n writable: false,\\n },\\n readFile: {\\n value: async (name) => {\\n return await hostCall(\\\"readFile\\\", JSON.stringify([name]));\\n },\\n configurable: false,\\n enumerable: true,\\n writable: false,\\n },\\n });\\n })();\\n })()\\n `,\\n {\\n filename: \\\"sandbox-init.js\\\"\\n }\\n );\\n await this.#flushTransportQueue();\\n this.#throwIfAsyncError();\\n this.#initialized = true;\\n } catch (error) {\\n await this.dispose();\\n throw error;\\n }\\n }\\n async executeScript(script) {\\n this.#assertInitialized();\\n let executionError;\\n try {\\n this.#throwIfAsyncError();\\n await this.#host?.executeScript(\\n wrapScriptWithWallClockTimeout(script, this.#options.timeoutMs),\\n {\\n filename: \\\"user-script.js\\\"\\n }\\n );\\n await this.#flushTransportQueue();\\n this.#throwIfAsyncError();\\n } catch (error) {\\n executionError = error;\\n }\\n try {\\n await this.#cleanupAnonymousPages();\\n } catch (error) {\\n executionError ??= error;\\n }\\n if (executionError) {\\n throw executionError;\\n }\\n }\\n async dispose() {\\n if (this.#disposed) {\\n return;\\n }\\n this.#disposed = true;\\n await this.#cleanupAnonymousPages({\\n suppressErrors: true\\n });\\n this.#transportInbox.length = 0;\\n this.#pendingHostOperations.clear();\\n try {\\n await this.#hostBridge?.dispose();\\n } catch {\\n } finally {\\n this.#hostBridge = void 0;\\n this.#host?.dispose();\\n this.#host = void 0;\\n this.#flushPromise = void 0;\\n }\\n }\\n #routeConsole(level, args) {\\n const line = `${formatArgs(args)}\\n`;\\n if (level === \\\"warn\\\" || level === \\\"error\\\") {\\n this.#options.onStderr(line);\\n return;\\n }\\n this.#options.onStdout(line);\\n }\\n #handleTransportSend(message) {\\n if (!this.#hostBridge) {\\n this.#asyncError ??= new Error(\\\"Sandbox transport is not initialized\\\");\\n return;\\n }\\n const operation = this.#hostBridge.receiveFromSandbox(message).catch((error) => {\\n this.#asyncError ??= normalizeError(error);\\n }).finally(() => {\\n this.#pendingHostOperations.delete(operation);\\n });\\n this.#pendingHostOperations.add(operation);\\n }\\n async #drainAsyncOps() {\\n this.#throwIfAsyncError();\\n await this.#flushTransportQueue();\\n this.#throwIfAsyncError();\\n if (this.#pendingHostOperations.size === 0) {\\n return;\\n }\\n await Promise.race(this.#pendingHostOperations);\\n this.#throwIfAsyncError();\\n await this.#flushTransportQueue();\\n this.#throwIfAsyncError();\\n }\\n async #flushTransportQueue() {\\n this.#throwIfAsyncError();\\n if (!this.#host || this.#transportInbox.length === 0) {\\n return;\\n }\\n if (this.#flushPromise) {\\n await this.#flushPromise;\\n return;\\n }\\n const flush = async () => {\\n while (this.#transportInbox.length > 0) {\\n const message = this.#transportInbox.shift();\\n if (message === void 0) {\\n continue;\\n }\\n await this.#host?.callFunction(TRANSPORT_RECEIVE_GLOBAL, message);\\n this.#throwIfAsyncError();\\n }\\n };\\n this.#flushPromise = flush().finally(() => {\\n this.#flushPromise = void 0;\\n });\\n await this.#flushPromise;\\n }\\n async #getPage(name) {\\n const page = await this.#options.manager.getPage(\\n this.#options.browserName,\\n requireString(name, \\\"Page name or targetId\\\")\\n );\\n return extractGuid(page);\\n }\\n async #newPage() {\\n const page = await this.#options.manager.newPage(this.#options.browserName);\\n this.#anonymousPages.add(page);\\n page.on(\\\"close\\\", () => {\\n this.#anonymousPages.delete(page);\\n });\\n return extractGuid(page);\\n }\\n async #closePage(name) {\\n await this.#options.manager.closePage(\\n this.#options.browserName,\\n requireString(name, \\\"Page name\\\")\\n );\\n }\\n async #writeTempFile(name, payload) {\\n return await writeCanaryTempFile(\\n requireString(name, \\\"File name\\\"),\\n decodeSandboxFilePayload(payload, \\\"File data\\\")\\n );\\n }\\n async #readTempFile(name) {\\n return await readCanaryTempFile(requireString(name, \\\"File name\\\"));\\n }\\n async #cleanupAnonymousPages(options = {}) {\\n const anonymousPages = [...this.#anonymousPages];\\n this.#anonymousPages.clear();\\n for (const page of anonymousPages) {\\n try {\\n if (!page.isClosed()) {\\n await page.close();\\n }\\n } catch (error) {\\n if (!options.suppressErrors) {\\n throw error;\\n }\\n }\\n }\\n if (options.suppressErrors) {\\n try {\\n await this.#flushTransportQueue();\\n } catch {\\n }\\n return;\\n }\\n await this.#flushTransportQueue();\\n this.#throwIfAsyncError();\\n }\\n #throwIfAsyncError() {\\n if (this.#asyncError) {\\n throw this.#asyncError;\\n }\\n }\\n #assertAlive() {\\n if (this.#disposed) {\\n throw new Error(\\\"QuickJS sandbox has been disposed\\\");\\n }\\n }\\n #assertInitialized() {\\n this.#assertAlive();\\n if (!(this.#initialized && this.#host && this.#hostBridge)) {\\n throw new Error(\\\"QuickJS sandbox has not been initialized\\\");\\n }\\n }\\n};\\n\\n// src/sandbox/script-runner-quickjs.ts\\nasync function runScript(script, manager2, browserName, output, options = {}) {\\n const sandbox = new QuickJSSandbox({\\n manager: manager2,\\n browserName,\\n onStdout: output.onStdout,\\n onStderr: output.onStderr,\\n memoryLimitBytes: options.memoryLimitBytes,\\n timeoutMs: options.timeout\\n });\\n try {\\n await sandbox.initialize();\\n await sandbox.executeScript(`(async () => {\\n${script}\\n})()`);\\n } finally {\\n await sandbox.dispose();\\n }\\n}\\n\\n// src/session-manager.ts\\nimport { createWriteStream } from \\\"node:fs\\\";\\nimport { mkdir as mkdir3, readdir, stat, writeFile } from \\\"node:fs/promises\\\";\\nimport path5 from \\\"node:path\\\";\\nvar SESSION_PREFIX = \\\"__session__\\\";\\nvar TEARDOWN_TIMEOUT_MS = 5e3;\\nfunction sessionBrowserName(sessionId) {\\n return `${SESSION_PREFIX}${sessionId}`;\\n}\\nvar SessionManager = class {\\n sessions = /* @__PURE__ */ new Map();\\n manager;\\n log;\\n constructor(manager2, log2) {\\n this.manager = manager2;\\n this.log = log2;\\n this.manager.onBrowserDisconnect(\\n (name) => this.handleBrowserDisconnect(name)\\n );\\n }\\n handleBrowserDisconnect(name) {\\n const sessionId = this.sessionIdForBrowser(name);\\n if (!sessionId) {\\n return;\\n }\\n const state = this.sessions.get(sessionId);\\n if (state?.phase !== \\\"active\\\") {\\n return;\\n }\\n state.phase = \\\"failed\\\";\\n state.endedAt = Date.now();\\n this.sessions.delete(sessionId);\\n for (const dispose of state.errorDisposers) {\\n try {\\n dispose();\\n } catch {\\n }\\n }\\n state.errorDisposers = [];\\n void this.closeStream(state.consoleStream);\\n state.consoleStream = void 0;\\n this.log.warn({ sessionId }, \\\"session browser disconnected unexpectedly\\\");\\n }\\n isSessionBrowser(name) {\\n return name.startsWith(SESSION_PREFIX);\\n }\\n sessionIdForBrowser(name) {\\n return name.startsWith(SESSION_PREFIX) ? name.slice(SESSION_PREFIX.length) : void 0;\\n }\\n has(sessionId) {\\n return this.sessions.has(sessionId);\\n }\\n status(sessionId) {\\n const state = this.sessions.get(sessionId);\\n return state ? this.summarize(state) : void 0;\\n }\\n list() {\\n return Array.from(this.sessions.values()).map(\\n (state) => this.summarize(state)\\n );\\n }\\n noteRun(sessionId) {\\n const state = this.sessions.get(sessionId);\\n if (state) {\\n state.runCount += 1;\\n }\\n }\\n async start(req) {\\n if (this.sessions.has(req.sessionId)) {\\n throw new Error(`Session \\\"${req.sessionId}\\\" already exists`);\\n }\\n const artifactsDir = getSessionDir(req.sessionId);\\n const profileDir = path5.join(artifactsDir, \\\"profile\\\");\\n const videoDir = path5.join(artifactsDir, SESSION_VIDEO_DIR);\\n const harPath = path5.join(artifactsDir, SESSION_HAR_FILE);\\n const consolePath = path5.join(artifactsDir, SESSION_CONSOLE_FILE);\\n await mkdir3(profileDir, { recursive: true });\\n const entry = await this.manager.launchSessionBrowser(\\n sessionBrowserName(req.sessionId),\\n {\\n headless: req.headless ?? false,\\n ignoreHTTPSErrors: req.ignoreHTTPSErrors ?? false,\\n profileDirOverride: profileDir,\\n record: {\\n videoDir: req.capture.video ? videoDir : void 0,\\n har: req.capture.har ? { path: harPath, content: \\\"embed\\\" } : void 0\\n }\\n }\\n );\\n const state = {\\n artifactsDir,\\n capture: req.capture,\\n consolePath,\\n entry,\\n errorDisposers: [],\\n harPath,\\n headless: req.headless ?? false,\\n name: req.name,\\n pageCount: 0,\\n phase: \\\"active\\\",\\n runCount: 0,\\n sessionId: req.sessionId,\\n startedAt: Date.now(),\\n videoDir\\n };\\n try {\\n if (req.capture.trace) {\\n await entry.context.tracing.start({\\n screenshots: true,\\n snapshots: true,\\n sources: true,\\n title: req.name ?? req.sessionId\\n });\\n }\\n if (req.capture.console) {\\n this.attachConsole(state);\\n }\\n } catch (err) {\\n await this.swallow(() => this.manager.stopBrowser(entry.name));\\n throw err;\\n }\\n this.sessions.set(req.sessionId, state);\\n this.log.info(\\n { sessionId: req.sessionId, artifactsDir },\\n \\\"session started\\\"\\n );\\n return this.summarize(state);\\n }\\n async beginStep(sessionId, step) {\\n const state = this.sessions.get(sessionId);\\n if (state?.capture.trace) {\\n await state.entry.context.tracing.group(step).catch(() => void 0);\\n }\\n }\\n async endStep(sessionId) {\\n const state = this.sessions.get(sessionId);\\n if (state?.capture.trace) {\\n await state.entry.context.tracing.groupEnd().catch(() => void 0);\\n }\\n }\\n // Strict teardown ordering: stop tracing (writes trace.zip) -> close context\\n // (flushes *.webm + finalizes HAR) -> detach listeners + flush console stream\\n // -> enumerate artifacts + write manifest.json -> drop the session browser.\\n async end(sessionId, reason) {\\n const state = this.sessions.get(sessionId);\\n if (!state) {\\n throw new Error(`Session \\\"${sessionId}\\\" not found`);\\n }\\n if (state.phase !== \\\"active\\\") {\\n try {\\n return await this.collect(state, reason);\\n } finally {\\n await this.swallow(() => this.manager.stopBrowser(state.entry.name));\\n this.sessions.delete(sessionId);\\n }\\n }\\n state.phase = \\\"ending\\\";\\n const ctx = state.entry.context;\\n if (state.entry.browser.isConnected()) {\\n state.pageCount = ctx.pages().length;\\n }\\n if (state.capture.trace) {\\n await this.swallow(\\n () => ctx.tracing.stop({ path: path5.join(state.artifactsDir, \\\"trace.zip\\\") })\\n );\\n }\\n await this.swallow(() => ctx.close());\\n for (const dispose of state.errorDisposers) {\\n try {\\n dispose();\\n } catch {\\n }\\n }\\n state.errorDisposers = [];\\n await this.closeStream(state.consoleStream);\\n state.consoleStream = void 0;\\n state.phase = reason === \\\"abort\\\" ? \\\"aborted\\\" : \\\"ended\\\";\\n state.endedAt = Date.now();\\n try {\\n const result = await this.collect(state, reason);\\n this.log.info({ sessionId, reason }, \\\"session ended\\\");\\n return result;\\n } finally {\\n await this.swallow(() => this.manager.stopBrowser(state.entry.name));\\n this.sessions.delete(sessionId);\\n }\\n }\\n async endAll() {\\n for (const sessionId of Array.from(this.sessions.keys())) {\\n await this.best(() => this.end(sessionId, \\\"abort\\\"));\\n }\\n }\\n attachConsole(state) {\\n const stream = createWriteStream(state.consolePath, { flags: \\\"a\\\" });\\n stream.on(\\\"error\\\", (err) => {\\n this.log.debug(\\n { err, sessionId: state.sessionId },\\n \\\"console log stream error\\\"\\n );\\n });\\n state.consoleStream = stream;\\n const ctx = state.entry.context;\\n const write = (record) => {\\n if (!stream.destroyed) {\\n stream.write(`${JSON.stringify(record)}\\n`);\\n }\\n };\\n const onConsole = (msg) => {\\n const loc = msg.location();\\n write({\\n ts: Date.now(),\\n kind: \\\"console\\\",\\n type: msg.type(),\\n text: msg.text(),\\n url: loc.url,\\n line: loc.lineNumber,\\n col: loc.columnNumber,\\n page: this.namePage(state, msg.page())\\n });\\n };\\n ctx.on(\\\"console\\\", onConsole);\\n state.errorDisposers.push(() => ctx.off(\\\"console\\\", onConsole));\\n const onWebError = (webError) => {\\n const err = webError.error();\\n write({\\n ts: Date.now(),\\n kind: \\\"pageerror\\\",\\n message: err?.message ?? String(err),\\n stack: err?.stack,\\n page: this.namePage(state, webError.page())\\n });\\n };\\n ctx.on(\\\"weberror\\\", onWebError);\\n state.errorDisposers.push(() => ctx.off(\\\"weberror\\\", onWebError));\\n }\\n namePage(state, page) {\\n if (!page) {\\n return;\\n }\\n for (const [name, candidate] of state.entry.pages) {\\n if (candidate === page) {\\n return name;\\n }\\n }\\n return;\\n }\\n async collect(state, reason) {\\n const artifacts = [];\\n const add = async (kind, filePath) => {\\n try {\\n const info = await stat(filePath);\\n if (info.isFile()) {\\n artifacts.push({ kind, path: filePath, bytes: info.size });\\n }\\n } catch {\\n }\\n };\\n if (state.capture.trace) {\\n await add(\\\"trace\\\", path5.join(state.artifactsDir, SESSION_TRACE_FILE));\\n }\\n if (state.capture.har) {\\n await add(\\\"har\\\", state.harPath);\\n }\\n if (state.capture.console) {\\n await add(\\\"console\\\", state.consolePath);\\n }\\n if (state.capture.video) {\\n const files = await readdir(state.videoDir).catch(() => []);\\n for (const file of files) {\\n if (file.endsWith(SESSION_VIDEO_EXT)) {\\n await add(\\\"video\\\", path5.join(state.videoDir, file));\\n }\\n }\\n }\\n const screenshotsDir = path5.join(\\n state.artifactsDir,\\n SESSION_SCREENSHOTS_DIR\\n );\\n const shots = await readdir(screenshotsDir).catch(() => []);\\n for (const file of shots) {\\n if (file.endsWith(SESSION_SCREENSHOT_EXT)) {\\n await add(\\\"screenshot\\\", path5.join(screenshotsDir, file));\\n }\\n }\\n const session = this.summarize(state);\\n const manifestPath = path5.join(state.artifactsDir, \\\"manifest.json\\\");\\n await writeFile(\\n manifestPath,\\n JSON.stringify({ session, artifacts, reason }, null, 2)\\n );\\n return { session, artifacts, manifestPath };\\n }\\n summarize(state) {\\n const pageCount = state.entry.browser.isConnected() ? state.entry.context.pages().length : state.pageCount;\\n return {\\n artifactsDir: state.artifactsDir,\\n browser: state.entry.name,\\n capture: state.capture,\\n endedAt: state.endedAt,\\n headless: state.headless,\\n name: state.name,\\n pageCount,\\n phase: state.phase,\\n runCount: state.runCount,\\n sessionId: state.sessionId,\\n startedAt: state.startedAt\\n };\\n }\\n // Await a teardown step to completion, logging (not throwing) on failure.\\n // Used by end() so artifacts are fully flushed before enumeration.\\n async swallow(fn) {\\n try {\\n await fn();\\n } catch (err) {\\n this.log.debug({ err }, \\\"session teardown step failed\\\");\\n }\\n }\\n // Like swallow(), but bounded by a timeout so a wedged context.close() can't\\n // stall daemon shutdown. Used only by endAll(); the losing promise's eventual\\n // rejection is consumed by Promise.race, so it never becomes unhandled.\\n async best(fn) {\\n try {\\n await Promise.race([\\n fn(),\\n new Promise((resolve) => {\\n const timer = setTimeout(resolve, TEARDOWN_TIMEOUT_MS);\\n timer.unref();\\n })\\n ]);\\n } catch (err) {\\n this.log.debug({ err }, \\\"session teardown step failed\\\");\\n }\\n }\\n closeStream(stream) {\\n if (!stream) {\\n return Promise.resolve();\\n }\\n return new Promise((resolve) => {\\n stream.end(() => resolve());\\n });\\n }\\n};\\n\\n// src/daemon.ts\\nvar BASE_DIR = getCanaryBaseDir();\\nvar SOCKET_PATH = getDaemonEndpoint();\\nvar PID_PATH = getPidPath();\\nvar BROWSERS_DIR = getBrowsersDir();\\nvar DEFAULT_SCRIPT_TIMEOUT_MS = 3e4;\\nvar SOCKET_CLOSE_TIMEOUT_MS = 500;\\nvar LOG_PATH = path6.join(BASE_DIR, \\\"daemon.log\\\");\\nvar log = createLogger({\\n name: \\\"daemon\\\",\\n destination: LOG_PATH,\\n fallbackLevel: \\\"info\\\",\\n // Synchronous writes so error/shutdown records flush before process.exit().\\n sync: true\\n});\\nvar manager = new BrowserManager(BROWSERS_DIR);\\nvar sessions = new SessionManager(manager, log);\\nvar startedAt = Date.now();\\nvar withBrowserLock = createKeyedLock();\\nvar withInstallLock = createMutex();\\nvar clients = /* @__PURE__ */ new Set();\\nvar server = null;\\nvar shuttingDown = null;\\nfunction formatError(error) {\\n if (error instanceof Error) {\\n if (error.name === \\\"ScriptTimeoutError\\\") {\\n return error.message;\\n }\\n return error.stack ?? error.message;\\n }\\n return String(error);\\n}\\nasync function writeMessage(socket, message) {\\n if (socket.destroyed) {\\n return;\\n }\\n await new Promise((resolve, reject) => {\\n const payload = serialize(message);\\n socket.write(payload, (error) => {\\n if (error) {\\n reject(error);\\n return;\\n }\\n resolve();\\n });\\n });\\n}\\nasync function unlinkIfExists(filePath) {\\n try {\\n await unlink(filePath);\\n } catch (error) {\\n if (error.code !== \\\"ENOENT\\\") {\\n throw error;\\n }\\n }\\n}\\nasync function closeServerInstance(serverToClose) {\\n await new Promise((resolve) => {\\n serverToClose.close(() => {\\n resolve();\\n });\\n });\\n}\\nasync function closeClientSocket(socket) {\\n if (socket.destroyed) {\\n return;\\n }\\n await new Promise((resolve) => {\\n const timeout = setTimeout(() => {\\n if (!socket.destroyed) {\\n socket.destroy();\\n }\\n }, SOCKET_CLOSE_TIMEOUT_MS);\\n timeout.unref();\\n const finish = () => {\\n clearTimeout(timeout);\\n resolve();\\n };\\n socket.once(\\\"close\\\", finish);\\n socket.once(\\\"error\\\", finish);\\n socket.end();\\n });\\n}\\nfunction createMessageQueue(socket) {\\n let queue = Promise.resolve();\\n return {\\n push(message) {\\n queue = queue.then(() => writeMessage(socket, message)).catch(() => void 0);\\n return queue;\\n },\\n async drain() {\\n await queue;\\n }\\n };\\n}\\nasync function captureStepScreenshot(browser, sessionId, step) {\\n try {\\n const shotPath = path6.join(\\n getSessionDir(sessionId),\\n \\\"screenshots\\\",\\n `${sessionStepSlug(step)}.png`\\n );\\n await manager.screenshotActivePage(browser, shotPath);\\n } catch (error) {\\n log.debug({ err: error, sessionId, step }, \\\"step screenshot failed\\\");\\n }\\n}\\nasync function resolveExecuteBrowser(socket, request, targetSession) {\\n if (targetSession) {\\n if (!sessions.has(targetSession)) {\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"error\\\",\\n message: `No active session \\\"${targetSession}\\\". Start one with \\\\`canary session start\\\\`.`\\n });\\n return false;\\n }\\n if (request.connect) {\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"error\\\",\\n message: `Session \\\"${targetSession}\\\" manages its own browser; \\\\`connect\\\\` is not allowed for a session run.`\\n });\\n return false;\\n }\\n await manager.ensureBrowser(request.browser, {\\n headless: request.headless,\\n ignoreHTTPSErrors: request.ignoreHTTPSErrors\\n });\\n return true;\\n }\\n if (request.connect === \\\"auto\\\") {\\n await manager.autoConnect(request.browser);\\n } else if (request.connect) {\\n await manager.connectBrowser(request.browser, request.connect);\\n } else {\\n await manager.ensureBrowser(request.browser, {\\n headless: request.headless,\\n ignoreHTTPSErrors: request.ignoreHTTPSErrors\\n });\\n }\\n return true;\\n}\\nasync function handleExecute(socket, request) {\\n const targetSession = sessions.sessionIdForBrowser(request.browser);\\n if (targetSession && !sessions.has(targetSession)) {\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"error\\\",\\n message: `No active session \\\"${targetSession}\\\". Start one with \\\\`canary session start\\\\`.`\\n });\\n return;\\n }\\n await withBrowserLock(request.browser, async () => {\\n if (!await resolveExecuteBrowser(socket, request, targetSession)) {\\n return;\\n }\\n const output = createMessageQueue(socket);\\n const timeoutMs = request.timeoutMs ?? DEFAULT_SCRIPT_TIMEOUT_MS;\\n if (targetSession && request.step) {\\n await sessions.beginStep(targetSession, request.step);\\n }\\n try {\\n if (request.initScripts && request.initScripts.length > 0) {\\n await manager.applyInitScripts(request.browser, request.initScripts);\\n }\\n await runScript(\\n request.script,\\n manager,\\n request.browser,\\n {\\n onStdout: (data) => {\\n void output.push({\\n id: request.id,\\n type: \\\"stdout\\\",\\n data\\n });\\n },\\n onStderr: (data) => {\\n void output.push({\\n id: request.id,\\n type: \\\"stderr\\\",\\n data\\n });\\n }\\n },\\n {\\n timeout: timeoutMs\\n }\\n );\\n await output.drain();\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"complete\\\",\\n success: true\\n });\\n } catch (error) {\\n await output.drain().catch(() => void 0);\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"error\\\",\\n message: formatError(error)\\n });\\n } finally {\\n if (targetSession && request.step) {\\n await captureStepScreenshot(\\n request.browser,\\n targetSession,\\n request.step\\n );\\n await sessions.endStep(targetSession);\\n }\\n if (targetSession) {\\n sessions.noteRun(targetSession);\\n }\\n }\\n });\\n}\\nasync function handleInstall(socket, request) {\\n await withInstallLock(async () => {\\n const output = createMessageQueue(socket);\\n try {\\n await mkdir4(BASE_DIR, { recursive: true });\\n await writeFile2(\\n path6.join(BASE_DIR, \\\"package.json\\\"),\\n EMBEDDED_PACKAGE_JSON\\n );\\n const npmProgram = process.platform === \\\"win32\\\" ? \\\"npm.cmd\\\" : \\\"npm\\\";\\n await runInstallCommand(\\n output,\\n request.id,\\n npmProgram,\\n [\\\"install\\\"],\\n BASE_DIR,\\n \\\"npm install\\\"\\n );\\n await runInstallCommand(\\n output,\\n request.id,\\n npmProgram,\\n [\\\"exec\\\", \\\"--\\\", \\\"playwright\\\", \\\"install\\\", \\\"chromium\\\"],\\n BASE_DIR,\\n \\\"Playwright install\\\"\\n );\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"complete\\\",\\n success: true\\n });\\n } catch (error) {\\n await output.drain().catch(() => void 0);\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"error\\\",\\n message: formatError(error)\\n });\\n }\\n });\\n}\\nasync function runInstallCommand(output, requestId, program, args, cwd, label) {\\n const child = spawn(program, args, {\\n cwd,\\n env: process.env,\\n stdio: [\\\"ignore\\\", \\\"pipe\\\", \\\"pipe\\\"]\\n });\\n child.stdout?.setEncoding(\\\"utf8\\\");\\n child.stdout?.on(\\\"data\\\", (data) => {\\n void output.push({\\n id: requestId,\\n type: \\\"stdout\\\",\\n data\\n });\\n });\\n child.stderr?.setEncoding(\\\"utf8\\\");\\n child.stderr?.on(\\\"data\\\", (data) => {\\n void output.push({\\n id: requestId,\\n type: \\\"stderr\\\",\\n data\\n });\\n });\\n const result = await new Promise((resolve, reject) => {\\n child.once(\\\"error\\\", reject);\\n child.once(\\\"close\\\", (code, signal) => {\\n resolve({ code, signal });\\n });\\n });\\n await output.drain();\\n if (result.code === 0) {\\n return;\\n }\\n const reason = result.signal === null ? `${label} failed with exit code ${result.code ?? \\\"unknown\\\"}` : `${label} terminated by signal ${result.signal}`;\\n throw new Error(reason);\\n}\\nasync function handleRequest(socket, line) {\\n const parsed = parseRequest(line);\\n if (!parsed.success) {\\n await writeMessage(socket, {\\n id: parsed.id ?? \\\"unknown\\\",\\n type: \\\"error\\\",\\n message: parsed.error\\n });\\n return;\\n }\\n const { request } = parsed;\\n log.debug({ id: request.id, type: request.type }, \\\"handling request\\\");\\n if (shuttingDown && request.type !== \\\"stop\\\") {\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"error\\\",\\n message: \\\"Daemon is shutting down\\\"\\n });\\n return;\\n }\\n switch (request.type) {\\n case \\\"execute\\\":\\n await handleExecute(socket, request);\\n return;\\n case \\\"browsers\\\":\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"result\\\",\\n data: manager.listBrowsers()\\n });\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"complete\\\",\\n success: true\\n });\\n return;\\n case \\\"browser-stop\\\":\\n if (sessions.isSessionBrowser(request.browser)) {\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"error\\\",\\n message: `\\\"${request.browser}\\\" is a session browser; tear it down with \\\\`canary session end\\\\` or \\\\`canary session abort\\\\`.`\\n });\\n return;\\n }\\n await manager.stopBrowser(request.browser);\\n log.info({ browser: request.browser }, \\\"browser stopped\\\");\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"result\\\",\\n data: { browser: request.browser, stopped: true }\\n });\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"complete\\\",\\n success: true\\n });\\n return;\\n case \\\"status\\\":\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"result\\\",\\n data: {\\n pid: process.pid,\\n uptimeMs: Date.now() - startedAt,\\n browserCount: manager.browserCount(),\\n browsers: manager.listBrowsers(),\\n socketPath: SOCKET_PATH\\n }\\n });\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"complete\\\",\\n success: true\\n });\\n return;\\n case \\\"install\\\":\\n await handleInstall(socket, request);\\n return;\\n case \\\"stop\\\":\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"result\\\",\\n data: { stopping: true }\\n });\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"complete\\\",\\n success: true\\n });\\n void shutdown(0);\\n return;\\n case \\\"session-start\\\":\\n await withBrowserLock(sessionBrowserName(request.sessionId), async () => {\\n try {\\n const session = await sessions.start(request);\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"result\\\",\\n data: { session }\\n });\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"complete\\\",\\n success: true\\n });\\n } catch (error) {\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"error\\\",\\n message: formatError(error)\\n });\\n }\\n });\\n return;\\n case \\\"session-end\\\":\\n await withBrowserLock(sessionBrowserName(request.sessionId), async () => {\\n try {\\n const result = await sessions.end(request.sessionId, request.reason);\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"result\\\",\\n data: result\\n });\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"complete\\\",\\n success: true\\n });\\n } catch (error) {\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"error\\\",\\n message: formatError(error)\\n });\\n }\\n });\\n return;\\n case \\\"session-status\\\": {\\n const session = sessions.status(request.sessionId);\\n if (session) {\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"result\\\",\\n data: { session }\\n });\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"complete\\\",\\n success: true\\n });\\n } else {\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"error\\\",\\n message: `Session \\\"${request.sessionId}\\\" not found`\\n });\\n }\\n return;\\n }\\n case \\\"session-list\\\":\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"result\\\",\\n data: { sessions: sessions.list() }\\n });\\n await writeMessage(socket, {\\n id: request.id,\\n type: \\\"complete\\\",\\n success: true\\n });\\n return;\\n default:\\n return;\\n }\\n}\\nfunction shutdown(exitCode = 0) {\\n if (shuttingDown) {\\n return shuttingDown;\\n }\\n shuttingDown = (async () => {\\n log.info({ exitCode }, \\\"daemon shutting down\\\");\\n const serverToClose = server;\\n server = null;\\n const serverClosed = serverToClose ? closeServerInstance(serverToClose) : Promise.resolve();\\n await sessions.endAll();\\n await manager.stopAll();\\n await Promise.allSettled(\\n Array.from(clients, (socket) => closeClientSocket(socket))\\n );\\n await serverClosed;\\n const cleanup = [unlinkIfExists(PID_PATH)];\\n if (requiresDaemonEndpointCleanup()) {\\n cleanup.push(unlinkIfExists(SOCKET_PATH));\\n }\\n await Promise.allSettled(cleanup);\\n clients.clear();\\n process.exit(exitCode);\\n })();\\n return shuttingDown;\\n}\\nasync function start() {\\n await mkdir4(BASE_DIR, { recursive: true });\\n await ensureCanaryTempDir();\\n if (requiresDaemonEndpointCleanup()) {\\n await unlinkIfExists(SOCKET_PATH);\\n }\\n await writeFile2(PID_PATH, `${process.pid}\\n`);\\n server = net.createServer((socket) => {\\n if (shuttingDown) {\\n socket.end();\\n return;\\n }\\n clients.add(socket);\\n socket.setEncoding(\\\"utf8\\\");\\n let buffer = \\\"\\\";\\n let queue = Promise.resolve();\\n socket.on(\\\"data\\\", (chunk) => {\\n buffer += chunk;\\n const lines = buffer.split(\\\"\\\\n\\\");\\n buffer = lines.pop() ?? \\\"\\\";\\n for (const rawLine of lines) {\\n const line = rawLine.trim();\\n if (!line) {\\n continue;\\n }\\n queue = queue.then(() => handleRequest(socket, line)).catch(async (error) => {\\n log.error({ err: error }, \\\"request handling error\\\");\\n if (!socket.destroyed) {\\n await writeMessage(socket, {\\n id: \\\"unknown\\\",\\n type: \\\"error\\\",\\n message: formatError(error)\\n });\\n }\\n });\\n }\\n });\\n socket.on(\\\"close\\\", () => {\\n clients.delete(socket);\\n });\\n socket.on(\\\"error\\\", () => {\\n clients.delete(socket);\\n });\\n });\\n server.on(\\\"error\\\", (error) => {\\n log.error({ err: error }, \\\"daemon server error\\\");\\n void shutdown(1);\\n });\\n await new Promise((resolve, reject) => {\\n server?.once(\\\"error\\\", reject);\\n server?.listen(SOCKET_PATH, () => {\\n server?.off(\\\"error\\\", reject);\\n resolve();\\n });\\n });\\n log.info({ socket: SOCKET_PATH, pid: process.pid }, \\\"daemon ready\\\");\\n}\\nfunction registerShutdownHandlers() {\\n const handleSignal = () => {\\n void shutdown(0);\\n };\\n const handleFatalError = (error) => {\\n log.error({ err: error }, \\\"fatal daemon error\\\");\\n void shutdown(1);\\n };\\n process.on(\\\"SIGINT\\\", handleSignal);\\n process.on(\\\"SIGTERM\\\", handleSignal);\\n process.on(\\\"SIGHUP\\\", handleSignal);\\n process.on(\\\"uncaughtException\\\", handleFatalError);\\n process.on(\\\"unhandledRejection\\\", handleFatalError);\\n}\\nregisterShutdownHandlers();\\nstart().catch((error) => {\\n log.error({ err: error }, \\\"failed to start daemon\\\");\\n void shutdown(1);\\n});\\n\";\nexport const SANDBOX_CLIENT: string = \"\\\"use strict\\\";\\nvar __PlaywrightClient = (() => {\\n var __defProp = Object.defineProperty;\\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\\n var __getOwnPropNames = Object.getOwnPropertyNames;\\n var __hasOwnProp = Object.prototype.hasOwnProperty;\\n var __export = (target, all) => {\\n for (var name in all)\\n __defProp(target, name, { get: all[name], enumerable: true });\\n };\\n var __copyProps = (to, from, except, desc) => {\\n if (from && typeof from === \\\"object\\\" || typeof from === \\\"function\\\") {\\n for (let key of __getOwnPropNames(from))\\n if (!__hasOwnProp.call(to, key) && key !== except)\\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\\n }\\n return to;\\n };\\n var __toCommonJS = (mod) => __copyProps(__defProp({}, \\\"__esModule\\\", { value: true }), mod);\\n\\n // src/sandbox/forked-client/bundle-entry.ts\\n var bundle_entry_exports = {};\\n __export(bundle_entry_exports, {\\n Connection: () => Connection,\\n quickjsPlatform: () => quickjsPlatform\\n });\\n\\n // src/sandbox/forked-client/src/client/eventEmitter.ts\\n var EventEmitter = class {\\n _events = void 0;\\n _eventsCount = 0;\\n _maxListeners = void 0;\\n _pendingHandlers = /* @__PURE__ */ new Map();\\n _rejectionHandler;\\n _platform;\\n constructor(platform) {\\n this._platform = platform;\\n if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) {\\n this._events = /* @__PURE__ */ Object.create(null);\\n this._eventsCount = 0;\\n }\\n this._maxListeners = this._maxListeners || void 0;\\n this.on = this.addListener;\\n this.off = this.removeListener;\\n }\\n setMaxListeners(n) {\\n if (typeof n !== \\\"number\\\" || n < 0 || Number.isNaN(n))\\n throw new RangeError(\\n 'The value of \\\"n\\\" is out of range. It must be a non-negative number. Received ' + n + \\\".\\\"\\n );\\n this._maxListeners = n;\\n return this;\\n }\\n getMaxListeners() {\\n return this._maxListeners === void 0 ? this._platform.defaultMaxListeners() : this._maxListeners;\\n }\\n emit(type, ...args) {\\n const events = this._events;\\n if (events === void 0) return false;\\n const handler = events?.[type];\\n if (handler === void 0) return false;\\n if (typeof handler === \\\"function\\\") {\\n this._callHandler(type, handler, args);\\n } else {\\n const len = handler.length;\\n const listeners = handler.slice();\\n for (let i = 0; i < len; ++i) this._callHandler(type, listeners[i], args);\\n }\\n return true;\\n }\\n _callHandler(type, handler, args) {\\n const promise = Reflect.apply(handler, this, args);\\n if (!(promise instanceof Promise)) return;\\n let set = this._pendingHandlers.get(type);\\n if (!set) {\\n set = /* @__PURE__ */ new Set();\\n this._pendingHandlers.set(type, set);\\n }\\n set.add(promise);\\n promise.catch((e) => {\\n if (this._rejectionHandler) this._rejectionHandler(e);\\n else throw e;\\n }).finally(() => set.delete(promise));\\n }\\n addListener(type, listener) {\\n return this._addListener(type, listener, false);\\n }\\n on(type, listener) {\\n return this._addListener(type, listener, false);\\n }\\n _addListener(type, listener, prepend) {\\n checkListener(listener);\\n let events = this._events;\\n let existing;\\n if (events === void 0) {\\n events = this._events = /* @__PURE__ */ Object.create(null);\\n this._eventsCount = 0;\\n } else {\\n if (events.newListener !== void 0) {\\n this.emit(\\\"newListener\\\", type, unwrapListener(listener));\\n events = this._events;\\n }\\n existing = events[type];\\n }\\n if (existing === void 0) {\\n existing = events[type] = listener;\\n ++this._eventsCount;\\n } else {\\n if (typeof existing === \\\"function\\\") {\\n existing = events[type] = prepend ? [listener, existing] : [existing, listener];\\n } else if (prepend) {\\n existing.unshift(listener);\\n } else {\\n existing.push(listener);\\n }\\n const m = this.getMaxListeners();\\n if (m > 0 && existing.length > m && !existing.warned) {\\n existing.warned = true;\\n const w = new Error(\\n \\\"Possible EventEmitter memory leak detected. \\\" + existing.length + \\\" \\\" + String(type) + \\\" listeners added. Use emitter.setMaxListeners() to increase limit\\\"\\n );\\n w.name = \\\"MaxListenersExceededWarning\\\";\\n w.emitter = this;\\n w.type = type;\\n w.count = existing.length;\\n if (!this._platform.isUnderTest()) {\\n console.warn(w);\\n }\\n }\\n }\\n return this;\\n }\\n prependListener(type, listener) {\\n return this._addListener(type, listener, true);\\n }\\n once(type, listener) {\\n checkListener(listener);\\n this.on(type, new OnceWrapper(this, type, listener).wrapperFunction);\\n return this;\\n }\\n prependOnceListener(type, listener) {\\n checkListener(listener);\\n this.prependListener(type, new OnceWrapper(this, type, listener).wrapperFunction);\\n return this;\\n }\\n removeListener(type, listener) {\\n checkListener(listener);\\n const events = this._events;\\n if (events === void 0) return this;\\n const list = events[type];\\n if (list === void 0) return this;\\n if (list === listener || list.listener === listener) {\\n if (--this._eventsCount === 0) {\\n this._events = /* @__PURE__ */ Object.create(null);\\n } else {\\n delete events[type];\\n if (events.removeListener)\\n this.emit(\\\"removeListener\\\", type, list.listener ?? listener);\\n }\\n } else if (typeof list !== \\\"function\\\") {\\n let position = -1;\\n let originalListener;\\n for (let i = list.length - 1; i >= 0; i--) {\\n if (list[i] === listener || wrappedListener(list[i]) === listener) {\\n originalListener = wrappedListener(list[i]);\\n position = i;\\n break;\\n }\\n }\\n if (position < 0) return this;\\n if (position === 0) list.shift();\\n else list.splice(position, 1);\\n if (list.length === 1) events[type] = list[0];\\n if (events.removeListener !== void 0)\\n this.emit(\\\"removeListener\\\", type, originalListener || listener);\\n }\\n return this;\\n }\\n off(type, listener) {\\n return this.removeListener(type, listener);\\n }\\n removeAllListeners(type, options) {\\n this._removeAllListeners(type);\\n if (!options) return this;\\n if (options.behavior === \\\"wait\\\") {\\n const errors = [];\\n this._rejectionHandler = (error) => errors.push(error);\\n return this._waitFor(type).then(() => {\\n if (errors.length) throw errors[0];\\n });\\n }\\n if (options.behavior === \\\"ignoreErrors\\\") this._rejectionHandler = () => {\\n };\\n return Promise.resolve();\\n }\\n _removeAllListeners(type) {\\n const events = this._events;\\n if (!events) return;\\n if (!events.removeListener) {\\n if (type === void 0) {\\n this._events = /* @__PURE__ */ Object.create(null);\\n this._eventsCount = 0;\\n } else if (events[type] !== void 0) {\\n if (--this._eventsCount === 0) this._events = /* @__PURE__ */ Object.create(null);\\n else delete events[type];\\n }\\n return;\\n }\\n if (type === void 0) {\\n const keys = Object.keys(events);\\n let key;\\n for (let i = 0; i < keys.length; ++i) {\\n key = keys[i];\\n if (key === \\\"removeListener\\\") continue;\\n this._removeAllListeners(key);\\n }\\n this._removeAllListeners(\\\"removeListener\\\");\\n this._events = /* @__PURE__ */ Object.create(null);\\n this._eventsCount = 0;\\n return;\\n }\\n const listeners = events[type];\\n if (typeof listeners === \\\"function\\\") {\\n this.removeListener(type, listeners);\\n } else if (listeners !== void 0) {\\n for (let i = listeners.length - 1; i >= 0; i--) this.removeListener(type, listeners[i]);\\n }\\n }\\n listeners(type) {\\n return this._listeners(this, type, true);\\n }\\n rawListeners(type) {\\n return this._listeners(this, type, false);\\n }\\n listenerCount(type) {\\n const events = this._events;\\n if (events !== void 0) {\\n const listener = events[type];\\n if (typeof listener === \\\"function\\\") return 1;\\n if (listener !== void 0) return listener.length;\\n }\\n return 0;\\n }\\n eventNames() {\\n return this._eventsCount > 0 && this._events ? Reflect.ownKeys(this._events) : [];\\n }\\n async _waitFor(type) {\\n let promises = [];\\n if (type) {\\n promises = [...this._pendingHandlers.get(type) || []];\\n } else {\\n promises = [];\\n for (const [, pending] of this._pendingHandlers) promises.push(...pending);\\n }\\n await Promise.all(promises);\\n }\\n _listeners(target, type, unwrap) {\\n const events = target._events;\\n if (events === void 0) return [];\\n const listener = events[type];\\n if (listener === void 0) return [];\\n if (typeof listener === \\\"function\\\") return unwrap ? [unwrapListener(listener)] : [listener];\\n return unwrap ? unwrapListeners(listener) : listener.slice();\\n }\\n };\\n function checkListener(listener) {\\n if (typeof listener !== \\\"function\\\")\\n throw new TypeError(\\n 'The \\\"listener\\\" argument must be of type Function. Received type ' + typeof listener\\n );\\n }\\n var OnceWrapper = class {\\n _fired = false;\\n wrapperFunction;\\n _listener;\\n _eventEmitter;\\n _eventType;\\n constructor(eventEmitter, eventType, listener) {\\n this._eventEmitter = eventEmitter;\\n this._eventType = eventType;\\n this._listener = listener;\\n this.wrapperFunction = this._handle.bind(this);\\n this.wrapperFunction.listener = listener;\\n }\\n _handle(...args) {\\n if (this._fired) return;\\n this._fired = true;\\n this._eventEmitter.removeListener(this._eventType, this.wrapperFunction);\\n return this._listener.apply(this._eventEmitter, args);\\n }\\n };\\n function unwrapListener(l) {\\n return wrappedListener(l) ?? l;\\n }\\n function unwrapListeners(arr) {\\n return arr.map((l) => wrappedListener(l) ?? l);\\n }\\n function wrappedListener(l) {\\n return l.listener;\\n }\\n\\n // src/sandbox/forked-client/src/protocol/validatorPrimitives.ts\\n var ValidationError = class extends Error {\\n };\\n var scheme = {};\\n function findValidator(type, method, kind) {\\n const validator = maybeFindValidator(type, method, kind);\\n if (!validator) throw new ValidationError(`Unknown scheme for ${kind}: ${type}.${method}`);\\n return validator;\\n }\\n function maybeFindValidator(type, method, kind) {\\n const schemeName = type + (kind === \\\"Initializer\\\" ? \\\"\\\" : method[0].toUpperCase() + method.substring(1)) + kind;\\n return scheme[schemeName];\\n }\\n var tFloat = (arg, path, context) => {\\n if (arg instanceof Number) return arg.valueOf();\\n if (typeof arg === \\\"number\\\") return arg;\\n throw new ValidationError(`${path}: expected float, got ${typeof arg}`);\\n };\\n var tInt = (arg, path, context) => {\\n let value;\\n if (arg instanceof Number) value = arg.valueOf();\\n else if (typeof arg === \\\"number\\\") value = arg;\\n else throw new ValidationError(`${path}: expected integer, got ${typeof arg}`);\\n if (!Number.isInteger(value))\\n throw new ValidationError(`${path}: expected integer, got float ${value}`);\\n return value;\\n };\\n var tBoolean = (arg, path, context) => {\\n if (arg instanceof Boolean) return arg.valueOf();\\n if (typeof arg === \\\"boolean\\\") return arg;\\n throw new ValidationError(`${path}: expected boolean, got ${typeof arg}`);\\n };\\n var tString = (arg, path, context) => {\\n if (arg instanceof String) return arg.valueOf();\\n if (typeof arg === \\\"string\\\") return arg;\\n throw new ValidationError(`${path}: expected string, got ${typeof arg}`);\\n };\\n var tBinary = (arg, path, context) => {\\n if (context.binary === \\\"fromBase64\\\") {\\n if (arg instanceof String) return Buffer.from(arg.valueOf(), \\\"base64\\\");\\n if (typeof arg === \\\"string\\\") return Buffer.from(arg, \\\"base64\\\");\\n throw new ValidationError(`${path}: expected base64-encoded buffer, got ${typeof arg}`);\\n }\\n if (context.binary === \\\"toBase64\\\") {\\n if (!(arg instanceof Buffer))\\n throw new ValidationError(`${path}: expected Buffer, got ${typeof arg}`);\\n return arg.toString(\\\"base64\\\");\\n }\\n if (context.binary === \\\"buffer\\\") {\\n if (!(arg instanceof Buffer) && !(arg instanceof Object))\\n throw new ValidationError(`${path}: expected Buffer, got ${typeof arg}`);\\n return arg;\\n }\\n throw new ValidationError(`Unsupported binary behavior \\\"${context.binary}\\\"`);\\n };\\n var tAny = (arg, path, context) => {\\n return arg;\\n };\\n var tOptional = (v) => {\\n return (arg, path, context) => {\\n if (Object.is(arg, void 0)) return arg;\\n return v(arg, path, context);\\n };\\n };\\n var tArray = (v) => {\\n return (arg, path, context) => {\\n if (!Array.isArray(arg))\\n throw new ValidationError(`${path}: expected array, got ${typeof arg}`);\\n return arg.map((x, index) => v(x, path + \\\"[\\\" + index + \\\"]\\\", context));\\n };\\n };\\n var tObject = (s) => {\\n return (arg, path, context) => {\\n if (Object.is(arg, null)) throw new ValidationError(`${path}: expected object, got null`);\\n if (typeof arg !== \\\"object\\\")\\n throw new ValidationError(`${path}: expected object, got ${typeof arg}`);\\n const result = {};\\n for (const [key, v] of Object.entries(s)) {\\n const value = v(arg[key], path ? path + \\\".\\\" + key : key, context);\\n if (!Object.is(value, void 0)) result[key] = value;\\n }\\n if (context.isUnderTest()) {\\n for (const [key, value] of Object.entries(arg)) {\\n if (key.startsWith(\\\"__testHook\\\")) result[key] = value;\\n }\\n }\\n return result;\\n };\\n };\\n var tEnum = (e) => {\\n return (arg, path, context) => {\\n if (!e.includes(arg)) throw new ValidationError(`${path}: expected one of (${e.join(\\\"|\\\")})`);\\n return arg;\\n };\\n };\\n var tChannel = (names) => {\\n return (arg, path, context) => {\\n return context.tChannelImpl(names, arg, path, context);\\n };\\n };\\n var tType = (name) => {\\n return (arg, path, context) => {\\n const v = scheme[name];\\n if (!v) throw new ValidationError(path + ': unknown type \\\"' + name + '\\\"');\\n return v(arg, path, context);\\n };\\n };\\n\\n // src/sandbox/forked-client/src/protocol/validator.ts\\n scheme.StackFrame = tObject({\\n file: tString,\\n line: tInt,\\n column: tInt,\\n function: tOptional(tString)\\n });\\n scheme.Metadata = tObject({\\n location: tOptional(\\n tObject({\\n file: tString,\\n line: tOptional(tInt),\\n column: tOptional(tInt)\\n })\\n ),\\n title: tOptional(tString),\\n internal: tOptional(tBoolean),\\n stepId: tOptional(tString)\\n });\\n scheme.ClientSideCallMetadata = tObject({\\n id: tInt,\\n stack: tOptional(tArray(tType(\\\"StackFrame\\\")))\\n });\\n scheme.Point = tObject({\\n x: tFloat,\\n y: tFloat\\n });\\n scheme.Rect = tObject({\\n x: tFloat,\\n y: tFloat,\\n width: tFloat,\\n height: tFloat\\n });\\n scheme.SerializedValue = tObject({\\n n: tOptional(tFloat),\\n b: tOptional(tBoolean),\\n s: tOptional(tString),\\n v: tOptional(tEnum([\\\"null\\\", \\\"undefined\\\", \\\"NaN\\\", \\\"Infinity\\\", \\\"-Infinity\\\", \\\"-0\\\"])),\\n d: tOptional(tString),\\n u: tOptional(tString),\\n bi: tOptional(tString),\\n ta: tOptional(\\n tObject({\\n b: tBinary,\\n k: tEnum([\\\"i8\\\", \\\"ui8\\\", \\\"ui8c\\\", \\\"i16\\\", \\\"ui16\\\", \\\"i32\\\", \\\"ui32\\\", \\\"f32\\\", \\\"f64\\\", \\\"bi64\\\", \\\"bui64\\\"])\\n })\\n ),\\n e: tOptional(\\n tObject({\\n m: tString,\\n n: tString,\\n s: tString\\n })\\n ),\\n r: tOptional(\\n tObject({\\n p: tString,\\n f: tString\\n })\\n ),\\n a: tOptional(tArray(tType(\\\"SerializedValue\\\"))),\\n o: tOptional(\\n tArray(\\n tObject({\\n k: tString,\\n v: tType(\\\"SerializedValue\\\")\\n })\\n )\\n ),\\n h: tOptional(tInt),\\n id: tOptional(tInt),\\n ref: tOptional(tInt)\\n });\\n scheme.SerializedArgument = tObject({\\n value: tType(\\\"SerializedValue\\\"),\\n handles: tArray(tChannel(\\\"*\\\"))\\n });\\n scheme.ExpectedTextValue = tObject({\\n string: tOptional(tString),\\n regexSource: tOptional(tString),\\n regexFlags: tOptional(tString),\\n matchSubstring: tOptional(tBoolean),\\n ignoreCase: tOptional(tBoolean),\\n normalizeWhiteSpace: tOptional(tBoolean)\\n });\\n scheme.SelectorEngine = tObject({\\n name: tString,\\n source: tString,\\n contentScript: tOptional(tBoolean)\\n });\\n scheme.URLPattern = tObject({\\n hash: tString,\\n hostname: tString,\\n password: tString,\\n pathname: tString,\\n port: tString,\\n protocol: tString,\\n search: tString,\\n username: tString\\n });\\n scheme.SetNetworkCookie = tObject({\\n name: tString,\\n value: tString,\\n url: tOptional(tString),\\n domain: tOptional(tString),\\n path: tOptional(tString),\\n expires: tOptional(tFloat),\\n httpOnly: tOptional(tBoolean),\\n secure: tOptional(tBoolean),\\n sameSite: tOptional(tEnum([\\\"Strict\\\", \\\"Lax\\\", \\\"None\\\"])),\\n partitionKey: tOptional(tString),\\n _crHasCrossSiteAncestor: tOptional(tBoolean)\\n });\\n scheme.NetworkCookie = tObject({\\n name: tString,\\n value: tString,\\n domain: tString,\\n path: tString,\\n expires: tFloat,\\n httpOnly: tBoolean,\\n secure: tBoolean,\\n sameSite: tEnum([\\\"Strict\\\", \\\"Lax\\\", \\\"None\\\"]),\\n partitionKey: tOptional(tString),\\n _crHasCrossSiteAncestor: tOptional(tBoolean)\\n });\\n scheme.NameValue = tObject({\\n name: tString,\\n value: tString\\n });\\n scheme.IndexedDBDatabase = tObject({\\n name: tString,\\n version: tInt,\\n stores: tArray(\\n tObject({\\n name: tString,\\n autoIncrement: tBoolean,\\n keyPath: tOptional(tString),\\n keyPathArray: tOptional(tArray(tString)),\\n records: tArray(\\n tObject({\\n key: tOptional(tAny),\\n keyEncoded: tOptional(tAny),\\n value: tOptional(tAny),\\n valueEncoded: tOptional(tAny)\\n })\\n ),\\n indexes: tArray(\\n tObject({\\n name: tString,\\n keyPath: tOptional(tString),\\n keyPathArray: tOptional(tArray(tString)),\\n multiEntry: tBoolean,\\n unique: tBoolean\\n })\\n )\\n })\\n )\\n });\\n scheme.SetOriginStorage = tObject({\\n origin: tString,\\n localStorage: tArray(tType(\\\"NameValue\\\")),\\n indexedDB: tOptional(tArray(tType(\\\"IndexedDBDatabase\\\")))\\n });\\n scheme.OriginStorage = tObject({\\n origin: tString,\\n localStorage: tArray(tType(\\\"NameValue\\\")),\\n indexedDB: tOptional(tArray(tType(\\\"IndexedDBDatabase\\\")))\\n });\\n scheme.SerializedError = tObject({\\n error: tOptional(\\n tObject({\\n message: tString,\\n name: tString,\\n stack: tOptional(tString)\\n })\\n ),\\n value: tOptional(tType(\\\"SerializedValue\\\"))\\n });\\n scheme.RecordHarOptions = tObject({\\n zip: tOptional(tBoolean),\\n content: tOptional(tEnum([\\\"embed\\\", \\\"attach\\\", \\\"omit\\\"])),\\n mode: tOptional(tEnum([\\\"full\\\", \\\"minimal\\\"])),\\n urlGlob: tOptional(tString),\\n urlRegexSource: tOptional(tString),\\n urlRegexFlags: tOptional(tString)\\n });\\n scheme.FormField = tObject({\\n name: tString,\\n value: tOptional(tString),\\n file: tOptional(\\n tObject({\\n name: tString,\\n mimeType: tOptional(tString),\\n buffer: tBinary\\n })\\n )\\n });\\n scheme.SDKLanguage = tEnum([\\\"javascript\\\", \\\"python\\\", \\\"java\\\", \\\"csharp\\\"]);\\n scheme.APIRequestContextInitializer = tObject({\\n tracing: tChannel([\\\"Tracing\\\"])\\n });\\n scheme.APIRequestContextFetchParams = tObject({\\n url: tString,\\n encodedParams: tOptional(tString),\\n params: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n method: tOptional(tString),\\n headers: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n postData: tOptional(tBinary),\\n jsonData: tOptional(tString),\\n formData: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n multipartData: tOptional(tArray(tType(\\\"FormField\\\"))),\\n timeout: tFloat,\\n failOnStatusCode: tOptional(tBoolean),\\n ignoreHTTPSErrors: tOptional(tBoolean),\\n maxRedirects: tOptional(tInt),\\n maxRetries: tOptional(tInt)\\n });\\n scheme.APIRequestContextFetchResult = tObject({\\n response: tType(\\\"APIResponse\\\")\\n });\\n scheme.APIRequestContextFetchResponseBodyParams = tObject({\\n fetchUid: tString\\n });\\n scheme.APIRequestContextFetchResponseBodyResult = tObject({\\n binary: tOptional(tBinary)\\n });\\n scheme.APIRequestContextFetchLogParams = tObject({\\n fetchUid: tString\\n });\\n scheme.APIRequestContextFetchLogResult = tObject({\\n log: tArray(tString)\\n });\\n scheme.APIRequestContextStorageStateParams = tObject({\\n indexedDB: tOptional(tBoolean)\\n });\\n scheme.APIRequestContextStorageStateResult = tObject({\\n cookies: tArray(tType(\\\"NetworkCookie\\\")),\\n origins: tArray(tType(\\\"OriginStorage\\\"))\\n });\\n scheme.APIRequestContextDisposeAPIResponseParams = tObject({\\n fetchUid: tString\\n });\\n scheme.APIRequestContextDisposeAPIResponseResult = tOptional(tObject({}));\\n scheme.APIRequestContextDisposeParams = tObject({\\n reason: tOptional(tString)\\n });\\n scheme.APIRequestContextDisposeResult = tOptional(tObject({}));\\n scheme.APIResponse = tObject({\\n fetchUid: tString,\\n url: tString,\\n status: tInt,\\n statusText: tString,\\n headers: tArray(tType(\\\"NameValue\\\"))\\n });\\n scheme.LifecycleEvent = tEnum([\\\"load\\\", \\\"domcontentloaded\\\", \\\"networkidle\\\", \\\"commit\\\"]);\\n scheme.ConsoleMessagesFilter = tEnum([\\\"all\\\", \\\"sinceNavigation\\\"]);\\n scheme.LocalUtilsInitializer = tObject({\\n deviceDescriptors: tArray(\\n tObject({\\n name: tString,\\n descriptor: tObject({\\n userAgent: tString,\\n viewport: tObject({\\n width: tInt,\\n height: tInt\\n }),\\n screen: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n deviceScaleFactor: tFloat,\\n isMobile: tBoolean,\\n hasTouch: tBoolean,\\n defaultBrowserType: tEnum([\\\"chromium\\\", \\\"firefox\\\", \\\"webkit\\\"])\\n })\\n })\\n )\\n });\\n scheme.LocalUtilsZipParams = tObject({\\n zipFile: tString,\\n entries: tArray(tType(\\\"NameValue\\\")),\\n stacksId: tOptional(tString),\\n mode: tEnum([\\\"write\\\", \\\"append\\\"]),\\n includeSources: tBoolean,\\n additionalSources: tOptional(tArray(tString))\\n });\\n scheme.LocalUtilsZipResult = tOptional(tObject({}));\\n scheme.LocalUtilsHarOpenParams = tObject({\\n file: tString\\n });\\n scheme.LocalUtilsHarOpenResult = tObject({\\n harId: tOptional(tString),\\n error: tOptional(tString)\\n });\\n scheme.LocalUtilsHarLookupParams = tObject({\\n harId: tString,\\n url: tString,\\n method: tString,\\n headers: tArray(tType(\\\"NameValue\\\")),\\n postData: tOptional(tBinary),\\n isNavigationRequest: tBoolean\\n });\\n scheme.LocalUtilsHarLookupResult = tObject({\\n action: tEnum([\\\"error\\\", \\\"redirect\\\", \\\"fulfill\\\", \\\"noentry\\\"]),\\n message: tOptional(tString),\\n redirectURL: tOptional(tString),\\n status: tOptional(tInt),\\n headers: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n body: tOptional(tBinary)\\n });\\n scheme.LocalUtilsHarCloseParams = tObject({\\n harId: tString\\n });\\n scheme.LocalUtilsHarCloseResult = tOptional(tObject({}));\\n scheme.LocalUtilsHarUnzipParams = tObject({\\n zipFile: tString,\\n harFile: tString\\n });\\n scheme.LocalUtilsHarUnzipResult = tOptional(tObject({}));\\n scheme.LocalUtilsConnectParams = tObject({\\n endpoint: tString,\\n headers: tOptional(tAny),\\n exposeNetwork: tOptional(tString),\\n slowMo: tOptional(tFloat),\\n timeout: tFloat,\\n socksProxyRedirectPortForTest: tOptional(tInt)\\n });\\n scheme.LocalUtilsConnectResult = tObject({\\n pipe: tChannel([\\\"JsonPipe\\\"]),\\n headers: tArray(tType(\\\"NameValue\\\"))\\n });\\n scheme.LocalUtilsTracingStartedParams = tObject({\\n tracesDir: tOptional(tString),\\n traceName: tString,\\n live: tOptional(tBoolean)\\n });\\n scheme.LocalUtilsTracingStartedResult = tObject({\\n stacksId: tString\\n });\\n scheme.LocalUtilsAddStackToTracingNoReplyParams = tObject({\\n callData: tType(\\\"ClientSideCallMetadata\\\")\\n });\\n scheme.LocalUtilsAddStackToTracingNoReplyResult = tOptional(tObject({}));\\n scheme.LocalUtilsTraceDiscardedParams = tObject({\\n stacksId: tString\\n });\\n scheme.LocalUtilsTraceDiscardedResult = tOptional(tObject({}));\\n scheme.LocalUtilsGlobToRegexParams = tObject({\\n glob: tString,\\n baseURL: tOptional(tString),\\n webSocketUrl: tOptional(tBoolean)\\n });\\n scheme.LocalUtilsGlobToRegexResult = tObject({\\n regex: tString\\n });\\n scheme.RootInitializer = tOptional(tObject({}));\\n scheme.RootInitializeParams = tObject({\\n sdkLanguage: tType(\\\"SDKLanguage\\\")\\n });\\n scheme.RootInitializeResult = tObject({\\n playwright: tChannel([\\\"Playwright\\\"])\\n });\\n scheme.PlaywrightInitializer = tObject({\\n chromium: tChannel([\\\"BrowserType\\\"]),\\n firefox: tChannel([\\\"BrowserType\\\"]),\\n webkit: tChannel([\\\"BrowserType\\\"]),\\n android: tChannel([\\\"Android\\\"]),\\n electron: tChannel([\\\"Electron\\\"]),\\n utils: tOptional(tChannel([\\\"LocalUtils\\\"])),\\n preLaunchedBrowser: tOptional(tChannel([\\\"Browser\\\"])),\\n preConnectedAndroidDevice: tOptional(tChannel([\\\"AndroidDevice\\\"])),\\n socksSupport: tOptional(tChannel([\\\"SocksSupport\\\"]))\\n });\\n scheme.PlaywrightNewRequestParams = tObject({\\n baseURL: tOptional(tString),\\n userAgent: tOptional(tString),\\n ignoreHTTPSErrors: tOptional(tBoolean),\\n extraHTTPHeaders: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n failOnStatusCode: tOptional(tBoolean),\\n clientCertificates: tOptional(\\n tArray(\\n tObject({\\n origin: tString,\\n cert: tOptional(tBinary),\\n key: tOptional(tBinary),\\n passphrase: tOptional(tString),\\n pfx: tOptional(tBinary)\\n })\\n )\\n ),\\n maxRedirects: tOptional(tInt),\\n httpCredentials: tOptional(\\n tObject({\\n username: tString,\\n password: tString,\\n origin: tOptional(tString),\\n send: tOptional(tEnum([\\\"always\\\", \\\"unauthorized\\\"]))\\n })\\n ),\\n proxy: tOptional(\\n tObject({\\n server: tString,\\n bypass: tOptional(tString),\\n username: tOptional(tString),\\n password: tOptional(tString)\\n })\\n ),\\n storageState: tOptional(\\n tObject({\\n cookies: tOptional(tArray(tType(\\\"NetworkCookie\\\"))),\\n origins: tOptional(tArray(tType(\\\"SetOriginStorage\\\")))\\n })\\n ),\\n tracesDir: tOptional(tString)\\n });\\n scheme.PlaywrightNewRequestResult = tObject({\\n request: tChannel([\\\"APIRequestContext\\\"])\\n });\\n scheme.RecorderSource = tObject({\\n isRecorded: tBoolean,\\n id: tString,\\n label: tString,\\n text: tString,\\n language: tString,\\n highlight: tArray(\\n tObject({\\n line: tInt,\\n type: tString\\n })\\n ),\\n revealLine: tOptional(tInt),\\n group: tOptional(tString)\\n });\\n scheme.DebugControllerInitializer = tOptional(tObject({}));\\n scheme.DebugControllerInspectRequestedEvent = tObject({\\n selector: tString,\\n locator: tString,\\n ariaSnapshot: tString\\n });\\n scheme.DebugControllerSetModeRequestedEvent = tObject({\\n mode: tString\\n });\\n scheme.DebugControllerStateChangedEvent = tObject({\\n pageCount: tInt\\n });\\n scheme.DebugControllerSourceChangedEvent = tObject({\\n text: tString,\\n header: tOptional(tString),\\n footer: tOptional(tString),\\n actions: tOptional(tArray(tString))\\n });\\n scheme.DebugControllerPausedEvent = tObject({\\n paused: tBoolean\\n });\\n scheme.DebugControllerInitializeParams = tObject({\\n codegenId: tString,\\n sdkLanguage: tType(\\\"SDKLanguage\\\")\\n });\\n scheme.DebugControllerInitializeResult = tOptional(tObject({}));\\n scheme.DebugControllerSetReportStateChangedParams = tObject({\\n enabled: tBoolean\\n });\\n scheme.DebugControllerSetReportStateChangedResult = tOptional(tObject({}));\\n scheme.DebugControllerSetRecorderModeParams = tObject({\\n mode: tEnum([\\\"inspecting\\\", \\\"recording\\\", \\\"none\\\"]),\\n testIdAttributeName: tOptional(tString),\\n generateAutoExpect: tOptional(tBoolean)\\n });\\n scheme.DebugControllerSetRecorderModeResult = tOptional(tObject({}));\\n scheme.DebugControllerHighlightParams = tObject({\\n selector: tOptional(tString),\\n ariaTemplate: tOptional(tString)\\n });\\n scheme.DebugControllerHighlightResult = tOptional(tObject({}));\\n scheme.DebugControllerHideHighlightParams = tOptional(tObject({}));\\n scheme.DebugControllerHideHighlightResult = tOptional(tObject({}));\\n scheme.DebugControllerResumeParams = tOptional(tObject({}));\\n scheme.DebugControllerResumeResult = tOptional(tObject({}));\\n scheme.DebugControllerKillParams = tOptional(tObject({}));\\n scheme.DebugControllerKillResult = tOptional(tObject({}));\\n scheme.SocksSupportInitializer = tOptional(tObject({}));\\n scheme.SocksSupportSocksRequestedEvent = tObject({\\n uid: tString,\\n host: tString,\\n port: tInt\\n });\\n scheme.SocksSupportSocksDataEvent = tObject({\\n uid: tString,\\n data: tBinary\\n });\\n scheme.SocksSupportSocksClosedEvent = tObject({\\n uid: tString\\n });\\n scheme.SocksSupportSocksConnectedParams = tObject({\\n uid: tString,\\n host: tString,\\n port: tInt\\n });\\n scheme.SocksSupportSocksConnectedResult = tOptional(tObject({}));\\n scheme.SocksSupportSocksFailedParams = tObject({\\n uid: tString,\\n errorCode: tString\\n });\\n scheme.SocksSupportSocksFailedResult = tOptional(tObject({}));\\n scheme.SocksSupportSocksDataParams = tObject({\\n uid: tString,\\n data: tBinary\\n });\\n scheme.SocksSupportSocksDataResult = tOptional(tObject({}));\\n scheme.SocksSupportSocksErrorParams = tObject({\\n uid: tString,\\n error: tString\\n });\\n scheme.SocksSupportSocksErrorResult = tOptional(tObject({}));\\n scheme.SocksSupportSocksEndParams = tObject({\\n uid: tString\\n });\\n scheme.SocksSupportSocksEndResult = tOptional(tObject({}));\\n scheme.BrowserTypeInitializer = tObject({\\n executablePath: tString,\\n name: tString\\n });\\n scheme.BrowserTypeLaunchParams = tObject({\\n channel: tOptional(tString),\\n executablePath: tOptional(tString),\\n args: tOptional(tArray(tString)),\\n ignoreAllDefaultArgs: tOptional(tBoolean),\\n ignoreDefaultArgs: tOptional(tArray(tString)),\\n assistantMode: tOptional(tBoolean),\\n handleSIGINT: tOptional(tBoolean),\\n handleSIGTERM: tOptional(tBoolean),\\n handleSIGHUP: tOptional(tBoolean),\\n timeout: tFloat,\\n env: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n headless: tOptional(tBoolean),\\n proxy: tOptional(\\n tObject({\\n server: tString,\\n bypass: tOptional(tString),\\n username: tOptional(tString),\\n password: tOptional(tString)\\n })\\n ),\\n downloadsPath: tOptional(tString),\\n tracesDir: tOptional(tString),\\n artifactsDir: tOptional(tString),\\n chromiumSandbox: tOptional(tBoolean),\\n firefoxUserPrefs: tOptional(tAny),\\n cdpPort: tOptional(tInt),\\n slowMo: tOptional(tFloat)\\n });\\n scheme.BrowserTypeLaunchResult = tObject({\\n browser: tChannel([\\\"Browser\\\"])\\n });\\n scheme.BrowserTypeLaunchPersistentContextParams = tObject({\\n channel: tOptional(tString),\\n executablePath: tOptional(tString),\\n args: tOptional(tArray(tString)),\\n ignoreAllDefaultArgs: tOptional(tBoolean),\\n ignoreDefaultArgs: tOptional(tArray(tString)),\\n assistantMode: tOptional(tBoolean),\\n handleSIGINT: tOptional(tBoolean),\\n handleSIGTERM: tOptional(tBoolean),\\n handleSIGHUP: tOptional(tBoolean),\\n timeout: tFloat,\\n env: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n headless: tOptional(tBoolean),\\n proxy: tOptional(\\n tObject({\\n server: tString,\\n bypass: tOptional(tString),\\n username: tOptional(tString),\\n password: tOptional(tString)\\n })\\n ),\\n downloadsPath: tOptional(tString),\\n tracesDir: tOptional(tString),\\n artifactsDir: tOptional(tString),\\n chromiumSandbox: tOptional(tBoolean),\\n firefoxUserPrefs: tOptional(tAny),\\n cdpPort: tOptional(tInt),\\n noDefaultViewport: tOptional(tBoolean),\\n viewport: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n screen: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n ignoreHTTPSErrors: tOptional(tBoolean),\\n clientCertificates: tOptional(\\n tArray(\\n tObject({\\n origin: tString,\\n cert: tOptional(tBinary),\\n key: tOptional(tBinary),\\n passphrase: tOptional(tString),\\n pfx: tOptional(tBinary)\\n })\\n )\\n ),\\n javaScriptEnabled: tOptional(tBoolean),\\n bypassCSP: tOptional(tBoolean),\\n userAgent: tOptional(tString),\\n locale: tOptional(tString),\\n timezoneId: tOptional(tString),\\n geolocation: tOptional(\\n tObject({\\n longitude: tFloat,\\n latitude: tFloat,\\n accuracy: tOptional(tFloat)\\n })\\n ),\\n permissions: tOptional(tArray(tString)),\\n extraHTTPHeaders: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n offline: tOptional(tBoolean),\\n httpCredentials: tOptional(\\n tObject({\\n username: tString,\\n password: tString,\\n origin: tOptional(tString),\\n send: tOptional(tEnum([\\\"always\\\", \\\"unauthorized\\\"]))\\n })\\n ),\\n deviceScaleFactor: tOptional(tFloat),\\n isMobile: tOptional(tBoolean),\\n hasTouch: tOptional(tBoolean),\\n colorScheme: tOptional(tEnum([\\\"dark\\\", \\\"light\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n reducedMotion: tOptional(tEnum([\\\"reduce\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n forcedColors: tOptional(tEnum([\\\"active\\\", \\\"none\\\", \\\"no-override\\\"])),\\n acceptDownloads: tOptional(tEnum([\\\"accept\\\", \\\"deny\\\", \\\"internal-browser-default\\\"])),\\n contrast: tOptional(tEnum([\\\"no-preference\\\", \\\"more\\\", \\\"no-override\\\"])),\\n baseURL: tOptional(tString),\\n recordVideo: tOptional(\\n tObject({\\n dir: tString,\\n size: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n )\\n })\\n ),\\n strictSelectors: tOptional(tBoolean),\\n serviceWorkers: tOptional(tEnum([\\\"allow\\\", \\\"block\\\"])),\\n selectorEngines: tOptional(tArray(tType(\\\"SelectorEngine\\\"))),\\n testIdAttributeName: tOptional(tString),\\n userDataDir: tString,\\n slowMo: tOptional(tFloat)\\n });\\n scheme.BrowserTypeLaunchPersistentContextResult = tObject({\\n browser: tChannel([\\\"Browser\\\"]),\\n context: tChannel([\\\"BrowserContext\\\"])\\n });\\n scheme.BrowserTypeConnectOverCDPParams = tObject({\\n endpointURL: tString,\\n headers: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n slowMo: tOptional(tFloat),\\n timeout: tFloat,\\n isLocal: tOptional(tBoolean)\\n });\\n scheme.BrowserTypeConnectOverCDPResult = tObject({\\n browser: tChannel([\\\"Browser\\\"]),\\n defaultContext: tOptional(tChannel([\\\"BrowserContext\\\"]))\\n });\\n scheme.BrowserTypeConnectOverCDPTransportParams = tObject({\\n transport: tBinary\\n });\\n scheme.BrowserTypeConnectOverCDPTransportResult = tObject({\\n browser: tChannel([\\\"Browser\\\"]),\\n defaultContext: tOptional(tChannel([\\\"BrowserContext\\\"]))\\n });\\n scheme.BrowserInitializer = tObject({\\n version: tString,\\n name: tString\\n });\\n scheme.BrowserContextEvent = tObject({\\n context: tChannel([\\\"BrowserContext\\\"])\\n });\\n scheme.BrowserCloseEvent = tOptional(tObject({}));\\n scheme.BrowserStartServerParams = tObject({\\n title: tString,\\n workspaceDir: tOptional(tString),\\n metadata: tOptional(tAny)\\n });\\n scheme.BrowserStartServerResult = tObject({\\n pipeName: tString\\n });\\n scheme.BrowserStopServerParams = tOptional(tObject({}));\\n scheme.BrowserStopServerResult = tOptional(tObject({}));\\n scheme.BrowserCloseParams = tObject({\\n reason: tOptional(tString)\\n });\\n scheme.BrowserCloseResult = tOptional(tObject({}));\\n scheme.BrowserKillForTestsParams = tOptional(tObject({}));\\n scheme.BrowserKillForTestsResult = tOptional(tObject({}));\\n scheme.BrowserDefaultUserAgentForTestParams = tOptional(tObject({}));\\n scheme.BrowserDefaultUserAgentForTestResult = tObject({\\n userAgent: tString\\n });\\n scheme.BrowserNewContextParams = tObject({\\n noDefaultViewport: tOptional(tBoolean),\\n viewport: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n screen: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n ignoreHTTPSErrors: tOptional(tBoolean),\\n clientCertificates: tOptional(\\n tArray(\\n tObject({\\n origin: tString,\\n cert: tOptional(tBinary),\\n key: tOptional(tBinary),\\n passphrase: tOptional(tString),\\n pfx: tOptional(tBinary)\\n })\\n )\\n ),\\n javaScriptEnabled: tOptional(tBoolean),\\n bypassCSP: tOptional(tBoolean),\\n userAgent: tOptional(tString),\\n locale: tOptional(tString),\\n timezoneId: tOptional(tString),\\n geolocation: tOptional(\\n tObject({\\n longitude: tFloat,\\n latitude: tFloat,\\n accuracy: tOptional(tFloat)\\n })\\n ),\\n permissions: tOptional(tArray(tString)),\\n extraHTTPHeaders: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n offline: tOptional(tBoolean),\\n httpCredentials: tOptional(\\n tObject({\\n username: tString,\\n password: tString,\\n origin: tOptional(tString),\\n send: tOptional(tEnum([\\\"always\\\", \\\"unauthorized\\\"]))\\n })\\n ),\\n deviceScaleFactor: tOptional(tFloat),\\n isMobile: tOptional(tBoolean),\\n hasTouch: tOptional(tBoolean),\\n colorScheme: tOptional(tEnum([\\\"dark\\\", \\\"light\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n reducedMotion: tOptional(tEnum([\\\"reduce\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n forcedColors: tOptional(tEnum([\\\"active\\\", \\\"none\\\", \\\"no-override\\\"])),\\n acceptDownloads: tOptional(tEnum([\\\"accept\\\", \\\"deny\\\", \\\"internal-browser-default\\\"])),\\n contrast: tOptional(tEnum([\\\"no-preference\\\", \\\"more\\\", \\\"no-override\\\"])),\\n baseURL: tOptional(tString),\\n recordVideo: tOptional(\\n tObject({\\n dir: tString,\\n size: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n )\\n })\\n ),\\n strictSelectors: tOptional(tBoolean),\\n serviceWorkers: tOptional(tEnum([\\\"allow\\\", \\\"block\\\"])),\\n selectorEngines: tOptional(tArray(tType(\\\"SelectorEngine\\\"))),\\n testIdAttributeName: tOptional(tString),\\n proxy: tOptional(\\n tObject({\\n server: tString,\\n bypass: tOptional(tString),\\n username: tOptional(tString),\\n password: tOptional(tString)\\n })\\n ),\\n storageState: tOptional(\\n tObject({\\n cookies: tOptional(tArray(tType(\\\"SetNetworkCookie\\\"))),\\n origins: tOptional(tArray(tType(\\\"SetOriginStorage\\\")))\\n })\\n )\\n });\\n scheme.BrowserNewContextResult = tObject({\\n context: tChannel([\\\"BrowserContext\\\"])\\n });\\n scheme.BrowserNewContextForReuseParams = tObject({\\n noDefaultViewport: tOptional(tBoolean),\\n viewport: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n screen: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n ignoreHTTPSErrors: tOptional(tBoolean),\\n clientCertificates: tOptional(\\n tArray(\\n tObject({\\n origin: tString,\\n cert: tOptional(tBinary),\\n key: tOptional(tBinary),\\n passphrase: tOptional(tString),\\n pfx: tOptional(tBinary)\\n })\\n )\\n ),\\n javaScriptEnabled: tOptional(tBoolean),\\n bypassCSP: tOptional(tBoolean),\\n userAgent: tOptional(tString),\\n locale: tOptional(tString),\\n timezoneId: tOptional(tString),\\n geolocation: tOptional(\\n tObject({\\n longitude: tFloat,\\n latitude: tFloat,\\n accuracy: tOptional(tFloat)\\n })\\n ),\\n permissions: tOptional(tArray(tString)),\\n extraHTTPHeaders: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n offline: tOptional(tBoolean),\\n httpCredentials: tOptional(\\n tObject({\\n username: tString,\\n password: tString,\\n origin: tOptional(tString),\\n send: tOptional(tEnum([\\\"always\\\", \\\"unauthorized\\\"]))\\n })\\n ),\\n deviceScaleFactor: tOptional(tFloat),\\n isMobile: tOptional(tBoolean),\\n hasTouch: tOptional(tBoolean),\\n colorScheme: tOptional(tEnum([\\\"dark\\\", \\\"light\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n reducedMotion: tOptional(tEnum([\\\"reduce\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n forcedColors: tOptional(tEnum([\\\"active\\\", \\\"none\\\", \\\"no-override\\\"])),\\n acceptDownloads: tOptional(tEnum([\\\"accept\\\", \\\"deny\\\", \\\"internal-browser-default\\\"])),\\n contrast: tOptional(tEnum([\\\"no-preference\\\", \\\"more\\\", \\\"no-override\\\"])),\\n baseURL: tOptional(tString),\\n recordVideo: tOptional(\\n tObject({\\n dir: tString,\\n size: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n )\\n })\\n ),\\n strictSelectors: tOptional(tBoolean),\\n serviceWorkers: tOptional(tEnum([\\\"allow\\\", \\\"block\\\"])),\\n selectorEngines: tOptional(tArray(tType(\\\"SelectorEngine\\\"))),\\n testIdAttributeName: tOptional(tString),\\n proxy: tOptional(\\n tObject({\\n server: tString,\\n bypass: tOptional(tString),\\n username: tOptional(tString),\\n password: tOptional(tString)\\n })\\n ),\\n storageState: tOptional(\\n tObject({\\n cookies: tOptional(tArray(tType(\\\"SetNetworkCookie\\\"))),\\n origins: tOptional(tArray(tType(\\\"SetOriginStorage\\\")))\\n })\\n )\\n });\\n scheme.BrowserNewContextForReuseResult = tObject({\\n context: tChannel([\\\"BrowserContext\\\"])\\n });\\n scheme.BrowserDisconnectFromReusedContextParams = tObject({\\n reason: tString\\n });\\n scheme.BrowserDisconnectFromReusedContextResult = tOptional(tObject({}));\\n scheme.BrowserNewBrowserCDPSessionParams = tOptional(tObject({}));\\n scheme.BrowserNewBrowserCDPSessionResult = tObject({\\n session: tChannel([\\\"CDPSession\\\"])\\n });\\n scheme.BrowserStartTracingParams = tObject({\\n page: tOptional(tChannel([\\\"Page\\\"])),\\n screenshots: tOptional(tBoolean),\\n categories: tOptional(tArray(tString))\\n });\\n scheme.BrowserStartTracingResult = tOptional(tObject({}));\\n scheme.BrowserStopTracingParams = tOptional(tObject({}));\\n scheme.BrowserStopTracingResult = tObject({\\n artifact: tChannel([\\\"Artifact\\\"])\\n });\\n scheme.EventTargetInitializer = tOptional(tObject({}));\\n scheme.EventTargetWaitForEventInfoParams = tObject({\\n info: tObject({\\n waitId: tString,\\n phase: tEnum([\\\"before\\\", \\\"after\\\", \\\"log\\\"]),\\n event: tOptional(tString),\\n message: tOptional(tString),\\n error: tOptional(tString)\\n })\\n });\\n scheme.BrowserContextWaitForEventInfoParams = tType(\\\"EventTargetWaitForEventInfoParams\\\");\\n scheme.PageWaitForEventInfoParams = tType(\\\"EventTargetWaitForEventInfoParams\\\");\\n scheme.WorkerWaitForEventInfoParams = tType(\\\"EventTargetWaitForEventInfoParams\\\");\\n scheme.WebSocketWaitForEventInfoParams = tType(\\\"EventTargetWaitForEventInfoParams\\\");\\n scheme.DebuggerWaitForEventInfoParams = tType(\\\"EventTargetWaitForEventInfoParams\\\");\\n scheme.ElectronApplicationWaitForEventInfoParams = tType(\\\"EventTargetWaitForEventInfoParams\\\");\\n scheme.AndroidDeviceWaitForEventInfoParams = tType(\\\"EventTargetWaitForEventInfoParams\\\");\\n scheme.EventTargetWaitForEventInfoResult = tOptional(tObject({}));\\n scheme.BrowserContextWaitForEventInfoResult = tType(\\\"EventTargetWaitForEventInfoResult\\\");\\n scheme.PageWaitForEventInfoResult = tType(\\\"EventTargetWaitForEventInfoResult\\\");\\n scheme.WorkerWaitForEventInfoResult = tType(\\\"EventTargetWaitForEventInfoResult\\\");\\n scheme.WebSocketWaitForEventInfoResult = tType(\\\"EventTargetWaitForEventInfoResult\\\");\\n scheme.DebuggerWaitForEventInfoResult = tType(\\\"EventTargetWaitForEventInfoResult\\\");\\n scheme.ElectronApplicationWaitForEventInfoResult = tType(\\\"EventTargetWaitForEventInfoResult\\\");\\n scheme.AndroidDeviceWaitForEventInfoResult = tType(\\\"EventTargetWaitForEventInfoResult\\\");\\n scheme.BrowserContextInitializer = tObject({\\n requestContext: tChannel([\\\"APIRequestContext\\\"]),\\n tracing: tChannel([\\\"Tracing\\\"]),\\n options: tObject({\\n noDefaultViewport: tOptional(tBoolean),\\n viewport: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n screen: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n ignoreHTTPSErrors: tOptional(tBoolean),\\n clientCertificates: tOptional(\\n tArray(\\n tObject({\\n origin: tString,\\n cert: tOptional(tBinary),\\n key: tOptional(tBinary),\\n passphrase: tOptional(tString),\\n pfx: tOptional(tBinary)\\n })\\n )\\n ),\\n javaScriptEnabled: tOptional(tBoolean),\\n bypassCSP: tOptional(tBoolean),\\n userAgent: tOptional(tString),\\n locale: tOptional(tString),\\n timezoneId: tOptional(tString),\\n geolocation: tOptional(\\n tObject({\\n longitude: tFloat,\\n latitude: tFloat,\\n accuracy: tOptional(tFloat)\\n })\\n ),\\n permissions: tOptional(tArray(tString)),\\n extraHTTPHeaders: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n offline: tOptional(tBoolean),\\n httpCredentials: tOptional(\\n tObject({\\n username: tString,\\n password: tString,\\n origin: tOptional(tString),\\n send: tOptional(tEnum([\\\"always\\\", \\\"unauthorized\\\"]))\\n })\\n ),\\n deviceScaleFactor: tOptional(tFloat),\\n isMobile: tOptional(tBoolean),\\n hasTouch: tOptional(tBoolean),\\n colorScheme: tOptional(tEnum([\\\"dark\\\", \\\"light\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n reducedMotion: tOptional(tEnum([\\\"reduce\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n forcedColors: tOptional(tEnum([\\\"active\\\", \\\"none\\\", \\\"no-override\\\"])),\\n acceptDownloads: tOptional(tEnum([\\\"accept\\\", \\\"deny\\\", \\\"internal-browser-default\\\"])),\\n contrast: tOptional(tEnum([\\\"no-preference\\\", \\\"more\\\", \\\"no-override\\\"])),\\n baseURL: tOptional(tString),\\n recordVideo: tOptional(\\n tObject({\\n dir: tString,\\n size: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n )\\n })\\n ),\\n strictSelectors: tOptional(tBoolean),\\n serviceWorkers: tOptional(tEnum([\\\"allow\\\", \\\"block\\\"])),\\n selectorEngines: tOptional(tArray(tType(\\\"SelectorEngine\\\"))),\\n testIdAttributeName: tOptional(tString)\\n })\\n });\\n scheme.BrowserContextBindingCallEvent = tObject({\\n binding: tChannel([\\\"BindingCall\\\"])\\n });\\n scheme.BrowserContextConsoleEvent = tObject({\\n type: tString,\\n text: tString,\\n args: tArray(tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"])),\\n location: tObject({\\n url: tString,\\n lineNumber: tInt,\\n columnNumber: tInt\\n }),\\n timestamp: tOptional(tFloat),\\n page: tOptional(tChannel([\\\"Page\\\"])),\\n worker: tOptional(tChannel([\\\"Worker\\\"]))\\n });\\n scheme.BrowserContextCloseEvent = tOptional(tObject({}));\\n scheme.BrowserContextDialogEvent = tObject({\\n dialog: tChannel([\\\"Dialog\\\"])\\n });\\n scheme.BrowserContextPageEvent = tObject({\\n page: tChannel([\\\"Page\\\"])\\n });\\n scheme.BrowserContextPageErrorEvent = tObject({\\n error: tType(\\\"SerializedError\\\"),\\n page: tChannel([\\\"Page\\\"])\\n });\\n scheme.BrowserContextRouteEvent = tObject({\\n route: tChannel([\\\"Route\\\"])\\n });\\n scheme.BrowserContextWebSocketRouteEvent = tObject({\\n webSocketRoute: tChannel([\\\"WebSocketRoute\\\"])\\n });\\n scheme.BrowserContextServiceWorkerEvent = tObject({\\n worker: tChannel([\\\"Worker\\\"])\\n });\\n scheme.BrowserContextRequestEvent = tObject({\\n request: tChannel([\\\"Request\\\"]),\\n page: tOptional(tChannel([\\\"Page\\\"]))\\n });\\n scheme.BrowserContextRequestFailedEvent = tObject({\\n request: tChannel([\\\"Request\\\"]),\\n failureText: tOptional(tString),\\n responseEndTiming: tFloat,\\n page: tOptional(tChannel([\\\"Page\\\"]))\\n });\\n scheme.BrowserContextRequestFinishedEvent = tObject({\\n request: tChannel([\\\"Request\\\"]),\\n response: tOptional(tChannel([\\\"Response\\\"])),\\n responseEndTiming: tFloat,\\n page: tOptional(tChannel([\\\"Page\\\"]))\\n });\\n scheme.BrowserContextResponseEvent = tObject({\\n response: tChannel([\\\"Response\\\"]),\\n page: tOptional(tChannel([\\\"Page\\\"]))\\n });\\n scheme.BrowserContextRecorderEventEvent = tObject({\\n event: tEnum([\\\"actionAdded\\\", \\\"actionUpdated\\\", \\\"signalAdded\\\"]),\\n data: tAny,\\n page: tChannel([\\\"Page\\\"]),\\n code: tString\\n });\\n scheme.BrowserContextAddCookiesParams = tObject({\\n cookies: tArray(tType(\\\"SetNetworkCookie\\\"))\\n });\\n scheme.BrowserContextAddCookiesResult = tOptional(tObject({}));\\n scheme.BrowserContextAddInitScriptParams = tObject({\\n source: tString\\n });\\n scheme.BrowserContextAddInitScriptResult = tObject({\\n disposable: tChannel([\\\"Disposable\\\"])\\n });\\n scheme.BrowserContextClearCookiesParams = tObject({\\n name: tOptional(tString),\\n nameRegexSource: tOptional(tString),\\n nameRegexFlags: tOptional(tString),\\n domain: tOptional(tString),\\n domainRegexSource: tOptional(tString),\\n domainRegexFlags: tOptional(tString),\\n path: tOptional(tString),\\n pathRegexSource: tOptional(tString),\\n pathRegexFlags: tOptional(tString)\\n });\\n scheme.BrowserContextClearCookiesResult = tOptional(tObject({}));\\n scheme.BrowserContextClearPermissionsParams = tOptional(tObject({}));\\n scheme.BrowserContextClearPermissionsResult = tOptional(tObject({}));\\n scheme.BrowserContextCloseParams = tObject({\\n reason: tOptional(tString)\\n });\\n scheme.BrowserContextCloseResult = tOptional(tObject({}));\\n scheme.BrowserContextCookiesParams = tObject({\\n urls: tArray(tString)\\n });\\n scheme.BrowserContextCookiesResult = tObject({\\n cookies: tArray(tType(\\\"NetworkCookie\\\"))\\n });\\n scheme.BrowserContextExposeBindingParams = tObject({\\n name: tString,\\n needsHandle: tOptional(tBoolean)\\n });\\n scheme.BrowserContextExposeBindingResult = tObject({\\n disposable: tChannel([\\\"Disposable\\\"])\\n });\\n scheme.BrowserContextGrantPermissionsParams = tObject({\\n permissions: tArray(tString),\\n origin: tOptional(tString)\\n });\\n scheme.BrowserContextGrantPermissionsResult = tOptional(tObject({}));\\n scheme.BrowserContextNewPageParams = tOptional(tObject({}));\\n scheme.BrowserContextNewPageResult = tObject({\\n page: tChannel([\\\"Page\\\"])\\n });\\n scheme.BrowserContextRegisterSelectorEngineParams = tObject({\\n selectorEngine: tType(\\\"SelectorEngine\\\")\\n });\\n scheme.BrowserContextRegisterSelectorEngineResult = tOptional(tObject({}));\\n scheme.BrowserContextSetTestIdAttributeNameParams = tObject({\\n testIdAttributeName: tString\\n });\\n scheme.BrowserContextSetTestIdAttributeNameResult = tOptional(tObject({}));\\n scheme.BrowserContextSetExtraHTTPHeadersParams = tObject({\\n headers: tArray(tType(\\\"NameValue\\\"))\\n });\\n scheme.BrowserContextSetExtraHTTPHeadersResult = tOptional(tObject({}));\\n scheme.BrowserContextSetGeolocationParams = tObject({\\n geolocation: tOptional(\\n tObject({\\n longitude: tFloat,\\n latitude: tFloat,\\n accuracy: tOptional(tFloat)\\n })\\n )\\n });\\n scheme.BrowserContextSetGeolocationResult = tOptional(tObject({}));\\n scheme.BrowserContextSetHTTPCredentialsParams = tObject({\\n httpCredentials: tOptional(\\n tObject({\\n username: tString,\\n password: tString,\\n origin: tOptional(tString)\\n })\\n )\\n });\\n scheme.BrowserContextSetHTTPCredentialsResult = tOptional(tObject({}));\\n scheme.BrowserContextSetNetworkInterceptionPatternsParams = tObject({\\n patterns: tArray(\\n tObject({\\n glob: tOptional(tString),\\n regexSource: tOptional(tString),\\n regexFlags: tOptional(tString),\\n urlPattern: tOptional(tType(\\\"URLPattern\\\"))\\n })\\n )\\n });\\n scheme.BrowserContextSetNetworkInterceptionPatternsResult = tOptional(tObject({}));\\n scheme.BrowserContextSetWebSocketInterceptionPatternsParams = tObject({\\n patterns: tArray(\\n tObject({\\n glob: tOptional(tString),\\n regexSource: tOptional(tString),\\n regexFlags: tOptional(tString),\\n urlPattern: tOptional(tType(\\\"URLPattern\\\"))\\n })\\n )\\n });\\n scheme.BrowserContextSetWebSocketInterceptionPatternsResult = tOptional(tObject({}));\\n scheme.BrowserContextSetOfflineParams = tObject({\\n offline: tBoolean\\n });\\n scheme.BrowserContextSetOfflineResult = tOptional(tObject({}));\\n scheme.BrowserContextStorageStateParams = tObject({\\n indexedDB: tOptional(tBoolean)\\n });\\n scheme.BrowserContextStorageStateResult = tObject({\\n cookies: tArray(tType(\\\"NetworkCookie\\\")),\\n origins: tArray(tType(\\\"OriginStorage\\\"))\\n });\\n scheme.BrowserContextSetStorageStateParams = tObject({\\n storageState: tOptional(\\n tObject({\\n cookies: tOptional(tArray(tType(\\\"SetNetworkCookie\\\"))),\\n origins: tOptional(tArray(tType(\\\"SetOriginStorage\\\")))\\n })\\n )\\n });\\n scheme.BrowserContextSetStorageStateResult = tOptional(tObject({}));\\n scheme.BrowserContextPauseParams = tOptional(tObject({}));\\n scheme.BrowserContextPauseResult = tOptional(tObject({}));\\n scheme.BrowserContextEnableRecorderParams = tObject({\\n language: tOptional(tString),\\n mode: tOptional(tEnum([\\\"inspecting\\\", \\\"recording\\\"])),\\n recorderMode: tOptional(tEnum([\\\"default\\\", \\\"api\\\"])),\\n pauseOnNextStatement: tOptional(tBoolean),\\n testIdAttributeName: tOptional(tString),\\n launchOptions: tOptional(tAny),\\n contextOptions: tOptional(tAny),\\n device: tOptional(tString),\\n saveStorage: tOptional(tString),\\n outputFile: tOptional(tString),\\n handleSIGINT: tOptional(tBoolean),\\n omitCallTracking: tOptional(tBoolean)\\n });\\n scheme.BrowserContextEnableRecorderResult = tOptional(tObject({}));\\n scheme.BrowserContextDisableRecorderParams = tOptional(tObject({}));\\n scheme.BrowserContextDisableRecorderResult = tOptional(tObject({}));\\n scheme.BrowserContextExposeConsoleApiParams = tOptional(tObject({}));\\n scheme.BrowserContextExposeConsoleApiResult = tOptional(tObject({}));\\n scheme.BrowserContextNewCDPSessionParams = tObject({\\n page: tOptional(tChannel([\\\"Page\\\"])),\\n frame: tOptional(tChannel([\\\"Frame\\\"]))\\n });\\n scheme.BrowserContextNewCDPSessionResult = tObject({\\n session: tChannel([\\\"CDPSession\\\"])\\n });\\n scheme.BrowserContextHarStartParams = tObject({\\n page: tOptional(tChannel([\\\"Page\\\"])),\\n options: tType(\\\"RecordHarOptions\\\")\\n });\\n scheme.BrowserContextHarStartResult = tObject({\\n harId: tString\\n });\\n scheme.BrowserContextHarExportParams = tObject({\\n harId: tOptional(tString)\\n });\\n scheme.BrowserContextHarExportResult = tObject({\\n artifact: tChannel([\\\"Artifact\\\"])\\n });\\n scheme.BrowserContextCreateTempFilesParams = tObject({\\n rootDirName: tOptional(tString),\\n items: tArray(\\n tObject({\\n name: tString,\\n lastModifiedMs: tOptional(tFloat)\\n })\\n )\\n });\\n scheme.BrowserContextCreateTempFilesResult = tObject({\\n rootDir: tOptional(tChannel([\\\"WritableStream\\\"])),\\n writableStreams: tArray(tChannel([\\\"WritableStream\\\"]))\\n });\\n scheme.BrowserContextUpdateSubscriptionParams = tObject({\\n event: tEnum([\\\"console\\\", \\\"dialog\\\", \\\"request\\\", \\\"response\\\", \\\"requestFinished\\\", \\\"requestFailed\\\"]),\\n enabled: tBoolean\\n });\\n scheme.BrowserContextUpdateSubscriptionResult = tOptional(tObject({}));\\n scheme.BrowserContextClockFastForwardParams = tObject({\\n ticksNumber: tOptional(tFloat),\\n ticksString: tOptional(tString)\\n });\\n scheme.BrowserContextClockFastForwardResult = tOptional(tObject({}));\\n scheme.BrowserContextClockInstallParams = tObject({\\n timeNumber: tOptional(tFloat),\\n timeString: tOptional(tString)\\n });\\n scheme.BrowserContextClockInstallResult = tOptional(tObject({}));\\n scheme.BrowserContextClockPauseAtParams = tObject({\\n timeNumber: tOptional(tFloat),\\n timeString: tOptional(tString)\\n });\\n scheme.BrowserContextClockPauseAtResult = tOptional(tObject({}));\\n scheme.BrowserContextClockResumeParams = tOptional(tObject({}));\\n scheme.BrowserContextClockResumeResult = tOptional(tObject({}));\\n scheme.BrowserContextClockRunForParams = tObject({\\n ticksNumber: tOptional(tFloat),\\n ticksString: tOptional(tString)\\n });\\n scheme.BrowserContextClockRunForResult = tOptional(tObject({}));\\n scheme.BrowserContextClockSetFixedTimeParams = tObject({\\n timeNumber: tOptional(tFloat),\\n timeString: tOptional(tString)\\n });\\n scheme.BrowserContextClockSetFixedTimeResult = tOptional(tObject({}));\\n scheme.BrowserContextClockSetSystemTimeParams = tObject({\\n timeNumber: tOptional(tFloat),\\n timeString: tOptional(tString)\\n });\\n scheme.BrowserContextClockSetSystemTimeResult = tOptional(tObject({}));\\n scheme.PageInitializer = tObject({\\n mainFrame: tChannel([\\\"Frame\\\"]),\\n viewportSize: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n isClosed: tBoolean,\\n opener: tOptional(tChannel([\\\"Page\\\"])),\\n video: tOptional(tChannel([\\\"Artifact\\\"]))\\n });\\n scheme.PageBindingCallEvent = tObject({\\n binding: tChannel([\\\"BindingCall\\\"])\\n });\\n scheme.PageCloseEvent = tOptional(tObject({}));\\n scheme.PageCrashEvent = tOptional(tObject({}));\\n scheme.PageDownloadEvent = tObject({\\n url: tString,\\n suggestedFilename: tString,\\n artifact: tChannel([\\\"Artifact\\\"])\\n });\\n scheme.PageViewportSizeChangedEvent = tObject({\\n viewportSize: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n )\\n });\\n scheme.PageFileChooserEvent = tObject({\\n element: tChannel([\\\"ElementHandle\\\"]),\\n isMultiple: tBoolean\\n });\\n scheme.PageFrameAttachedEvent = tObject({\\n frame: tChannel([\\\"Frame\\\"])\\n });\\n scheme.PageFrameDetachedEvent = tObject({\\n frame: tChannel([\\\"Frame\\\"])\\n });\\n scheme.PageLocatorHandlerTriggeredEvent = tObject({\\n uid: tInt\\n });\\n scheme.PageRouteEvent = tObject({\\n route: tChannel([\\\"Route\\\"])\\n });\\n scheme.PageScreencastFrameEvent = tObject({\\n data: tBinary\\n });\\n scheme.PageWebSocketRouteEvent = tObject({\\n webSocketRoute: tChannel([\\\"WebSocketRoute\\\"])\\n });\\n scheme.PageWebSocketEvent = tObject({\\n webSocket: tChannel([\\\"WebSocket\\\"])\\n });\\n scheme.PageWorkerEvent = tObject({\\n worker: tChannel([\\\"Worker\\\"])\\n });\\n scheme.PageAddInitScriptParams = tObject({\\n source: tString\\n });\\n scheme.PageAddInitScriptResult = tObject({\\n disposable: tChannel([\\\"Disposable\\\"])\\n });\\n scheme.PageCloseParams = tObject({\\n runBeforeUnload: tOptional(tBoolean),\\n reason: tOptional(tString)\\n });\\n scheme.PageCloseResult = tOptional(tObject({}));\\n scheme.PageClearConsoleMessagesParams = tOptional(tObject({}));\\n scheme.PageClearConsoleMessagesResult = tOptional(tObject({}));\\n scheme.PageConsoleMessagesParams = tObject({\\n filter: tOptional(tType(\\\"ConsoleMessagesFilter\\\"))\\n });\\n scheme.PageConsoleMessagesResult = tObject({\\n messages: tArray(\\n tObject({\\n type: tString,\\n text: tString,\\n args: tArray(tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"])),\\n location: tObject({\\n url: tString,\\n lineNumber: tInt,\\n columnNumber: tInt\\n }),\\n timestamp: tFloat\\n })\\n )\\n });\\n scheme.PageEmulateMediaParams = tObject({\\n media: tOptional(tEnum([\\\"screen\\\", \\\"print\\\", \\\"no-override\\\"])),\\n colorScheme: tOptional(tEnum([\\\"dark\\\", \\\"light\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n reducedMotion: tOptional(tEnum([\\\"reduce\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n forcedColors: tOptional(tEnum([\\\"active\\\", \\\"none\\\", \\\"no-override\\\"])),\\n contrast: tOptional(tEnum([\\\"no-preference\\\", \\\"more\\\", \\\"no-override\\\"]))\\n });\\n scheme.PageEmulateMediaResult = tOptional(tObject({}));\\n scheme.PageExposeBindingParams = tObject({\\n name: tString,\\n needsHandle: tOptional(tBoolean)\\n });\\n scheme.PageExposeBindingResult = tObject({\\n disposable: tChannel([\\\"Disposable\\\"])\\n });\\n scheme.PageGoBackParams = tObject({\\n timeout: tFloat,\\n waitUntil: tOptional(tType(\\\"LifecycleEvent\\\"))\\n });\\n scheme.PageGoBackResult = tObject({\\n response: tOptional(tChannel([\\\"Response\\\"]))\\n });\\n scheme.PageGoForwardParams = tObject({\\n timeout: tFloat,\\n waitUntil: tOptional(tType(\\\"LifecycleEvent\\\"))\\n });\\n scheme.PageGoForwardResult = tObject({\\n response: tOptional(tChannel([\\\"Response\\\"]))\\n });\\n scheme.PageRequestGCParams = tOptional(tObject({}));\\n scheme.PageRequestGCResult = tOptional(tObject({}));\\n scheme.PageRegisterLocatorHandlerParams = tObject({\\n selector: tString,\\n noWaitAfter: tOptional(tBoolean)\\n });\\n scheme.PageRegisterLocatorHandlerResult = tObject({\\n uid: tInt\\n });\\n scheme.PageResolveLocatorHandlerNoReplyParams = tObject({\\n uid: tInt,\\n remove: tOptional(tBoolean)\\n });\\n scheme.PageResolveLocatorHandlerNoReplyResult = tOptional(tObject({}));\\n scheme.PageUnregisterLocatorHandlerParams = tObject({\\n uid: tInt\\n });\\n scheme.PageUnregisterLocatorHandlerResult = tOptional(tObject({}));\\n scheme.PageReloadParams = tObject({\\n timeout: tFloat,\\n waitUntil: tOptional(tType(\\\"LifecycleEvent\\\"))\\n });\\n scheme.PageReloadResult = tObject({\\n response: tOptional(tChannel([\\\"Response\\\"]))\\n });\\n scheme.PageExpectScreenshotParams = tObject({\\n expected: tOptional(tBinary),\\n timeout: tFloat,\\n isNot: tBoolean,\\n locator: tOptional(\\n tObject({\\n frame: tChannel([\\\"Frame\\\"]),\\n selector: tString\\n })\\n ),\\n comparator: tOptional(tString),\\n maxDiffPixels: tOptional(tInt),\\n maxDiffPixelRatio: tOptional(tFloat),\\n threshold: tOptional(tFloat),\\n fullPage: tOptional(tBoolean),\\n clip: tOptional(tType(\\\"Rect\\\")),\\n omitBackground: tOptional(tBoolean),\\n caret: tOptional(tEnum([\\\"hide\\\", \\\"initial\\\"])),\\n animations: tOptional(tEnum([\\\"disabled\\\", \\\"allow\\\"])),\\n scale: tOptional(tEnum([\\\"css\\\", \\\"device\\\"])),\\n mask: tOptional(\\n tArray(\\n tObject({\\n frame: tChannel([\\\"Frame\\\"]),\\n selector: tString\\n })\\n )\\n ),\\n maskColor: tOptional(tString),\\n style: tOptional(tString)\\n });\\n scheme.PageExpectScreenshotResult = tObject({\\n diff: tOptional(tBinary),\\n errorMessage: tOptional(tString),\\n actual: tOptional(tBinary),\\n previous: tOptional(tBinary),\\n timedOut: tOptional(tBoolean),\\n log: tOptional(tArray(tString))\\n });\\n scheme.PageScreenshotParams = tObject({\\n timeout: tFloat,\\n type: tOptional(tEnum([\\\"png\\\", \\\"jpeg\\\"])),\\n quality: tOptional(tInt),\\n fullPage: tOptional(tBoolean),\\n clip: tOptional(tType(\\\"Rect\\\")),\\n omitBackground: tOptional(tBoolean),\\n caret: tOptional(tEnum([\\\"hide\\\", \\\"initial\\\"])),\\n animations: tOptional(tEnum([\\\"disabled\\\", \\\"allow\\\"])),\\n scale: tOptional(tEnum([\\\"css\\\", \\\"device\\\"])),\\n mask: tOptional(\\n tArray(\\n tObject({\\n frame: tChannel([\\\"Frame\\\"]),\\n selector: tString\\n })\\n )\\n ),\\n maskColor: tOptional(tString),\\n style: tOptional(tString)\\n });\\n scheme.PageScreenshotResult = tObject({\\n binary: tBinary\\n });\\n scheme.PageSetExtraHTTPHeadersParams = tObject({\\n headers: tArray(tType(\\\"NameValue\\\"))\\n });\\n scheme.PageSetExtraHTTPHeadersResult = tOptional(tObject({}));\\n scheme.PageSetNetworkInterceptionPatternsParams = tObject({\\n patterns: tArray(\\n tObject({\\n glob: tOptional(tString),\\n regexSource: tOptional(tString),\\n regexFlags: tOptional(tString),\\n urlPattern: tOptional(tType(\\\"URLPattern\\\"))\\n })\\n )\\n });\\n scheme.PageSetNetworkInterceptionPatternsResult = tOptional(tObject({}));\\n scheme.PageSetWebSocketInterceptionPatternsParams = tObject({\\n patterns: tArray(\\n tObject({\\n glob: tOptional(tString),\\n regexSource: tOptional(tString),\\n regexFlags: tOptional(tString),\\n urlPattern: tOptional(tType(\\\"URLPattern\\\"))\\n })\\n )\\n });\\n scheme.PageSetWebSocketInterceptionPatternsResult = tOptional(tObject({}));\\n scheme.PageSetViewportSizeParams = tObject({\\n viewportSize: tObject({\\n width: tInt,\\n height: tInt\\n })\\n });\\n scheme.PageSetViewportSizeResult = tOptional(tObject({}));\\n scheme.PageKeyboardDownParams = tObject({\\n key: tString\\n });\\n scheme.PageKeyboardDownResult = tOptional(tObject({}));\\n scheme.PageKeyboardUpParams = tObject({\\n key: tString\\n });\\n scheme.PageKeyboardUpResult = tOptional(tObject({}));\\n scheme.PageKeyboardInsertTextParams = tObject({\\n text: tString\\n });\\n scheme.PageKeyboardInsertTextResult = tOptional(tObject({}));\\n scheme.PageKeyboardTypeParams = tObject({\\n text: tString,\\n delay: tOptional(tFloat)\\n });\\n scheme.PageKeyboardTypeResult = tOptional(tObject({}));\\n scheme.PageKeyboardPressParams = tObject({\\n key: tString,\\n delay: tOptional(tFloat)\\n });\\n scheme.PageKeyboardPressResult = tOptional(tObject({}));\\n scheme.PageMouseMoveParams = tObject({\\n x: tFloat,\\n y: tFloat,\\n steps: tOptional(tInt)\\n });\\n scheme.PageMouseMoveResult = tOptional(tObject({}));\\n scheme.PageMouseDownParams = tObject({\\n button: tOptional(tEnum([\\\"left\\\", \\\"right\\\", \\\"middle\\\"])),\\n clickCount: tOptional(tInt)\\n });\\n scheme.PageMouseDownResult = tOptional(tObject({}));\\n scheme.PageMouseUpParams = tObject({\\n button: tOptional(tEnum([\\\"left\\\", \\\"right\\\", \\\"middle\\\"])),\\n clickCount: tOptional(tInt)\\n });\\n scheme.PageMouseUpResult = tOptional(tObject({}));\\n scheme.PageMouseClickParams = tObject({\\n x: tFloat,\\n y: tFloat,\\n delay: tOptional(tFloat),\\n button: tOptional(tEnum([\\\"left\\\", \\\"right\\\", \\\"middle\\\"])),\\n clickCount: tOptional(tInt)\\n });\\n scheme.PageMouseClickResult = tOptional(tObject({}));\\n scheme.PageMouseWheelParams = tObject({\\n deltaX: tFloat,\\n deltaY: tFloat\\n });\\n scheme.PageMouseWheelResult = tOptional(tObject({}));\\n scheme.PageTouchscreenTapParams = tObject({\\n x: tFloat,\\n y: tFloat\\n });\\n scheme.PageTouchscreenTapResult = tOptional(tObject({}));\\n scheme.PageClearPageErrorsParams = tOptional(tObject({}));\\n scheme.PageClearPageErrorsResult = tOptional(tObject({}));\\n scheme.PagePageErrorsParams = tObject({\\n filter: tOptional(tType(\\\"ConsoleMessagesFilter\\\"))\\n });\\n scheme.PagePageErrorsResult = tObject({\\n errors: tArray(tType(\\\"SerializedError\\\"))\\n });\\n scheme.PagePdfParams = tObject({\\n scale: tOptional(tFloat),\\n displayHeaderFooter: tOptional(tBoolean),\\n headerTemplate: tOptional(tString),\\n footerTemplate: tOptional(tString),\\n printBackground: tOptional(tBoolean),\\n landscape: tOptional(tBoolean),\\n pageRanges: tOptional(tString),\\n format: tOptional(tString),\\n width: tOptional(tString),\\n height: tOptional(tString),\\n preferCSSPageSize: tOptional(tBoolean),\\n margin: tOptional(\\n tObject({\\n top: tOptional(tString),\\n bottom: tOptional(tString),\\n left: tOptional(tString),\\n right: tOptional(tString)\\n })\\n ),\\n tagged: tOptional(tBoolean),\\n outline: tOptional(tBoolean)\\n });\\n scheme.PagePdfResult = tObject({\\n pdf: tBinary\\n });\\n scheme.PageRequestsParams = tOptional(tObject({}));\\n scheme.PageRequestsResult = tObject({\\n requests: tArray(tChannel([\\\"Request\\\"]))\\n });\\n scheme.PageSnapshotForAIParams = tObject({\\n track: tOptional(tString),\\n selector: tOptional(tString),\\n depth: tOptional(tInt),\\n timeout: tFloat\\n });\\n scheme.PageSnapshotForAIResult = tObject({\\n full: tString,\\n incremental: tOptional(tString)\\n });\\n scheme.PageStartJSCoverageParams = tObject({\\n resetOnNavigation: tOptional(tBoolean),\\n reportAnonymousScripts: tOptional(tBoolean)\\n });\\n scheme.PageStartJSCoverageResult = tOptional(tObject({}));\\n scheme.PageStopJSCoverageParams = tOptional(tObject({}));\\n scheme.PageStopJSCoverageResult = tObject({\\n entries: tArray(\\n tObject({\\n url: tString,\\n scriptId: tString,\\n source: tOptional(tString),\\n functions: tArray(\\n tObject({\\n functionName: tString,\\n isBlockCoverage: tBoolean,\\n ranges: tArray(\\n tObject({\\n startOffset: tInt,\\n endOffset: tInt,\\n count: tInt\\n })\\n )\\n })\\n )\\n })\\n )\\n });\\n scheme.PageStartCSSCoverageParams = tObject({\\n resetOnNavigation: tOptional(tBoolean)\\n });\\n scheme.PageStartCSSCoverageResult = tOptional(tObject({}));\\n scheme.PageStopCSSCoverageParams = tOptional(tObject({}));\\n scheme.PageStopCSSCoverageResult = tObject({\\n entries: tArray(\\n tObject({\\n url: tString,\\n text: tOptional(tString),\\n ranges: tArray(\\n tObject({\\n start: tInt,\\n end: tInt\\n })\\n )\\n })\\n )\\n });\\n scheme.PageBringToFrontParams = tOptional(tObject({}));\\n scheme.PageBringToFrontResult = tOptional(tObject({}));\\n scheme.PagePickLocatorParams = tOptional(tObject({}));\\n scheme.PagePickLocatorResult = tObject({\\n selector: tString\\n });\\n scheme.PageCancelPickLocatorParams = tOptional(tObject({}));\\n scheme.PageCancelPickLocatorResult = tOptional(tObject({}));\\n scheme.PageStartScreencastParams = tObject({\\n maxSize: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n )\\n });\\n scheme.PageStartScreencastResult = tOptional(tObject({}));\\n scheme.PageStopScreencastParams = tOptional(tObject({}));\\n scheme.PageStopScreencastResult = tOptional(tObject({}));\\n scheme.PageVideoStartParams = tObject({\\n size: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n )\\n });\\n scheme.PageVideoStartResult = tObject({\\n artifact: tChannel([\\\"Artifact\\\"])\\n });\\n scheme.PageVideoStopParams = tOptional(tObject({}));\\n scheme.PageVideoStopResult = tOptional(tObject({}));\\n scheme.PageUpdateSubscriptionParams = tObject({\\n event: tEnum([\\n \\\"console\\\",\\n \\\"dialog\\\",\\n \\\"fileChooser\\\",\\n \\\"request\\\",\\n \\\"response\\\",\\n \\\"requestFinished\\\",\\n \\\"requestFailed\\\"\\n ]),\\n enabled: tBoolean\\n });\\n scheme.PageUpdateSubscriptionResult = tOptional(tObject({}));\\n scheme.PageSetDockTileParams = tObject({\\n image: tBinary\\n });\\n scheme.PageSetDockTileResult = tOptional(tObject({}));\\n scheme.FrameInitializer = tObject({\\n url: tString,\\n name: tString,\\n parentFrame: tOptional(tChannel([\\\"Frame\\\"])),\\n loadStates: tArray(tType(\\\"LifecycleEvent\\\"))\\n });\\n scheme.FrameLoadstateEvent = tObject({\\n add: tOptional(tType(\\\"LifecycleEvent\\\")),\\n remove: tOptional(tType(\\\"LifecycleEvent\\\"))\\n });\\n scheme.FrameNavigatedEvent = tObject({\\n url: tString,\\n name: tString,\\n newDocument: tOptional(\\n tObject({\\n request: tOptional(tChannel([\\\"Request\\\"]))\\n })\\n ),\\n error: tOptional(tString)\\n });\\n scheme.FrameEvalOnSelectorParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.FrameEvalOnSelectorResult = tObject({\\n value: tType(\\\"SerializedValue\\\")\\n });\\n scheme.FrameEvalOnSelectorAllParams = tObject({\\n selector: tString,\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.FrameEvalOnSelectorAllResult = tObject({\\n value: tType(\\\"SerializedValue\\\")\\n });\\n scheme.FrameAddScriptTagParams = tObject({\\n url: tOptional(tString),\\n content: tOptional(tString),\\n type: tOptional(tString)\\n });\\n scheme.FrameAddScriptTagResult = tObject({\\n element: tChannel([\\\"ElementHandle\\\"])\\n });\\n scheme.FrameAddStyleTagParams = tObject({\\n url: tOptional(tString),\\n content: tOptional(tString)\\n });\\n scheme.FrameAddStyleTagResult = tObject({\\n element: tChannel([\\\"ElementHandle\\\"])\\n });\\n scheme.FrameAriaSnapshotParams = tObject({\\n selector: tString,\\n timeout: tFloat\\n });\\n scheme.FrameAriaSnapshotResult = tObject({\\n snapshot: tString\\n });\\n scheme.FrameBlurParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameBlurResult = tOptional(tObject({}));\\n scheme.FrameCheckParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n force: tOptional(tBoolean),\\n position: tOptional(tType(\\\"Point\\\")),\\n timeout: tFloat,\\n trial: tOptional(tBoolean)\\n });\\n scheme.FrameCheckResult = tOptional(tObject({}));\\n scheme.FrameClickParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n force: tOptional(tBoolean),\\n noWaitAfter: tOptional(tBoolean),\\n modifiers: tOptional(tArray(tEnum([\\\"Alt\\\", \\\"Control\\\", \\\"ControlOrMeta\\\", \\\"Meta\\\", \\\"Shift\\\"]))),\\n position: tOptional(tType(\\\"Point\\\")),\\n delay: tOptional(tFloat),\\n button: tOptional(tEnum([\\\"left\\\", \\\"right\\\", \\\"middle\\\"])),\\n clickCount: tOptional(tInt),\\n timeout: tFloat,\\n trial: tOptional(tBoolean),\\n steps: tOptional(tInt)\\n });\\n scheme.FrameClickResult = tOptional(tObject({}));\\n scheme.FrameContentParams = tOptional(tObject({}));\\n scheme.FrameContentResult = tObject({\\n value: tString\\n });\\n scheme.FrameDragAndDropParams = tObject({\\n source: tString,\\n target: tString,\\n force: tOptional(tBoolean),\\n timeout: tFloat,\\n trial: tOptional(tBoolean),\\n sourcePosition: tOptional(tType(\\\"Point\\\")),\\n targetPosition: tOptional(tType(\\\"Point\\\")),\\n strict: tOptional(tBoolean),\\n steps: tOptional(tInt)\\n });\\n scheme.FrameDragAndDropResult = tOptional(tObject({}));\\n scheme.FrameDblclickParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n force: tOptional(tBoolean),\\n modifiers: tOptional(tArray(tEnum([\\\"Alt\\\", \\\"Control\\\", \\\"ControlOrMeta\\\", \\\"Meta\\\", \\\"Shift\\\"]))),\\n position: tOptional(tType(\\\"Point\\\")),\\n delay: tOptional(tFloat),\\n button: tOptional(tEnum([\\\"left\\\", \\\"right\\\", \\\"middle\\\"])),\\n timeout: tFloat,\\n trial: tOptional(tBoolean),\\n steps: tOptional(tInt)\\n });\\n scheme.FrameDblclickResult = tOptional(tObject({}));\\n scheme.FrameDispatchEventParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n type: tString,\\n eventInit: tType(\\\"SerializedArgument\\\"),\\n timeout: tFloat\\n });\\n scheme.FrameDispatchEventResult = tOptional(tObject({}));\\n scheme.FrameEvaluateExpressionParams = tObject({\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.FrameEvaluateExpressionResult = tObject({\\n value: tType(\\\"SerializedValue\\\")\\n });\\n scheme.FrameEvaluateExpressionHandleParams = tObject({\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.FrameEvaluateExpressionHandleResult = tObject({\\n handle: tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"])\\n });\\n scheme.FrameFillParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n value: tString,\\n force: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameFillResult = tOptional(tObject({}));\\n scheme.FrameFocusParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameFocusResult = tOptional(tObject({}));\\n scheme.FrameFrameElementParams = tOptional(tObject({}));\\n scheme.FrameFrameElementResult = tObject({\\n element: tChannel([\\\"ElementHandle\\\"])\\n });\\n scheme.FrameResolveSelectorParams = tObject({\\n selector: tString\\n });\\n scheme.FrameResolveSelectorResult = tObject({\\n resolvedSelector: tString\\n });\\n scheme.FrameHighlightParams = tObject({\\n selector: tString\\n });\\n scheme.FrameHighlightResult = tOptional(tObject({}));\\n scheme.FrameGetAttributeParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n name: tString,\\n timeout: tFloat\\n });\\n scheme.FrameGetAttributeResult = tObject({\\n value: tOptional(tString)\\n });\\n scheme.FrameGotoParams = tObject({\\n url: tString,\\n timeout: tFloat,\\n waitUntil: tOptional(tType(\\\"LifecycleEvent\\\")),\\n referer: tOptional(tString)\\n });\\n scheme.FrameGotoResult = tObject({\\n response: tOptional(tChannel([\\\"Response\\\"]))\\n });\\n scheme.FrameHoverParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n force: tOptional(tBoolean),\\n modifiers: tOptional(tArray(tEnum([\\\"Alt\\\", \\\"Control\\\", \\\"ControlOrMeta\\\", \\\"Meta\\\", \\\"Shift\\\"]))),\\n position: tOptional(tType(\\\"Point\\\")),\\n timeout: tFloat,\\n trial: tOptional(tBoolean)\\n });\\n scheme.FrameHoverResult = tOptional(tObject({}));\\n scheme.FrameInnerHTMLParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameInnerHTMLResult = tObject({\\n value: tString\\n });\\n scheme.FrameInnerTextParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameInnerTextResult = tObject({\\n value: tString\\n });\\n scheme.FrameInputValueParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameInputValueResult = tObject({\\n value: tString\\n });\\n scheme.FrameIsCheckedParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameIsCheckedResult = tObject({\\n value: tBoolean\\n });\\n scheme.FrameIsDisabledParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameIsDisabledResult = tObject({\\n value: tBoolean\\n });\\n scheme.FrameIsEnabledParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameIsEnabledResult = tObject({\\n value: tBoolean\\n });\\n scheme.FrameIsHiddenParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean)\\n });\\n scheme.FrameIsHiddenResult = tObject({\\n value: tBoolean\\n });\\n scheme.FrameIsVisibleParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean)\\n });\\n scheme.FrameIsVisibleResult = tObject({\\n value: tBoolean\\n });\\n scheme.FrameIsEditableParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameIsEditableResult = tObject({\\n value: tBoolean\\n });\\n scheme.FramePressParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n key: tString,\\n delay: tOptional(tFloat),\\n noWaitAfter: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FramePressResult = tOptional(tObject({}));\\n scheme.FrameQuerySelectorParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean)\\n });\\n scheme.FrameQuerySelectorResult = tObject({\\n element: tOptional(tChannel([\\\"ElementHandle\\\"]))\\n });\\n scheme.FrameQuerySelectorAllParams = tObject({\\n selector: tString\\n });\\n scheme.FrameQuerySelectorAllResult = tObject({\\n elements: tArray(tChannel([\\\"ElementHandle\\\"]))\\n });\\n scheme.FrameQueryCountParams = tObject({\\n selector: tString\\n });\\n scheme.FrameQueryCountResult = tObject({\\n value: tInt\\n });\\n scheme.FrameSelectOptionParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n elements: tOptional(tArray(tChannel([\\\"ElementHandle\\\"]))),\\n options: tOptional(\\n tArray(\\n tObject({\\n valueOrLabel: tOptional(tString),\\n value: tOptional(tString),\\n label: tOptional(tString),\\n index: tOptional(tInt)\\n })\\n )\\n ),\\n force: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameSelectOptionResult = tObject({\\n values: tArray(tString)\\n });\\n scheme.FrameSetContentParams = tObject({\\n html: tString,\\n timeout: tFloat,\\n waitUntil: tOptional(tType(\\\"LifecycleEvent\\\"))\\n });\\n scheme.FrameSetContentResult = tOptional(tObject({}));\\n scheme.FrameSetInputFilesParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n payloads: tOptional(\\n tArray(\\n tObject({\\n name: tString,\\n mimeType: tOptional(tString),\\n buffer: tBinary\\n })\\n )\\n ),\\n localDirectory: tOptional(tString),\\n directoryStream: tOptional(tChannel([\\\"WritableStream\\\"])),\\n localPaths: tOptional(tArray(tString)),\\n streams: tOptional(tArray(tChannel([\\\"WritableStream\\\"]))),\\n timeout: tFloat\\n });\\n scheme.FrameSetInputFilesResult = tOptional(tObject({}));\\n scheme.FrameTapParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n force: tOptional(tBoolean),\\n modifiers: tOptional(tArray(tEnum([\\\"Alt\\\", \\\"Control\\\", \\\"ControlOrMeta\\\", \\\"Meta\\\", \\\"Shift\\\"]))),\\n position: tOptional(tType(\\\"Point\\\")),\\n timeout: tFloat,\\n trial: tOptional(tBoolean)\\n });\\n scheme.FrameTapResult = tOptional(tObject({}));\\n scheme.FrameTextContentParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.FrameTextContentResult = tObject({\\n value: tOptional(tString)\\n });\\n scheme.FrameTitleParams = tOptional(tObject({}));\\n scheme.FrameTitleResult = tObject({\\n value: tString\\n });\\n scheme.FrameTypeParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n text: tString,\\n delay: tOptional(tFloat),\\n timeout: tFloat\\n });\\n scheme.FrameTypeResult = tOptional(tObject({}));\\n scheme.FrameUncheckParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n force: tOptional(tBoolean),\\n position: tOptional(tType(\\\"Point\\\")),\\n timeout: tFloat,\\n trial: tOptional(tBoolean)\\n });\\n scheme.FrameUncheckResult = tOptional(tObject({}));\\n scheme.FrameWaitForTimeoutParams = tObject({\\n waitTimeout: tFloat\\n });\\n scheme.FrameWaitForTimeoutResult = tOptional(tObject({}));\\n scheme.FrameWaitForFunctionParams = tObject({\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\"),\\n timeout: tFloat,\\n pollingInterval: tOptional(tFloat)\\n });\\n scheme.FrameWaitForFunctionResult = tObject({\\n handle: tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"])\\n });\\n scheme.FrameWaitForSelectorParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat,\\n state: tOptional(tEnum([\\\"attached\\\", \\\"detached\\\", \\\"visible\\\", \\\"hidden\\\"])),\\n omitReturnValue: tOptional(tBoolean)\\n });\\n scheme.FrameWaitForSelectorResult = tObject({\\n element: tOptional(tChannel([\\\"ElementHandle\\\"]))\\n });\\n scheme.FrameExpectParams = tObject({\\n selector: tOptional(tString),\\n expression: tString,\\n expressionArg: tOptional(tAny),\\n expectedText: tOptional(tArray(tType(\\\"ExpectedTextValue\\\"))),\\n expectedNumber: tOptional(tFloat),\\n expectedValue: tOptional(tType(\\\"SerializedArgument\\\")),\\n useInnerText: tOptional(tBoolean),\\n isNot: tBoolean,\\n timeout: tFloat\\n });\\n scheme.FrameExpectResult = tObject({\\n matches: tBoolean,\\n received: tOptional(tType(\\\"SerializedValue\\\")),\\n timedOut: tOptional(tBoolean),\\n errorMessage: tOptional(tString),\\n log: tOptional(tArray(tString))\\n });\\n scheme.WorkerInitializer = tObject({\\n url: tString\\n });\\n scheme.WorkerCloseEvent = tOptional(tObject({}));\\n scheme.WorkerEvaluateExpressionParams = tObject({\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.WorkerEvaluateExpressionResult = tObject({\\n value: tType(\\\"SerializedValue\\\")\\n });\\n scheme.WorkerEvaluateExpressionHandleParams = tObject({\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.WorkerEvaluateExpressionHandleResult = tObject({\\n handle: tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"])\\n });\\n scheme.WorkerUpdateSubscriptionParams = tObject({\\n event: tEnum([\\\"console\\\"]),\\n enabled: tBoolean\\n });\\n scheme.WorkerUpdateSubscriptionResult = tOptional(tObject({}));\\n scheme.DisposableInitializer = tOptional(tObject({}));\\n scheme.DisposableDisposeParams = tOptional(tObject({}));\\n scheme.DisposableDisposeResult = tOptional(tObject({}));\\n scheme.JSHandleInitializer = tObject({\\n preview: tString\\n });\\n scheme.JSHandlePreviewUpdatedEvent = tObject({\\n preview: tString\\n });\\n scheme.ElementHandlePreviewUpdatedEvent = tType(\\\"JSHandlePreviewUpdatedEvent\\\");\\n scheme.JSHandleDisposeParams = tOptional(tObject({}));\\n scheme.ElementHandleDisposeParams = tType(\\\"JSHandleDisposeParams\\\");\\n scheme.JSHandleDisposeResult = tOptional(tObject({}));\\n scheme.ElementHandleDisposeResult = tType(\\\"JSHandleDisposeResult\\\");\\n scheme.JSHandleEvaluateExpressionParams = tObject({\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.ElementHandleEvaluateExpressionParams = tType(\\\"JSHandleEvaluateExpressionParams\\\");\\n scheme.JSHandleEvaluateExpressionResult = tObject({\\n value: tType(\\\"SerializedValue\\\")\\n });\\n scheme.ElementHandleEvaluateExpressionResult = tType(\\\"JSHandleEvaluateExpressionResult\\\");\\n scheme.JSHandleEvaluateExpressionHandleParams = tObject({\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.ElementHandleEvaluateExpressionHandleParams = tType(\\n \\\"JSHandleEvaluateExpressionHandleParams\\\"\\n );\\n scheme.JSHandleEvaluateExpressionHandleResult = tObject({\\n handle: tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"])\\n });\\n scheme.ElementHandleEvaluateExpressionHandleResult = tType(\\n \\\"JSHandleEvaluateExpressionHandleResult\\\"\\n );\\n scheme.JSHandleGetPropertyListParams = tOptional(tObject({}));\\n scheme.ElementHandleGetPropertyListParams = tType(\\\"JSHandleGetPropertyListParams\\\");\\n scheme.JSHandleGetPropertyListResult = tObject({\\n properties: tArray(\\n tObject({\\n name: tString,\\n value: tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"])\\n })\\n )\\n });\\n scheme.ElementHandleGetPropertyListResult = tType(\\\"JSHandleGetPropertyListResult\\\");\\n scheme.JSHandleGetPropertyParams = tObject({\\n name: tString\\n });\\n scheme.ElementHandleGetPropertyParams = tType(\\\"JSHandleGetPropertyParams\\\");\\n scheme.JSHandleGetPropertyResult = tObject({\\n handle: tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"])\\n });\\n scheme.ElementHandleGetPropertyResult = tType(\\\"JSHandleGetPropertyResult\\\");\\n scheme.JSHandleJsonValueParams = tOptional(tObject({}));\\n scheme.ElementHandleJsonValueParams = tType(\\\"JSHandleJsonValueParams\\\");\\n scheme.JSHandleJsonValueResult = tObject({\\n value: tType(\\\"SerializedValue\\\")\\n });\\n scheme.ElementHandleJsonValueResult = tType(\\\"JSHandleJsonValueResult\\\");\\n scheme.ElementHandleInitializer = tObject({\\n preview: tString\\n });\\n scheme.ElementHandleEvalOnSelectorParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.ElementHandleEvalOnSelectorResult = tObject({\\n value: tType(\\\"SerializedValue\\\")\\n });\\n scheme.ElementHandleEvalOnSelectorAllParams = tObject({\\n selector: tString,\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.ElementHandleEvalOnSelectorAllResult = tObject({\\n value: tType(\\\"SerializedValue\\\")\\n });\\n scheme.ElementHandleBoundingBoxParams = tOptional(tObject({}));\\n scheme.ElementHandleBoundingBoxResult = tObject({\\n value: tOptional(tType(\\\"Rect\\\"))\\n });\\n scheme.ElementHandleCheckParams = tObject({\\n force: tOptional(tBoolean),\\n position: tOptional(tType(\\\"Point\\\")),\\n timeout: tFloat,\\n trial: tOptional(tBoolean)\\n });\\n scheme.ElementHandleCheckResult = tOptional(tObject({}));\\n scheme.ElementHandleClickParams = tObject({\\n force: tOptional(tBoolean),\\n noWaitAfter: tOptional(tBoolean),\\n modifiers: tOptional(tArray(tEnum([\\\"Alt\\\", \\\"Control\\\", \\\"ControlOrMeta\\\", \\\"Meta\\\", \\\"Shift\\\"]))),\\n position: tOptional(tType(\\\"Point\\\")),\\n delay: tOptional(tFloat),\\n button: tOptional(tEnum([\\\"left\\\", \\\"right\\\", \\\"middle\\\"])),\\n clickCount: tOptional(tInt),\\n timeout: tFloat,\\n trial: tOptional(tBoolean),\\n steps: tOptional(tInt)\\n });\\n scheme.ElementHandleClickResult = tOptional(tObject({}));\\n scheme.ElementHandleContentFrameParams = tOptional(tObject({}));\\n scheme.ElementHandleContentFrameResult = tObject({\\n frame: tOptional(tChannel([\\\"Frame\\\"]))\\n });\\n scheme.ElementHandleDblclickParams = tObject({\\n force: tOptional(tBoolean),\\n modifiers: tOptional(tArray(tEnum([\\\"Alt\\\", \\\"Control\\\", \\\"ControlOrMeta\\\", \\\"Meta\\\", \\\"Shift\\\"]))),\\n position: tOptional(tType(\\\"Point\\\")),\\n delay: tOptional(tFloat),\\n button: tOptional(tEnum([\\\"left\\\", \\\"right\\\", \\\"middle\\\"])),\\n timeout: tFloat,\\n trial: tOptional(tBoolean),\\n steps: tOptional(tInt)\\n });\\n scheme.ElementHandleDblclickResult = tOptional(tObject({}));\\n scheme.ElementHandleDispatchEventParams = tObject({\\n type: tString,\\n eventInit: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.ElementHandleDispatchEventResult = tOptional(tObject({}));\\n scheme.ElementHandleFillParams = tObject({\\n value: tString,\\n force: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.ElementHandleFillResult = tOptional(tObject({}));\\n scheme.ElementHandleFocusParams = tOptional(tObject({}));\\n scheme.ElementHandleFocusResult = tOptional(tObject({}));\\n scheme.ElementHandleGetAttributeParams = tObject({\\n name: tString\\n });\\n scheme.ElementHandleGetAttributeResult = tObject({\\n value: tOptional(tString)\\n });\\n scheme.ElementHandleHoverParams = tObject({\\n force: tOptional(tBoolean),\\n modifiers: tOptional(tArray(tEnum([\\\"Alt\\\", \\\"Control\\\", \\\"ControlOrMeta\\\", \\\"Meta\\\", \\\"Shift\\\"]))),\\n position: tOptional(tType(\\\"Point\\\")),\\n timeout: tFloat,\\n trial: tOptional(tBoolean)\\n });\\n scheme.ElementHandleHoverResult = tOptional(tObject({}));\\n scheme.ElementHandleInnerHTMLParams = tOptional(tObject({}));\\n scheme.ElementHandleInnerHTMLResult = tObject({\\n value: tString\\n });\\n scheme.ElementHandleInnerTextParams = tOptional(tObject({}));\\n scheme.ElementHandleInnerTextResult = tObject({\\n value: tString\\n });\\n scheme.ElementHandleInputValueParams = tOptional(tObject({}));\\n scheme.ElementHandleInputValueResult = tObject({\\n value: tString\\n });\\n scheme.ElementHandleIsCheckedParams = tOptional(tObject({}));\\n scheme.ElementHandleIsCheckedResult = tObject({\\n value: tBoolean\\n });\\n scheme.ElementHandleIsDisabledParams = tOptional(tObject({}));\\n scheme.ElementHandleIsDisabledResult = tObject({\\n value: tBoolean\\n });\\n scheme.ElementHandleIsEditableParams = tOptional(tObject({}));\\n scheme.ElementHandleIsEditableResult = tObject({\\n value: tBoolean\\n });\\n scheme.ElementHandleIsEnabledParams = tOptional(tObject({}));\\n scheme.ElementHandleIsEnabledResult = tObject({\\n value: tBoolean\\n });\\n scheme.ElementHandleIsHiddenParams = tOptional(tObject({}));\\n scheme.ElementHandleIsHiddenResult = tObject({\\n value: tBoolean\\n });\\n scheme.ElementHandleIsVisibleParams = tOptional(tObject({}));\\n scheme.ElementHandleIsVisibleResult = tObject({\\n value: tBoolean\\n });\\n scheme.ElementHandleOwnerFrameParams = tOptional(tObject({}));\\n scheme.ElementHandleOwnerFrameResult = tObject({\\n frame: tOptional(tChannel([\\\"Frame\\\"]))\\n });\\n scheme.ElementHandlePressParams = tObject({\\n key: tString,\\n delay: tOptional(tFloat),\\n timeout: tFloat,\\n noWaitAfter: tOptional(tBoolean)\\n });\\n scheme.ElementHandlePressResult = tOptional(tObject({}));\\n scheme.ElementHandleQuerySelectorParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean)\\n });\\n scheme.ElementHandleQuerySelectorResult = tObject({\\n element: tOptional(tChannel([\\\"ElementHandle\\\"]))\\n });\\n scheme.ElementHandleQuerySelectorAllParams = tObject({\\n selector: tString\\n });\\n scheme.ElementHandleQuerySelectorAllResult = tObject({\\n elements: tArray(tChannel([\\\"ElementHandle\\\"]))\\n });\\n scheme.ElementHandleScreenshotParams = tObject({\\n timeout: tFloat,\\n type: tOptional(tEnum([\\\"png\\\", \\\"jpeg\\\"])),\\n quality: tOptional(tInt),\\n omitBackground: tOptional(tBoolean),\\n caret: tOptional(tEnum([\\\"hide\\\", \\\"initial\\\"])),\\n animations: tOptional(tEnum([\\\"disabled\\\", \\\"allow\\\"])),\\n scale: tOptional(tEnum([\\\"css\\\", \\\"device\\\"])),\\n mask: tOptional(\\n tArray(\\n tObject({\\n frame: tChannel([\\\"Frame\\\"]),\\n selector: tString\\n })\\n )\\n ),\\n maskColor: tOptional(tString),\\n style: tOptional(tString)\\n });\\n scheme.ElementHandleScreenshotResult = tObject({\\n binary: tBinary\\n });\\n scheme.ElementHandleScrollIntoViewIfNeededParams = tObject({\\n timeout: tFloat\\n });\\n scheme.ElementHandleScrollIntoViewIfNeededResult = tOptional(tObject({}));\\n scheme.ElementHandleSelectOptionParams = tObject({\\n elements: tOptional(tArray(tChannel([\\\"ElementHandle\\\"]))),\\n options: tOptional(\\n tArray(\\n tObject({\\n valueOrLabel: tOptional(tString),\\n value: tOptional(tString),\\n label: tOptional(tString),\\n index: tOptional(tInt)\\n })\\n )\\n ),\\n force: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.ElementHandleSelectOptionResult = tObject({\\n values: tArray(tString)\\n });\\n scheme.ElementHandleSelectTextParams = tObject({\\n force: tOptional(tBoolean),\\n timeout: tFloat\\n });\\n scheme.ElementHandleSelectTextResult = tOptional(tObject({}));\\n scheme.ElementHandleSetInputFilesParams = tObject({\\n payloads: tOptional(\\n tArray(\\n tObject({\\n name: tString,\\n mimeType: tOptional(tString),\\n buffer: tBinary\\n })\\n )\\n ),\\n localDirectory: tOptional(tString),\\n directoryStream: tOptional(tChannel([\\\"WritableStream\\\"])),\\n localPaths: tOptional(tArray(tString)),\\n streams: tOptional(tArray(tChannel([\\\"WritableStream\\\"]))),\\n timeout: tFloat\\n });\\n scheme.ElementHandleSetInputFilesResult = tOptional(tObject({}));\\n scheme.ElementHandleTapParams = tObject({\\n force: tOptional(tBoolean),\\n modifiers: tOptional(tArray(tEnum([\\\"Alt\\\", \\\"Control\\\", \\\"ControlOrMeta\\\", \\\"Meta\\\", \\\"Shift\\\"]))),\\n position: tOptional(tType(\\\"Point\\\")),\\n timeout: tFloat,\\n trial: tOptional(tBoolean)\\n });\\n scheme.ElementHandleTapResult = tOptional(tObject({}));\\n scheme.ElementHandleTextContentParams = tOptional(tObject({}));\\n scheme.ElementHandleTextContentResult = tObject({\\n value: tOptional(tString)\\n });\\n scheme.ElementHandleTypeParams = tObject({\\n text: tString,\\n delay: tOptional(tFloat),\\n timeout: tFloat\\n });\\n scheme.ElementHandleTypeResult = tOptional(tObject({}));\\n scheme.ElementHandleUncheckParams = tObject({\\n force: tOptional(tBoolean),\\n position: tOptional(tType(\\\"Point\\\")),\\n timeout: tFloat,\\n trial: tOptional(tBoolean)\\n });\\n scheme.ElementHandleUncheckResult = tOptional(tObject({}));\\n scheme.ElementHandleWaitForElementStateParams = tObject({\\n state: tEnum([\\\"visible\\\", \\\"hidden\\\", \\\"stable\\\", \\\"enabled\\\", \\\"disabled\\\", \\\"editable\\\"]),\\n timeout: tFloat\\n });\\n scheme.ElementHandleWaitForElementStateResult = tOptional(tObject({}));\\n scheme.ElementHandleWaitForSelectorParams = tObject({\\n selector: tString,\\n strict: tOptional(tBoolean),\\n timeout: tFloat,\\n state: tOptional(tEnum([\\\"attached\\\", \\\"detached\\\", \\\"visible\\\", \\\"hidden\\\"]))\\n });\\n scheme.ElementHandleWaitForSelectorResult = tObject({\\n element: tOptional(tChannel([\\\"ElementHandle\\\"]))\\n });\\n scheme.RequestInitializer = tObject({\\n frame: tOptional(tChannel([\\\"Frame\\\"])),\\n serviceWorker: tOptional(tChannel([\\\"Worker\\\"])),\\n url: tString,\\n resourceType: tString,\\n method: tString,\\n postData: tOptional(tBinary),\\n headers: tArray(tType(\\\"NameValue\\\")),\\n isNavigationRequest: tBoolean,\\n redirectedFrom: tOptional(tChannel([\\\"Request\\\"])),\\n hasResponse: tBoolean\\n });\\n scheme.RequestResponseEvent = tOptional(tObject({}));\\n scheme.RequestResponseParams = tOptional(tObject({}));\\n scheme.RequestResponseResult = tObject({\\n response: tOptional(tChannel([\\\"Response\\\"]))\\n });\\n scheme.RequestRawRequestHeadersParams = tOptional(tObject({}));\\n scheme.RequestRawRequestHeadersResult = tObject({\\n headers: tArray(tType(\\\"NameValue\\\"))\\n });\\n scheme.RouteInitializer = tObject({\\n request: tChannel([\\\"Request\\\"])\\n });\\n scheme.RouteRedirectNavigationRequestParams = tObject({\\n url: tString\\n });\\n scheme.RouteRedirectNavigationRequestResult = tOptional(tObject({}));\\n scheme.RouteAbortParams = tObject({\\n errorCode: tOptional(tString)\\n });\\n scheme.RouteAbortResult = tOptional(tObject({}));\\n scheme.RouteContinueParams = tObject({\\n url: tOptional(tString),\\n method: tOptional(tString),\\n headers: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n postData: tOptional(tBinary),\\n isFallback: tBoolean\\n });\\n scheme.RouteContinueResult = tOptional(tObject({}));\\n scheme.RouteFulfillParams = tObject({\\n status: tOptional(tInt),\\n headers: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n body: tOptional(tString),\\n isBase64: tOptional(tBoolean),\\n fetchResponseUid: tOptional(tString)\\n });\\n scheme.RouteFulfillResult = tOptional(tObject({}));\\n scheme.WebSocketRouteInitializer = tObject({\\n url: tString\\n });\\n scheme.WebSocketRouteMessageFromPageEvent = tObject({\\n message: tString,\\n isBase64: tBoolean\\n });\\n scheme.WebSocketRouteMessageFromServerEvent = tObject({\\n message: tString,\\n isBase64: tBoolean\\n });\\n scheme.WebSocketRouteClosePageEvent = tObject({\\n code: tOptional(tInt),\\n reason: tOptional(tString),\\n wasClean: tBoolean\\n });\\n scheme.WebSocketRouteCloseServerEvent = tObject({\\n code: tOptional(tInt),\\n reason: tOptional(tString),\\n wasClean: tBoolean\\n });\\n scheme.WebSocketRouteConnectParams = tOptional(tObject({}));\\n scheme.WebSocketRouteConnectResult = tOptional(tObject({}));\\n scheme.WebSocketRouteEnsureOpenedParams = tOptional(tObject({}));\\n scheme.WebSocketRouteEnsureOpenedResult = tOptional(tObject({}));\\n scheme.WebSocketRouteSendToPageParams = tObject({\\n message: tString,\\n isBase64: tBoolean\\n });\\n scheme.WebSocketRouteSendToPageResult = tOptional(tObject({}));\\n scheme.WebSocketRouteSendToServerParams = tObject({\\n message: tString,\\n isBase64: tBoolean\\n });\\n scheme.WebSocketRouteSendToServerResult = tOptional(tObject({}));\\n scheme.WebSocketRouteClosePageParams = tObject({\\n code: tOptional(tInt),\\n reason: tOptional(tString),\\n wasClean: tBoolean\\n });\\n scheme.WebSocketRouteClosePageResult = tOptional(tObject({}));\\n scheme.WebSocketRouteCloseServerParams = tObject({\\n code: tOptional(tInt),\\n reason: tOptional(tString),\\n wasClean: tBoolean\\n });\\n scheme.WebSocketRouteCloseServerResult = tOptional(tObject({}));\\n scheme.ResourceTiming = tObject({\\n startTime: tFloat,\\n domainLookupStart: tFloat,\\n domainLookupEnd: tFloat,\\n connectStart: tFloat,\\n secureConnectionStart: tFloat,\\n connectEnd: tFloat,\\n requestStart: tFloat,\\n responseStart: tFloat\\n });\\n scheme.ResponseInitializer = tObject({\\n request: tChannel([\\\"Request\\\"]),\\n url: tString,\\n status: tInt,\\n statusText: tString,\\n headers: tArray(tType(\\\"NameValue\\\")),\\n timing: tType(\\\"ResourceTiming\\\"),\\n fromServiceWorker: tBoolean\\n });\\n scheme.ResponseBodyParams = tOptional(tObject({}));\\n scheme.ResponseBodyResult = tObject({\\n binary: tBinary\\n });\\n scheme.ResponseSecurityDetailsParams = tOptional(tObject({}));\\n scheme.ResponseSecurityDetailsResult = tObject({\\n value: tOptional(tType(\\\"SecurityDetails\\\"))\\n });\\n scheme.ResponseServerAddrParams = tOptional(tObject({}));\\n scheme.ResponseServerAddrResult = tObject({\\n value: tOptional(tType(\\\"RemoteAddr\\\"))\\n });\\n scheme.ResponseRawResponseHeadersParams = tOptional(tObject({}));\\n scheme.ResponseRawResponseHeadersResult = tObject({\\n headers: tArray(tType(\\\"NameValue\\\"))\\n });\\n scheme.ResponseHttpVersionParams = tOptional(tObject({}));\\n scheme.ResponseHttpVersionResult = tObject({\\n value: tString\\n });\\n scheme.ResponseSizesParams = tOptional(tObject({}));\\n scheme.ResponseSizesResult = tObject({\\n sizes: tType(\\\"RequestSizes\\\")\\n });\\n scheme.SecurityDetails = tObject({\\n issuer: tOptional(tString),\\n protocol: tOptional(tString),\\n subjectName: tOptional(tString),\\n validFrom: tOptional(tFloat),\\n validTo: tOptional(tFloat)\\n });\\n scheme.RequestSizes = tObject({\\n requestBodySize: tInt,\\n requestHeadersSize: tInt,\\n responseBodySize: tInt,\\n responseHeadersSize: tInt\\n });\\n scheme.RemoteAddr = tObject({\\n ipAddress: tString,\\n port: tInt\\n });\\n scheme.WebSocketInitializer = tObject({\\n url: tString\\n });\\n scheme.WebSocketOpenEvent = tOptional(tObject({}));\\n scheme.WebSocketFrameSentEvent = tObject({\\n opcode: tInt,\\n data: tString\\n });\\n scheme.WebSocketFrameReceivedEvent = tObject({\\n opcode: tInt,\\n data: tString\\n });\\n scheme.WebSocketSocketErrorEvent = tObject({\\n error: tString\\n });\\n scheme.WebSocketCloseEvent = tOptional(tObject({}));\\n scheme.BindingCallInitializer = tObject({\\n frame: tChannel([\\\"Frame\\\"]),\\n name: tString,\\n args: tOptional(tArray(tType(\\\"SerializedValue\\\"))),\\n handle: tOptional(tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"]))\\n });\\n scheme.BindingCallRejectParams = tObject({\\n error: tType(\\\"SerializedError\\\")\\n });\\n scheme.BindingCallRejectResult = tOptional(tObject({}));\\n scheme.BindingCallResolveParams = tObject({\\n result: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.BindingCallResolveResult = tOptional(tObject({}));\\n scheme.DebuggerInitializer = tOptional(tObject({}));\\n scheme.DebuggerPausedStateChangedEvent = tObject({\\n pausedDetails: tArray(\\n tObject({\\n location: tObject({\\n file: tString,\\n line: tOptional(tInt),\\n column: tOptional(tInt)\\n }),\\n title: tString\\n })\\n )\\n });\\n scheme.DebuggerPauseParams = tOptional(tObject({}));\\n scheme.DebuggerPauseResult = tOptional(tObject({}));\\n scheme.DebuggerResumeParams = tOptional(tObject({}));\\n scheme.DebuggerResumeResult = tOptional(tObject({}));\\n scheme.DebuggerNextParams = tOptional(tObject({}));\\n scheme.DebuggerNextResult = tOptional(tObject({}));\\n scheme.DebuggerRunToParams = tObject({\\n location: tObject({\\n file: tString,\\n line: tOptional(tInt),\\n column: tOptional(tInt)\\n })\\n });\\n scheme.DebuggerRunToResult = tOptional(tObject({}));\\n scheme.DialogInitializer = tObject({\\n page: tOptional(tChannel([\\\"Page\\\"])),\\n type: tString,\\n message: tString,\\n defaultValue: tString\\n });\\n scheme.DialogAcceptParams = tObject({\\n promptText: tOptional(tString)\\n });\\n scheme.DialogAcceptResult = tOptional(tObject({}));\\n scheme.DialogDismissParams = tOptional(tObject({}));\\n scheme.DialogDismissResult = tOptional(tObject({}));\\n scheme.TracingInitializer = tOptional(tObject({}));\\n scheme.TracingTracingStartParams = tObject({\\n name: tOptional(tString),\\n snapshots: tOptional(tBoolean),\\n screenshots: tOptional(tBoolean),\\n live: tOptional(tBoolean)\\n });\\n scheme.TracingTracingStartResult = tOptional(tObject({}));\\n scheme.TracingTracingStartChunkParams = tObject({\\n name: tOptional(tString),\\n title: tOptional(tString)\\n });\\n scheme.TracingTracingStartChunkResult = tObject({\\n traceName: tString\\n });\\n scheme.TracingTracingGroupParams = tObject({\\n name: tString,\\n location: tOptional(\\n tObject({\\n file: tString,\\n line: tOptional(tInt),\\n column: tOptional(tInt)\\n })\\n )\\n });\\n scheme.TracingTracingGroupResult = tOptional(tObject({}));\\n scheme.TracingTracingGroupEndParams = tOptional(tObject({}));\\n scheme.TracingTracingGroupEndResult = tOptional(tObject({}));\\n scheme.TracingTracingStopChunkParams = tObject({\\n mode: tEnum([\\\"archive\\\", \\\"discard\\\", \\\"entries\\\"])\\n });\\n scheme.TracingTracingStopChunkResult = tObject({\\n artifact: tOptional(tChannel([\\\"Artifact\\\"])),\\n entries: tOptional(tArray(tType(\\\"NameValue\\\")))\\n });\\n scheme.TracingTracingStopParams = tOptional(tObject({}));\\n scheme.TracingTracingStopResult = tOptional(tObject({}));\\n scheme.ArtifactInitializer = tObject({\\n absolutePath: tString\\n });\\n scheme.ArtifactPathAfterFinishedParams = tOptional(tObject({}));\\n scheme.ArtifactPathAfterFinishedResult = tObject({\\n value: tString\\n });\\n scheme.ArtifactSaveAsParams = tObject({\\n path: tString\\n });\\n scheme.ArtifactSaveAsResult = tOptional(tObject({}));\\n scheme.ArtifactSaveAsStreamParams = tOptional(tObject({}));\\n scheme.ArtifactSaveAsStreamResult = tObject({\\n stream: tChannel([\\\"Stream\\\"])\\n });\\n scheme.ArtifactFailureParams = tOptional(tObject({}));\\n scheme.ArtifactFailureResult = tObject({\\n error: tOptional(tString)\\n });\\n scheme.ArtifactStreamParams = tOptional(tObject({}));\\n scheme.ArtifactStreamResult = tObject({\\n stream: tChannel([\\\"Stream\\\"])\\n });\\n scheme.ArtifactCancelParams = tOptional(tObject({}));\\n scheme.ArtifactCancelResult = tOptional(tObject({}));\\n scheme.ArtifactDeleteParams = tOptional(tObject({}));\\n scheme.ArtifactDeleteResult = tOptional(tObject({}));\\n scheme.StreamInitializer = tOptional(tObject({}));\\n scheme.StreamReadParams = tObject({\\n size: tOptional(tInt)\\n });\\n scheme.StreamReadResult = tObject({\\n binary: tBinary\\n });\\n scheme.StreamCloseParams = tOptional(tObject({}));\\n scheme.StreamCloseResult = tOptional(tObject({}));\\n scheme.WritableStreamInitializer = tOptional(tObject({}));\\n scheme.WritableStreamWriteParams = tObject({\\n binary: tBinary\\n });\\n scheme.WritableStreamWriteResult = tOptional(tObject({}));\\n scheme.WritableStreamCloseParams = tOptional(tObject({}));\\n scheme.WritableStreamCloseResult = tOptional(tObject({}));\\n scheme.CDPSessionInitializer = tOptional(tObject({}));\\n scheme.CDPSessionEventEvent = tObject({\\n method: tString,\\n params: tOptional(tAny)\\n });\\n scheme.CDPSessionCloseEvent = tOptional(tObject({}));\\n scheme.CDPSessionSendParams = tObject({\\n method: tString,\\n params: tOptional(tAny)\\n });\\n scheme.CDPSessionSendResult = tObject({\\n result: tAny\\n });\\n scheme.CDPSessionDetachParams = tOptional(tObject({}));\\n scheme.CDPSessionDetachResult = tOptional(tObject({}));\\n scheme.ElectronInitializer = tOptional(tObject({}));\\n scheme.ElectronLaunchParams = tObject({\\n executablePath: tOptional(tString),\\n args: tOptional(tArray(tString)),\\n chromiumSandbox: tOptional(tBoolean),\\n cwd: tOptional(tString),\\n env: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n timeout: tFloat,\\n acceptDownloads: tOptional(tEnum([\\\"accept\\\", \\\"deny\\\", \\\"internal-browser-default\\\"])),\\n bypassCSP: tOptional(tBoolean),\\n colorScheme: tOptional(tEnum([\\\"dark\\\", \\\"light\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n extraHTTPHeaders: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n geolocation: tOptional(\\n tObject({\\n longitude: tFloat,\\n latitude: tFloat,\\n accuracy: tOptional(tFloat)\\n })\\n ),\\n httpCredentials: tOptional(\\n tObject({\\n username: tString,\\n password: tString,\\n origin: tOptional(tString)\\n })\\n ),\\n ignoreHTTPSErrors: tOptional(tBoolean),\\n locale: tOptional(tString),\\n offline: tOptional(tBoolean),\\n recordVideo: tOptional(\\n tObject({\\n dir: tString,\\n size: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n )\\n })\\n ),\\n strictSelectors: tOptional(tBoolean),\\n timezoneId: tOptional(tString),\\n tracesDir: tOptional(tString),\\n selectorEngines: tOptional(tArray(tType(\\\"SelectorEngine\\\"))),\\n testIdAttributeName: tOptional(tString)\\n });\\n scheme.ElectronLaunchResult = tObject({\\n electronApplication: tChannel([\\\"ElectronApplication\\\"])\\n });\\n scheme.ElectronApplicationInitializer = tObject({\\n context: tChannel([\\\"BrowserContext\\\"])\\n });\\n scheme.ElectronApplicationCloseEvent = tOptional(tObject({}));\\n scheme.ElectronApplicationConsoleEvent = tObject({\\n type: tString,\\n text: tString,\\n args: tArray(tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"])),\\n location: tObject({\\n url: tString,\\n lineNumber: tInt,\\n columnNumber: tInt\\n }),\\n timestamp: tFloat\\n });\\n scheme.ElectronApplicationBrowserWindowParams = tObject({\\n page: tChannel([\\\"Page\\\"])\\n });\\n scheme.ElectronApplicationBrowserWindowResult = tObject({\\n handle: tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"])\\n });\\n scheme.ElectronApplicationEvaluateExpressionParams = tObject({\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.ElectronApplicationEvaluateExpressionResult = tObject({\\n value: tType(\\\"SerializedValue\\\")\\n });\\n scheme.ElectronApplicationEvaluateExpressionHandleParams = tObject({\\n expression: tString,\\n isFunction: tOptional(tBoolean),\\n arg: tType(\\\"SerializedArgument\\\")\\n });\\n scheme.ElectronApplicationEvaluateExpressionHandleResult = tObject({\\n handle: tChannel([\\\"ElementHandle\\\", \\\"JSHandle\\\"])\\n });\\n scheme.ElectronApplicationUpdateSubscriptionParams = tObject({\\n event: tEnum([\\\"console\\\"]),\\n enabled: tBoolean\\n });\\n scheme.ElectronApplicationUpdateSubscriptionResult = tOptional(tObject({}));\\n scheme.AndroidInitializer = tOptional(tObject({}));\\n scheme.AndroidDevicesParams = tObject({\\n host: tOptional(tString),\\n port: tOptional(tInt),\\n omitDriverInstall: tOptional(tBoolean)\\n });\\n scheme.AndroidDevicesResult = tObject({\\n devices: tArray(tChannel([\\\"AndroidDevice\\\"]))\\n });\\n scheme.AndroidSocketInitializer = tOptional(tObject({}));\\n scheme.AndroidSocketDataEvent = tObject({\\n data: tBinary\\n });\\n scheme.AndroidSocketCloseEvent = tOptional(tObject({}));\\n scheme.AndroidSocketWriteParams = tObject({\\n data: tBinary\\n });\\n scheme.AndroidSocketWriteResult = tOptional(tObject({}));\\n scheme.AndroidSocketCloseParams = tOptional(tObject({}));\\n scheme.AndroidSocketCloseResult = tOptional(tObject({}));\\n scheme.AndroidDeviceInitializer = tObject({\\n model: tString,\\n serial: tString\\n });\\n scheme.AndroidDeviceCloseEvent = tOptional(tObject({}));\\n scheme.AndroidDeviceWebViewAddedEvent = tObject({\\n webView: tType(\\\"AndroidWebView\\\")\\n });\\n scheme.AndroidDeviceWebViewRemovedEvent = tObject({\\n socketName: tString\\n });\\n scheme.AndroidDeviceWaitParams = tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\"),\\n state: tOptional(tEnum([\\\"gone\\\"])),\\n timeout: tFloat\\n });\\n scheme.AndroidDeviceWaitResult = tOptional(tObject({}));\\n scheme.AndroidDeviceFillParams = tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\"),\\n text: tString,\\n timeout: tFloat\\n });\\n scheme.AndroidDeviceFillResult = tOptional(tObject({}));\\n scheme.AndroidDeviceTapParams = tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\"),\\n duration: tOptional(tFloat),\\n timeout: tFloat\\n });\\n scheme.AndroidDeviceTapResult = tOptional(tObject({}));\\n scheme.AndroidDeviceDragParams = tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\"),\\n dest: tType(\\\"Point\\\"),\\n speed: tOptional(tFloat),\\n timeout: tFloat\\n });\\n scheme.AndroidDeviceDragResult = tOptional(tObject({}));\\n scheme.AndroidDeviceFlingParams = tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\"),\\n direction: tEnum([\\\"up\\\", \\\"down\\\", \\\"left\\\", \\\"right\\\"]),\\n speed: tOptional(tFloat),\\n timeout: tFloat\\n });\\n scheme.AndroidDeviceFlingResult = tOptional(tObject({}));\\n scheme.AndroidDeviceLongTapParams = tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\"),\\n timeout: tFloat\\n });\\n scheme.AndroidDeviceLongTapResult = tOptional(tObject({}));\\n scheme.AndroidDevicePinchCloseParams = tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\"),\\n percent: tFloat,\\n speed: tOptional(tFloat),\\n timeout: tFloat\\n });\\n scheme.AndroidDevicePinchCloseResult = tOptional(tObject({}));\\n scheme.AndroidDevicePinchOpenParams = tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\"),\\n percent: tFloat,\\n speed: tOptional(tFloat),\\n timeout: tFloat\\n });\\n scheme.AndroidDevicePinchOpenResult = tOptional(tObject({}));\\n scheme.AndroidDeviceScrollParams = tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\"),\\n direction: tEnum([\\\"up\\\", \\\"down\\\", \\\"left\\\", \\\"right\\\"]),\\n percent: tFloat,\\n speed: tOptional(tFloat),\\n timeout: tFloat\\n });\\n scheme.AndroidDeviceScrollResult = tOptional(tObject({}));\\n scheme.AndroidDeviceSwipeParams = tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\"),\\n direction: tEnum([\\\"up\\\", \\\"down\\\", \\\"left\\\", \\\"right\\\"]),\\n percent: tFloat,\\n speed: tOptional(tFloat),\\n timeout: tFloat\\n });\\n scheme.AndroidDeviceSwipeResult = tOptional(tObject({}));\\n scheme.AndroidDeviceInfoParams = tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\")\\n });\\n scheme.AndroidDeviceInfoResult = tObject({\\n info: tType(\\\"AndroidElementInfo\\\")\\n });\\n scheme.AndroidDeviceScreenshotParams = tOptional(tObject({}));\\n scheme.AndroidDeviceScreenshotResult = tObject({\\n binary: tBinary\\n });\\n scheme.AndroidDeviceInputTypeParams = tObject({\\n text: tString\\n });\\n scheme.AndroidDeviceInputTypeResult = tOptional(tObject({}));\\n scheme.AndroidDeviceInputPressParams = tObject({\\n key: tString\\n });\\n scheme.AndroidDeviceInputPressResult = tOptional(tObject({}));\\n scheme.AndroidDeviceInputTapParams = tObject({\\n point: tType(\\\"Point\\\")\\n });\\n scheme.AndroidDeviceInputTapResult = tOptional(tObject({}));\\n scheme.AndroidDeviceInputSwipeParams = tObject({\\n segments: tArray(tType(\\\"Point\\\")),\\n steps: tInt\\n });\\n scheme.AndroidDeviceInputSwipeResult = tOptional(tObject({}));\\n scheme.AndroidDeviceInputDragParams = tObject({\\n from: tType(\\\"Point\\\"),\\n to: tType(\\\"Point\\\"),\\n steps: tInt\\n });\\n scheme.AndroidDeviceInputDragResult = tOptional(tObject({}));\\n scheme.AndroidDeviceLaunchBrowserParams = tObject({\\n noDefaultViewport: tOptional(tBoolean),\\n viewport: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n screen: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n ),\\n ignoreHTTPSErrors: tOptional(tBoolean),\\n clientCertificates: tOptional(\\n tArray(\\n tObject({\\n origin: tString,\\n cert: tOptional(tBinary),\\n key: tOptional(tBinary),\\n passphrase: tOptional(tString),\\n pfx: tOptional(tBinary)\\n })\\n )\\n ),\\n javaScriptEnabled: tOptional(tBoolean),\\n bypassCSP: tOptional(tBoolean),\\n userAgent: tOptional(tString),\\n locale: tOptional(tString),\\n timezoneId: tOptional(tString),\\n geolocation: tOptional(\\n tObject({\\n longitude: tFloat,\\n latitude: tFloat,\\n accuracy: tOptional(tFloat)\\n })\\n ),\\n permissions: tOptional(tArray(tString)),\\n extraHTTPHeaders: tOptional(tArray(tType(\\\"NameValue\\\"))),\\n offline: tOptional(tBoolean),\\n httpCredentials: tOptional(\\n tObject({\\n username: tString,\\n password: tString,\\n origin: tOptional(tString),\\n send: tOptional(tEnum([\\\"always\\\", \\\"unauthorized\\\"]))\\n })\\n ),\\n deviceScaleFactor: tOptional(tFloat),\\n isMobile: tOptional(tBoolean),\\n hasTouch: tOptional(tBoolean),\\n colorScheme: tOptional(tEnum([\\\"dark\\\", \\\"light\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n reducedMotion: tOptional(tEnum([\\\"reduce\\\", \\\"no-preference\\\", \\\"no-override\\\"])),\\n forcedColors: tOptional(tEnum([\\\"active\\\", \\\"none\\\", \\\"no-override\\\"])),\\n acceptDownloads: tOptional(tEnum([\\\"accept\\\", \\\"deny\\\", \\\"internal-browser-default\\\"])),\\n contrast: tOptional(tEnum([\\\"no-preference\\\", \\\"more\\\", \\\"no-override\\\"])),\\n baseURL: tOptional(tString),\\n recordVideo: tOptional(\\n tObject({\\n dir: tString,\\n size: tOptional(\\n tObject({\\n width: tInt,\\n height: tInt\\n })\\n )\\n })\\n ),\\n strictSelectors: tOptional(tBoolean),\\n serviceWorkers: tOptional(tEnum([\\\"allow\\\", \\\"block\\\"])),\\n selectorEngines: tOptional(tArray(tType(\\\"SelectorEngine\\\"))),\\n testIdAttributeName: tOptional(tString),\\n pkg: tOptional(tString),\\n args: tOptional(tArray(tString)),\\n proxy: tOptional(\\n tObject({\\n server: tString,\\n bypass: tOptional(tString),\\n username: tOptional(tString),\\n password: tOptional(tString)\\n })\\n )\\n });\\n scheme.AndroidDeviceLaunchBrowserResult = tObject({\\n context: tChannel([\\\"BrowserContext\\\"])\\n });\\n scheme.AndroidDeviceOpenParams = tObject({\\n command: tString\\n });\\n scheme.AndroidDeviceOpenResult = tObject({\\n socket: tChannel([\\\"AndroidSocket\\\"])\\n });\\n scheme.AndroidDeviceShellParams = tObject({\\n command: tString\\n });\\n scheme.AndroidDeviceShellResult = tObject({\\n result: tBinary\\n });\\n scheme.AndroidDeviceInstallApkParams = tObject({\\n file: tBinary,\\n args: tOptional(tArray(tString))\\n });\\n scheme.AndroidDeviceInstallApkResult = tOptional(tObject({}));\\n scheme.AndroidDevicePushParams = tObject({\\n file: tBinary,\\n path: tString,\\n mode: tOptional(tInt)\\n });\\n scheme.AndroidDevicePushResult = tOptional(tObject({}));\\n scheme.AndroidDeviceConnectToWebViewParams = tObject({\\n socketName: tString\\n });\\n scheme.AndroidDeviceConnectToWebViewResult = tObject({\\n context: tChannel([\\\"BrowserContext\\\"])\\n });\\n scheme.AndroidDeviceCloseParams = tOptional(tObject({}));\\n scheme.AndroidDeviceCloseResult = tOptional(tObject({}));\\n scheme.AndroidWebView = tObject({\\n pid: tInt,\\n pkg: tString,\\n socketName: tString\\n });\\n scheme.AndroidSelector = tObject({\\n checkable: tOptional(tBoolean),\\n checked: tOptional(tBoolean),\\n clazz: tOptional(tString),\\n clickable: tOptional(tBoolean),\\n depth: tOptional(tInt),\\n desc: tOptional(tString),\\n enabled: tOptional(tBoolean),\\n focusable: tOptional(tBoolean),\\n focused: tOptional(tBoolean),\\n hasChild: tOptional(\\n tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\")\\n })\\n ),\\n hasDescendant: tOptional(\\n tObject({\\n androidSelector: tType(\\\"AndroidSelector\\\"),\\n maxDepth: tOptional(tInt)\\n })\\n ),\\n longClickable: tOptional(tBoolean),\\n pkg: tOptional(tString),\\n res: tOptional(tString),\\n scrollable: tOptional(tBoolean),\\n selected: tOptional(tBoolean),\\n text: tOptional(tString)\\n });\\n scheme.AndroidElementInfo = tObject({\\n children: tOptional(tArray(tType(\\\"AndroidElementInfo\\\"))),\\n clazz: tString,\\n desc: tString,\\n res: tString,\\n pkg: tString,\\n text: tString,\\n bounds: tType(\\\"Rect\\\"),\\n checkable: tBoolean,\\n checked: tBoolean,\\n clickable: tBoolean,\\n enabled: tBoolean,\\n focusable: tBoolean,\\n focused: tBoolean,\\n longClickable: tBoolean,\\n scrollable: tBoolean,\\n selected: tBoolean\\n });\\n scheme.JsonPipeInitializer = tOptional(tObject({}));\\n scheme.JsonPipeMessageEvent = tObject({\\n message: tAny\\n });\\n scheme.JsonPipeClosedEvent = tObject({\\n reason: tOptional(tString)\\n });\\n scheme.JsonPipeSendParams = tObject({\\n message: tAny\\n });\\n scheme.JsonPipeSendResult = tOptional(tObject({}));\\n scheme.JsonPipeCloseParams = tOptional(tObject({}));\\n scheme.JsonPipeCloseResult = tOptional(tObject({}));\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/protocolMetainfo.ts\\n var methodMetainfo = /* @__PURE__ */ new Map([\\n [\\\"APIRequestContext.fetch\\\", { title: '{method} \\\"{url}\\\"' }],\\n [\\\"APIRequestContext.fetchResponseBody\\\", { title: \\\"Get response body\\\", group: \\\"getter\\\" }],\\n [\\\"APIRequestContext.fetchLog\\\", { internal: true }],\\n [\\\"APIRequestContext.storageState\\\", { title: \\\"Get storage state\\\", group: \\\"configuration\\\" }],\\n [\\\"APIRequestContext.disposeAPIResponse\\\", { internal: true }],\\n [\\\"APIRequestContext.dispose\\\", { internal: true }],\\n [\\\"LocalUtils.zip\\\", { internal: true }],\\n [\\\"LocalUtils.harOpen\\\", { internal: true }],\\n [\\\"LocalUtils.harLookup\\\", { internal: true }],\\n [\\\"LocalUtils.harClose\\\", { internal: true }],\\n [\\\"LocalUtils.harUnzip\\\", { internal: true }],\\n [\\\"LocalUtils.connect\\\", { internal: true }],\\n [\\\"LocalUtils.tracingStarted\\\", { internal: true }],\\n [\\\"LocalUtils.addStackToTracingNoReply\\\", { internal: true }],\\n [\\\"LocalUtils.traceDiscarded\\\", { internal: true }],\\n [\\\"LocalUtils.globToRegex\\\", { internal: true }],\\n [\\\"Root.initialize\\\", { internal: true }],\\n [\\\"Playwright.newRequest\\\", { title: \\\"Create request context\\\" }],\\n [\\\"DebugController.initialize\\\", { internal: true }],\\n [\\\"DebugController.setReportStateChanged\\\", { internal: true }],\\n [\\\"DebugController.setRecorderMode\\\", { internal: true }],\\n [\\\"DebugController.highlight\\\", { internal: true }],\\n [\\\"DebugController.hideHighlight\\\", { internal: true }],\\n [\\\"DebugController.resume\\\", { internal: true }],\\n [\\\"DebugController.kill\\\", { internal: true }],\\n [\\\"SocksSupport.socksConnected\\\", { internal: true }],\\n [\\\"SocksSupport.socksFailed\\\", { internal: true }],\\n [\\\"SocksSupport.socksData\\\", { internal: true }],\\n [\\\"SocksSupport.socksError\\\", { internal: true }],\\n [\\\"SocksSupport.socksEnd\\\", { internal: true }],\\n [\\\"BrowserType.launch\\\", { title: \\\"Launch browser\\\" }],\\n [\\\"BrowserType.launchPersistentContext\\\", { title: \\\"Launch persistent context\\\" }],\\n [\\\"BrowserType.connectOverCDP\\\", { title: \\\"Connect over CDP\\\" }],\\n [\\\"BrowserType.connectOverCDPTransport\\\", { title: \\\"Connect over CDP transport\\\" }],\\n [\\\"Browser.startServer\\\", { title: \\\"Start server\\\" }],\\n [\\\"Browser.stopServer\\\", { title: \\\"Stop server\\\" }],\\n [\\\"Browser.close\\\", { title: \\\"Close browser\\\", pausesBeforeAction: true }],\\n [\\\"Browser.killForTests\\\", { internal: true }],\\n [\\\"Browser.defaultUserAgentForTest\\\", { internal: true }],\\n [\\\"Browser.newContext\\\", { title: \\\"Create context\\\" }],\\n [\\\"Browser.newContextForReuse\\\", { internal: true }],\\n [\\\"Browser.disconnectFromReusedContext\\\", { internal: true }],\\n [\\\"Browser.newBrowserCDPSession\\\", { title: \\\"Create CDP session\\\", group: \\\"configuration\\\" }],\\n [\\\"Browser.startTracing\\\", { title: \\\"Start browser tracing\\\", group: \\\"configuration\\\" }],\\n [\\\"Browser.stopTracing\\\", { title: \\\"Stop browser tracing\\\", group: \\\"configuration\\\" }],\\n [\\\"EventTarget.waitForEventInfo\\\", { title: 'Wait for event \\\"{info.event}\\\"', snapshot: true }],\\n [\\\"BrowserContext.waitForEventInfo\\\", { title: 'Wait for event \\\"{info.event}\\\"', snapshot: true }],\\n [\\\"Page.waitForEventInfo\\\", { title: 'Wait for event \\\"{info.event}\\\"', snapshot: true }],\\n [\\\"Worker.waitForEventInfo\\\", { title: 'Wait for event \\\"{info.event}\\\"', snapshot: true }],\\n [\\\"WebSocket.waitForEventInfo\\\", { title: 'Wait for event \\\"{info.event}\\\"', snapshot: true }],\\n [\\\"Debugger.waitForEventInfo\\\", { title: 'Wait for event \\\"{info.event}\\\"', snapshot: true }],\\n [\\n \\\"ElectronApplication.waitForEventInfo\\\",\\n { title: 'Wait for event \\\"{info.event}\\\"', snapshot: true }\\n ],\\n [\\\"AndroidDevice.waitForEventInfo\\\", { title: 'Wait for event \\\"{info.event}\\\"', snapshot: true }],\\n [\\\"BrowserContext.addCookies\\\", { title: \\\"Add cookies\\\", group: \\\"configuration\\\" }],\\n [\\\"BrowserContext.addInitScript\\\", { title: \\\"Add init script\\\", group: \\\"configuration\\\" }],\\n [\\\"BrowserContext.clearCookies\\\", { title: \\\"Clear cookies\\\", group: \\\"configuration\\\" }],\\n [\\\"BrowserContext.clearPermissions\\\", { title: \\\"Clear permissions\\\", group: \\\"configuration\\\" }],\\n [\\\"BrowserContext.close\\\", { title: \\\"Close context\\\", pausesBeforeAction: true }],\\n [\\\"BrowserContext.cookies\\\", { title: \\\"Get cookies\\\", group: \\\"getter\\\" }],\\n [\\\"BrowserContext.exposeBinding\\\", { title: \\\"Expose binding\\\", group: \\\"configuration\\\" }],\\n [\\\"BrowserContext.grantPermissions\\\", { title: \\\"Grant permissions\\\", group: \\\"configuration\\\" }],\\n [\\\"BrowserContext.newPage\\\", { title: \\\"Create page\\\" }],\\n [\\\"BrowserContext.registerSelectorEngine\\\", { internal: true }],\\n [\\\"BrowserContext.setTestIdAttributeName\\\", { internal: true }],\\n [\\n \\\"BrowserContext.setExtraHTTPHeaders\\\",\\n { title: \\\"Set extra HTTP headers\\\", group: \\\"configuration\\\" }\\n ],\\n [\\\"BrowserContext.setGeolocation\\\", { title: \\\"Set geolocation\\\", group: \\\"configuration\\\" }],\\n [\\\"BrowserContext.setHTTPCredentials\\\", { title: \\\"Set HTTP credentials\\\", group: \\\"configuration\\\" }],\\n [\\\"BrowserContext.setNetworkInterceptionPatterns\\\", { title: \\\"Route requests\\\", group: \\\"route\\\" }],\\n [\\n \\\"BrowserContext.setWebSocketInterceptionPatterns\\\",\\n { title: \\\"Route WebSockets\\\", group: \\\"route\\\" }\\n ],\\n [\\\"BrowserContext.setOffline\\\", { title: \\\"Set offline mode\\\" }],\\n [\\\"BrowserContext.storageState\\\", { title: \\\"Get storage state\\\", group: \\\"configuration\\\" }],\\n [\\\"BrowserContext.setStorageState\\\", { title: \\\"Set storage state\\\", group: \\\"configuration\\\" }],\\n [\\\"BrowserContext.pause\\\", { title: \\\"Pause\\\" }],\\n [\\\"BrowserContext.enableRecorder\\\", { internal: true }],\\n [\\\"BrowserContext.disableRecorder\\\", { internal: true }],\\n [\\\"BrowserContext.exposeConsoleApi\\\", { internal: true }],\\n [\\\"BrowserContext.newCDPSession\\\", { title: \\\"Create CDP session\\\", group: \\\"configuration\\\" }],\\n [\\\"BrowserContext.harStart\\\", { internal: true }],\\n [\\\"BrowserContext.harExport\\\", { internal: true }],\\n [\\\"BrowserContext.createTempFiles\\\", { internal: true }],\\n [\\\"BrowserContext.updateSubscription\\\", { internal: true }],\\n [\\\"BrowserContext.clockFastForward\\\", { title: 'Fast forward clock \\\"{ticksNumber|ticksString}\\\"' }],\\n [\\\"BrowserContext.clockInstall\\\", { title: 'Install clock \\\"{timeNumber|timeString}\\\"' }],\\n [\\\"BrowserContext.clockPauseAt\\\", { title: 'Pause clock \\\"{timeNumber|timeString}\\\"' }],\\n [\\\"BrowserContext.clockResume\\\", { title: \\\"Resume clock\\\" }],\\n [\\\"BrowserContext.clockRunFor\\\", { title: 'Run clock \\\"{ticksNumber|ticksString}\\\"' }],\\n [\\\"BrowserContext.clockSetFixedTime\\\", { title: 'Set fixed time \\\"{timeNumber|timeString}\\\"' }],\\n [\\\"BrowserContext.clockSetSystemTime\\\", { title: 'Set system time \\\"{timeNumber|timeString}\\\"' }],\\n [\\\"Page.addInitScript\\\", { title: \\\"Add init script\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.close\\\", { title: \\\"Close page\\\", pausesBeforeAction: true }],\\n [\\\"Page.clearConsoleMessages\\\", { title: \\\"Clear console messages\\\" }],\\n [\\\"Page.consoleMessages\\\", { title: \\\"Get console messages\\\", group: \\\"getter\\\" }],\\n [\\\"Page.emulateMedia\\\", { title: \\\"Emulate media\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\\"Page.exposeBinding\\\", { title: \\\"Expose binding\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.goBack\\\", { title: \\\"Go back\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }],\\n [\\n \\\"Page.goForward\\\",\\n { title: \\\"Go forward\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\\"Page.requestGC\\\", { title: \\\"Request garbage collection\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.registerLocatorHandler\\\", { title: \\\"Register locator handler\\\" }],\\n [\\\"Page.resolveLocatorHandlerNoReply\\\", { internal: true }],\\n [\\\"Page.unregisterLocatorHandler\\\", { title: \\\"Unregister locator handler\\\" }],\\n [\\\"Page.reload\\\", { title: \\\"Reload\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }],\\n [\\n \\\"Page.expectScreenshot\\\",\\n { title: \\\"Expect screenshot\\\", snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\\"Page.screenshot\\\", { title: \\\"Screenshot\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\\"Page.setExtraHTTPHeaders\\\", { title: \\\"Set extra HTTP headers\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.setNetworkInterceptionPatterns\\\", { title: \\\"Route requests\\\", group: \\\"route\\\" }],\\n [\\\"Page.setWebSocketInterceptionPatterns\\\", { title: \\\"Route WebSockets\\\", group: \\\"route\\\" }],\\n [\\n \\\"Page.setViewportSize\\\",\\n { title: \\\"Set viewport size\\\", snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"Page.keyboardDown\\\",\\n { title: 'Key down \\\"{key}\\\"', slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"Page.keyboardUp\\\",\\n { title: 'Key up \\\"{key}\\\"', slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"Page.keyboardInsertText\\\",\\n { title: 'Insert \\\"{text}\\\"', slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"Page.keyboardType\\\",\\n { title: 'Type \\\"{text}\\\"', slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"Page.keyboardPress\\\",\\n { title: 'Press \\\"{key}\\\"', slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"Page.mouseMove\\\",\\n { title: \\\"Mouse move\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"Page.mouseDown\\\",\\n { title: \\\"Mouse down\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\\"Page.mouseUp\\\", { title: \\\"Mouse up\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }],\\n [\\\"Page.mouseClick\\\", { title: \\\"Click\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }],\\n [\\n \\\"Page.mouseWheel\\\",\\n { title: \\\"Mouse wheel\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\\"Page.touchscreenTap\\\", { title: \\\"Tap\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }],\\n [\\\"Page.clearPageErrors\\\", { title: \\\"Clear page errors\\\" }],\\n [\\\"Page.pageErrors\\\", { title: \\\"Get page errors\\\", group: \\\"getter\\\" }],\\n [\\\"Page.pdf\\\", { title: \\\"PDF\\\" }],\\n [\\\"Page.requests\\\", { title: \\\"Get network requests\\\", group: \\\"getter\\\" }],\\n [\\\"Page.snapshotForAI\\\", { internal: true }],\\n [\\\"Page.startJSCoverage\\\", { title: \\\"Start JS coverage\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.stopJSCoverage\\\", { title: \\\"Stop JS coverage\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.startCSSCoverage\\\", { title: \\\"Start CSS coverage\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.stopCSSCoverage\\\", { title: \\\"Stop CSS coverage\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.bringToFront\\\", { title: \\\"Bring to front\\\" }],\\n [\\\"Page.pickLocator\\\", { title: \\\"Pick locator\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.cancelPickLocator\\\", { title: \\\"Cancel pick locator\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.startScreencast\\\", { title: \\\"Start screencast\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.stopScreencast\\\", { title: \\\"Stop screencast\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.videoStart\\\", { title: \\\"Start video recording\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.videoStop\\\", { title: \\\"Stop video recording\\\", group: \\\"configuration\\\" }],\\n [\\\"Page.updateSubscription\\\", { internal: true }],\\n [\\\"Page.setDockTile\\\", { internal: true }],\\n [\\\"Frame.evalOnSelector\\\", { title: \\\"Evaluate\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\\"Frame.evalOnSelectorAll\\\", { title: \\\"Evaluate\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\\"Frame.addScriptTag\\\", { title: \\\"Add script tag\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\\"Frame.addStyleTag\\\", { title: \\\"Add style tag\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\\"Frame.ariaSnapshot\\\", { title: \\\"Aria snapshot\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\\"Frame.blur\\\", { title: \\\"Blur\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }],\\n [\\\"Frame.check\\\", { title: \\\"Check\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }],\\n [\\\"Frame.click\\\", { title: \\\"Click\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }],\\n [\\\"Frame.content\\\", { title: \\\"Get content\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\n \\\"Frame.dragAndDrop\\\",\\n { title: \\\"Drag and drop\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\n \\\"Frame.dblclick\\\",\\n { title: \\\"Double click\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\n \\\"Frame.dispatchEvent\\\",\\n { title: 'Dispatch \\\"{type}\\\"', slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\\"Frame.evaluateExpression\\\", { title: \\\"Evaluate\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\n \\\"Frame.evaluateExpressionHandle\\\",\\n { title: \\\"Evaluate\\\", snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"Frame.fill\\\",\\n { title: 'Fill \\\"{value}\\\"', slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\\"Frame.focus\\\", { title: \\\"Focus\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }],\\n [\\\"Frame.frameElement\\\", { title: \\\"Get frame element\\\", group: \\\"getter\\\" }],\\n [\\\"Frame.resolveSelector\\\", { internal: true }],\\n [\\\"Frame.highlight\\\", { title: \\\"Highlight element\\\", group: \\\"configuration\\\" }],\\n [\\n \\\"Frame.getAttribute\\\",\\n { title: 'Get attribute \\\"{name}\\\"', snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"Frame.goto\\\",\\n { title: 'Navigate to \\\"{url}\\\"', slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\\"Frame.hover\\\", { title: \\\"Hover\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }],\\n [\\n \\\"Frame.innerHTML\\\",\\n { title: \\\"Get HTML\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"Frame.innerText\\\",\\n { title: \\\"Get inner text\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"Frame.inputValue\\\",\\n { title: \\\"Get input value\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"Frame.isChecked\\\",\\n { title: \\\"Is checked\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"Frame.isDisabled\\\",\\n { title: \\\"Is disabled\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"Frame.isEnabled\\\",\\n { title: \\\"Is enabled\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"Frame.isHidden\\\",\\n { title: \\\"Is hidden\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"Frame.isVisible\\\",\\n { title: \\\"Is visible\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"Frame.isEditable\\\",\\n { title: \\\"Is editable\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"Frame.press\\\",\\n { title: 'Press \\\"{key}\\\"', slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\\"Frame.querySelector\\\", { title: \\\"Query selector\\\", snapshot: true }],\\n [\\\"Frame.querySelectorAll\\\", { title: \\\"Query selector all\\\", snapshot: true }],\\n [\\\"Frame.queryCount\\\", { title: \\\"Query count\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\n \\\"Frame.selectOption\\\",\\n { title: \\\"Select option\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\\"Frame.setContent\\\", { title: \\\"Set content\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\n \\\"Frame.setInputFiles\\\",\\n { title: \\\"Set input files\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\\"Frame.tap\\\", { title: \\\"Tap\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }],\\n [\\n \\\"Frame.textContent\\\",\\n { title: \\\"Get text content\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\\"Frame.title\\\", { title: \\\"Get page title\\\", group: \\\"getter\\\" }],\\n [\\\"Frame.type\\\", { title: 'Type \\\"{text}\\\"', slowMo: true, snapshot: true, pausesBeforeInput: true }],\\n [\\\"Frame.uncheck\\\", { title: \\\"Uncheck\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }],\\n [\\\"Frame.waitForTimeout\\\", { title: \\\"Wait for timeout\\\", snapshot: true }],\\n [\\n \\\"Frame.waitForFunction\\\",\\n { title: \\\"Wait for function\\\", snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\\"Frame.waitForSelector\\\", { title: \\\"Wait for selector\\\", snapshot: true }],\\n [\\\"Frame.expect\\\", { title: 'Expect \\\"{expression}\\\"', snapshot: true, pausesBeforeAction: true }],\\n [\\\"Worker.evaluateExpression\\\", { title: \\\"Evaluate\\\" }],\\n [\\\"Worker.evaluateExpressionHandle\\\", { title: \\\"Evaluate\\\" }],\\n [\\\"Worker.updateSubscription\\\", { internal: true }],\\n [\\\"Disposable.dispose\\\", { internal: true }],\\n [\\\"JSHandle.dispose\\\", { internal: true }],\\n [\\\"ElementHandle.dispose\\\", { internal: true }],\\n [\\\"JSHandle.evaluateExpression\\\", { title: \\\"Evaluate\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\n \\\"ElementHandle.evaluateExpression\\\",\\n { title: \\\"Evaluate\\\", snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"JSHandle.evaluateExpressionHandle\\\",\\n { title: \\\"Evaluate\\\", snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"ElementHandle.evaluateExpressionHandle\\\",\\n { title: \\\"Evaluate\\\", snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\\"JSHandle.getPropertyList\\\", { title: \\\"Get property list\\\", group: \\\"getter\\\" }],\\n [\\\"ElementHandle.getPropertyList\\\", { title: \\\"Get property list\\\", group: \\\"getter\\\" }],\\n [\\\"JSHandle.getProperty\\\", { title: \\\"Get JS property\\\", group: \\\"getter\\\" }],\\n [\\\"ElementHandle.getProperty\\\", { title: \\\"Get JS property\\\", group: \\\"getter\\\" }],\\n [\\\"JSHandle.jsonValue\\\", { title: \\\"Get JSON value\\\", group: \\\"getter\\\" }],\\n [\\\"ElementHandle.jsonValue\\\", { title: \\\"Get JSON value\\\", group: \\\"getter\\\" }],\\n [\\\"ElementHandle.evalOnSelector\\\", { title: \\\"Evaluate\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\n \\\"ElementHandle.evalOnSelectorAll\\\",\\n { title: \\\"Evaluate\\\", snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"ElementHandle.boundingBox\\\",\\n { title: \\\"Get bounding box\\\", snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"ElementHandle.check\\\",\\n { title: \\\"Check\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\n \\\"ElementHandle.click\\\",\\n { title: \\\"Click\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\\"ElementHandle.contentFrame\\\", { title: \\\"Get content frame\\\", group: \\\"getter\\\" }],\\n [\\n \\\"ElementHandle.dblclick\\\",\\n { title: \\\"Double click\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\n \\\"ElementHandle.dispatchEvent\\\",\\n { title: \\\"Dispatch event\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"ElementHandle.fill\\\",\\n { title: 'Fill \\\"{value}\\\"', slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\n \\\"ElementHandle.focus\\\",\\n { title: \\\"Focus\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"ElementHandle.getAttribute\\\",\\n { title: \\\"Get attribute\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"ElementHandle.hover\\\",\\n { title: \\\"Hover\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\n \\\"ElementHandle.innerHTML\\\",\\n { title: \\\"Get HTML\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"ElementHandle.innerText\\\",\\n { title: \\\"Get inner text\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"ElementHandle.inputValue\\\",\\n { title: \\\"Get input value\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"ElementHandle.isChecked\\\",\\n { title: \\\"Is checked\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"ElementHandle.isDisabled\\\",\\n { title: \\\"Is disabled\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"ElementHandle.isEditable\\\",\\n { title: \\\"Is editable\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"ElementHandle.isEnabled\\\",\\n { title: \\\"Is enabled\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"ElementHandle.isHidden\\\",\\n { title: \\\"Is hidden\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\n \\\"ElementHandle.isVisible\\\",\\n { title: \\\"Is visible\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\\"ElementHandle.ownerFrame\\\", { title: \\\"Get owner frame\\\", group: \\\"getter\\\" }],\\n [\\n \\\"ElementHandle.press\\\",\\n { title: 'Press \\\"{key}\\\"', slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\\"ElementHandle.querySelector\\\", { title: \\\"Query selector\\\", snapshot: true }],\\n [\\\"ElementHandle.querySelectorAll\\\", { title: \\\"Query selector all\\\", snapshot: true }],\\n [\\\"ElementHandle.screenshot\\\", { title: \\\"Screenshot\\\", snapshot: true, pausesBeforeAction: true }],\\n [\\n \\\"ElementHandle.scrollIntoViewIfNeeded\\\",\\n { title: \\\"Scroll into view\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"ElementHandle.selectOption\\\",\\n { title: \\\"Select option\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\n \\\"ElementHandle.selectText\\\",\\n { title: \\\"Select text\\\", slowMo: true, snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\n \\\"ElementHandle.setInputFiles\\\",\\n { title: \\\"Set input files\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\\"ElementHandle.tap\\\", { title: \\\"Tap\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }],\\n [\\n \\\"ElementHandle.textContent\\\",\\n { title: \\\"Get text content\\\", snapshot: true, pausesBeforeAction: true, group: \\\"getter\\\" }\\n ],\\n [\\\"ElementHandle.type\\\", { title: \\\"Type\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }],\\n [\\n \\\"ElementHandle.uncheck\\\",\\n { title: \\\"Uncheck\\\", slowMo: true, snapshot: true, pausesBeforeInput: true }\\n ],\\n [\\n \\\"ElementHandle.waitForElementState\\\",\\n { title: \\\"Wait for state\\\", snapshot: true, pausesBeforeAction: true }\\n ],\\n [\\\"ElementHandle.waitForSelector\\\", { title: \\\"Wait for selector\\\", snapshot: true }],\\n [\\\"Request.response\\\", { internal: true }],\\n [\\\"Request.rawRequestHeaders\\\", { internal: true }],\\n [\\\"Route.redirectNavigationRequest\\\", { internal: true }],\\n [\\\"Route.abort\\\", { title: \\\"Abort request\\\", group: \\\"route\\\" }],\\n [\\\"Route.continue\\\", { title: \\\"Continue request\\\", group: \\\"route\\\" }],\\n [\\\"Route.fulfill\\\", { title: \\\"Fulfill request\\\", group: \\\"route\\\" }],\\n [\\\"WebSocketRoute.connect\\\", { title: \\\"Connect WebSocket to server\\\", group: \\\"route\\\" }],\\n [\\\"WebSocketRoute.ensureOpened\\\", { internal: true }],\\n [\\\"WebSocketRoute.sendToPage\\\", { title: \\\"Send WebSocket message\\\", group: \\\"route\\\" }],\\n [\\\"WebSocketRoute.sendToServer\\\", { title: \\\"Send WebSocket message\\\", group: \\\"route\\\" }],\\n [\\\"WebSocketRoute.closePage\\\", { internal: true }],\\n [\\\"WebSocketRoute.closeServer\\\", { internal: true }],\\n [\\\"Response.body\\\", { title: \\\"Get response body\\\", group: \\\"getter\\\" }],\\n [\\\"Response.securityDetails\\\", { internal: true }],\\n [\\\"Response.serverAddr\\\", { internal: true }],\\n [\\\"Response.rawResponseHeaders\\\", { internal: true }],\\n [\\\"Response.httpVersion\\\", { internal: true }],\\n [\\\"Response.sizes\\\", { internal: true }],\\n [\\\"BindingCall.reject\\\", { internal: true }],\\n [\\\"BindingCall.resolve\\\", { internal: true }],\\n [\\\"Debugger.pause\\\", { title: \\\"Pause on next call\\\", group: \\\"configuration\\\" }],\\n [\\\"Debugger.resume\\\", { title: \\\"Resume\\\", group: \\\"configuration\\\" }],\\n [\\\"Debugger.next\\\", { title: \\\"Step to next call\\\", group: \\\"configuration\\\" }],\\n [\\\"Debugger.runTo\\\", { title: \\\"Run to location\\\", group: \\\"configuration\\\" }],\\n [\\\"Dialog.accept\\\", { title: \\\"Accept dialog\\\" }],\\n [\\\"Dialog.dismiss\\\", { title: \\\"Dismiss dialog\\\" }],\\n [\\\"Tracing.tracingStart\\\", { title: \\\"Start tracing\\\", group: \\\"configuration\\\" }],\\n [\\\"Tracing.tracingStartChunk\\\", { title: \\\"Start tracing\\\", group: \\\"configuration\\\" }],\\n [\\\"Tracing.tracingGroup\\\", { title: 'Trace \\\"{name}\\\"' }],\\n [\\\"Tracing.tracingGroupEnd\\\", { title: \\\"Group end\\\" }],\\n [\\\"Tracing.tracingStopChunk\\\", { title: \\\"Stop tracing\\\", group: \\\"configuration\\\" }],\\n [\\\"Tracing.tracingStop\\\", { title: \\\"Stop tracing\\\", group: \\\"configuration\\\" }],\\n [\\\"Artifact.pathAfterFinished\\\", { internal: true }],\\n [\\\"Artifact.saveAs\\\", { internal: true }],\\n [\\\"Artifact.saveAsStream\\\", { internal: true }],\\n [\\\"Artifact.failure\\\", { internal: true }],\\n [\\\"Artifact.stream\\\", { internal: true }],\\n [\\\"Artifact.cancel\\\", { internal: true }],\\n [\\\"Artifact.delete\\\", { internal: true }],\\n [\\\"Stream.read\\\", { internal: true }],\\n [\\\"Stream.close\\\", { internal: true }],\\n [\\\"WritableStream.write\\\", { internal: true }],\\n [\\\"WritableStream.close\\\", { internal: true }],\\n [\\\"CDPSession.send\\\", { title: \\\"Send CDP command\\\", group: \\\"configuration\\\" }],\\n [\\\"CDPSession.detach\\\", { title: \\\"Detach CDP session\\\", group: \\\"configuration\\\" }],\\n [\\\"Electron.launch\\\", { title: \\\"Launch electron\\\" }],\\n [\\\"ElectronApplication.browserWindow\\\", { internal: true }],\\n [\\\"ElectronApplication.evaluateExpression\\\", { title: \\\"Evaluate\\\" }],\\n [\\\"ElectronApplication.evaluateExpressionHandle\\\", { title: \\\"Evaluate\\\" }],\\n [\\\"ElectronApplication.updateSubscription\\\", { internal: true }],\\n [\\\"Android.devices\\\", { internal: true }],\\n [\\\"AndroidSocket.write\\\", { internal: true }],\\n [\\\"AndroidSocket.close\\\", { internal: true }],\\n [\\\"AndroidDevice.wait\\\", { title: \\\"Wait\\\" }],\\n [\\\"AndroidDevice.fill\\\", { title: 'Fill \\\"{text}\\\"' }],\\n [\\\"AndroidDevice.tap\\\", { title: \\\"Tap\\\" }],\\n [\\\"AndroidDevice.drag\\\", { title: \\\"Drag\\\" }],\\n [\\\"AndroidDevice.fling\\\", { title: \\\"Fling\\\" }],\\n [\\\"AndroidDevice.longTap\\\", { title: \\\"Long tap\\\" }],\\n [\\\"AndroidDevice.pinchClose\\\", { title: \\\"Pinch close\\\" }],\\n [\\\"AndroidDevice.pinchOpen\\\", { title: \\\"Pinch open\\\" }],\\n [\\\"AndroidDevice.scroll\\\", { title: \\\"Scroll\\\" }],\\n [\\\"AndroidDevice.swipe\\\", { title: \\\"Swipe\\\" }],\\n [\\\"AndroidDevice.info\\\", { internal: true }],\\n [\\\"AndroidDevice.screenshot\\\", { title: \\\"Screenshot\\\" }],\\n [\\\"AndroidDevice.inputType\\\", { title: \\\"Type\\\" }],\\n [\\\"AndroidDevice.inputPress\\\", { title: \\\"Press\\\" }],\\n [\\\"AndroidDevice.inputTap\\\", { title: \\\"Tap\\\" }],\\n [\\\"AndroidDevice.inputSwipe\\\", { title: \\\"Swipe\\\" }],\\n [\\\"AndroidDevice.inputDrag\\\", { title: \\\"Drag\\\" }],\\n [\\\"AndroidDevice.launchBrowser\\\", { title: \\\"Launch browser\\\" }],\\n [\\\"AndroidDevice.open\\\", { title: \\\"Open app\\\" }],\\n [\\\"AndroidDevice.shell\\\", { title: \\\"Execute shell command\\\", group: \\\"configuration\\\" }],\\n [\\\"AndroidDevice.installApk\\\", { title: \\\"Install apk\\\" }],\\n [\\\"AndroidDevice.push\\\", { title: \\\"Push\\\" }],\\n [\\\"AndroidDevice.connectToWebView\\\", { title: \\\"Connect to Web View\\\" }],\\n [\\\"AndroidDevice.close\\\", { internal: true }],\\n [\\\"JsonPipe.send\\\", { internal: true }],\\n [\\\"JsonPipe.close\\\", { internal: true }]\\n ]);\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/stackTrace.ts\\n function captureRawStack() {\\n const stackTraceLimit = Error.stackTraceLimit;\\n Error.stackTraceLimit = 50;\\n const error = new Error();\\n const stack = error.stack || \\\"\\\";\\n Error.stackTraceLimit = stackTraceLimit;\\n return stack.split(\\\"\\\\n\\\");\\n }\\n function parseStackFrame(text, pathSeparator, showInternalStackFrames) {\\n const match = text && text.match(re);\\n if (!match) return null;\\n let fname = match[2];\\n let file = match[7];\\n if (!file) return null;\\n if (!showInternalStackFrames && (file.startsWith(\\\"internal\\\") || file.startsWith(\\\"node:\\\")))\\n return null;\\n const line = match[8];\\n const column = match[9];\\n const closeParen = match[11] === \\\")\\\";\\n const frame = {\\n file: \\\"\\\",\\n line: 0,\\n column: 0\\n };\\n if (line) frame.line = Number(line);\\n if (column) frame.column = Number(column);\\n if (closeParen && file) {\\n let closes = 0;\\n for (let i = file.length - 1; i > 0; i--) {\\n if (file.charAt(i) === \\\")\\\") {\\n closes++;\\n } else if (file.charAt(i) === \\\"(\\\" && file.charAt(i - 1) === \\\" \\\") {\\n closes--;\\n if (closes === -1 && file.charAt(i - 1) === \\\" \\\") {\\n const before = file.slice(0, i - 1);\\n const after = file.slice(i + 1);\\n file = after;\\n fname += ` (${before}`;\\n break;\\n }\\n }\\n }\\n }\\n if (fname) {\\n const methodMatch = fname.match(methodRe);\\n if (methodMatch) fname = methodMatch[1];\\n }\\n if (file) {\\n if (file.startsWith(\\\"file://\\\")) file = fileURLToPath(file, pathSeparator);\\n frame.file = file;\\n }\\n if (fname) frame.function = fname;\\n return frame;\\n }\\n function rewriteErrorMessage(e, newMessage) {\\n const lines = (e.stack?.split(\\\"\\\\n\\\") || []).filter((l) => l.startsWith(\\\" at \\\"));\\n e.message = newMessage;\\n const errorTitle = `${e.name}: ${e.message}`;\\n if (lines.length) e.stack = `${errorTitle}\\n${lines.join(\\\"\\\\n\\\")}`;\\n return e;\\n }\\n function stringifyStackFrames(frames) {\\n const stackLines = [];\\n for (const frame of frames) {\\n if (frame.function)\\n stackLines.push(` at ${frame.function} (${frame.file}:${frame.line}:${frame.column})`);\\n else stackLines.push(` at ${frame.file}:${frame.line}:${frame.column}`);\\n }\\n return stackLines;\\n }\\n var re = new RegExp(\\n \\\"^(?:\\\\\\\\s*at )?(?:(new) )?(?:(.*?) \\\\\\\\()?(?:eval at ([^ ]+) \\\\\\\\((.+?):(\\\\\\\\d+):(\\\\\\\\d+)\\\\\\\\), )?(?:(.+?):(\\\\\\\\d+):(\\\\\\\\d+)|(native))(\\\\\\\\)?)$\\\"\\n );\\n var methodRe = /^(.*?) \\\\[as (.*?)\\\\]$/;\\n function fileURLToPath(fileUrl, pathSeparator) {\\n if (!fileUrl.startsWith(\\\"file://\\\")) return fileUrl;\\n let path = decodeURIComponent(fileUrl.slice(7));\\n if (path.startsWith(\\\"/\\\") && /^[a-zA-Z]:/.test(path.slice(1))) path = path.slice(1);\\n return path.replace(/\\\\//g, pathSeparator);\\n }\\n\\n // src/sandbox/forked-client/src/client/clientStackTrace.ts\\n function captureLibraryStackTrace(platform) {\\n const stack = captureRawStack();\\n let parsedFrames = stack.map((line) => {\\n const frame = parseStackFrame(\\n line,\\n platform.pathSeparator,\\n platform.showInternalStackFrames()\\n );\\n if (!frame || !frame.file) return null;\\n const isPlaywrightLibrary = !!platform.coreDir && frame.file.startsWith(platform.coreDir);\\n const parsed = {\\n frame,\\n frameText: line,\\n isPlaywrightLibrary\\n };\\n return parsed;\\n }).filter(Boolean);\\n let apiName = \\\"\\\";\\n for (let i = 0; i < parsedFrames.length - 1; i++) {\\n const parsedFrame = parsedFrames[i];\\n if (parsedFrame.isPlaywrightLibrary && !parsedFrames[i + 1].isPlaywrightLibrary) {\\n apiName = apiName || normalizeAPIName(parsedFrame.frame.function);\\n break;\\n }\\n }\\n function normalizeAPIName(name) {\\n if (!name) return \\\"\\\";\\n const match = name.match(/(API|JS|CDP|[A-Z])(.*)/);\\n if (!match) return name;\\n return match[1].toLowerCase() + match[2];\\n }\\n const filterPrefixes = platform.boxedStackPrefixes();\\n parsedFrames = parsedFrames.filter((f) => {\\n if (filterPrefixes.some((prefix) => f.frame.file.startsWith(prefix))) return false;\\n return true;\\n });\\n return {\\n frames: parsedFrames.map((p) => p.frame),\\n apiName\\n };\\n }\\n\\n // src/sandbox/forked-client/src/client/channelOwner.ts\\n var ChannelOwner = class _ChannelOwner extends EventEmitter {\\n _connection;\\n _parent;\\n _objects = /* @__PURE__ */ new Map();\\n _type;\\n _guid;\\n _channel;\\n _initializer;\\n _logger;\\n _instrumentation;\\n _eventToSubscriptionMapping = /* @__PURE__ */ new Map();\\n _wasCollected = false;\\n constructor(parent, type, guid, initializer) {\\n const connection = parent instanceof _ChannelOwner ? parent._connection : parent;\\n super(connection._platform);\\n this.setMaxListeners(0);\\n this._connection = connection;\\n this._type = type;\\n this._guid = guid;\\n this._parent = parent instanceof _ChannelOwner ? parent : void 0;\\n this._instrumentation = this._connection._instrumentation;\\n this._connection._objects.set(guid, this);\\n if (this._parent) {\\n this._parent._objects.set(guid, this);\\n this._logger = this._parent._logger;\\n }\\n this._channel = this._createChannel(new EventEmitter(connection._platform));\\n this._initializer = initializer;\\n }\\n _setEventToSubscriptionMapping(mapping) {\\n this._eventToSubscriptionMapping = mapping;\\n }\\n _updateSubscription(event, enabled) {\\n const protocolEvent = this._eventToSubscriptionMapping.get(String(event));\\n if (protocolEvent)\\n this._channel.updateSubscription({ event: protocolEvent, enabled }).catch(() => {\\n });\\n }\\n on(event, listener) {\\n if (!this.listenerCount(event)) this._updateSubscription(event, true);\\n super.on(event, listener);\\n return this;\\n }\\n addListener(event, listener) {\\n if (!this.listenerCount(event)) this._updateSubscription(event, true);\\n super.addListener(event, listener);\\n return this;\\n }\\n prependListener(event, listener) {\\n if (!this.listenerCount(event)) this._updateSubscription(event, true);\\n super.prependListener(event, listener);\\n return this;\\n }\\n off(event, listener) {\\n super.off(event, listener);\\n if (!this.listenerCount(event)) this._updateSubscription(event, false);\\n return this;\\n }\\n removeListener(event, listener) {\\n super.removeListener(event, listener);\\n if (!this.listenerCount(event)) this._updateSubscription(event, false);\\n return this;\\n }\\n _adopt(child) {\\n child._parent._objects.delete(child._guid);\\n this._objects.set(child._guid, child);\\n child._parent = this;\\n }\\n _dispose(reason) {\\n if (this._parent) this._parent._objects.delete(this._guid);\\n this._connection._objects.delete(this._guid);\\n this._wasCollected = reason === \\\"gc\\\";\\n for (const object of [...this._objects.values()]) object._dispose(reason);\\n this._objects.clear();\\n }\\n _debugScopeState() {\\n return {\\n _guid: this._guid,\\n objects: Array.from(this._objects.values()).map((o) => o._debugScopeState())\\n };\\n }\\n _validatorToWireContext() {\\n return {\\n tChannelImpl: tChannelImplToWire,\\n binary: this._connection.rawBuffers() ? \\\"buffer\\\" : \\\"toBase64\\\",\\n isUnderTest: () => this._platform.isUnderTest()\\n };\\n }\\n _createChannel(base) {\\n const channel = new Proxy(base, {\\n get: (obj, prop) => {\\n if (typeof prop === \\\"string\\\") {\\n const validator = maybeFindValidator(this._type, prop, \\\"Params\\\");\\n const { internal } = methodMetainfo.get(this._type + \\\".\\\" + prop) || {};\\n if (validator) {\\n return async (params) => {\\n return await this._wrapApiCall(\\n async (apiZone) => {\\n const validatedParams = validator(params, \\\"\\\", this._validatorToWireContext());\\n if (!apiZone.internal && !apiZone.reported) {\\n apiZone.reported = true;\\n this._instrumentation.onApiCallBegin(apiZone, {\\n type: this._type,\\n method: prop,\\n params\\n });\\n logApiCall(this._platform, this._logger, `=> ${apiZone.apiName} started`);\\n return await this._connection.sendMessageToServer(\\n this,\\n prop,\\n validatedParams,\\n apiZone\\n );\\n }\\n return await this._connection.sendMessageToServer(this, prop, validatedParams, {\\n internal: true\\n });\\n },\\n { internal }\\n );\\n };\\n }\\n }\\n return obj[prop];\\n }\\n });\\n channel._object = this;\\n return channel;\\n }\\n async _wrapApiCall(func, options) {\\n const logger = this._logger;\\n const existingApiZone = this._platform.zones.current().data();\\n if (existingApiZone) return await func(existingApiZone);\\n const stackTrace = captureLibraryStackTrace(this._platform);\\n const apiZone = {\\n title: options?.title,\\n apiName: stackTrace.apiName,\\n frames: stackTrace.frames,\\n internal: options?.internal ?? false,\\n reported: false,\\n userData: void 0,\\n stepId: void 0\\n };\\n try {\\n const result = await this._platform.zones.current().push(apiZone).run(async () => await func(apiZone));\\n if (!options?.internal) {\\n logApiCall(this._platform, logger, `<= ${apiZone.apiName} succeeded`);\\n this._instrumentation.onApiCallEnd(apiZone);\\n }\\n return result;\\n } catch (e) {\\n const innerError = (this._platform.showInternalStackFrames() || this._platform.isUnderTest()) && e.stack ? \\\"\\\\n<inner error>\\\\n\\\" + e.stack : \\\"\\\";\\n if (apiZone.apiName && !apiZone.apiName.includes(\\\"<anonymous>\\\"))\\n e.message = apiZone.apiName + \\\": \\\" + e.message;\\n const stackFrames = \\\"\\\\n\\\" + stringifyStackFrames(stackTrace.frames).join(\\\"\\\\n\\\") + innerError;\\n if (stackFrames.trim()) e.stack = e.message + stackFrames;\\n else e.stack = \\\"\\\";\\n if (!options?.internal) {\\n apiZone.error = e;\\n logApiCall(this._platform, logger, `<= ${apiZone.apiName} failed`);\\n this._instrumentation.onApiCallEnd(apiZone);\\n }\\n throw e;\\n }\\n }\\n toJSON() {\\n return {\\n _type: this._type,\\n _guid: this._guid\\n };\\n }\\n };\\n function logApiCall(platform, logger, message) {\\n if (logger && logger.isEnabled(\\\"api\\\", \\\"info\\\"))\\n logger.log(\\\"api\\\", \\\"info\\\", message, [], { color: \\\"cyan\\\" });\\n platform.log(\\\"api\\\", message);\\n }\\n function tChannelImplToWire(names, arg, path, context) {\\n if (arg._object instanceof ChannelOwner && (names === \\\"*\\\" || names.includes(arg._object._type)))\\n return { guid: arg._object._guid };\\n throw new ValidationError(`${path}: expected channel ${names.toString()}`);\\n }\\n\\n // src/sandbox/forked-client/src/client/android.ts\\n var Android = class extends ChannelOwner {\\n static from(channel) {\\n return channel?._object;\\n }\\n };\\n var AndroidDevice = class extends ChannelOwner {\\n static from(channel) {\\n return channel?._object;\\n }\\n };\\n var AndroidSocket = class extends ChannelOwner {\\n static from(channel) {\\n return channel?._object;\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/artifact.ts\\n var Artifact = class extends ChannelOwner {\\n static from(channel) {\\n return channel?._object;\\n }\\n async pathAfterFinished() {\\n throw new Error(\\\"Artifacts are not available in the QuickJS sandbox\\\");\\n }\\n async saveAs() {\\n throw new Error(\\\"Artifacts are not available in the QuickJS sandbox\\\");\\n }\\n async failure() {\\n return null;\\n }\\n async createReadStream() {\\n throw new Error(\\\"Artifacts are not available in the QuickJS sandbox\\\");\\n }\\n async readIntoBuffer() {\\n throw new Error(\\\"Artifacts are not available in the QuickJS sandbox\\\");\\n }\\n async cancel() {\\n await this._channel.cancel?.();\\n }\\n async delete() {\\n await this._channel.delete?.();\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/cdpSession.ts\\n var CDPSession = class extends ChannelOwner {\\n static from(cdpSession) {\\n return cdpSession._object;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._channel.on(\\\"event\\\", (event) => {\\n this.emit(event.method, event.params);\\n this.emit(\\\"event\\\", event);\\n });\\n this._channel.on(\\\"close\\\", () => {\\n this.emit(\\\"close\\\");\\n });\\n this.on = super.on;\\n this.addListener = super.addListener;\\n this.off = super.removeListener;\\n this.removeListener = super.removeListener;\\n this.once = super.once;\\n }\\n async send(method, params) {\\n const result = await this._channel.send({ method, params });\\n return result.result;\\n }\\n async detach() {\\n return await this._channel.detach();\\n }\\n };\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/stringUtils.ts\\n function escapeWithQuotes(text, char = \\\"'\\\") {\\n const stringified = JSON.stringify(text);\\n const escapedText = stringified.substring(1, stringified.length - 1).replace(/\\\\\\\\\\\"/g, '\\\"');\\n if (char === \\\"'\\\") return char + escapedText.replace(/[']/g, \\\"\\\\\\\\'\\\") + char;\\n if (char === '\\\"') return char + escapedText.replace(/[\\\"]/g, '\\\\\\\\\\\"') + char;\\n if (char === \\\"`\\\") return char + escapedText.replace(/[`]/g, \\\"\\\\\\\\`\\\") + char;\\n throw new Error(\\\"Invalid escape char\\\");\\n }\\n function isString(obj) {\\n return typeof obj === \\\"string\\\" || obj instanceof String;\\n }\\n function toTitleCase(name) {\\n return name.charAt(0).toUpperCase() + name.substring(1);\\n }\\n function toSnakeCase(name) {\\n return name.replace(/([a-z0-9])([A-Z])/g, \\\"$1_$2\\\").replace(/([A-Z])([A-Z][a-z])/g, \\\"$1_$2\\\").toLowerCase();\\n }\\n function normalizeEscapedRegexQuotes(source) {\\n return source.replace(/(^|[^\\\\\\\\])(\\\\\\\\\\\\\\\\)*\\\\\\\\(['\\\"`])/g, \\\"$1$2$3\\\");\\n }\\n function escapeRegexForSelector(re2) {\\n if (re2.unicode || re2.unicodeSets) return String(re2);\\n return String(re2).replace(/(^|[^\\\\\\\\])(\\\\\\\\\\\\\\\\)*([\\\"'`])/g, \\\"$1$2\\\\\\\\$3\\\").replace(/>>/g, \\\"\\\\\\\\>\\\\\\\\>\\\");\\n }\\n function escapeForTextSelector(text, exact) {\\n if (typeof text !== \\\"string\\\") return escapeRegexForSelector(text);\\n return `${JSON.stringify(text)}${exact ? \\\"s\\\" : \\\"i\\\"}`;\\n }\\n function escapeForAttributeSelector(value, exact) {\\n if (typeof value !== \\\"string\\\") return escapeRegexForSelector(value);\\n return `\\\"${value.replace(/\\\\\\\\/g, \\\"\\\\\\\\\\\\\\\\\\\").replace(/[\\\"]/g, '\\\\\\\\\\\"')}\\\"${exact ? \\\"s\\\" : \\\"i\\\"}`;\\n }\\n function trimString(input, cap, suffix = \\\"\\\") {\\n if (input.length <= cap) return input;\\n const chars = [...input];\\n if (chars.length > cap) return chars.slice(0, cap - suffix.length).join(\\\"\\\") + suffix;\\n return chars.join(\\\"\\\");\\n }\\n function trimStringWithEllipsis(input, cap) {\\n return trimString(input, cap, \\\"\\\\u2026\\\");\\n }\\n var ansiRegex = new RegExp(\\n \\\"([\\\\\\\\u001B\\\\\\\\u009B][[\\\\\\\\]()#;?]*(?:(?:(?:[a-zA-Z\\\\\\\\d]*(?:;[-a-zA-Z\\\\\\\\d\\\\\\\\/#&.:=?%@~_]*)*)?\\\\\\\\u0007)|(?:(?:\\\\\\\\d{1,4}(?:;\\\\\\\\d{0,4})*)?[\\\\\\\\dA-PR-TZcf-ntqry=><~])))\\\",\\n \\\"g\\\"\\n );\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/rtti.ts\\n function isRegExp(obj) {\\n return obj instanceof RegExp || Object.prototype.toString.call(obj) === \\\"[object RegExp]\\\";\\n }\\n function isObject(obj) {\\n return typeof obj === \\\"object\\\" && obj !== null;\\n }\\n function isError(obj) {\\n return obj instanceof Error || obj && Object.getPrototypeOf(obj)?.name === \\\"Error\\\";\\n }\\n\\n // src/sandbox/forked-client/src/client/clientHelper.ts\\n function envObjectToArray(env) {\\n const result = [];\\n for (const name in env) {\\n if (!Object.is(env[name], void 0)) result.push({ name, value: String(env[name]) });\\n }\\n return result;\\n }\\n async function evaluationScript(platform, fun, arg, addSourceUrl = true) {\\n if (typeof fun === \\\"function\\\") {\\n const source = fun.toString();\\n const argString = Object.is(arg, void 0) ? \\\"undefined\\\" : JSON.stringify(arg);\\n return `(${source})(${argString})`;\\n }\\n if (arg !== void 0) throw new Error(\\\"Cannot evaluate a string with arguments\\\");\\n if (isString(fun)) return fun;\\n if (fun.content !== void 0) return fun.content;\\n if (fun.path !== void 0) {\\n let source = await platform.fs().promises.readFile(fun.path, \\\"utf8\\\");\\n if (addSourceUrl) source = addSourceUrlToScript(source, fun.path);\\n return source;\\n }\\n throw new Error(\\\"Either path or content property must be present\\\");\\n }\\n function addSourceUrlToScript(source, path) {\\n return `${source}\\n//# sourceURL=${path.replace(/\\\\n/g, \\\"\\\")}`;\\n }\\n\\n // src/sandbox/forked-client/src/client/clock.ts\\n var Clock = class {\\n _browserContext;\\n constructor(browserContext) {\\n this._browserContext = browserContext;\\n }\\n async install(options = {}) {\\n await this._browserContext._channel.clockInstall(\\n options.time !== void 0 ? parseTime(options.time) : {}\\n );\\n }\\n async fastForward(ticks) {\\n await this._browserContext._channel.clockFastForward(parseTicks(ticks));\\n }\\n async pauseAt(time) {\\n await this._browserContext._channel.clockPauseAt(parseTime(time));\\n }\\n async resume() {\\n await this._browserContext._channel.clockResume({});\\n }\\n async runFor(ticks) {\\n await this._browserContext._channel.clockRunFor(parseTicks(ticks));\\n }\\n async setFixedTime(time) {\\n await this._browserContext._channel.clockSetFixedTime(parseTime(time));\\n }\\n async setSystemTime(time) {\\n await this._browserContext._channel.clockSetSystemTime(parseTime(time));\\n }\\n };\\n function parseTime(time) {\\n if (typeof time === \\\"number\\\") return { timeNumber: time };\\n if (typeof time === \\\"string\\\") return { timeString: time };\\n if (!isFinite(time.getTime())) throw new Error(`Invalid date: ${time}`);\\n return { timeNumber: time.getTime() };\\n }\\n function parseTicks(ticks) {\\n return {\\n ticksNumber: typeof ticks === \\\"number\\\" ? ticks : void 0,\\n ticksString: typeof ticks === \\\"string\\\" ? ticks : void 0\\n };\\n }\\n\\n // src/sandbox/forked-client/src/protocol/serializers.ts\\n function parseSerializedValue(value, handles) {\\n return innerParseSerializedValue(value, handles, /* @__PURE__ */ new Map(), []);\\n }\\n function innerParseSerializedValue(value, handles, refs, accessChain) {\\n if (value.ref !== void 0) return refs.get(value.ref);\\n if (value.n !== void 0) return value.n;\\n if (value.s !== void 0) return value.s;\\n if (value.b !== void 0) return value.b;\\n if (value.v !== void 0) {\\n if (value.v === \\\"undefined\\\") return void 0;\\n if (value.v === \\\"null\\\") return null;\\n if (value.v === \\\"NaN\\\") return NaN;\\n if (value.v === \\\"Infinity\\\") return Infinity;\\n if (value.v === \\\"-Infinity\\\") return -Infinity;\\n if (value.v === \\\"-0\\\") return -0;\\n }\\n if (value.d !== void 0) return new Date(value.d);\\n if (value.u !== void 0) return new URL(value.u);\\n if (value.bi !== void 0) return BigInt(value.bi);\\n if (value.e !== void 0) {\\n const error = new Error(value.e.m);\\n error.name = value.e.n;\\n error.stack = value.e.s;\\n return error;\\n }\\n if (value.r !== void 0) return new RegExp(value.r.p, value.r.f);\\n if (value.ta !== void 0) {\\n const ctor = typedArrayKindToConstructor[value.ta.k];\\n return new ctor(\\n value.ta.b.buffer,\\n value.ta.b.byteOffset,\\n value.ta.b.length / ctor.BYTES_PER_ELEMENT\\n );\\n }\\n if (value.a !== void 0) {\\n const result = [];\\n refs.set(value.id, result);\\n for (let i = 0; i < value.a.length; i++)\\n result.push(innerParseSerializedValue(value.a[i], handles, refs, [...accessChain, i]));\\n return result;\\n }\\n if (value.o !== void 0) {\\n const result = {};\\n refs.set(value.id, result);\\n for (const { k, v } of value.o)\\n result[k] = innerParseSerializedValue(v, handles, refs, [...accessChain, k]);\\n return result;\\n }\\n if (value.h !== void 0) {\\n if (handles === void 0) throw new Error(\\\"Unexpected handle\\\");\\n return handles[value.h];\\n }\\n throw new Error(\\n `Attempting to deserialize unexpected value${accessChainToDisplayString(accessChain)}: ${value}`\\n );\\n }\\n function serializeValue(value, handleSerializer) {\\n return innerSerializeValue(value, handleSerializer, { lastId: 0, visited: /* @__PURE__ */ new Map() }, []);\\n }\\n function innerSerializeValue(value, handleSerializer, visitorInfo, accessChain) {\\n const handle = handleSerializer(value);\\n if (\\\"fallThrough\\\" in handle) value = handle.fallThrough;\\n else return handle;\\n if (typeof value === \\\"symbol\\\") return { v: \\\"undefined\\\" };\\n if (Object.is(value, void 0)) return { v: \\\"undefined\\\" };\\n if (Object.is(value, null)) return { v: \\\"null\\\" };\\n if (Object.is(value, NaN)) return { v: \\\"NaN\\\" };\\n if (Object.is(value, Infinity)) return { v: \\\"Infinity\\\" };\\n if (Object.is(value, -Infinity)) return { v: \\\"-Infinity\\\" };\\n if (Object.is(value, -0)) return { v: \\\"-0\\\" };\\n if (typeof value === \\\"boolean\\\") return { b: value };\\n if (typeof value === \\\"number\\\") return { n: value };\\n if (typeof value === \\\"string\\\") return { s: value };\\n if (typeof value === \\\"bigint\\\") return { bi: value.toString() };\\n if (isError2(value)) return { e: { n: value.name, m: value.message, s: value.stack || \\\"\\\" } };\\n if (isDate(value)) return { d: value.toJSON() };\\n if (isURL(value)) return { u: value.toJSON() };\\n if (isRegExp2(value)) return { r: { p: value.source, f: value.flags } };\\n const typedArrayKind = constructorToTypedArrayKind.get(value.constructor);\\n if (typedArrayKind)\\n return {\\n ta: { b: Buffer.from(value.buffer, value.byteOffset, value.byteLength), k: typedArrayKind }\\n };\\n const id = visitorInfo.visited.get(value);\\n if (id) return { ref: id };\\n if (Array.isArray(value)) {\\n const a = [];\\n const id2 = ++visitorInfo.lastId;\\n visitorInfo.visited.set(value, id2);\\n for (let i = 0; i < value.length; ++i)\\n a.push(innerSerializeValue(value[i], handleSerializer, visitorInfo, [...accessChain, i]));\\n return { a, id: id2 };\\n }\\n if (typeof value === \\\"object\\\") {\\n const o = [];\\n const id2 = ++visitorInfo.lastId;\\n visitorInfo.visited.set(value, id2);\\n for (const name of Object.keys(value))\\n o.push({\\n k: name,\\n v: innerSerializeValue(value[name], handleSerializer, visitorInfo, [...accessChain, name])\\n });\\n return { o, id: id2 };\\n }\\n throw new Error(\\n `Attempting to serialize unexpected value${accessChainToDisplayString(accessChain)}: ${value}`\\n );\\n }\\n function accessChainToDisplayString(accessChain) {\\n const chainString = accessChain.map((accessor, i) => {\\n if (typeof accessor === \\\"string\\\") return i ? `.${accessor}` : accessor;\\n return `[${accessor}]`;\\n }).join(\\\"\\\");\\n return chainString.length > 0 ? ` at position \\\"${chainString}\\\"` : \\\"\\\";\\n }\\n function isRegExp2(obj) {\\n return obj instanceof RegExp || Object.prototype.toString.call(obj) === \\\"[object RegExp]\\\";\\n }\\n function isDate(obj) {\\n return obj instanceof Date || Object.prototype.toString.call(obj) === \\\"[object Date]\\\";\\n }\\n function isURL(obj) {\\n return obj instanceof URL || Object.prototype.toString.call(obj) === \\\"[object URL]\\\";\\n }\\n function isError2(obj) {\\n const proto = obj ? Object.getPrototypeOf(obj) : null;\\n return obj instanceof Error || proto?.name === \\\"Error\\\" || proto && isError2(proto);\\n }\\n var typedArrayKindToConstructor = {\\n i8: Int8Array,\\n ui8: Uint8Array,\\n ui8c: Uint8ClampedArray,\\n i16: Int16Array,\\n ui16: Uint16Array,\\n i32: Int32Array,\\n ui32: Uint32Array,\\n f32: Float32Array,\\n f64: Float64Array,\\n bi64: BigInt64Array,\\n bui64: BigUint64Array\\n };\\n var constructorToTypedArrayKind = new Map(\\n Object.entries(typedArrayKindToConstructor).map(([k, v]) => [v, k])\\n );\\n\\n // src/sandbox/forked-client/src/client/errors.ts\\n var TimeoutError = class extends Error {\\n constructor(message) {\\n super(message);\\n this.name = \\\"TimeoutError\\\";\\n }\\n };\\n var TargetClosedError = class extends Error {\\n constructor(cause) {\\n super(cause || \\\"Target page, context or browser has been closed\\\");\\n }\\n };\\n function isTargetClosedError(error) {\\n return error instanceof TargetClosedError;\\n }\\n function serializeError(e) {\\n if (isError(e)) return { error: { message: e.message, stack: e.stack, name: e.name } };\\n return { value: serializeValue(e, (value) => ({ fallThrough: value })) };\\n }\\n function parseError(error) {\\n if (!error.error) {\\n if (error.value === void 0)\\n throw new Error(\\\"Serialized error must have either an error or a value\\\");\\n return parseSerializedValue(error.value, void 0);\\n }\\n if (error.error.name === \\\"TimeoutError\\\") {\\n const e2 = new TimeoutError(error.error.message);\\n e2.stack = error.error.stack || \\\"\\\";\\n return e2;\\n }\\n if (error.error.name === \\\"TargetClosedError\\\") {\\n const e2 = new TargetClosedError(error.error.message);\\n e2.stack = error.error.stack || \\\"\\\";\\n return e2;\\n }\\n const e = new Error(error.error.message);\\n e.stack = error.error.stack || \\\"\\\";\\n e.name = error.error.name;\\n return e;\\n }\\n\\n // src/sandbox/forked-client/src/client/jsHandle.ts\\n var JSHandle = class _JSHandle extends ChannelOwner {\\n _preview;\\n static from(handle) {\\n return handle._object;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._preview = this._initializer.preview;\\n this._channel.on(\\\"previewUpdated\\\", ({ preview }) => this._preview = preview);\\n }\\n async evaluate(pageFunction, arg) {\\n const result = await this._channel.evaluateExpression({\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg)\\n });\\n return parseResult(result.value);\\n }\\n async evaluateHandle(pageFunction, arg) {\\n const result = await this._channel.evaluateExpressionHandle({\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg)\\n });\\n return _JSHandle.from(result.handle);\\n }\\n async getProperty(propertyName) {\\n const result = await this._channel.getProperty({ name: propertyName });\\n return _JSHandle.from(result.handle);\\n }\\n async getProperties() {\\n const map = /* @__PURE__ */ new Map();\\n for (const { name, value } of (await this._channel.getPropertyList()).properties)\\n map.set(name, _JSHandle.from(value));\\n return map;\\n }\\n async jsonValue() {\\n return parseResult((await this._channel.jsonValue()).value);\\n }\\n asElement() {\\n return null;\\n }\\n async [Symbol.asyncDispose]() {\\n await this.dispose();\\n }\\n async dispose() {\\n try {\\n await this._channel.dispose();\\n } catch (e) {\\n if (isTargetClosedError(e)) return;\\n throw e;\\n }\\n }\\n toString() {\\n return this._preview;\\n }\\n };\\n function serializeArgument(arg) {\\n const handles = [];\\n const pushHandle = (channel) => {\\n handles.push(channel);\\n return handles.length - 1;\\n };\\n const value = serializeValue(arg, (value2) => {\\n if (value2 instanceof JSHandle) return { h: pushHandle(value2._channel) };\\n return { fallThrough: value2 };\\n });\\n return { value, handles };\\n }\\n function parseResult(value) {\\n return parseSerializedValue(value, void 0);\\n }\\n function assertMaxArguments(count, max) {\\n if (count > max)\\n throw new Error(\\n \\\"Too many arguments. If you need to pass more than 1 argument to the function wrap them in an object.\\\"\\n );\\n }\\n\\n // src/sandbox/forked-client/src/client/consoleMessage.ts\\n var ConsoleMessage = class {\\n _page;\\n _worker;\\n _event;\\n constructor(platform, event, page, worker) {\\n this._page = page;\\n this._worker = worker;\\n this._event = event;\\n if (platform.inspectCustom) this[platform.inspectCustom] = () => this._inspect();\\n }\\n worker() {\\n return this._worker;\\n }\\n page() {\\n return this._page;\\n }\\n type() {\\n return this._event.type;\\n }\\n text() {\\n return this._event.text;\\n }\\n args() {\\n return this._event.args.map(JSHandle.from);\\n }\\n location() {\\n return this._event.location;\\n }\\n timestamp() {\\n return this._event.timestamp;\\n }\\n _inspect() {\\n return this.text();\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/coverage.ts\\n var Coverage = class {\\n _channel;\\n constructor(channel) {\\n this._channel = channel;\\n }\\n async startJSCoverage(options = {}) {\\n await this._channel.startJSCoverage(options);\\n }\\n async stopJSCoverage() {\\n return (await this._channel.stopJSCoverage()).entries;\\n }\\n async startCSSCoverage(options = {}) {\\n await this._channel.startCSSCoverage(options);\\n }\\n async stopCSSCoverage() {\\n return (await this._channel.stopCSSCoverage()).entries;\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/disposable.ts\\n var DisposableObject = class extends ChannelOwner {\\n static from(channel) {\\n return channel._object;\\n }\\n async [Symbol.asyncDispose]() {\\n await this.dispose();\\n }\\n async dispose() {\\n try {\\n await this._channel.dispose();\\n } catch (e) {\\n if (isTargetClosedError(e)) return;\\n throw e;\\n }\\n }\\n };\\n var DisposableStub = class {\\n _dispose;\\n constructor(dispose) {\\n this._dispose = dispose;\\n }\\n async [Symbol.asyncDispose]() {\\n await this.dispose();\\n }\\n async dispose() {\\n if (!this._dispose) return;\\n try {\\n const dispose = this._dispose;\\n this._dispose = void 0;\\n await dispose();\\n } catch (e) {\\n if (isTargetClosedError(e)) return;\\n throw e;\\n }\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/download.ts\\n var Download = class {\\n _page;\\n _url;\\n _suggestedFilename;\\n _artifact;\\n constructor(page, url, suggestedFilename, artifact) {\\n this._page = page;\\n this._url = url;\\n this._suggestedFilename = suggestedFilename;\\n this._artifact = artifact;\\n }\\n page() {\\n return this._page;\\n }\\n url() {\\n return this._url;\\n }\\n suggestedFilename() {\\n return this._suggestedFilename;\\n }\\n async path() {\\n return await this._artifact.pathAfterFinished();\\n }\\n async saveAs(path) {\\n return await this._artifact.saveAs(path);\\n }\\n async failure() {\\n return await this._artifact.failure();\\n }\\n async createReadStream() {\\n return await this._artifact.createReadStream();\\n }\\n async cancel() {\\n return await this._artifact.cancel();\\n }\\n async delete() {\\n return await this._artifact.delete();\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/events.ts\\n var Events = {\\n AndroidDevice: {\\n WebView: \\\"webview\\\",\\n Close: \\\"close\\\"\\n },\\n AndroidSocket: {\\n Data: \\\"data\\\",\\n Close: \\\"close\\\"\\n },\\n AndroidWebView: {\\n Close: \\\"close\\\"\\n },\\n Browser: {\\n Disconnected: \\\"disconnected\\\"\\n },\\n Debugger: {\\n PausedStateChanged: \\\"pausedstatechanged\\\"\\n },\\n BrowserContext: {\\n Console: \\\"console\\\",\\n Close: \\\"close\\\",\\n Dialog: \\\"dialog\\\",\\n Page: \\\"page\\\",\\n // Can't use just 'error' due to node.js special treatment of error events.\\n // @see https://nodejs.org/api/events.html#events_error_events\\n WebError: \\\"weberror\\\",\\n BackgroundPage: \\\"backgroundpage\\\",\\n // Deprecated in v1.56, never emitted anymore.\\n ServiceWorker: \\\"serviceworker\\\",\\n Request: \\\"request\\\",\\n Response: \\\"response\\\",\\n RequestFailed: \\\"requestfailed\\\",\\n RequestFinished: \\\"requestfinished\\\"\\n },\\n BrowserServer: {\\n Close: \\\"close\\\"\\n },\\n Page: {\\n Close: \\\"close\\\",\\n Crash: \\\"crash\\\",\\n Console: \\\"console\\\",\\n Dialog: \\\"dialog\\\",\\n Download: \\\"download\\\",\\n FileChooser: \\\"filechooser\\\",\\n DOMContentLoaded: \\\"domcontentloaded\\\",\\n // Can't use just 'error' due to node.js special treatment of error events.\\n // @see https://nodejs.org/api/events.html#events_error_events\\n PageError: \\\"pageerror\\\",\\n Request: \\\"request\\\",\\n Response: \\\"response\\\",\\n RequestFailed: \\\"requestfailed\\\",\\n RequestFinished: \\\"requestfinished\\\",\\n FrameAttached: \\\"frameattached\\\",\\n FrameDetached: \\\"framedetached\\\",\\n FrameNavigated: \\\"framenavigated\\\",\\n Load: \\\"load\\\",\\n Popup: \\\"popup\\\",\\n WebSocket: \\\"websocket\\\",\\n Worker: \\\"worker\\\"\\n },\\n WebSocket: {\\n Close: \\\"close\\\",\\n Error: \\\"socketerror\\\",\\n FrameReceived: \\\"framereceived\\\",\\n FrameSent: \\\"framesent\\\"\\n },\\n Worker: {\\n Close: \\\"close\\\",\\n Console: \\\"console\\\"\\n },\\n ElectronApplication: {\\n Close: \\\"close\\\",\\n Console: \\\"console\\\",\\n Window: \\\"window\\\"\\n }\\n };\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/cssTokenizer.ts\\n var between = function(num, first, last) {\\n return num >= first && num <= last;\\n };\\n function digit(code) {\\n return between(code, 48, 57);\\n }\\n function hexdigit(code) {\\n return digit(code) || between(code, 65, 70) || between(code, 97, 102);\\n }\\n function uppercaseletter(code) {\\n return between(code, 65, 90);\\n }\\n function lowercaseletter(code) {\\n return between(code, 97, 122);\\n }\\n function letter(code) {\\n return uppercaseletter(code) || lowercaseletter(code);\\n }\\n function nonascii(code) {\\n return code >= 128;\\n }\\n function namestartchar(code) {\\n return letter(code) || nonascii(code) || code === 95;\\n }\\n function namechar(code) {\\n return namestartchar(code) || digit(code) || code === 45;\\n }\\n function nonprintable(code) {\\n return between(code, 0, 8) || code === 11 || between(code, 14, 31) || code === 127;\\n }\\n function newline(code) {\\n return code === 10;\\n }\\n function whitespace(code) {\\n return newline(code) || code === 9 || code === 32;\\n }\\n var maximumallowedcodepoint = 1114111;\\n var InvalidCharacterError = class extends Error {\\n constructor(message) {\\n super(message);\\n this.name = \\\"InvalidCharacterError\\\";\\n }\\n };\\n function preprocess(str) {\\n const codepoints = [];\\n for (let i = 0; i < str.length; i++) {\\n let code = str.charCodeAt(i);\\n if (code === 13 && str.charCodeAt(i + 1) === 10) {\\n code = 10;\\n i++;\\n }\\n if (code === 13 || code === 12) code = 10;\\n if (code === 0) code = 65533;\\n if (between(code, 55296, 56319) && between(str.charCodeAt(i + 1), 56320, 57343)) {\\n const lead = code - 55296;\\n const trail = str.charCodeAt(i + 1) - 56320;\\n code = Math.pow(2, 16) + lead * Math.pow(2, 10) + trail;\\n i++;\\n }\\n codepoints.push(code);\\n }\\n return codepoints;\\n }\\n function stringFromCode(code) {\\n if (code <= 65535) return String.fromCharCode(code);\\n code -= Math.pow(2, 16);\\n const lead = Math.floor(code / Math.pow(2, 10)) + 55296;\\n const trail = code % Math.pow(2, 10) + 56320;\\n return String.fromCharCode(lead) + String.fromCharCode(trail);\\n }\\n function tokenize(str1) {\\n const str = preprocess(str1);\\n let i = -1;\\n const tokens = [];\\n let code;\\n let line = 0;\\n let column = 0;\\n let lastLineLength = 0;\\n const incrLineno = function() {\\n line += 1;\\n lastLineLength = column;\\n column = 0;\\n };\\n const locStart = { line, column };\\n const codepoint = function(i2) {\\n if (i2 >= str.length) return -1;\\n return str[i2];\\n };\\n const next = function(num) {\\n if (num === void 0) num = 1;\\n if (num > 3) throw \\\"Spec Error: no more than three codepoints of lookahead.\\\";\\n return codepoint(i + num);\\n };\\n const consume = function(num) {\\n if (num === void 0) num = 1;\\n i += num;\\n code = codepoint(i);\\n if (newline(code)) incrLineno();\\n else column += num;\\n return true;\\n };\\n const reconsume = function() {\\n i -= 1;\\n if (newline(code)) {\\n line -= 1;\\n column = lastLineLength;\\n } else {\\n column -= 1;\\n }\\n locStart.line = line;\\n locStart.column = column;\\n return true;\\n };\\n const eof = function(codepoint2) {\\n if (codepoint2 === void 0) codepoint2 = code;\\n return codepoint2 === -1;\\n };\\n const donothing = function() {\\n };\\n const parseerror = function() {\\n };\\n const consumeAToken = function() {\\n consumeComments();\\n consume();\\n if (whitespace(code)) {\\n while (whitespace(next())) consume();\\n return new WhitespaceToken();\\n } else if (code === 34) {\\n return consumeAStringToken();\\n } else if (code === 35) {\\n if (namechar(next()) || areAValidEscape(next(1), next(2))) {\\n const token = new HashToken(\\\"\\\");\\n if (wouldStartAnIdentifier(next(1), next(2), next(3))) token.type = \\\"id\\\";\\n token.value = consumeAName();\\n return token;\\n } else {\\n return new DelimToken(code);\\n }\\n } else if (code === 36) {\\n if (next() === 61) {\\n consume();\\n return new SuffixMatchToken();\\n } else {\\n return new DelimToken(code);\\n }\\n } else if (code === 39) {\\n return consumeAStringToken();\\n } else if (code === 40) {\\n return new OpenParenToken();\\n } else if (code === 41) {\\n return new CloseParenToken();\\n } else if (code === 42) {\\n if (next() === 61) {\\n consume();\\n return new SubstringMatchToken();\\n } else {\\n return new DelimToken(code);\\n }\\n } else if (code === 43) {\\n if (startsWithANumber()) {\\n reconsume();\\n return consumeANumericToken();\\n } else {\\n return new DelimToken(code);\\n }\\n } else if (code === 44) {\\n return new CommaToken();\\n } else if (code === 45) {\\n if (startsWithANumber()) {\\n reconsume();\\n return consumeANumericToken();\\n } else if (next(1) === 45 && next(2) === 62) {\\n consume(2);\\n return new CDCToken();\\n } else if (startsWithAnIdentifier()) {\\n reconsume();\\n return consumeAnIdentlikeToken();\\n } else {\\n return new DelimToken(code);\\n }\\n } else if (code === 46) {\\n if (startsWithANumber()) {\\n reconsume();\\n return consumeANumericToken();\\n } else {\\n return new DelimToken(code);\\n }\\n } else if (code === 58) {\\n return new ColonToken();\\n } else if (code === 59) {\\n return new SemicolonToken();\\n } else if (code === 60) {\\n if (next(1) === 33 && next(2) === 45 && next(3) === 45) {\\n consume(3);\\n return new CDOToken();\\n } else {\\n return new DelimToken(code);\\n }\\n } else if (code === 64) {\\n if (wouldStartAnIdentifier(next(1), next(2), next(3)))\\n return new AtKeywordToken(consumeAName());\\n else return new DelimToken(code);\\n } else if (code === 91) {\\n return new OpenSquareToken();\\n } else if (code === 92) {\\n if (startsWithAValidEscape()) {\\n reconsume();\\n return consumeAnIdentlikeToken();\\n } else {\\n parseerror();\\n return new DelimToken(code);\\n }\\n } else if (code === 93) {\\n return new CloseSquareToken();\\n } else if (code === 94) {\\n if (next() === 61) {\\n consume();\\n return new PrefixMatchToken();\\n } else {\\n return new DelimToken(code);\\n }\\n } else if (code === 123) {\\n return new OpenCurlyToken();\\n } else if (code === 124) {\\n if (next() === 61) {\\n consume();\\n return new DashMatchToken();\\n } else if (next() === 124) {\\n consume();\\n return new ColumnToken();\\n } else {\\n return new DelimToken(code);\\n }\\n } else if (code === 125) {\\n return new CloseCurlyToken();\\n } else if (code === 126) {\\n if (next() === 61) {\\n consume();\\n return new IncludeMatchToken();\\n } else {\\n return new DelimToken(code);\\n }\\n } else if (digit(code)) {\\n reconsume();\\n return consumeANumericToken();\\n } else if (namestartchar(code)) {\\n reconsume();\\n return consumeAnIdentlikeToken();\\n } else if (eof()) {\\n return new EOFToken();\\n } else {\\n return new DelimToken(code);\\n }\\n };\\n const consumeComments = function() {\\n while (next(1) === 47 && next(2) === 42) {\\n consume(2);\\n while (true) {\\n consume();\\n if (code === 42 && next() === 47) {\\n consume();\\n break;\\n } else if (eof()) {\\n parseerror();\\n return;\\n }\\n }\\n }\\n };\\n const consumeANumericToken = function() {\\n const num = consumeANumber();\\n if (wouldStartAnIdentifier(next(1), next(2), next(3))) {\\n const token = new DimensionToken();\\n token.value = num.value;\\n token.repr = num.repr;\\n token.type = num.type;\\n token.unit = consumeAName();\\n return token;\\n } else if (next() === 37) {\\n consume();\\n const token = new PercentageToken();\\n token.value = num.value;\\n token.repr = num.repr;\\n return token;\\n } else {\\n const token = new NumberToken();\\n token.value = num.value;\\n token.repr = num.repr;\\n token.type = num.type;\\n return token;\\n }\\n };\\n const consumeAnIdentlikeToken = function() {\\n const str2 = consumeAName();\\n if (str2.toLowerCase() === \\\"url\\\" && next() === 40) {\\n consume();\\n while (whitespace(next(1)) && whitespace(next(2))) consume();\\n if (next() === 34 || next() === 39) return new FunctionToken(str2);\\n else if (whitespace(next()) && (next(2) === 34 || next(2) === 39))\\n return new FunctionToken(str2);\\n else return consumeAURLToken();\\n } else if (next() === 40) {\\n consume();\\n return new FunctionToken(str2);\\n } else {\\n return new IdentToken(str2);\\n }\\n };\\n const consumeAStringToken = function(endingCodePoint) {\\n if (endingCodePoint === void 0) endingCodePoint = code;\\n let string = \\\"\\\";\\n while (consume()) {\\n if (code === endingCodePoint || eof()) {\\n return new StringToken(string);\\n } else if (newline(code)) {\\n parseerror();\\n reconsume();\\n return new BadStringToken();\\n } else if (code === 92) {\\n if (eof(next())) donothing();\\n else if (newline(next())) consume();\\n else string += stringFromCode(consumeEscape());\\n } else {\\n string += stringFromCode(code);\\n }\\n }\\n throw new Error(\\\"Internal error\\\");\\n };\\n const consumeAURLToken = function() {\\n const token = new URLToken(\\\"\\\");\\n while (whitespace(next())) consume();\\n if (eof(next())) return token;\\n while (consume()) {\\n if (code === 41 || eof()) {\\n return token;\\n } else if (whitespace(code)) {\\n while (whitespace(next())) consume();\\n if (next() === 41 || eof(next())) {\\n consume();\\n return token;\\n } else {\\n consumeTheRemnantsOfABadURL();\\n return new BadURLToken();\\n }\\n } else if (code === 34 || code === 39 || code === 40 || nonprintable(code)) {\\n parseerror();\\n consumeTheRemnantsOfABadURL();\\n return new BadURLToken();\\n } else if (code === 92) {\\n if (startsWithAValidEscape()) {\\n token.value += stringFromCode(consumeEscape());\\n } else {\\n parseerror();\\n consumeTheRemnantsOfABadURL();\\n return new BadURLToken();\\n }\\n } else {\\n token.value += stringFromCode(code);\\n }\\n }\\n throw new Error(\\\"Internal error\\\");\\n };\\n const consumeEscape = function() {\\n consume();\\n if (hexdigit(code)) {\\n const digits = [code];\\n for (let total = 0; total < 5; total++) {\\n if (hexdigit(next())) {\\n consume();\\n digits.push(code);\\n } else {\\n break;\\n }\\n }\\n if (whitespace(next())) consume();\\n let value = parseInt(\\n digits.map(function(x) {\\n return String.fromCharCode(x);\\n }).join(\\\"\\\"),\\n 16\\n );\\n if (value > maximumallowedcodepoint) value = 65533;\\n return value;\\n } else if (eof()) {\\n return 65533;\\n } else {\\n return code;\\n }\\n };\\n const areAValidEscape = function(c1, c2) {\\n if (c1 !== 92) return false;\\n if (newline(c2)) return false;\\n return true;\\n };\\n const startsWithAValidEscape = function() {\\n return areAValidEscape(code, next());\\n };\\n const wouldStartAnIdentifier = function(c1, c2, c3) {\\n if (c1 === 45) return namestartchar(c2) || c2 === 45 || areAValidEscape(c2, c3);\\n else if (namestartchar(c1)) return true;\\n else if (c1 === 92) return areAValidEscape(c1, c2);\\n else return false;\\n };\\n const startsWithAnIdentifier = function() {\\n return wouldStartAnIdentifier(code, next(1), next(2));\\n };\\n const wouldStartANumber = function(c1, c2, c3) {\\n if (c1 === 43 || c1 === 45) {\\n if (digit(c2)) return true;\\n if (c2 === 46 && digit(c3)) return true;\\n return false;\\n } else if (c1 === 46) {\\n if (digit(c2)) return true;\\n return false;\\n } else if (digit(c1)) {\\n return true;\\n } else {\\n return false;\\n }\\n };\\n const startsWithANumber = function() {\\n return wouldStartANumber(code, next(1), next(2));\\n };\\n const consumeAName = function() {\\n let result = \\\"\\\";\\n while (consume()) {\\n if (namechar(code)) {\\n result += stringFromCode(code);\\n } else if (startsWithAValidEscape()) {\\n result += stringFromCode(consumeEscape());\\n } else {\\n reconsume();\\n return result;\\n }\\n }\\n throw new Error(\\\"Internal parse error\\\");\\n };\\n const consumeANumber = function() {\\n let repr = \\\"\\\";\\n let type = \\\"integer\\\";\\n if (next() === 43 || next() === 45) {\\n consume();\\n repr += stringFromCode(code);\\n }\\n while (digit(next())) {\\n consume();\\n repr += stringFromCode(code);\\n }\\n if (next(1) === 46 && digit(next(2))) {\\n consume();\\n repr += stringFromCode(code);\\n consume();\\n repr += stringFromCode(code);\\n type = \\\"number\\\";\\n while (digit(next())) {\\n consume();\\n repr += stringFromCode(code);\\n }\\n }\\n const c1 = next(1), c2 = next(2), c3 = next(3);\\n if ((c1 === 69 || c1 === 101) && digit(c2)) {\\n consume();\\n repr += stringFromCode(code);\\n consume();\\n repr += stringFromCode(code);\\n type = \\\"number\\\";\\n while (digit(next())) {\\n consume();\\n repr += stringFromCode(code);\\n }\\n } else if ((c1 === 69 || c1 === 101) && (c2 === 43 || c2 === 45) && digit(c3)) {\\n consume();\\n repr += stringFromCode(code);\\n consume();\\n repr += stringFromCode(code);\\n consume();\\n repr += stringFromCode(code);\\n type = \\\"number\\\";\\n while (digit(next())) {\\n consume();\\n repr += stringFromCode(code);\\n }\\n }\\n const value = convertAStringToANumber(repr);\\n return { type, value, repr };\\n };\\n const convertAStringToANumber = function(string) {\\n return +string;\\n };\\n const consumeTheRemnantsOfABadURL = function() {\\n while (consume()) {\\n if (code === 41 || eof()) {\\n return;\\n } else if (startsWithAValidEscape()) {\\n consumeEscape();\\n donothing();\\n } else {\\n donothing();\\n }\\n }\\n };\\n let iterationCount = 0;\\n while (!eof(next())) {\\n tokens.push(consumeAToken());\\n iterationCount++;\\n if (iterationCount > str.length * 2) throw new Error(\\\"I'm infinite-looping!\\\");\\n }\\n return tokens;\\n }\\n var CSSParserToken = class {\\n tokenType = \\\"\\\";\\n value;\\n toJSON() {\\n return { token: this.tokenType };\\n }\\n toString() {\\n return this.tokenType;\\n }\\n toSource() {\\n return \\\"\\\" + this;\\n }\\n };\\n var BadStringToken = class extends CSSParserToken {\\n tokenType = \\\"BADSTRING\\\";\\n };\\n var BadURLToken = class extends CSSParserToken {\\n tokenType = \\\"BADURL\\\";\\n };\\n var WhitespaceToken = class extends CSSParserToken {\\n tokenType = \\\"WHITESPACE\\\";\\n toString() {\\n return \\\"WS\\\";\\n }\\n toSource() {\\n return \\\" \\\";\\n }\\n };\\n var CDOToken = class extends CSSParserToken {\\n tokenType = \\\"CDO\\\";\\n toSource() {\\n return \\\"<!--\\\";\\n }\\n };\\n var CDCToken = class extends CSSParserToken {\\n tokenType = \\\"CDC\\\";\\n toSource() {\\n return \\\"-->\\\";\\n }\\n };\\n var ColonToken = class extends CSSParserToken {\\n tokenType = \\\":\\\";\\n };\\n var SemicolonToken = class extends CSSParserToken {\\n tokenType = \\\";\\\";\\n };\\n var CommaToken = class extends CSSParserToken {\\n tokenType = \\\",\\\";\\n };\\n var GroupingToken = class extends CSSParserToken {\\n value = \\\"\\\";\\n mirror = \\\"\\\";\\n };\\n var OpenCurlyToken = class extends GroupingToken {\\n tokenType = \\\"{\\\";\\n constructor() {\\n super();\\n this.value = \\\"{\\\";\\n this.mirror = \\\"}\\\";\\n }\\n };\\n var CloseCurlyToken = class extends GroupingToken {\\n tokenType = \\\"}\\\";\\n constructor() {\\n super();\\n this.value = \\\"}\\\";\\n this.mirror = \\\"{\\\";\\n }\\n };\\n var OpenSquareToken = class extends GroupingToken {\\n tokenType = \\\"[\\\";\\n constructor() {\\n super();\\n this.value = \\\"[\\\";\\n this.mirror = \\\"]\\\";\\n }\\n };\\n var CloseSquareToken = class extends GroupingToken {\\n tokenType = \\\"]\\\";\\n constructor() {\\n super();\\n this.value = \\\"]\\\";\\n this.mirror = \\\"[\\\";\\n }\\n };\\n var OpenParenToken = class extends GroupingToken {\\n tokenType = \\\"(\\\";\\n constructor() {\\n super();\\n this.value = \\\"(\\\";\\n this.mirror = \\\")\\\";\\n }\\n };\\n var CloseParenToken = class extends GroupingToken {\\n tokenType = \\\")\\\";\\n constructor() {\\n super();\\n this.value = \\\")\\\";\\n this.mirror = \\\"(\\\";\\n }\\n };\\n var IncludeMatchToken = class extends CSSParserToken {\\n tokenType = \\\"~=\\\";\\n };\\n var DashMatchToken = class extends CSSParserToken {\\n tokenType = \\\"|=\\\";\\n };\\n var PrefixMatchToken = class extends CSSParserToken {\\n tokenType = \\\"^=\\\";\\n };\\n var SuffixMatchToken = class extends CSSParserToken {\\n tokenType = \\\"$=\\\";\\n };\\n var SubstringMatchToken = class extends CSSParserToken {\\n tokenType = \\\"*=\\\";\\n };\\n var ColumnToken = class extends CSSParserToken {\\n tokenType = \\\"||\\\";\\n };\\n var EOFToken = class extends CSSParserToken {\\n tokenType = \\\"EOF\\\";\\n toSource() {\\n return \\\"\\\";\\n }\\n };\\n var DelimToken = class extends CSSParserToken {\\n tokenType = \\\"DELIM\\\";\\n value = \\\"\\\";\\n constructor(code) {\\n super();\\n this.value = stringFromCode(code);\\n }\\n toString() {\\n return \\\"DELIM(\\\" + this.value + \\\")\\\";\\n }\\n toJSON() {\\n const json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\\n json.value = this.value;\\n return json;\\n }\\n toSource() {\\n if (this.value === \\\"\\\\\\\\\\\") return \\\"\\\\\\\\\\\\n\\\";\\n else return this.value;\\n }\\n };\\n var StringValuedToken = class extends CSSParserToken {\\n value = \\\"\\\";\\n ASCIIMatch(str) {\\n return this.value.toLowerCase() === str.toLowerCase();\\n }\\n toJSON() {\\n const json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\\n json.value = this.value;\\n return json;\\n }\\n };\\n var IdentToken = class extends StringValuedToken {\\n constructor(val) {\\n super();\\n this.value = val;\\n }\\n tokenType = \\\"IDENT\\\";\\n toString() {\\n return \\\"IDENT(\\\" + this.value + \\\")\\\";\\n }\\n toSource() {\\n return escapeIdent(this.value);\\n }\\n };\\n var FunctionToken = class extends StringValuedToken {\\n tokenType = \\\"FUNCTION\\\";\\n mirror;\\n constructor(val) {\\n super();\\n this.value = val;\\n this.mirror = \\\")\\\";\\n }\\n toString() {\\n return \\\"FUNCTION(\\\" + this.value + \\\")\\\";\\n }\\n toSource() {\\n return escapeIdent(this.value) + \\\"(\\\";\\n }\\n };\\n var AtKeywordToken = class extends StringValuedToken {\\n tokenType = \\\"AT-KEYWORD\\\";\\n constructor(val) {\\n super();\\n this.value = val;\\n }\\n toString() {\\n return \\\"AT(\\\" + this.value + \\\")\\\";\\n }\\n toSource() {\\n return \\\"@\\\" + escapeIdent(this.value);\\n }\\n };\\n var HashToken = class extends StringValuedToken {\\n tokenType = \\\"HASH\\\";\\n type;\\n constructor(val) {\\n super();\\n this.value = val;\\n this.type = \\\"unrestricted\\\";\\n }\\n toString() {\\n return \\\"HASH(\\\" + this.value + \\\")\\\";\\n }\\n toJSON() {\\n const json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\\n json.value = this.value;\\n json.type = this.type;\\n return json;\\n }\\n toSource() {\\n if (this.type === \\\"id\\\") return \\\"#\\\" + escapeIdent(this.value);\\n else return \\\"#\\\" + escapeHash(this.value);\\n }\\n };\\n var StringToken = class extends StringValuedToken {\\n tokenType = \\\"STRING\\\";\\n constructor(val) {\\n super();\\n this.value = val;\\n }\\n toString() {\\n return '\\\"' + escapeString(this.value) + '\\\"';\\n }\\n };\\n var URLToken = class extends StringValuedToken {\\n tokenType = \\\"URL\\\";\\n constructor(val) {\\n super();\\n this.value = val;\\n }\\n toString() {\\n return \\\"URL(\\\" + this.value + \\\")\\\";\\n }\\n toSource() {\\n return 'url(\\\"' + escapeString(this.value) + '\\\")';\\n }\\n };\\n var NumberToken = class extends CSSParserToken {\\n tokenType = \\\"NUMBER\\\";\\n type;\\n repr;\\n constructor() {\\n super();\\n this.type = \\\"integer\\\";\\n this.repr = \\\"\\\";\\n }\\n toString() {\\n if (this.type === \\\"integer\\\") return \\\"INT(\\\" + this.value + \\\")\\\";\\n return \\\"NUMBER(\\\" + this.value + \\\")\\\";\\n }\\n toJSON() {\\n const json = super.toJSON();\\n json.value = this.value;\\n json.type = this.type;\\n json.repr = this.repr;\\n return json;\\n }\\n toSource() {\\n return this.repr;\\n }\\n };\\n var PercentageToken = class extends CSSParserToken {\\n tokenType = \\\"PERCENTAGE\\\";\\n repr;\\n constructor() {\\n super();\\n this.repr = \\\"\\\";\\n }\\n toString() {\\n return \\\"PERCENTAGE(\\\" + this.value + \\\")\\\";\\n }\\n toJSON() {\\n const json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\\n json.value = this.value;\\n json.repr = this.repr;\\n return json;\\n }\\n toSource() {\\n return this.repr + \\\"%\\\";\\n }\\n };\\n var DimensionToken = class extends CSSParserToken {\\n tokenType = \\\"DIMENSION\\\";\\n type;\\n repr;\\n unit;\\n constructor() {\\n super();\\n this.type = \\\"integer\\\";\\n this.repr = \\\"\\\";\\n this.unit = \\\"\\\";\\n }\\n toString() {\\n return \\\"DIM(\\\" + this.value + \\\",\\\" + this.unit + \\\")\\\";\\n }\\n toJSON() {\\n const json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\\n json.value = this.value;\\n json.type = this.type;\\n json.repr = this.repr;\\n json.unit = this.unit;\\n return json;\\n }\\n toSource() {\\n const source = this.repr;\\n let unit = escapeIdent(this.unit);\\n if (unit[0].toLowerCase() === \\\"e\\\" && (unit[1] === \\\"-\\\" || between(unit.charCodeAt(1), 48, 57))) {\\n unit = \\\"\\\\\\\\65 \\\" + unit.slice(1, unit.length);\\n }\\n return source + unit;\\n }\\n };\\n function escapeIdent(string) {\\n string = \\\"\\\" + string;\\n let result = \\\"\\\";\\n const firstcode = string.charCodeAt(0);\\n for (let i = 0; i < string.length; i++) {\\n const code = string.charCodeAt(i);\\n if (code === 0)\\n throw new InvalidCharacterError(\\\"Invalid character: the input contains U+0000.\\\");\\n if (between(code, 1, 31) || code === 127 || i === 0 && between(code, 48, 57) || i === 1 && between(code, 48, 57) && firstcode === 45)\\n result += \\\"\\\\\\\\\\\" + code.toString(16) + \\\" \\\";\\n else if (code >= 128 || code === 45 || code === 95 || between(code, 48, 57) || between(code, 65, 90) || between(code, 97, 122))\\n result += string[i];\\n else result += \\\"\\\\\\\\\\\" + string[i];\\n }\\n return result;\\n }\\n function escapeHash(string) {\\n string = \\\"\\\" + string;\\n let result = \\\"\\\";\\n for (let i = 0; i < string.length; i++) {\\n const code = string.charCodeAt(i);\\n if (code === 0)\\n throw new InvalidCharacterError(\\\"Invalid character: the input contains U+0000.\\\");\\n if (code >= 128 || code === 45 || code === 95 || between(code, 48, 57) || between(code, 65, 90) || between(code, 97, 122))\\n result += string[i];\\n else result += \\\"\\\\\\\\\\\" + code.toString(16) + \\\" \\\";\\n }\\n return result;\\n }\\n function escapeString(string) {\\n string = \\\"\\\" + string;\\n let result = \\\"\\\";\\n for (let i = 0; i < string.length; i++) {\\n const code = string.charCodeAt(i);\\n if (code === 0)\\n throw new InvalidCharacterError(\\\"Invalid character: the input contains U+0000.\\\");\\n if (between(code, 1, 31) || code === 127) result += \\\"\\\\\\\\\\\" + code.toString(16) + \\\" \\\";\\n else if (code === 34 || code === 92) result += \\\"\\\\\\\\\\\" + string[i];\\n else result += string[i];\\n }\\n return result;\\n }\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/cssParser.ts\\n var InvalidSelectorError = class extends Error {\\n };\\n function parseCSS(selector, customNames) {\\n let tokens;\\n try {\\n tokens = tokenize(selector);\\n if (!(tokens[tokens.length - 1] instanceof EOFToken)) tokens.push(new EOFToken());\\n } catch (e) {\\n const newMessage = e.message + ` while parsing css selector \\\"${selector}\\\". Did you mean to CSS.escape it?`;\\n const index = (e.stack || \\\"\\\").indexOf(e.message);\\n if (index !== -1)\\n e.stack = e.stack.substring(0, index) + newMessage + e.stack.substring(index + e.message.length);\\n e.message = newMessage;\\n throw e;\\n }\\n const unsupportedToken = tokens.find((token) => {\\n return token instanceof AtKeywordToken || token instanceof BadStringToken || token instanceof BadURLToken || token instanceof ColumnToken || token instanceof CDOToken || token instanceof CDCToken || token instanceof SemicolonToken || // TODO: Consider using these for something, e.g. to escape complex strings.\\n // For example :xpath{ (//div/bar[@attr=\\\"foo\\\"])[2]/baz }\\n // Or this way :xpath( {complex-xpath-goes-here(\\\"hello\\\")} )\\n token instanceof OpenCurlyToken || token instanceof CloseCurlyToken || // TODO: Consider treating these as strings?\\n token instanceof URLToken || token instanceof PercentageToken;\\n });\\n if (unsupportedToken)\\n throw new InvalidSelectorError(\\n `Unsupported token \\\"${unsupportedToken.toSource()}\\\" while parsing css selector \\\"${selector}\\\". Did you mean to CSS.escape it?`\\n );\\n let pos = 0;\\n const names = /* @__PURE__ */ new Set();\\n function unexpected() {\\n return new InvalidSelectorError(\\n `Unexpected token \\\"${tokens[pos].toSource()}\\\" while parsing css selector \\\"${selector}\\\". Did you mean to CSS.escape it?`\\n );\\n }\\n function skipWhitespace() {\\n while (tokens[pos] instanceof WhitespaceToken) pos++;\\n }\\n function isIdent(p = pos) {\\n return tokens[p] instanceof IdentToken;\\n }\\n function isString2(p = pos) {\\n return tokens[p] instanceof StringToken;\\n }\\n function isNumber(p = pos) {\\n return tokens[p] instanceof NumberToken;\\n }\\n function isComma(p = pos) {\\n return tokens[p] instanceof CommaToken;\\n }\\n function isOpenParen(p = pos) {\\n return tokens[p] instanceof OpenParenToken;\\n }\\n function isCloseParen(p = pos) {\\n return tokens[p] instanceof CloseParenToken;\\n }\\n function isFunction(p = pos) {\\n return tokens[p] instanceof FunctionToken;\\n }\\n function isStar(p = pos) {\\n return tokens[p] instanceof DelimToken && tokens[p].value === \\\"*\\\";\\n }\\n function isEOF(p = pos) {\\n return tokens[p] instanceof EOFToken;\\n }\\n function isClauseCombinator(p = pos) {\\n return tokens[p] instanceof DelimToken && [\\\">\\\", \\\"+\\\", \\\"~\\\"].includes(tokens[p].value);\\n }\\n function isSelectorClauseEnd(p = pos) {\\n return isComma(p) || isCloseParen(p) || isEOF(p) || isClauseCombinator(p) || tokens[p] instanceof WhitespaceToken;\\n }\\n function consumeFunctionArguments() {\\n const result2 = [consumeArgument()];\\n while (true) {\\n skipWhitespace();\\n if (!isComma()) break;\\n pos++;\\n result2.push(consumeArgument());\\n }\\n return result2;\\n }\\n function consumeArgument() {\\n skipWhitespace();\\n if (isNumber()) return tokens[pos++].value;\\n if (isString2()) return tokens[pos++].value;\\n return consumeComplexSelector();\\n }\\n function consumeComplexSelector() {\\n const result2 = { simples: [] };\\n skipWhitespace();\\n if (isClauseCombinator()) {\\n result2.simples.push({\\n selector: { functions: [{ name: \\\"scope\\\", args: [] }] },\\n combinator: \\\"\\\"\\n });\\n } else {\\n result2.simples.push({ selector: consumeSimpleSelector(), combinator: \\\"\\\" });\\n }\\n while (true) {\\n skipWhitespace();\\n if (isClauseCombinator()) {\\n result2.simples[result2.simples.length - 1].combinator = tokens[pos++].value;\\n skipWhitespace();\\n } else if (isSelectorClauseEnd()) {\\n break;\\n }\\n result2.simples.push({ combinator: \\\"\\\", selector: consumeSimpleSelector() });\\n }\\n return result2;\\n }\\n function consumeSimpleSelector() {\\n let rawCSSString = \\\"\\\";\\n const functions = [];\\n while (!isSelectorClauseEnd()) {\\n if (isIdent() || isStar()) {\\n rawCSSString += tokens[pos++].toSource();\\n } else if (tokens[pos] instanceof HashToken) {\\n rawCSSString += tokens[pos++].toSource();\\n } else if (tokens[pos] instanceof DelimToken && tokens[pos].value === \\\".\\\") {\\n pos++;\\n if (isIdent()) rawCSSString += \\\".\\\" + tokens[pos++].toSource();\\n else throw unexpected();\\n } else if (tokens[pos] instanceof ColonToken) {\\n pos++;\\n if (isIdent()) {\\n if (!customNames.has(tokens[pos].value.toLowerCase())) {\\n rawCSSString += \\\":\\\" + tokens[pos++].toSource();\\n } else {\\n const name = tokens[pos++].value.toLowerCase();\\n functions.push({ name, args: [] });\\n names.add(name);\\n }\\n } else if (isFunction()) {\\n const name = tokens[pos++].value.toLowerCase();\\n if (!customNames.has(name)) {\\n rawCSSString += `:${name}(${consumeBuiltinFunctionArguments()})`;\\n } else {\\n functions.push({ name, args: consumeFunctionArguments() });\\n names.add(name);\\n }\\n skipWhitespace();\\n if (!isCloseParen()) throw unexpected();\\n pos++;\\n } else {\\n throw unexpected();\\n }\\n } else if (tokens[pos] instanceof OpenSquareToken) {\\n rawCSSString += \\\"[\\\";\\n pos++;\\n while (!(tokens[pos] instanceof CloseSquareToken) && !isEOF())\\n rawCSSString += tokens[pos++].toSource();\\n if (!(tokens[pos] instanceof CloseSquareToken)) throw unexpected();\\n rawCSSString += \\\"]\\\";\\n pos++;\\n } else {\\n throw unexpected();\\n }\\n }\\n if (!rawCSSString && !functions.length) throw unexpected();\\n return { css: rawCSSString || void 0, functions };\\n }\\n function consumeBuiltinFunctionArguments() {\\n let s = \\\"\\\";\\n let balance = 1;\\n while (!isEOF()) {\\n if (isOpenParen() || isFunction()) balance++;\\n if (isCloseParen()) balance--;\\n if (!balance) break;\\n s += tokens[pos++].toSource();\\n }\\n return s;\\n }\\n const result = consumeFunctionArguments();\\n if (!isEOF()) throw unexpected();\\n if (result.some((arg) => typeof arg !== \\\"object\\\" || !(\\\"simples\\\" in arg)))\\n throw new InvalidSelectorError(\\n `Error while parsing css selector \\\"${selector}\\\". Did you mean to CSS.escape it?`\\n );\\n return { selector: result, names: Array.from(names) };\\n }\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/selectorParser.ts\\n var kNestedSelectorNames = /* @__PURE__ */ new Set([\\n \\\"internal:has\\\",\\n \\\"internal:has-not\\\",\\n \\\"internal:and\\\",\\n \\\"internal:or\\\",\\n \\\"internal:chain\\\",\\n \\\"left-of\\\",\\n \\\"right-of\\\",\\n \\\"above\\\",\\n \\\"below\\\",\\n \\\"near\\\"\\n ]);\\n var kNestedSelectorNamesWithDistance = /* @__PURE__ */ new Set([\\\"left-of\\\", \\\"right-of\\\", \\\"above\\\", \\\"below\\\", \\\"near\\\"]);\\n var customCSSNames = /* @__PURE__ */ new Set([\\n \\\"not\\\",\\n \\\"is\\\",\\n \\\"where\\\",\\n \\\"has\\\",\\n \\\"scope\\\",\\n \\\"light\\\",\\n \\\"visible\\\",\\n \\\"text\\\",\\n \\\"text-matches\\\",\\n \\\"text-is\\\",\\n \\\"has-text\\\",\\n \\\"above\\\",\\n \\\"below\\\",\\n \\\"right-of\\\",\\n \\\"left-of\\\",\\n \\\"near\\\",\\n \\\"nth-match\\\"\\n ]);\\n function parseSelector(selector) {\\n const parsedStrings = parseSelectorString(selector);\\n const parts = [];\\n for (const part of parsedStrings.parts) {\\n if (part.name === \\\"css\\\" || part.name === \\\"css:light\\\") {\\n if (part.name === \\\"css:light\\\") part.body = \\\":light(\\\" + part.body + \\\")\\\";\\n const parsedCSS = parseCSS(part.body, customCSSNames);\\n parts.push({\\n name: \\\"css\\\",\\n body: parsedCSS.selector,\\n source: part.body\\n });\\n continue;\\n }\\n if (kNestedSelectorNames.has(part.name)) {\\n let innerSelector;\\n let distance;\\n try {\\n const unescaped = JSON.parse(\\\"[\\\" + part.body + \\\"]\\\");\\n if (!Array.isArray(unescaped) || unescaped.length < 1 || unescaped.length > 2 || typeof unescaped[0] !== \\\"string\\\")\\n throw new InvalidSelectorError(`Malformed selector: ${part.name}=` + part.body);\\n innerSelector = unescaped[0];\\n if (unescaped.length === 2) {\\n if (typeof unescaped[1] !== \\\"number\\\" || !kNestedSelectorNamesWithDistance.has(part.name))\\n throw new InvalidSelectorError(`Malformed selector: ${part.name}=` + part.body);\\n distance = unescaped[1];\\n }\\n } catch (e) {\\n throw new InvalidSelectorError(`Malformed selector: ${part.name}=` + part.body);\\n }\\n const nested = {\\n name: part.name,\\n source: part.body,\\n body: { parsed: parseSelector(innerSelector), distance }\\n };\\n const lastFrame = [...nested.body.parsed.parts].reverse().find((part2) => part2.name === \\\"internal:control\\\" && part2.body === \\\"enter-frame\\\");\\n const lastFrameIndex = lastFrame ? nested.body.parsed.parts.indexOf(lastFrame) : -1;\\n if (lastFrameIndex !== -1 && selectorPartsEqual(\\n nested.body.parsed.parts.slice(0, lastFrameIndex + 1),\\n parts.slice(0, lastFrameIndex + 1)\\n ))\\n nested.body.parsed.parts.splice(0, lastFrameIndex + 1);\\n parts.push(nested);\\n continue;\\n }\\n parts.push({ ...part, source: part.body });\\n }\\n if (kNestedSelectorNames.has(parts[0].name))\\n throw new InvalidSelectorError(`\\\"${parts[0].name}\\\" selector cannot be first`);\\n return {\\n capture: parsedStrings.capture,\\n parts\\n };\\n }\\n function selectorPartsEqual(list1, list2) {\\n return stringifySelector({ parts: list1 }) === stringifySelector({ parts: list2 });\\n }\\n function stringifySelector(selector, forceEngineName) {\\n if (typeof selector === \\\"string\\\") return selector;\\n return selector.parts.map((p, i) => {\\n let includeEngine = true;\\n if (!forceEngineName && i !== selector.capture) {\\n if (p.name === \\\"css\\\") includeEngine = false;\\n else if (p.name === \\\"xpath\\\" && p.source.startsWith(\\\"//\\\") || p.source.startsWith(\\\"..\\\"))\\n includeEngine = false;\\n }\\n const prefix = includeEngine ? p.name + \\\"=\\\" : \\\"\\\";\\n return `${i === selector.capture ? \\\"*\\\" : \\\"\\\"}${prefix}${p.source}`;\\n }).join(\\\" >> \\\");\\n }\\n function parseSelectorString(selector) {\\n let index = 0;\\n let quote;\\n let start = 0;\\n const result = { parts: [] };\\n const append = () => {\\n const part = selector.substring(start, index).trim();\\n const eqIndex = part.indexOf(\\\"=\\\");\\n let name;\\n let body;\\n if (eqIndex !== -1 && part.substring(0, eqIndex).trim().match(/^[a-zA-Z_0-9-+:*]+$/)) {\\n name = part.substring(0, eqIndex).trim();\\n body = part.substring(eqIndex + 1);\\n } else if (part.length > 1 && part[0] === '\\\"' && part[part.length - 1] === '\\\"') {\\n name = \\\"text\\\";\\n body = part;\\n } else if (part.length > 1 && part[0] === \\\"'\\\" && part[part.length - 1] === \\\"'\\\") {\\n name = \\\"text\\\";\\n body = part;\\n } else if (/^\\\\(*\\\\/\\\\//.test(part) || part.startsWith(\\\"..\\\")) {\\n name = \\\"xpath\\\";\\n body = part;\\n } else {\\n name = \\\"css\\\";\\n body = part;\\n }\\n let capture = false;\\n if (name[0] === \\\"*\\\") {\\n capture = true;\\n name = name.substring(1);\\n }\\n result.parts.push({ name, body });\\n if (capture) {\\n if (result.capture !== void 0)\\n throw new InvalidSelectorError(`Only one of the selectors can capture using * modifier`);\\n result.capture = result.parts.length - 1;\\n }\\n };\\n if (!selector.includes(\\\">>\\\")) {\\n index = selector.length;\\n append();\\n return result;\\n }\\n const shouldIgnoreTextSelectorQuote = () => {\\n const prefix = selector.substring(start, index);\\n const match = prefix.match(/^\\\\s*text\\\\s*=(.*)$/);\\n return !!match && !!match[1];\\n };\\n while (index < selector.length) {\\n const c = selector[index];\\n if (c === \\\"\\\\\\\\\\\" && index + 1 < selector.length) {\\n index += 2;\\n } else if (c === quote) {\\n quote = void 0;\\n index++;\\n } else if (!quote && (c === '\\\"' || c === \\\"'\\\" || c === \\\"`\\\") && !shouldIgnoreTextSelectorQuote()) {\\n quote = c;\\n index++;\\n } else if (!quote && c === \\\">\\\" && selector[index + 1] === \\\">\\\") {\\n append();\\n index += 2;\\n start = index;\\n } else {\\n index++;\\n }\\n }\\n append();\\n return result;\\n }\\n function parseAttributeSelector(selector, allowUnquotedStrings) {\\n let wp = 0;\\n let EOL = selector.length === 0;\\n const next = () => selector[wp] || \\\"\\\";\\n const eat1 = () => {\\n const result2 = next();\\n ++wp;\\n EOL = wp >= selector.length;\\n return result2;\\n };\\n const syntaxError = (stage) => {\\n if (EOL)\\n throw new InvalidSelectorError(\\n `Unexpected end of selector while parsing selector \\\\`${selector}\\\\``\\n );\\n throw new InvalidSelectorError(\\n `Error while parsing selector \\\\`${selector}\\\\` - unexpected symbol \\\"${next()}\\\" at position ${wp}` + (stage ? \\\" during \\\" + stage : \\\"\\\")\\n );\\n };\\n function skipSpaces() {\\n while (!EOL && /\\\\s/.test(next())) eat1();\\n }\\n function isCSSNameChar(char) {\\n return char >= \\\"\\\\x80\\\" || // non-ascii\\n char >= \\\"0\\\" && char <= \\\"9\\\" || // digit\\n char >= \\\"A\\\" && char <= \\\"Z\\\" || // uppercase letter\\n char >= \\\"a\\\" && char <= \\\"z\\\" || // lowercase letter\\n char >= \\\"0\\\" && char <= \\\"9\\\" || // digit\\n char === \\\"_\\\" || // \\\"_\\\"\\n char === \\\"-\\\";\\n }\\n function readIdentifier() {\\n let result2 = \\\"\\\";\\n skipSpaces();\\n while (!EOL && isCSSNameChar(next())) result2 += eat1();\\n return result2;\\n }\\n function readQuotedString(quote) {\\n let result2 = eat1();\\n if (result2 !== quote) syntaxError(\\\"parsing quoted string\\\");\\n while (!EOL && next() !== quote) {\\n if (next() === \\\"\\\\\\\\\\\") eat1();\\n result2 += eat1();\\n }\\n if (next() !== quote) syntaxError(\\\"parsing quoted string\\\");\\n result2 += eat1();\\n return result2;\\n }\\n function readRegularExpression() {\\n if (eat1() !== \\\"/\\\") syntaxError(\\\"parsing regular expression\\\");\\n let source = \\\"\\\";\\n let inClass = false;\\n while (!EOL) {\\n if (next() === \\\"\\\\\\\\\\\") {\\n source += eat1();\\n if (EOL) syntaxError(\\\"parsing regular expression\\\");\\n } else if (inClass && next() === \\\"]\\\") {\\n inClass = false;\\n } else if (!inClass && next() === \\\"[\\\") {\\n inClass = true;\\n } else if (!inClass && next() === \\\"/\\\") {\\n break;\\n }\\n source += eat1();\\n }\\n if (eat1() !== \\\"/\\\") syntaxError(\\\"parsing regular expression\\\");\\n let flags = \\\"\\\";\\n while (!EOL && next().match(/[dgimsuy]/)) flags += eat1();\\n try {\\n return new RegExp(source, flags);\\n } catch (e) {\\n throw new InvalidSelectorError(`Error while parsing selector \\\\`${selector}\\\\`: ${e.message}`);\\n }\\n }\\n function readAttributeToken() {\\n let token = \\\"\\\";\\n skipSpaces();\\n if (next() === `'` || next() === `\\\"`) token = readQuotedString(next()).slice(1, -1);\\n else token = readIdentifier();\\n if (!token) syntaxError(\\\"parsing property path\\\");\\n return token;\\n }\\n function readOperator() {\\n skipSpaces();\\n let op = \\\"\\\";\\n if (!EOL) op += eat1();\\n if (!EOL && op !== \\\"=\\\") op += eat1();\\n if (![\\\"=\\\", \\\"*=\\\", \\\"^=\\\", \\\"$=\\\", \\\"|=\\\", \\\"~=\\\"].includes(op)) syntaxError(\\\"parsing operator\\\");\\n return op;\\n }\\n function readAttribute() {\\n eat1();\\n const jsonPath = [];\\n jsonPath.push(readAttributeToken());\\n skipSpaces();\\n while (next() === \\\".\\\") {\\n eat1();\\n jsonPath.push(readAttributeToken());\\n skipSpaces();\\n }\\n if (next() === \\\"]\\\") {\\n eat1();\\n return {\\n name: jsonPath.join(\\\".\\\"),\\n jsonPath,\\n op: \\\"<truthy>\\\",\\n value: null,\\n caseSensitive: false\\n };\\n }\\n const operator = readOperator();\\n let value = void 0;\\n let caseSensitive = true;\\n skipSpaces();\\n if (next() === \\\"/\\\") {\\n if (operator !== \\\"=\\\")\\n throw new InvalidSelectorError(\\n `Error while parsing selector \\\\`${selector}\\\\` - cannot use ${operator} in attribute with regular expression`\\n );\\n value = readRegularExpression();\\n } else if (next() === `'` || next() === `\\\"`) {\\n value = readQuotedString(next()).slice(1, -1);\\n skipSpaces();\\n if (next() === \\\"i\\\" || next() === \\\"I\\\") {\\n caseSensitive = false;\\n eat1();\\n } else if (next() === \\\"s\\\" || next() === \\\"S\\\") {\\n caseSensitive = true;\\n eat1();\\n }\\n } else {\\n value = \\\"\\\";\\n while (!EOL && (isCSSNameChar(next()) || next() === \\\"+\\\" || next() === \\\".\\\")) value += eat1();\\n if (value === \\\"true\\\") {\\n value = true;\\n } else if (value === \\\"false\\\") {\\n value = false;\\n } else {\\n if (!allowUnquotedStrings) {\\n value = +value;\\n if (Number.isNaN(value)) syntaxError(\\\"parsing attribute value\\\");\\n }\\n }\\n }\\n skipSpaces();\\n if (next() !== \\\"]\\\") syntaxError(\\\"parsing attribute value\\\");\\n eat1();\\n if (operator !== \\\"=\\\" && typeof value !== \\\"string\\\")\\n throw new InvalidSelectorError(\\n `Error while parsing selector \\\\`${selector}\\\\` - cannot use ${operator} in attribute with non-string matching value - ${value}`\\n );\\n return { name: jsonPath.join(\\\".\\\"), jsonPath, op: operator, value, caseSensitive };\\n }\\n const result = {\\n name: \\\"\\\",\\n attributes: []\\n };\\n result.name = readIdentifier();\\n skipSpaces();\\n while (next() === \\\"[\\\") {\\n result.attributes.push(readAttribute());\\n skipSpaces();\\n }\\n if (!EOL) syntaxError(void 0);\\n if (!result.name && !result.attributes.length)\\n throw new InvalidSelectorError(\\n `Error while parsing selector \\\\`${selector}\\\\` - selector cannot be empty`\\n );\\n return result;\\n }\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/locatorGenerators.ts\\n function asLocatorDescription(lang, selector) {\\n try {\\n const parsed = parseSelector(selector);\\n const customDescription = parseCustomDescription(parsed);\\n if (customDescription) return customDescription;\\n return innerAsLocators(new generators[lang](), parsed, false, 1)[0];\\n } catch (e) {\\n return selector;\\n }\\n }\\n function locatorCustomDescription(selector) {\\n try {\\n const parsed = parseSelector(selector);\\n return parseCustomDescription(parsed);\\n } catch (e) {\\n return void 0;\\n }\\n }\\n function parseCustomDescription(parsed) {\\n const lastPart = parsed.parts[parsed.parts.length - 1];\\n if (lastPart?.name === \\\"internal:describe\\\") {\\n const description = JSON.parse(lastPart.body);\\n if (typeof description === \\\"string\\\") return description;\\n }\\n return void 0;\\n }\\n function innerAsLocators(factory, parsed, isFrameLocator = false, maxOutputSize = 20) {\\n const parts = [...parsed.parts];\\n const tokens = [];\\n let nextBase = isFrameLocator ? \\\"frame-locator\\\" : \\\"page\\\";\\n for (let index = 0; index < parts.length; index++) {\\n const part = parts[index];\\n const base = nextBase;\\n nextBase = \\\"locator\\\";\\n if (part.name === \\\"internal:describe\\\") continue;\\n if (part.name === \\\"nth\\\") {\\n if (part.body === \\\"0\\\")\\n tokens.push([\\n factory.generateLocator(base, \\\"first\\\", \\\"\\\"),\\n factory.generateLocator(base, \\\"nth\\\", \\\"0\\\")\\n ]);\\n else if (part.body === \\\"-1\\\")\\n tokens.push([\\n factory.generateLocator(base, \\\"last\\\", \\\"\\\"),\\n factory.generateLocator(base, \\\"nth\\\", \\\"-1\\\")\\n ]);\\n else tokens.push([factory.generateLocator(base, \\\"nth\\\", part.body)]);\\n continue;\\n }\\n if (part.name === \\\"visible\\\") {\\n tokens.push([\\n factory.generateLocator(base, \\\"visible\\\", part.body),\\n factory.generateLocator(base, \\\"default\\\", `visible=${part.body}`)\\n ]);\\n continue;\\n }\\n if (part.name === \\\"internal:text\\\") {\\n const { exact, text } = detectExact(part.body);\\n tokens.push([factory.generateLocator(base, \\\"text\\\", text, { exact })]);\\n continue;\\n }\\n if (part.name === \\\"internal:has-text\\\") {\\n const { exact, text } = detectExact(part.body);\\n if (!exact) {\\n tokens.push([factory.generateLocator(base, \\\"has-text\\\", text, { exact })]);\\n continue;\\n }\\n }\\n if (part.name === \\\"internal:has-not-text\\\") {\\n const { exact, text } = detectExact(part.body);\\n if (!exact) {\\n tokens.push([factory.generateLocator(base, \\\"has-not-text\\\", text, { exact })]);\\n continue;\\n }\\n }\\n if (part.name === \\\"internal:has\\\") {\\n const inners = innerAsLocators(\\n factory,\\n part.body.parsed,\\n false,\\n maxOutputSize\\n );\\n tokens.push(inners.map((inner) => factory.generateLocator(base, \\\"has\\\", inner)));\\n continue;\\n }\\n if (part.name === \\\"internal:has-not\\\") {\\n const inners = innerAsLocators(\\n factory,\\n part.body.parsed,\\n false,\\n maxOutputSize\\n );\\n tokens.push(inners.map((inner) => factory.generateLocator(base, \\\"hasNot\\\", inner)));\\n continue;\\n }\\n if (part.name === \\\"internal:and\\\") {\\n const inners = innerAsLocators(\\n factory,\\n part.body.parsed,\\n false,\\n maxOutputSize\\n );\\n tokens.push(inners.map((inner) => factory.generateLocator(base, \\\"and\\\", inner)));\\n continue;\\n }\\n if (part.name === \\\"internal:or\\\") {\\n const inners = innerAsLocators(\\n factory,\\n part.body.parsed,\\n false,\\n maxOutputSize\\n );\\n tokens.push(inners.map((inner) => factory.generateLocator(base, \\\"or\\\", inner)));\\n continue;\\n }\\n if (part.name === \\\"internal:chain\\\") {\\n const inners = innerAsLocators(\\n factory,\\n part.body.parsed,\\n false,\\n maxOutputSize\\n );\\n tokens.push(inners.map((inner) => factory.generateLocator(base, \\\"chain\\\", inner)));\\n continue;\\n }\\n if (part.name === \\\"internal:label\\\") {\\n const { exact, text } = detectExact(part.body);\\n tokens.push([factory.generateLocator(base, \\\"label\\\", text, { exact })]);\\n continue;\\n }\\n if (part.name === \\\"internal:role\\\") {\\n const attrSelector = parseAttributeSelector(part.body, true);\\n const options = { attrs: [] };\\n for (const attr of attrSelector.attributes) {\\n if (attr.name === \\\"name\\\") {\\n options.exact = attr.caseSensitive;\\n options.name = attr.value;\\n } else {\\n if (attr.name === \\\"level\\\" && typeof attr.value === \\\"string\\\") attr.value = +attr.value;\\n options.attrs.push({\\n name: attr.name === \\\"include-hidden\\\" ? \\\"includeHidden\\\" : attr.name,\\n value: attr.value\\n });\\n }\\n }\\n tokens.push([factory.generateLocator(base, \\\"role\\\", attrSelector.name, options)]);\\n continue;\\n }\\n if (part.name === \\\"internal:testid\\\") {\\n const attrSelector = parseAttributeSelector(part.body, true);\\n const { value } = attrSelector.attributes[0];\\n tokens.push([factory.generateLocator(base, \\\"test-id\\\", value)]);\\n continue;\\n }\\n if (part.name === \\\"internal:attr\\\") {\\n const attrSelector = parseAttributeSelector(part.body, true);\\n const { name, value, caseSensitive } = attrSelector.attributes[0];\\n const text = value;\\n const exact = !!caseSensitive;\\n if (name === \\\"placeholder\\\") {\\n tokens.push([factory.generateLocator(base, \\\"placeholder\\\", text, { exact })]);\\n continue;\\n }\\n if (name === \\\"alt\\\") {\\n tokens.push([factory.generateLocator(base, \\\"alt\\\", text, { exact })]);\\n continue;\\n }\\n if (name === \\\"title\\\") {\\n tokens.push([factory.generateLocator(base, \\\"title\\\", text, { exact })]);\\n continue;\\n }\\n }\\n if (part.name === \\\"internal:control\\\" && part.body === \\\"enter-frame\\\") {\\n const lastTokens = tokens[tokens.length - 1];\\n const lastPart = parts[index - 1];\\n const transformed = lastTokens.map(\\n (token) => factory.chainLocators([token, factory.generateLocator(base, \\\"frame\\\", \\\"\\\")])\\n );\\n if ([\\\"xpath\\\", \\\"css\\\"].includes(lastPart.name)) {\\n transformed.push(\\n factory.generateLocator(base, \\\"frame-locator\\\", stringifySelector({ parts: [lastPart] })),\\n factory.generateLocator(\\n base,\\n \\\"frame-locator\\\",\\n stringifySelector({ parts: [lastPart] }, true)\\n )\\n );\\n }\\n lastTokens.splice(0, lastTokens.length, ...transformed);\\n nextBase = \\\"frame-locator\\\";\\n continue;\\n }\\n const nextPart = parts[index + 1];\\n const selectorPart = stringifySelector({ parts: [part] });\\n const locatorPart = factory.generateLocator(base, \\\"default\\\", selectorPart);\\n if (nextPart && [\\\"internal:has-text\\\", \\\"internal:has-not-text\\\"].includes(nextPart.name)) {\\n const { exact, text } = detectExact(nextPart.body);\\n if (!exact) {\\n const nextLocatorPart = factory.generateLocator(\\n \\\"locator\\\",\\n nextPart.name === \\\"internal:has-text\\\" ? \\\"has-text\\\" : \\\"has-not-text\\\",\\n text,\\n { exact }\\n );\\n const options = {};\\n if (nextPart.name === \\\"internal:has-text\\\") options.hasText = text;\\n else options.hasNotText = text;\\n const combinedPart = factory.generateLocator(base, \\\"default\\\", selectorPart, options);\\n tokens.push([factory.chainLocators([locatorPart, nextLocatorPart]), combinedPart]);\\n index++;\\n continue;\\n }\\n }\\n let locatorPartWithEngine;\\n if ([\\\"xpath\\\", \\\"css\\\"].includes(part.name)) {\\n const selectorPart2 = stringifySelector(\\n { parts: [part] },\\n /* forceEngineName */\\n true\\n );\\n locatorPartWithEngine = factory.generateLocator(base, \\\"default\\\", selectorPart2);\\n }\\n tokens.push([locatorPart, locatorPartWithEngine].filter(Boolean));\\n }\\n return combineTokens(factory, tokens, maxOutputSize);\\n }\\n function combineTokens(factory, tokens, maxOutputSize) {\\n const currentTokens = tokens.map(() => \\\"\\\");\\n const result = [];\\n const visit = (index) => {\\n if (index === tokens.length) {\\n result.push(factory.chainLocators(currentTokens));\\n return result.length < maxOutputSize;\\n }\\n for (const taken of tokens[index]) {\\n currentTokens[index] = taken;\\n if (!visit(index + 1)) return false;\\n }\\n return true;\\n };\\n visit(0);\\n return result;\\n }\\n function detectExact(text) {\\n let exact = false;\\n const match = text.match(/^\\\\/(.*)\\\\/([igm]*)$/);\\n if (match) return { text: new RegExp(match[1], match[2]) };\\n if (text.endsWith('\\\"')) {\\n text = JSON.parse(text);\\n exact = true;\\n } else if (text.endsWith('\\\"s')) {\\n text = JSON.parse(text.substring(0, text.length - 1));\\n exact = true;\\n } else if (text.endsWith('\\\"i')) {\\n text = JSON.parse(text.substring(0, text.length - 1));\\n exact = false;\\n }\\n return { exact, text };\\n }\\n var JavaScriptLocatorFactory = class {\\n constructor(preferredQuote) {\\n this.preferredQuote = preferredQuote;\\n }\\n preferredQuote;\\n generateLocator(base, kind, body, options = {}) {\\n switch (kind) {\\n case \\\"default\\\":\\n if (options.hasText !== void 0)\\n return `locator(${this.quote(body)}, { hasText: ${this.toHasText(options.hasText)} })`;\\n if (options.hasNotText !== void 0)\\n return `locator(${this.quote(body)}, { hasNotText: ${this.toHasText(options.hasNotText)} })`;\\n return `locator(${this.quote(body)})`;\\n case \\\"frame-locator\\\":\\n return `frameLocator(${this.quote(body)})`;\\n case \\\"frame\\\":\\n return `contentFrame()`;\\n case \\\"nth\\\":\\n return `nth(${body})`;\\n case \\\"first\\\":\\n return `first()`;\\n case \\\"last\\\":\\n return `last()`;\\n case \\\"visible\\\":\\n return `filter({ visible: ${body === \\\"true\\\" ? \\\"true\\\" : \\\"false\\\"} })`;\\n case \\\"role\\\":\\n const attrs = [];\\n if (isRegExp3(options.name)) {\\n attrs.push(`name: ${this.regexToSourceString(options.name)}`);\\n } else if (typeof options.name === \\\"string\\\") {\\n attrs.push(`name: ${this.quote(options.name)}`);\\n if (options.exact) attrs.push(`exact: true`);\\n }\\n for (const { name, value } of options.attrs)\\n attrs.push(`${name}: ${typeof value === \\\"string\\\" ? this.quote(value) : value}`);\\n const attrString = attrs.length ? `, { ${attrs.join(\\\", \\\")} }` : \\\"\\\";\\n return `getByRole(${this.quote(body)}${attrString})`;\\n case \\\"has-text\\\":\\n return `filter({ hasText: ${this.toHasText(body)} })`;\\n case \\\"has-not-text\\\":\\n return `filter({ hasNotText: ${this.toHasText(body)} })`;\\n case \\\"has\\\":\\n return `filter({ has: ${body} })`;\\n case \\\"hasNot\\\":\\n return `filter({ hasNot: ${body} })`;\\n case \\\"and\\\":\\n return `and(${body})`;\\n case \\\"or\\\":\\n return `or(${body})`;\\n case \\\"chain\\\":\\n return `locator(${body})`;\\n case \\\"test-id\\\":\\n return `getByTestId(${this.toTestIdValue(body)})`;\\n case \\\"text\\\":\\n return this.toCallWithExact(\\\"getByText\\\", body, !!options.exact);\\n case \\\"alt\\\":\\n return this.toCallWithExact(\\\"getByAltText\\\", body, !!options.exact);\\n case \\\"placeholder\\\":\\n return this.toCallWithExact(\\\"getByPlaceholder\\\", body, !!options.exact);\\n case \\\"label\\\":\\n return this.toCallWithExact(\\\"getByLabel\\\", body, !!options.exact);\\n case \\\"title\\\":\\n return this.toCallWithExact(\\\"getByTitle\\\", body, !!options.exact);\\n default:\\n throw new Error(\\\"Unknown selector kind \\\" + kind);\\n }\\n }\\n chainLocators(locators) {\\n return locators.join(\\\".\\\");\\n }\\n regexToSourceString(re2) {\\n return normalizeEscapedRegexQuotes(String(re2));\\n }\\n toCallWithExact(method, body, exact) {\\n if (isRegExp3(body)) return `${method}(${this.regexToSourceString(body)})`;\\n return exact ? `${method}(${this.quote(body)}, { exact: true })` : `${method}(${this.quote(body)})`;\\n }\\n toHasText(body) {\\n if (isRegExp3(body)) return this.regexToSourceString(body);\\n return this.quote(body);\\n }\\n toTestIdValue(value) {\\n if (isRegExp3(value)) return this.regexToSourceString(value);\\n return this.quote(value);\\n }\\n quote(text) {\\n return escapeWithQuotes(text, this.preferredQuote ?? \\\"'\\\");\\n }\\n };\\n var PythonLocatorFactory = class {\\n generateLocator(base, kind, body, options = {}) {\\n switch (kind) {\\n case \\\"default\\\":\\n if (options.hasText !== void 0)\\n return `locator(${this.quote(body)}, has_text=${this.toHasText(options.hasText)})`;\\n if (options.hasNotText !== void 0)\\n return `locator(${this.quote(body)}, has_not_text=${this.toHasText(options.hasNotText)})`;\\n return `locator(${this.quote(body)})`;\\n case \\\"frame-locator\\\":\\n return `frame_locator(${this.quote(body)})`;\\n case \\\"frame\\\":\\n return `content_frame`;\\n case \\\"nth\\\":\\n return `nth(${body})`;\\n case \\\"first\\\":\\n return `first`;\\n case \\\"last\\\":\\n return `last`;\\n case \\\"visible\\\":\\n return `filter(visible=${body === \\\"true\\\" ? \\\"True\\\" : \\\"False\\\"})`;\\n case \\\"role\\\":\\n const attrs = [];\\n if (isRegExp3(options.name)) {\\n attrs.push(`name=${this.regexToString(options.name)}`);\\n } else if (typeof options.name === \\\"string\\\") {\\n attrs.push(`name=${this.quote(options.name)}`);\\n if (options.exact) attrs.push(`exact=True`);\\n }\\n for (const { name, value } of options.attrs) {\\n let valueString = typeof value === \\\"string\\\" ? this.quote(value) : value;\\n if (typeof value === \\\"boolean\\\") valueString = value ? \\\"True\\\" : \\\"False\\\";\\n attrs.push(`${toSnakeCase(name)}=${valueString}`);\\n }\\n const attrString = attrs.length ? `, ${attrs.join(\\\", \\\")}` : \\\"\\\";\\n return `get_by_role(${this.quote(body)}${attrString})`;\\n case \\\"has-text\\\":\\n return `filter(has_text=${this.toHasText(body)})`;\\n case \\\"has-not-text\\\":\\n return `filter(has_not_text=${this.toHasText(body)})`;\\n case \\\"has\\\":\\n return `filter(has=${body})`;\\n case \\\"hasNot\\\":\\n return `filter(has_not=${body})`;\\n case \\\"and\\\":\\n return `and_(${body})`;\\n case \\\"or\\\":\\n return `or_(${body})`;\\n case \\\"chain\\\":\\n return `locator(${body})`;\\n case \\\"test-id\\\":\\n return `get_by_test_id(${this.toTestIdValue(body)})`;\\n case \\\"text\\\":\\n return this.toCallWithExact(\\\"get_by_text\\\", body, !!options.exact);\\n case \\\"alt\\\":\\n return this.toCallWithExact(\\\"get_by_alt_text\\\", body, !!options.exact);\\n case \\\"placeholder\\\":\\n return this.toCallWithExact(\\\"get_by_placeholder\\\", body, !!options.exact);\\n case \\\"label\\\":\\n return this.toCallWithExact(\\\"get_by_label\\\", body, !!options.exact);\\n case \\\"title\\\":\\n return this.toCallWithExact(\\\"get_by_title\\\", body, !!options.exact);\\n default:\\n throw new Error(\\\"Unknown selector kind \\\" + kind);\\n }\\n }\\n chainLocators(locators) {\\n return locators.join(\\\".\\\");\\n }\\n regexToString(body) {\\n const suffix = body.flags.includes(\\\"i\\\") ? \\\", re.IGNORECASE\\\" : \\\"\\\";\\n return `re.compile(r\\\"${normalizeEscapedRegexQuotes(body.source).replace(/\\\\\\\\\\\\//, \\\"/\\\").replace(/\\\"/g, '\\\\\\\\\\\"')}\\\"${suffix})`;\\n }\\n toCallWithExact(method, body, exact) {\\n if (isRegExp3(body)) return `${method}(${this.regexToString(body)})`;\\n if (exact) return `${method}(${this.quote(body)}, exact=True)`;\\n return `${method}(${this.quote(body)})`;\\n }\\n toHasText(body) {\\n if (isRegExp3(body)) return this.regexToString(body);\\n return `${this.quote(body)}`;\\n }\\n toTestIdValue(value) {\\n if (isRegExp3(value)) return this.regexToString(value);\\n return this.quote(value);\\n }\\n quote(text) {\\n return escapeWithQuotes(text, '\\\"');\\n }\\n };\\n var JavaLocatorFactory = class {\\n generateLocator(base, kind, body, options = {}) {\\n let clazz;\\n switch (base) {\\n case \\\"page\\\":\\n clazz = \\\"Page\\\";\\n break;\\n case \\\"frame-locator\\\":\\n clazz = \\\"FrameLocator\\\";\\n break;\\n case \\\"locator\\\":\\n clazz = \\\"Locator\\\";\\n break;\\n }\\n switch (kind) {\\n case \\\"default\\\":\\n if (options.hasText !== void 0)\\n return `locator(${this.quote(body)}, new ${clazz}.LocatorOptions().setHasText(${this.toHasText(options.hasText)}))`;\\n if (options.hasNotText !== void 0)\\n return `locator(${this.quote(body)}, new ${clazz}.LocatorOptions().setHasNotText(${this.toHasText(options.hasNotText)}))`;\\n return `locator(${this.quote(body)})`;\\n case \\\"frame-locator\\\":\\n return `frameLocator(${this.quote(body)})`;\\n case \\\"frame\\\":\\n return `contentFrame()`;\\n case \\\"nth\\\":\\n return `nth(${body})`;\\n case \\\"first\\\":\\n return `first()`;\\n case \\\"last\\\":\\n return `last()`;\\n case \\\"visible\\\":\\n return `filter(new ${clazz}.FilterOptions().setVisible(${body === \\\"true\\\" ? \\\"true\\\" : \\\"false\\\"}))`;\\n case \\\"role\\\":\\n const attrs = [];\\n if (isRegExp3(options.name)) {\\n attrs.push(`.setName(${this.regexToString(options.name)})`);\\n } else if (typeof options.name === \\\"string\\\") {\\n attrs.push(`.setName(${this.quote(options.name)})`);\\n if (options.exact) attrs.push(`.setExact(true)`);\\n }\\n for (const { name, value } of options.attrs)\\n attrs.push(\\n `.set${toTitleCase(name)}(${typeof value === \\\"string\\\" ? this.quote(value) : value})`\\n );\\n const attrString = attrs.length ? `, new ${clazz}.GetByRoleOptions()${attrs.join(\\\"\\\")}` : \\\"\\\";\\n return `getByRole(AriaRole.${toSnakeCase(body).toUpperCase()}${attrString})`;\\n case \\\"has-text\\\":\\n return `filter(new ${clazz}.FilterOptions().setHasText(${this.toHasText(body)}))`;\\n case \\\"has-not-text\\\":\\n return `filter(new ${clazz}.FilterOptions().setHasNotText(${this.toHasText(body)}))`;\\n case \\\"has\\\":\\n return `filter(new ${clazz}.FilterOptions().setHas(${body}))`;\\n case \\\"hasNot\\\":\\n return `filter(new ${clazz}.FilterOptions().setHasNot(${body}))`;\\n case \\\"and\\\":\\n return `and(${body})`;\\n case \\\"or\\\":\\n return `or(${body})`;\\n case \\\"chain\\\":\\n return `locator(${body})`;\\n case \\\"test-id\\\":\\n return `getByTestId(${this.toTestIdValue(body)})`;\\n case \\\"text\\\":\\n return this.toCallWithExact(clazz, \\\"getByText\\\", body, !!options.exact);\\n case \\\"alt\\\":\\n return this.toCallWithExact(clazz, \\\"getByAltText\\\", body, !!options.exact);\\n case \\\"placeholder\\\":\\n return this.toCallWithExact(clazz, \\\"getByPlaceholder\\\", body, !!options.exact);\\n case \\\"label\\\":\\n return this.toCallWithExact(clazz, \\\"getByLabel\\\", body, !!options.exact);\\n case \\\"title\\\":\\n return this.toCallWithExact(clazz, \\\"getByTitle\\\", body, !!options.exact);\\n default:\\n throw new Error(\\\"Unknown selector kind \\\" + kind);\\n }\\n }\\n chainLocators(locators) {\\n return locators.join(\\\".\\\");\\n }\\n regexToString(body) {\\n const suffix = body.flags.includes(\\\"i\\\") ? \\\", Pattern.CASE_INSENSITIVE\\\" : \\\"\\\";\\n return `Pattern.compile(${this.quote(normalizeEscapedRegexQuotes(body.source))}${suffix})`;\\n }\\n toCallWithExact(clazz, method, body, exact) {\\n if (isRegExp3(body)) return `${method}(${this.regexToString(body)})`;\\n if (exact)\\n return `${method}(${this.quote(body)}, new ${clazz}.${toTitleCase(method)}Options().setExact(true))`;\\n return `${method}(${this.quote(body)})`;\\n }\\n toHasText(body) {\\n if (isRegExp3(body)) return this.regexToString(body);\\n return this.quote(body);\\n }\\n toTestIdValue(value) {\\n if (isRegExp3(value)) return this.regexToString(value);\\n return this.quote(value);\\n }\\n quote(text) {\\n return escapeWithQuotes(text, '\\\"');\\n }\\n };\\n var CSharpLocatorFactory = class {\\n generateLocator(base, kind, body, options = {}) {\\n switch (kind) {\\n case \\\"default\\\":\\n if (options.hasText !== void 0)\\n return `Locator(${this.quote(body)}, new() { ${this.toHasText(options.hasText)} })`;\\n if (options.hasNotText !== void 0)\\n return `Locator(${this.quote(body)}, new() { ${this.toHasNotText(options.hasNotText)} })`;\\n return `Locator(${this.quote(body)})`;\\n case \\\"frame-locator\\\":\\n return `FrameLocator(${this.quote(body)})`;\\n case \\\"frame\\\":\\n return `ContentFrame`;\\n case \\\"nth\\\":\\n return `Nth(${body})`;\\n case \\\"first\\\":\\n return `First`;\\n case \\\"last\\\":\\n return `Last`;\\n case \\\"visible\\\":\\n return `Filter(new() { Visible = ${body === \\\"true\\\" ? \\\"true\\\" : \\\"false\\\"} })`;\\n case \\\"role\\\":\\n const attrs = [];\\n if (isRegExp3(options.name)) {\\n attrs.push(`NameRegex = ${this.regexToString(options.name)}`);\\n } else if (typeof options.name === \\\"string\\\") {\\n attrs.push(`Name = ${this.quote(options.name)}`);\\n if (options.exact) attrs.push(`Exact = true`);\\n }\\n for (const { name, value } of options.attrs)\\n attrs.push(\\n `${toTitleCase(name)} = ${typeof value === \\\"string\\\" ? this.quote(value) : value}`\\n );\\n const attrString = attrs.length ? `, new() { ${attrs.join(\\\", \\\")} }` : \\\"\\\";\\n return `GetByRole(AriaRole.${toTitleCase(body)}${attrString})`;\\n case \\\"has-text\\\":\\n return `Filter(new() { ${this.toHasText(body)} })`;\\n case \\\"has-not-text\\\":\\n return `Filter(new() { ${this.toHasNotText(body)} })`;\\n case \\\"has\\\":\\n return `Filter(new() { Has = ${body} })`;\\n case \\\"hasNot\\\":\\n return `Filter(new() { HasNot = ${body} })`;\\n case \\\"and\\\":\\n return `And(${body})`;\\n case \\\"or\\\":\\n return `Or(${body})`;\\n case \\\"chain\\\":\\n return `Locator(${body})`;\\n case \\\"test-id\\\":\\n return `GetByTestId(${this.toTestIdValue(body)})`;\\n case \\\"text\\\":\\n return this.toCallWithExact(\\\"GetByText\\\", body, !!options.exact);\\n case \\\"alt\\\":\\n return this.toCallWithExact(\\\"GetByAltText\\\", body, !!options.exact);\\n case \\\"placeholder\\\":\\n return this.toCallWithExact(\\\"GetByPlaceholder\\\", body, !!options.exact);\\n case \\\"label\\\":\\n return this.toCallWithExact(\\\"GetByLabel\\\", body, !!options.exact);\\n case \\\"title\\\":\\n return this.toCallWithExact(\\\"GetByTitle\\\", body, !!options.exact);\\n default:\\n throw new Error(\\\"Unknown selector kind \\\" + kind);\\n }\\n }\\n chainLocators(locators) {\\n return locators.join(\\\".\\\");\\n }\\n regexToString(body) {\\n const suffix = body.flags.includes(\\\"i\\\") ? \\\", RegexOptions.IgnoreCase\\\" : \\\"\\\";\\n return `new Regex(${this.quote(normalizeEscapedRegexQuotes(body.source))}${suffix})`;\\n }\\n toCallWithExact(method, body, exact) {\\n if (isRegExp3(body)) return `${method}(${this.regexToString(body)})`;\\n if (exact) return `${method}(${this.quote(body)}, new() { Exact = true })`;\\n return `${method}(${this.quote(body)})`;\\n }\\n toHasText(body) {\\n if (isRegExp3(body)) return `HasTextRegex = ${this.regexToString(body)}`;\\n return `HasText = ${this.quote(body)}`;\\n }\\n toTestIdValue(value) {\\n if (isRegExp3(value)) return this.regexToString(value);\\n return this.quote(value);\\n }\\n toHasNotText(body) {\\n if (isRegExp3(body)) return `HasNotTextRegex = ${this.regexToString(body)}`;\\n return `HasNotText = ${this.quote(body)}`;\\n }\\n quote(text) {\\n return escapeWithQuotes(text, '\\\"');\\n }\\n };\\n var JsonlLocatorFactory = class {\\n generateLocator(base, kind, body, options = {}) {\\n return JSON.stringify({\\n kind,\\n body,\\n options\\n });\\n }\\n chainLocators(locators) {\\n const objects = locators.map((l) => JSON.parse(l));\\n for (let i = 0; i < objects.length - 1; ++i) objects[i].next = objects[i + 1];\\n return JSON.stringify(objects[0]);\\n }\\n };\\n var generators = {\\n javascript: JavaScriptLocatorFactory,\\n python: PythonLocatorFactory,\\n java: JavaLocatorFactory,\\n csharp: CSharpLocatorFactory,\\n jsonl: JsonlLocatorFactory\\n };\\n function isRegExp3(obj) {\\n return obj instanceof RegExp;\\n }\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/locatorUtils.ts\\n function getByAttributeTextSelector(attrName, text, options) {\\n return `internal:attr=[${attrName}=${escapeForAttributeSelector(text, options?.exact || false)}]`;\\n }\\n function getByTestIdSelector(testIdAttributeName2, testId) {\\n return `internal:testid=[${testIdAttributeName2}=${escapeForAttributeSelector(testId, true)}]`;\\n }\\n function getByLabelSelector(text, options) {\\n return \\\"internal:label=\\\" + escapeForTextSelector(text, !!options?.exact);\\n }\\n function getByAltTextSelector(text, options) {\\n return getByAttributeTextSelector(\\\"alt\\\", text, options);\\n }\\n function getByTitleSelector(text, options) {\\n return getByAttributeTextSelector(\\\"title\\\", text, options);\\n }\\n function getByPlaceholderSelector(text, options) {\\n return getByAttributeTextSelector(\\\"placeholder\\\", text, options);\\n }\\n function getByTextSelector(text, options) {\\n return \\\"internal:text=\\\" + escapeForTextSelector(text, !!options?.exact);\\n }\\n function getByRoleSelector(role, options = {}) {\\n const props = [];\\n if (options.checked !== void 0) props.push([\\\"checked\\\", String(options.checked)]);\\n if (options.disabled !== void 0) props.push([\\\"disabled\\\", String(options.disabled)]);\\n if (options.selected !== void 0) props.push([\\\"selected\\\", String(options.selected)]);\\n if (options.expanded !== void 0) props.push([\\\"expanded\\\", String(options.expanded)]);\\n if (options.includeHidden !== void 0)\\n props.push([\\\"include-hidden\\\", String(options.includeHidden)]);\\n if (options.level !== void 0) props.push([\\\"level\\\", String(options.level)]);\\n if (options.name !== void 0)\\n props.push([\\\"name\\\", escapeForAttributeSelector(options.name, !!options.exact)]);\\n if (options.pressed !== void 0) props.push([\\\"pressed\\\", String(options.pressed)]);\\n return `internal:role=${role}${props.map(([n, v]) => `[${n}=${v}]`).join(\\\"\\\")}`;\\n }\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/time.ts\\n var fallbackTimeOrigin = Date.now();\\n var performanceApi = globalThis.performance ?? {\\n timeOrigin: fallbackTimeOrigin,\\n now: () => Date.now() - fallbackTimeOrigin\\n };\\n var _timeOrigin = performanceApi.timeOrigin;\\n var _timeShift = 0;\\n function monotonicTime() {\\n return Math.floor((performanceApi.now() + _timeShift) * 1e3) / 1e3;\\n }\\n var DEFAULT_PLAYWRIGHT_TIMEOUT = 3e4;\\n var DEFAULT_PLAYWRIGHT_LAUNCH_TIMEOUT = 3 * 60 * 1e3;\\n\\n // src/sandbox/forked-client/src/client/locator.ts\\n var Locator = class _Locator {\\n _frame;\\n _selector;\\n constructor(frame, selector, options) {\\n this._frame = frame;\\n this._selector = selector;\\n if (options?.hasText)\\n this._selector += ` >> internal:has-text=${escapeForTextSelector(options.hasText, false)}`;\\n if (options?.hasNotText)\\n this._selector += ` >> internal:has-not-text=${escapeForTextSelector(options.hasNotText, false)}`;\\n if (options?.has) {\\n const locator = options.has;\\n if (locator._frame !== frame)\\n throw new Error(`Inner \\\"has\\\" locator must belong to the same frame.`);\\n this._selector += ` >> internal:has=` + JSON.stringify(locator._selector);\\n }\\n if (options?.hasNot) {\\n const locator = options.hasNot;\\n if (locator._frame !== frame)\\n throw new Error(`Inner \\\"hasNot\\\" locator must belong to the same frame.`);\\n this._selector += ` >> internal:has-not=` + JSON.stringify(locator._selector);\\n }\\n if (options?.visible !== void 0)\\n this._selector += ` >> visible=${options.visible ? \\\"true\\\" : \\\"false\\\"}`;\\n if (this._frame._platform.inspectCustom)\\n this[this._frame._platform.inspectCustom] = () => this._inspect();\\n }\\n async _withElement(task, options) {\\n const timeout = this._frame._timeout({ timeout: options.timeout });\\n const deadline = timeout ? monotonicTime() + timeout : 0;\\n return await this._frame._wrapApiCall(\\n async () => {\\n const result = await this._frame._channel.waitForSelector({\\n selector: this._selector,\\n strict: true,\\n state: \\\"attached\\\",\\n timeout\\n });\\n const handle = ElementHandle.fromNullable(result.element);\\n if (!handle) throw new Error(`Could not resolve ${this._selector} to DOM Element`);\\n try {\\n return await task(handle, deadline ? deadline - monotonicTime() : 0);\\n } finally {\\n await handle.dispose();\\n }\\n },\\n { title: options.title, internal: options.internal }\\n );\\n }\\n _equals(locator) {\\n return this._frame === locator._frame && this._selector === locator._selector;\\n }\\n page() {\\n return this._frame.page();\\n }\\n async boundingBox(options) {\\n return await this._withElement((h) => h.boundingBox(), {\\n title: \\\"Bounding box\\\",\\n timeout: options?.timeout\\n });\\n }\\n async check(options = {}) {\\n return await this._frame.check(this._selector, { strict: true, ...options });\\n }\\n async click(options = {}) {\\n return await this._frame.click(this._selector, { strict: true, ...options });\\n }\\n async dblclick(options = {}) {\\n await this._frame.dblclick(this._selector, { strict: true, ...options });\\n }\\n async dispatchEvent(type, eventInit = {}, options) {\\n return await this._frame.dispatchEvent(this._selector, type, eventInit, {\\n strict: true,\\n ...options\\n });\\n }\\n async dragTo(target, options = {}) {\\n return await this._frame.dragAndDrop(this._selector, target._selector, {\\n strict: true,\\n ...options\\n });\\n }\\n async evaluate(pageFunction, arg, options) {\\n return await this._withElement((h) => h.evaluate(pageFunction, arg), {\\n title: \\\"Evaluate\\\",\\n timeout: options?.timeout\\n });\\n }\\n async evaluateAll(pageFunction, arg) {\\n return await this._frame.$$eval(this._selector, pageFunction, arg);\\n }\\n async evaluateHandle(pageFunction, arg, options) {\\n return await this._withElement((h) => h.evaluateHandle(pageFunction, arg), {\\n title: \\\"Evaluate\\\",\\n timeout: options?.timeout\\n });\\n }\\n async fill(value, options = {}) {\\n return await this._frame.fill(this._selector, value, { strict: true, ...options });\\n }\\n async clear(options = {}) {\\n await this._frame._wrapApiCall(() => this.fill(\\\"\\\", options), { title: \\\"Clear\\\" });\\n }\\n async _highlight() {\\n return await this._frame._highlight(this._selector);\\n }\\n async highlight() {\\n return await this._frame._highlight(this._selector);\\n }\\n locator(selectorOrLocator, options) {\\n if (isString(selectorOrLocator))\\n return new _Locator(this._frame, this._selector + \\\" >> \\\" + selectorOrLocator, options);\\n if (selectorOrLocator._frame !== this._frame)\\n throw new Error(`Locators must belong to the same frame.`);\\n return new _Locator(\\n this._frame,\\n this._selector + \\\" >> internal:chain=\\\" + JSON.stringify(selectorOrLocator._selector),\\n options\\n );\\n }\\n getByTestId(testId) {\\n return this.locator(getByTestIdSelector(testIdAttributeName(), testId));\\n }\\n getByAltText(text, options) {\\n return this.locator(getByAltTextSelector(text, options));\\n }\\n getByLabel(text, options) {\\n return this.locator(getByLabelSelector(text, options));\\n }\\n getByPlaceholder(text, options) {\\n return this.locator(getByPlaceholderSelector(text, options));\\n }\\n getByText(text, options) {\\n return this.locator(getByTextSelector(text, options));\\n }\\n getByTitle(text, options) {\\n return this.locator(getByTitleSelector(text, options));\\n }\\n getByRole(role, options = {}) {\\n return this.locator(getByRoleSelector(role, options));\\n }\\n frameLocator(selector) {\\n return new FrameLocator(this._frame, this._selector + \\\" >> \\\" + selector);\\n }\\n filter(options) {\\n return new _Locator(this._frame, this._selector, options);\\n }\\n async elementHandle(options) {\\n return await this._frame.waitForSelector(this._selector, {\\n strict: true,\\n state: \\\"attached\\\",\\n ...options\\n });\\n }\\n async elementHandles() {\\n return await this._frame.$$(this._selector);\\n }\\n contentFrame() {\\n return new FrameLocator(this._frame, this._selector);\\n }\\n describe(description) {\\n return new _Locator(\\n this._frame,\\n this._selector + \\\" >> internal:describe=\\\" + JSON.stringify(description)\\n );\\n }\\n description() {\\n return locatorCustomDescription(this._selector) || null;\\n }\\n first() {\\n return new _Locator(this._frame, this._selector + \\\" >> nth=0\\\");\\n }\\n last() {\\n return new _Locator(this._frame, this._selector + ` >> nth=-1`);\\n }\\n nth(index) {\\n return new _Locator(this._frame, this._selector + ` >> nth=${index}`);\\n }\\n and(locator) {\\n if (locator._frame !== this._frame) throw new Error(`Locators must belong to the same frame.`);\\n return new _Locator(\\n this._frame,\\n this._selector + ` >> internal:and=` + JSON.stringify(locator._selector)\\n );\\n }\\n or(locator) {\\n if (locator._frame !== this._frame) throw new Error(`Locators must belong to the same frame.`);\\n return new _Locator(\\n this._frame,\\n this._selector + ` >> internal:or=` + JSON.stringify(locator._selector)\\n );\\n }\\n async focus(options) {\\n return await this._frame.focus(this._selector, { strict: true, ...options });\\n }\\n async blur(options) {\\n await this._frame._channel.blur({\\n selector: this._selector,\\n strict: true,\\n ...options,\\n timeout: this._frame._timeout(options)\\n });\\n }\\n // options are only here for testing\\n async count(_options) {\\n return await this._frame._queryCount(this._selector, _options);\\n }\\n async toCode() {\\n const { resolvedSelector } = await this._frame._channel.resolveSelector({\\n selector: this._selector\\n });\\n return new _Locator(this._frame, resolvedSelector).toString();\\n }\\n async getAttribute(name, options) {\\n return await this._frame.getAttribute(this._selector, name, { strict: true, ...options });\\n }\\n async hover(options = {}) {\\n return await this._frame.hover(this._selector, { strict: true, ...options });\\n }\\n async innerHTML(options) {\\n return await this._frame.innerHTML(this._selector, { strict: true, ...options });\\n }\\n async innerText(options) {\\n return await this._frame.innerText(this._selector, { strict: true, ...options });\\n }\\n async inputValue(options) {\\n return await this._frame.inputValue(this._selector, { strict: true, ...options });\\n }\\n async isChecked(options) {\\n return await this._frame.isChecked(this._selector, { strict: true, ...options });\\n }\\n async isDisabled(options) {\\n return await this._frame.isDisabled(this._selector, { strict: true, ...options });\\n }\\n async isEditable(options) {\\n return await this._frame.isEditable(this._selector, { strict: true, ...options });\\n }\\n async isEnabled(options) {\\n return await this._frame.isEnabled(this._selector, { strict: true, ...options });\\n }\\n async isHidden(options) {\\n return await this._frame.isHidden(this._selector, { strict: true, ...options });\\n }\\n async isVisible(options) {\\n return await this._frame.isVisible(this._selector, { strict: true, ...options });\\n }\\n async press(key, options = {}) {\\n return await this._frame.press(this._selector, key, { strict: true, ...options });\\n }\\n async screenshot(options = {}) {\\n const mask = options.mask;\\n return await this._withElement((h, timeout) => h.screenshot({ ...options, mask, timeout }), {\\n title: \\\"Screenshot\\\",\\n timeout: options.timeout\\n });\\n }\\n async ariaSnapshot(options) {\\n const result = await this._frame._channel.ariaSnapshot({\\n ...options,\\n selector: this._selector,\\n timeout: this._frame._timeout(options)\\n });\\n return result.snapshot;\\n }\\n async scrollIntoViewIfNeeded(options = {}) {\\n return await this._withElement(\\n (h, timeout) => h.scrollIntoViewIfNeeded({ ...options, timeout }),\\n { title: \\\"Scroll into view\\\", timeout: options.timeout }\\n );\\n }\\n async selectOption(values, options = {}) {\\n return await this._frame.selectOption(this._selector, values, { strict: true, ...options });\\n }\\n async selectText(options = {}) {\\n return await this._withElement((h, timeout) => h.selectText({ ...options, timeout }), {\\n title: \\\"Select text\\\",\\n timeout: options.timeout\\n });\\n }\\n async setChecked(checked, options) {\\n if (checked) await this.check(options);\\n else await this.uncheck(options);\\n }\\n async setInputFiles(files, options = {}) {\\n return await this._frame.setInputFiles(this._selector, files, { strict: true, ...options });\\n }\\n async tap(options = {}) {\\n return await this._frame.tap(this._selector, { strict: true, ...options });\\n }\\n async textContent(options) {\\n return await this._frame.textContent(this._selector, { strict: true, ...options });\\n }\\n async type(text, options = {}) {\\n return await this._frame.type(this._selector, text, { strict: true, ...options });\\n }\\n async pressSequentially(text, options = {}) {\\n return await this.type(text, options);\\n }\\n async uncheck(options = {}) {\\n return await this._frame.uncheck(this._selector, { strict: true, ...options });\\n }\\n async all() {\\n return new Array(await this.count()).fill(0).map((e, i) => this.nth(i));\\n }\\n async allInnerTexts() {\\n return await this._frame.$$eval(\\n this._selector,\\n (ee) => ee.map((e) => e.innerText)\\n );\\n }\\n async allTextContents() {\\n return await this._frame.$$eval(this._selector, (ee) => ee.map((e) => e.textContent || \\\"\\\"));\\n }\\n async waitFor(options) {\\n await this._frame._channel.waitForSelector({\\n selector: this._selector,\\n strict: true,\\n omitReturnValue: true,\\n ...options,\\n timeout: this._frame._timeout(options)\\n });\\n }\\n async snapshotForAI(options = {}) {\\n return await this._frame._page._channel.snapshotForAI({\\n timeout: this._frame._timeout(options),\\n selector: this._selector,\\n depth: options.depth\\n });\\n }\\n async _expect(expression, options) {\\n return this._frame._expect(expression, {\\n ...options,\\n selector: this._selector\\n });\\n }\\n _inspect() {\\n return this.toString();\\n }\\n toString() {\\n return asLocatorDescription(\\\"javascript\\\", this._selector);\\n }\\n };\\n var FrameLocator = class _FrameLocator {\\n _frame;\\n _frameSelector;\\n constructor(frame, selector) {\\n this._frame = frame;\\n this._frameSelector = selector;\\n }\\n locator(selectorOrLocator, options) {\\n if (isString(selectorOrLocator))\\n return new Locator(\\n this._frame,\\n this._frameSelector + \\\" >> internal:control=enter-frame >> \\\" + selectorOrLocator,\\n options\\n );\\n if (selectorOrLocator._frame !== this._frame)\\n throw new Error(`Locators must belong to the same frame.`);\\n return new Locator(\\n this._frame,\\n this._frameSelector + \\\" >> internal:control=enter-frame >> \\\" + selectorOrLocator._selector,\\n options\\n );\\n }\\n getByTestId(testId) {\\n return this.locator(getByTestIdSelector(testIdAttributeName(), testId));\\n }\\n getByAltText(text, options) {\\n return this.locator(getByAltTextSelector(text, options));\\n }\\n getByLabel(text, options) {\\n return this.locator(getByLabelSelector(text, options));\\n }\\n getByPlaceholder(text, options) {\\n return this.locator(getByPlaceholderSelector(text, options));\\n }\\n getByText(text, options) {\\n return this.locator(getByTextSelector(text, options));\\n }\\n getByTitle(text, options) {\\n return this.locator(getByTitleSelector(text, options));\\n }\\n getByRole(role, options = {}) {\\n return this.locator(getByRoleSelector(role, options));\\n }\\n owner() {\\n return new Locator(this._frame, this._frameSelector);\\n }\\n frameLocator(selector) {\\n return new _FrameLocator(\\n this._frame,\\n this._frameSelector + \\\" >> internal:control=enter-frame >> \\\" + selector\\n );\\n }\\n first() {\\n return new _FrameLocator(this._frame, this._frameSelector + \\\" >> nth=0\\\");\\n }\\n last() {\\n return new _FrameLocator(this._frame, this._frameSelector + ` >> nth=-1`);\\n }\\n nth(index) {\\n return new _FrameLocator(this._frame, this._frameSelector + ` >> nth=${index}`);\\n }\\n };\\n var _testIdAttributeName = \\\"data-testid\\\";\\n function testIdAttributeName() {\\n return _testIdAttributeName;\\n }\\n function setTestIdAttribute(attributeName) {\\n _testIdAttributeName = attributeName;\\n }\\n\\n // src/sandbox/forked-client/src/client/fetch.ts\\n function unsupported() {\\n throw new Error(\\\"APIRequest is not available in the QuickJS sandbox\\\");\\n }\\n var APIRequestContext = class extends ChannelOwner {\\n static from(channel) {\\n return channel?._object;\\n }\\n async storageState() {\\n return { cookies: [], origins: [] };\\n }\\n async dispose() {\\n await this._channel.dispose?.({});\\n }\\n };\\n var APIRequest = class {\\n constructor(playwright) {\\n this._playwright = playwright;\\n }\\n async newContext() {\\n unsupported();\\n }\\n };\\n var APIResponse = class {\\n async body() {\\n unsupported();\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/waiter.ts\\n var Waiter = class _Waiter {\\n _dispose;\\n _failures = [];\\n _immediateError;\\n _logs = [];\\n _channelOwner;\\n _waitId;\\n _error;\\n _savedZone;\\n constructor(channelOwner, event) {\\n this._waitId = channelOwner._platform.createGuid();\\n this._channelOwner = channelOwner;\\n this._savedZone = channelOwner._platform.zones.current().pop();\\n this._channelOwner._channel.waitForEventInfo({ info: { waitId: this._waitId, phase: \\\"before\\\", event } }).catch(() => {\\n });\\n this._dispose = [\\n () => this._channelOwner._wrapApiCall(\\n async () => {\\n await this._channelOwner._channel.waitForEventInfo({\\n info: { waitId: this._waitId, phase: \\\"after\\\", error: this._error }\\n });\\n },\\n { internal: true }\\n ).catch(() => {\\n })\\n ];\\n }\\n static createForEvent(channelOwner, event) {\\n return new _Waiter(channelOwner, event);\\n }\\n async waitForEvent(emitter, event, predicate) {\\n const { promise, dispose } = waitForEvent(emitter, event, this._savedZone, predicate);\\n return await this.waitForPromise(promise, dispose);\\n }\\n rejectOnEvent(emitter, event, error, predicate) {\\n const { promise, dispose } = waitForEvent(emitter, event, this._savedZone, predicate);\\n this._rejectOn(\\n promise.then(() => {\\n throw typeof error === \\\"function\\\" ? error() : error;\\n }),\\n dispose\\n );\\n }\\n rejectOnTimeout(timeout, message) {\\n if (!timeout) return;\\n const { promise, dispose } = waitForTimeout(timeout);\\n this._rejectOn(\\n promise.then(() => {\\n throw new TimeoutError(message);\\n }),\\n dispose\\n );\\n }\\n rejectImmediately(error) {\\n this._immediateError = error;\\n }\\n dispose() {\\n for (const dispose of this._dispose) dispose();\\n }\\n async waitForPromise(promise, dispose) {\\n try {\\n if (this._immediateError) throw this._immediateError;\\n const result = await Promise.race([promise, ...this._failures]);\\n if (dispose) dispose();\\n return result;\\n } catch (e) {\\n if (dispose) dispose();\\n this._error = e.message;\\n this.dispose();\\n rewriteErrorMessage(e, e.message + formatLogRecording(this._logs));\\n throw e;\\n }\\n }\\n log(s) {\\n this._logs.push(s);\\n this._channelOwner._wrapApiCall(\\n async () => {\\n await this._channelOwner._channel.waitForEventInfo({\\n info: { waitId: this._waitId, phase: \\\"log\\\", message: s }\\n });\\n },\\n { internal: true }\\n ).catch(() => {\\n });\\n }\\n _rejectOn(promise, dispose) {\\n this._failures.push(promise);\\n if (dispose) this._dispose.push(dispose);\\n }\\n };\\n function waitForEvent(emitter, event, savedZone, predicate) {\\n let listener;\\n const promise = new Promise((resolve, reject) => {\\n listener = async (eventArg) => {\\n await savedZone.run(async () => {\\n try {\\n if (predicate && !await predicate(eventArg)) return;\\n emitter.removeListener(event, listener);\\n resolve(eventArg);\\n } catch (e) {\\n emitter.removeListener(event, listener);\\n reject(e);\\n }\\n });\\n };\\n emitter.addListener(event, listener);\\n });\\n const dispose = () => emitter.removeListener(event, listener);\\n return { promise, dispose };\\n }\\n function waitForTimeout(timeout) {\\n let timeoutId;\\n const promise = new Promise((resolve) => timeoutId = setTimeout(resolve, timeout));\\n const dispose = () => clearTimeout(timeoutId);\\n return { promise, dispose };\\n }\\n function formatLogRecording(log) {\\n if (!log.length) return \\\"\\\";\\n const header = ` logs `;\\n const headerLength = 60;\\n const leftLength = (headerLength - header.length) / 2;\\n const rightLength = headerLength - header.length - leftLength;\\n return `\\n${\\\"=\\\".repeat(leftLength)}${header}${\\\"=\\\".repeat(rightLength)}\\n${log.join(\\\"\\\\n\\\")}\\n${\\\"=\\\".repeat(headerLength)}`;\\n }\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/manualPromise.ts\\n var ManualPromise = class extends Promise {\\n _resolve;\\n _reject;\\n _isDone;\\n constructor() {\\n let resolve;\\n let reject;\\n super((f, r) => {\\n resolve = f;\\n reject = r;\\n });\\n this._isDone = false;\\n this._resolve = resolve;\\n this._reject = reject;\\n }\\n isDone() {\\n return this._isDone;\\n }\\n resolve(t) {\\n this._isDone = true;\\n this._resolve(t);\\n }\\n reject(e) {\\n this._isDone = true;\\n this._reject(e);\\n }\\n static get [Symbol.species]() {\\n return Promise;\\n }\\n get [Symbol.toStringTag]() {\\n return \\\"ManualPromise\\\";\\n }\\n };\\n var LongStandingScope = class {\\n _terminateError;\\n _closeError;\\n _terminatePromises = /* @__PURE__ */ new Map();\\n _isClosed = false;\\n reject(error) {\\n this._isClosed = true;\\n this._terminateError = error;\\n for (const p of this._terminatePromises.keys()) p.resolve(error);\\n }\\n close(error) {\\n this._isClosed = true;\\n this._closeError = error;\\n for (const [p, frames] of this._terminatePromises) p.resolve(cloneError(error, frames));\\n }\\n isClosed() {\\n return this._isClosed;\\n }\\n static async raceMultiple(scopes, promise) {\\n return Promise.race(scopes.map((s) => s.race(promise)));\\n }\\n async race(promise) {\\n return this._race(Array.isArray(promise) ? promise : [promise], false);\\n }\\n async safeRace(promise, defaultValue) {\\n return this._race([promise], true, defaultValue);\\n }\\n async _race(promises, safe, defaultValue) {\\n const terminatePromise = new ManualPromise();\\n const frames = captureRawStack();\\n if (this._terminateError) terminatePromise.resolve(this._terminateError);\\n if (this._closeError) terminatePromise.resolve(cloneError(this._closeError, frames));\\n this._terminatePromises.set(terminatePromise, frames);\\n try {\\n return await Promise.race([\\n terminatePromise.then((e) => safe ? defaultValue : Promise.reject(e)),\\n ...promises\\n ]);\\n } finally {\\n this._terminatePromises.delete(terminatePromise);\\n }\\n }\\n };\\n function cloneError(error, frames) {\\n const clone = new Error();\\n clone.name = error.name;\\n clone.message = error.message;\\n clone.stack = [error.name + \\\":\\\" + error.message, ...frames].join(\\\"\\\\n\\\");\\n return clone;\\n }\\n\\n // src/sandbox/forked-client/src/client/timeoutSettings.ts\\n var TimeoutSettings = class {\\n _parent;\\n _defaultTimeout;\\n _defaultNavigationTimeout;\\n _platform;\\n constructor(platform, parent) {\\n this._parent = parent;\\n this._platform = platform;\\n }\\n setDefaultTimeout(timeout) {\\n this._defaultTimeout = timeout;\\n }\\n setDefaultNavigationTimeout(timeout) {\\n this._defaultNavigationTimeout = timeout;\\n }\\n defaultNavigationTimeout() {\\n return this._defaultNavigationTimeout;\\n }\\n defaultTimeout() {\\n return this._defaultTimeout;\\n }\\n navigationTimeout(options) {\\n if (typeof options.timeout === \\\"number\\\") return options.timeout;\\n if (this._defaultNavigationTimeout !== void 0) return this._defaultNavigationTimeout;\\n if (this._platform.isDebugMode()) return 0;\\n if (this._defaultTimeout !== void 0) return this._defaultTimeout;\\n if (this._parent) return this._parent.navigationTimeout(options);\\n return DEFAULT_PLAYWRIGHT_TIMEOUT;\\n }\\n timeout(options) {\\n if (typeof options.timeout === \\\"number\\\") return options.timeout;\\n if (this._platform.isDebugMode()) return 0;\\n if (this._defaultTimeout !== void 0) return this._defaultTimeout;\\n if (this._parent) return this._parent.timeout(options);\\n return DEFAULT_PLAYWRIGHT_TIMEOUT;\\n }\\n launchTimeout(options) {\\n if (typeof options.timeout === \\\"number\\\") return options.timeout;\\n if (this._platform.isDebugMode()) return 0;\\n if (this._parent) return this._parent.launchTimeout(options);\\n return DEFAULT_PLAYWRIGHT_LAUNCH_TIMEOUT;\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/worker.ts\\n var Worker = class _Worker extends ChannelOwner {\\n _page;\\n // Set for web workers.\\n _context;\\n // Set for service workers.\\n _closedScope = new LongStandingScope();\\n static fromNullable(worker) {\\n return worker ? _Worker.from(worker) : null;\\n }\\n static from(worker) {\\n return worker._object;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._setEventToSubscriptionMapping(\\n /* @__PURE__ */ new Map([\\n [Events.Worker.Console, \\\"console\\\"]\\n ])\\n );\\n this._channel.on(\\\"close\\\", () => {\\n if (this._page) this._page._workers.delete(this);\\n if (this._context) this._context._serviceWorkers.delete(this);\\n this.emit(Events.Worker.Close, this);\\n });\\n this.once(\\n Events.Worker.Close,\\n () => this._closedScope.close(this._page?._closeErrorWithReason() || new TargetClosedError())\\n );\\n }\\n url() {\\n return this._initializer.url;\\n }\\n async evaluate(pageFunction, arg) {\\n assertMaxArguments(arguments.length, 2);\\n const result = await this._channel.evaluateExpression({\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg)\\n });\\n return parseResult(result.value);\\n }\\n async evaluateHandle(pageFunction, arg) {\\n assertMaxArguments(arguments.length, 2);\\n const result = await this._channel.evaluateExpressionHandle({\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg)\\n });\\n return JSHandle.from(result.handle);\\n }\\n async waitForEvent(event, optionsOrPredicate = {}) {\\n return await this._wrapApiCall(async () => {\\n const timeoutSettings = this._page?._timeoutSettings ?? this._context?._timeoutSettings ?? new TimeoutSettings(this._platform);\\n const timeout = timeoutSettings.timeout(\\n typeof optionsOrPredicate === \\\"function\\\" ? {} : optionsOrPredicate\\n );\\n const predicate = typeof optionsOrPredicate === \\\"function\\\" ? optionsOrPredicate : optionsOrPredicate.predicate;\\n const waiter = Waiter.createForEvent(this, event);\\n waiter.rejectOnTimeout(\\n timeout,\\n `Timeout ${timeout}ms exceeded while waiting for event \\\"${event}\\\"`\\n );\\n if (event !== Events.Worker.Close)\\n waiter.rejectOnEvent(this, Events.Worker.Close, () => new TargetClosedError());\\n const result = await waiter.waitForEvent(this, event, predicate);\\n waiter.dispose();\\n return result;\\n });\\n }\\n };\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/assert.ts\\n function assert(value, message) {\\n if (!value) throw new Error(message || \\\"Assertion error\\\");\\n }\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/headers.ts\\n function headersObjectToArray(headers, separator, setCookieSeparator) {\\n if (!setCookieSeparator) setCookieSeparator = separator;\\n const result = [];\\n for (const name in headers) {\\n const values = headers[name];\\n if (values === void 0) continue;\\n if (separator) {\\n const sep = name.toLowerCase() === \\\"set-cookie\\\" ? setCookieSeparator : separator;\\n for (const value of values.split(sep)) result.push({ name, value: value.trim() });\\n } else {\\n result.push({ name, value: values });\\n }\\n }\\n return result;\\n }\\n function headersArrayToObject(headers, lowerCase) {\\n const result = {};\\n for (const { name, value } of headers) result[lowerCase ? name.toLowerCase() : name] = value;\\n return result;\\n }\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/urlMatch.ts\\n var escapedChars = /* @__PURE__ */ new Set([\\n \\\"$\\\",\\n \\\"^\\\",\\n \\\"+\\\",\\n \\\".\\\",\\n \\\"*\\\",\\n \\\"(\\\",\\n \\\")\\\",\\n \\\"|\\\",\\n \\\"\\\\\\\\\\\",\\n \\\"?\\\",\\n \\\"{\\\",\\n \\\"}\\\",\\n \\\"[\\\",\\n \\\"]\\\"\\n ]);\\n function globToRegexPattern(glob) {\\n const tokens = [\\\"^\\\"];\\n let inGroup = false;\\n for (let i = 0; i < glob.length; ++i) {\\n const c = glob[i];\\n if (c === \\\"\\\\\\\\\\\" && i + 1 < glob.length) {\\n const char = glob[++i];\\n tokens.push(escapedChars.has(char) ? \\\"\\\\\\\\\\\" + char : char);\\n continue;\\n }\\n if (c === \\\"*\\\") {\\n const charBefore = glob[i - 1];\\n let starCount = 1;\\n while (glob[i + 1] === \\\"*\\\") {\\n starCount++;\\n i++;\\n }\\n if (starCount > 1) {\\n const charAfter = glob[i + 1];\\n if (charAfter === \\\"/\\\") {\\n if (charBefore === \\\"/\\\") tokens.push(\\\"((.+/)|)\\\");\\n else tokens.push(\\\"(.*/)\\\");\\n ++i;\\n } else {\\n tokens.push(\\\"(.*)\\\");\\n }\\n } else {\\n tokens.push(\\\"([^/]*)\\\");\\n }\\n continue;\\n }\\n switch (c) {\\n case \\\"{\\\":\\n inGroup = true;\\n tokens.push(\\\"(\\\");\\n break;\\n case \\\"}\\\":\\n inGroup = false;\\n tokens.push(\\\")\\\");\\n break;\\n case \\\",\\\":\\n if (inGroup) {\\n tokens.push(\\\"|\\\");\\n break;\\n }\\n tokens.push(\\\"\\\\\\\\\\\" + c);\\n break;\\n default:\\n tokens.push(escapedChars.has(c) ? \\\"\\\\\\\\\\\" + c : c);\\n }\\n }\\n tokens.push(\\\"$\\\");\\n return tokens.join(\\\"\\\");\\n }\\n function isRegExp4(obj) {\\n return obj instanceof RegExp || Object.prototype.toString.call(obj) === \\\"[object RegExp]\\\";\\n }\\n var isURLPattern = (v) => typeof globalThis.URLPattern === \\\"function\\\" && v instanceof globalThis.URLPattern;\\n function serializeURLPattern(v) {\\n return {\\n hash: v.hash,\\n hostname: v.hostname,\\n password: v.password,\\n pathname: v.pathname,\\n port: v.port,\\n protocol: v.protocol,\\n search: v.search,\\n username: v.username\\n };\\n }\\n function serializeURLMatch(match) {\\n if (isString(match)) return { glob: match };\\n if (isRegExp4(match)) return { regexSource: match.source, regexFlags: match.flags };\\n if (isURLPattern(match)) return { urlPattern: serializeURLPattern(match) };\\n return void 0;\\n }\\n function urlMatchesEqual(match1, match2) {\\n if (isRegExp4(match1) && isRegExp4(match2))\\n return match1.source === match2.source && match1.flags === match2.flags;\\n return match1 === match2;\\n }\\n function urlMatches(baseURL, urlString, match, webSocketUrl) {\\n if (match === void 0 || match === \\\"\\\") return true;\\n if (isString(match)) match = new RegExp(resolveGlobToRegexPattern(baseURL, match, webSocketUrl));\\n if (isRegExp4(match)) {\\n const r = match.test(urlString);\\n return r;\\n }\\n const url = parseURL(urlString);\\n if (!url) return false;\\n if (isURLPattern(match)) return match.test(url.href);\\n if (typeof match !== \\\"function\\\")\\n throw new Error(\\\"url parameter should be string, RegExp, URLPattern or function\\\");\\n return match(url);\\n }\\n function resolveGlobToRegexPattern(baseURL, glob, webSocketUrl) {\\n if (webSocketUrl) baseURL = toWebSocketBaseUrl(baseURL);\\n glob = resolveGlobBase(baseURL, glob);\\n return globToRegexPattern(glob);\\n }\\n function toWebSocketBaseUrl(baseURL) {\\n if (baseURL && /^https?:\\\\/\\\\//.test(baseURL)) baseURL = baseURL.replace(/^http/, \\\"ws\\\");\\n return baseURL;\\n }\\n function resolveGlobBase(baseURL, match) {\\n if (!match.startsWith(\\\"*\\\")) {\\n let mapToken2 = function(original, replacement) {\\n if (original.length === 0) return \\\"\\\";\\n tokenMap.set(replacement, original);\\n return replacement;\\n };\\n var mapToken = mapToken2;\\n const tokenMap = /* @__PURE__ */ new Map();\\n match = match.replaceAll(/\\\\\\\\\\\\\\\\\\\\?/g, \\\"?\\\");\\n if (match.startsWith(\\\"about:\\\") || match.startsWith(\\\"data:\\\") || match.startsWith(\\\"chrome:\\\") || match.startsWith(\\\"edge:\\\") || match.startsWith(\\\"file:\\\"))\\n return match;\\n const relativePath = match.split(\\\"/\\\").map((token, index) => {\\n if (token === \\\".\\\" || token === \\\"..\\\" || token === \\\"\\\") return token;\\n if (index === 0 && token.endsWith(\\\":\\\")) {\\n if (token.indexOf(\\\"*\\\") !== -1 || token.indexOf(\\\"{\\\") !== -1)\\n return mapToken2(token, \\\"http:\\\");\\n return token;\\n }\\n const questionIndex = token.indexOf(\\\"?\\\");\\n if (questionIndex === -1) return mapToken2(token, `$_${index}_$`);\\n const newPrefix = mapToken2(token.substring(0, questionIndex), `$_${index}_$`);\\n const newSuffix = mapToken2(token.substring(questionIndex), `?$_${index}_$`);\\n return newPrefix + newSuffix;\\n }).join(\\\"/\\\");\\n const result = resolveBaseURL(baseURL, relativePath);\\n let resolved = result.resolved;\\n for (const [token, original] of tokenMap) {\\n const normalize = result.caseInsensitivePart?.includes(token);\\n resolved = resolved.replace(token, normalize ? original.toLowerCase() : original);\\n }\\n match = resolved;\\n }\\n return match;\\n }\\n function parseURL(url) {\\n try {\\n return new URL(url);\\n } catch (e) {\\n return null;\\n }\\n }\\n function resolveBaseURL(baseURL, givenURL) {\\n try {\\n const url = new URL(givenURL, baseURL);\\n const resolved = url.toString();\\n const caseInsensitivePrefix = url.origin;\\n return { resolved, caseInsensitivePart: caseInsensitivePrefix };\\n } catch (e) {\\n return { resolved: givenURL };\\n }\\n }\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/multimap.ts\\n var MultiMap = class {\\n _map;\\n constructor() {\\n this._map = /* @__PURE__ */ new Map();\\n }\\n set(key, value) {\\n let values = this._map.get(key);\\n if (!values) {\\n values = [];\\n this._map.set(key, values);\\n }\\n values.push(value);\\n }\\n get(key) {\\n return this._map.get(key) || [];\\n }\\n has(key) {\\n return this._map.has(key);\\n }\\n delete(key, value) {\\n const values = this._map.get(key);\\n if (!values) return;\\n if (values.includes(value))\\n this._map.set(\\n key,\\n values.filter((v) => value !== v)\\n );\\n }\\n deleteAll(key) {\\n this._map.delete(key);\\n }\\n hasValue(key, value) {\\n const values = this._map.get(key);\\n if (!values) return false;\\n return values.includes(value);\\n }\\n get size() {\\n return this._map.size;\\n }\\n [Symbol.iterator]() {\\n return this._map[Symbol.iterator]();\\n }\\n keys() {\\n return this._map.keys();\\n }\\n values() {\\n const result = [];\\n for (const key of this.keys()) result.push(...this.get(key));\\n return result;\\n }\\n clear() {\\n this._map.clear();\\n }\\n };\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/mimeType.ts\\n function getMimeTypeForPath(path) {\\n const dotIndex = path.lastIndexOf(\\\".\\\");\\n if (dotIndex === -1) return null;\\n const extension = path.substring(dotIndex + 1);\\n return types.get(extension) || null;\\n }\\n var types = /* @__PURE__ */ new Map([\\n [\\\"ez\\\", \\\"application/andrew-inset\\\"],\\n [\\\"aw\\\", \\\"application/applixware\\\"],\\n [\\\"atom\\\", \\\"application/atom+xml\\\"],\\n [\\\"atomcat\\\", \\\"application/atomcat+xml\\\"],\\n [\\\"atomdeleted\\\", \\\"application/atomdeleted+xml\\\"],\\n [\\\"atomsvc\\\", \\\"application/atomsvc+xml\\\"],\\n [\\\"dwd\\\", \\\"application/atsc-dwd+xml\\\"],\\n [\\\"held\\\", \\\"application/atsc-held+xml\\\"],\\n [\\\"rsat\\\", \\\"application/atsc-rsat+xml\\\"],\\n [\\\"bdoc\\\", \\\"application/bdoc\\\"],\\n [\\\"xcs\\\", \\\"application/calendar+xml\\\"],\\n [\\\"ccxml\\\", \\\"application/ccxml+xml\\\"],\\n [\\\"cdfx\\\", \\\"application/cdfx+xml\\\"],\\n [\\\"cdmia\\\", \\\"application/cdmi-capability\\\"],\\n [\\\"cdmic\\\", \\\"application/cdmi-container\\\"],\\n [\\\"cdmid\\\", \\\"application/cdmi-domain\\\"],\\n [\\\"cdmio\\\", \\\"application/cdmi-object\\\"],\\n [\\\"cdmiq\\\", \\\"application/cdmi-queue\\\"],\\n [\\\"cu\\\", \\\"application/cu-seeme\\\"],\\n [\\\"mpd\\\", \\\"application/dash+xml\\\"],\\n [\\\"davmount\\\", \\\"application/davmount+xml\\\"],\\n [\\\"dbk\\\", \\\"application/docbook+xml\\\"],\\n [\\\"dssc\\\", \\\"application/dssc+der\\\"],\\n [\\\"xdssc\\\", \\\"application/dssc+xml\\\"],\\n [\\\"ecma\\\", \\\"application/ecmascript\\\"],\\n [\\\"es\\\", \\\"application/ecmascript\\\"],\\n [\\\"emma\\\", \\\"application/emma+xml\\\"],\\n [\\\"emotionml\\\", \\\"application/emotionml+xml\\\"],\\n [\\\"epub\\\", \\\"application/epub+zip\\\"],\\n [\\\"exi\\\", \\\"application/exi\\\"],\\n [\\\"exp\\\", \\\"application/express\\\"],\\n [\\\"fdt\\\", \\\"application/fdt+xml\\\"],\\n [\\\"pfr\\\", \\\"application/font-tdpfr\\\"],\\n [\\\"geojson\\\", \\\"application/geo+json\\\"],\\n [\\\"gml\\\", \\\"application/gml+xml\\\"],\\n [\\\"gpx\\\", \\\"application/gpx+xml\\\"],\\n [\\\"gxf\\\", \\\"application/gxf\\\"],\\n [\\\"gz\\\", \\\"application/gzip\\\"],\\n [\\\"hjson\\\", \\\"application/hjson\\\"],\\n [\\\"stk\\\", \\\"application/hyperstudio\\\"],\\n [\\\"ink\\\", \\\"application/inkml+xml\\\"],\\n [\\\"inkml\\\", \\\"application/inkml+xml\\\"],\\n [\\\"ipfix\\\", \\\"application/ipfix\\\"],\\n [\\\"its\\\", \\\"application/its+xml\\\"],\\n [\\\"ear\\\", \\\"application/java-archive\\\"],\\n [\\\"jar\\\", \\\"application/java-archive\\\"],\\n [\\\"war\\\", \\\"application/java-archive\\\"],\\n [\\\"ser\\\", \\\"application/java-serialized-object\\\"],\\n [\\\"class\\\", \\\"application/java-vm\\\"],\\n [\\\"js\\\", \\\"application/javascript\\\"],\\n [\\\"mjs\\\", \\\"application/javascript\\\"],\\n [\\\"json\\\", \\\"application/json\\\"],\\n [\\\"map\\\", \\\"application/json\\\"],\\n [\\\"json5\\\", \\\"application/json5\\\"],\\n [\\\"jsonml\\\", \\\"application/jsonml+json\\\"],\\n [\\\"jsonld\\\", \\\"application/ld+json\\\"],\\n [\\\"lgr\\\", \\\"application/lgr+xml\\\"],\\n [\\\"lostxml\\\", \\\"application/lost+xml\\\"],\\n [\\\"hqx\\\", \\\"application/mac-binhex40\\\"],\\n [\\\"cpt\\\", \\\"application/mac-compactpro\\\"],\\n [\\\"mads\\\", \\\"application/mads+xml\\\"],\\n [\\\"webmanifest\\\", \\\"application/manifest+json\\\"],\\n [\\\"mrc\\\", \\\"application/marc\\\"],\\n [\\\"mrcx\\\", \\\"application/marcxml+xml\\\"],\\n [\\\"ma\\\", \\\"application/mathematica\\\"],\\n [\\\"mb\\\", \\\"application/mathematica\\\"],\\n [\\\"nb\\\", \\\"application/mathematica\\\"],\\n [\\\"mathml\\\", \\\"application/mathml+xml\\\"],\\n [\\\"mbox\\\", \\\"application/mbox\\\"],\\n [\\\"mscml\\\", \\\"application/mediaservercontrol+xml\\\"],\\n [\\\"metalink\\\", \\\"application/metalink+xml\\\"],\\n [\\\"meta4\\\", \\\"application/metalink4+xml\\\"],\\n [\\\"mets\\\", \\\"application/mets+xml\\\"],\\n [\\\"maei\\\", \\\"application/mmt-aei+xml\\\"],\\n [\\\"musd\\\", \\\"application/mmt-usd+xml\\\"],\\n [\\\"mods\\\", \\\"application/mods+xml\\\"],\\n [\\\"m21\\\", \\\"application/mp21\\\"],\\n [\\\"mp21\\\", \\\"application/mp21\\\"],\\n [\\\"m4p\\\", \\\"application/mp4\\\"],\\n [\\\"mp4s\\\", \\\"application/mp4\\\"],\\n [\\\"doc\\\", \\\"application/msword\\\"],\\n [\\\"dot\\\", \\\"application/msword\\\"],\\n [\\\"mxf\\\", \\\"application/mxf\\\"],\\n [\\\"nq\\\", \\\"application/n-quads\\\"],\\n [\\\"nt\\\", \\\"application/n-triples\\\"],\\n [\\\"cjs\\\", \\\"application/node\\\"],\\n [\\\"bin\\\", \\\"application/octet-stream\\\"],\\n [\\\"bpk\\\", \\\"application/octet-stream\\\"],\\n [\\\"buffer\\\", \\\"application/octet-stream\\\"],\\n [\\\"deb\\\", \\\"application/octet-stream\\\"],\\n [\\\"deploy\\\", \\\"application/octet-stream\\\"],\\n [\\\"dist\\\", \\\"application/octet-stream\\\"],\\n [\\\"distz\\\", \\\"application/octet-stream\\\"],\\n [\\\"dll\\\", \\\"application/octet-stream\\\"],\\n [\\\"dmg\\\", \\\"application/octet-stream\\\"],\\n [\\\"dms\\\", \\\"application/octet-stream\\\"],\\n [\\\"dump\\\", \\\"application/octet-stream\\\"],\\n [\\\"elc\\\", \\\"application/octet-stream\\\"],\\n [\\\"exe\\\", \\\"application/octet-stream\\\"],\\n [\\\"img\\\", \\\"application/octet-stream\\\"],\\n [\\\"iso\\\", \\\"application/octet-stream\\\"],\\n [\\\"lrf\\\", \\\"application/octet-stream\\\"],\\n [\\\"mar\\\", \\\"application/octet-stream\\\"],\\n [\\\"msi\\\", \\\"application/octet-stream\\\"],\\n [\\\"msm\\\", \\\"application/octet-stream\\\"],\\n [\\\"msp\\\", \\\"application/octet-stream\\\"],\\n [\\\"pkg\\\", \\\"application/octet-stream\\\"],\\n [\\\"so\\\", \\\"application/octet-stream\\\"],\\n [\\\"oda\\\", \\\"application/oda\\\"],\\n [\\\"opf\\\", \\\"application/oebps-package+xml\\\"],\\n [\\\"ogx\\\", \\\"application/ogg\\\"],\\n [\\\"omdoc\\\", \\\"application/omdoc+xml\\\"],\\n [\\\"onepkg\\\", \\\"application/onenote\\\"],\\n [\\\"onetmp\\\", \\\"application/onenote\\\"],\\n [\\\"onetoc\\\", \\\"application/onenote\\\"],\\n [\\\"onetoc2\\\", \\\"application/onenote\\\"],\\n [\\\"oxps\\\", \\\"application/oxps\\\"],\\n [\\\"relo\\\", \\\"application/p2p-overlay+xml\\\"],\\n [\\\"xer\\\", \\\"application/patch-ops-error+xml\\\"],\\n [\\\"pdf\\\", \\\"application/pdf\\\"],\\n [\\\"pgp\\\", \\\"application/pgp-encrypted\\\"],\\n [\\\"asc\\\", \\\"application/pgp-signature\\\"],\\n [\\\"sig\\\", \\\"application/pgp-signature\\\"],\\n [\\\"prf\\\", \\\"application/pics-rules\\\"],\\n [\\\"p10\\\", \\\"application/pkcs10\\\"],\\n [\\\"p7c\\\", \\\"application/pkcs7-mime\\\"],\\n [\\\"p7m\\\", \\\"application/pkcs7-mime\\\"],\\n [\\\"p7s\\\", \\\"application/pkcs7-signature\\\"],\\n [\\\"p8\\\", \\\"application/pkcs8\\\"],\\n [\\\"ac\\\", \\\"application/pkix-attr-cert\\\"],\\n [\\\"cer\\\", \\\"application/pkix-cert\\\"],\\n [\\\"crl\\\", \\\"application/pkix-crl\\\"],\\n [\\\"pkipath\\\", \\\"application/pkix-pkipath\\\"],\\n [\\\"pki\\\", \\\"application/pkixcmp\\\"],\\n [\\\"pls\\\", \\\"application/pls+xml\\\"],\\n [\\\"ai\\\", \\\"application/postscript\\\"],\\n [\\\"eps\\\", \\\"application/postscript\\\"],\\n [\\\"ps\\\", \\\"application/postscript\\\"],\\n [\\\"provx\\\", \\\"application/provenance+xml\\\"],\\n [\\\"pskcxml\\\", \\\"application/pskc+xml\\\"],\\n [\\\"raml\\\", \\\"application/raml+yaml\\\"],\\n [\\\"owl\\\", \\\"application/rdf+xml\\\"],\\n [\\\"rdf\\\", \\\"application/rdf+xml\\\"],\\n [\\\"rif\\\", \\\"application/reginfo+xml\\\"],\\n [\\\"rnc\\\", \\\"application/relax-ng-compact-syntax\\\"],\\n [\\\"rl\\\", \\\"application/resource-lists+xml\\\"],\\n [\\\"rld\\\", \\\"application/resource-lists-diff+xml\\\"],\\n [\\\"rs\\\", \\\"application/rls-services+xml\\\"],\\n [\\\"rapd\\\", \\\"application/route-apd+xml\\\"],\\n [\\\"sls\\\", \\\"application/route-s-tsid+xml\\\"],\\n [\\\"rusd\\\", \\\"application/route-usd+xml\\\"],\\n [\\\"gbr\\\", \\\"application/rpki-ghostbusters\\\"],\\n [\\\"mft\\\", \\\"application/rpki-manifest\\\"],\\n [\\\"roa\\\", \\\"application/rpki-roa\\\"],\\n [\\\"rsd\\\", \\\"application/rsd+xml\\\"],\\n [\\\"rss\\\", \\\"application/rss+xml\\\"],\\n [\\\"rtf\\\", \\\"application/rtf\\\"],\\n [\\\"sbml\\\", \\\"application/sbml+xml\\\"],\\n [\\\"scq\\\", \\\"application/scvp-cv-request\\\"],\\n [\\\"scs\\\", \\\"application/scvp-cv-response\\\"],\\n [\\\"spq\\\", \\\"application/scvp-vp-request\\\"],\\n [\\\"spp\\\", \\\"application/scvp-vp-response\\\"],\\n [\\\"sdp\\\", \\\"application/sdp\\\"],\\n [\\\"senmlx\\\", \\\"application/senml+xml\\\"],\\n [\\\"sensmlx\\\", \\\"application/sensml+xml\\\"],\\n [\\\"setpay\\\", \\\"application/set-payment-initiation\\\"],\\n [\\\"setreg\\\", \\\"application/set-registration-initiation\\\"],\\n [\\\"shf\\\", \\\"application/shf+xml\\\"],\\n [\\\"sieve\\\", \\\"application/sieve\\\"],\\n [\\\"siv\\\", \\\"application/sieve\\\"],\\n [\\\"smi\\\", \\\"application/smil+xml\\\"],\\n [\\\"smil\\\", \\\"application/smil+xml\\\"],\\n [\\\"rq\\\", \\\"application/sparql-query\\\"],\\n [\\\"srx\\\", \\\"application/sparql-results+xml\\\"],\\n [\\\"gram\\\", \\\"application/srgs\\\"],\\n [\\\"grxml\\\", \\\"application/srgs+xml\\\"],\\n [\\\"sru\\\", \\\"application/sru+xml\\\"],\\n [\\\"ssdl\\\", \\\"application/ssdl+xml\\\"],\\n [\\\"ssml\\\", \\\"application/ssml+xml\\\"],\\n [\\\"swidtag\\\", \\\"application/swid+xml\\\"],\\n [\\\"tei\\\", \\\"application/tei+xml\\\"],\\n [\\\"teicorpus\\\", \\\"application/tei+xml\\\"],\\n [\\\"tfi\\\", \\\"application/thraud+xml\\\"],\\n [\\\"tsd\\\", \\\"application/timestamped-data\\\"],\\n [\\\"toml\\\", \\\"application/toml\\\"],\\n [\\\"trig\\\", \\\"application/trig\\\"],\\n [\\\"ttml\\\", \\\"application/ttml+xml\\\"],\\n [\\\"ubj\\\", \\\"application/ubjson\\\"],\\n [\\\"rsheet\\\", \\\"application/urc-ressheet+xml\\\"],\\n [\\\"td\\\", \\\"application/urc-targetdesc+xml\\\"],\\n [\\\"vxml\\\", \\\"application/voicexml+xml\\\"],\\n [\\\"wasm\\\", \\\"application/wasm\\\"],\\n [\\\"wgt\\\", \\\"application/widget\\\"],\\n [\\\"hlp\\\", \\\"application/winhlp\\\"],\\n [\\\"wsdl\\\", \\\"application/wsdl+xml\\\"],\\n [\\\"wspolicy\\\", \\\"application/wspolicy+xml\\\"],\\n [\\\"xaml\\\", \\\"application/xaml+xml\\\"],\\n [\\\"xav\\\", \\\"application/xcap-att+xml\\\"],\\n [\\\"xca\\\", \\\"application/xcap-caps+xml\\\"],\\n [\\\"xdf\\\", \\\"application/xcap-diff+xml\\\"],\\n [\\\"xel\\\", \\\"application/xcap-el+xml\\\"],\\n [\\\"xns\\\", \\\"application/xcap-ns+xml\\\"],\\n [\\\"xenc\\\", \\\"application/xenc+xml\\\"],\\n [\\\"xht\\\", \\\"application/xhtml+xml\\\"],\\n [\\\"xhtml\\\", \\\"application/xhtml+xml\\\"],\\n [\\\"xlf\\\", \\\"application/xliff+xml\\\"],\\n [\\\"rng\\\", \\\"application/xml\\\"],\\n [\\\"xml\\\", \\\"application/xml\\\"],\\n [\\\"xsd\\\", \\\"application/xml\\\"],\\n [\\\"xsl\\\", \\\"application/xml\\\"],\\n [\\\"dtd\\\", \\\"application/xml-dtd\\\"],\\n [\\\"xop\\\", \\\"application/xop+xml\\\"],\\n [\\\"xpl\\\", \\\"application/xproc+xml\\\"],\\n [\\\"*xsl\\\", \\\"application/xslt+xml\\\"],\\n [\\\"xslt\\\", \\\"application/xslt+xml\\\"],\\n [\\\"xspf\\\", \\\"application/xspf+xml\\\"],\\n [\\\"mxml\\\", \\\"application/xv+xml\\\"],\\n [\\\"xhvml\\\", \\\"application/xv+xml\\\"],\\n [\\\"xvm\\\", \\\"application/xv+xml\\\"],\\n [\\\"xvml\\\", \\\"application/xv+xml\\\"],\\n [\\\"yang\\\", \\\"application/yang\\\"],\\n [\\\"yin\\\", \\\"application/yin+xml\\\"],\\n [\\\"zip\\\", \\\"application/zip\\\"],\\n [\\\"*3gpp\\\", \\\"audio/3gpp\\\"],\\n [\\\"adp\\\", \\\"audio/adpcm\\\"],\\n [\\\"amr\\\", \\\"audio/amr\\\"],\\n [\\\"au\\\", \\\"audio/basic\\\"],\\n [\\\"snd\\\", \\\"audio/basic\\\"],\\n [\\\"kar\\\", \\\"audio/midi\\\"],\\n [\\\"mid\\\", \\\"audio/midi\\\"],\\n [\\\"midi\\\", \\\"audio/midi\\\"],\\n [\\\"rmi\\\", \\\"audio/midi\\\"],\\n [\\\"mxmf\\\", \\\"audio/mobile-xmf\\\"],\\n [\\\"*mp3\\\", \\\"audio/mp3\\\"],\\n [\\\"m4a\\\", \\\"audio/mp4\\\"],\\n [\\\"mp4a\\\", \\\"audio/mp4\\\"],\\n [\\\"m2a\\\", \\\"audio/mpeg\\\"],\\n [\\\"m3a\\\", \\\"audio/mpeg\\\"],\\n [\\\"mp2\\\", \\\"audio/mpeg\\\"],\\n [\\\"mp2a\\\", \\\"audio/mpeg\\\"],\\n [\\\"mp3\\\", \\\"audio/mpeg\\\"],\\n [\\\"mpga\\\", \\\"audio/mpeg\\\"],\\n [\\\"oga\\\", \\\"audio/ogg\\\"],\\n [\\\"ogg\\\", \\\"audio/ogg\\\"],\\n [\\\"opus\\\", \\\"audio/ogg\\\"],\\n [\\\"spx\\\", \\\"audio/ogg\\\"],\\n [\\\"s3m\\\", \\\"audio/s3m\\\"],\\n [\\\"sil\\\", \\\"audio/silk\\\"],\\n [\\\"wav\\\", \\\"audio/wav\\\"],\\n [\\\"*wav\\\", \\\"audio/wave\\\"],\\n [\\\"weba\\\", \\\"audio/webm\\\"],\\n [\\\"xm\\\", \\\"audio/xm\\\"],\\n [\\\"ttc\\\", \\\"font/collection\\\"],\\n [\\\"otf\\\", \\\"font/otf\\\"],\\n [\\\"ttf\\\", \\\"font/ttf\\\"],\\n [\\\"woff\\\", \\\"font/woff\\\"],\\n [\\\"woff2\\\", \\\"font/woff2\\\"],\\n [\\\"exr\\\", \\\"image/aces\\\"],\\n [\\\"apng\\\", \\\"image/apng\\\"],\\n [\\\"avif\\\", \\\"image/avif\\\"],\\n [\\\"bmp\\\", \\\"image/bmp\\\"],\\n [\\\"cgm\\\", \\\"image/cgm\\\"],\\n [\\\"drle\\\", \\\"image/dicom-rle\\\"],\\n [\\\"emf\\\", \\\"image/emf\\\"],\\n [\\\"fits\\\", \\\"image/fits\\\"],\\n [\\\"g3\\\", \\\"image/g3fax\\\"],\\n [\\\"gif\\\", \\\"image/gif\\\"],\\n [\\\"heic\\\", \\\"image/heic\\\"],\\n [\\\"heics\\\", \\\"image/heic-sequence\\\"],\\n [\\\"heif\\\", \\\"image/heif\\\"],\\n [\\\"heifs\\\", \\\"image/heif-sequence\\\"],\\n [\\\"hej2\\\", \\\"image/hej2k\\\"],\\n [\\\"hsj2\\\", \\\"image/hsj2\\\"],\\n [\\\"ief\\\", \\\"image/ief\\\"],\\n [\\\"jls\\\", \\\"image/jls\\\"],\\n [\\\"jp2\\\", \\\"image/jp2\\\"],\\n [\\\"jpg2\\\", \\\"image/jp2\\\"],\\n [\\\"jpe\\\", \\\"image/jpeg\\\"],\\n [\\\"jpeg\\\", \\\"image/jpeg\\\"],\\n [\\\"jpg\\\", \\\"image/jpeg\\\"],\\n [\\\"jph\\\", \\\"image/jph\\\"],\\n [\\\"jhc\\\", \\\"image/jphc\\\"],\\n [\\\"jpm\\\", \\\"image/jpm\\\"],\\n [\\\"jpf\\\", \\\"image/jpx\\\"],\\n [\\\"jpx\\\", \\\"image/jpx\\\"],\\n [\\\"jxr\\\", \\\"image/jxr\\\"],\\n [\\\"jxra\\\", \\\"image/jxra\\\"],\\n [\\\"jxrs\\\", \\\"image/jxrs\\\"],\\n [\\\"jxs\\\", \\\"image/jxs\\\"],\\n [\\\"jxsc\\\", \\\"image/jxsc\\\"],\\n [\\\"jxsi\\\", \\\"image/jxsi\\\"],\\n [\\\"jxss\\\", \\\"image/jxss\\\"],\\n [\\\"ktx\\\", \\\"image/ktx\\\"],\\n [\\\"ktx2\\\", \\\"image/ktx2\\\"],\\n [\\\"png\\\", \\\"image/png\\\"],\\n [\\\"sgi\\\", \\\"image/sgi\\\"],\\n [\\\"svg\\\", \\\"image/svg+xml\\\"],\\n [\\\"svgz\\\", \\\"image/svg+xml\\\"],\\n [\\\"t38\\\", \\\"image/t38\\\"],\\n [\\\"tif\\\", \\\"image/tiff\\\"],\\n [\\\"tiff\\\", \\\"image/tiff\\\"],\\n [\\\"tfx\\\", \\\"image/tiff-fx\\\"],\\n [\\\"webp\\\", \\\"image/webp\\\"],\\n [\\\"wmf\\\", \\\"image/wmf\\\"],\\n [\\\"disposition-notification\\\", \\\"message/disposition-notification\\\"],\\n [\\\"u8msg\\\", \\\"message/global\\\"],\\n [\\\"u8dsn\\\", \\\"message/global-delivery-status\\\"],\\n [\\\"u8mdn\\\", \\\"message/global-disposition-notification\\\"],\\n [\\\"u8hdr\\\", \\\"message/global-headers\\\"],\\n [\\\"eml\\\", \\\"message/rfc822\\\"],\\n [\\\"mime\\\", \\\"message/rfc822\\\"],\\n [\\\"3mf\\\", \\\"model/3mf\\\"],\\n [\\\"gltf\\\", \\\"model/gltf+json\\\"],\\n [\\\"glb\\\", \\\"model/gltf-binary\\\"],\\n [\\\"iges\\\", \\\"model/iges\\\"],\\n [\\\"igs\\\", \\\"model/iges\\\"],\\n [\\\"mesh\\\", \\\"model/mesh\\\"],\\n [\\\"msh\\\", \\\"model/mesh\\\"],\\n [\\\"silo\\\", \\\"model/mesh\\\"],\\n [\\\"mtl\\\", \\\"model/mtl\\\"],\\n [\\\"obj\\\", \\\"model/obj\\\"],\\n [\\\"stpx\\\", \\\"model/step+xml\\\"],\\n [\\\"stpz\\\", \\\"model/step+zip\\\"],\\n [\\\"stpxz\\\", \\\"model/step-xml+zip\\\"],\\n [\\\"stl\\\", \\\"model/stl\\\"],\\n [\\\"vrml\\\", \\\"model/vrml\\\"],\\n [\\\"wrl\\\", \\\"model/vrml\\\"],\\n [\\\"*x3db\\\", \\\"model/x3d+binary\\\"],\\n [\\\"x3dbz\\\", \\\"model/x3d+binary\\\"],\\n [\\\"x3db\\\", \\\"model/x3d+fastinfoset\\\"],\\n [\\\"*x3dv\\\", \\\"model/x3d+vrml\\\"],\\n [\\\"x3dvz\\\", \\\"model/x3d+vrml\\\"],\\n [\\\"x3d\\\", \\\"model/x3d+xml\\\"],\\n [\\\"x3dz\\\", \\\"model/x3d+xml\\\"],\\n [\\\"x3dv\\\", \\\"model/x3d-vrml\\\"],\\n [\\\"appcache\\\", \\\"text/cache-manifest\\\"],\\n [\\\"manifest\\\", \\\"text/cache-manifest\\\"],\\n [\\\"ics\\\", \\\"text/calendar\\\"],\\n [\\\"ifb\\\", \\\"text/calendar\\\"],\\n [\\\"coffee\\\", \\\"text/coffeescript\\\"],\\n [\\\"litcoffee\\\", \\\"text/coffeescript\\\"],\\n [\\\"css\\\", \\\"text/css\\\"],\\n [\\\"csv\\\", \\\"text/csv\\\"],\\n [\\\"htm\\\", \\\"text/html\\\"],\\n [\\\"html\\\", \\\"text/html\\\"],\\n [\\\"shtml\\\", \\\"text/html\\\"],\\n [\\\"jade\\\", \\\"text/jade\\\"],\\n [\\\"jsx\\\", \\\"text/jsx\\\"],\\n [\\\"less\\\", \\\"text/less\\\"],\\n [\\\"markdown\\\", \\\"text/markdown\\\"],\\n [\\\"md\\\", \\\"text/markdown\\\"],\\n [\\\"mml\\\", \\\"text/mathml\\\"],\\n [\\\"mdx\\\", \\\"text/mdx\\\"],\\n [\\\"n3\\\", \\\"text/n3\\\"],\\n [\\\"conf\\\", \\\"text/plain\\\"],\\n [\\\"def\\\", \\\"text/plain\\\"],\\n [\\\"in\\\", \\\"text/plain\\\"],\\n [\\\"ini\\\", \\\"text/plain\\\"],\\n [\\\"list\\\", \\\"text/plain\\\"],\\n [\\\"log\\\", \\\"text/plain\\\"],\\n [\\\"text\\\", \\\"text/plain\\\"],\\n [\\\"txt\\\", \\\"text/plain\\\"],\\n [\\\"rtx\\\", \\\"text/richtext\\\"],\\n [\\\"*rtf\\\", \\\"text/rtf\\\"],\\n [\\\"sgm\\\", \\\"text/sgml\\\"],\\n [\\\"sgml\\\", \\\"text/sgml\\\"],\\n [\\\"shex\\\", \\\"text/shex\\\"],\\n [\\\"slim\\\", \\\"text/slim\\\"],\\n [\\\"slm\\\", \\\"text/slim\\\"],\\n [\\\"spdx\\\", \\\"text/spdx\\\"],\\n [\\\"styl\\\", \\\"text/stylus\\\"],\\n [\\\"stylus\\\", \\\"text/stylus\\\"],\\n [\\\"tsv\\\", \\\"text/tab-separated-values\\\"],\\n [\\\"man\\\", \\\"text/troff\\\"],\\n [\\\"me\\\", \\\"text/troff\\\"],\\n [\\\"ms\\\", \\\"text/troff\\\"],\\n [\\\"roff\\\", \\\"text/troff\\\"],\\n [\\\"t\\\", \\\"text/troff\\\"],\\n [\\\"tr\\\", \\\"text/troff\\\"],\\n [\\\"ttl\\\", \\\"text/turtle\\\"],\\n [\\\"uri\\\", \\\"text/uri-list\\\"],\\n [\\\"uris\\\", \\\"text/uri-list\\\"],\\n [\\\"urls\\\", \\\"text/uri-list\\\"],\\n [\\\"vcard\\\", \\\"text/vcard\\\"],\\n [\\\"vtt\\\", \\\"text/vtt\\\"],\\n [\\\"*xml\\\", \\\"text/xml\\\"],\\n [\\\"yaml\\\", \\\"text/yaml\\\"],\\n [\\\"yml\\\", \\\"text/yaml\\\"],\\n [\\\"3gp\\\", \\\"video/3gpp\\\"],\\n [\\\"3gpp\\\", \\\"video/3gpp\\\"],\\n [\\\"3g2\\\", \\\"video/3gpp2\\\"],\\n [\\\"h261\\\", \\\"video/h261\\\"],\\n [\\\"h263\\\", \\\"video/h263\\\"],\\n [\\\"h264\\\", \\\"video/h264\\\"],\\n [\\\"m4s\\\", \\\"video/iso.segment\\\"],\\n [\\\"jpgv\\\", \\\"video/jpeg\\\"],\\n [\\\"jpm\\\", \\\"video/jpm\\\"],\\n [\\\"jpgm\\\", \\\"video/jpm\\\"],\\n [\\\"mj2\\\", \\\"video/mj2\\\"],\\n [\\\"mjp2\\\", \\\"video/mj2\\\"],\\n [\\\"ts\\\", \\\"application/typescript\\\"],\\n [\\\"mp4\\\", \\\"video/mp4\\\"],\\n [\\\"mp4v\\\", \\\"video/mp4\\\"],\\n [\\\"mpg4\\\", \\\"video/mp4\\\"],\\n [\\\"m1v\\\", \\\"video/mpeg\\\"],\\n [\\\"m2v\\\", \\\"video/mpeg\\\"],\\n [\\\"mpe\\\", \\\"video/mpeg\\\"],\\n [\\\"mpeg\\\", \\\"video/mpeg\\\"],\\n [\\\"mpg\\\", \\\"video/mpeg\\\"],\\n [\\\"ogv\\\", \\\"video/ogg\\\"],\\n [\\\"mov\\\", \\\"video/quicktime\\\"],\\n [\\\"qt\\\", \\\"video/quicktime\\\"],\\n [\\\"webm\\\", \\\"video/webm\\\"]\\n ]);\\n\\n // src/sandbox/forked-client/src/client/network.ts\\n var Request = class _Request extends ChannelOwner {\\n _redirectedFrom = null;\\n _redirectedTo = null;\\n _failureText = null;\\n _response = null;\\n _hasResponse = false;\\n _provisionalHeaders;\\n _actualHeadersPromise;\\n _timing;\\n _fallbackOverrides = {};\\n static from(request) {\\n return request._object;\\n }\\n static fromNullable(request) {\\n return request ? _Request.from(request) : null;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._redirectedFrom = _Request.fromNullable(initializer.redirectedFrom);\\n if (this._redirectedFrom) this._redirectedFrom._redirectedTo = this;\\n this._provisionalHeaders = new RawHeaders(initializer.headers);\\n this._timing = {\\n startTime: 0,\\n domainLookupStart: -1,\\n domainLookupEnd: -1,\\n connectStart: -1,\\n secureConnectionStart: -1,\\n connectEnd: -1,\\n requestStart: -1,\\n responseStart: -1,\\n responseEnd: -1\\n };\\n this._hasResponse = this._initializer.hasResponse;\\n this._channel.on(\\\"response\\\", () => this._hasResponse = true);\\n }\\n url() {\\n return this._fallbackOverrides.url || this._initializer.url;\\n }\\n resourceType() {\\n return this._initializer.resourceType;\\n }\\n method() {\\n return this._fallbackOverrides.method || this._initializer.method;\\n }\\n postData() {\\n return (this._fallbackOverrides.postDataBuffer || this._initializer.postData)?.toString(\\\"utf-8\\\") || null;\\n }\\n postDataBuffer() {\\n return this._fallbackOverrides.postDataBuffer || this._initializer.postData || null;\\n }\\n postDataJSON() {\\n const postData = this.postData();\\n if (!postData) return null;\\n const contentType = this.headers()[\\\"content-type\\\"];\\n if (contentType?.includes(\\\"application/x-www-form-urlencoded\\\")) {\\n const entries = {};\\n const parsed = new URLSearchParams(postData);\\n for (const [k, v] of parsed.entries()) entries[k] = v;\\n return entries;\\n }\\n try {\\n return JSON.parse(postData);\\n } catch (e) {\\n throw new Error(\\\"POST data is not a valid JSON object: \\\" + postData);\\n }\\n }\\n /**\\n * @deprecated\\n */\\n headers() {\\n if (this._fallbackOverrides.headers)\\n return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers).headers();\\n return this._provisionalHeaders.headers();\\n }\\n async _actualHeaders() {\\n if (this._fallbackOverrides.headers)\\n return RawHeaders._fromHeadersObjectLossy(this._fallbackOverrides.headers);\\n if (!this._actualHeadersPromise) {\\n this._actualHeadersPromise = this._wrapApiCall(\\n async () => {\\n return new RawHeaders((await this._channel.rawRequestHeaders()).headers);\\n },\\n { internal: true }\\n );\\n }\\n return await this._actualHeadersPromise;\\n }\\n async allHeaders() {\\n return (await this._actualHeaders()).headers();\\n }\\n async headersArray() {\\n return (await this._actualHeaders()).headersArray();\\n }\\n async headerValue(name) {\\n return (await this._actualHeaders()).get(name);\\n }\\n async response() {\\n return Response.fromNullable((await this._channel.response()).response);\\n }\\n async _internalResponse() {\\n return Response.fromNullable((await this._channel.response()).response);\\n }\\n existingResponse() {\\n return this._response;\\n }\\n frame() {\\n if (!this._initializer.frame) {\\n assert(this.serviceWorker());\\n throw new Error(\\\"Service Worker requests do not have an associated frame.\\\");\\n }\\n const frame = Frame.from(this._initializer.frame);\\n if (!frame._page) {\\n throw new Error(\\n [\\n \\\"Frame for this navigation request is not available, because the request\\\",\\n \\\"was issued before the frame is created. You can check whether the request\\\",\\n \\\"is a navigation request by calling isNavigationRequest() method.\\\"\\n ].join(\\\"\\\\n\\\")\\n );\\n }\\n return frame;\\n }\\n _safePage() {\\n return Frame.fromNullable(this._initializer.frame)?._page || null;\\n }\\n serviceWorker() {\\n return this._initializer.serviceWorker ? Worker.from(this._initializer.serviceWorker) : null;\\n }\\n isNavigationRequest() {\\n return this._initializer.isNavigationRequest;\\n }\\n redirectedFrom() {\\n return this._redirectedFrom;\\n }\\n redirectedTo() {\\n return this._redirectedTo;\\n }\\n failure() {\\n if (this._failureText === null) return null;\\n return {\\n errorText: this._failureText\\n };\\n }\\n timing() {\\n return this._timing;\\n }\\n async sizes() {\\n const response = await this.response();\\n if (!response) throw new Error(\\\"Unable to fetch sizes for failed request\\\");\\n return (await response._channel.sizes()).sizes;\\n }\\n _setResponseEndTiming(responseEndTiming) {\\n this._timing.responseEnd = responseEndTiming;\\n if (this._timing.responseStart === -1) this._timing.responseStart = responseEndTiming;\\n }\\n _finalRequest() {\\n return this._redirectedTo ? this._redirectedTo._finalRequest() : this;\\n }\\n _applyFallbackOverrides(overrides) {\\n if (overrides.url) this._fallbackOverrides.url = overrides.url;\\n if (overrides.method) this._fallbackOverrides.method = overrides.method;\\n if (overrides.headers) this._fallbackOverrides.headers = overrides.headers;\\n if (isString(overrides.postData))\\n this._fallbackOverrides.postDataBuffer = Buffer.from(overrides.postData, \\\"utf-8\\\");\\n else if (overrides.postData instanceof Buffer)\\n this._fallbackOverrides.postDataBuffer = overrides.postData;\\n else if (overrides.postData)\\n this._fallbackOverrides.postDataBuffer = Buffer.from(\\n JSON.stringify(overrides.postData),\\n \\\"utf-8\\\"\\n );\\n }\\n _fallbackOverridesForContinue() {\\n return this._fallbackOverrides;\\n }\\n _targetClosedScope() {\\n return this.serviceWorker()?._closedScope || this._safePage()?._closedOrCrashedScope || new LongStandingScope();\\n }\\n };\\n var Route = class extends ChannelOwner {\\n _handlingPromise = null;\\n _context;\\n _didThrow = false;\\n static from(route) {\\n return route._object;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n }\\n request() {\\n return Request.from(this._initializer.request);\\n }\\n async _raceWithTargetClose(promise) {\\n return await this.request()._targetClosedScope().safeRace(promise);\\n }\\n async _startHandling() {\\n this._handlingPromise = new ManualPromise();\\n return await this._handlingPromise;\\n }\\n async fallback(options = {}) {\\n this._checkNotHandled();\\n this.request()._applyFallbackOverrides(options);\\n this._reportHandled(false);\\n }\\n async abort(errorCode) {\\n await this._handleRoute(async () => {\\n await this._raceWithTargetClose(this._channel.abort({ errorCode }));\\n });\\n }\\n async _redirectNavigationRequest(url) {\\n await this._handleRoute(async () => {\\n await this._raceWithTargetClose(this._channel.redirectNavigationRequest({ url }));\\n });\\n }\\n async fetch(options = {}) {\\n return await this._wrapApiCall(async () => {\\n return await this._context.request._innerFetch({\\n request: this.request(),\\n data: options.postData,\\n ...options\\n });\\n });\\n }\\n async fulfill(options = {}) {\\n await this._handleRoute(async () => {\\n await this._innerFulfill(options);\\n });\\n }\\n async _handleRoute(callback) {\\n this._checkNotHandled();\\n try {\\n await callback();\\n this._reportHandled(true);\\n } catch (e) {\\n this._didThrow = true;\\n throw e;\\n }\\n }\\n async _innerFulfill(options = {}) {\\n let fetchResponseUid;\\n let { status: statusOption, headers: headersOption, body } = options;\\n if (options.json !== void 0) {\\n assert(options.body === void 0, \\\"Can specify either body or json parameters\\\");\\n body = JSON.stringify(options.json);\\n }\\n if (options.response instanceof APIResponse) {\\n statusOption ??= options.response.status();\\n headersOption ??= options.response.headers();\\n if (body === void 0 && options.path === void 0) {\\n if (options.response._request._connection === this._connection)\\n fetchResponseUid = options.response._fetchUid();\\n else body = await options.response.body();\\n }\\n }\\n let isBase64 = false;\\n let length = 0;\\n if (options.path) {\\n const buffer = await this._platform.fs().promises.readFile(options.path);\\n body = buffer.toString(\\\"base64\\\");\\n isBase64 = true;\\n length = buffer.length;\\n } else if (isString(body)) {\\n isBase64 = false;\\n length = Buffer.byteLength(body);\\n } else if (body) {\\n length = body.length;\\n body = body.toString(\\\"base64\\\");\\n isBase64 = true;\\n }\\n const headers = {};\\n for (const header of Object.keys(headersOption || {}))\\n headers[header.toLowerCase()] = String(headersOption[header]);\\n if (options.contentType) headers[\\\"content-type\\\"] = String(options.contentType);\\n else if (options.json) headers[\\\"content-type\\\"] = \\\"application/json\\\";\\n else if (options.path)\\n headers[\\\"content-type\\\"] = getMimeTypeForPath(options.path) || \\\"application/octet-stream\\\";\\n if (length && !(\\\"content-length\\\" in headers)) headers[\\\"content-length\\\"] = String(length);\\n await this._raceWithTargetClose(\\n this._channel.fulfill({\\n status: statusOption || 200,\\n headers: headersObjectToArray(headers),\\n body,\\n isBase64,\\n fetchResponseUid\\n })\\n );\\n }\\n async continue(options = {}) {\\n await this._handleRoute(async () => {\\n this.request()._applyFallbackOverrides(options);\\n await this._innerContinue(\\n false\\n /* isFallback */\\n );\\n });\\n }\\n _checkNotHandled() {\\n if (!this._handlingPromise) throw new Error(\\\"Route is already handled!\\\");\\n }\\n _reportHandled(done) {\\n const chain = this._handlingPromise;\\n this._handlingPromise = null;\\n chain.resolve(done);\\n }\\n async _innerContinue(isFallback) {\\n const options = this.request()._fallbackOverridesForContinue();\\n return await this._raceWithTargetClose(\\n this._channel.continue({\\n url: options.url,\\n method: options.method,\\n headers: options.headers ? headersObjectToArray(options.headers) : void 0,\\n postData: options.postDataBuffer,\\n isFallback\\n })\\n );\\n }\\n };\\n var WebSocketRoute = class extends ChannelOwner {\\n static from(route) {\\n return route._object;\\n }\\n _onPageMessage;\\n _onPageClose;\\n _onServerMessage;\\n _onServerClose;\\n _server;\\n _connected = false;\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._server = {\\n onMessage: (handler) => {\\n this._onServerMessage = handler;\\n },\\n onClose: (handler) => {\\n this._onServerClose = handler;\\n },\\n connectToServer: () => {\\n throw new Error(`connectToServer must be called on the page-side WebSocketRoute`);\\n },\\n url: () => {\\n return this._initializer.url;\\n },\\n close: async (options = {}) => {\\n await this._channel.closeServer({ ...options, wasClean: true }).catch(() => {\\n });\\n },\\n send: (message) => {\\n if (isString(message))\\n this._channel.sendToServer({ message, isBase64: false }).catch(() => {\\n });\\n else\\n this._channel.sendToServer({ message: message.toString(\\\"base64\\\"), isBase64: true }).catch(() => {\\n });\\n },\\n async [Symbol.asyncDispose]() {\\n await this.close();\\n }\\n };\\n this._channel.on(\\\"messageFromPage\\\", ({ message, isBase64 }) => {\\n if (this._onPageMessage)\\n this._onPageMessage(isBase64 ? Buffer.from(message, \\\"base64\\\") : message);\\n else if (this._connected) this._channel.sendToServer({ message, isBase64 }).catch(() => {\\n });\\n });\\n this._channel.on(\\\"messageFromServer\\\", ({ message, isBase64 }) => {\\n if (this._onServerMessage)\\n this._onServerMessage(isBase64 ? Buffer.from(message, \\\"base64\\\") : message);\\n else this._channel.sendToPage({ message, isBase64 }).catch(() => {\\n });\\n });\\n this._channel.on(\\\"closePage\\\", ({ code, reason, wasClean }) => {\\n if (this._onPageClose) this._onPageClose(code, reason);\\n else this._channel.closeServer({ code, reason, wasClean }).catch(() => {\\n });\\n });\\n this._channel.on(\\\"closeServer\\\", ({ code, reason, wasClean }) => {\\n if (this._onServerClose) this._onServerClose(code, reason);\\n else this._channel.closePage({ code, reason, wasClean }).catch(() => {\\n });\\n });\\n }\\n url() {\\n return this._initializer.url;\\n }\\n async close(options = {}) {\\n await this._channel.closePage({ ...options, wasClean: true }).catch(() => {\\n });\\n }\\n connectToServer() {\\n if (this._connected) throw new Error(\\\"Already connected to the server\\\");\\n this._connected = true;\\n this._channel.connect().catch(() => {\\n });\\n return this._server;\\n }\\n send(message) {\\n if (isString(message)) this._channel.sendToPage({ message, isBase64: false }).catch(() => {\\n });\\n else\\n this._channel.sendToPage({ message: message.toString(\\\"base64\\\"), isBase64: true }).catch(() => {\\n });\\n }\\n onMessage(handler) {\\n this._onPageMessage = handler;\\n }\\n onClose(handler) {\\n this._onPageClose = handler;\\n }\\n async [Symbol.asyncDispose]() {\\n await this.close();\\n }\\n async _afterHandle() {\\n if (this._connected) return;\\n await this._channel.ensureOpened().catch(() => {\\n });\\n }\\n };\\n var WebSocketRouteHandler = class {\\n _baseURL;\\n url;\\n handler;\\n constructor(baseURL, url, handler) {\\n this._baseURL = baseURL;\\n this.url = url;\\n this.handler = handler;\\n }\\n static prepareInterceptionPatterns(handlers) {\\n const patterns = [];\\n let all = false;\\n for (const handler of handlers) {\\n const serialized = serializeURLMatch(handler.url);\\n if (serialized) patterns.push(serialized);\\n else all = true;\\n }\\n if (all) return [{ glob: \\\"**/*\\\" }];\\n return patterns;\\n }\\n matches(wsURL) {\\n return urlMatches(this._baseURL, wsURL, this.url, true);\\n }\\n async handle(webSocketRoute) {\\n const handler = this.handler;\\n await handler(webSocketRoute);\\n await webSocketRoute._afterHandle();\\n }\\n };\\n var Response = class _Response extends ChannelOwner {\\n _provisionalHeaders;\\n _actualHeadersPromise;\\n _request;\\n _finishedPromise = new ManualPromise();\\n static from(response) {\\n return response._object;\\n }\\n static fromNullable(response) {\\n return response ? _Response.from(response) : null;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._provisionalHeaders = new RawHeaders(initializer.headers);\\n this._request = Request.from(this._initializer.request);\\n this._request._response = this;\\n Object.assign(this._request._timing, this._initializer.timing);\\n }\\n url() {\\n return this._initializer.url;\\n }\\n ok() {\\n return this._initializer.status === 0 || this._initializer.status >= 200 && this._initializer.status <= 299;\\n }\\n status() {\\n return this._initializer.status;\\n }\\n statusText() {\\n return this._initializer.statusText;\\n }\\n fromServiceWorker() {\\n return this._initializer.fromServiceWorker;\\n }\\n /**\\n * @deprecated\\n */\\n headers() {\\n return this._provisionalHeaders.headers();\\n }\\n async _actualHeaders() {\\n if (!this._actualHeadersPromise) {\\n this._actualHeadersPromise = (async () => {\\n return new RawHeaders((await this._channel.rawResponseHeaders()).headers);\\n })();\\n }\\n return await this._actualHeadersPromise;\\n }\\n async allHeaders() {\\n return (await this._actualHeaders()).headers();\\n }\\n async headersArray() {\\n return (await this._actualHeaders()).headersArray().slice();\\n }\\n async headerValue(name) {\\n return (await this._actualHeaders()).get(name);\\n }\\n async headerValues(name) {\\n return (await this._actualHeaders()).getAll(name);\\n }\\n async finished() {\\n return await this.request()._targetClosedScope().race(this._finishedPromise);\\n }\\n async body() {\\n return (await this._channel.body()).binary;\\n }\\n async text() {\\n const content = await this.body();\\n return content.toString(\\\"utf8\\\");\\n }\\n async json() {\\n const content = await this.text();\\n return JSON.parse(content);\\n }\\n request() {\\n return this._request;\\n }\\n frame() {\\n return this._request.frame();\\n }\\n async serverAddr() {\\n return (await this._channel.serverAddr()).value || null;\\n }\\n async securityDetails() {\\n return (await this._channel.securityDetails()).value || null;\\n }\\n async httpVersion() {\\n return (await this._channel.httpVersion()).value;\\n }\\n };\\n var WebSocket = class extends ChannelOwner {\\n _page;\\n _isClosed;\\n static from(webSocket) {\\n return webSocket._object;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._isClosed = false;\\n this._page = parent;\\n this._channel.on(\\\"frameSent\\\", (event) => {\\n if (event.opcode === 1) this.emit(Events.WebSocket.FrameSent, { payload: event.data });\\n else if (event.opcode === 2)\\n this.emit(Events.WebSocket.FrameSent, { payload: Buffer.from(event.data, \\\"base64\\\") });\\n });\\n this._channel.on(\\\"frameReceived\\\", (event) => {\\n if (event.opcode === 1) this.emit(Events.WebSocket.FrameReceived, { payload: event.data });\\n else if (event.opcode === 2)\\n this.emit(Events.WebSocket.FrameReceived, { payload: Buffer.from(event.data, \\\"base64\\\") });\\n });\\n this._channel.on(\\\"socketError\\\", ({ error }) => this.emit(Events.WebSocket.Error, error));\\n this._channel.on(\\\"close\\\", () => {\\n this._isClosed = true;\\n this.emit(Events.WebSocket.Close, this);\\n });\\n }\\n url() {\\n return this._initializer.url;\\n }\\n isClosed() {\\n return this._isClosed;\\n }\\n async waitForEvent(event, optionsOrPredicate = {}) {\\n return await this._wrapApiCall(async () => {\\n const timeout = this._page._timeoutSettings.timeout(\\n typeof optionsOrPredicate === \\\"function\\\" ? {} : optionsOrPredicate\\n );\\n const predicate = typeof optionsOrPredicate === \\\"function\\\" ? optionsOrPredicate : optionsOrPredicate.predicate;\\n const waiter = Waiter.createForEvent(this, event);\\n waiter.rejectOnTimeout(\\n timeout,\\n `Timeout ${timeout}ms exceeded while waiting for event \\\"${event}\\\"`\\n );\\n if (event !== Events.WebSocket.Error)\\n waiter.rejectOnEvent(this, Events.WebSocket.Error, new Error(\\\"Socket error\\\"));\\n if (event !== Events.WebSocket.Close)\\n waiter.rejectOnEvent(this, Events.WebSocket.Close, new Error(\\\"Socket closed\\\"));\\n waiter.rejectOnEvent(this._page, Events.Page.Close, () => this._page._closeErrorWithReason());\\n const result = await waiter.waitForEvent(this, event, predicate);\\n waiter.dispose();\\n return result;\\n });\\n }\\n };\\n function validateHeaders(headers) {\\n for (const key of Object.keys(headers)) {\\n const value = headers[key];\\n if (!Object.is(value, void 0) && !isString(value))\\n throw new Error(\\n `Expected value of header \\\"${key}\\\" to be String, but \\\"${typeof value}\\\" is found.`\\n );\\n }\\n }\\n var RouteHandler = class {\\n handledCount = 0;\\n _baseURL;\\n _times;\\n url;\\n handler;\\n _ignoreException = false;\\n _activeInvocations = /* @__PURE__ */ new Set();\\n _savedZone;\\n constructor(platform, baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {\\n this._baseURL = baseURL;\\n this._times = times;\\n this.url = url;\\n this.handler = handler;\\n this._savedZone = platform.zones.current().pop();\\n }\\n static prepareInterceptionPatterns(handlers) {\\n const patterns = [];\\n let all = false;\\n for (const handler of handlers) {\\n const serialized = serializeURLMatch(handler.url);\\n if (serialized) patterns.push(serialized);\\n else all = true;\\n }\\n if (all) return [{ glob: \\\"**/*\\\" }];\\n return patterns;\\n }\\n matches(requestURL) {\\n return urlMatches(this._baseURL, requestURL, this.url);\\n }\\n async handle(route) {\\n return await this._savedZone.run(async () => this._handleImpl(route));\\n }\\n async _handleImpl(route) {\\n const handlerInvocation = { complete: new ManualPromise(), route };\\n this._activeInvocations.add(handlerInvocation);\\n try {\\n return await this._handleInternal(route);\\n } catch (e) {\\n if (this._ignoreException) return false;\\n if (isTargetClosedError(e)) {\\n rewriteErrorMessage(\\n e,\\n `\\\"${e.message}\\\" while running route callback.\\nConsider awaiting \\\\`await page.unrouteAll({ behavior: 'ignoreErrors' })\\\\`\\nbefore the end of the test to ignore remaining routes in flight.`\\n );\\n }\\n throw e;\\n } finally {\\n handlerInvocation.complete.resolve();\\n this._activeInvocations.delete(handlerInvocation);\\n }\\n }\\n async stop(behavior) {\\n if (behavior === \\\"ignoreErrors\\\") {\\n this._ignoreException = true;\\n } else {\\n const promises = [];\\n for (const activation of this._activeInvocations) {\\n if (!activation.route._didThrow) promises.push(activation.complete);\\n }\\n await Promise.all(promises);\\n }\\n }\\n async _handleInternal(route) {\\n ++this.handledCount;\\n const handledPromise = route._startHandling();\\n const handler = this.handler;\\n const [handled] = await Promise.all([handledPromise, handler(route, route.request())]);\\n return handled;\\n }\\n willExpire() {\\n return this.handledCount + 1 >= this._times;\\n }\\n };\\n var RawHeaders = class _RawHeaders {\\n _headersArray;\\n _headersMap = new MultiMap();\\n static _fromHeadersObjectLossy(headers) {\\n const headersArray = Object.entries(headers).map(([name, value]) => ({\\n name,\\n value\\n })).filter((header) => header.value !== void 0);\\n return new _RawHeaders(headersArray);\\n }\\n constructor(headers) {\\n this._headersArray = headers;\\n for (const header of headers) this._headersMap.set(header.name.toLowerCase(), header.value);\\n }\\n get(name) {\\n const values = this.getAll(name);\\n if (!values || !values.length) return null;\\n return values.join(name.toLowerCase() === \\\"set-cookie\\\" ? \\\"\\\\n\\\" : \\\", \\\");\\n }\\n getAll(name) {\\n return [...this._headersMap.get(name.toLowerCase())];\\n }\\n headers() {\\n const result = {};\\n for (const name of this._headersMap.keys()) result[name] = this.get(name);\\n return result;\\n }\\n headersArray() {\\n return this._headersArray;\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/types.ts\\n var kLifecycleEvents = /* @__PURE__ */ new Set([\\n \\\"load\\\",\\n \\\"domcontentloaded\\\",\\n \\\"networkidle\\\",\\n \\\"commit\\\"\\n ]);\\n\\n // src/sandbox/forked-client/src/client/frame.ts\\n var Frame = class _Frame extends ChannelOwner {\\n _eventEmitter;\\n _loadStates;\\n _parentFrame = null;\\n _url = \\\"\\\";\\n _name = \\\"\\\";\\n _detached = false;\\n _childFrames = /* @__PURE__ */ new Set();\\n _page;\\n static from(frame) {\\n return frame._object;\\n }\\n static fromNullable(frame) {\\n return frame ? _Frame.from(frame) : null;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._eventEmitter = new EventEmitter(parent._platform);\\n this._eventEmitter.setMaxListeners(0);\\n this._parentFrame = _Frame.fromNullable(initializer.parentFrame);\\n if (this._parentFrame) this._parentFrame._childFrames.add(this);\\n this._name = initializer.name;\\n this._url = initializer.url;\\n this._loadStates = new Set(initializer.loadStates);\\n this._channel.on(\\\"loadstate\\\", (event) => {\\n if (event.add) {\\n this._loadStates.add(event.add);\\n this._eventEmitter.emit(\\\"loadstate\\\", event.add);\\n }\\n if (event.remove) this._loadStates.delete(event.remove);\\n if (!this._parentFrame && event.add === \\\"load\\\" && this._page)\\n this._page.emit(Events.Page.Load, this._page);\\n if (!this._parentFrame && event.add === \\\"domcontentloaded\\\" && this._page)\\n this._page.emit(Events.Page.DOMContentLoaded, this._page);\\n });\\n this._channel.on(\\\"navigated\\\", (event) => {\\n this._url = event.url;\\n this._name = event.name;\\n this._eventEmitter.emit(\\\"navigated\\\", event);\\n if (!event.error && this._page) this._page.emit(Events.Page.FrameNavigated, this);\\n });\\n }\\n page() {\\n return this._page;\\n }\\n _timeout(options) {\\n const timeoutSettings = this._page?._timeoutSettings || new TimeoutSettings(this._platform);\\n return timeoutSettings.timeout(options || {});\\n }\\n _navigationTimeout(options) {\\n const timeoutSettings = this._page?._timeoutSettings || new TimeoutSettings(this._platform);\\n return timeoutSettings.navigationTimeout(options || {});\\n }\\n async goto(url, options = {}) {\\n const waitUntil = verifyLoadState(\\n \\\"waitUntil\\\",\\n options.waitUntil === void 0 ? \\\"load\\\" : options.waitUntil\\n );\\n return Response.fromNullable(\\n (await this._channel.goto({\\n url,\\n ...options,\\n waitUntil,\\n timeout: this._navigationTimeout(options)\\n })).response\\n );\\n }\\n _setupNavigationWaiter(options) {\\n const waiter = new Waiter(this._page, \\\"\\\");\\n if (this._page.isClosed()) waiter.rejectImmediately(this._page._closeErrorWithReason());\\n waiter.rejectOnEvent(this._page, Events.Page.Close, () => this._page._closeErrorWithReason());\\n waiter.rejectOnEvent(\\n this._page,\\n Events.Page.Crash,\\n new Error(\\\"Navigation failed because page crashed!\\\")\\n );\\n waiter.rejectOnEvent(\\n this._page,\\n Events.Page.FrameDetached,\\n new Error(\\\"Navigating frame was detached!\\\"),\\n (frame) => frame === this\\n );\\n const timeout = this._page._timeoutSettings.navigationTimeout(options);\\n waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded.`);\\n return waiter;\\n }\\n async waitForNavigation(options = {}) {\\n return await this._page._wrapApiCall(\\n async () => {\\n const waitUntil = verifyLoadState(\\n \\\"waitUntil\\\",\\n options.waitUntil === void 0 ? \\\"load\\\" : options.waitUntil\\n );\\n const waiter = this._setupNavigationWaiter(options);\\n const toUrl = typeof options.url === \\\"string\\\" ? ` to \\\"${options.url}\\\"` : \\\"\\\";\\n waiter.log(`waiting for navigation${toUrl} until \\\"${waitUntil}\\\"`);\\n const navigatedEvent = await waiter.waitForEvent(\\n this._eventEmitter,\\n \\\"navigated\\\",\\n (event) => {\\n if (event.error) return true;\\n waiter.log(` navigated to \\\"${event.url}\\\"`);\\n return urlMatches(this._page?.context()._options.baseURL, event.url, options.url);\\n }\\n );\\n if (navigatedEvent.error) {\\n const e = new Error(navigatedEvent.error);\\n e.stack = \\\"\\\";\\n await waiter.waitForPromise(Promise.reject(e));\\n }\\n if (!this._loadStates.has(waitUntil)) {\\n await waiter.waitForEvent(this._eventEmitter, \\\"loadstate\\\", (s) => {\\n waiter.log(` \\\"${s}\\\" event fired`);\\n return s === waitUntil;\\n });\\n }\\n const request = navigatedEvent.newDocument ? Request.fromNullable(navigatedEvent.newDocument.request) : null;\\n const response = request ? await waiter.waitForPromise(request._finalRequest()._internalResponse()) : null;\\n waiter.dispose();\\n return response;\\n },\\n { title: \\\"Wait for navigation\\\" }\\n );\\n }\\n async waitForLoadState(state = \\\"load\\\", options = {}) {\\n state = verifyLoadState(\\\"state\\\", state);\\n return await this._page._wrapApiCall(\\n async () => {\\n const waiter = this._setupNavigationWaiter(options);\\n if (this._loadStates.has(state)) {\\n waiter.log(` not waiting, \\\"${state}\\\" event already fired`);\\n } else {\\n await waiter.waitForEvent(this._eventEmitter, \\\"loadstate\\\", (s) => {\\n waiter.log(` \\\"${s}\\\" event fired`);\\n return s === state;\\n });\\n }\\n waiter.dispose();\\n },\\n { title: `Wait for load state \\\"${state}\\\"` }\\n );\\n }\\n async waitForURL(url, options = {}) {\\n if (urlMatches(this._page?.context()._options.baseURL, this.url(), url))\\n return await this.waitForLoadState(options.waitUntil, options);\\n await this.waitForNavigation({ url, ...options });\\n }\\n async frameElement() {\\n return ElementHandle.from((await this._channel.frameElement()).element);\\n }\\n async evaluateHandle(pageFunction, arg) {\\n assertMaxArguments(arguments.length, 2);\\n const result = await this._channel.evaluateExpressionHandle({\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg)\\n });\\n return JSHandle.from(result.handle);\\n }\\n async evaluate(pageFunction, arg) {\\n assertMaxArguments(arguments.length, 2);\\n const result = await this._channel.evaluateExpression({\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg)\\n });\\n return parseResult(result.value);\\n }\\n async _evaluateExposeUtilityScript(pageFunction, arg) {\\n assertMaxArguments(arguments.length, 2);\\n const result = await this._channel.evaluateExpression({\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg)\\n });\\n return parseResult(result.value);\\n }\\n async $(selector, options) {\\n const result = await this._channel.querySelector({ selector, ...options });\\n return ElementHandle.fromNullable(result.element);\\n }\\n async waitForSelector(selector, options = {}) {\\n if (options.visibility)\\n throw new Error(\\\"options.visibility is not supported, did you mean options.state?\\\");\\n if (options.waitFor && options.waitFor !== \\\"visible\\\")\\n throw new Error(\\\"options.waitFor is not supported, did you mean options.state?\\\");\\n const result = await this._channel.waitForSelector({\\n selector,\\n ...options,\\n timeout: this._timeout(options)\\n });\\n return ElementHandle.fromNullable(result.element);\\n }\\n async dispatchEvent(selector, type, eventInit, options = {}) {\\n await this._channel.dispatchEvent({\\n selector,\\n type,\\n eventInit: serializeArgument(eventInit),\\n ...options,\\n timeout: this._timeout(options)\\n });\\n }\\n async $eval(selector, pageFunction, arg) {\\n assertMaxArguments(arguments.length, 3);\\n const result = await this._channel.evalOnSelector({\\n selector,\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg)\\n });\\n return parseResult(result.value);\\n }\\n async $$eval(selector, pageFunction, arg) {\\n assertMaxArguments(arguments.length, 3);\\n const result = await this._channel.evalOnSelectorAll({\\n selector,\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg)\\n });\\n return parseResult(result.value);\\n }\\n async $$(selector) {\\n const result = await this._channel.querySelectorAll({ selector });\\n return result.elements.map(\\n (e) => ElementHandle.from(e)\\n );\\n }\\n async _queryCount(selector, options) {\\n return (await this._channel.queryCount({ selector, ...options })).value;\\n }\\n async content() {\\n return (await this._channel.content()).value;\\n }\\n async setContent(html, options = {}) {\\n const waitUntil = verifyLoadState(\\n \\\"waitUntil\\\",\\n options.waitUntil === void 0 ? \\\"load\\\" : options.waitUntil\\n );\\n await this._channel.setContent({\\n html,\\n ...options,\\n waitUntil,\\n timeout: this._navigationTimeout(options)\\n });\\n }\\n name() {\\n return this._name || \\\"\\\";\\n }\\n url() {\\n return this._url;\\n }\\n parentFrame() {\\n return this._parentFrame;\\n }\\n childFrames() {\\n return Array.from(this._childFrames);\\n }\\n isDetached() {\\n return this._detached;\\n }\\n async addScriptTag(options = {}) {\\n const copy = { ...options };\\n if (copy.path) {\\n copy.content = (await this._platform.fs().promises.readFile(copy.path)).toString();\\n copy.content = addSourceUrlToScript(copy.content, copy.path);\\n }\\n return ElementHandle.from((await this._channel.addScriptTag({ ...copy })).element);\\n }\\n async addStyleTag(options = {}) {\\n const copy = { ...options };\\n if (copy.path) {\\n copy.content = (await this._platform.fs().promises.readFile(copy.path)).toString();\\n copy.content += \\\"/*# sourceURL=\\\" + copy.path.replace(/\\\\n/g, \\\"\\\") + \\\"*/\\\";\\n }\\n return ElementHandle.from((await this._channel.addStyleTag({ ...copy })).element);\\n }\\n async click(selector, options = {}) {\\n return await this._channel.click({ selector, ...options, timeout: this._timeout(options) });\\n }\\n async dblclick(selector, options = {}) {\\n return await this._channel.dblclick({ selector, ...options, timeout: this._timeout(options) });\\n }\\n async dragAndDrop(source, target, options = {}) {\\n return await this._channel.dragAndDrop({\\n source,\\n target,\\n ...options,\\n timeout: this._timeout(options)\\n });\\n }\\n async tap(selector, options = {}) {\\n return await this._channel.tap({ selector, ...options, timeout: this._timeout(options) });\\n }\\n async fill(selector, value, options = {}) {\\n return await this._channel.fill({\\n selector,\\n value,\\n ...options,\\n timeout: this._timeout(options)\\n });\\n }\\n async _highlight(selector) {\\n return await this._channel.highlight({ selector });\\n }\\n locator(selector, options) {\\n return new Locator(this, selector, options);\\n }\\n getByTestId(testId) {\\n return this.locator(getByTestIdSelector(testIdAttributeName(), testId));\\n }\\n getByAltText(text, options) {\\n return this.locator(getByAltTextSelector(text, options));\\n }\\n getByLabel(text, options) {\\n return this.locator(getByLabelSelector(text, options));\\n }\\n getByPlaceholder(text, options) {\\n return this.locator(getByPlaceholderSelector(text, options));\\n }\\n getByText(text, options) {\\n return this.locator(getByTextSelector(text, options));\\n }\\n getByTitle(text, options) {\\n return this.locator(getByTitleSelector(text, options));\\n }\\n getByRole(role, options = {}) {\\n return this.locator(getByRoleSelector(role, options));\\n }\\n frameLocator(selector) {\\n return new FrameLocator(this, selector);\\n }\\n async focus(selector, options = {}) {\\n await this._channel.focus({ selector, ...options, timeout: this._timeout(options) });\\n }\\n async textContent(selector, options = {}) {\\n const value = (await this._channel.textContent({ selector, ...options, timeout: this._timeout(options) })).value;\\n return value === void 0 ? null : value;\\n }\\n async innerText(selector, options = {}) {\\n return (await this._channel.innerText({ selector, ...options, timeout: this._timeout(options) })).value;\\n }\\n async innerHTML(selector, options = {}) {\\n return (await this._channel.innerHTML({ selector, ...options, timeout: this._timeout(options) })).value;\\n }\\n async getAttribute(selector, name, options = {}) {\\n const value = (await this._channel.getAttribute({\\n selector,\\n name,\\n ...options,\\n timeout: this._timeout(options)\\n })).value;\\n return value === void 0 ? null : value;\\n }\\n async inputValue(selector, options = {}) {\\n return (await this._channel.inputValue({ selector, ...options, timeout: this._timeout(options) })).value;\\n }\\n async isChecked(selector, options = {}) {\\n return (await this._channel.isChecked({ selector, ...options, timeout: this._timeout(options) })).value;\\n }\\n async isDisabled(selector, options = {}) {\\n return (await this._channel.isDisabled({ selector, ...options, timeout: this._timeout(options) })).value;\\n }\\n async isEditable(selector, options = {}) {\\n return (await this._channel.isEditable({ selector, ...options, timeout: this._timeout(options) })).value;\\n }\\n async isEnabled(selector, options = {}) {\\n return (await this._channel.isEnabled({ selector, ...options, timeout: this._timeout(options) })).value;\\n }\\n async isHidden(selector, options = {}) {\\n return (await this._channel.isHidden({ selector, ...options })).value;\\n }\\n async isVisible(selector, options = {}) {\\n return (await this._channel.isVisible({ selector, ...options })).value;\\n }\\n async hover(selector, options = {}) {\\n await this._channel.hover({ selector, ...options, timeout: this._timeout(options) });\\n }\\n async selectOption(selector, values, options = {}) {\\n return (await this._channel.selectOption({\\n selector,\\n ...convertSelectOptionValues(values),\\n ...options,\\n timeout: this._timeout(options)\\n })).values;\\n }\\n async setInputFiles(selector, files, options = {}) {\\n const converted = await convertInputFiles(this._platform, files, this.page().context());\\n await this._channel.setInputFiles({\\n selector,\\n ...converted,\\n ...options,\\n timeout: this._timeout(options)\\n });\\n }\\n async type(selector, text, options = {}) {\\n await this._channel.type({ selector, text, ...options, timeout: this._timeout(options) });\\n }\\n async press(selector, key, options = {}) {\\n await this._channel.press({ selector, key, ...options, timeout: this._timeout(options) });\\n }\\n async check(selector, options = {}) {\\n await this._channel.check({ selector, ...options, timeout: this._timeout(options) });\\n }\\n async uncheck(selector, options = {}) {\\n await this._channel.uncheck({ selector, ...options, timeout: this._timeout(options) });\\n }\\n async setChecked(selector, checked, options) {\\n if (checked) await this.check(selector, options);\\n else await this.uncheck(selector, options);\\n }\\n async waitForTimeout(timeout) {\\n await this._channel.waitForTimeout({ waitTimeout: timeout });\\n }\\n async waitForFunction(pageFunction, arg, options = {}) {\\n if (typeof options.polling === \\\"string\\\")\\n assert(options.polling === \\\"raf\\\", \\\"Unknown polling option: \\\" + options.polling);\\n const result = await this._channel.waitForFunction({\\n ...options,\\n pollingInterval: options.polling === \\\"raf\\\" ? void 0 : options.polling,\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg),\\n timeout: this._timeout(options)\\n });\\n return JSHandle.from(result.handle);\\n }\\n async title() {\\n return (await this._channel.title()).value;\\n }\\n async _expect(expression, options) {\\n const params = { expression, ...options, isNot: !!options.isNot };\\n params.expectedValue = serializeArgument(options.expectedValue);\\n const result = await this._channel.expect(params);\\n if (result.received !== void 0) result.received = parseResult(result.received);\\n return result;\\n }\\n };\\n function verifyLoadState(name, waitUntil) {\\n if (waitUntil === \\\"networkidle0\\\") waitUntil = \\\"networkidle\\\";\\n if (!kLifecycleEvents.has(waitUntil))\\n throw new Error(`${name}: expected one of (load|domcontentloaded|networkidle|commit)`);\\n return waitUntil;\\n }\\n\\n // src/sandbox/forked-client/src/client/fileUtils.ts\\n var fileUploadSizeLimit = 50 * 1024 * 1024;\\n async function mkdirIfNeeded() {\\n }\\n async function writeTempFile(path, data) {\\n const writer = globalThis.writeFile;\\n if (typeof writer !== \\\"function\\\")\\n throw new Error(\\\"writeFile() is not available in the QuickJS sandbox\\\");\\n return await writer(path, data);\\n }\\n\\n // src/sandbox/forked-client/src/client/writableStream.ts\\n var WritableStream = class extends ChannelOwner {\\n static from(channel) {\\n return channel?._object;\\n }\\n stream() {\\n throw new Error(\\\"Writable streams are not available in the QuickJS sandbox\\\");\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/elementHandle.ts\\n var ElementHandle = class _ElementHandle extends JSHandle {\\n _frame;\\n _elementChannel;\\n static from(handle) {\\n return handle._object;\\n }\\n static fromNullable(handle) {\\n return handle ? _ElementHandle.from(handle) : null;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._frame = parent;\\n this._elementChannel = this._channel;\\n }\\n asElement() {\\n return this;\\n }\\n async ownerFrame() {\\n return Frame.fromNullable((await this._elementChannel.ownerFrame()).frame);\\n }\\n async contentFrame() {\\n return Frame.fromNullable((await this._elementChannel.contentFrame()).frame);\\n }\\n async getAttribute(name) {\\n const value = (await this._elementChannel.getAttribute({ name })).value;\\n return value === void 0 ? null : value;\\n }\\n async inputValue() {\\n return (await this._elementChannel.inputValue()).value;\\n }\\n async textContent() {\\n const value = (await this._elementChannel.textContent()).value;\\n return value === void 0 ? null : value;\\n }\\n async innerText() {\\n return (await this._elementChannel.innerText()).value;\\n }\\n async innerHTML() {\\n return (await this._elementChannel.innerHTML()).value;\\n }\\n async isChecked() {\\n return (await this._elementChannel.isChecked()).value;\\n }\\n async isDisabled() {\\n return (await this._elementChannel.isDisabled()).value;\\n }\\n async isEditable() {\\n return (await this._elementChannel.isEditable()).value;\\n }\\n async isEnabled() {\\n return (await this._elementChannel.isEnabled()).value;\\n }\\n async isHidden() {\\n return (await this._elementChannel.isHidden()).value;\\n }\\n async isVisible() {\\n return (await this._elementChannel.isVisible()).value;\\n }\\n async dispatchEvent(type, eventInit = {}) {\\n await this._elementChannel.dispatchEvent({ type, eventInit: serializeArgument(eventInit) });\\n }\\n async scrollIntoViewIfNeeded(options = {}) {\\n await this._elementChannel.scrollIntoViewIfNeeded({\\n ...options,\\n timeout: this._frame._timeout(options)\\n });\\n }\\n async hover(options = {}) {\\n await this._elementChannel.hover({ ...options, timeout: this._frame._timeout(options) });\\n }\\n async click(options = {}) {\\n return await this._elementChannel.click({ ...options, timeout: this._frame._timeout(options) });\\n }\\n async dblclick(options = {}) {\\n return await this._elementChannel.dblclick({\\n ...options,\\n timeout: this._frame._timeout(options)\\n });\\n }\\n async tap(options = {}) {\\n return await this._elementChannel.tap({ ...options, timeout: this._frame._timeout(options) });\\n }\\n async selectOption(values, options = {}) {\\n const result = await this._elementChannel.selectOption({\\n ...convertSelectOptionValues(values),\\n ...options,\\n timeout: this._frame._timeout(options)\\n });\\n return result.values;\\n }\\n async fill(value, options = {}) {\\n return await this._elementChannel.fill({\\n value,\\n ...options,\\n timeout: this._frame._timeout(options)\\n });\\n }\\n async selectText(options = {}) {\\n await this._elementChannel.selectText({ ...options, timeout: this._frame._timeout(options) });\\n }\\n async setInputFiles(files, options = {}) {\\n const frame = await this.ownerFrame();\\n if (!frame) throw new Error(\\\"Cannot set input files to detached element\\\");\\n const converted = await convertInputFiles(this._platform, files, frame.page().context());\\n await this._elementChannel.setInputFiles({\\n ...converted,\\n ...options,\\n timeout: this._frame._timeout(options)\\n });\\n }\\n async focus() {\\n await this._elementChannel.focus();\\n }\\n async type(text, options = {}) {\\n await this._elementChannel.type({ text, ...options, timeout: this._frame._timeout(options) });\\n }\\n async press(key, options = {}) {\\n await this._elementChannel.press({ key, ...options, timeout: this._frame._timeout(options) });\\n }\\n async check(options = {}) {\\n return await this._elementChannel.check({ ...options, timeout: this._frame._timeout(options) });\\n }\\n async uncheck(options = {}) {\\n return await this._elementChannel.uncheck({\\n ...options,\\n timeout: this._frame._timeout(options)\\n });\\n }\\n async setChecked(checked, options) {\\n if (checked) await this.check(options);\\n else await this.uncheck(options);\\n }\\n async boundingBox() {\\n const value = (await this._elementChannel.boundingBox()).value;\\n return value === void 0 ? null : value;\\n }\\n async screenshot(options = {}) {\\n const mask = options.mask;\\n const copy = {\\n ...options,\\n path: void 0,\\n mask: void 0,\\n timeout: this._frame._timeout(options)\\n };\\n if (!copy.type) copy.type = determineScreenshotType(options);\\n if (mask) {\\n copy.mask = mask.map((locator) => ({\\n frame: locator._frame._channel,\\n selector: locator._selector\\n }));\\n }\\n const result = await this._elementChannel.screenshot(copy);\\n if (options.path) {\\n options.path = await writeTempFile(options.path, result.binary);\\n }\\n return result.binary;\\n }\\n async $(selector) {\\n return _ElementHandle.fromNullable(\\n (await this._elementChannel.querySelector({ selector })).element\\n );\\n }\\n async $$(selector) {\\n const result = await this._elementChannel.querySelectorAll({ selector });\\n return result.elements.map(\\n (h) => _ElementHandle.from(h)\\n );\\n }\\n async $eval(selector, pageFunction, arg) {\\n const result = await this._elementChannel.evalOnSelector({\\n selector,\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg)\\n });\\n return parseResult(result.value);\\n }\\n async $$eval(selector, pageFunction, arg) {\\n const result = await this._elementChannel.evalOnSelectorAll({\\n selector,\\n expression: String(pageFunction),\\n isFunction: typeof pageFunction === \\\"function\\\",\\n arg: serializeArgument(arg)\\n });\\n return parseResult(result.value);\\n }\\n async waitForElementState(state, options = {}) {\\n return await this._elementChannel.waitForElementState({\\n state,\\n ...options,\\n timeout: this._frame._timeout(options)\\n });\\n }\\n async waitForSelector(selector, options = {}) {\\n const result = await this._elementChannel.waitForSelector({\\n selector,\\n ...options,\\n timeout: this._frame._timeout(options)\\n });\\n return _ElementHandle.fromNullable(result.element);\\n }\\n };\\n function convertSelectOptionValues(values) {\\n if (values === null) return {};\\n if (!Array.isArray(values)) values = [values];\\n if (!values.length) return {};\\n for (let i = 0; i < values.length; i++)\\n assert(values[i] !== null, `options[${i}]: expected object, got null`);\\n if (values[0] instanceof ElementHandle)\\n return { elements: values.map((v) => v._elementChannel) };\\n if (isString(values[0]))\\n return { options: values.map((valueOrLabel) => ({ valueOrLabel })) };\\n return { options: values };\\n }\\n function filePayloadExceedsSizeLimit(payloads) {\\n return payloads.reduce((size, item) => size + (item.buffer ? item.buffer.byteLength : 0), 0) >= fileUploadSizeLimit;\\n }\\n async function resolvePathsAndDirectoryForInputFiles(platform, items) {\\n let localPaths;\\n let localDirectory;\\n for (const item of items) {\\n const stat = await platform.fs().promises.stat(item);\\n if (stat.isDirectory()) {\\n if (localDirectory) throw new Error(\\\"Multiple directories are not supported\\\");\\n localDirectory = platform.path().resolve(item);\\n } else {\\n localPaths ??= [];\\n localPaths.push(platform.path().resolve(item));\\n }\\n }\\n if (localPaths?.length && localDirectory)\\n throw new Error(\\\"File paths must be all files or a single directory\\\");\\n return [localPaths, localDirectory];\\n }\\n async function convertInputFiles(platform, files, context) {\\n const items = Array.isArray(files) ? files.slice() : [files];\\n if (items.some((item) => typeof item === \\\"string\\\")) {\\n if (!items.every((item) => typeof item === \\\"string\\\"))\\n throw new Error(\\\"File paths cannot be mixed with buffers\\\");\\n const [localPaths, localDirectory] = await resolvePathsAndDirectoryForInputFiles(\\n platform,\\n items\\n );\\n if (context._connection.isRemote()) {\\n const files2 = localDirectory ? (await platform.fs().promises.readdir(localDirectory, { withFileTypes: true, recursive: true })).filter((f) => f.isFile()).map((f) => platform.path().join(f.parentPath, f.name)) : localPaths;\\n const { writableStreams, rootDir } = await context._wrapApiCall(\\n async () => context._channel.createTempFiles({\\n rootDirName: localDirectory ? platform.path().basename(localDirectory) : void 0,\\n items: await Promise.all(\\n files2.map(async (file) => {\\n const lastModifiedMs = (await platform.fs().promises.stat(file)).mtimeMs;\\n return {\\n name: localDirectory ? platform.path().relative(localDirectory, file) : platform.path().basename(file),\\n lastModifiedMs\\n };\\n })\\n )\\n }),\\n { internal: true }\\n );\\n for (let i = 0; i < files2.length; i++) {\\n const writable = WritableStream.from(writableStreams[i]);\\n await platform.streamFile(files2[i], writable.stream());\\n }\\n return {\\n directoryStream: rootDir,\\n streams: localDirectory ? void 0 : writableStreams\\n };\\n }\\n return {\\n localPaths,\\n localDirectory\\n };\\n }\\n const payloads = items;\\n if (filePayloadExceedsSizeLimit(payloads))\\n throw new Error(\\n \\\"Cannot set buffer larger than 50Mb, please write it to a file and pass its path instead.\\\"\\n );\\n return { payloads };\\n }\\n function determineScreenshotType(options) {\\n if (options.path) {\\n const mimeType = getMimeTypeForPath(options.path);\\n if (mimeType === \\\"image/png\\\") return \\\"png\\\";\\n else if (mimeType === \\\"image/jpeg\\\") return \\\"jpeg\\\";\\n throw new Error(`path: unsupported mime type \\\"${mimeType}\\\"`);\\n }\\n return options.type;\\n }\\n\\n // src/sandbox/forked-client/src/client/fileChooser.ts\\n var FileChooser = class {\\n _page;\\n _elementHandle;\\n _isMultiple;\\n constructor(page, elementHandle, isMultiple) {\\n this._page = page;\\n this._elementHandle = elementHandle;\\n this._isMultiple = isMultiple;\\n }\\n element() {\\n return this._elementHandle;\\n }\\n isMultiple() {\\n return this._isMultiple;\\n }\\n page() {\\n return this._page;\\n }\\n async setFiles(files, options) {\\n return await this._elementHandle.setInputFiles(files, options);\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/harRouter.ts\\n function unsupported2() {\\n throw new Error(\\\"HAR routing is not available in the QuickJS sandbox\\\");\\n }\\n var HarRouter = class _HarRouter {\\n static async create() {\\n return new _HarRouter();\\n }\\n async addContextRoute() {\\n unsupported2();\\n }\\n async addPageRoute() {\\n unsupported2();\\n }\\n async dispose() {\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/input.ts\\n var Keyboard = class {\\n _page;\\n constructor(page) {\\n this._page = page;\\n }\\n async down(key) {\\n await this._page._channel.keyboardDown({ key });\\n }\\n async up(key) {\\n await this._page._channel.keyboardUp({ key });\\n }\\n async insertText(text) {\\n await this._page._channel.keyboardInsertText({ text });\\n }\\n async type(text, options = {}) {\\n await this._page._channel.keyboardType({ text, ...options });\\n }\\n async press(key, options = {}) {\\n await this._page._channel.keyboardPress({ key, ...options });\\n }\\n };\\n var Mouse = class {\\n _page;\\n constructor(page) {\\n this._page = page;\\n }\\n async move(x, y, options = {}) {\\n await this._page._channel.mouseMove({ x, y, ...options });\\n }\\n async down(options = {}) {\\n await this._page._channel.mouseDown({ ...options });\\n }\\n async up(options = {}) {\\n await this._page._channel.mouseUp(options);\\n }\\n async click(x, y, options = {}) {\\n await this._page._channel.mouseClick({ x, y, ...options });\\n }\\n async dblclick(x, y, options = {}) {\\n await this._page._wrapApiCall(\\n async () => {\\n await this.click(x, y, { ...options, clickCount: 2 });\\n },\\n { title: \\\"Double click\\\" }\\n );\\n }\\n async wheel(deltaX, deltaY) {\\n await this._page._channel.mouseWheel({ deltaX, deltaY });\\n }\\n };\\n var Touchscreen = class {\\n _page;\\n constructor(page) {\\n this._page = page;\\n }\\n async tap(x, y) {\\n await this._page._channel.touchscreenTap({ x, y });\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/video.ts\\n var Video = class extends EventEmitter {\\n constructor(page, connection, artifact) {\\n super(page._platform);\\n this._page = page;\\n this._connection = connection;\\n this._artifact = artifact;\\n }\\n async start() {\\n throw new Error(\\\"Video capture is not available in the QuickJS sandbox\\\");\\n }\\n async stop() {\\n }\\n async path() {\\n throw new Error(\\\"Video capture is not available in the QuickJS sandbox\\\");\\n }\\n async saveAs() {\\n throw new Error(\\\"Video capture is not available in the QuickJS sandbox\\\");\\n }\\n async delete() {\\n await this._artifact?.delete?.();\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/screencast.ts\\n var Screencast = class {\\n constructor(page) {\\n this._page = page;\\n }\\n async start() {\\n throw new Error(\\\"Screencast is not available in the QuickJS sandbox\\\");\\n }\\n async stop() {\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/page.ts\\n var Page = class _Page extends ChannelOwner {\\n _browserContext;\\n _ownedContext;\\n _mainFrame;\\n _frames = /* @__PURE__ */ new Set();\\n _workers = /* @__PURE__ */ new Set();\\n _closed = false;\\n _closedOrCrashedScope = new LongStandingScope();\\n _viewportSize;\\n _routes = [];\\n _webSocketRoutes = [];\\n coverage;\\n keyboard;\\n mouse;\\n request;\\n touchscreen;\\n clock;\\n screencast;\\n _bindings = /* @__PURE__ */ new Map();\\n _timeoutSettings;\\n _video;\\n _opener;\\n _closeReason;\\n _closeWasCalled = false;\\n _harRouters = [];\\n _locatorHandlers = /* @__PURE__ */ new Map();\\n static from(page) {\\n return page._object;\\n }\\n static fromNullable(page) {\\n return page ? _Page.from(page) : null;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._instrumentation.onPage(this);\\n this._browserContext = parent;\\n this._timeoutSettings = new TimeoutSettings(\\n this._platform,\\n this._browserContext._timeoutSettings\\n );\\n this.keyboard = new Keyboard(this);\\n this.mouse = new Mouse(this);\\n this.request = this._browserContext.request;\\n this.touchscreen = new Touchscreen(this);\\n this.clock = this._browserContext.clock;\\n this._mainFrame = Frame.from(initializer.mainFrame);\\n this._mainFrame._page = this;\\n this._frames.add(this._mainFrame);\\n this._viewportSize = initializer.viewportSize;\\n this._closed = initializer.isClosed;\\n this._opener = _Page.fromNullable(initializer.opener);\\n this._video = new Video(\\n this,\\n this._connection,\\n initializer.video ? Artifact.from(initializer.video) : void 0\\n );\\n this.screencast = new Screencast(this);\\n this._channel.on(\\\"bindingCall\\\", ({ binding }) => this._onBinding(BindingCall.from(binding)));\\n this._channel.on(\\\"close\\\", () => this._onClose());\\n this._channel.on(\\\"crash\\\", () => this._onCrash());\\n this._channel.on(\\\"download\\\", ({ url, suggestedFilename, artifact }) => {\\n const artifactObject = Artifact.from(artifact);\\n this.emit(Events.Page.Download, new Download(this, url, suggestedFilename, artifactObject));\\n });\\n this._channel.on(\\n \\\"fileChooser\\\",\\n ({ element, isMultiple }) => this.emit(\\n Events.Page.FileChooser,\\n new FileChooser(this, ElementHandle.from(element), isMultiple)\\n )\\n );\\n this._channel.on(\\\"frameAttached\\\", ({ frame }) => this._onFrameAttached(Frame.from(frame)));\\n this._channel.on(\\\"frameDetached\\\", ({ frame }) => this._onFrameDetached(Frame.from(frame)));\\n this._channel.on(\\\"locatorHandlerTriggered\\\", ({ uid }) => this._onLocatorHandlerTriggered(uid));\\n this._channel.on(\\\"route\\\", ({ route }) => this._onRoute(Route.from(route)));\\n this._channel.on(\\n \\\"webSocketRoute\\\",\\n ({ webSocketRoute }) => this._onWebSocketRoute(WebSocketRoute.from(webSocketRoute))\\n );\\n this._channel.on(\\n \\\"viewportSizeChanged\\\",\\n ({ viewportSize }) => this._viewportSize = viewportSize\\n );\\n this._channel.on(\\n \\\"webSocket\\\",\\n ({ webSocket }) => this.emit(Events.Page.WebSocket, WebSocket.from(webSocket))\\n );\\n this._channel.on(\\\"worker\\\", ({ worker }) => this._onWorker(Worker.from(worker)));\\n this.coverage = new Coverage(this._channel);\\n this.once(\\n Events.Page.Close,\\n () => this._closedOrCrashedScope.close(this._closeErrorWithReason())\\n );\\n this.once(Events.Page.Crash, () => this._closedOrCrashedScope.close(new TargetClosedError()));\\n this._setEventToSubscriptionMapping(\\n /* @__PURE__ */ new Map([\\n [Events.Page.Console, \\\"console\\\"],\\n [Events.Page.Dialog, \\\"dialog\\\"],\\n [Events.Page.Request, \\\"request\\\"],\\n [Events.Page.Response, \\\"response\\\"],\\n [Events.Page.RequestFinished, \\\"requestFinished\\\"],\\n [Events.Page.RequestFailed, \\\"requestFailed\\\"],\\n [Events.Page.FileChooser, \\\"fileChooser\\\"]\\n ])\\n );\\n }\\n _onFrameAttached(frame) {\\n frame._page = this;\\n this._frames.add(frame);\\n if (frame._parentFrame) frame._parentFrame._childFrames.add(frame);\\n this.emit(Events.Page.FrameAttached, frame);\\n }\\n _onFrameDetached(frame) {\\n this._frames.delete(frame);\\n frame._detached = true;\\n if (frame._parentFrame) frame._parentFrame._childFrames.delete(frame);\\n this.emit(Events.Page.FrameDetached, frame);\\n }\\n async _onRoute(route) {\\n route._context = this.context();\\n const routeHandlers = this._routes.slice();\\n for (const routeHandler of routeHandlers) {\\n if (this._closeWasCalled || this._browserContext.isClosedOrClosing()) return;\\n if (!routeHandler.matches(route.request().url())) continue;\\n const index = this._routes.indexOf(routeHandler);\\n if (index === -1) continue;\\n if (routeHandler.willExpire()) this._routes.splice(index, 1);\\n const handled = await routeHandler.handle(route);\\n if (!this._routes.length)\\n this._updateInterceptionPatterns({ internal: true }).catch(() => {\\n });\\n if (handled) return;\\n }\\n await this._browserContext._onRoute(route);\\n }\\n async _onWebSocketRoute(webSocketRoute) {\\n const routeHandler = this._webSocketRoutes.find((route) => route.matches(webSocketRoute.url()));\\n if (routeHandler) await routeHandler.handle(webSocketRoute);\\n else await this._browserContext._onWebSocketRoute(webSocketRoute);\\n }\\n async _onBinding(bindingCall) {\\n const func = this._bindings.get(bindingCall._initializer.name);\\n if (func) {\\n await bindingCall.call(func);\\n return;\\n }\\n await this._browserContext._onBinding(bindingCall);\\n }\\n _onWorker(worker) {\\n this._workers.add(worker);\\n worker._page = this;\\n this.emit(Events.Page.Worker, worker);\\n }\\n _onClose() {\\n this._closed = true;\\n this._browserContext._pages.delete(this);\\n this._disposeHarRouters();\\n this.emit(Events.Page.Close, this);\\n }\\n _onCrash() {\\n this.emit(Events.Page.Crash, this);\\n }\\n context() {\\n return this._browserContext;\\n }\\n async opener() {\\n if (!this._opener || this._opener.isClosed()) return null;\\n return this._opener;\\n }\\n mainFrame() {\\n return this._mainFrame;\\n }\\n frame(frameSelector) {\\n const name = isString(frameSelector) ? frameSelector : frameSelector.name;\\n const url = isObject(frameSelector) ? frameSelector.url : void 0;\\n assert(name || url, \\\"Either name or url matcher should be specified\\\");\\n return this.frames().find((f) => {\\n if (name) return f.name() === name;\\n return urlMatches(this._browserContext._options.baseURL, f.url(), url);\\n }) || null;\\n }\\n frames() {\\n return [...this._frames];\\n }\\n setDefaultNavigationTimeout(timeout) {\\n this._timeoutSettings.setDefaultNavigationTimeout(timeout);\\n }\\n setDefaultTimeout(timeout) {\\n this._timeoutSettings.setDefaultTimeout(timeout);\\n }\\n video() {\\n return this._video;\\n }\\n async pickLocator() {\\n const { selector } = await this._channel.pickLocator({});\\n return this.locator(selector);\\n }\\n async cancelPickLocator() {\\n await this._channel.cancelPickLocator({});\\n }\\n async $(selector, options) {\\n return await this._mainFrame.$(selector, options);\\n }\\n async waitForSelector(selector, options) {\\n return await this._mainFrame.waitForSelector(selector, options);\\n }\\n async dispatchEvent(selector, type, eventInit, options) {\\n return await this._mainFrame.dispatchEvent(selector, type, eventInit, options);\\n }\\n async evaluateHandle(pageFunction, arg) {\\n assertMaxArguments(arguments.length, 2);\\n return await this._mainFrame.evaluateHandle(pageFunction, arg);\\n }\\n async $eval(selector, pageFunction, arg) {\\n assertMaxArguments(arguments.length, 3);\\n return await this._mainFrame.$eval(selector, pageFunction, arg);\\n }\\n async $$eval(selector, pageFunction, arg) {\\n assertMaxArguments(arguments.length, 3);\\n return await this._mainFrame.$$eval(selector, pageFunction, arg);\\n }\\n async $$(selector) {\\n return await this._mainFrame.$$(selector);\\n }\\n async addScriptTag(options = {}) {\\n return await this._mainFrame.addScriptTag(options);\\n }\\n async addStyleTag(options = {}) {\\n return await this._mainFrame.addStyleTag(options);\\n }\\n async exposeFunction(name, callback) {\\n const result = await this._channel.exposeBinding({ name });\\n const binding = (source, ...args) => callback(...args);\\n this._bindings.set(name, binding);\\n return DisposableObject.from(result.disposable);\\n }\\n async exposeBinding(name, callback, options = {}) {\\n const result = await this._channel.exposeBinding({ name, needsHandle: options.handle });\\n this._bindings.set(name, callback);\\n return DisposableObject.from(result.disposable);\\n }\\n async setExtraHTTPHeaders(headers) {\\n validateHeaders(headers);\\n await this._channel.setExtraHTTPHeaders({ headers: headersObjectToArray(headers) });\\n }\\n url() {\\n return this._mainFrame.url();\\n }\\n async content() {\\n return await this._mainFrame.content();\\n }\\n async setContent(html, options) {\\n return await this._mainFrame.setContent(html, options);\\n }\\n async goto(url, options) {\\n return await this._mainFrame.goto(url, options);\\n }\\n async reload(options = {}) {\\n const waitUntil = verifyLoadState(\\n \\\"waitUntil\\\",\\n options.waitUntil === void 0 ? \\\"load\\\" : options.waitUntil\\n );\\n return Response.fromNullable(\\n (await this._channel.reload({\\n ...options,\\n waitUntil,\\n timeout: this._timeoutSettings.navigationTimeout(options)\\n })).response\\n );\\n }\\n async addLocatorHandler(locator, handler, options = {}) {\\n if (locator._frame !== this._mainFrame)\\n throw new Error(`Locator must belong to the main frame of this page`);\\n if (options.times === 0) return;\\n const { uid } = await this._channel.registerLocatorHandler({\\n selector: locator._selector,\\n noWaitAfter: options.noWaitAfter\\n });\\n this._locatorHandlers.set(uid, { locator, handler, times: options.times });\\n }\\n async _onLocatorHandlerTriggered(uid) {\\n let remove = false;\\n try {\\n const handler = this._locatorHandlers.get(uid);\\n if (handler && handler.times !== 0) {\\n if (handler.times !== void 0) handler.times--;\\n await handler.handler(handler.locator);\\n }\\n remove = handler?.times === 0;\\n } finally {\\n if (remove) this._locatorHandlers.delete(uid);\\n this._channel.resolveLocatorHandlerNoReply({ uid, remove }).catch(() => {\\n });\\n }\\n }\\n async removeLocatorHandler(locator) {\\n for (const [uid, data] of this._locatorHandlers) {\\n if (data.locator._equals(locator)) {\\n this._locatorHandlers.delete(uid);\\n await this._channel.unregisterLocatorHandler({ uid }).catch(() => {\\n });\\n }\\n }\\n }\\n async waitForLoadState(state, options) {\\n return await this._mainFrame.waitForLoadState(state, options);\\n }\\n async waitForNavigation(options) {\\n return await this._mainFrame.waitForNavigation(options);\\n }\\n async waitForURL(url, options) {\\n return await this._mainFrame.waitForURL(url, options);\\n }\\n async waitForRequest(urlOrPredicate, options = {}) {\\n const predicate = async (request) => {\\n if (isString(urlOrPredicate) || isRegExp(urlOrPredicate))\\n return urlMatches(this._browserContext._options.baseURL, request.url(), urlOrPredicate);\\n return await urlOrPredicate(request);\\n };\\n const trimmedUrl = trimUrl(urlOrPredicate);\\n const logLine = trimmedUrl ? `waiting for request ${trimmedUrl}` : void 0;\\n return await this._waitForEvent(\\n Events.Page.Request,\\n { predicate, timeout: options.timeout },\\n logLine\\n );\\n }\\n async waitForResponse(urlOrPredicate, options = {}) {\\n const predicate = async (response) => {\\n if (isString(urlOrPredicate) || isRegExp(urlOrPredicate))\\n return urlMatches(this._browserContext._options.baseURL, response.url(), urlOrPredicate);\\n return await urlOrPredicate(response);\\n };\\n const trimmedUrl = trimUrl(urlOrPredicate);\\n const logLine = trimmedUrl ? `waiting for response ${trimmedUrl}` : void 0;\\n return await this._waitForEvent(\\n Events.Page.Response,\\n { predicate, timeout: options.timeout },\\n logLine\\n );\\n }\\n async waitForEvent(event, optionsOrPredicate = {}) {\\n return await this._waitForEvent(event, optionsOrPredicate, `waiting for event \\\"${event}\\\"`);\\n }\\n _closeErrorWithReason() {\\n return new TargetClosedError(this._closeReason || this._browserContext._effectiveCloseReason());\\n }\\n async _waitForEvent(event, optionsOrPredicate, logLine) {\\n return await this._wrapApiCall(async () => {\\n const timeout = this._timeoutSettings.timeout(\\n typeof optionsOrPredicate === \\\"function\\\" ? {} : optionsOrPredicate\\n );\\n const predicate = typeof optionsOrPredicate === \\\"function\\\" ? optionsOrPredicate : optionsOrPredicate.predicate;\\n const waiter = Waiter.createForEvent(this, event);\\n if (logLine) waiter.log(logLine);\\n waiter.rejectOnTimeout(\\n timeout,\\n `Timeout ${timeout}ms exceeded while waiting for event \\\"${event}\\\"`\\n );\\n if (event !== Events.Page.Crash)\\n waiter.rejectOnEvent(this, Events.Page.Crash, new Error(\\\"Page crashed\\\"));\\n if (event !== Events.Page.Close)\\n waiter.rejectOnEvent(this, Events.Page.Close, () => this._closeErrorWithReason());\\n const result = await waiter.waitForEvent(this, event, predicate);\\n waiter.dispose();\\n return result;\\n });\\n }\\n async goBack(options = {}) {\\n const waitUntil = verifyLoadState(\\n \\\"waitUntil\\\",\\n options.waitUntil === void 0 ? \\\"load\\\" : options.waitUntil\\n );\\n return Response.fromNullable(\\n (await this._channel.goBack({\\n ...options,\\n waitUntil,\\n timeout: this._timeoutSettings.navigationTimeout(options)\\n })).response\\n );\\n }\\n async goForward(options = {}) {\\n const waitUntil = verifyLoadState(\\n \\\"waitUntil\\\",\\n options.waitUntil === void 0 ? \\\"load\\\" : options.waitUntil\\n );\\n return Response.fromNullable(\\n (await this._channel.goForward({\\n ...options,\\n waitUntil,\\n timeout: this._timeoutSettings.navigationTimeout(options)\\n })).response\\n );\\n }\\n async requestGC() {\\n await this._channel.requestGC();\\n }\\n async emulateMedia(options = {}) {\\n await this._channel.emulateMedia({\\n media: options.media === null ? \\\"no-override\\\" : options.media,\\n colorScheme: options.colorScheme === null ? \\\"no-override\\\" : options.colorScheme,\\n reducedMotion: options.reducedMotion === null ? \\\"no-override\\\" : options.reducedMotion,\\n forcedColors: options.forcedColors === null ? \\\"no-override\\\" : options.forcedColors,\\n contrast: options.contrast === null ? \\\"no-override\\\" : options.contrast\\n });\\n }\\n async setViewportSize(viewportSize) {\\n this._viewportSize = viewportSize;\\n await this._channel.setViewportSize({ viewportSize });\\n }\\n viewportSize() {\\n return this._viewportSize || null;\\n }\\n async evaluate(pageFunction, arg) {\\n assertMaxArguments(arguments.length, 2);\\n return await this._mainFrame.evaluate(pageFunction, arg);\\n }\\n async addInitScript(script, arg) {\\n const source = await evaluationScript(this._platform, script, arg);\\n return DisposableObject.from((await this._channel.addInitScript({ source })).disposable);\\n }\\n async route(url, handler, options = {}) {\\n this._routes.unshift(\\n new RouteHandler(\\n this._platform,\\n this._browserContext._options.baseURL,\\n url,\\n handler,\\n options.times\\n )\\n );\\n await this._updateInterceptionPatterns({ title: \\\"Route requests\\\" });\\n return new DisposableStub(() => this.unroute(url, handler));\\n }\\n async routeFromHAR(har, options = {}) {\\n const localUtils = this._connection.localUtils();\\n if (!localUtils) throw new Error(\\\"Route from har is not supported in thin clients\\\");\\n if (options.update) {\\n await this._browserContext._recordIntoHAR(har, this, options);\\n return;\\n }\\n const harRouter = await HarRouter.create(localUtils, har, options.notFound || \\\"abort\\\", {\\n urlMatch: options.url\\n });\\n this._harRouters.push(harRouter);\\n await harRouter.addPageRoute(this);\\n }\\n async routeWebSocket(url, handler) {\\n this._webSocketRoutes.unshift(\\n new WebSocketRouteHandler(this._browserContext._options.baseURL, url, handler)\\n );\\n await this._updateWebSocketInterceptionPatterns({ title: \\\"Route WebSockets\\\" });\\n }\\n _disposeHarRouters() {\\n this._harRouters.forEach((router) => router.dispose());\\n this._harRouters = [];\\n }\\n async unrouteAll(options) {\\n await this._unrouteInternal(this._routes, [], options?.behavior);\\n this._disposeHarRouters();\\n }\\n async unroute(url, handler) {\\n const removed = [];\\n const remaining = [];\\n for (const route of this._routes) {\\n if (urlMatchesEqual(route.url, url) && (!handler || route.handler === handler))\\n removed.push(route);\\n else remaining.push(route);\\n }\\n await this._unrouteInternal(removed, remaining, \\\"default\\\");\\n }\\n async _unrouteInternal(removed, remaining, behavior) {\\n this._routes = remaining;\\n if (behavior && behavior !== \\\"default\\\") {\\n const promises = removed.map((routeHandler) => routeHandler.stop(behavior));\\n await Promise.all(promises);\\n }\\n await this._updateInterceptionPatterns({ title: \\\"Unroute requests\\\" });\\n }\\n async _updateInterceptionPatterns(options) {\\n const patterns = RouteHandler.prepareInterceptionPatterns(this._routes);\\n await this._wrapApiCall(\\n () => this._channel.setNetworkInterceptionPatterns({ patterns }),\\n options\\n );\\n }\\n async _updateWebSocketInterceptionPatterns(options) {\\n const patterns = WebSocketRouteHandler.prepareInterceptionPatterns(this._webSocketRoutes);\\n await this._wrapApiCall(\\n () => this._channel.setWebSocketInterceptionPatterns({ patterns }),\\n options\\n );\\n }\\n async screenshot(options = {}) {\\n const mask = options.mask;\\n const copy = {\\n ...options,\\n path: void 0,\\n mask: void 0,\\n timeout: this._timeoutSettings.timeout(options)\\n };\\n if (!copy.type) copy.type = determineScreenshotType(options);\\n if (mask) {\\n copy.mask = mask.map((locator) => ({\\n frame: locator._frame._channel,\\n selector: locator._selector\\n }));\\n }\\n const result = await this._channel.screenshot(copy);\\n if (options.path) {\\n options.path = await writeTempFile(options.path, result.binary);\\n }\\n return result.binary;\\n }\\n async _expectScreenshot(options) {\\n const mask = options?.mask ? options?.mask.map((locator2) => ({\\n frame: locator2._frame._channel,\\n selector: locator2._selector\\n })) : void 0;\\n const locator = options.locator ? {\\n frame: options.locator._frame._channel,\\n selector: options.locator._selector\\n } : void 0;\\n return await this._channel.expectScreenshot({\\n ...options,\\n isNot: !!options.isNot,\\n locator,\\n mask\\n });\\n }\\n async title() {\\n return await this._mainFrame.title();\\n }\\n async bringToFront() {\\n await this._channel.bringToFront();\\n }\\n async [Symbol.asyncDispose]() {\\n await this.close();\\n }\\n async close(options = {}) {\\n this._closeReason = options.reason;\\n if (!options.runBeforeUnload) this._closeWasCalled = true;\\n try {\\n if (this._ownedContext) await this._ownedContext.close();\\n else await this._channel.close(options);\\n } catch (e) {\\n if (isTargetClosedError(e) && !options.runBeforeUnload) return;\\n throw e;\\n }\\n }\\n isClosed() {\\n return this._closed;\\n }\\n async click(selector, options) {\\n return await this._mainFrame.click(selector, options);\\n }\\n async dragAndDrop(source, target, options) {\\n return await this._mainFrame.dragAndDrop(source, target, options);\\n }\\n async dblclick(selector, options) {\\n await this._mainFrame.dblclick(selector, options);\\n }\\n async tap(selector, options) {\\n return await this._mainFrame.tap(selector, options);\\n }\\n async fill(selector, value, options) {\\n return await this._mainFrame.fill(selector, value, options);\\n }\\n async clearConsoleMessages() {\\n await this._channel.clearConsoleMessages();\\n }\\n async consoleMessages(options) {\\n const { messages } = await this._channel.consoleMessages({ filter: options?.filter });\\n return messages.map((message) => new ConsoleMessage(this._platform, message, this, null));\\n }\\n async clearPageErrors() {\\n await this._channel.clearPageErrors();\\n }\\n async pageErrors(options) {\\n const { errors } = await this._channel.pageErrors({ filter: options?.filter });\\n return errors.map((error) => parseError(error));\\n }\\n locator(selector, options) {\\n return this.mainFrame().locator(selector, options);\\n }\\n getByTestId(testId) {\\n return this.mainFrame().getByTestId(testId);\\n }\\n getByAltText(text, options) {\\n return this.mainFrame().getByAltText(text, options);\\n }\\n getByLabel(text, options) {\\n return this.mainFrame().getByLabel(text, options);\\n }\\n getByPlaceholder(text, options) {\\n return this.mainFrame().getByPlaceholder(text, options);\\n }\\n getByText(text, options) {\\n return this.mainFrame().getByText(text, options);\\n }\\n getByTitle(text, options) {\\n return this.mainFrame().getByTitle(text, options);\\n }\\n getByRole(role, options = {}) {\\n return this.mainFrame().getByRole(role, options);\\n }\\n frameLocator(selector) {\\n return this.mainFrame().frameLocator(selector);\\n }\\n async focus(selector, options) {\\n return await this._mainFrame.focus(selector, options);\\n }\\n async textContent(selector, options) {\\n return await this._mainFrame.textContent(selector, options);\\n }\\n async innerText(selector, options) {\\n return await this._mainFrame.innerText(selector, options);\\n }\\n async innerHTML(selector, options) {\\n return await this._mainFrame.innerHTML(selector, options);\\n }\\n async getAttribute(selector, name, options) {\\n return await this._mainFrame.getAttribute(selector, name, options);\\n }\\n async inputValue(selector, options) {\\n return await this._mainFrame.inputValue(selector, options);\\n }\\n async isChecked(selector, options) {\\n return await this._mainFrame.isChecked(selector, options);\\n }\\n async isDisabled(selector, options) {\\n return await this._mainFrame.isDisabled(selector, options);\\n }\\n async isEditable(selector, options) {\\n return await this._mainFrame.isEditable(selector, options);\\n }\\n async isEnabled(selector, options) {\\n return await this._mainFrame.isEnabled(selector, options);\\n }\\n async isHidden(selector, options) {\\n return await this._mainFrame.isHidden(selector, options);\\n }\\n async isVisible(selector, options) {\\n return await this._mainFrame.isVisible(selector, options);\\n }\\n async hover(selector, options) {\\n return await this._mainFrame.hover(selector, options);\\n }\\n async selectOption(selector, values, options) {\\n return await this._mainFrame.selectOption(selector, values, options);\\n }\\n async setInputFiles(selector, files, options) {\\n return await this._mainFrame.setInputFiles(selector, files, options);\\n }\\n async type(selector, text, options) {\\n return await this._mainFrame.type(selector, text, options);\\n }\\n async press(selector, key, options) {\\n return await this._mainFrame.press(selector, key, options);\\n }\\n async check(selector, options) {\\n return await this._mainFrame.check(selector, options);\\n }\\n async uncheck(selector, options) {\\n return await this._mainFrame.uncheck(selector, options);\\n }\\n async setChecked(selector, checked, options) {\\n return await this._mainFrame.setChecked(selector, checked, options);\\n }\\n async waitForTimeout(timeout) {\\n return await this._mainFrame.waitForTimeout(timeout);\\n }\\n async waitForFunction(pageFunction, arg, options) {\\n return await this._mainFrame.waitForFunction(pageFunction, arg, options);\\n }\\n async requests() {\\n const { requests } = await this._channel.requests();\\n return requests.map((request) => Request.from(request));\\n }\\n workers() {\\n return [...this._workers];\\n }\\n async pause(_options) {\\n if (this._platform.isJSDebuggerAttached()) return;\\n const defaultNavigationTimeout = this._browserContext._timeoutSettings.defaultNavigationTimeout();\\n const defaultTimeout = this._browserContext._timeoutSettings.defaultTimeout();\\n this._browserContext.setDefaultNavigationTimeout(0);\\n this._browserContext.setDefaultTimeout(0);\\n this._instrumentation?.onWillPause({ keepTestTimeout: !!_options?.__testHookKeepTestTimeout });\\n await this._closedOrCrashedScope.safeRace(this.context()._channel.pause());\\n this._browserContext.setDefaultNavigationTimeout(defaultNavigationTimeout);\\n this._browserContext.setDefaultTimeout(defaultTimeout);\\n }\\n async pdf(options = {}) {\\n const transportOptions = { ...options };\\n if (transportOptions.margin) transportOptions.margin = { ...transportOptions.margin };\\n if (typeof options.width === \\\"number\\\") transportOptions.width = options.width + \\\"px\\\";\\n if (typeof options.height === \\\"number\\\") transportOptions.height = options.height + \\\"px\\\";\\n for (const margin of [\\\"top\\\", \\\"right\\\", \\\"bottom\\\", \\\"left\\\"]) {\\n const index = margin;\\n if (options.margin && typeof options.margin[index] === \\\"number\\\")\\n transportOptions.margin[index] = transportOptions.margin[index] + \\\"px\\\";\\n }\\n const result = await this._channel.pdf(transportOptions);\\n if (options.path) {\\n const platform = this._platform;\\n await platform.fs().promises.mkdir(platform.path().dirname(options.path), { recursive: true });\\n await platform.fs().promises.writeFile(options.path, result.pdf);\\n }\\n return result.pdf;\\n }\\n async snapshotForAI(options = {}) {\\n return await this._channel.snapshotForAI({\\n timeout: this._timeoutSettings.timeout(options),\\n track: options.track,\\n depth: options.depth\\n });\\n }\\n async _setDockTile(image) {\\n await this._channel.setDockTile({ image });\\n }\\n };\\n var BindingCall = class extends ChannelOwner {\\n static from(channel) {\\n return channel._object;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n }\\n async call(func) {\\n try {\\n const frame = Frame.from(this._initializer.frame);\\n const source = {\\n context: frame._page.context(),\\n page: frame._page,\\n frame\\n };\\n let result;\\n if (this._initializer.handle)\\n result = await func(source, JSHandle.from(this._initializer.handle));\\n else result = await func(source, ...this._initializer.args.map(parseResult));\\n this._channel.resolve({ result: serializeArgument(result) }).catch(() => {\\n });\\n } catch (e) {\\n this._channel.reject({ error: serializeError(e) }).catch(() => {\\n });\\n }\\n }\\n };\\n function trimUrl(param) {\\n if (isRegExp(param)) return `/${trimStringWithEllipsis(param.source, 50)}/${param.flags}`;\\n if (isString(param)) return `\\\"${trimStringWithEllipsis(param, 50)}\\\"`;\\n }\\n\\n // src/sandbox/forked-client/src/client/dialog.ts\\n var Dialog = class extends ChannelOwner {\\n static from(dialog) {\\n return dialog._object;\\n }\\n _page;\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._page = Page.fromNullable(initializer.page);\\n }\\n page() {\\n return this._page;\\n }\\n type() {\\n return this._initializer.type;\\n }\\n message() {\\n return this._initializer.message;\\n }\\n defaultValue() {\\n return this._initializer.defaultValue;\\n }\\n async accept(promptText) {\\n await this._channel.accept({ promptText });\\n }\\n async dismiss() {\\n await this._channel.dismiss();\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/tracing.ts\\n var Tracing = class extends ChannelOwner {\\n _tracesDir;\\n static from(channel) {\\n return channel?._object;\\n }\\n async start() {\\n }\\n async startChunk() {\\n }\\n async stop() {\\n }\\n async stopChunk() {\\n }\\n async group() {\\n }\\n async groupEnd() {\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/webError.ts\\n var WebError = class {\\n _page;\\n _error;\\n constructor(page, error) {\\n this._page = page;\\n this._error = error;\\n }\\n page() {\\n return this._page;\\n }\\n error() {\\n return this._error;\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/browserContext.ts\\n var BrowserContext = class _BrowserContext extends ChannelOwner {\\n _pages = /* @__PURE__ */ new Set();\\n _routes = [];\\n _webSocketRoutes = [];\\n // Browser is null for browser contexts created outside of normal browser, e.g. android or electron.\\n _browser = null;\\n _bindings = /* @__PURE__ */ new Map();\\n _timeoutSettings;\\n _ownerPage;\\n _forReuse = false;\\n _closedPromise;\\n _options;\\n request;\\n tracing;\\n clock;\\n _serviceWorkers = /* @__PURE__ */ new Set();\\n _harRecorders = /* @__PURE__ */ new Map();\\n _closingStatus = \\\"none\\\";\\n _closeReason;\\n _harRouters = [];\\n _onRecorderEventSink;\\n static from(context) {\\n return context._object;\\n }\\n static fromNullable(context) {\\n return context ? _BrowserContext.from(context) : null;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._options = initializer.options;\\n this._timeoutSettings = new TimeoutSettings(this._platform);\\n this.tracing = Tracing.from(initializer.tracing);\\n this.request = APIRequestContext.from(initializer.requestContext);\\n this.request._timeoutSettings = this._timeoutSettings;\\n this.clock = new Clock(this);\\n this._channel.on(\\\"bindingCall\\\", ({ binding }) => this._onBinding(BindingCall.from(binding)));\\n this._channel.on(\\\"close\\\", () => this._onClose());\\n this._channel.on(\\\"page\\\", ({ page }) => this._onPage(Page.from(page)));\\n this._channel.on(\\\"route\\\", ({ route }) => this._onRoute(Route.from(route)));\\n this._channel.on(\\n \\\"webSocketRoute\\\",\\n ({ webSocketRoute }) => this._onWebSocketRoute(WebSocketRoute.from(webSocketRoute))\\n );\\n this._channel.on(\\\"serviceWorker\\\", ({ worker }) => {\\n const serviceWorker = Worker.from(worker);\\n serviceWorker._context = this;\\n this._serviceWorkers.add(serviceWorker);\\n this.emit(Events.BrowserContext.ServiceWorker, serviceWorker);\\n });\\n this._channel.on(\\\"console\\\", (event) => {\\n const worker = Worker.fromNullable(event.worker);\\n const page = Page.fromNullable(event.page);\\n const consoleMessage = new ConsoleMessage(this._platform, event, page, worker);\\n worker?.emit(Events.Worker.Console, consoleMessage);\\n page?.emit(Events.Page.Console, consoleMessage);\\n if (worker && this._serviceWorkers.has(worker)) {\\n const scope = this._serviceWorkerScope(worker);\\n for (const page2 of this._pages) {\\n if (scope && page2.url().startsWith(scope)) page2.emit(Events.Page.Console, consoleMessage);\\n }\\n }\\n this.emit(Events.BrowserContext.Console, consoleMessage);\\n });\\n this._channel.on(\\\"pageError\\\", ({ error, page }) => {\\n const pageObject = Page.from(page);\\n const parsedError = parseError(error);\\n this.emit(Events.BrowserContext.WebError, new WebError(pageObject, parsedError));\\n if (pageObject) pageObject.emit(Events.Page.PageError, parsedError);\\n });\\n this._channel.on(\\\"dialog\\\", ({ dialog }) => {\\n const dialogObject = Dialog.from(dialog);\\n let hasListeners = this.emit(Events.BrowserContext.Dialog, dialogObject);\\n const page = dialogObject.page();\\n if (page) hasListeners = page.emit(Events.Page.Dialog, dialogObject) || hasListeners;\\n if (!hasListeners) {\\n if (dialogObject.type() === \\\"beforeunload\\\") dialog.accept({}).catch(() => {\\n });\\n else dialog.dismiss().catch(() => {\\n });\\n }\\n });\\n this._channel.on(\\n \\\"request\\\",\\n ({ request, page }) => this._onRequest(Request.from(request), Page.fromNullable(page))\\n );\\n this._channel.on(\\n \\\"requestFailed\\\",\\n ({ request, failureText, responseEndTiming, page }) => this._onRequestFailed(\\n Request.from(request),\\n responseEndTiming,\\n failureText,\\n Page.fromNullable(page)\\n )\\n );\\n this._channel.on(\\\"requestFinished\\\", (params) => this._onRequestFinished(params));\\n this._channel.on(\\n \\\"response\\\",\\n ({ response, page }) => this._onResponse(Response.from(response), Page.fromNullable(page))\\n );\\n this._channel.on(\\\"recorderEvent\\\", ({ event, data, page, code }) => {\\n if (event === \\\"actionAdded\\\")\\n this._onRecorderEventSink?.actionAdded?.(\\n Page.from(page),\\n data,\\n code\\n );\\n else if (event === \\\"actionUpdated\\\")\\n this._onRecorderEventSink?.actionUpdated?.(\\n Page.from(page),\\n data,\\n code\\n );\\n else if (event === \\\"signalAdded\\\")\\n this._onRecorderEventSink?.signalAdded?.(Page.from(page), data);\\n });\\n this._closedPromise = new Promise((f) => this.once(Events.BrowserContext.Close, f));\\n this._setEventToSubscriptionMapping(\\n /* @__PURE__ */ new Map([\\n [Events.BrowserContext.Console, \\\"console\\\"],\\n [Events.BrowserContext.Dialog, \\\"dialog\\\"],\\n [Events.BrowserContext.Request, \\\"request\\\"],\\n [Events.BrowserContext.Response, \\\"response\\\"],\\n [Events.BrowserContext.RequestFinished, \\\"requestFinished\\\"],\\n [Events.BrowserContext.RequestFailed, \\\"requestFailed\\\"]\\n ])\\n );\\n }\\n async _initializeHarFromOptions(recordHar) {\\n if (!recordHar) return;\\n const defaultContent = recordHar.path.endsWith(\\\".zip\\\") ? \\\"attach\\\" : \\\"embed\\\";\\n await this._recordIntoHAR(recordHar.path, null, {\\n url: recordHar.urlFilter,\\n updateContent: recordHar.content ?? (recordHar.omitContent ? \\\"omit\\\" : defaultContent),\\n updateMode: recordHar.mode ?? \\\"full\\\"\\n });\\n }\\n _onPage(page) {\\n this._pages.add(page);\\n this.emit(Events.BrowserContext.Page, page);\\n if (page._opener && !page._opener.isClosed()) page._opener.emit(Events.Page.Popup, page);\\n }\\n _onRequest(request, page) {\\n this.emit(Events.BrowserContext.Request, request);\\n if (page) page.emit(Events.Page.Request, request);\\n }\\n _onResponse(response, page) {\\n this.emit(Events.BrowserContext.Response, response);\\n if (page) page.emit(Events.Page.Response, response);\\n }\\n _onRequestFailed(request, responseEndTiming, failureText, page) {\\n request._failureText = failureText || null;\\n request._setResponseEndTiming(responseEndTiming);\\n this.emit(Events.BrowserContext.RequestFailed, request);\\n if (page) page.emit(Events.Page.RequestFailed, request);\\n }\\n _onRequestFinished(params) {\\n const { responseEndTiming } = params;\\n const request = Request.from(params.request);\\n const response = Response.fromNullable(params.response);\\n const page = Page.fromNullable(params.page);\\n request._setResponseEndTiming(responseEndTiming);\\n this.emit(Events.BrowserContext.RequestFinished, request);\\n if (page) page.emit(Events.Page.RequestFinished, request);\\n if (response) response._finishedPromise.resolve(null);\\n }\\n async _onRoute(route) {\\n route._context = this;\\n const page = route.request()._safePage();\\n const routeHandlers = this._routes.slice();\\n for (const routeHandler of routeHandlers) {\\n if (page?._closeWasCalled || this.isClosedOrClosing()) return;\\n if (!routeHandler.matches(route.request().url())) continue;\\n const index = this._routes.indexOf(routeHandler);\\n if (index === -1) continue;\\n if (routeHandler.willExpire()) this._routes.splice(index, 1);\\n const handled = await routeHandler.handle(route);\\n if (!this._routes.length)\\n this._updateInterceptionPatterns({ internal: true }).catch(() => {\\n });\\n if (handled) return;\\n }\\n await route._innerContinue(\\n true\\n /* isFallback */\\n ).catch(() => {\\n });\\n }\\n async _onWebSocketRoute(webSocketRoute) {\\n const routeHandler = this._webSocketRoutes.find((route) => route.matches(webSocketRoute.url()));\\n if (routeHandler) await routeHandler.handle(webSocketRoute);\\n else webSocketRoute.connectToServer();\\n }\\n async _onBinding(bindingCall) {\\n const func = this._bindings.get(bindingCall._initializer.name);\\n if (!func) return;\\n await bindingCall.call(func);\\n }\\n _serviceWorkerScope(serviceWorker) {\\n try {\\n let url = new URL(\\\".\\\", serviceWorker.url()).href;\\n if (!url.endsWith(\\\"/\\\")) url += \\\"/\\\";\\n return url;\\n } catch {\\n return null;\\n }\\n }\\n setDefaultNavigationTimeout(timeout) {\\n this._timeoutSettings.setDefaultNavigationTimeout(timeout);\\n }\\n setDefaultTimeout(timeout) {\\n this._timeoutSettings.setDefaultTimeout(timeout);\\n }\\n browser() {\\n return this._browser;\\n }\\n contextOptions() {\\n return contextParamsToPublicOptions(this._options);\\n }\\n pages() {\\n return [...this._pages];\\n }\\n isClosedOrClosing() {\\n return this._closingStatus !== \\\"none\\\";\\n }\\n async newPage() {\\n if (this._ownerPage) throw new Error(\\\"Please use browser.newContext()\\\");\\n return Page.from((await this._channel.newPage()).page);\\n }\\n async cookies(urls) {\\n if (!urls) urls = [];\\n if (urls && typeof urls === \\\"string\\\") urls = [urls];\\n return (await this._channel.cookies({ urls })).cookies;\\n }\\n async addCookies(cookies) {\\n await this._channel.addCookies({ cookies });\\n }\\n async clearCookies(options = {}) {\\n await this._channel.clearCookies({\\n name: isString(options.name) ? options.name : void 0,\\n nameRegexSource: isRegExp(options.name) ? options.name.source : void 0,\\n nameRegexFlags: isRegExp(options.name) ? options.name.flags : void 0,\\n domain: isString(options.domain) ? options.domain : void 0,\\n domainRegexSource: isRegExp(options.domain) ? options.domain.source : void 0,\\n domainRegexFlags: isRegExp(options.domain) ? options.domain.flags : void 0,\\n path: isString(options.path) ? options.path : void 0,\\n pathRegexSource: isRegExp(options.path) ? options.path.source : void 0,\\n pathRegexFlags: isRegExp(options.path) ? options.path.flags : void 0\\n });\\n }\\n async grantPermissions(permissions, options) {\\n await this._channel.grantPermissions({ permissions, ...options });\\n }\\n async clearPermissions() {\\n await this._channel.clearPermissions();\\n }\\n async setGeolocation(geolocation) {\\n await this._channel.setGeolocation({ geolocation: geolocation || void 0 });\\n }\\n async setExtraHTTPHeaders(headers) {\\n validateHeaders(headers);\\n await this._channel.setExtraHTTPHeaders({ headers: headersObjectToArray(headers) });\\n }\\n async setOffline(offline) {\\n await this._channel.setOffline({ offline });\\n }\\n async setHTTPCredentials(httpCredentials) {\\n await this._channel.setHTTPCredentials({ httpCredentials: httpCredentials || void 0 });\\n }\\n async addInitScript(script, arg) {\\n const source = await evaluationScript(this._platform, script, arg);\\n return DisposableObject.from((await this._channel.addInitScript({ source })).disposable);\\n }\\n async exposeBinding(name, callback, options = {}) {\\n const result = await this._channel.exposeBinding({ name, needsHandle: options.handle });\\n this._bindings.set(name, callback);\\n return DisposableObject.from(result.disposable);\\n }\\n async exposeFunction(name, callback) {\\n const result = await this._channel.exposeBinding({ name });\\n const binding = (source, ...args) => callback(...args);\\n this._bindings.set(name, binding);\\n return DisposableObject.from(result.disposable);\\n }\\n async route(url, handler, options = {}) {\\n this._routes.unshift(\\n new RouteHandler(this._platform, this._options.baseURL, url, handler, options.times)\\n );\\n await this._updateInterceptionPatterns({ title: \\\"Route requests\\\" });\\n return new DisposableStub(() => this.unroute(url, handler));\\n }\\n async routeWebSocket(url, handler) {\\n this._webSocketRoutes.unshift(\\n new WebSocketRouteHandler(this._options.baseURL, url, handler)\\n );\\n await this._updateWebSocketInterceptionPatterns({ title: \\\"Route WebSockets\\\" });\\n }\\n async _recordIntoHAR(har, page, options = {}) {\\n const { harId } = await this._channel.harStart({\\n page: page?._channel,\\n options: {\\n zip: har.endsWith(\\\".zip\\\"),\\n content: options.updateContent ?? \\\"attach\\\",\\n urlGlob: isString(options.url) ? options.url : void 0,\\n urlRegexSource: isRegExp(options.url) ? options.url.source : void 0,\\n urlRegexFlags: isRegExp(options.url) ? options.url.flags : void 0,\\n mode: options.updateMode ?? \\\"minimal\\\"\\n }\\n });\\n this._harRecorders.set(harId, { path: har, content: options.updateContent ?? \\\"attach\\\" });\\n }\\n async routeFromHAR(har, options = {}) {\\n const localUtils = this._connection.localUtils();\\n if (!localUtils) throw new Error(\\\"Route from har is not supported in thin clients\\\");\\n if (options.update) {\\n await this._recordIntoHAR(har, null, options);\\n return;\\n }\\n const harRouter = await HarRouter.create(localUtils, har, options.notFound || \\\"abort\\\", {\\n urlMatch: options.url\\n });\\n this._harRouters.push(harRouter);\\n await harRouter.addContextRoute(this);\\n }\\n _disposeHarRouters() {\\n this._harRouters.forEach((router) => router.dispose());\\n this._harRouters = [];\\n }\\n async unrouteAll(options) {\\n await this._unrouteInternal(this._routes, [], options?.behavior);\\n this._disposeHarRouters();\\n }\\n async unroute(url, handler) {\\n const removed = [];\\n const remaining = [];\\n for (const route of this._routes) {\\n if (urlMatchesEqual(route.url, url) && (!handler || route.handler === handler))\\n removed.push(route);\\n else remaining.push(route);\\n }\\n await this._unrouteInternal(removed, remaining, \\\"default\\\");\\n }\\n async _unrouteInternal(removed, remaining, behavior) {\\n this._routes = remaining;\\n if (behavior && behavior !== \\\"default\\\") {\\n const promises = removed.map((routeHandler) => routeHandler.stop(behavior));\\n await Promise.all(promises);\\n }\\n await this._updateInterceptionPatterns({ title: \\\"Unroute requests\\\" });\\n }\\n async _updateInterceptionPatterns(options) {\\n const patterns = RouteHandler.prepareInterceptionPatterns(this._routes);\\n await this._wrapApiCall(\\n () => this._channel.setNetworkInterceptionPatterns({ patterns }),\\n options\\n );\\n }\\n async _updateWebSocketInterceptionPatterns(options) {\\n const patterns = WebSocketRouteHandler.prepareInterceptionPatterns(\\n this._webSocketRoutes\\n );\\n await this._wrapApiCall(\\n () => this._channel.setWebSocketInterceptionPatterns({ patterns }),\\n options\\n );\\n }\\n _effectiveCloseReason() {\\n return this._closeReason || this._browser?._closeReason;\\n }\\n async waitForEvent(event, optionsOrPredicate = {}) {\\n return await this._wrapApiCall(async () => {\\n const timeout = this._timeoutSettings.timeout(\\n typeof optionsOrPredicate === \\\"function\\\" ? {} : optionsOrPredicate\\n );\\n const predicate = typeof optionsOrPredicate === \\\"function\\\" ? optionsOrPredicate : optionsOrPredicate.predicate;\\n const waiter = Waiter.createForEvent(this, event);\\n waiter.rejectOnTimeout(\\n timeout,\\n `Timeout ${timeout}ms exceeded while waiting for event \\\"${event}\\\"`\\n );\\n if (event !== Events.BrowserContext.Close)\\n waiter.rejectOnEvent(\\n this,\\n Events.BrowserContext.Close,\\n () => new TargetClosedError(this._effectiveCloseReason())\\n );\\n const result = await waiter.waitForEvent(this, event, predicate);\\n waiter.dispose();\\n return result;\\n });\\n }\\n async storageState(options = {}) {\\n const state = await this._channel.storageState({ indexedDB: options.indexedDB });\\n if (options.path) {\\n await mkdirIfNeeded(this._platform, options.path);\\n await this._platform.fs().promises.writeFile(options.path, JSON.stringify(state, void 0, 2), \\\"utf8\\\");\\n }\\n return state;\\n }\\n async setStorageState(storageState) {\\n const state = await prepareStorageState(this._platform, storageState);\\n await this._channel.setStorageState({ storageState: state });\\n }\\n backgroundPages() {\\n return [];\\n }\\n serviceWorkers() {\\n return [...this._serviceWorkers];\\n }\\n async newCDPSession(page) {\\n if (!(page instanceof Page) && !(page instanceof Frame))\\n throw new Error(\\\"page: expected Page or Frame\\\");\\n const result = await this._channel.newCDPSession(\\n page instanceof Page ? { page: page._channel } : { frame: page._channel }\\n );\\n return CDPSession.from(result.session);\\n }\\n _onClose() {\\n this._closingStatus = \\\"closed\\\";\\n this._browser?._contexts.delete(this);\\n this._browser?._browserType._contexts.delete(this);\\n this._browser?._browserType._playwright.selectors._contextsForSelectors.delete(this);\\n this._disposeHarRouters();\\n this.tracing._resetStackCounter();\\n this.emit(Events.BrowserContext.Close, this);\\n }\\n async [Symbol.asyncDispose]() {\\n await this.close();\\n }\\n async close(options = {}) {\\n if (this.isClosedOrClosing()) return;\\n this._closeReason = options.reason;\\n this._closingStatus = \\\"closing\\\";\\n await this.request.dispose(options);\\n await this._instrumentation.runBeforeCloseBrowserContext(this);\\n await this._wrapApiCall(\\n async () => {\\n for (const [harId, harParams] of this._harRecorders) {\\n const har = await this._channel.harExport({ harId });\\n const artifact = Artifact.from(har.artifact);\\n const isCompressed = harParams.content === \\\"attach\\\" || harParams.path.endsWith(\\\".zip\\\");\\n const needCompressed = harParams.path.endsWith(\\\".zip\\\");\\n if (isCompressed && !needCompressed) {\\n const localUtils = this._connection.localUtils();\\n if (!localUtils) throw new Error(\\\"Uncompressed har is not supported in thin clients\\\");\\n await artifact.saveAs(harParams.path + \\\".tmp\\\");\\n await localUtils.harUnzip({\\n zipFile: harParams.path + \\\".tmp\\\",\\n harFile: harParams.path\\n });\\n } else {\\n await artifact.saveAs(harParams.path);\\n }\\n await artifact.delete();\\n }\\n },\\n { internal: true }\\n );\\n await this._channel.close(options);\\n await this._closedPromise;\\n }\\n async _enableRecorder(params, eventSink) {\\n if (eventSink) this._onRecorderEventSink = eventSink;\\n await this._channel.enableRecorder(params);\\n }\\n async _disableRecorder() {\\n this._onRecorderEventSink = void 0;\\n await this._channel.disableRecorder();\\n }\\n async _exposeConsoleApi() {\\n await this._channel.exposeConsoleApi();\\n }\\n };\\n async function prepareStorageState(platform, storageState) {\\n if (typeof storageState !== \\\"string\\\") return storageState;\\n try {\\n return JSON.parse(await platform.fs().promises.readFile(storageState, \\\"utf8\\\"));\\n } catch (e) {\\n rewriteErrorMessage(e, `Error reading storage state from ${storageState}:\\n` + e.message);\\n throw e;\\n }\\n }\\n async function prepareBrowserContextParams(platform, options) {\\n if (options.videoSize && !options.videosPath)\\n throw new Error(`\\\"videoSize\\\" option requires \\\"videosPath\\\" to be specified`);\\n if (options.extraHTTPHeaders) validateHeaders(options.extraHTTPHeaders);\\n const contextParams = {\\n ...options,\\n viewport: options.viewport === null ? void 0 : options.viewport,\\n noDefaultViewport: options.viewport === null,\\n extraHTTPHeaders: options.extraHTTPHeaders ? headersObjectToArray(options.extraHTTPHeaders) : void 0,\\n storageState: options.storageState ? await prepareStorageState(platform, options.storageState) : void 0,\\n serviceWorkers: options.serviceWorkers,\\n colorScheme: options.colorScheme === null ? \\\"no-override\\\" : options.colorScheme,\\n reducedMotion: options.reducedMotion === null ? \\\"no-override\\\" : options.reducedMotion,\\n forcedColors: options.forcedColors === null ? \\\"no-override\\\" : options.forcedColors,\\n contrast: options.contrast === null ? \\\"no-override\\\" : options.contrast,\\n acceptDownloads: toAcceptDownloadsProtocol(options.acceptDownloads),\\n clientCertificates: await toClientCertificatesProtocol(platform, options.clientCertificates)\\n };\\n if (!contextParams.recordVideo && options.videosPath) {\\n contextParams.recordVideo = {\\n dir: options.videosPath,\\n size: options.videoSize\\n };\\n }\\n if (contextParams.recordVideo && contextParams.recordVideo.dir)\\n contextParams.recordVideo.dir = platform.path().resolve(contextParams.recordVideo.dir);\\n return contextParams;\\n }\\n function contextParamsToPublicOptions(params) {\\n const result = {\\n ...params,\\n viewport: params.noDefaultViewport ? null : params.viewport,\\n extraHTTPHeaders: params.extraHTTPHeaders ? headersArrayToObject(params.extraHTTPHeaders, false) : void 0,\\n colorScheme: params.colorScheme === \\\"no-override\\\" ? null : params.colorScheme,\\n reducedMotion: params.reducedMotion === \\\"no-override\\\" ? null : params.reducedMotion,\\n forcedColors: params.forcedColors === \\\"no-override\\\" ? null : params.forcedColors,\\n contrast: params.contrast === \\\"no-override\\\" ? null : params.contrast,\\n acceptDownloads: params.acceptDownloads === \\\"accept\\\" ? true : params.acceptDownloads === \\\"deny\\\" ? false : void 0,\\n storageState: void 0\\n };\\n delete result.clientCertificates;\\n delete result.noDefaultViewport;\\n delete result.selectorEngines;\\n return result;\\n }\\n function toAcceptDownloadsProtocol(acceptDownloads) {\\n if (acceptDownloads === void 0) return void 0;\\n if (acceptDownloads) return \\\"accept\\\";\\n return \\\"deny\\\";\\n }\\n async function toClientCertificatesProtocol(platform, certs) {\\n if (!certs) return void 0;\\n const bufferizeContent = async (value, path) => {\\n if (value) return value;\\n if (path) return await platform.fs().promises.readFile(path);\\n };\\n return await Promise.all(\\n certs.map(async (cert) => ({\\n origin: cert.origin,\\n cert: await bufferizeContent(cert.cert, cert.certPath),\\n key: await bufferizeContent(cert.key, cert.keyPath),\\n pfx: await bufferizeContent(cert.pfx, cert.pfxPath),\\n passphrase: cert.passphrase\\n }))\\n );\\n }\\n\\n // src/sandbox/forked-client/src/client/browser.ts\\n var Browser = class extends ChannelOwner {\\n _contexts = /* @__PURE__ */ new Set();\\n _isConnected = true;\\n _closedPromise;\\n _shouldCloseConnectionOnClose = false;\\n _browserType;\\n _options = {};\\n _userDataDir;\\n _name;\\n _path;\\n _closeReason;\\n static from(browser) {\\n return browser._object;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._name = initializer.name;\\n this._channel.on(\\n \\\"context\\\",\\n ({ context }) => this._didCreateContext(BrowserContext.from(context))\\n );\\n this._channel.on(\\\"close\\\", () => this._didClose());\\n this._closedPromise = new Promise((f) => this.once(Events.Browser.Disconnected, f));\\n }\\n browserType() {\\n return this._browserType;\\n }\\n async newContext(options = {}) {\\n return await this._innerNewContext(options, false);\\n }\\n async _newContextForReuse(options = {}) {\\n return await this._innerNewContext(options, true);\\n }\\n async _disconnectFromReusedContext(reason) {\\n const context = [...this._contexts].find((context2) => context2._forReuse);\\n if (!context) return;\\n await this._instrumentation.runBeforeCloseBrowserContext(context);\\n for (const page of context.pages()) page._onClose();\\n context._onClose();\\n await this._channel.disconnectFromReusedContext({ reason });\\n }\\n async _innerNewContext(userOptions = {}, forReuse) {\\n const options = this._browserType._playwright.selectors._withSelectorOptions(userOptions);\\n await this._instrumentation.runBeforeCreateBrowserContext(options);\\n const contextOptions = await prepareBrowserContextParams(this._platform, options);\\n const response = forReuse ? await this._channel.newContextForReuse(contextOptions) : await this._channel.newContext(contextOptions);\\n const context = BrowserContext.from(response.context);\\n if (forReuse) context._forReuse = true;\\n if (options.logger) context._logger = options.logger;\\n await context._initializeHarFromOptions(options.recordHar);\\n await this._instrumentation.runAfterCreateBrowserContext(context);\\n return context;\\n }\\n _connectToBrowserType(browserType, browserOptions, logger, userDataDir) {\\n this._browserType = browserType;\\n this._options = browserOptions;\\n this._userDataDir = userDataDir;\\n this._logger = logger;\\n for (const context of this._contexts) this._setupBrowserContext(context);\\n }\\n _didCreateContext(context) {\\n context._browser = this;\\n this._contexts.add(context);\\n if (this._browserType) this._setupBrowserContext(context);\\n }\\n _setupBrowserContext(context) {\\n context._logger = this._logger;\\n context.tracing._tracesDir = this._options.tracesDir;\\n this._browserType._contexts.add(context);\\n this._browserType._playwright.selectors._contextsForSelectors.add(context);\\n context.setDefaultTimeout(this._browserType._playwright._defaultContextTimeout);\\n context.setDefaultNavigationTimeout(\\n this._browserType._playwright._defaultContextNavigationTimeout\\n );\\n }\\n contexts() {\\n return [...this._contexts];\\n }\\n version() {\\n return this._initializer.version;\\n }\\n async _register(title, options = {}) {\\n const { pipeName } = await this._channel.startServer({ title, ...options });\\n return { pipeName };\\n }\\n async _unregister() {\\n await this._channel.stopServer();\\n }\\n async newPage(options = {}) {\\n return await this._wrapApiCall(\\n async () => {\\n const context = await this.newContext(options);\\n const page = await context.newPage();\\n page._ownedContext = context;\\n context._ownerPage = page;\\n return page;\\n },\\n { title: \\\"Create page\\\" }\\n );\\n }\\n isConnected() {\\n return this._isConnected;\\n }\\n launchOptions() {\\n return this._options;\\n }\\n userDataDir() {\\n return this._userDataDir ?? null;\\n }\\n async newBrowserCDPSession() {\\n return CDPSession.from((await this._channel.newBrowserCDPSession()).session);\\n }\\n async startTracing(page, options = {}) {\\n this._path = options.path;\\n await this._channel.startTracing({ ...options, page: page ? page._channel : void 0 });\\n }\\n async stopTracing() {\\n const artifact = Artifact.from((await this._channel.stopTracing()).artifact);\\n const buffer = await artifact.readIntoBuffer();\\n await artifact.delete();\\n if (this._path) {\\n await mkdirIfNeeded(this._platform, this._path);\\n await this._platform.fs().promises.writeFile(this._path, buffer);\\n this._path = void 0;\\n }\\n return buffer;\\n }\\n async [Symbol.asyncDispose]() {\\n await this.close();\\n }\\n async close(options = {}) {\\n this._closeReason = options.reason;\\n try {\\n if (this._shouldCloseConnectionOnClose) this._connection.close();\\n else await this._channel.close(options);\\n await this._closedPromise;\\n } catch (e) {\\n if (isTargetClosedError(e)) return;\\n throw e;\\n }\\n }\\n _didClose() {\\n this._isConnected = false;\\n this.emit(Events.Browser.Disconnected, this);\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/browserType.ts\\n var BrowserType = class extends ChannelOwner {\\n _serverLauncher;\\n _contexts = /* @__PURE__ */ new Set();\\n _playwright;\\n static from(browserType) {\\n return browserType._object;\\n }\\n executablePath() {\\n if (!this._initializer.executablePath)\\n throw new Error(\\\"Browser is not supported on current platform\\\");\\n return this._initializer.executablePath;\\n }\\n name() {\\n return this._initializer.name;\\n }\\n async launch(options = {}) {\\n assert(\\n !options.userDataDir,\\n \\\"userDataDir option is not supported in `browserType.launch`. Use `browserType.launchPersistentContext` instead\\\"\\n );\\n assert(!options.port, \\\"Cannot specify a port without launching as a server.\\\");\\n const logger = options.logger || this._playwright._defaultLaunchOptions?.logger;\\n options = { ...this._playwright._defaultLaunchOptions, ...options };\\n const launchOptions = {\\n ...options,\\n ignoreDefaultArgs: Array.isArray(options.ignoreDefaultArgs) ? options.ignoreDefaultArgs : void 0,\\n ignoreAllDefaultArgs: !!options.ignoreDefaultArgs && !Array.isArray(options.ignoreDefaultArgs),\\n env: options.env ? envObjectToArray(options.env) : void 0,\\n timeout: new TimeoutSettings(this._platform).launchTimeout(options)\\n };\\n return await this._wrapApiCall(async () => {\\n const browser = Browser.from((await this._channel.launch(launchOptions)).browser);\\n browser._connectToBrowserType(this, options, logger);\\n return browser;\\n });\\n }\\n async launchServer(options = {}) {\\n if (!this._serverLauncher) throw new Error(\\\"Launching server is not supported\\\");\\n options = { ...this._playwright._defaultLaunchOptions, ...options };\\n return await this._serverLauncher.launchServer(options);\\n }\\n async launchPersistentContext(userDataDir, options = {}) {\\n void userDataDir;\\n void options;\\n throw new Error(\\n \\\"browserType.launchPersistentContext() is not available in the QuickJS sandbox\\\"\\n );\\n }\\n async connect(optionsOrEndpoint, options) {\\n if (typeof optionsOrEndpoint === \\\"string\\\")\\n return await this._connect({ ...options, endpoint: optionsOrEndpoint });\\n assert(optionsOrEndpoint.wsEndpoint, \\\"options.wsEndpoint is required\\\");\\n return await this._connect({ ...options, endpoint: optionsOrEndpoint.wsEndpoint });\\n }\\n async _connect(params) {\\n void params;\\n throw new Error(\\\"browserType.connect() is not available in the QuickJS sandbox\\\");\\n }\\n async connectOverCDP(endpointURLOrOptions, options) {\\n if (typeof endpointURLOrOptions === \\\"string\\\")\\n return await this._connectOverCDP(endpointURLOrOptions, options);\\n const endpointURL = \\\"endpointURL\\\" in endpointURLOrOptions ? endpointURLOrOptions.endpointURL : endpointURLOrOptions.wsEndpoint;\\n assert(endpointURL, \\\"Cannot connect over CDP without wsEndpoint.\\\");\\n return await this.connectOverCDP(endpointURL, endpointURLOrOptions);\\n }\\n async _connectOverCDP(endpointURL, params = {}) {\\n if (this.name() !== \\\"chromium\\\")\\n throw new Error(\\\"Connecting over CDP is only supported in Chromium.\\\");\\n const headers = params.headers ? headersObjectToArray(params.headers) : void 0;\\n const result = await this._channel.connectOverCDP({\\n endpointURL,\\n headers,\\n slowMo: params.slowMo,\\n timeout: new TimeoutSettings(this._platform).timeout(params),\\n isLocal: params.isLocal\\n });\\n const browser = Browser.from(result.browser);\\n browser._connectToBrowserType(this, {}, params.logger);\\n if (result.defaultContext)\\n await this._instrumentation.runAfterCreateBrowserContext(\\n BrowserContext.from(result.defaultContext)\\n );\\n return browser;\\n }\\n async _connectOverCDPTransport(transport) {\\n if (this.name() !== \\\"chromium\\\")\\n throw new Error(\\\"Connecting over CDP is only supported in Chromium.\\\");\\n const result = await this._channel.connectOverCDPTransport({ transport });\\n const browser = Browser.from(result.browser);\\n browser._connectToBrowserType(this, {}, void 0);\\n if (result.defaultContext)\\n await this._instrumentation.runAfterCreateBrowserContext(\\n BrowserContext.from(result.defaultContext)\\n );\\n return browser;\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/clientInstrumentation.ts\\n function createInstrumentation() {\\n const listeners = [];\\n return new Proxy(\\n {},\\n {\\n get: (obj, prop) => {\\n if (typeof prop !== \\\"string\\\") return obj[prop];\\n if (prop === \\\"addListener\\\")\\n return (listener) => listeners.push(listener);\\n if (prop === \\\"removeListener\\\")\\n return (listener) => listeners.splice(listeners.indexOf(listener), 1);\\n if (prop === \\\"removeAllListeners\\\") return () => listeners.splice(0, listeners.length);\\n if (prop.startsWith(\\\"run\\\")) {\\n return async (...params) => {\\n for (const listener of listeners) await listener[prop]?.(...params);\\n };\\n }\\n if (prop.startsWith(\\\"on\\\")) {\\n return (...params) => {\\n for (const listener of listeners) listener[prop]?.(...params);\\n };\\n }\\n return obj[prop];\\n }\\n }\\n );\\n }\\n\\n // src/sandbox/forked-client/src/client/debugger.ts\\n var Debugger = class extends ChannelOwner {\\n _pausedDetails = [];\\n static from(channel) {\\n return channel._object;\\n }\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this._channel.on(\\\"pausedStateChanged\\\", ({ pausedDetails }) => {\\n this._pausedDetails = pausedDetails;\\n this.emit(Events.Debugger.PausedStateChanged);\\n });\\n }\\n async pause() {\\n await this._channel.pause();\\n }\\n async resume() {\\n await this._channel.resume();\\n }\\n async next() {\\n await this._channel.next();\\n }\\n async runTo(location) {\\n await this._channel.runTo({ location });\\n }\\n pausedDetails() {\\n return this._pausedDetails;\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/electron.ts\\n var Electron = class extends ChannelOwner {\\n static from(channel) {\\n return channel?._object;\\n }\\n };\\n var ElectronApplication = class extends ChannelOwner {\\n static from(channel) {\\n return channel?._object;\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/jsonPipe.ts\\n var JsonPipe = class extends ChannelOwner {\\n static from(channel) {\\n return channel?._object;\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/localUtils.ts\\n function unsupported3() {\\n throw new Error(\\\"LocalUtils is not available in the QuickJS sandbox\\\");\\n }\\n var LocalUtils = class extends ChannelOwner {\\n devices = {};\\n static from(channel) {\\n return channel?._object;\\n }\\n async connect() {\\n unsupported3();\\n }\\n async addStackToTracingNoReply() {\\n }\\n async zip() {\\n unsupported3();\\n }\\n async harOpen() {\\n unsupported3();\\n }\\n async harLookup() {\\n unsupported3();\\n }\\n async harClose() {\\n unsupported3();\\n }\\n async harUnzip() {\\n unsupported3();\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/selectors.ts\\n var Selectors = class {\\n _platform;\\n _selectorEngines = [];\\n _testIdAttributeName;\\n _contextsForSelectors = /* @__PURE__ */ new Set();\\n constructor(platform) {\\n this._platform = platform;\\n }\\n async register(name, script, options = {}) {\\n if (this._selectorEngines.some((engine) => engine.name === name))\\n throw new Error(`selectors.register: \\\"${name}\\\" selector engine has been already registered`);\\n const source = await evaluationScript(this._platform, script, void 0, false);\\n const selectorEngine = { ...options, name, source };\\n for (const context of this._contextsForSelectors)\\n await context._channel.registerSelectorEngine({ selectorEngine });\\n this._selectorEngines.push(selectorEngine);\\n }\\n setTestIdAttribute(attributeName) {\\n this._testIdAttributeName = attributeName;\\n setTestIdAttribute(attributeName);\\n for (const context of this._contextsForSelectors) {\\n context._options.testIdAttributeName = attributeName;\\n context._channel.setTestIdAttributeName({ testIdAttributeName: attributeName }).catch(() => {\\n });\\n }\\n }\\n _withSelectorOptions(options) {\\n return {\\n ...options,\\n selectorEngines: this._selectorEngines,\\n testIdAttributeName: this._testIdAttributeName\\n };\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/playwright.ts\\n var Playwright = class extends ChannelOwner {\\n _android;\\n _electron;\\n chromium;\\n firefox;\\n webkit;\\n devices;\\n selectors;\\n request;\\n errors;\\n // Instrumentation.\\n _defaultLaunchOptions;\\n _defaultContextTimeout;\\n _defaultContextNavigationTimeout;\\n constructor(parent, type, guid, initializer) {\\n super(parent, type, guid, initializer);\\n this.request = new APIRequest(this);\\n this.chromium = BrowserType.from(initializer.chromium);\\n this.chromium._playwright = this;\\n this.firefox = BrowserType.from(initializer.firefox);\\n this.firefox._playwright = this;\\n this.webkit = BrowserType.from(initializer.webkit);\\n this.webkit._playwright = this;\\n this._android = Android.from(initializer.android);\\n this._android._playwright = this;\\n this._electron = Electron.from(initializer.electron);\\n this._electron._playwright = this;\\n this.devices = this._connection.localUtils()?.devices ?? {};\\n this.selectors = new Selectors(this._connection._platform);\\n this.errors = { TimeoutError };\\n }\\n static from(channel) {\\n return channel._object;\\n }\\n _browserTypes() {\\n return [this.chromium, this.firefox, this.webkit];\\n }\\n _preLaunchedBrowser() {\\n const browser = Browser.from(this._initializer.preLaunchedBrowser);\\n browser._connectToBrowserType(\\n this[browser._name],\\n {},\\n void 0\\n );\\n return browser;\\n }\\n _allContexts() {\\n return this._browserTypes().flatMap((type) => [...type._contexts]);\\n }\\n _allPages() {\\n return this._allContexts().flatMap((context) => context.pages());\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/stream.ts\\n var Stream = class extends ChannelOwner {\\n static from(channel) {\\n return channel?._object;\\n }\\n stream() {\\n throw new Error(\\\"Readable streams are not available in the QuickJS sandbox\\\");\\n }\\n };\\n\\n // src/sandbox/forked-client/src/utils/isomorphic/colors.ts\\n var webColors = {\\n enabled: true,\\n reset: (text) => applyStyle(0, 0, text),\\n bold: (text) => applyStyle(1, 22, text),\\n dim: (text) => applyStyle(2, 22, text),\\n italic: (text) => applyStyle(3, 23, text),\\n underline: (text) => applyStyle(4, 24, text),\\n inverse: (text) => applyStyle(7, 27, text),\\n hidden: (text) => applyStyle(8, 28, text),\\n strikethrough: (text) => applyStyle(9, 29, text),\\n black: (text) => applyStyle(30, 39, text),\\n red: (text) => applyStyle(31, 39, text),\\n green: (text) => applyStyle(32, 39, text),\\n yellow: (text) => applyStyle(33, 39, text),\\n blue: (text) => applyStyle(34, 39, text),\\n magenta: (text) => applyStyle(35, 39, text),\\n cyan: (text) => applyStyle(36, 39, text),\\n white: (text) => applyStyle(37, 39, text),\\n gray: (text) => applyStyle(90, 39, text),\\n grey: (text) => applyStyle(90, 39, text)\\n };\\n var applyStyle = (open, close, text) => `\\\\x1B[${open}m${text}\\\\x1B[${close}m`;\\n\\n // src/sandbox/forked-client/quickjs-platform.ts\\n var noopZone = {\\n push: () => noopZone,\\n pop: () => noopZone,\\n run: (callback) => callback(),\\n data: () => void 0\\n };\\n function unsupported4(apiName) {\\n throw new Error(`${apiName} is not available in the QuickJS sandbox`);\\n }\\n function pseudoSha1(text) {\\n let hash = 2166136261;\\n for (let index = 0; index < text.length; index += 1) {\\n hash ^= text.charCodeAt(index);\\n hash = Math.imul(hash, 16777619);\\n }\\n return (hash >>> 0).toString(16).padStart(8, \\\"0\\\");\\n }\\n var quickjsPlatform = {\\n name: \\\"empty\\\",\\n boxedStackPrefixes: () => [],\\n calculateSha1: async (text) => pseudoSha1(text),\\n colors: webColors,\\n createGuid: () => \\\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\\\".replace(/[xy]/g, (token) => {\\n const value = Math.floor(Math.random() * 16);\\n const nibble = token === \\\"x\\\" ? value : value & 3 | 8;\\n return nibble.toString(16);\\n }),\\n defaultMaxListeners: () => 10,\\n env: {},\\n fs: () => unsupported4(\\\"fs\\\"),\\n inspectCustom: void 0,\\n isDebugMode: () => false,\\n isJSDebuggerAttached: () => false,\\n isLogEnabled: () => false,\\n isUnderTest: () => false,\\n log: () => {\\n },\\n path: () => unsupported4(\\\"path\\\"),\\n pathSeparator: \\\"/\\\",\\n showInternalStackFrames: () => false,\\n streamFile: () => unsupported4(\\\"streamFile\\\"),\\n streamReadable: () => unsupported4(\\\"streamReadable\\\"),\\n streamWritable: () => unsupported4(\\\"streamWritable\\\"),\\n zodToJsonSchema: () => unsupported4(\\\"zodToJsonSchema\\\"),\\n zones: {\\n empty: noopZone,\\n current: () => noopZone\\n }\\n };\\n\\n // src/sandbox/forked-client/src/client/connection.ts\\n var Root = class extends ChannelOwner {\\n constructor(connection) {\\n super(connection, \\\"Root\\\", \\\"\\\", {});\\n }\\n async initialize() {\\n return Playwright.from(\\n (await this._channel.initialize({\\n sdkLanguage: \\\"javascript\\\"\\n })).playwright\\n );\\n }\\n };\\n var DummyChannelOwner = class extends ChannelOwner {\\n };\\n var Connection = class extends EventEmitter {\\n _objects = /* @__PURE__ */ new Map();\\n onmessage = (message) => {\\n };\\n _lastId = 0;\\n _callbacks = /* @__PURE__ */ new Map();\\n _rootObject;\\n _closedError;\\n _isRemote = false;\\n _localUtils;\\n _rawBuffers = false;\\n // Some connections allow resolving in-process dispatchers.\\n toImpl;\\n _tracingCount = 0;\\n _instrumentation;\\n // Used from @playwright/test fixtures -> TODO remove?\\n headers;\\n constructor(platform = quickjsPlatform, localUtils, instrumentation, headers = []) {\\n super(platform);\\n this._instrumentation = instrumentation || createInstrumentation();\\n this._localUtils = localUtils;\\n this._rootObject = new Root(this);\\n this.headers = headers;\\n }\\n markAsRemote() {\\n this._isRemote = true;\\n }\\n isRemote() {\\n return this._isRemote;\\n }\\n useRawBuffers() {\\n this._rawBuffers = true;\\n }\\n rawBuffers() {\\n return this._rawBuffers;\\n }\\n localUtils() {\\n return this._localUtils;\\n }\\n async initializePlaywright() {\\n return await this._rootObject.initialize();\\n }\\n getObjectWithKnownName(guid) {\\n return this._objects.get(guid);\\n }\\n setIsTracing(isTracing) {\\n if (isTracing) this._tracingCount++;\\n else this._tracingCount--;\\n }\\n async sendMessageToServer(object, method, params, options) {\\n if (this._closedError) throw this._closedError;\\n if (object._wasCollected)\\n throw new Error(\\\"The object has been collected to prevent unbounded heap growth.\\\");\\n const guid = object._guid;\\n const type = object._type;\\n const id = ++this._lastId;\\n const message = { id, guid, method, params };\\n if (this._platform.isLogEnabled(\\\"channel\\\")) {\\n this._platform.log(\\\"channel\\\", \\\"SEND> \\\" + JSON.stringify(message));\\n }\\n const location = options.frames?.[0] ? {\\n file: options.frames[0].file,\\n line: options.frames[0].line,\\n column: options.frames[0].column\\n } : void 0;\\n const metadata = {\\n title: options.title,\\n location,\\n internal: options.internal,\\n stepId: options.stepId\\n };\\n if (this._tracingCount && options.frames && type !== \\\"LocalUtils\\\")\\n this._localUtils?.addStackToTracingNoReply({ callData: { stack: options.frames ?? [], id } }).catch(() => {\\n });\\n this._platform.zones.empty.run(() => this.onmessage({ ...message, metadata }));\\n return await new Promise(\\n (resolve, reject) => this._callbacks.set(id, { resolve, reject, title: options.title, type, method })\\n );\\n }\\n _validatorFromWireContext() {\\n return {\\n tChannelImpl: this._tChannelImplFromWire.bind(this),\\n binary: this._rawBuffers ? \\\"buffer\\\" : \\\"fromBase64\\\",\\n isUnderTest: () => this._platform.isUnderTest()\\n };\\n }\\n dispatch(message) {\\n if (this._closedError) return;\\n const { id, guid, method, params, result, error, log } = message;\\n if (id) {\\n if (this._platform.isLogEnabled(\\\"channel\\\"))\\n this._platform.log(\\\"channel\\\", \\\"<RECV \\\" + JSON.stringify(message));\\n const callback = this._callbacks.get(id);\\n if (!callback) throw new Error(`Cannot find command to respond: ${id}`);\\n this._callbacks.delete(id);\\n if (error && !result) {\\n const parsedError = parseError(error);\\n rewriteErrorMessage(parsedError, parsedError.message + formatCallLog(this._platform, log));\\n callback.reject(parsedError);\\n } else {\\n const validator2 = findValidator(callback.type, callback.method, \\\"Result\\\");\\n callback.resolve(validator2(result, \\\"\\\", this._validatorFromWireContext()));\\n }\\n return;\\n }\\n if (this._platform.isLogEnabled(\\\"channel\\\"))\\n this._platform.log(\\\"channel\\\", \\\"<EVENT \\\" + JSON.stringify(message));\\n if (method === \\\"__create__\\\") {\\n this._createRemoteObject(guid, params.type, params.guid, params.initializer);\\n return;\\n }\\n const object = this._objects.get(guid);\\n if (!object) throw new Error(`Cannot find object to \\\"${method}\\\": ${guid}`);\\n if (method === \\\"__adopt__\\\") {\\n const child = this._objects.get(params.guid);\\n if (!child) throw new Error(`Unknown new child: ${params.guid}`);\\n object._adopt(child);\\n return;\\n }\\n if (method === \\\"__dispose__\\\") {\\n object._dispose(params.reason);\\n return;\\n }\\n const validator = findValidator(object._type, method, \\\"Event\\\");\\n object._channel.emit(method, validator(params, \\\"\\\", this._validatorFromWireContext()));\\n }\\n close(cause) {\\n if (this._closedError) return;\\n this._closedError = new TargetClosedError(cause);\\n for (const callback of this._callbacks.values()) callback.reject(this._closedError);\\n this._callbacks.clear();\\n this.emit(\\\"close\\\");\\n }\\n _tChannelImplFromWire(names, arg, path, context) {\\n if (arg && typeof arg === \\\"object\\\" && typeof arg.guid === \\\"string\\\") {\\n const object = this._objects.get(arg.guid);\\n if (!object) throw new Error(`Object with guid ${arg.guid} was not bound in the connection`);\\n if (names !== \\\"*\\\" && !names.includes(object._type))\\n throw new ValidationError(`${path}: expected channel ${names.toString()}`);\\n return object._channel;\\n }\\n throw new ValidationError(`${path}: expected channel ${names.toString()}`);\\n }\\n _createRemoteObject(parentGuid, type, guid, initializer) {\\n const parent = this._objects.get(parentGuid);\\n if (!parent) throw new Error(`Cannot find parent object ${parentGuid} to create ${guid}`);\\n let result;\\n const validator = findValidator(type, \\\"\\\", \\\"Initializer\\\");\\n initializer = validator(initializer, \\\"\\\", this._validatorFromWireContext());\\n switch (type) {\\n case \\\"Android\\\":\\n result = new Android(parent, type, guid, initializer);\\n break;\\n case \\\"AndroidSocket\\\":\\n result = new AndroidSocket(parent, type, guid, initializer);\\n break;\\n case \\\"AndroidDevice\\\":\\n result = new AndroidDevice(parent, type, guid, initializer);\\n break;\\n case \\\"APIRequestContext\\\":\\n result = new APIRequestContext(parent, type, guid, initializer);\\n break;\\n case \\\"Artifact\\\":\\n result = new Artifact(parent, type, guid, initializer);\\n break;\\n case \\\"BindingCall\\\":\\n result = new BindingCall(parent, type, guid, initializer);\\n break;\\n case \\\"Browser\\\":\\n result = new Browser(parent, type, guid, initializer);\\n break;\\n case \\\"BrowserContext\\\":\\n result = new BrowserContext(parent, type, guid, initializer);\\n break;\\n case \\\"BrowserType\\\":\\n result = new BrowserType(parent, type, guid, initializer);\\n break;\\n case \\\"CDPSession\\\":\\n result = new CDPSession(parent, type, guid, initializer);\\n break;\\n case \\\"Debugger\\\":\\n result = new Debugger(parent, type, guid, initializer);\\n break;\\n case \\\"Dialog\\\":\\n result = new Dialog(parent, type, guid, initializer);\\n break;\\n case \\\"Disposable\\\":\\n result = new DisposableObject(parent, type, guid, initializer);\\n break;\\n case \\\"Electron\\\":\\n result = new Electron(parent, type, guid, initializer);\\n break;\\n case \\\"ElectronApplication\\\":\\n result = new ElectronApplication(parent, type, guid, initializer);\\n break;\\n case \\\"ElementHandle\\\":\\n result = new ElementHandle(parent, type, guid, initializer);\\n break;\\n case \\\"Frame\\\":\\n result = new Frame(parent, type, guid, initializer);\\n break;\\n case \\\"JSHandle\\\":\\n result = new JSHandle(parent, type, guid, initializer);\\n break;\\n case \\\"JsonPipe\\\":\\n result = new JsonPipe(parent, type, guid, initializer);\\n break;\\n case \\\"LocalUtils\\\":\\n result = new LocalUtils(parent, type, guid, initializer);\\n if (!this._localUtils) this._localUtils = result;\\n break;\\n case \\\"Page\\\":\\n result = new Page(parent, type, guid, initializer);\\n break;\\n case \\\"Playwright\\\":\\n result = new Playwright(parent, type, guid, initializer);\\n break;\\n case \\\"Request\\\":\\n result = new Request(parent, type, guid, initializer);\\n break;\\n case \\\"Response\\\":\\n result = new Response(parent, type, guid, initializer);\\n break;\\n case \\\"Route\\\":\\n result = new Route(parent, type, guid, initializer);\\n break;\\n case \\\"Stream\\\":\\n result = new Stream(parent, type, guid, initializer);\\n break;\\n case \\\"SocksSupport\\\":\\n result = new DummyChannelOwner(parent, type, guid, initializer);\\n break;\\n case \\\"Tracing\\\":\\n result = new Tracing(parent, type, guid, initializer);\\n break;\\n case \\\"WebSocket\\\":\\n result = new WebSocket(parent, type, guid, initializer);\\n break;\\n case \\\"WebSocketRoute\\\":\\n result = new WebSocketRoute(parent, type, guid, initializer);\\n break;\\n case \\\"Worker\\\":\\n result = new Worker(parent, type, guid, initializer);\\n break;\\n case \\\"WritableStream\\\":\\n result = new WritableStream(parent, type, guid, initializer);\\n break;\\n default:\\n throw new Error(\\\"Missing type \\\" + type);\\n }\\n return result;\\n }\\n };\\n function formatCallLog(platform, log) {\\n if (!log || !log.some((l) => !!l)) return \\\"\\\";\\n return `\\nCall log:\\n${platform.colors.dim(log.join(\\\"\\\\n\\\"))}\\n`;\\n }\\n return __toCommonJS(bundle_entry_exports);\\n})();\\n\";\n", "import { spawn } from \"node:child_process\";\nimport { canaryDir } from \"../paths.js\";\nimport { ensureDaemonExtracted } from \"./extract.js\";\nimport { npmCommand } from \"./npm.js\";\n\n// Install Playwright + runtime deps under ~/.canary/. Extracts the\n// embedded daemon bundle, then `npm install` + `playwright install chromium`.\n// Shared by the `canary` and `canary-browser` CLIs.\nexport async function installDaemonRuntime(): Promise<number> {\n const base = canaryDir();\n await ensureDaemonExtracted();\n const npm = npmCommand();\n await runInstall(npm, [\"install\"], base);\n await runInstall(\n npm,\n [\"exec\", \"--\", \"playwright\", \"install\", \"chromium\"],\n base\n );\n return 0;\n}\n\nfunction runInstall(\n program: string,\n args: string[],\n cwd: string\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(program, args, {\n cwd,\n stdio: \"inherit\",\n windowsHide: true,\n });\n child.on(\"error\", (err) => {\n const nodeErr = err as NodeJS.ErrnoException;\n if (nodeErr.code === \"ENOENT\") {\n reject(\n new Error(\n `Could not find \\`${program}\\` in PATH while setting up the embedded daemon runtime in ${cwd}. Install Node.js/npm and re-run the install command.`\n )\n );\n return;\n }\n reject(\n new Error(\n `Failed to run \\`${program} ${args.join(\" \")}\\` in ${cwd}: ${err.message}`\n )\n );\n });\n child.on(\"exit\", (code, signal) => {\n if (code === 0) {\n resolve();\n return;\n }\n if (signal) {\n reject(\n new Error(`\\`${program} ${args.join(\" \")}\\` terminated by signal`)\n );\n return;\n }\n reject(\n new Error(\n `\\`${program} ${args.join(\" \")}\\` failed with exit code ${code ?? \"?\"}`\n )\n );\n });\n });\n}\n", "import { accessSync, constants } from \"node:fs\";\nimport { delimiter, join } from \"node:path\";\n\n// Resolve `npm` (or `npm.cmd` on Windows) from PATH. We resolve manually\n// rather than passing `shell: true` to spawn so we avoid argv quoting\n// bugs on Windows.\nexport function npmCommand(): string {\n if (process.platform === \"win32\") {\n return findInPath(\"npm.cmd\") ?? findInPath(\"npm\") ?? \"npm.cmd\";\n }\n return findInPath(\"npm\") ?? \"npm\";\n}\n\nfunction findInPath(name: string): string | null {\n const pathEnv = process.env.PATH ?? \"\";\n for (const entry of pathEnv.split(delimiter)) {\n if (!entry) {\n continue;\n }\n const candidate = join(entry, name);\n try {\n accessSync(candidate, constants.F_OK | constants.X_OK);\n return candidate;\n } catch {\n // try next entry\n }\n }\n return null;\n}\n", "import { readFile } from \"node:fs/promises\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport { isDaemonRunning } from \"../ipc/connect.js\";\nimport { logger } from \"../logger.js\";\nimport { daemonPidPath } from \"../paths.js\";\nimport { findDaemonCommand } from \"./entry.js\";\nimport { embeddedRuntimeInstalled } from \"./extract.js\";\nimport { spawnDaemon } from \"./spawn.js\";\n\nconst log = logger.child({ component: \"daemon-supervisor\" });\n\nconst STARTUP_DEADLINE_MS = 5000;\nconst POLL_INTERVAL_MS = 100;\n\n// Returns the daemon PID from ~/.canary/daemon.pid, or null if the\n// file is missing/unreadable/unparseable.\nexport async function currentDaemonPid(): Promise<number | null> {\n try {\n const raw = await readFile(daemonPidPath(), \"utf8\");\n const pid = Number.parseInt(raw.trim(), 10);\n return Number.isFinite(pid) && pid > 0 ? pid : null;\n } catch {\n return null;\n }\n}\n\n// Throws if the daemon cannot be brought up within STARTUP_DEADLINE_MS.\nexport async function ensureDaemonRunning(): Promise<void> {\n if (await isDaemonRunning()) {\n log.debug(\"daemon already running\");\n return;\n }\n\n const command = await findDaemonCommand();\n if (\n command.requiresRuntimeInstall &&\n !(await embeddedRuntimeInstalled(command.workdir))\n ) {\n throw new Error(\n \"Embedded daemon dependencies are missing. Run `canary install` first.\"\n );\n }\n\n log.debug(\n { program: command.program, workdir: command.workdir },\n \"spawning daemon\"\n );\n spawnDaemon(command);\n\n const deadline = Date.now() + STARTUP_DEADLINE_MS;\n while (Date.now() < deadline) {\n await sleep(POLL_INTERVAL_MS);\n if (await isDaemonRunning()) {\n log.debug(\"daemon started\");\n return;\n }\n }\n throw new Error(\"Daemon failed to start within 5 seconds\");\n}\n\n// Waits up to `timeoutMs` for the daemon to stop accepting connections.\nexport async function waitForDaemonExit(\n _pid: number | null,\n timeoutMs: number\n): Promise<void> {\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n if (!(await isDaemonRunning())) {\n return;\n }\n await sleep(POLL_INTERVAL_MS);\n }\n const seconds = Math.round(timeoutMs / 1000);\n throw new Error(`Daemon failed to stop within ${seconds} seconds`);\n}\n", "import net from \"node:net\";\nimport { createInterface } from \"node:readline\";\nimport type { Request, Response } from \"@usecanary/protocol\";\nimport { daemonEndpoint } from \"../paths.js\";\n\n// 5s write timeout on the socket.\nconst WRITE_TIMEOUT_MS = 5000;\n// Generous frame ceiling so large screenshots / result payloads don't truncate.\nconst MAX_LINE_BYTES = 64 * 1024 * 1024;\n\nexport class DaemonConnectionClosed extends Error {\n constructor() {\n super(\"Daemon connection closed unexpectedly\");\n this.name = \"DaemonConnectionClosed\";\n }\n}\n\nexport interface DaemonConnection {\n reader: AsyncIterableIterator<string>;\n socket: net.Socket;\n}\n\nexport async function connectToDaemon(): Promise<DaemonConnection> {\n const endpoint = daemonEndpoint();\n const socket = net.createConnection({ path: endpoint });\n\n await new Promise<void>((resolve, reject) => {\n const onConnect = () => {\n socket.removeListener(\"error\", onError);\n resolve();\n };\n const onError = (err: Error) => {\n socket.removeListener(\"connect\", onConnect);\n reject(err);\n };\n socket.once(\"connect\", onConnect);\n socket.once(\"error\", onError);\n });\n\n socket.setNoDelay(true);\n socket.setTimeout(WRITE_TIMEOUT_MS);\n\n return { socket, reader: readLines(socket) };\n}\n\nexport async function isDaemonRunning(): Promise<boolean> {\n try {\n const conn = await connectToDaemon();\n conn.socket.destroy();\n return true;\n } catch {\n return false;\n }\n}\n\n// Newline-delimited JSON framing.\nexport async function sendMessage(\n socket: net.Socket,\n message: Request\n): Promise<void> {\n const json = JSON.stringify(message);\n await write(socket, json);\n await write(socket, \"\\n\");\n}\n\nfunction write(socket: net.Socket, data: string): Promise<void> {\n return new Promise((resolve, reject) => {\n socket.write(data, (err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n}\n\nasync function* readLines(socket: net.Socket): AsyncIterableIterator<string> {\n const rl = createInterface({\n input: socket,\n crlfDelay: Number.POSITIVE_INFINITY,\n });\n let bytes = 0;\n try {\n for await (const line of rl) {\n bytes += line.length;\n if (bytes > MAX_LINE_BYTES) {\n throw new Error(`Daemon message exceeds ${MAX_LINE_BYTES} bytes`);\n }\n yield line;\n }\n } finally {\n rl.close();\n }\n}\n\n// Renderer for the daemon's `result` payload \u2014 supplied by callers so the\n// IPC layer doesn't need to know about result formatting.\nexport type ResultRenderer = (\n data: unknown,\n stdout: NodeJS.WritableStream\n) => void;\n\nexport interface StreamHandlers {\n // Called with the daemon's terminal `error` message (if any), separately from\n // the merged stderr stream. Lets callers reliably detect a daemon-level\n // rejection without substring-matching teed stderr (which also carries the\n // executed script's own stderr output).\n onError?: (message: string) => void;\n renderResult?: ResultRenderer;\n stderr: NodeJS.WritableStream;\n stdout: NodeJS.WritableStream;\n}\n\n// Stream responses until `complete` or `error`. Returns the process exit\n// code (0 for complete, 1 for error).\nexport async function streamResponses(\n conn: DaemonConnection,\n handlers: StreamHandlers\n): Promise<number> {\n let sawTerminal = false;\n try {\n for await (const line of conn.reader) {\n let message: Response;\n try {\n message = JSON.parse(line) as Response;\n } catch (err) {\n throw new Error(`malformed response from daemon: ${describe(err)}`);\n }\n\n switch (message.type) {\n case \"stdout\":\n handlers.stdout.write(message.data);\n break;\n case \"stderr\":\n handlers.stderr.write(message.data);\n break;\n case \"result\":\n handlers.renderResult?.(message.data, handlers.stdout);\n break;\n case \"complete\":\n sawTerminal = true;\n return 0;\n case \"error\": {\n sawTerminal = true;\n const text = message.message ?? \"Unknown daemon error\";\n handlers.onError?.(text);\n handlers.stderr.write(`${text}\\n`);\n return 1;\n }\n default:\n // Unknown message types are ignored (matches Rust + Go).\n break;\n }\n }\n } finally {\n conn.socket.destroy();\n }\n\n if (!sawTerminal) {\n throw new DaemonConnectionClosed();\n }\n return 0;\n}\n\n// Convenience helper: open, send, stream, return exit code.\nexport async function sendRequest(\n message: Request,\n renderResult: ResultRenderer | undefined,\n stdout: NodeJS.WritableStream = process.stdout,\n stderr: NodeJS.WritableStream = process.stderr,\n onError?: (message: string) => void\n): Promise<number> {\n const conn = await connectToDaemon();\n try {\n await sendMessage(conn.socket, message);\n } catch (err) {\n conn.socket.destroy();\n throw err;\n }\n return await streamResponses(conn, { stdout, stderr, renderResult, onError });\n}\n\nfunction describe(err: unknown): string {\n return err instanceof Error ? err.message : String(err);\n}\n\nexport type { BrowserSummary, StatusSummary } from \"@usecanary/protocol\";\n", "import type { DestinationStream, Level, Logger, LoggerOptions } from \"pino\";\nimport pino from \"pino\";\n\n/** A pino log level, including the special \"silent\" sentinel. */\nexport type LogLevel = Level | \"silent\";\n\nconst VALID_LEVELS: ReadonlySet<string> = new Set([\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\",\n \"fatal\",\n \"silent\",\n]);\n\nexport interface CreateLoggerOptions {\n /** Extra static bindings merged into every record (via a child logger). */\n base?: Record<string, unknown>;\n /**\n * Destination file path or file descriptor. Used only when `stream` is not\n * provided. Defaults to fd 2 (stderr) so stdout stays clean for program output.\n */\n destination?: string | number;\n /** Level used when neither `level` nor `CANARY_LOG_LEVEL` is set. Default: \"info\". */\n fallbackLevel?: LogLevel;\n /** Explicit level. Overrides the `CANARY_LOG_LEVEL` environment variable. */\n level?: LogLevel;\n /** Base `name` binding attached to every record (e.g. \"daemon\", \"canary\"). */\n name?: string;\n /** pino redaction paths, e.g. `[\"req.headers.authorization\"]`. */\n redact?: string[];\n /**\n * Pre-built destination stream (e.g. a pino-pretty stream). Takes precedence\n * over `destination`. Lets callers opt into pretty output without this package\n * depending on pino-pretty (and without pulling worker-thread transports into\n * an esbuild bundle).\n */\n stream?: DestinationStream;\n /** Synchronous writes. Default: false (buffered, faster). */\n sync?: boolean;\n}\n\n/** Resolve the effective log level from options then `CANARY_LOG_LEVEL` then fallback. */\nexport function resolveLevel(opts: CreateLoggerOptions = {}): LogLevel {\n if (opts.level) {\n return opts.level;\n }\n const fromEnv = process.env.CANARY_LOG_LEVEL?.trim().toLowerCase();\n if (fromEnv && VALID_LEVELS.has(fromEnv)) {\n return fromEnv as LogLevel;\n }\n return opts.fallbackLevel ?? \"info\";\n}\n\n/**\n * Create a structured pino logger.\n *\n * Worker-free by design: it uses `pino.destination()` rather than a transport,\n * so it survives esbuild bundling in both the daemon and the CLI. Pretty-printing\n * is the caller's responsibility via `stream` (keeps this package's dependency\n * surface to just pino).\n *\n * Defaults to stderr (fd 2) so structured logs never pollute a program's stdout.\n */\nexport function createLogger(opts: CreateLoggerOptions = {}): Logger {\n const options: LoggerOptions = {\n level: resolveLevel(opts),\n timestamp: pino.stdTimeFunctions.isoTime,\n // Serialize `err`/`error` bindings into structured { type, message, stack }.\n serializers: { err: pino.stdSerializers.err },\n formatters: {\n // Log the level name (\"info\") instead of the numeric code (30).\n level: (label) => ({ level: label }),\n },\n };\n if (opts.name) {\n options.name = opts.name;\n }\n if (opts.redact) {\n options.redact = opts.redact;\n }\n\n const stream =\n opts.stream ??\n pino.destination({\n dest: opts.destination ?? 2,\n sync: opts.sync ?? false,\n mkdir: true,\n });\n\n const logger = pino(options, stream);\n return opts.base ? logger.child(opts.base) : logger;\n}\n\nexport type { DestinationStream, Level, Logger } from \"pino\";\n", "import { createLogger, type Logger } from \"@usecanary/logger\";\n\n// Package-local diagnostics logger. Structured (no pino-pretty) so the package\n// stays free of any app-specific logging concerns and survives esbuild bundling\n// in consumers. Goes to stderr (fd 2) so stdout stays clean for machine output.\n// Quiet by default (warn); CANARY_LOG_LEVEL raises it. `sync: true` guarantees\n// records flush before a CLI calls process.exit().\nexport const logger: Logger = createLogger({\n destination: 2,\n fallbackLevel: \"warn\",\n name: \"daemon-client\",\n sync: true,\n});\n", "import { spawn } from \"node:child_process\";\nimport { logger } from \"../logger.js\";\n\nexport interface DaemonCommand {\n args: string[];\n program: string;\n requiresRuntimeInstall: boolean;\n workdir: string;\n}\n\n// Spawn the daemon as a fully detached background process.\n//\n// - `detached: true` on POSIX calls setsid(2) on the child.\n// - `detached: true` on Windows sets DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP.\n// - `stdio: \"ignore\"` replaces stdin/stdout/stderr with /dev/null equivalents.\n// - `windowsHide: true` prevents a flash console window on GUI parents.\n// - `child.unref()` lets the CLI exit without waiting for the daemon.\nexport function spawnDaemon(command: DaemonCommand): void {\n const child = spawn(command.program, command.args, {\n cwd: command.workdir,\n detached: true,\n stdio: \"ignore\",\n windowsHide: true,\n });\n child.on(\"error\", (err) => {\n // Errors are otherwise surfaced via the socket-poll loop in lifecycle.ts \u2014\n // if the spawn fails the daemon never comes up and ensureRunning() returns\n // \"Daemon failed to start within 5 seconds\". Log the underlying cause.\n logger.error({ err }, \"daemon process spawn error\");\n });\n child.unref();\n}\n", "import {\n createLogger,\n type DestinationStream,\n type Logger,\n type LogLevel,\n} from \"@usecanary/logger\";\nimport pretty from \"pino-pretty\";\n\n// `${prefix}-${unix_millis}-${pid}` \u2014 correlates a daemon request/response pair.\nexport function requestId(prefix: string): string {\n return `${prefix}-${Date.now()}-${process.pid}`;\n}\n\n// Right-pad to `width` for fixed-width table columns.\nexport function pad(value: string, width: number): string {\n return value.length >= width\n ? value\n : value + \" \".repeat(width - value.length);\n}\n\nexport function formatDurationMs(durationMs: number): string {\n if (durationMs < 1000) {\n return `${durationMs}ms`;\n }\n if (durationMs < 60_000) {\n return `${(durationMs / 1000).toFixed(1)}s`;\n }\n const totalSeconds = Math.floor(durationMs / 1000);\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds % 60;\n return `${minutes}m ${seconds}s`;\n}\n\n// Pretty-print a command `result` payload: null/undefined skipped, strings\n// emitted unquoted, everything else as indented JSON.\nexport function renderJsonResult(\n data: unknown,\n stdout: NodeJS.WritableStream\n): void {\n if (data === null || data === undefined) {\n return;\n }\n if (typeof data === \"string\") {\n stdout.write(`${data}\\n`);\n return;\n }\n stdout.write(`${JSON.stringify(data, null, 2)}\\n`);\n}\n\n// `--json` (or CANARY_LOG_JSON=1) forces machine-readable JSON on stderr,\n// overriding the interactive pretty default. Peeked from argv because the root\n// logger is constructed before the CLI framework parses options.\nfunction wantsJsonLogs(): boolean {\n return process.argv.includes(\"--json\") || process.env.CANARY_LOG_JSON === \"1\";\n}\n\nfunction resolveCliLevel(): LogLevel | undefined {\n if (process.env.CANARY_LOG_LEVEL) {\n return; // defer to createLogger's env handling\n }\n if (process.argv.includes(\"--verbose\") || process.argv.includes(\"-v\")) {\n return \"debug\";\n }\n return; // defer to fallbackLevel\n}\n\nfunction buildStream(): DestinationStream | undefined {\n if (wantsJsonLogs()) {\n return;\n }\n if (process.stderr.isTTY && !process.env.CI) {\n return pretty({\n colorize: true,\n destination: 2,\n ignore: \"pid,hostname\",\n sync: true,\n translateTime: \"SYS:HH:MM:ss.l\",\n }) as unknown as DestinationStream;\n }\n return;\n}\n\n// Root CLI logger shared by the canary CLIs. Diagnostics go to stderr so stdout\n// stays clean for machine-readable output. Quiet by default (warn);\n// `--verbose`/`-v` or CANARY_LOG_LEVEL raises it, `--json` forces structured\n// output. `sync: true` flushes records before the CLI calls process.exit().\nexport function createRootLogger(name: string): Logger {\n return createLogger({\n destination: 2,\n fallbackLevel: \"warn\",\n level: resolveCliLevel(),\n name,\n stream: buildStream(),\n sync: true,\n });\n}\n", "import { pad } from \"@usecanary/cli-kit\";\nimport type { BrowserSummary, StatusSummary } from \"@usecanary/protocol\";\nimport { formatDurationMs } from \"../util/format.js\";\n\nexport { renderJsonResult } from \"@usecanary/cli-kit\";\n\n// Renders `browsers` result data to the given writer.\nexport function renderBrowsersResult(\n raw: unknown,\n stdout: NodeJS.WritableStream\n): void {\n const browsers = raw as BrowserSummary[];\n if (!Array.isArray(browsers) || browsers.length === 0) {\n stdout.write(\"No browsers.\\n\");\n return;\n }\n\n const pageValues = browsers.map((b) =>\n b.pages.length === 0 ? \"-\" : b.pages.join(\", \")\n );\n\n const nameWidth = Math.max(\n \"NAME\".length,\n ...browsers.map((b) => b.name.length)\n );\n const typeWidth = Math.max(\n \"TYPE\".length,\n ...browsers.map((b) => b.type.length)\n );\n const statusWidth = Math.max(\n \"STATUS\".length,\n ...browsers.map((b) => b.status.length)\n );\n\n stdout.write(\n `${pad(\"NAME\", nameWidth)} ${pad(\"TYPE\", typeWidth)} ${pad(\"STATUS\", statusWidth)} PAGES\\n`\n );\n\n for (let i = 0; i < browsers.length; i += 1) {\n const b = browsers[i];\n if (!b) {\n continue;\n }\n stdout.write(\n `${pad(b.name, nameWidth)} ${pad(b.type, typeWidth)} ${pad(\n b.status,\n statusWidth\n )} ${pageValues[i]}\\n`\n );\n }\n}\n\n// Renders `status` result data.\nexport function renderStatusResult(\n raw: unknown,\n stdout: NodeJS.WritableStream\n): void {\n const status = raw as StatusSummary;\n stdout.write(`PID: ${status.pid}\\n`);\n stdout.write(`Uptime: ${formatDurationMs(status.uptimeMs)}\\n`);\n stdout.write(`Browsers: ${status.browserCount}\\n`);\n stdout.write(`Socket: ${status.socketPath}\\n`);\n if (status.browsers.length > 0) {\n const managed = status.browsers\n .map((b) => `${b.name} (${b.type}, ${b.status})`)\n .join(\", \");\n stdout.write(`Managed: ${managed}\\n`);\n }\n}\n", "import { ensureDaemonRunning, sendRequest } from \"@usecanary/daemon-client\";\nimport { requestId } from \"../util/request-id.js\";\nimport { renderBrowsersResult } from \"./render.js\";\n\nexport async function browsersCommand(): Promise<number> {\n await ensureDaemonRunning();\n return sendRequest(\n { id: requestId(\"browsers\"), type: \"browsers\" },\n renderBrowsersResult\n );\n}\n", "// Resolved global flag set passed to every subcommand handler.\nexport interface GlobalFlags {\n browser: string;\n // Undefined means flag was absent. A string means the flag was supplied\n // (possibly the \"auto\" sentinel when bare `--connect` was used).\n connect: string | undefined;\n headless: boolean;\n ignoreHttpsErrors: boolean;\n // Paths to JS files that the daemon should pre-load into every page on the\n // managed browser context. Env entries first, then flag occurrences in argv\n // order. Files are read in runScript() before the execute request is sent.\n injectScriptPaths: string[];\n timeout: number;\n}\n\nexport const CONNECT_AUTO_SENTINEL = \"auto\";\nexport const DEFAULT_BROWSER = \"default\";\nexport const DEFAULT_TIMEOUT_SECS = 30;\n", "// AUTO-GENERATED by scripts/embed-assets.mjs. DO NOT EDIT.\n// Source: src/assets/llm-guide.txt.\n// Regenerate by running `pnpm prebuild`.\n/* eslint-disable */\n\nexport const LLM_GUIDE: string = \"LLM USAGE GUIDE:\\n Write small, focused scripts. Each script should do ONE thing: navigate, click, fill, or check.\\n End each script by logging the state you need for the next decision.\\n Use descriptive page names like \\\"login\\\", \\\"checkout\\\", or \\\"results\\\" instead of \\\"page1\\\".\\n Named pages from browser.getPage(\\\"name\\\") persist between script runs, so you usually do not need to re-navigate.\\n Inside page.evaluate(...), write plain JavaScript only - no TypeScript syntax in the browser context.\\n On Windows/PowerShell, use here-strings to pipe multiline scripts:\\n @\\\"\\n const page = await browser.getPage(\\\"main\\\");\\n console.log(await page.title());\\n \\\"@ | canary-browser --connect\\n\\n Quick inspection:\\n canary-browser --connect <<'EOF'\\n const tabs = await browser.listPages();\\n console.log(JSON.stringify(tabs, null, 2));\\n EOF\\n\\n canary-browser --connect <<'EOF'\\n const page = await browser.getPage(\\\"TARGET_ID_HERE\\\");\\n console.log(JSON.stringify({\\n url: page.url(),\\n title: await page.title(),\\n }, null, 2));\\n EOF\\n\\n AI snapshots for element discovery:\\n canary-browser <<'EOF'\\n const page = await browser.getPage(\\\"main\\\");\\n const result = await page.snapshotForAI();\\n console.log(result.full);\\n // Returns { full: string, incremental?: string }.\\n // Optional args: { track?: string, depth?: number, timeout?: number }.\\n // Read result.full to identify the right element.\\n // Then interact with it using Playwright:\\n // await page.getByRole(\\\"button\\\", { name: \\\"Continue\\\" }).click();\\n // Re-run page.snapshotForAI({ track: \\\"main\\\" }) after the page changes.\\n EOF\\n\\n Choosing your approach:\\n Unknown pages: use page.snapshotForAI() first to discover the page, then interact based on what you find.\\n Known pages/selectors: skip the snapshot and use direct Playwright selectors like page.click(), page.fill(), or page.locator() for faster, more reliable automation.\\n\\n Screenshots for visual state:\\n canary-browser <<'EOF'\\n const page = await browser.getPage(\\\"main\\\");\\n const buf = await page.screenshot();\\n const path = await saveScreenshot(buf, \\\"debug.png\\\");\\n console.log(path);\\n EOF\\n\\n Waiting patterns:\\n canary-browser <<'EOF'\\n const page = await browser.getPage(\\\"search-results\\\");\\n await page.waitForSelector(\\\".results\\\");\\n await page.waitForURL(\\\"**/success\\\");\\n console.log(JSON.stringify({\\n url: page.url(),\\n title: await page.title(),\\n }, null, 2));\\n EOF\\n\\n Dev server navigation:\\n For local dev servers (Next.js, Vite, etc.), prefer:\\n await page.goto(url, { waitUntil: \\\"domcontentloaded\\\" });\\n The default \\\"load\\\" wait can hang on HMR, streaming, or other long-lived dev-server connections.\\n Use \\\"load\\\" only when you specifically need every subresource to finish loading.\\n\\n Error recovery:\\n If a script fails, the page usually stays where it stopped.\\n Reconnect to the same page name, take a screenshot, and log the URL/title:\\n canary-browser <<'EOF'\\n const page = await browser.getPage(\\\"checkout\\\");\\n const path = await saveScreenshot(await page.screenshot(), \\\"debug.png\\\");\\n console.log(JSON.stringify({\\n screenshot: path,\\n url: page.url(),\\n title: await page.title(),\\n }, null, 2));\\n EOF\\n\\n Common Playwright Page methods:\\n page.goto(url, { waitUntil: \\\"domcontentloaded\\\" })\\n Navigate to a URL; prefer this on dev servers\\n page.title() Get the current page title\\n page.url() Get the current URL\\n page.snapshotForAI(options) Get an AI-optimized snapshot; returns { full, incremental? }\\n Options: { track?: string, depth?: number, timeout?: number }\\n page.getByRole(role, { name }) Target elements discovered from the snapshot\\n page.textContent(selector) Get the text content of an element\\n page.innerHTML(selector) Get the inner HTML of an element\\n page.fill(selector, value) Fill an input field\\n page.click(selector) Click an element\\n page.type(selector, text) Type text character by character\\n page.press(selector, key) Press a key such as Enter or Tab\\n page.waitForSelector(selector) Wait for an element to appear\\n page.waitForURL(url) Wait for navigation to a URL\\n page.screenshot() Capture a screenshot buffer; save it with saveScreenshot(...)\\n page.$$eval(selector, fn) Run a function on all matching elements\\n page.$eval(selector, fn) Run a function on the first matching element\\n page.evaluate(fn) Run JavaScript in the page context (plain JS only)\\n page.locator(selector) Create a locator for chained actions\\n\\n Connecting to a running Chrome instance:\\n Auto-discover Chrome with debugging enabled:\\n canary-browser --connect <<'EOF'\\n const page = await browser.getPage(\\\"main\\\");\\n console.log(await page.title());\\n EOF\\n\\n Connect to a specific CDP endpoint:\\n canary-browser --connect http://localhost:9222 <<'EOF'\\n const page = await browser.getPage(\\\"main\\\");\\n console.log(await page.title());\\n EOF\\n\\n To launch Chrome with debugging enabled:\\n chrome.exe --remote-debugging-port=9222\\n google-chrome --remote-debugging-port=9222\\n\\n Or visit chrome://inspect/#remote-debugging to configure.\\n\\n Tips:\\n - Use console.log(JSON.stringify(...)) for structured output.\\n - Prefer page.snapshotForAI() for structure; use screenshots when visual layout or styling matters.\\n - Keep page names stable across scripts so you can resume work after failures.\\n - Each --browser name maps to a separate daemon-managed browser instance.\\n - Use --connect to attach to an existing browser; omit the URL to auto-discover Chrome with debugging enabled.\\n - Use short timeouts (--timeout 10) so scripts fail fast instead of hanging on missing elements.\\n - Add --headless for unattended automation; omit it when you want to watch the browser window.\\n\";\n", "// CLI_LONG_ABOUT prose shown in `--help`.\nexport const CLI_LONG_ABOUT = `Dev Browser is a CLI for controlling local or external browsers with JavaScript scripts.\nScripts run in a sandboxed QuickJS runtime (not Node.js). Top-level \\`await\\` is\navailable, along with a preconnected \\`browser\\` global and standard \\`console\\` output.\nA background daemon starts automatically when needed and manages browser instances,\nnamed pages, and CDP connections.\n\nSANDBOX ENVIRONMENT:\n Scripts execute inside a QuickJS WASM sandbox with no arbitrary access to the host system.\n This is NOT Node.js \u2014 the following are NOT available:\n - require() / import() No module loading\n - process No process access\n - fs / path / os No direct filesystem access\n - fetch / WebSocket No direct network access\n - __dirname / __filename No path globals\n\n Available globals:\n browser Pre-connected browser handle (see API below)\n console log, warn, error, info (routed to CLI output)\n setTimeout / clearTimeout Basic timers\n saveScreenshot(buf, name) Save a screenshot buffer (async, must be awaited)\n writeFile(name, data) Write a file to temp dir (async, must be awaited)\n readFile(name) Read a file from temp dir (async, must be awaited)\n\n Memory and CPU limits are enforced. Infinite loops will be interrupted.\n\nPrimary invocation styles:\n canary-browser <<'EOF'\n const page = await browser.getPage(\"main\");\n await page.goto(\"https://example.com\");\n console.log(await page.title());\n EOF\n\n canary-browser run script.js\n canary-browser --browser my-project < script.js\n canary-browser --connect http://localhost:9222 <<'EOF'\n const page = await browser.getPage(\"main\");\n await page.goto(\"https://example.com\");\n EOF\n canary-browser --connect <<'EOF'\n const page = await browser.getPage(\"main\");\n console.log(await page.title());\n EOF\n\nScript API available inside every script:\n browser.getPage(nameOrId) Get a page by name (creates if new) or connect to an existing\n tab by its targetId from listPages().\n browser.newPage() Create an anonymous page. Anonymous pages are cleaned up after the script exits.\n browser.listPages() List all tabs: named pages and existing browser tabs.\n Returns [{id, url, title, name}].\n browser.closePage(name) Close and remove a named page.\n await saveScreenshot(buf: Buffer, name: string): Promise<string>\n Save a screenshot buffer to ~/.canary/tmp/<name>.\n Returns the full path to the saved file.\n Example: const path = await saveScreenshot(await page.screenshot(), \"home.png\");\n\n await writeFile(name: string, data: string): Promise<string>\n Write data to ~/.canary/tmp/<name>.\n Returns the full path to the written file.\n Example: const path = await writeFile(\"results.json\", JSON.stringify(data));\n\n await readFile(name: string): Promise<string>\n Read a file from ~/.canary/tmp/<name>.\n Returns the file content as a string.\n Example: const data = JSON.parse(await readFile(\"results.json\"));\n\n console.log/info(...) Write output to stdout.\n console.warn/error(...) Write output to stderr.\n\n All file I/O functions are async and must be awaited.\n All paths are restricted to ~/.canary/tmp/ \u2014 no filesystem escape.\n\nPages returned by \\`browser.getPage()\\` and \\`browser.newPage()\\` are full Playwright\nPage objects \u2014 you get the same API (goto, click, fill, locator, evaluate, etc.):\n https://playwright.dev/docs/api/class-page`;\n\n// llm-guide.txt is generated into src/assets/embedded.generated.ts at\n// prebuild time (see scripts/check-daemon-bundles.mjs). Same source in\n// tsx, vitest, and esbuild.\nimport { LLM_GUIDE } from \"../assets/embedded.generated.js\";\n\nexport const CLI_AFTER_LONG_HELP: string = LLM_GUIDE;\n\nexport const RUN_LONG_ABOUT =\n \"Run a script file against the browser.\\n\\n\" +\n \"The file is executed the same way as stdin input: as top-level JavaScript with `await`, `browser`, and `console` available.\\n\\n\" +\n \"Use top-level flags before `run`, for example `canary-browser --browser my-project run script.js`.\";\n\nexport const INSTALL_LONG_ABOUT =\n \"Install Playwright browsers (Chromium).\\n\\n\" +\n \"Downloads the Chromium build used for daemon-managed browser instances.\";\n\nexport const BROWSERS_LONG_ABOUT =\n \"List all managed browser instances.\\n\\n\" +\n \"Shows the browser name, whether it is daemon-launched or externally connected, its status, and any named pages currently registered.\";\n\nexport const STATUS_LONG_ABOUT =\n \"Show daemon status.\\n\\n\" +\n \"Prints daemon process details, socket path, uptime, and the current set of managed browsers.\";\n\nexport const STOP_LONG_ABOUT =\n \"Stop the daemon and all browsers.\\n\\n\" +\n \"This stops the background daemon process and closes every browser instance it currently manages.\";\n\n// Subcommand short descriptions.\nexport const RUN_SHORT = \"Run a script file against the browser\";\nexport const INSTALL_SHORT = \"Install Playwright browsers (Chromium)\";\nexport const BROWSERS_SHORT = \"List all managed browser instances\";\nexport const STATUS_SHORT = \"Show daemon status\";\nexport const STOP_SHORT = \"Stop the daemon and all browsers\";\n\nexport const ROOT_SHORT = \"Control browsers with JavaScript automation scripts\";\n", "import { installDaemonRuntime } from \"@usecanary/daemon-client\";\n\n// Install Playwright + runtime deps under ~/.canary/. Delegates to the\n// shared daemon-client implementation (same runtime the daemon embeds).\nexport function installRuntime(): Promise<number> {\n return installDaemonRuntime();\n}\n", "// Argv preprocessing for optional-value flags.\n//\n// Commander supports `--option [value]` bracketed-optional syntax: bare\n// `--connect` yields `true`; `--connect URL` yields `URL`. But commander will\n// *not* consume the next token as the flag's value if the program defines a\n// positional or subcommand for it \u2014 so `--connect chrome` could be parsed\n// inconsistently depending on subcommand layout.\n//\n// To make optional-value parsing deterministic regardless of subcommand\n// layout, we splice `--connect VALUE` into `--connect=VALUE` here. This is a\n// lexical (not semantic) rewrite.\nconst OPTIONAL_VALUE_FLAGS = new Set([\"--connect\"]);\n\nexport function preprocessArgs(argv: readonly string[]): string[] {\n if (argv.length <= 1) {\n return argv.slice();\n }\n const out: string[] = [argv[0] as string];\n for (let i = 1; i < argv.length; i += 1) {\n const cur = argv[i] as string;\n if (!OPTIONAL_VALUE_FLAGS.has(cur)) {\n out.push(cur);\n continue;\n }\n if (i + 1 >= argv.length) {\n out.push(cur);\n continue;\n }\n const next = argv[i + 1] as string;\n if (next.startsWith(\"-\")) {\n out.push(cur);\n continue;\n }\n out.push(`${cur}=${next}`);\n i += 1;\n }\n return out;\n}\n", "import { readFile } from \"node:fs/promises\";\nimport { ensureDaemonRunning, sendRequest } from \"@usecanary/daemon-client\";\nimport type { ExecuteRequest } from \"@usecanary/protocol\";\nimport { readInjectScripts } from \"../inject-scripts.js\";\nimport { requestId } from \"../util/request-id.js\";\nimport type { GlobalFlags } from \"./flags.js\";\nimport { renderJsonResult } from \"./render.js\";\n\nexport async function runScript(\n flags: GlobalFlags,\n script: string\n): Promise<number> {\n await ensureDaemonRunning();\n\n const timeoutSeconds = flags.timeout;\n if (!Number.isFinite(timeoutSeconds) || timeoutSeconds < 1) {\n throw new Error(\n `invalid value '${flags.timeout}' for '--timeout <SECONDS>': must be at least 1`\n );\n }\n const timeoutMs = timeoutSeconds * 1000;\n\n const initScripts = await readInjectScripts(\n flags.injectScriptPaths,\n process.cwd()\n );\n\n const request: ExecuteRequest = {\n id: requestId(\"execute\"),\n type: \"execute\",\n browser: flags.browser,\n script,\n timeoutMs,\n };\n if (flags.headless) {\n request.headless = true;\n }\n if (flags.ignoreHttpsErrors) {\n request.ignoreHTTPSErrors = true;\n }\n if (flags.connect !== undefined) {\n request.connect = flags.connect;\n }\n if (initScripts.length > 0) {\n request.initScripts = initScripts;\n }\n\n return sendRequest(request, renderJsonResult);\n}\n\nexport async function runScriptFromFile(\n flags: GlobalFlags,\n file: string\n): Promise<number> {\n let script: string;\n try {\n script = await readFile(file, \"utf8\");\n } catch (err) {\n // Normalize ENOENT to the canonical \"No such file or directory (os error\n // 2)\" message the daemon/tests expect.\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new Error(\"No such file or directory (os error 2)\");\n }\n throw err;\n }\n return runScript(flags, script);\n}\n", "import { readFile as fsReadFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nexport const INJECT_SCRIPT_ENV_VAR = \"CANARY_INJECT_SCRIPT\";\n\n// Splits the env-var value on commas and newlines, trims, and drops empties.\n// Mirrors the agent-browser convention (comma OR newline separated).\nexport function parseInjectScriptEnv(value: string | undefined): string[] {\n if (!value) {\n return [];\n }\n return value\n .split(/[,\\n]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n}\n\n// Merges env entries (first) with flag entries (in argv order). No de-duping\n// here \u2014 the daemon hashes script content and dedupes server-side, so passing\n// the same path twice is harmless.\nexport function collectInjectScriptPaths(\n envValue: string | undefined,\n flagValues: readonly string[]\n): string[] {\n return [...parseInjectScriptEnv(envValue), ...flagValues];\n}\n\nexport type ReadFileFn = (path: string, encoding: \"utf8\") => Promise<string>;\n\n// Resolves each path against cwd and reads the file. On failure, throws with\n// the offending path so the user knows which entry is broken.\nexport async function readInjectScripts(\n paths: readonly string[],\n cwd: string,\n readFile: ReadFileFn = (filePath, encoding) => fsReadFile(filePath, encoding)\n): Promise<string[]> {\n const contents: string[] = [];\n for (const entry of paths) {\n const resolved = path.isAbsolute(entry) ? entry : path.resolve(cwd, entry);\n try {\n const text = await readFile(resolved, \"utf8\");\n contents.push(text);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`--inject-script: failed to read ${entry}: ${reason}`);\n }\n }\n return contents;\n}\n", "import { ensureDaemonRunning, sendRequest } from \"@usecanary/daemon-client\";\nimport { requestId } from \"../util/request-id.js\";\nimport { renderStatusResult } from \"./render.js\";\n\nexport async function statusCommand(): Promise<number> {\n await ensureDaemonRunning();\n return sendRequest(\n { id: requestId(\"status\"), type: \"status\" },\n renderStatusResult\n );\n}\n", "import {\n currentDaemonPid,\n isDaemonRunning,\n sendRequest,\n waitForDaemonExit,\n} from \"@usecanary/daemon-client\";\nimport { requestId } from \"../util/request-id.js\";\n\nexport async function stopCommand(): Promise<number> {\n if (!(await isDaemonRunning())) {\n process.stdout.write(\"Daemon is not running.\\n\");\n return 0;\n }\n const pid = await currentDaemonPid();\n const code = await sendRequest(\n { id: requestId(\"stop\"), type: \"stop\" },\n undefined\n );\n if (code === 0) {\n if (pid !== null) {\n await waitForDaemonExit(pid, 10_000);\n }\n process.stdout.write(\"Daemon stopped.\\n\");\n }\n return code;\n}\n", "import { createRootLogger } from \"@usecanary/cli-kit\";\nimport type { Logger } from \"@usecanary/logger\";\n\n// Root CLI logger. Diagnostics go to stderr; stdout stays clean for\n// machine-readable output. See @usecanary/cli-kit createRootLogger.\nexport const logger: Logger = createRootLogger(\"canary-browser\");\n", "import type { Command as CommandType } from \"commander\";\nimport * as commander from \"commander\";\n\nconst { Command, InvalidArgumentError, Option } = commander as unknown as {\n Command: typeof commander.Command;\n InvalidArgumentError: typeof commander.InvalidArgumentError;\n Option: typeof commander.Option;\n};\n\nimport { browsersCommand } from \"./commands/browsers.js\";\nimport {\n CONNECT_AUTO_SENTINEL,\n DEFAULT_BROWSER,\n DEFAULT_TIMEOUT_SECS,\n type GlobalFlags,\n} from \"./commands/flags.js\";\nimport {\n BROWSERS_LONG_ABOUT,\n BROWSERS_SHORT,\n CLI_AFTER_LONG_HELP,\n CLI_LONG_ABOUT,\n INSTALL_LONG_ABOUT,\n INSTALL_SHORT,\n ROOT_SHORT,\n RUN_LONG_ABOUT,\n RUN_SHORT,\n STATUS_LONG_ABOUT,\n STATUS_SHORT,\n STOP_LONG_ABOUT,\n STOP_SHORT,\n} from \"./commands/help-text.js\";\nimport { installRuntime } from \"./commands/install.js\";\nimport { preprocessArgs } from \"./commands/preprocess.js\";\nimport { runScript, runScriptFromFile } from \"./commands/run.js\";\nimport { statusCommand } from \"./commands/status.js\";\nimport { stopCommand } from \"./commands/stop.js\";\nimport {\n collectInjectScriptPaths,\n INJECT_SCRIPT_ENV_VAR,\n} from \"./inject-scripts.js\";\nimport { logger } from \"./logger.js\";\n\nclass ExitCodeError extends Error {\n readonly code: number;\n constructor(code: number) {\n super(`exit code ${code}`);\n this.code = code;\n }\n}\n\ninterface RawOpts {\n browser: string;\n connect?: string | true;\n headless?: boolean;\n ignoreHttpsErrors?: boolean;\n injectScript?: string[];\n timeout: number;\n}\n\nfunction resolveGlobalFlags(program: CommandType): GlobalFlags {\n const opts = program.opts<RawOpts>();\n const connectRaw = opts.connect;\n let connect: string | undefined;\n if (connectRaw === undefined) {\n connect = undefined;\n } else if (connectRaw === true) {\n connect = CONNECT_AUTO_SENTINEL;\n } else {\n connect = connectRaw;\n }\n return {\n browser: opts.browser,\n connect,\n headless: opts.headless === true,\n ignoreHttpsErrors: opts.ignoreHttpsErrors === true,\n timeout: opts.timeout,\n injectScriptPaths: collectInjectScriptPaths(\n process.env[INJECT_SCRIPT_ENV_VAR],\n opts.injectScript ?? []\n ),\n };\n}\n\nfunction parseTimeout(value: string): number {\n const parsed = Number.parseInt(value, 10);\n if (!Number.isFinite(parsed) || String(parsed) !== value || parsed < 1) {\n throw new InvalidArgumentError(\n `invalid value '${value}' for '--timeout <SECONDS>': must be at least 1`\n );\n }\n return parsed;\n}\n\nfunction stdinIsTty(): boolean {\n return Boolean(process.stdin.isTTY);\n}\n\nasync function readScriptFromStdin(): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(\n typeof chunk === \"string\" ? Buffer.from(chunk) : (chunk as Buffer)\n );\n }\n return Buffer.concat(chunks).toString(\"utf8\");\n}\n\nexport function buildProgram(): CommandType {\n const program = new Command();\n program\n .name(\"canary-browser\")\n .description(ROOT_SHORT)\n .addHelpText(\"before\", `${CLI_LONG_ABOUT}\\n`)\n .addHelpText(\"after\", `\\n${CLI_AFTER_LONG_HELP}`)\n .exitOverride()\n .showHelpAfterError(false)\n // Reject `canary-browser bogus` instead of silently no-oping the default\n // action. Commander throws commander.excessArguments which execute()\n // maps to exit 2.\n .allowExcessArguments(false);\n\n program\n .option(\n \"--browser <NAME>\",\n \"Use a named daemon-managed browser instance\",\n DEFAULT_BROWSER\n )\n .addOption(\n new Option(\"--connect [URL]\", \"Connect to a running Chrome instance\")\n )\n .option(\n \"--headless\",\n \"Launch daemon-managed Chromium without a visible window\"\n )\n .option(\n \"--ignore-https-errors\",\n \"Ignore HTTPS certificate errors for daemon-managed Chromium\"\n )\n .option(\n \"--timeout <SECONDS>\",\n \"Maximum script execution time in seconds\",\n parseTimeout,\n DEFAULT_TIMEOUT_SECS\n )\n .option(\n \"--inject-script <PATH>\",\n \"Pre-load a JavaScript file on every page in the browser context (repeatable)\",\n (value: string, previous: string[] = []) => [...previous, value],\n [] as string[]\n )\n .option(\"-v, --verbose\", \"Enable verbose diagnostic logging on stderr\")\n .option(\n \"--json\",\n \"Emit machine-readable JSON diagnostics on stderr (disable pretty)\"\n );\n\n program.action(async () => {\n if (stdinIsTty()) {\n program.outputHelp();\n throw new ExitCodeError(2);\n }\n const script = await readScriptFromStdin();\n const code = await runScript(resolveGlobalFlags(program), script);\n throw new ExitCodeError(code);\n });\n\n program\n .command(\"run\")\n .description(RUN_SHORT)\n .summary(RUN_SHORT)\n .addHelpText(\"before\", `${RUN_LONG_ABOUT}\\n`)\n .argument(\"<FILE>\", \"Path to a JavaScript file to execute\")\n .action(async (file: string) => {\n const code = await runScriptFromFile(resolveGlobalFlags(program), file);\n throw new ExitCodeError(code);\n });\n\n program\n .command(\"install\")\n .description(INSTALL_SHORT)\n .summary(INSTALL_SHORT)\n .addHelpText(\"before\", `${INSTALL_LONG_ABOUT}\\n`)\n .action(async () => {\n const code = await installRuntime();\n throw new ExitCodeError(code);\n });\n\n program\n .command(\"browsers\")\n .description(BROWSERS_SHORT)\n .summary(BROWSERS_SHORT)\n .addHelpText(\"before\", `${BROWSERS_LONG_ABOUT}\\n`)\n .action(async () => {\n const code = await browsersCommand();\n throw new ExitCodeError(code);\n });\n\n program\n .command(\"status\")\n .description(STATUS_SHORT)\n .summary(STATUS_SHORT)\n .addHelpText(\"before\", `${STATUS_LONG_ABOUT}\\n`)\n .action(async () => {\n const code = await statusCommand();\n throw new ExitCodeError(code);\n });\n\n program\n .command(\"stop\")\n .description(STOP_SHORT)\n .summary(STOP_SHORT)\n .addHelpText(\"before\", `${STOP_LONG_ABOUT}\\n`)\n .action(async () => {\n const code = await stopCommand();\n throw new ExitCodeError(code);\n });\n\n return program;\n}\n\nexport async function execute(argv: readonly string[]): Promise<number> {\n const program = buildProgram();\n const preprocessed = preprocessArgs(argv);\n try {\n await program.parseAsync(preprocessed, { from: \"node\" });\n return 0;\n } catch (err) {\n if (err instanceof ExitCodeError) {\n return err.code;\n }\n if (\n err &&\n typeof err === \"object\" &&\n \"code\" in (err as Record<string, unknown>)\n ) {\n const code = (err as { code?: string }).code;\n if (code === \"commander.helpDisplayed\" || code === \"commander.help\") {\n return 0;\n }\n if (code === \"commander.version\") {\n return 0;\n }\n // Usage errors map to exit 2; commander's own message is already on stderr.\n if (typeof code === \"string\" && code.startsWith(\"commander.\")) {\n return 2;\n }\n }\n logger.debug({ err }, \"command failed\");\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(`Error: ${message}\\n`);\n return 1;\n }\n}\n\n// Direct entry \u2014 invoked when run as `node dist/cli.js`.\nconst isMain = (() => {\n try {\n const here = new URL(import.meta.url).pathname;\n const argv1 = process.argv[1] ?? \"\";\n return here === argv1 || here.endsWith(argv1) || argv1.endsWith(\"cli.js\");\n } catch {\n return true;\n }\n})();\n\nif (isMain) {\n execute(process.argv).then(\n (code) => process.exit(code),\n (err) => {\n process.stderr.write(\n `Error: ${err instanceof Error ? err.message : String(err)}\\n`\n );\n process.exit(1);\n }\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["CommanderError", "InvalidArgumentError", "InvalidArgumentError", "Argument", "Help", "cmd", "InvalidArgumentError", "Option", "str", "path", "process", "Argument", "CommanderError", "Help", "Option", "Command", "write", "option", "Argument", "Command", "CommanderError", "InvalidArgumentError", "Help", "Option", "err", "err", "path", "path", "cloned", "path", "sleep", "path", "sleep", "mkdir", "write", "err", "n", "releasedBufObj", "join", "FinalizationRegistry", "WeakRef", "write", "join", "isAbsolute", "sep", "sleep", "buildStream", "onExit", "fixTarget", "stringify", "_", "log", "write", "bindings", "log", "value", "join", "tmp", "key", "res", "stringify", "write", "streamLevels", "pino", "serializers", "time", "colors", "cb", "resolve", "require_constants", "log", "copy", "log", "_typeof", "obj", "global", "_", "D", "y", "pad", "getDayName", "today_d", "today_m", "today_y", "yesterday_d", "yesterday_m", "yesterday_y", "tomorrow_d", "tomorrow_m", "tomorrow_y", "getWeek", "getDayOfWeek", "kindOf", "log", "log", "plain", "errors", "pretty", "log", "log", "log", "log", "log", "pretty", "log", "pretty", "commander", "join", "homedir", "home", "homedir", "util", "objectUtil", "path", "errorUtil", "path", "errorMap", "ctx", "result", "issues", "elements", "processed", "result", "r", "ZodFirstPartyTypeKind", "DAEMON_BUNDLE", "SANDBOX_CLIENT", "DAEMON_BUNDLE", "SANDBOX_CLIENT", "path", "join", "join", "program", "resolve", "readFile", "resolve", "pino", "logger", "spawn", "spawn", "readFile", "pretty", "readFile", "readFile", "readFile", "logger", "Command", "InvalidArgumentError", "Option", "program", "logger"]
7
+ }