@f2c/mcp 0.4.9 → 1.0.0-alpha.1

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,171 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/ajv/dist/compile/codegen/code.js", "../node_modules/ajv/dist/compile/codegen/scope.js", "../node_modules/ajv/dist/compile/codegen/index.js", "../node_modules/ajv/dist/compile/util.js", "../node_modules/ajv/dist/compile/names.js", "../node_modules/ajv/dist/compile/errors.js", "../node_modules/ajv/dist/compile/validate/boolSchema.js", "../node_modules/ajv/dist/compile/rules.js", "../node_modules/ajv/dist/compile/validate/applicability.js", "../node_modules/ajv/dist/compile/validate/dataType.js", "../node_modules/ajv/dist/compile/validate/defaults.js", "../node_modules/ajv/dist/vocabularies/code.js", "../node_modules/ajv/dist/compile/validate/keyword.js", "../node_modules/ajv/dist/compile/validate/subschema.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/json-schema-traverse/index.js", "../node_modules/ajv/dist/compile/resolve.js", "../node_modules/ajv/dist/compile/validate/index.js", "../node_modules/ajv/dist/runtime/validation_error.js", "../node_modules/ajv/dist/compile/ref_error.js", "../node_modules/ajv/dist/compile/index.js", "../node_modules/fast-uri/lib/utils.js", "../node_modules/fast-uri/lib/schemes.js", "../node_modules/fast-uri/index.js", "../node_modules/ajv/dist/runtime/uri.js", "../node_modules/ajv/dist/core.js", "../node_modules/ajv/dist/vocabularies/core/id.js", "../node_modules/ajv/dist/vocabularies/core/ref.js", "../node_modules/ajv/dist/vocabularies/core/index.js", "../node_modules/ajv/dist/vocabularies/validation/limitNumber.js", "../node_modules/ajv/dist/vocabularies/validation/multipleOf.js", "../node_modules/ajv/dist/runtime/ucs2length.js", "../node_modules/ajv/dist/vocabularies/validation/limitLength.js", "../node_modules/ajv/dist/vocabularies/validation/pattern.js", "../node_modules/ajv/dist/vocabularies/validation/limitProperties.js", "../node_modules/ajv/dist/vocabularies/validation/required.js", "../node_modules/ajv/dist/vocabularies/validation/limitItems.js", "../node_modules/ajv/dist/runtime/equal.js", "../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js", "../node_modules/ajv/dist/vocabularies/validation/const.js", "../node_modules/ajv/dist/vocabularies/validation/enum.js", "../node_modules/ajv/dist/vocabularies/validation/index.js", "../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js", "../node_modules/ajv/dist/vocabularies/applicator/items.js", "../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js", "../node_modules/ajv/dist/vocabularies/applicator/items2020.js", "../node_modules/ajv/dist/vocabularies/applicator/contains.js", "../node_modules/ajv/dist/vocabularies/applicator/dependencies.js", "../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js", "../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js", "../node_modules/ajv/dist/vocabularies/applicator/properties.js", "../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js", "../node_modules/ajv/dist/vocabularies/applicator/not.js", "../node_modules/ajv/dist/vocabularies/applicator/anyOf.js", "../node_modules/ajv/dist/vocabularies/applicator/oneOf.js", "../node_modules/ajv/dist/vocabularies/applicator/allOf.js", "../node_modules/ajv/dist/vocabularies/applicator/if.js", "../node_modules/ajv/dist/vocabularies/applicator/thenElse.js", "../node_modules/ajv/dist/vocabularies/applicator/index.js", "../node_modules/ajv/dist/vocabularies/format/format.js", "../node_modules/ajv/dist/vocabularies/format/index.js", "../node_modules/ajv/dist/vocabularies/metadata.js", "../node_modules/ajv/dist/vocabularies/draft7.js", "../node_modules/ajv/dist/vocabularies/discriminator/types.js", "../node_modules/ajv/dist/vocabularies/discriminator/index.js", "../node_modules/ajv/dist/ajv.js", "../node_modules/ajv-formats/dist/formats.js", "../node_modules/ajv-formats/dist/limit.js", "../node_modules/ajv-formats/dist/index.js", "../node_modules/data-uri-to-buffer/dist/index.js", "../node_modules/web-streams-polyfill/dist/ponyfill.es2018.js", "../node_modules/fetch-blob/streams.cjs", "../node_modules/fetch-blob/index.js", "../node_modules/fetch-blob/file.js", "../node_modules/formdata-polyfill/esm.min.js", "../node_modules/node-fetch/src/errors/base.js", "../node_modules/node-fetch/src/errors/fetch-error.js", "../node_modules/node-fetch/src/utils/is.js", "../node_modules/node-domexception/index.js", "../node_modules/fetch-blob/from.js", "../node_modules/node-fetch/src/utils/multipart-parser.js", "../node_modules/node-fetch/src/body.js", "../node_modules/node-fetch/src/headers.js", "../node_modules/node-fetch/src/utils/is-redirect.js", "../node_modules/node-fetch/src/response.js", "../node_modules/node-fetch/src/utils/get-search.js", "../node_modules/node-fetch/src/utils/referrer.js", "../node_modules/node-fetch/src/request.js", "../node_modules/node-fetch/src/errors/abort-error.js", "../node_modules/node-fetch/src/index.js", "../node_modules/zod/dist/esm/v3/helpers/util.js", "../node_modules/zod/dist/esm/v3/ZodError.js", "../node_modules/zod/dist/esm/v3/locales/en.js", "../node_modules/zod/dist/esm/v3/errors.js", "../node_modules/zod/dist/esm/v3/helpers/parseUtil.js", "../node_modules/zod/dist/esm/v3/helpers/errorUtil.js", "../node_modules/zod/dist/esm/v3/types.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/types.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js", "../node_modules/pkce-challenge/dist/index.node.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth-utils.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/errors.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js", "../node_modules/eventsource-parser/dist/index.js", "../node_modules/eventsource-parser/dist/stream.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js", "../node_modules/zod-to-json-schema/dist/esm/Options.js", "../node_modules/zod-to-json-schema/dist/esm/Refs.js", "../node_modules/zod-to-json-schema/dist/esm/errorMessages.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/any.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/array.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/branded.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/catch.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/date.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/default.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/effects.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/enum.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/literal.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/string.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/record.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/map.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/never.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/null.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/union.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/number.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/object.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/optional.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/promise.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/set.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js", "../node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js", "../node_modules/zod-to-json-schema/dist/esm/selectParser.js", "../node_modules/zod-to-json-schema/dist/esm/parseDef.js", "../node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js", "../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js", "../src/utils/logger.ts", "../src/server/common/stdio.ts", "../src/client/mcp-client.ts", "../src/config/index.ts", "../src/utils/code.ts", "../src/tool/code-convert/prompt.ts", "../src/tool/code-convert/gen-code-tool.ts", "../src/utils/index.ts", "../src/utils/downloader.ts", "../src/utils/fetch.ts", "../src/index.ts"],
4
+ "sourcesContent": [
5
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nclass _CodeOrName {\n}\nexports._CodeOrName = _CodeOrName;\nexports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nclass Name extends _CodeOrName {\n constructor(s) {\n super();\n if (!exports.IDENTIFIER.test(s))\n throw new Error(\"CodeGen: name must be a valid identifier\");\n this.str = s;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n return false;\n }\n get names() {\n return { [this.str]: 1 };\n }\n}\nexports.Name = Name;\nclass _Code extends _CodeOrName {\n constructor(code) {\n super();\n this._items = typeof code === \"string\" ? [code] : code;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n if (this._items.length > 1)\n return false;\n const item = this._items[0];\n return item === \"\" || item === '\"\"';\n }\n get str() {\n var _a;\n return ((_a = this._str) !== null && _a !== void 0 ? _a : (this._str = this._items.reduce((s, c) => `${s}${c}`, \"\")));\n }\n get names() {\n var _a;\n return ((_a = this._names) !== null && _a !== void 0 ? _a : (this._names = this._items.reduce((names, c) => {\n if (c instanceof Name)\n names[c.str] = (names[c.str] || 0) + 1;\n return names;\n }, {})));\n }\n}\nexports._Code = _Code;\nexports.nil = new _Code(\"\");\nfunction _(strs, ...args) {\n const code = [strs[0]];\n let i = 0;\n while (i < args.length) {\n addCodeArg(code, args[i]);\n code.push(strs[++i]);\n }\n return new _Code(code);\n}\nexports._ = _;\nconst plus = new _Code(\"+\");\nfunction str(strs, ...args) {\n const expr = [safeStringify(strs[0])];\n let i = 0;\n while (i < args.length) {\n expr.push(plus);\n addCodeArg(expr, args[i]);\n expr.push(plus, safeStringify(strs[++i]));\n }\n optimize(expr);\n return new _Code(expr);\n}\nexports.str = str;\nfunction addCodeArg(code, arg) {\n if (arg instanceof _Code)\n code.push(...arg._items);\n else if (arg instanceof Name)\n code.push(arg);\n else\n code.push(interpolate(arg));\n}\nexports.addCodeArg = addCodeArg;\nfunction optimize(expr) {\n let i = 1;\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1]);\n if (res !== undefined) {\n expr.splice(i - 1, 3, res);\n continue;\n }\n expr[i++] = \"+\";\n }\n i++;\n }\n}\nfunction mergeExprItems(a, b) {\n if (b === '\"\"')\n return a;\n if (a === '\"\"')\n return b;\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"')\n return;\n if (typeof b != \"string\")\n return `${a.slice(0, -1)}${b}\"`;\n if (b[0] === '\"')\n return a.slice(0, -1) + b.slice(1);\n return;\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name))\n return `\"${a}${b.slice(1)}`;\n return;\n}\nfunction strConcat(c1, c2) {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str `${c1}${c2}`;\n}\nexports.strConcat = strConcat;\n// TODO do not allow arrays here\nfunction interpolate(x) {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x);\n}\nfunction stringify(x) {\n return new _Code(safeStringify(x));\n}\nexports.stringify = stringify;\nfunction safeStringify(x) {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\nexports.safeStringify = safeStringify;\nfunction getProperty(key) {\n return typeof key == \"string\" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _ `[${key}]`;\n}\nexports.getProperty = getProperty;\n//Does best effort to format the name properly\nfunction getEsmExportName(key) {\n if (typeof key == \"string\" && exports.IDENTIFIER.test(key)) {\n return new _Code(`${key}`);\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`);\n}\nexports.getEsmExportName = getEsmExportName;\nfunction regexpCode(rx) {\n return new _Code(rx.toString());\n}\nexports.regexpCode = regexpCode;\n//# sourceMappingURL=code.js.map",
6
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0;\nconst code_1 = require(\"./code\");\nclass ValueError extends Error {\n constructor(name) {\n super(`CodeGen: \"code\" for ${name} not defined`);\n this.value = name.value;\n }\n}\nvar UsedValueState;\n(function (UsedValueState) {\n UsedValueState[UsedValueState[\"Started\"] = 0] = \"Started\";\n UsedValueState[UsedValueState[\"Completed\"] = 1] = \"Completed\";\n})(UsedValueState || (exports.UsedValueState = UsedValueState = {}));\nexports.varKinds = {\n const: new code_1.Name(\"const\"),\n let: new code_1.Name(\"let\"),\n var: new code_1.Name(\"var\"),\n};\nclass Scope {\n constructor({ prefixes, parent } = {}) {\n this._names = {};\n this._prefixes = prefixes;\n this._parent = parent;\n }\n toName(nameOrPrefix) {\n return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix);\n }\n name(prefix) {\n return new code_1.Name(this._newName(prefix));\n }\n _newName(prefix) {\n const ng = this._names[prefix] || this._nameGroup(prefix);\n return `${prefix}${ng.index++}`;\n }\n _nameGroup(prefix) {\n var _a, _b;\n if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`);\n }\n return (this._names[prefix] = { prefix, index: 0 });\n }\n}\nexports.Scope = Scope;\nclass ValueScopeName extends code_1.Name {\n constructor(prefix, nameStr) {\n super(nameStr);\n this.prefix = prefix;\n }\n setValue(value, { property, itemIndex }) {\n this.value = value;\n this.scopePath = (0, code_1._) `.${new code_1.Name(property)}[${itemIndex}]`;\n }\n}\nexports.ValueScopeName = ValueScopeName;\nconst line = (0, code_1._) `\\n`;\nclass ValueScope extends Scope {\n constructor(opts) {\n super(opts);\n this._values = {};\n this._scope = opts.scope;\n this.opts = { ...opts, _n: opts.lines ? line : code_1.nil };\n }\n get() {\n return this._scope;\n }\n name(prefix) {\n return new ValueScopeName(prefix, this._newName(prefix));\n }\n value(nameOrPrefix, value) {\n var _a;\n if (value.ref === undefined)\n throw new Error(\"CodeGen: ref must be passed in value\");\n const name = this.toName(nameOrPrefix);\n const { prefix } = name;\n const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref;\n let vs = this._values[prefix];\n if (vs) {\n const _name = vs.get(valueKey);\n if (_name)\n return _name;\n }\n else {\n vs = this._values[prefix] = new Map();\n }\n vs.set(valueKey, name);\n const s = this._scope[prefix] || (this._scope[prefix] = []);\n const itemIndex = s.length;\n s[itemIndex] = value.ref;\n name.setValue(value, { property: prefix, itemIndex });\n return name;\n }\n getValue(prefix, keyOrRef) {\n const vs = this._values[prefix];\n if (!vs)\n return;\n return vs.get(keyOrRef);\n }\n scopeRefs(scopeName, values = this._values) {\n return this._reduceValues(values, (name) => {\n if (name.scopePath === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return (0, code_1._) `${scopeName}${name.scopePath}`;\n });\n }\n scopeCode(values = this._values, usedValues, getCode) {\n return this._reduceValues(values, (name) => {\n if (name.value === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return name.value.code;\n }, usedValues, getCode);\n }\n _reduceValues(values, valueCode, usedValues = {}, getCode) {\n let code = code_1.nil;\n for (const prefix in values) {\n const vs = values[prefix];\n if (!vs)\n continue;\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map());\n vs.forEach((name) => {\n if (nameSet.has(name))\n return;\n nameSet.set(name, UsedValueState.Started);\n let c = valueCode(name);\n if (c) {\n const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const;\n code = (0, code_1._) `${code}${def} ${name} = ${c};${this.opts._n}`;\n }\n else if ((c = getCode === null || getCode === void 0 ? void 0 : getCode(name))) {\n code = (0, code_1._) `${code}${c}${this.opts._n}`;\n }\n else {\n throw new ValueError(name);\n }\n nameSet.set(name, UsedValueState.Completed);\n });\n }\n return code;\n }\n}\nexports.ValueScope = ValueScope;\n//# sourceMappingURL=scope.js.map",
7
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;\nconst code_1 = require(\"./code\");\nconst scope_1 = require(\"./scope\");\nvar code_2 = require(\"./code\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return code_2._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return code_2.str; } });\nObject.defineProperty(exports, \"strConcat\", { enumerable: true, get: function () { return code_2.strConcat; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return code_2.nil; } });\nObject.defineProperty(exports, \"getProperty\", { enumerable: true, get: function () { return code_2.getProperty; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return code_2.stringify; } });\nObject.defineProperty(exports, \"regexpCode\", { enumerable: true, get: function () { return code_2.regexpCode; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return code_2.Name; } });\nvar scope_2 = require(\"./scope\");\nObject.defineProperty(exports, \"Scope\", { enumerable: true, get: function () { return scope_2.Scope; } });\nObject.defineProperty(exports, \"ValueScope\", { enumerable: true, get: function () { return scope_2.ValueScope; } });\nObject.defineProperty(exports, \"ValueScopeName\", { enumerable: true, get: function () { return scope_2.ValueScopeName; } });\nObject.defineProperty(exports, \"varKinds\", { enumerable: true, get: function () { return scope_2.varKinds; } });\nexports.operators = {\n GT: new code_1._Code(\">\"),\n GTE: new code_1._Code(\">=\"),\n LT: new code_1._Code(\"<\"),\n LTE: new code_1._Code(\"<=\"),\n EQ: new code_1._Code(\"===\"),\n NEQ: new code_1._Code(\"!==\"),\n NOT: new code_1._Code(\"!\"),\n OR: new code_1._Code(\"||\"),\n AND: new code_1._Code(\"&&\"),\n ADD: new code_1._Code(\"+\"),\n};\nclass Node {\n optimizeNodes() {\n return this;\n }\n optimizeNames(_names, _constants) {\n return this;\n }\n}\nclass Def extends Node {\n constructor(varKind, name, rhs) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.rhs = rhs;\n }\n render({ es5, _n }) {\n const varKind = es5 ? scope_1.varKinds.var : this.varKind;\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`;\n return `${varKind} ${this.name}${rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (!names[this.name.str])\n return;\n if (this.rhs)\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {};\n }\n}\nclass Assign extends Node {\n constructor(lhs, rhs, sideEffects) {\n super();\n this.lhs = lhs;\n this.rhs = rhs;\n this.sideEffects = sideEffects;\n }\n render({ _n }) {\n return `${this.lhs} = ${this.rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)\n return;\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names };\n return addExprNames(names, this.rhs);\n }\n}\nclass AssignOp extends Assign {\n constructor(lhs, op, rhs, sideEffects) {\n super(lhs, rhs, sideEffects);\n this.op = op;\n }\n render({ _n }) {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n;\n }\n}\nclass Label extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n return `${this.label}:` + _n;\n }\n}\nclass Break extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n const label = this.label ? ` ${this.label}` : \"\";\n return `break${label};` + _n;\n }\n}\nclass Throw extends Node {\n constructor(error) {\n super();\n this.error = error;\n }\n render({ _n }) {\n return `throw ${this.error};` + _n;\n }\n get names() {\n return this.error.names;\n }\n}\nclass AnyCode extends Node {\n constructor(code) {\n super();\n this.code = code;\n }\n render({ _n }) {\n return `${this.code};` + _n;\n }\n optimizeNodes() {\n return `${this.code}` ? this : undefined;\n }\n optimizeNames(names, constants) {\n this.code = optimizeExpr(this.code, names, constants);\n return this;\n }\n get names() {\n return this.code instanceof code_1._CodeOrName ? this.code.names : {};\n }\n}\nclass ParentNode extends Node {\n constructor(nodes = []) {\n super();\n this.nodes = nodes;\n }\n render(opts) {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\");\n }\n optimizeNodes() {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n const n = nodes[i].optimizeNodes();\n if (Array.isArray(n))\n nodes.splice(i, 1, ...n);\n else if (n)\n nodes[i] = n;\n else\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n optimizeNames(names, constants) {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i];\n if (n.optimizeNames(names, constants))\n continue;\n subtractNames(names, n.names);\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n get names() {\n return this.nodes.reduce((names, n) => addNames(names, n.names), {});\n }\n}\nclass BlockNode extends ParentNode {\n render(opts) {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n;\n }\n}\nclass Root extends ParentNode {\n}\nclass Else extends BlockNode {\n}\nElse.kind = \"else\";\nclass If extends BlockNode {\n constructor(condition, nodes) {\n super(nodes);\n this.condition = condition;\n }\n render(opts) {\n let code = `if(${this.condition})` + super.render(opts);\n if (this.else)\n code += \"else \" + this.else.render(opts);\n return code;\n }\n optimizeNodes() {\n super.optimizeNodes();\n const cond = this.condition;\n if (cond === true)\n return this.nodes; // else is ignored here\n let e = this.else;\n if (e) {\n const ns = e.optimizeNodes();\n e = this.else = Array.isArray(ns) ? new Else(ns) : ns;\n }\n if (e) {\n if (cond === false)\n return e instanceof If ? e : e.nodes;\n if (this.nodes.length)\n return this;\n return new If(not(cond), e instanceof If ? [e] : e.nodes);\n }\n if (cond === false || !this.nodes.length)\n return undefined;\n return this;\n }\n optimizeNames(names, constants) {\n var _a;\n this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n if (!(super.optimizeNames(names, constants) || this.else))\n return;\n this.condition = optimizeExpr(this.condition, names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n addExprNames(names, this.condition);\n if (this.else)\n addNames(names, this.else.names);\n return names;\n }\n}\nIf.kind = \"if\";\nclass For extends BlockNode {\n}\nFor.kind = \"for\";\nclass ForLoop extends For {\n constructor(iteration) {\n super();\n this.iteration = iteration;\n }\n render(opts) {\n return `for(${this.iteration})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iteration = optimizeExpr(this.iteration, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iteration.names);\n }\n}\nclass ForRange extends For {\n constructor(varKind, name, from, to) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.from = from;\n this.to = to;\n }\n render(opts) {\n const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind;\n const { name, from, to } = this;\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts);\n }\n get names() {\n const names = addExprNames(super.names, this.from);\n return addExprNames(names, this.to);\n }\n}\nclass ForIter extends For {\n constructor(loop, varKind, name, iterable) {\n super();\n this.loop = loop;\n this.varKind = varKind;\n this.name = name;\n this.iterable = iterable;\n }\n render(opts) {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iterable = optimizeExpr(this.iterable, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iterable.names);\n }\n}\nclass Func extends BlockNode {\n constructor(name, args, async) {\n super();\n this.name = name;\n this.args = args;\n this.async = async;\n }\n render(opts) {\n const _async = this.async ? \"async \" : \"\";\n return `${_async}function ${this.name}(${this.args})` + super.render(opts);\n }\n}\nFunc.kind = \"func\";\nclass Return extends ParentNode {\n render(opts) {\n return \"return \" + super.render(opts);\n }\n}\nReturn.kind = \"return\";\nclass Try extends BlockNode {\n render(opts) {\n let code = \"try\" + super.render(opts);\n if (this.catch)\n code += this.catch.render(opts);\n if (this.finally)\n code += this.finally.render(opts);\n return code;\n }\n optimizeNodes() {\n var _a, _b;\n super.optimizeNodes();\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes();\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes();\n return this;\n }\n optimizeNames(names, constants) {\n var _a, _b;\n super.optimizeNames(names, constants);\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n if (this.catch)\n addNames(names, this.catch.names);\n if (this.finally)\n addNames(names, this.finally.names);\n return names;\n }\n}\nclass Catch extends BlockNode {\n constructor(error) {\n super();\n this.error = error;\n }\n render(opts) {\n return `catch(${this.error})` + super.render(opts);\n }\n}\nCatch.kind = \"catch\";\nclass Finally extends BlockNode {\n render(opts) {\n return \"finally\" + super.render(opts);\n }\n}\nFinally.kind = \"finally\";\nclass CodeGen {\n constructor(extScope, opts = {}) {\n this._values = {};\n this._blockStarts = [];\n this._constants = {};\n this.opts = { ...opts, _n: opts.lines ? \"\\n\" : \"\" };\n this._extScope = extScope;\n this._scope = new scope_1.Scope({ parent: extScope });\n this._nodes = [new Root()];\n }\n toString() {\n return this._root.render(this.opts);\n }\n // returns unique name in the internal scope\n name(prefix) {\n return this._scope.name(prefix);\n }\n // reserves unique name in the external scope\n scopeName(prefix) {\n return this._extScope.name(prefix);\n }\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName, value) {\n const name = this._extScope.value(prefixOrName, value);\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set());\n vs.add(name);\n return name;\n }\n getScopeValue(prefix, keyOrRef) {\n return this._extScope.getValue(prefix, keyOrRef);\n }\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName) {\n return this._extScope.scopeRefs(scopeName, this._values);\n }\n scopeCode() {\n return this._extScope.scopeCode(this._values);\n }\n _def(varKind, nameOrPrefix, rhs, constant) {\n const name = this._scope.toName(nameOrPrefix);\n if (rhs !== undefined && constant)\n this._constants[name.str] = rhs;\n this._leafNode(new Def(varKind, name, rhs));\n return name;\n }\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant);\n }\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant);\n }\n // `var` declaration with optional assignment\n var(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant);\n }\n // assignment code\n assign(lhs, rhs, sideEffects) {\n return this._leafNode(new Assign(lhs, rhs, sideEffects));\n }\n // `+=` code\n add(lhs, rhs) {\n return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs));\n }\n // appends passed SafeExpr to code or executes Block\n code(c) {\n if (typeof c == \"function\")\n c();\n else if (c !== code_1.nil)\n this._leafNode(new AnyCode(c));\n return this;\n }\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues) {\n const code = [\"{\"];\n for (const [key, value] of keyValues) {\n if (code.length > 1)\n code.push(\",\");\n code.push(key);\n if (key !== value || this.opts.es5) {\n code.push(\":\");\n (0, code_1.addCodeArg)(code, value);\n }\n }\n code.push(\"}\");\n return new code_1._Code(code);\n }\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition, thenBody, elseBody) {\n this._blockNode(new If(condition));\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf();\n }\n else if (thenBody) {\n this.code(thenBody).endIf();\n }\n else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body');\n }\n return this;\n }\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition) {\n return this._elseNode(new If(condition));\n }\n // `else` clause - only valid after `if` or `else if` clauses\n else() {\n return this._elseNode(new Else());\n }\n // end `if` statement (needed if gen.if was used only with condition)\n endIf() {\n return this._endBlockNode(If, Else);\n }\n _for(node, forBody) {\n this._blockNode(node);\n if (forBody)\n this.code(forBody).endFor();\n return this;\n }\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration, forBody) {\n return this._for(new ForLoop(iteration), forBody);\n }\n // `for` statement for a range of values\n forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) {\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name));\n }\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) {\n const name = this._scope.toName(nameOrPrefix);\n if (this.opts.es5) {\n const arr = iterable instanceof code_1.Name ? iterable : this.var(\"_arr\", iterable);\n return this.forRange(\"_i\", 0, (0, code_1._) `${arr}.length`, (i) => {\n this.var(name, (0, code_1._) `${arr}[${i}]`);\n forBody(name);\n });\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name));\n }\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, (0, code_1._) `Object.keys(${obj})`, forBody);\n }\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name));\n }\n // end `for` loop\n endFor() {\n return this._endBlockNode(For);\n }\n // `label` statement\n label(label) {\n return this._leafNode(new Label(label));\n }\n // `break` statement\n break(label) {\n return this._leafNode(new Break(label));\n }\n // `return` statement\n return(value) {\n const node = new Return();\n this._blockNode(node);\n this.code(value);\n if (node.nodes.length !== 1)\n throw new Error('CodeGen: \"return\" should have one node');\n return this._endBlockNode(Return);\n }\n // `try` statement\n try(tryBody, catchCode, finallyCode) {\n if (!catchCode && !finallyCode)\n throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"');\n const node = new Try();\n this._blockNode(node);\n this.code(tryBody);\n if (catchCode) {\n const error = this.name(\"e\");\n this._currNode = node.catch = new Catch(error);\n catchCode(error);\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally();\n this.code(finallyCode);\n }\n return this._endBlockNode(Catch, Finally);\n }\n // `throw` statement\n throw(error) {\n return this._leafNode(new Throw(error));\n }\n // start self-balancing block\n block(body, nodeCount) {\n this._blockStarts.push(this._nodes.length);\n if (body)\n this.code(body).endBlock(nodeCount);\n return this;\n }\n // end the current self-balancing block\n endBlock(nodeCount) {\n const len = this._blockStarts.pop();\n if (len === undefined)\n throw new Error(\"CodeGen: not in self-balancing block\");\n const toClose = this._nodes.length - len;\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);\n }\n this._nodes.length = len;\n return this;\n }\n // `function` heading (or definition if funcBody is passed)\n func(name, args = code_1.nil, async, funcBody) {\n this._blockNode(new Func(name, args, async));\n if (funcBody)\n this.code(funcBody).endFunc();\n return this;\n }\n // end function definition\n endFunc() {\n return this._endBlockNode(Func);\n }\n optimize(n = 1) {\n while (n-- > 0) {\n this._root.optimizeNodes();\n this._root.optimizeNames(this._root.names, this._constants);\n }\n }\n _leafNode(node) {\n this._currNode.nodes.push(node);\n return this;\n }\n _blockNode(node) {\n this._currNode.nodes.push(node);\n this._nodes.push(node);\n }\n _endBlockNode(N1, N2) {\n const n = this._currNode;\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop();\n return this;\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`);\n }\n _elseNode(node) {\n const n = this._currNode;\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"');\n }\n this._currNode = n.else = node;\n return this;\n }\n get _root() {\n return this._nodes[0];\n }\n get _currNode() {\n const ns = this._nodes;\n return ns[ns.length - 1];\n }\n set _currNode(node) {\n const ns = this._nodes;\n ns[ns.length - 1] = node;\n }\n}\nexports.CodeGen = CodeGen;\nfunction addNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) + (from[n] || 0);\n return names;\n}\nfunction addExprNames(names, from) {\n return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;\n}\nfunction optimizeExpr(expr, names, constants) {\n if (expr instanceof code_1.Name)\n return replaceName(expr);\n if (!canOptimize(expr))\n return expr;\n return new code_1._Code(expr._items.reduce((items, c) => {\n if (c instanceof code_1.Name)\n c = replaceName(c);\n if (c instanceof code_1._Code)\n items.push(...c._items);\n else\n items.push(c);\n return items;\n }, []));\n function replaceName(n) {\n const c = constants[n.str];\n if (c === undefined || names[n.str] !== 1)\n return n;\n delete names[n.str];\n return c;\n }\n function canOptimize(e) {\n return (e instanceof code_1._Code &&\n e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== undefined));\n }\n}\nfunction subtractNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) - (from[n] || 0);\n}\nfunction not(x) {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : (0, code_1._) `!${par(x)}`;\n}\nexports.not = not;\nconst andCode = mappend(exports.operators.AND);\n// boolean AND (&&) expression with the passed arguments\nfunction and(...args) {\n return args.reduce(andCode);\n}\nexports.and = and;\nconst orCode = mappend(exports.operators.OR);\n// boolean OR (||) expression with the passed arguments\nfunction or(...args) {\n return args.reduce(orCode);\n}\nexports.or = or;\nfunction mappend(op) {\n return (x, y) => (x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._) `${par(x)} ${op} ${par(y)}`);\n}\nfunction par(x) {\n return x instanceof code_1.Name ? x : (0, code_1._) `(${x})`;\n}\n//# sourceMappingURL=index.js.map",
8
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst code_1 = require(\"./codegen/code\");\n// TODO refactor to use Set\nfunction toHash(arr) {\n const hash = {};\n for (const item of arr)\n hash[item] = true;\n return hash;\n}\nexports.toHash = toHash;\nfunction alwaysValidSchema(it, schema) {\n if (typeof schema == \"boolean\")\n return schema;\n if (Object.keys(schema).length === 0)\n return true;\n checkUnknownRules(it, schema);\n return !schemaHasRules(schema, it.self.RULES.all);\n}\nexports.alwaysValidSchema = alwaysValidSchema;\nfunction checkUnknownRules(it, schema = it.schema) {\n const { opts, self } = it;\n if (!opts.strictSchema)\n return;\n if (typeof schema === \"boolean\")\n return;\n const rules = self.RULES.keywords;\n for (const key in schema) {\n if (!rules[key])\n checkStrictMode(it, `unknown keyword: \"${key}\"`);\n }\n}\nexports.checkUnknownRules = checkUnknownRules;\nfunction schemaHasRules(schema, rules) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (rules[key])\n return true;\n return false;\n}\nexports.schemaHasRules = schemaHasRules;\nfunction schemaHasRulesButRef(schema, RULES) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (key !== \"$ref\" && RULES.all[key])\n return true;\n return false;\n}\nexports.schemaHasRulesButRef = schemaHasRulesButRef;\nfunction schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\")\n return schema;\n if (typeof schema == \"string\")\n return (0, codegen_1._) `${schema}`;\n }\n return (0, codegen_1._) `${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`;\n}\nexports.schemaRefOrVal = schemaRefOrVal;\nfunction unescapeFragment(str) {\n return unescapeJsonPointer(decodeURIComponent(str));\n}\nexports.unescapeFragment = unescapeFragment;\nfunction escapeFragment(str) {\n return encodeURIComponent(escapeJsonPointer(str));\n}\nexports.escapeFragment = escapeFragment;\nfunction escapeJsonPointer(str) {\n if (typeof str == \"number\")\n return `${str}`;\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nexports.escapeJsonPointer = escapeJsonPointer;\nfunction unescapeJsonPointer(str) {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\nexports.unescapeJsonPointer = unescapeJsonPointer;\nfunction eachItem(xs, f) {\n if (Array.isArray(xs)) {\n for (const x of xs)\n f(x);\n }\n else {\n f(xs);\n }\n}\nexports.eachItem = eachItem;\nfunction makeMergeEvaluated({ mergeNames, mergeToName, mergeValues, resultToName, }) {\n return (gen, from, to, toName) => {\n const res = to === undefined\n ? from\n : to instanceof codegen_1.Name\n ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof codegen_1.Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to);\n return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res;\n };\n}\nexports.mergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => {\n gen.if((0, codegen_1._) `${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._) `${to} || {}`).code((0, codegen_1._) `Object.assign(${to}, ${from})`));\n }),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true);\n }\n else {\n gen.assign(to, (0, codegen_1._) `${to} || {}`);\n setEvaluated(gen, to, from);\n }\n }),\n mergeValues: (from, to) => (from === true ? true : { ...from, ...to }),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._) `${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._) `${to} > ${from} ? ${to} : ${from}`)),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n};\nfunction evaluatedPropsToName(gen, ps) {\n if (ps === true)\n return gen.var(\"props\", true);\n const props = gen.var(\"props\", (0, codegen_1._) `{}`);\n if (ps !== undefined)\n setEvaluated(gen, props, ps);\n return props;\n}\nexports.evaluatedPropsToName = evaluatedPropsToName;\nfunction setEvaluated(gen, props, ps) {\n Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._) `${props}${(0, codegen_1.getProperty)(p)}`, true));\n}\nexports.setEvaluated = setEvaluated;\nconst snippets = {};\nfunction useFunc(gen, f) {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)),\n });\n}\nexports.useFunc = useFunc;\nvar Type;\n(function (Type) {\n Type[Type[\"Num\"] = 0] = \"Num\";\n Type[Type[\"Str\"] = 1] = \"Str\";\n})(Type || (exports.Type = Type = {}));\nfunction getErrorPath(dataProp, dataPropType, jsPropertySyntax) {\n // let path\n if (dataProp instanceof codegen_1.Name) {\n const isNumber = dataPropType === Type.Num;\n return jsPropertySyntax\n ? isNumber\n ? (0, codegen_1._) `\"[\" + ${dataProp} + \"]\"`\n : (0, codegen_1._) `\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? (0, codegen_1._) `\"/\" + ${dataProp}`\n : (0, codegen_1._) `\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")`; // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp);\n}\nexports.getErrorPath = getErrorPath;\nfunction checkStrictMode(it, msg, mode = it.opts.strictSchema) {\n if (!mode)\n return;\n msg = `strict mode: ${msg}`;\n if (mode === true)\n throw new Error(msg);\n it.self.logger.warn(msg);\n}\nexports.checkStrictMode = checkStrictMode;\n//# sourceMappingURL=util.js.map",
9
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"./codegen\");\nconst names = {\n // validation function arguments\n data: new codegen_1.Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new codegen_1.Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new codegen_1.Name(\"instancePath\"),\n parentData: new codegen_1.Name(\"parentData\"),\n parentDataProperty: new codegen_1.Name(\"parentDataProperty\"),\n rootData: new codegen_1.Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new codegen_1.Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new codegen_1.Name(\"vErrors\"), // null or array of validation errors\n errors: new codegen_1.Name(\"errors\"), // counter of validation errors\n this: new codegen_1.Name(\"this\"),\n // \"globals\"\n self: new codegen_1.Name(\"self\"),\n scope: new codegen_1.Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new codegen_1.Name(\"json\"),\n jsonPos: new codegen_1.Name(\"jsonPos\"),\n jsonLen: new codegen_1.Name(\"jsonLen\"),\n jsonPart: new codegen_1.Name(\"jsonPart\"),\n};\nexports.default = names;\n//# sourceMappingURL=names.js.map",
10
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst util_1 = require(\"./util\");\nconst names_1 = require(\"./names\");\nexports.keywordError = {\n message: ({ keyword }) => (0, codegen_1.str) `must pass \"${keyword}\" keyword validation`,\n};\nexports.keyword$DataError = {\n message: ({ keyword, schemaType }) => schemaType\n ? (0, codegen_1.str) `\"${keyword}\" keyword must be ${schemaType} ($data)`\n : (0, codegen_1.str) `\"${keyword}\" keyword is invalid ($data)`,\n};\nfunction reportError(cxt, error = exports.keywordError, errorPaths, overrideAllErrors) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : (compositeRule || allErrors)) {\n addError(gen, errObj);\n }\n else {\n returnErrors(it, (0, codegen_1._) `[${errObj}]`);\n }\n}\nexports.reportError = reportError;\nfunction reportExtraError(cxt, error = exports.keywordError, errorPaths) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n addError(gen, errObj);\n if (!(compositeRule || allErrors)) {\n returnErrors(it, names_1.default.vErrors);\n }\n}\nexports.reportExtraError = reportExtraError;\nfunction resetErrorsCount(gen, errsCount) {\n gen.assign(names_1.default.errors, errsCount);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._) `${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null)));\n}\nexports.resetErrorsCount = resetErrorsCount;\nfunction extendErrors({ gen, keyword, schemaValue, data, errsCount, it, }) {\n /* istanbul ignore if */\n if (errsCount === undefined)\n throw new Error(\"ajv implementation error\");\n const err = gen.name(\"err\");\n gen.forRange(\"i\", errsCount, names_1.default.errors, (i) => {\n gen.const(err, (0, codegen_1._) `${names_1.default.vErrors}[${i}]`);\n gen.if((0, codegen_1._) `${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._) `${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath)));\n gen.assign((0, codegen_1._) `${err}.schemaPath`, (0, codegen_1.str) `${it.errSchemaPath}/${keyword}`);\n if (it.opts.verbose) {\n gen.assign((0, codegen_1._) `${err}.schema`, schemaValue);\n gen.assign((0, codegen_1._) `${err}.data`, data);\n }\n });\n}\nexports.extendErrors = extendErrors;\nfunction addError(gen, errObj) {\n const err = gen.const(\"err\", errObj);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._) `[${err}]`), (0, codegen_1._) `${names_1.default.vErrors}.push(${err})`);\n gen.code((0, codegen_1._) `${names_1.default.errors}++`);\n}\nfunction returnErrors(it, errs) {\n const { gen, validateName, schemaEnv } = it;\n if (schemaEnv.$async) {\n gen.throw((0, codegen_1._) `new ${it.ValidationError}(${errs})`);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, errs);\n gen.return(false);\n }\n}\nconst E = {\n keyword: new codegen_1.Name(\"keyword\"),\n schemaPath: new codegen_1.Name(\"schemaPath\"), // also used in JTD errors\n params: new codegen_1.Name(\"params\"),\n propertyName: new codegen_1.Name(\"propertyName\"),\n message: new codegen_1.Name(\"message\"),\n schema: new codegen_1.Name(\"schema\"),\n parentSchema: new codegen_1.Name(\"parentSchema\"),\n};\nfunction errorObjectCode(cxt, error, errorPaths) {\n const { createErrors } = cxt.it;\n if (createErrors === false)\n return (0, codegen_1._) `{}`;\n return errorObject(cxt, error, errorPaths);\n}\nfunction errorObject(cxt, error, errorPaths = {}) {\n const { gen, it } = cxt;\n const keyValues = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ];\n extraErrorProps(cxt, error, keyValues);\n return gen.object(...keyValues);\n}\nfunction errorInstancePath({ errorPath }, { instancePath }) {\n const instPath = instancePath\n ? (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}`\n : errorPath;\n return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)];\n}\nfunction errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) {\n let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str) `${errSchemaPath}/${keyword}`;\n if (schemaPath) {\n schPath = (0, codegen_1.str) `${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`;\n }\n return [E.schemaPath, schPath];\n}\nfunction extraErrorProps(cxt, { params, message }, keyValues) {\n const { keyword, data, schemaValue, it } = cxt;\n const { opts, propertyName, topSchemaRef, schemaPath } = it;\n keyValues.push([E.keyword, keyword], [E.params, typeof params == \"function\" ? params(cxt) : params || (0, codegen_1._) `{}`]);\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message]);\n }\n if (opts.verbose) {\n keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._) `${topSchemaRef}${schemaPath}`], [names_1.default.data, data]);\n }\n if (propertyName)\n keyValues.push([E.propertyName, propertyName]);\n}\n//# sourceMappingURL=errors.js.map",
11
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0;\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst boolError = {\n message: \"boolean schema is false\",\n};\nfunction topBoolOrEmptySchema(it) {\n const { gen, schema, validateName } = it;\n if (schema === false) {\n falseSchemaError(it, false);\n }\n else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(names_1.default.data);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, null);\n gen.return(true);\n }\n}\nexports.topBoolOrEmptySchema = topBoolOrEmptySchema;\nfunction boolOrEmptySchema(it, valid) {\n const { gen, schema } = it;\n if (schema === false) {\n gen.var(valid, false); // TODO var\n falseSchemaError(it);\n }\n else {\n gen.var(valid, true); // TODO var\n }\n}\nexports.boolOrEmptySchema = boolOrEmptySchema;\nfunction falseSchemaError(it, overrideAllErrors) {\n const { gen, data } = it;\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n };\n (0, errors_1.reportError)(cxt, boolError, undefined, overrideAllErrors);\n}\n//# sourceMappingURL=boolSchema.js.map",
12
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRules = exports.isJSONType = void 0;\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"];\nconst jsonTypes = new Set(_jsonTypes);\nfunction isJSONType(x) {\n return typeof x == \"string\" && jsonTypes.has(x);\n}\nexports.isJSONType = isJSONType;\nfunction getRules() {\n const groups = {\n number: { type: \"number\", rules: [] },\n string: { type: \"string\", rules: [] },\n array: { type: \"array\", rules: [] },\n object: { type: \"object\", rules: [] },\n };\n return {\n types: { ...groups, integer: true, boolean: true, null: true },\n rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object],\n post: { rules: [] },\n all: {},\n keywords: {},\n };\n}\nexports.getRules = getRules;\n//# sourceMappingURL=rules.js.map",
13
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0;\nfunction schemaHasRulesForType({ schema, self }, type) {\n const group = self.RULES.types[type];\n return group && group !== true && shouldUseGroup(schema, group);\n}\nexports.schemaHasRulesForType = schemaHasRulesForType;\nfunction shouldUseGroup(schema, group) {\n return group.rules.some((rule) => shouldUseRule(schema, rule));\n}\nexports.shouldUseGroup = shouldUseGroup;\nfunction shouldUseRule(schema, rule) {\n var _a;\n return (schema[rule.keyword] !== undefined ||\n ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== undefined)));\n}\nexports.shouldUseRule = shouldUseRule;\n//# sourceMappingURL=applicability.js.map",
14
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0;\nconst rules_1 = require(\"../rules\");\nconst applicability_1 = require(\"./applicability\");\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nvar DataType;\n(function (DataType) {\n DataType[DataType[\"Correct\"] = 0] = \"Correct\";\n DataType[DataType[\"Wrong\"] = 1] = \"Wrong\";\n})(DataType || (exports.DataType = DataType = {}));\nfunction getSchemaTypes(schema) {\n const types = getJSONTypes(schema.type);\n const hasNull = types.includes(\"null\");\n if (hasNull) {\n if (schema.nullable === false)\n throw new Error(\"type: null contradicts nullable: false\");\n }\n else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"');\n }\n if (schema.nullable === true)\n types.push(\"null\");\n }\n return types;\n}\nexports.getSchemaTypes = getSchemaTypes;\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nfunction getJSONTypes(ts) {\n const types = Array.isArray(ts) ? ts : ts ? [ts] : [];\n if (types.every(rules_1.isJSONType))\n return types;\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"));\n}\nexports.getJSONTypes = getJSONTypes;\nfunction coerceAndCheckDataType(it, types) {\n const { gen, data, opts } = it;\n const coerceTo = coerceToTypes(types, opts.coerceTypes);\n const checkTypes = types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0]));\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong);\n gen.if(wrongType, () => {\n if (coerceTo.length)\n coerceData(it, types, coerceTo);\n else\n reportTypeError(it);\n });\n }\n return checkTypes;\n}\nexports.coerceAndCheckDataType = coerceAndCheckDataType;\nconst COERCIBLE = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"]);\nfunction coerceToTypes(types, coerceTypes) {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : [];\n}\nfunction coerceData(it, types, coerceTo) {\n const { gen, data, opts } = it;\n const dataType = gen.let(\"dataType\", (0, codegen_1._) `typeof ${data}`);\n const coerced = gen.let(\"coerced\", (0, codegen_1._) `undefined`);\n if (opts.coerceTypes === \"array\") {\n gen.if((0, codegen_1._) `${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen\n .assign(data, (0, codegen_1._) `${data}[0]`)\n .assign(dataType, (0, codegen_1._) `typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data)));\n }\n gen.if((0, codegen_1._) `${coerced} !== undefined`);\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t);\n }\n }\n gen.else();\n reportTypeError(it);\n gen.endIf();\n gen.if((0, codegen_1._) `${coerced} !== undefined`, () => {\n gen.assign(data, coerced);\n assignParentData(it, coerced);\n });\n function coerceSpecificType(t) {\n switch (t) {\n case \"string\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, (0, codegen_1._) `\"\" + ${data}`)\n .elseIf((0, codegen_1._) `${data} === null`)\n .assign(coerced, (0, codegen_1._) `\"\"`);\n return;\n case \"number\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"integer\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"boolean\":\n gen\n .elseIf((0, codegen_1._) `${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf((0, codegen_1._) `${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true);\n return;\n case \"null\":\n gen.elseIf((0, codegen_1._) `${data} === \"\" || ${data} === 0 || ${data} === false`);\n gen.assign(coerced, null);\n return;\n case \"array\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`)\n .assign(coerced, (0, codegen_1._) `[${data}]`);\n }\n }\n}\nfunction assignParentData({ gen, parentData, parentDataProperty }, expr) {\n // TODO use gen.property\n gen.if((0, codegen_1._) `${parentData} !== undefined`, () => gen.assign((0, codegen_1._) `${parentData}[${parentDataProperty}]`, expr));\n}\nfunction checkDataType(dataType, data, strictNums, correct = DataType.Correct) {\n const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ;\n let cond;\n switch (dataType) {\n case \"null\":\n return (0, codegen_1._) `${data} ${EQ} null`;\n case \"array\":\n cond = (0, codegen_1._) `Array.isArray(${data})`;\n break;\n case \"object\":\n cond = (0, codegen_1._) `${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`;\n break;\n case \"integer\":\n cond = numCond((0, codegen_1._) `!(${data} % 1) && !isNaN(${data})`);\n break;\n case \"number\":\n cond = numCond();\n break;\n default:\n return (0, codegen_1._) `typeof ${data} ${EQ} ${dataType}`;\n }\n return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond);\n function numCond(_cond = codegen_1.nil) {\n return (0, codegen_1.and)((0, codegen_1._) `typeof ${data} == \"number\"`, _cond, strictNums ? (0, codegen_1._) `isFinite(${data})` : codegen_1.nil);\n }\n}\nexports.checkDataType = checkDataType;\nfunction checkDataTypes(dataTypes, data, strictNums, correct) {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct);\n }\n let cond;\n const types = (0, util_1.toHash)(dataTypes);\n if (types.array && types.object) {\n const notObj = (0, codegen_1._) `typeof ${data} != \"object\"`;\n cond = types.null ? notObj : (0, codegen_1._) `!${data} || ${notObj}`;\n delete types.null;\n delete types.array;\n delete types.object;\n }\n else {\n cond = codegen_1.nil;\n }\n if (types.number)\n delete types.integer;\n for (const t in types)\n cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct));\n return cond;\n}\nexports.checkDataTypes = checkDataTypes;\nconst typeError = {\n message: ({ schema }) => `must be ${schema}`,\n params: ({ schema, schemaValue }) => typeof schema == \"string\" ? (0, codegen_1._) `{type: ${schema}}` : (0, codegen_1._) `{type: ${schemaValue}}`,\n};\nfunction reportTypeError(it) {\n const cxt = getTypeErrorContext(it);\n (0, errors_1.reportError)(cxt, typeError);\n}\nexports.reportTypeError = reportTypeError;\nfunction getTypeErrorContext(it) {\n const { gen, data, schema } = it;\n const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, \"type\");\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n };\n}\n//# sourceMappingURL=dataType.js.map",
15
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assignDefaults = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction assignDefaults(it, ty) {\n const { properties, items } = it.schema;\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default);\n }\n }\n else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i) => assignDefault(it, i, sch.default));\n }\n}\nexports.assignDefaults = assignDefaults;\nfunction assignDefault(it, prop, defaultValue) {\n const { gen, compositeRule, data, opts } = it;\n if (defaultValue === undefined)\n return;\n const childData = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(prop)}`;\n if (compositeRule) {\n (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`);\n return;\n }\n let condition = (0, codegen_1._) `${childData} === undefined`;\n if (opts.useDefaults === \"empty\") {\n condition = (0, codegen_1._) `${condition} || ${childData} === null || ${childData} === \"\"`;\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, (0, codegen_1._) `${childData} = ${(0, codegen_1.stringify)(defaultValue)}`);\n}\n//# sourceMappingURL=defaults.js.map",
16
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0;\nconst codegen_1 = require(\"../compile/codegen\");\nconst util_1 = require(\"../compile/util\");\nconst names_1 = require(\"../compile/names\");\nconst util_2 = require(\"../compile/util\");\nfunction checkReportMissingProp(cxt, prop) {\n const { gen, data, it } = cxt;\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({ missingProperty: (0, codegen_1._) `${prop}` }, true);\n cxt.error();\n });\n}\nexports.checkReportMissingProp = checkReportMissingProp;\nfunction checkMissingProp({ gen, data, it: { opts } }, properties, missing) {\n return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._) `${missing} = ${prop}`)));\n}\nexports.checkMissingProp = checkMissingProp;\nfunction reportMissingProp(cxt, missing) {\n cxt.setParams({ missingProperty: missing }, true);\n cxt.error();\n}\nexports.reportMissingProp = reportMissingProp;\nfunction hasPropFunc(gen) {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: (0, codegen_1._) `Object.prototype.hasOwnProperty`,\n });\n}\nexports.hasPropFunc = hasPropFunc;\nfunction isOwnProperty(gen, data, property) {\n return (0, codegen_1._) `${hasPropFunc(gen)}.call(${data}, ${property})`;\n}\nexports.isOwnProperty = isOwnProperty;\nfunction propertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} !== undefined`;\n return ownProperties ? (0, codegen_1._) `${cond} && ${isOwnProperty(gen, data, property)}` : cond;\n}\nexports.propertyInData = propertyInData;\nfunction noPropertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} === undefined`;\n return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond;\n}\nexports.noPropertyInData = noPropertyInData;\nfunction allSchemaProperties(schemaMap) {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : [];\n}\nexports.allSchemaProperties = allSchemaProperties;\nfunction schemaProperties(it, schemaMap) {\n return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p]));\n}\nexports.schemaProperties = schemaProperties;\nfunction callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) {\n const dataAndSchema = passSchema ? (0, codegen_1._) `${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data;\n const valCxt = [\n [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)],\n [names_1.default.parentData, it.parentData],\n [names_1.default.parentDataProperty, it.parentDataProperty],\n [names_1.default.rootData, names_1.default.rootData],\n ];\n if (it.opts.dynamicRef)\n valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]);\n const args = (0, codegen_1._) `${dataAndSchema}, ${gen.object(...valCxt)}`;\n return context !== codegen_1.nil ? (0, codegen_1._) `${func}.call(${context}, ${args})` : (0, codegen_1._) `${func}(${args})`;\n}\nexports.callValidateCode = callValidateCode;\nconst newRegExp = (0, codegen_1._) `new RegExp`;\nfunction usePattern({ gen, it: { opts } }, pattern) {\n const u = opts.unicodeRegExp ? \"u\" : \"\";\n const { regExp } = opts.code;\n const rx = regExp(pattern, u);\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: (0, codegen_1._) `${regExp.code === \"new RegExp\" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})`,\n });\n}\nexports.usePattern = usePattern;\nfunction validateArray(cxt) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true);\n validateItems(() => gen.assign(validArr, false));\n return validArr;\n }\n gen.var(valid, true);\n validateItems(() => gen.break());\n return valid;\n function validateItems(notValid) {\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword,\n dataProp: i,\n dataPropType: util_1.Type.Num,\n }, valid);\n gen.if((0, codegen_1.not)(valid), notValid);\n });\n }\n}\nexports.validateArray = validateArray;\nfunction validateUnion(cxt) {\n const { gen, schema, keyword, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch));\n if (alwaysValid && !it.opts.unevaluated)\n return;\n const valid = gen.let(\"valid\", false);\n const schValid = gen.name(\"_valid\");\n gen.block(() => schema.forEach((_sch, i) => {\n const schCxt = cxt.subschema({\n keyword,\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n gen.assign(valid, (0, codegen_1._) `${valid} || ${schValid}`);\n const merged = cxt.mergeValidEvaluated(schCxt, schValid);\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged)\n gen.if((0, codegen_1.not)(valid));\n }));\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n}\nexports.validateUnion = validateUnion;\n//# sourceMappingURL=code.js.map",
17
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst code_1 = require(\"../../vocabularies/code\");\nconst errors_1 = require(\"../errors\");\nfunction macroKeywordCode(cxt, def) {\n const { gen, keyword, schema, parentSchema, it } = cxt;\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it);\n const schemaRef = useKeyword(gen, keyword, macroSchema);\n if (it.opts.validateSchema !== false)\n it.self.validateSchema(macroSchema, true);\n const valid = gen.name(\"valid\");\n cxt.subschema({\n schema: macroSchema,\n schemaPath: codegen_1.nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n }, valid);\n cxt.pass(valid, () => cxt.error(true));\n}\nexports.macroKeywordCode = macroKeywordCode;\nfunction funcKeywordCode(cxt, def) {\n var _a;\n const { gen, keyword, schema, parentSchema, $data, it } = cxt;\n checkAsyncKeyword(it, def);\n const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate;\n const validateRef = useKeyword(gen, keyword, validate);\n const valid = gen.let(\"valid\");\n cxt.block$data(valid, validateKeyword);\n cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid);\n function validateKeyword() {\n if (def.errors === false) {\n assignValid();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => cxt.error());\n }\n else {\n const ruleErrs = def.async ? validateAsync() : validateSync();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => addErrs(cxt, ruleErrs));\n }\n }\n function validateAsync() {\n const ruleErrs = gen.let(\"ruleErrs\", null);\n gen.try(() => assignValid((0, codegen_1._) `await `), (e) => gen.assign(valid, false).if((0, codegen_1._) `${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._) `${e}.errors`), () => gen.throw(e)));\n return ruleErrs;\n }\n function validateSync() {\n const validateErrs = (0, codegen_1._) `${validateRef}.errors`;\n gen.assign(validateErrs, null);\n assignValid(codegen_1.nil);\n return validateErrs;\n }\n function assignValid(_await = def.async ? (0, codegen_1._) `await ` : codegen_1.nil) {\n const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self;\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false);\n gen.assign(valid, (0, codegen_1._) `${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying);\n }\n function reportErrs(errors) {\n var _a;\n gen.if((0, codegen_1.not)((_a = def.valid) !== null && _a !== void 0 ? _a : valid), errors);\n }\n}\nexports.funcKeywordCode = funcKeywordCode;\nfunction modifyData(cxt) {\n const { gen, data, it } = cxt;\n gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._) `${it.parentData}[${it.parentDataProperty}]`));\n}\nfunction addErrs(cxt, errs) {\n const { gen } = cxt;\n gen.if((0, codegen_1._) `Array.isArray(${errs})`, () => {\n gen\n .assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`)\n .assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n (0, errors_1.extendErrors)(cxt);\n }, () => cxt.error());\n}\nfunction checkAsyncKeyword({ schemaEnv }, def) {\n if (def.async && !schemaEnv.$async)\n throw new Error(\"async keyword in sync schema\");\n}\nfunction useKeyword(gen, keyword, result) {\n if (result === undefined)\n throw new Error(`keyword \"${keyword}\" failed to compile`);\n return gen.scopeValue(\"keyword\", typeof result == \"function\" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) });\n}\nfunction validSchemaType(schema, schemaType, allowUndefined = false) {\n // TODO add tests\n return (!schemaType.length ||\n schemaType.some((st) => st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")));\n}\nexports.validSchemaType = validSchemaType;\nfunction validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\");\n }\n const deps = def.dependencies;\n if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`);\n }\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword]);\n if (!valid) {\n const msg = `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors);\n if (opts.validateSchema === \"log\")\n self.logger.error(msg);\n else\n throw new Error(msg);\n }\n }\n}\nexports.validateKeywordUsage = validateKeywordUsage;\n//# sourceMappingURL=keyword.js.map",
18
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed');\n }\n if (keyword !== undefined) {\n const sch = it.schema[keyword];\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}`,\n };\n }\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"');\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n };\n }\n throw new Error('either \"keyword\" or \"schema\" must be passed');\n}\nexports.getSubschema = getSubschema;\nfunction extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed');\n }\n const { gen } = it;\n if (dataProp !== undefined) {\n const { errorPath, dataPathArr, opts } = it;\n const nextData = gen.let(\"data\", (0, codegen_1._) `${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true);\n dataContextProps(nextData);\n subschema.errorPath = (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`;\n subschema.parentDataProperty = (0, codegen_1._) `${dataProp}`;\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty];\n }\n if (data !== undefined) {\n const nextData = data instanceof codegen_1.Name ? data : gen.let(\"data\", data, true); // replaceable if used once?\n dataContextProps(nextData);\n if (propertyName !== undefined)\n subschema.propertyName = propertyName;\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n if (dataTypes)\n subschema.dataTypes = dataTypes;\n function dataContextProps(_nextData) {\n subschema.data = _nextData;\n subschema.dataLevel = it.dataLevel + 1;\n subschema.dataTypes = [];\n it.definedProperties = new Set();\n subschema.parentData = it.data;\n subschema.dataNames = [...it.dataNames, _nextData];\n }\n}\nexports.extendSubschemaData = extendSubschemaData;\nfunction extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) {\n if (compositeRule !== undefined)\n subschema.compositeRule = compositeRule;\n if (createErrors !== undefined)\n subschema.createErrors = createErrors;\n if (allErrors !== undefined)\n subschema.allErrors = allErrors;\n subschema.jtdDiscriminator = jtdDiscriminator; // not inherited\n subschema.jtdMetadata = jtdMetadata; // not inherited\n}\nexports.extendSubschemaMode = extendSubschemaMode;\n//# sourceMappingURL=subschema.js.map",
19
+ "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n",
20
+ "'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n",
21
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0;\nconst util_1 = require(\"./util\");\nconst equal = require(\"fast-deep-equal\");\nconst traverse = require(\"json-schema-traverse\");\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n]);\nfunction inlineRef(schema, limit = true) {\n if (typeof schema == \"boolean\")\n return true;\n if (limit === true)\n return !hasRef(schema);\n if (!limit)\n return false;\n return countKeys(schema) <= limit;\n}\nexports.inlineRef = inlineRef;\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n]);\nfunction hasRef(schema) {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key))\n return true;\n const sch = schema[key];\n if (Array.isArray(sch) && sch.some(hasRef))\n return true;\n if (typeof sch == \"object\" && hasRef(sch))\n return true;\n }\n return false;\n}\nfunction countKeys(schema) {\n let count = 0;\n for (const key in schema) {\n if (key === \"$ref\")\n return Infinity;\n count++;\n if (SIMPLE_INLINED.has(key))\n continue;\n if (typeof schema[key] == \"object\") {\n (0, util_1.eachItem)(schema[key], (sch) => (count += countKeys(sch)));\n }\n if (count === Infinity)\n return Infinity;\n }\n return count;\n}\nfunction getFullPath(resolver, id = \"\", normalize) {\n if (normalize !== false)\n id = normalizeId(id);\n const p = resolver.parse(id);\n return _getFullPath(resolver, p);\n}\nexports.getFullPath = getFullPath;\nfunction _getFullPath(resolver, p) {\n const serialized = resolver.serialize(p);\n return serialized.split(\"#\")[0] + \"#\";\n}\nexports._getFullPath = _getFullPath;\nconst TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\";\n}\nexports.normalizeId = normalizeId;\nfunction resolveUrl(resolver, baseId, id) {\n id = normalizeId(id);\n return resolver.resolve(baseId, id);\n}\nexports.resolveUrl = resolveUrl;\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i;\nfunction getSchemaRefs(schema, baseId) {\n if (typeof schema == \"boolean\")\n return {};\n const { schemaId, uriResolver } = this.opts;\n const schId = normalizeId(schema[schemaId] || baseId);\n const baseIds = { \"\": schId };\n const pathPrefix = getFullPath(uriResolver, schId, false);\n const localRefs = {};\n const schemaRefs = new Set();\n traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined)\n return;\n const fullPath = pathPrefix + jsonPtr;\n let innerBaseId = baseIds[parentJsonPtr];\n if (typeof sch[schemaId] == \"string\")\n innerBaseId = addRef.call(this, sch[schemaId]);\n addAnchor.call(this, sch.$anchor);\n addAnchor.call(this, sch.$dynamicAnchor);\n baseIds[jsonPtr] = innerBaseId;\n function addRef(ref) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve;\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref);\n if (schemaRefs.has(ref))\n throw ambiguos(ref);\n schemaRefs.add(ref);\n let schOrRef = this.refs[ref];\n if (typeof schOrRef == \"string\")\n schOrRef = this.refs[schOrRef];\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref);\n }\n else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref);\n localRefs[ref] = sch;\n }\n else {\n this.refs[ref] = fullPath;\n }\n }\n return ref;\n }\n function addAnchor(anchor) {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor))\n throw new Error(`invalid anchor \"${anchor}\"`);\n addRef.call(this, `#${anchor}`);\n }\n }\n });\n return localRefs;\n function checkAmbiguosRef(sch1, sch2, ref) {\n if (sch2 !== undefined && !equal(sch1, sch2))\n throw ambiguos(ref);\n }\n function ambiguos(ref) {\n return new Error(`reference \"${ref}\" resolves to more than one schema`);\n }\n}\nexports.getSchemaRefs = getSchemaRefs;\n//# sourceMappingURL=resolve.js.map",
22
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0;\nconst boolSchema_1 = require(\"./boolSchema\");\nconst dataType_1 = require(\"./dataType\");\nconst applicability_1 = require(\"./applicability\");\nconst dataType_2 = require(\"./dataType\");\nconst defaults_1 = require(\"./defaults\");\nconst keyword_1 = require(\"./keyword\");\nconst subschema_1 = require(\"./subschema\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst resolve_1 = require(\"../resolve\");\nconst util_1 = require(\"../util\");\nconst errors_1 = require(\"../errors\");\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nfunction validateFunctionCode(it) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it);\n return;\n }\n }\n validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it));\n}\nexports.validateFunctionCode = validateFunctionCode;\nfunction validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) {\n if (opts.code.es5) {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => {\n gen.code((0, codegen_1._) `\"use strict\"; ${funcSourceUrl(schema, opts)}`);\n destructureValCxtES5(gen, opts);\n gen.code(body);\n });\n }\n else {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body));\n }\n}\nfunction destructureValCxt(opts) {\n return (0, codegen_1._) `{${names_1.default.instancePath}=\"\", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._) `, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`;\n}\nfunction destructureValCxtES5(gen, opts) {\n gen.if(names_1.default.valCxt, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.instancePath}`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentData}`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentDataProperty}`);\n gen.var(names_1.default.rootData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.rootData}`);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`);\n }, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `\"\"`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.rootData, names_1.default.data);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `{}`);\n });\n}\nfunction topSchemaObjCode(it) {\n const { schema, opts, gen } = it;\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n checkNoDefault(it);\n gen.let(names_1.default.vErrors, null);\n gen.let(names_1.default.errors, 0);\n if (opts.unevaluated)\n resetEvaluated(it);\n typeAndKeywords(it);\n returnResults(it);\n });\n return;\n}\nfunction resetEvaluated(it) {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const { gen, validateName } = it;\n it.evaluated = gen.const(\"evaluated\", (0, codegen_1._) `${validateName}.evaluated`);\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._) `${it.evaluated}.props`, (0, codegen_1._) `undefined`));\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._) `${it.evaluated}.items`, (0, codegen_1._) `undefined`));\n}\nfunction funcSourceUrl(schema, opts) {\n const schId = typeof schema == \"object\" && schema[opts.schemaId];\n return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._) `/*# sourceURL=${schId} */` : codegen_1.nil;\n}\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it, valid) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid);\n return;\n }\n }\n (0, boolSchema_1.boolOrEmptySchema)(it, valid);\n}\nfunction schemaCxtHasRules({ schema, self }) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (self.RULES.all[key])\n return true;\n return false;\n}\nfunction isSchemaObj(it) {\n return typeof it.schema != \"boolean\";\n}\nfunction subSchemaObjCode(it, valid) {\n const { schema, gen, opts } = it;\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n updateContext(it);\n checkAsyncSchema(it);\n const errsCount = gen.const(\"_errs\", names_1.default.errors);\n typeAndKeywords(it, errsCount);\n // TODO var\n gen.var(valid, (0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n}\nfunction checkKeywords(it) {\n (0, util_1.checkUnknownRules)(it);\n checkRefsAndKeywords(it);\n}\nfunction typeAndKeywords(it, errsCount) {\n if (it.opts.jtd)\n return schemaKeywords(it, [], false, errsCount);\n const types = (0, dataType_1.getSchemaTypes)(it.schema);\n const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types);\n schemaKeywords(it, types, !checkedTypes, errsCount);\n}\nfunction checkRefsAndKeywords(it) {\n const { schema, errSchemaPath, opts, self } = it;\n if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`);\n }\n}\nfunction checkNoDefault(it) {\n const { schema, opts } = it;\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n (0, util_1.checkStrictMode)(it, \"default is ignored in the schema root\");\n }\n}\nfunction updateContext(it) {\n const schId = it.schema[it.opts.schemaId];\n if (schId)\n it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId);\n}\nfunction checkAsyncSchema(it) {\n if (it.schema.$async && !it.schemaEnv.$async)\n throw new Error(\"async schema in sync schema\");\n}\nfunction commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) {\n const msg = schema.$comment;\n if (opts.$comment === true) {\n gen.code((0, codegen_1._) `${names_1.default.self}.logger.log(${msg})`);\n }\n else if (typeof opts.$comment == \"function\") {\n const schemaPath = (0, codegen_1.str) `${errSchemaPath}/$comment`;\n const rootName = gen.scopeValue(\"root\", { ref: schemaEnv.root });\n gen.code((0, codegen_1._) `${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`);\n }\n}\nfunction returnResults(it) {\n const { gen, schemaEnv, validateName, ValidationError, opts } = it;\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if((0, codegen_1._) `${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._) `new ${ValidationError}(${names_1.default.vErrors})`));\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, names_1.default.vErrors);\n if (opts.unevaluated)\n assignEvaluated(it);\n gen.return((0, codegen_1._) `${names_1.default.errors} === 0`);\n }\n}\nfunction assignEvaluated({ gen, evaluated, props, items }) {\n if (props instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.props`, props);\n if (items instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.items`, items);\n}\nfunction schemaKeywords(it, types, typeErrors, errsCount) {\n const { gen, schema, data, allErrors, opts, self } = it;\n const { RULES } = self;\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", RULES.all.$ref.definition)); // TODO typecast\n return;\n }\n if (!opts.jtd)\n checkStrictTypes(it, types);\n gen.block(() => {\n for (const group of RULES.rules)\n groupKeywords(group);\n groupKeywords(RULES.post);\n });\n function groupKeywords(group) {\n if (!(0, applicability_1.shouldUseGroup)(schema, group))\n return;\n if (group.type) {\n gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers));\n iterateKeywords(it, group);\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else();\n (0, dataType_2.reportTypeError)(it);\n }\n gen.endIf();\n }\n else {\n iterateKeywords(it, group);\n }\n // TODO make it \"ok\" call?\n if (!allErrors)\n gen.if((0, codegen_1._) `${names_1.default.errors} === ${errsCount || 0}`);\n }\n}\nfunction iterateKeywords(it, group) {\n const { gen, schema, opts: { useDefaults }, } = it;\n if (useDefaults)\n (0, defaults_1.assignDefaults)(it, group.type);\n gen.block(() => {\n for (const rule of group.rules) {\n if ((0, applicability_1.shouldUseRule)(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type);\n }\n }\n });\n}\nfunction checkStrictTypes(it, types) {\n if (it.schemaEnv.meta || !it.opts.strictTypes)\n return;\n checkContextTypes(it, types);\n if (!it.opts.allowUnionTypes)\n checkMultipleTypes(it, types);\n checkKeywordTypes(it, it.dataTypes);\n}\nfunction checkContextTypes(it, types) {\n if (!types.length)\n return;\n if (!it.dataTypes.length) {\n it.dataTypes = types;\n return;\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`);\n }\n });\n narrowSchemaTypes(it, types);\n}\nfunction checkMultipleTypes(it, ts) {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\");\n }\n}\nfunction checkKeywordTypes(it, ts) {\n const rules = it.self.RULES.all;\n for (const keyword in rules) {\n const rule = rules[keyword];\n if (typeof rule == \"object\" && (0, applicability_1.shouldUseRule)(it.schema, rule)) {\n const { type } = rule.definition;\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`);\n }\n }\n }\n}\nfunction hasApplicableType(schTs, kwdT) {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"));\n}\nfunction includesType(ts, t) {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"));\n}\nfunction narrowSchemaTypes(it, withTypes) {\n const ts = [];\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t))\n ts.push(t);\n else if (withTypes.includes(\"integer\") && t === \"number\")\n ts.push(\"integer\");\n }\n it.dataTypes = ts;\n}\nfunction strictTypesError(it, msg) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n msg += ` at \"${schemaPath}\" (strictTypes)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes);\n}\nclass KeywordCxt {\n constructor(it, def, keyword) {\n (0, keyword_1.validateKeywordUsage)(it, def, keyword);\n this.gen = it.gen;\n this.allErrors = it.allErrors;\n this.keyword = keyword;\n this.data = it.data;\n this.schema = it.schema[keyword];\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data;\n this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data);\n this.schemaType = def.schemaType;\n this.parentSchema = it.schema;\n this.params = {};\n this.it = it;\n this.def = def;\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it));\n }\n else {\n this.schemaCode = this.schemaValue;\n if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);\n }\n }\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", names_1.default.errors);\n }\n }\n result(condition, successAction, failAction) {\n this.failResult((0, codegen_1.not)(condition), successAction, failAction);\n }\n failResult(condition, successAction, failAction) {\n this.gen.if(condition);\n if (failAction)\n failAction();\n else\n this.error();\n if (successAction) {\n this.gen.else();\n successAction();\n if (this.allErrors)\n this.gen.endIf();\n }\n else {\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n }\n pass(condition, failAction) {\n this.failResult((0, codegen_1.not)(condition), undefined, failAction);\n }\n fail(condition) {\n if (condition === undefined) {\n this.error();\n if (!this.allErrors)\n this.gen.if(false); // this branch will be removed by gen.optimize\n return;\n }\n this.gen.if(condition);\n this.error();\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n fail$data(condition) {\n if (!this.$data)\n return this.fail(condition);\n const { schemaCode } = this;\n this.fail((0, codegen_1._) `${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`);\n }\n error(append, errorParams, errorPaths) {\n if (errorParams) {\n this.setParams(errorParams);\n this._error(append, errorPaths);\n this.setParams({});\n return;\n }\n this._error(append, errorPaths);\n }\n _error(append, errorPaths) {\n ;\n (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths);\n }\n $dataError() {\n (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError);\n }\n reset() {\n if (this.errsCount === undefined)\n throw new Error('add \"trackErrors\" to keyword definition');\n (0, errors_1.resetErrorsCount)(this.gen, this.errsCount);\n }\n ok(cond) {\n if (!this.allErrors)\n this.gen.if(cond);\n }\n setParams(obj, assign) {\n if (assign)\n Object.assign(this.params, obj);\n else\n this.params = obj;\n }\n block$data(valid, codeBlock, $dataValid = codegen_1.nil) {\n this.gen.block(() => {\n this.check$data(valid, $dataValid);\n codeBlock();\n });\n }\n check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {\n if (!this.$data)\n return;\n const { gen, schemaCode, schemaType, def } = this;\n gen.if((0, codegen_1.or)((0, codegen_1._) `${schemaCode} === undefined`, $dataValid));\n if (valid !== codegen_1.nil)\n gen.assign(valid, true);\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data());\n this.$dataError();\n if (valid !== codegen_1.nil)\n gen.assign(valid, false);\n }\n gen.else();\n }\n invalid$data() {\n const { gen, schemaCode, schemaType, def, it } = this;\n return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema());\n function wrong$DataType() {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof codegen_1.Name))\n throw new Error(\"ajv implementation error\");\n const st = Array.isArray(schemaType) ? schemaType : [schemaType];\n return (0, codegen_1._) `${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`;\n }\n return codegen_1.nil;\n }\n function invalid$DataSchema() {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", { ref: def.validateSchema }); // TODO value.code for standalone\n return (0, codegen_1._) `!${validateSchemaRef}(${schemaCode})`;\n }\n return codegen_1.nil;\n }\n }\n subschema(appl, valid) {\n const subschema = (0, subschema_1.getSubschema)(this.it, appl);\n (0, subschema_1.extendSubschemaData)(subschema, this.it, appl);\n (0, subschema_1.extendSubschemaMode)(subschema, appl);\n const nextContext = { ...this.it, ...subschema, items: undefined, props: undefined };\n subschemaCode(nextContext, valid);\n return nextContext;\n }\n mergeEvaluated(schemaCxt, toName) {\n const { it, gen } = this;\n if (!it.opts.unevaluated)\n return;\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName);\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName);\n }\n }\n mergeValidEvaluated(schemaCxt, valid) {\n const { it, gen } = this;\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name));\n return true;\n }\n }\n}\nexports.KeywordCxt = KeywordCxt;\nfunction keywordCode(it, keyword, def, ruleType) {\n const cxt = new KeywordCxt(it, def, keyword);\n if (\"code\" in def) {\n def.code(cxt, ruleType);\n }\n else if (cxt.$data && def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n else if (\"macro\" in def) {\n (0, keyword_1.macroKeywordCode)(cxt, def);\n }\n else if (def.compile || def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n}\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, { dataLevel, dataNames, dataPathArr }) {\n let jsonPointer;\n let data;\n if ($data === \"\")\n return names_1.default.rootData;\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data))\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n jsonPointer = $data;\n data = names_1.default.rootData;\n }\n else {\n const matches = RELATIVE_JSON_POINTER.exec($data);\n if (!matches)\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n const up = +matches[1];\n jsonPointer = matches[2];\n if (jsonPointer === \"#\") {\n if (up >= dataLevel)\n throw new Error(errorMsg(\"property/index\", up));\n return dataPathArr[dataLevel - up];\n }\n if (up > dataLevel)\n throw new Error(errorMsg(\"data\", up));\n data = dataNames[dataLevel - up];\n if (!jsonPointer)\n return data;\n }\n let expr = data;\n const segments = jsonPointer.split(\"/\");\n for (const segment of segments) {\n if (segment) {\n data = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`;\n expr = (0, codegen_1._) `${expr} && ${data}`;\n }\n }\n return expr;\n function errorMsg(pointerType, up) {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`;\n }\n}\nexports.getData = getData;\n//# sourceMappingURL=index.js.map",
23
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass ValidationError extends Error {\n constructor(errors) {\n super(\"validation failed\");\n this.errors = errors;\n this.ajv = this.validation = true;\n }\n}\nexports.default = ValidationError;\n//# sourceMappingURL=validation_error.js.map",
24
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst resolve_1 = require(\"./resolve\");\nclass MissingRefError extends Error {\n constructor(resolver, baseId, ref, msg) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`);\n this.missingRef = (0, resolve_1.resolveUrl)(resolver, baseId, ref);\n this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(resolver, this.missingRef));\n }\n}\nexports.default = MissingRefError;\n//# sourceMappingURL=ref_error.js.map",
25
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst validation_error_1 = require(\"../runtime/validation_error\");\nconst names_1 = require(\"./names\");\nconst resolve_1 = require(\"./resolve\");\nconst util_1 = require(\"./util\");\nconst validate_1 = require(\"./validate\");\nclass SchemaEnv {\n constructor(env) {\n var _a;\n this.refs = {};\n this.dynamicAnchors = {};\n let schema;\n if (typeof env.schema == \"object\")\n schema = env.schema;\n this.schema = env.schema;\n this.schemaId = env.schemaId;\n this.root = env.root || this;\n this.baseId = (_a = env.baseId) !== null && _a !== void 0 ? _a : (0, resolve_1.normalizeId)(schema === null || schema === void 0 ? void 0 : schema[env.schemaId || \"$id\"]);\n this.schemaPath = env.schemaPath;\n this.localRefs = env.localRefs;\n this.meta = env.meta;\n this.$async = schema === null || schema === void 0 ? void 0 : schema.$async;\n this.refs = {};\n }\n}\nexports.SchemaEnv = SchemaEnv;\n// let codeSize = 0\n// let nodeCount = 0\n// Compiles schema in SchemaEnv\nfunction compileSchema(sch) {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch);\n if (_sch)\n return _sch;\n const rootId = (0, resolve_1.getFullPath)(this.opts.uriResolver, sch.root.baseId); // TODO if getFullPath removed 1 tests fails\n const { es5, lines } = this.opts.code;\n const { ownProperties } = this.opts;\n const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties });\n let _ValidationError;\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: validation_error_1.default,\n code: (0, codegen_1._) `require(\"ajv/dist/runtime/validation_error\").default`,\n });\n }\n const validateName = gen.scopeName(\"validate\");\n sch.validateName = validateName;\n const schemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: names_1.default.data,\n parentData: names_1.default.parentData,\n parentDataProperty: names_1.default.parentDataProperty,\n dataNames: [names_1.default.data],\n dataPathArr: [codegen_1.nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set(),\n topSchemaRef: gen.scopeValue(\"schema\", this.opts.code.source === true\n ? { ref: sch.schema, code: (0, codegen_1.stringify)(sch.schema) }\n : { ref: sch.schema }),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: codegen_1.nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: (0, codegen_1._) `\"\"`,\n opts: this.opts,\n self: this,\n };\n let sourceCode;\n try {\n this._compilations.add(sch);\n (0, validate_1.validateFunctionCode)(schemaCxt);\n gen.optimize(this.opts.code.optimize);\n // gen.optimize(1)\n const validateCode = gen.toString();\n sourceCode = `${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`;\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process)\n sourceCode = this.opts.code.process(sourceCode, sch);\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode);\n const validate = makeValidate(this, this.scope.get());\n this.scope.value(validateName, { ref: validate });\n validate.errors = null;\n validate.schema = sch.schema;\n validate.schemaEnv = sch;\n if (sch.$async)\n validate.$async = true;\n if (this.opts.code.source === true) {\n validate.source = { validateName, validateCode, scopeValues: gen._values };\n }\n if (this.opts.unevaluated) {\n const { props, items } = schemaCxt;\n validate.evaluated = {\n props: props instanceof codegen_1.Name ? undefined : props,\n items: items instanceof codegen_1.Name ? undefined : items,\n dynamicProps: props instanceof codegen_1.Name,\n dynamicItems: items instanceof codegen_1.Name,\n };\n if (validate.source)\n validate.source.evaluated = (0, codegen_1.stringify)(validate.evaluated);\n }\n sch.validate = validate;\n return sch;\n }\n catch (e) {\n delete sch.validate;\n delete sch.validateName;\n if (sourceCode)\n this.logger.error(\"Error compiling schema, function code:\", sourceCode);\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e;\n }\n finally {\n this._compilations.delete(sch);\n }\n}\nexports.compileSchema = compileSchema;\nfunction resolveRef(root, baseId, ref) {\n var _a;\n ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, ref);\n const schOrFunc = root.refs[ref];\n if (schOrFunc)\n return schOrFunc;\n let _sch = resolve.call(this, root, ref);\n if (_sch === undefined) {\n const schema = (_a = root.localRefs) === null || _a === void 0 ? void 0 : _a[ref]; // TODO maybe localRefs should hold SchemaEnv\n const { schemaId } = this.opts;\n if (schema)\n _sch = new SchemaEnv({ schema, schemaId, root, baseId });\n }\n if (_sch === undefined)\n return;\n return (root.refs[ref] = inlineOrCompile.call(this, _sch));\n}\nexports.resolveRef = resolveRef;\nfunction inlineOrCompile(sch) {\n if ((0, resolve_1.inlineRef)(sch.schema, this.opts.inlineRefs))\n return sch.schema;\n return sch.validate ? sch : compileSchema.call(this, sch);\n}\n// Index of schema compilation in the currently compiled list\nfunction getCompilingSchema(schEnv) {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv))\n return sch;\n }\n}\nexports.getCompilingSchema = getCompilingSchema;\nfunction sameSchemaEnv(s1, s2) {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;\n}\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(root, // information about the root schema for the current schema\nref // reference to resolve\n) {\n let sch;\n while (typeof (sch = this.refs[ref]) == \"string\")\n ref = sch;\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref);\n}\n// Resolve schema, its root and baseId\nfunction resolveSchema(root, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\nref // reference to resolve\n) {\n const p = this.opts.uriResolver.parse(ref);\n const refPath = (0, resolve_1._getFullPath)(this.opts.uriResolver, p);\n let baseId = (0, resolve_1.getFullPath)(this.opts.uriResolver, root.baseId, undefined);\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root);\n }\n const id = (0, resolve_1.normalizeId)(refPath);\n const schOrRef = this.refs[id] || this.schemas[id];\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef);\n if (typeof (sch === null || sch === void 0 ? void 0 : sch.schema) !== \"object\")\n return;\n return getJsonPointer.call(this, p, sch);\n }\n if (typeof (schOrRef === null || schOrRef === void 0 ? void 0 : schOrRef.schema) !== \"object\")\n return;\n if (!schOrRef.validate)\n compileSchema.call(this, schOrRef);\n if (id === (0, resolve_1.normalizeId)(ref)) {\n const { schema } = schOrRef;\n const { schemaId } = this.opts;\n const schId = schema[schemaId];\n if (schId)\n baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);\n return new SchemaEnv({ schema, schemaId, root, baseId });\n }\n return getJsonPointer.call(this, p, schOrRef);\n}\nexports.resolveSchema = resolveSchema;\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n]);\nfunction getJsonPointer(parsedRef, { baseId, schema, root }) {\n var _a;\n if (((_a = parsedRef.fragment) === null || _a === void 0 ? void 0 : _a[0]) !== \"/\")\n return;\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\")\n return;\n const partSchema = schema[(0, util_1.unescapeFragment)(part)];\n if (partSchema === undefined)\n return;\n schema = partSchema;\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId];\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);\n }\n }\n let env;\n if (typeof schema != \"boolean\" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) {\n const $ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schema.$ref);\n env = resolveSchema.call(this, root, $ref);\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const { schemaId } = this.opts;\n env = env || new SchemaEnv({ schema, schemaId, root, baseId });\n if (env.schema !== env.root.schema)\n return env;\n return undefined;\n}\n//# sourceMappingURL=index.js.map",
26
+ "'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @param {boolean} esc\n * @returns {import('../types/index').URIComponent}\n */\nfunction normalizeComponentEncoding (component, esc) {\n const func = esc !== true ? escape : unescape\n if (component.scheme !== undefined) {\n component.scheme = func(component.scheme)\n }\n if (component.userinfo !== undefined) {\n component.userinfo = func(component.userinfo)\n }\n if (component.host !== undefined) {\n component.host = func(component.host)\n }\n if (component.path !== undefined) {\n component.path = func(component.path)\n }\n if (component.query !== undefined) {\n component.query = func(component.query)\n }\n if (component.fragment !== undefined) {\n component.fragment = func(component.fragment)\n }\n return component\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n const uriTokens = []\n\n if (component.userinfo !== undefined) {\n uriTokens.push(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = component.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n",
27
+ "'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n",
28
+ "'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (serialize(parse(uri, options), options))\n } else if (typeof uri === 'object') {\n uri = /** @type {T} */ (parse(serialize(uri, options), options))\n }\n return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escape(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = unescape(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n /** @type {import('./types/index').URIComponent} */\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = isIPv4(parsed.host)\n if (ipv4result === false) {\n const ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n }\n if (parsed.path) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponent,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n",
29
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst uri = require(\"fast-uri\");\nuri.code = 'require(\"ajv/dist/runtime/uri\").default';\nexports.default = uri;\n//# sourceMappingURL=uri.js.map",
30
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;\nvar validate_1 = require(\"./compile/validate\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });\nvar codegen_1 = require(\"./compile/codegen\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return codegen_1._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return codegen_1.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return codegen_1.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return codegen_1.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return codegen_1.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return codegen_1.CodeGen; } });\nconst validation_error_1 = require(\"./runtime/validation_error\");\nconst ref_error_1 = require(\"./compile/ref_error\");\nconst rules_1 = require(\"./compile/rules\");\nconst compile_1 = require(\"./compile\");\nconst codegen_2 = require(\"./compile/codegen\");\nconst resolve_1 = require(\"./compile/resolve\");\nconst dataType_1 = require(\"./compile/validate/dataType\");\nconst util_1 = require(\"./compile/util\");\nconst $dataRefSchema = require(\"./refs/data.json\");\nconst uri_1 = require(\"./runtime/uri\");\nconst defaultRegExp = (str, flags) => new RegExp(str, flags);\ndefaultRegExp.code = \"new RegExp\";\nconst META_IGNORE_OPTIONS = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"];\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n]);\nconst removedOptions = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n};\nconst deprecatedOptions = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n};\nconst MAX_EXPRESSION = 200;\n// eslint-disable-next-line complexity\nfunction requiredOptions(o) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;\n const s = o.strict;\n const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize;\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0;\n const regExp = (_c = (_b = o.code) === null || _b === void 0 ? void 0 : _b.regExp) !== null && _c !== void 0 ? _c : defaultRegExp;\n const uriResolver = (_d = o.uriResolver) !== null && _d !== void 0 ? _d : uri_1.default;\n return {\n strictSchema: (_f = (_e = o.strictSchema) !== null && _e !== void 0 ? _e : s) !== null && _f !== void 0 ? _f : true,\n strictNumbers: (_h = (_g = o.strictNumbers) !== null && _g !== void 0 ? _g : s) !== null && _h !== void 0 ? _h : true,\n strictTypes: (_k = (_j = o.strictTypes) !== null && _j !== void 0 ? _j : s) !== null && _k !== void 0 ? _k : \"log\",\n strictTuples: (_m = (_l = o.strictTuples) !== null && _l !== void 0 ? _l : s) !== null && _m !== void 0 ? _m : \"log\",\n strictRequired: (_p = (_o = o.strictRequired) !== null && _o !== void 0 ? _o : s) !== null && _p !== void 0 ? _p : false,\n code: o.code ? { ...o.code, optimize, regExp } : { optimize, regExp },\n loopRequired: (_q = o.loopRequired) !== null && _q !== void 0 ? _q : MAX_EXPRESSION,\n loopEnum: (_r = o.loopEnum) !== null && _r !== void 0 ? _r : MAX_EXPRESSION,\n meta: (_s = o.meta) !== null && _s !== void 0 ? _s : true,\n messages: (_t = o.messages) !== null && _t !== void 0 ? _t : true,\n inlineRefs: (_u = o.inlineRefs) !== null && _u !== void 0 ? _u : true,\n schemaId: (_v = o.schemaId) !== null && _v !== void 0 ? _v : \"$id\",\n addUsedSchema: (_w = o.addUsedSchema) !== null && _w !== void 0 ? _w : true,\n validateSchema: (_x = o.validateSchema) !== null && _x !== void 0 ? _x : true,\n validateFormats: (_y = o.validateFormats) !== null && _y !== void 0 ? _y : true,\n unicodeRegExp: (_z = o.unicodeRegExp) !== null && _z !== void 0 ? _z : true,\n int32range: (_0 = o.int32range) !== null && _0 !== void 0 ? _0 : true,\n uriResolver: uriResolver,\n };\n}\nclass Ajv {\n constructor(opts = {}) {\n this.schemas = {};\n this.refs = {};\n this.formats = {};\n this._compilations = new Set();\n this._loading = {};\n this._cache = new Map();\n opts = this.opts = { ...opts, ...requiredOptions(opts) };\n const { es5, lines } = this.opts.code;\n this.scope = new codegen_2.ValueScope({ scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines });\n this.logger = getLogger(opts.logger);\n const formatOpt = opts.validateFormats;\n opts.validateFormats = false;\n this.RULES = (0, rules_1.getRules)();\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\");\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\");\n this._metaOpts = getMetaSchemaOptions.call(this);\n if (opts.formats)\n addInitialFormats.call(this);\n this._addVocabularies();\n this._addDefaultMetaSchema();\n if (opts.keywords)\n addInitialKeywords.call(this, opts.keywords);\n if (typeof opts.meta == \"object\")\n this.addMetaSchema(opts.meta);\n addInitialSchemas.call(this);\n opts.validateFormats = formatOpt;\n }\n _addVocabularies() {\n this.addKeyword(\"$async\");\n }\n _addDefaultMetaSchema() {\n const { $data, meta, schemaId } = this.opts;\n let _dataRefSchema = $dataRefSchema;\n if (schemaId === \"id\") {\n _dataRefSchema = { ...$dataRefSchema };\n _dataRefSchema.id = _dataRefSchema.$id;\n delete _dataRefSchema.$id;\n }\n if (meta && $data)\n this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false);\n }\n defaultMeta() {\n const { meta, schemaId } = this.opts;\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined);\n }\n validate(schemaKeyRef, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data // to be validated\n ) {\n let v;\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema(schemaKeyRef);\n if (!v)\n throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`);\n }\n else {\n v = this.compile(schemaKeyRef);\n }\n const valid = v(data);\n if (!(\"$async\" in v))\n this.errors = v.errors;\n return valid;\n }\n compile(schema, _meta) {\n const sch = this._addSchema(schema, _meta);\n return (sch.validate || this._compileSchemaEnv(sch));\n }\n compileAsync(schema, meta) {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\");\n }\n const { loadSchema } = this.opts;\n return runCompileAsync.call(this, schema, meta);\n async function runCompileAsync(_schema, _meta) {\n await loadMetaSchema.call(this, _schema.$schema);\n const sch = this._addSchema(_schema, _meta);\n return sch.validate || _compileAsync.call(this, sch);\n }\n async function loadMetaSchema($ref) {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, { $ref }, true);\n }\n }\n async function _compileAsync(sch) {\n try {\n return this._compileSchemaEnv(sch);\n }\n catch (e) {\n if (!(e instanceof ref_error_1.default))\n throw e;\n checkLoaded.call(this, e);\n await loadMissingSchema.call(this, e.missingSchema);\n return _compileAsync.call(this, sch);\n }\n }\n function checkLoaded({ missingSchema: ref, missingRef }) {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`);\n }\n }\n async function loadMissingSchema(ref) {\n const _schema = await _loadSchema.call(this, ref);\n if (!this.refs[ref])\n await loadMetaSchema.call(this, _schema.$schema);\n if (!this.refs[ref])\n this.addSchema(_schema, ref, meta);\n }\n async function _loadSchema(ref) {\n const p = this._loading[ref];\n if (p)\n return p;\n try {\n return await (this._loading[ref] = loadSchema(ref));\n }\n finally {\n delete this._loading[ref];\n }\n }\n }\n // Adds schema to the instance\n addSchema(schema, // If array is passed, `key` will be ignored\n key, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ) {\n if (Array.isArray(schema)) {\n for (const sch of schema)\n this.addSchema(sch, undefined, _meta, _validateSchema);\n return this;\n }\n let id;\n if (typeof schema === \"object\") {\n const { schemaId } = this.opts;\n id = schema[schemaId];\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`);\n }\n }\n key = (0, resolve_1.normalizeId)(key || id);\n this._checkUnique(key);\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true);\n return this;\n }\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(schema, key, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ) {\n this.addSchema(schema, key, true, _validateSchema);\n return this;\n }\n // Validate schema against its meta-schema\n validateSchema(schema, throwOrLogError) {\n if (typeof schema == \"boolean\")\n return true;\n let $schema;\n $schema = schema.$schema;\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\");\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta();\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\");\n this.errors = null;\n return true;\n }\n const valid = this.validate($schema, schema);\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText();\n if (this.opts.validateSchema === \"log\")\n this.logger.error(message);\n else\n throw new Error(message);\n }\n return valid;\n }\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema(keyRef) {\n let sch;\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\")\n keyRef = sch;\n if (sch === undefined) {\n const { schemaId } = this.opts;\n const root = new compile_1.SchemaEnv({ schema: {}, schemaId });\n sch = compile_1.resolveSchema.call(this, root, keyRef);\n if (!sch)\n return;\n this.refs[keyRef] = sch;\n }\n return (sch.validate || this._compileSchemaEnv(sch));\n }\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef) {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef);\n this._removeAllSchemas(this.refs, schemaKeyRef);\n return this;\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas);\n this._removeAllSchemas(this.refs);\n this._cache.clear();\n return this;\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef);\n if (typeof sch == \"object\")\n this._cache.delete(sch.schema);\n delete this.schemas[schemaKeyRef];\n delete this.refs[schemaKeyRef];\n return this;\n }\n case \"object\": {\n const cacheKey = schemaKeyRef;\n this._cache.delete(cacheKey);\n let id = schemaKeyRef[this.opts.schemaId];\n if (id) {\n id = (0, resolve_1.normalizeId)(id);\n delete this.schemas[id];\n delete this.refs[id];\n }\n return this;\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\");\n }\n }\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions) {\n for (const def of definitions)\n this.addKeyword(def);\n return this;\n }\n addKeyword(kwdOrDef, def // deprecated\n ) {\n let keyword;\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef;\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\");\n def.keyword = keyword;\n }\n }\n else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef;\n keyword = def.keyword;\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\");\n }\n }\n else {\n throw new Error(\"invalid addKeywords parameters\");\n }\n checkKeyword.call(this, keyword, def);\n if (!def) {\n (0, util_1.eachItem)(keyword, (kwd) => addRule.call(this, kwd));\n return this;\n }\n keywordMetaschema.call(this, def);\n const definition = {\n ...def,\n type: (0, dataType_1.getJSONTypes)(def.type),\n schemaType: (0, dataType_1.getJSONTypes)(def.schemaType),\n };\n (0, util_1.eachItem)(keyword, definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t)));\n return this;\n }\n getKeyword(keyword) {\n const rule = this.RULES.all[keyword];\n return typeof rule == \"object\" ? rule.definition : !!rule;\n }\n // Remove keyword\n removeKeyword(keyword) {\n // TODO return type should be Ajv\n const { RULES } = this;\n delete RULES.keywords[keyword];\n delete RULES.all[keyword];\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword);\n if (i >= 0)\n group.rules.splice(i, 1);\n }\n return this;\n }\n // Add format\n addFormat(name, format) {\n if (typeof format == \"string\")\n format = new RegExp(format);\n this.formats[name] = format;\n return this;\n }\n errorsText(errors = this.errors, // optional array of validation errors\n { separator = \", \", dataVar = \"data\" } = {} // optional options with properties `separator` and `dataVar`\n ) {\n if (!errors || errors.length === 0)\n return \"No errors\";\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg);\n }\n $dataMetaSchema(metaSchema, keywordsJsonPointers) {\n const rules = this.RULES.all;\n metaSchema = JSON.parse(JSON.stringify(metaSchema));\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1); // first segment is an empty string\n let keywords = metaSchema;\n for (const seg of segments)\n keywords = keywords[seg];\n for (const key in rules) {\n const rule = rules[key];\n if (typeof rule != \"object\")\n continue;\n const { $data } = rule.definition;\n const schema = keywords[key];\n if ($data && schema)\n keywords[key] = schemaOrData(schema);\n }\n }\n return metaSchema;\n }\n _removeAllSchemas(schemas, regex) {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef];\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef];\n }\n else if (sch && !sch.meta) {\n this._cache.delete(sch.schema);\n delete schemas[keyRef];\n }\n }\n }\n }\n _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) {\n let id;\n const { schemaId } = this.opts;\n if (typeof schema == \"object\") {\n id = schema[schemaId];\n }\n else {\n if (this.opts.jtd)\n throw new Error(\"schema must be object\");\n else if (typeof schema != \"boolean\")\n throw new Error(\"schema must be object or boolean\");\n }\n let sch = this._cache.get(schema);\n if (sch !== undefined)\n return sch;\n baseId = (0, resolve_1.normalizeId)(id || baseId);\n const localRefs = resolve_1.getSchemaRefs.call(this, schema, baseId);\n sch = new compile_1.SchemaEnv({ schema, schemaId, meta, baseId, localRefs });\n this._cache.set(sch.schema, sch);\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId)\n this._checkUnique(baseId);\n this.refs[baseId] = sch;\n }\n if (validateSchema)\n this.validateSchema(schema, true);\n return sch;\n }\n _checkUnique(id) {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`);\n }\n }\n _compileSchemaEnv(sch) {\n if (sch.meta)\n this._compileMetaSchema(sch);\n else\n compile_1.compileSchema.call(this, sch);\n /* istanbul ignore if */\n if (!sch.validate)\n throw new Error(\"ajv implementation error\");\n return sch.validate;\n }\n _compileMetaSchema(sch) {\n const currentOpts = this.opts;\n this.opts = this._metaOpts;\n try {\n compile_1.compileSchema.call(this, sch);\n }\n finally {\n this.opts = currentOpts;\n }\n }\n}\nAjv.ValidationError = validation_error_1.default;\nAjv.MissingRefError = ref_error_1.default;\nexports.default = Ajv;\nfunction checkOptions(checkOpts, options, msg, log = \"error\") {\n for (const key in checkOpts) {\n const opt = key;\n if (opt in options)\n this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`);\n }\n}\nfunction getSchEnv(keyRef) {\n keyRef = (0, resolve_1.normalizeId)(keyRef); // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef];\n}\nfunction addInitialSchemas() {\n const optsSchemas = this.opts.schemas;\n if (!optsSchemas)\n return;\n if (Array.isArray(optsSchemas))\n this.addSchema(optsSchemas);\n else\n for (const key in optsSchemas)\n this.addSchema(optsSchemas[key], key);\n}\nfunction addInitialFormats() {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name];\n if (format)\n this.addFormat(name, format);\n }\n}\nfunction addInitialKeywords(defs) {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs);\n return;\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\");\n for (const keyword in defs) {\n const def = defs[keyword];\n if (!def.keyword)\n def.keyword = keyword;\n this.addKeyword(def);\n }\n}\nfunction getMetaSchemaOptions() {\n const metaOpts = { ...this.opts };\n for (const opt of META_IGNORE_OPTIONS)\n delete metaOpts[opt];\n return metaOpts;\n}\nconst noLogs = { log() { }, warn() { }, error() { } };\nfunction getLogger(logger) {\n if (logger === false)\n return noLogs;\n if (logger === undefined)\n return console;\n if (logger.log && logger.warn && logger.error)\n return logger;\n throw new Error(\"logger must implement log, warn and error methods\");\n}\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i;\nfunction checkKeyword(keyword, def) {\n const { RULES } = this;\n (0, util_1.eachItem)(keyword, (kwd) => {\n if (RULES.keywords[kwd])\n throw new Error(`Keyword ${kwd} is already defined`);\n if (!KEYWORD_NAME.test(kwd))\n throw new Error(`Keyword ${kwd} has invalid name`);\n });\n if (!def)\n return;\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function');\n }\n}\nfunction addRule(keyword, definition, dataType) {\n var _a;\n const post = definition === null || definition === void 0 ? void 0 : definition.post;\n if (dataType && post)\n throw new Error('keyword with \"post\" flag cannot have \"type\"');\n const { RULES } = this;\n let ruleGroup = post ? RULES.post : RULES.rules.find(({ type: t }) => t === dataType);\n if (!ruleGroup) {\n ruleGroup = { type: dataType, rules: [] };\n RULES.rules.push(ruleGroup);\n }\n RULES.keywords[keyword] = true;\n if (!definition)\n return;\n const rule = {\n keyword,\n definition: {\n ...definition,\n type: (0, dataType_1.getJSONTypes)(definition.type),\n schemaType: (0, dataType_1.getJSONTypes)(definition.schemaType),\n },\n };\n if (definition.before)\n addBeforeRule.call(this, ruleGroup, rule, definition.before);\n else\n ruleGroup.rules.push(rule);\n RULES.all[keyword] = rule;\n (_a = definition.implements) === null || _a === void 0 ? void 0 : _a.forEach((kwd) => this.addKeyword(kwd));\n}\nfunction addBeforeRule(ruleGroup, rule, before) {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before);\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule);\n }\n else {\n ruleGroup.rules.push(rule);\n this.logger.warn(`rule ${before} is not defined`);\n }\n}\nfunction keywordMetaschema(def) {\n let { metaSchema } = def;\n if (metaSchema === undefined)\n return;\n if (def.$data && this.opts.$data)\n metaSchema = schemaOrData(metaSchema);\n def.validateSchema = this.compile(metaSchema, true);\n}\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n};\nfunction schemaOrData(schema) {\n return { anyOf: [schema, $dataRef] };\n}\n//# sourceMappingURL=core.js.map",
31
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst def = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID');\n },\n};\nexports.default = def;\n//# sourceMappingURL=id.js.map",
32
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callRef = exports.getValidate = void 0;\nconst ref_error_1 = require(\"../../compile/ref_error\");\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst compile_1 = require(\"../../compile\");\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt) {\n const { gen, schema: $ref, it } = cxt;\n const { baseId, schemaEnv: env, validateName, opts, self } = it;\n const { root } = env;\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId)\n return callRootRef();\n const schOrEnv = compile_1.resolveRef.call(self, root, baseId, $ref);\n if (schOrEnv === undefined)\n throw new ref_error_1.default(it.opts.uriResolver, baseId, $ref);\n if (schOrEnv instanceof compile_1.SchemaEnv)\n return callValidate(schOrEnv);\n return inlineRefSchema(schOrEnv);\n function callRootRef() {\n if (env === root)\n return callRef(cxt, validateName, env, env.$async);\n const rootName = gen.scopeValue(\"root\", { ref: root });\n return callRef(cxt, (0, codegen_1._) `${rootName}.validate`, root, root.$async);\n }\n function callValidate(sch) {\n const v = getValidate(cxt, sch);\n callRef(cxt, v, sch, sch.$async);\n }\n function inlineRefSchema(sch) {\n const schName = gen.scopeValue(\"schema\", opts.code.source === true ? { ref: sch, code: (0, codegen_1.stringify)(sch) } : { ref: sch });\n const valid = gen.name(\"valid\");\n const schCxt = cxt.subschema({\n schema: sch,\n dataTypes: [],\n schemaPath: codegen_1.nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n }, valid);\n cxt.mergeEvaluated(schCxt);\n cxt.ok(valid);\n }\n },\n};\nfunction getValidate(cxt, sch) {\n const { gen } = cxt;\n return sch.validate\n ? gen.scopeValue(\"validate\", { ref: sch.validate })\n : (0, codegen_1._) `${gen.scopeValue(\"wrapper\", { ref: sch })}.validate`;\n}\nexports.getValidate = getValidate;\nfunction callRef(cxt, v, sch, $async) {\n const { gen, it } = cxt;\n const { allErrors, schemaEnv: env, opts } = it;\n const passCxt = opts.passContext ? names_1.default.this : codegen_1.nil;\n if ($async)\n callAsyncRef();\n else\n callSyncRef();\n function callAsyncRef() {\n if (!env.$async)\n throw new Error(\"async schema referenced by sync schema\");\n const valid = gen.let(\"valid\");\n gen.try(() => {\n gen.code((0, codegen_1._) `await ${(0, code_1.callValidateCode)(cxt, v, passCxt)}`);\n addEvaluatedFrom(v); // TODO will not work with async, it has to be returned with the result\n if (!allErrors)\n gen.assign(valid, true);\n }, (e) => {\n gen.if((0, codegen_1._) `!(${e} instanceof ${it.ValidationError})`, () => gen.throw(e));\n addErrorsFrom(e);\n if (!allErrors)\n gen.assign(valid, false);\n });\n cxt.ok(valid);\n }\n function callSyncRef() {\n cxt.result((0, code_1.callValidateCode)(cxt, v, passCxt), () => addEvaluatedFrom(v), () => addErrorsFrom(v));\n }\n function addErrorsFrom(source) {\n const errs = (0, codegen_1._) `${source}.errors`;\n gen.assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`); // TODO tagged\n gen.assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n }\n function addEvaluatedFrom(source) {\n var _a;\n if (!it.opts.unevaluated)\n return;\n const schEvaluated = (_a = sch === null || sch === void 0 ? void 0 : sch.validate) === null || _a === void 0 ? void 0 : _a.evaluated;\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schEvaluated.props, it.props);\n }\n }\n else {\n const props = gen.var(\"props\", (0, codegen_1._) `${source}.evaluated.props`);\n it.props = util_1.mergeEvaluated.props(gen, props, it.props, codegen_1.Name);\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schEvaluated.items, it.items);\n }\n }\n else {\n const items = gen.var(\"items\", (0, codegen_1._) `${source}.evaluated.items`);\n it.items = util_1.mergeEvaluated.items(gen, items, it.items, codegen_1.Name);\n }\n }\n }\n}\nexports.callRef = callRef;\nexports.default = def;\n//# sourceMappingURL=ref.js.map",
33
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst id_1 = require(\"./id\");\nconst ref_1 = require(\"./ref\");\nconst core = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n { keyword: \"$comment\" },\n \"definitions\",\n id_1.default,\n ref_1.default,\n];\nexports.default = core;\n//# sourceMappingURL=index.js.map",
34
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst ops = codegen_1.operators;\nconst KWDs = {\n maximum: { okStr: \"<=\", ok: ops.LTE, fail: ops.GT },\n minimum: { okStr: \">=\", ok: ops.GTE, fail: ops.LT },\n exclusiveMaximum: { okStr: \"<\", ok: ops.LT, fail: ops.GTE },\n exclusiveMinimum: { okStr: \">\", ok: ops.GT, fail: ops.LTE },\n};\nconst error = {\n message: ({ keyword, schemaCode }) => (0, codegen_1.str) `must be ${KWDs[keyword].okStr} ${schemaCode}`,\n params: ({ keyword, schemaCode }) => (0, codegen_1._) `{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n cxt.fail$data((0, codegen_1._) `${data} ${KWDs[keyword].fail} ${schemaCode} || isNaN(${data})`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitNumber.js.map",
35
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must be multiple of ${schemaCode}`,\n params: ({ schemaCode }) => (0, codegen_1._) `{multipleOf: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, schemaCode, it } = cxt;\n // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision;\n const res = gen.let(\"res\");\n const invalid = prec\n ? (0, codegen_1._) `Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : (0, codegen_1._) `${res} !== parseInt(${res})`;\n cxt.fail$data((0, codegen_1._) `(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=multipleOf.js.map",
36
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nfunction ucs2length(str) {\n const len = str.length;\n let length = 0;\n let pos = 0;\n let value;\n while (pos < len) {\n length++;\n value = str.charCodeAt(pos++);\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xfc00) === 0xdc00)\n pos++; // low surrogate\n }\n }\n return length;\n}\nexports.default = ucs2length;\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default';\n//# sourceMappingURL=ucs2length.js.map",
37
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst ucs2length_1 = require(\"../../runtime/ucs2length\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} characters`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode, it } = cxt;\n const op = keyword === \"maxLength\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n const len = it.opts.unicode === false ? (0, codegen_1._) `${data}.length` : (0, codegen_1._) `${(0, util_1.useFunc)(cxt.gen, ucs2length_1.default)}(${data})`;\n cxt.fail$data((0, codegen_1._) `${len} ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitLength.js.map",
38
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must match pattern \"${schemaCode}\"`,\n params: ({ schemaCode }) => (0, codegen_1._) `{pattern: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const { data, $data, schema, schemaCode, it } = cxt;\n // TODO regexp should be wrapped in try/catchs\n const u = it.opts.unicodeRegExp ? \"u\" : \"\";\n const regExp = $data ? (0, codegen_1._) `(new RegExp(${schemaCode}, ${u}))` : (0, code_1.usePattern)(cxt, schema);\n cxt.fail$data((0, codegen_1._) `!${regExp}.test(${data})`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=pattern.js.map",
39
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} properties`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n const op = keyword === \"maxProperties\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n cxt.fail$data((0, codegen_1._) `Object.keys(${data}).length ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitProperties.js.map",
40
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { missingProperty } }) => (0, codegen_1.str) `must have required property '${missingProperty}'`,\n params: ({ params: { missingProperty } }) => (0, codegen_1._) `{missingProperty: ${missingProperty}}`,\n};\nconst def = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt) {\n const { gen, schema, schemaCode, data, $data, it } = cxt;\n const { opts } = it;\n if (!$data && schema.length === 0)\n return;\n const useLoop = schema.length >= opts.loopRequired;\n if (it.allErrors)\n allErrorsMode();\n else\n exitOnErrorMode();\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties;\n const { definedProperties } = cxt.it;\n for (const requiredKey of schema) {\n if ((props === null || props === void 0 ? void 0 : props[requiredKey]) === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictRequired);\n }\n }\n }\n function allErrorsMode() {\n if (useLoop || $data) {\n cxt.block$data(codegen_1.nil, loopAllRequired);\n }\n else {\n for (const prop of schema) {\n (0, code_1.checkReportMissingProp)(cxt, prop);\n }\n }\n }\n function exitOnErrorMode() {\n const missing = gen.let(\"missing\");\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true);\n cxt.block$data(valid, () => loopUntilMissing(missing, valid));\n cxt.ok(valid);\n }\n else {\n gen.if((0, code_1.checkMissingProp)(cxt, schema, missing));\n (0, code_1.reportMissingProp)(cxt, missing);\n gen.else();\n }\n }\n function loopAllRequired() {\n gen.forOf(\"prop\", schemaCode, (prop) => {\n cxt.setParams({ missingProperty: prop });\n gen.if((0, code_1.noPropertyInData)(gen, data, prop, opts.ownProperties), () => cxt.error());\n });\n }\n function loopUntilMissing(missing, valid) {\n cxt.setParams({ missingProperty: missing });\n gen.forOf(missing, schemaCode, () => {\n gen.assign(valid, (0, code_1.propertyInData)(gen, data, missing, opts.ownProperties));\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.error();\n gen.break();\n });\n }, codegen_1.nil);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=required.js.map",
41
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} items`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n const op = keyword === \"maxItems\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n cxt.fail$data((0, codegen_1._) `${data}.length ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitItems.js.map",
42
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://github.com/ajv-validator/ajv/issues/889\nconst equal = require(\"fast-deep-equal\");\nequal.code = 'require(\"ajv/dist/runtime/equal\").default';\nexports.default = equal;\n//# sourceMappingURL=equal.js.map",
43
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dataType_1 = require(\"../../compile/validate/dataType\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: ({ params: { i, j } }) => (0, codegen_1.str) `must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({ params: { i, j } }) => (0, codegen_1._) `{i: ${i}, j: ${j}}`,\n};\nconst def = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, parentSchema, schemaCode, it } = cxt;\n if (!$data && !schema)\n return;\n const valid = gen.let(\"valid\");\n const itemTypes = parentSchema.items ? (0, dataType_1.getSchemaTypes)(parentSchema.items) : [];\n cxt.block$data(valid, validateUniqueItems, (0, codegen_1._) `${schemaCode} === false`);\n cxt.ok(valid);\n function validateUniqueItems() {\n const i = gen.let(\"i\", (0, codegen_1._) `${data}.length`);\n const j = gen.let(\"j\");\n cxt.setParams({ i, j });\n gen.assign(valid, true);\n gen.if((0, codegen_1._) `${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j));\n }\n function canOptimize() {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\");\n }\n function loopN(i, j) {\n const item = gen.name(\"item\");\n const wrongType = (0, dataType_1.checkDataTypes)(itemTypes, item, it.opts.strictNumbers, dataType_1.DataType.Wrong);\n const indices = gen.const(\"indices\", (0, codegen_1._) `{}`);\n gen.for((0, codegen_1._) `;${i}--;`, () => {\n gen.let(item, (0, codegen_1._) `${data}[${i}]`);\n gen.if(wrongType, (0, codegen_1._) `continue`);\n if (itemTypes.length > 1)\n gen.if((0, codegen_1._) `typeof ${item} == \"string\"`, (0, codegen_1._) `${item} += \"_\"`);\n gen\n .if((0, codegen_1._) `typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, (0, codegen_1._) `${indices}[${item}]`);\n cxt.error();\n gen.assign(valid, false).break();\n })\n .code((0, codegen_1._) `${indices}[${item}] = ${i}`);\n });\n }\n function loopN2(i, j) {\n const eql = (0, util_1.useFunc)(gen, equal_1.default);\n const outer = gen.name(\"outer\");\n gen.label(outer).for((0, codegen_1._) `;${i}--;`, () => gen.for((0, codegen_1._) `${j} = ${i}; ${j}--;`, () => gen.if((0, codegen_1._) `${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error();\n gen.assign(valid, false).break(outer);\n })));\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=uniqueItems.js.map",
44
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: \"must be equal to constant\",\n params: ({ schemaCode }) => (0, codegen_1._) `{allowedValue: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schemaCode, schema } = cxt;\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data((0, codegen_1._) `!${(0, util_1.useFunc)(gen, equal_1.default)}(${data}, ${schemaCode})`);\n }\n else {\n cxt.fail((0, codegen_1._) `${schema} !== ${data}`);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=const.js.map",
45
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: \"must be equal to one of the allowed values\",\n params: ({ schemaCode }) => (0, codegen_1._) `{allowedValues: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n if (!$data && schema.length === 0)\n throw new Error(\"enum must have non-empty array\");\n const useLoop = schema.length >= it.opts.loopEnum;\n let eql;\n const getEql = () => (eql !== null && eql !== void 0 ? eql : (eql = (0, util_1.useFunc)(gen, equal_1.default)));\n let valid;\n if (useLoop || $data) {\n valid = gen.let(\"valid\");\n cxt.block$data(valid, loopEnum);\n }\n else {\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const vSchema = gen.const(\"vSchema\", schemaCode);\n valid = (0, codegen_1.or)(...schema.map((_x, i) => equalCode(vSchema, i)));\n }\n cxt.pass(valid);\n function loopEnum() {\n gen.assign(valid, false);\n gen.forOf(\"v\", schemaCode, (v) => gen.if((0, codegen_1._) `${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break()));\n }\n function equalCode(vSchema, i) {\n const sch = schema[i];\n return typeof sch === \"object\" && sch !== null\n ? (0, codegen_1._) `${getEql()}(${data}, ${vSchema}[${i}])`\n : (0, codegen_1._) `${data} === ${sch}`;\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=enum.js.map",
46
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst limitNumber_1 = require(\"./limitNumber\");\nconst multipleOf_1 = require(\"./multipleOf\");\nconst limitLength_1 = require(\"./limitLength\");\nconst pattern_1 = require(\"./pattern\");\nconst limitProperties_1 = require(\"./limitProperties\");\nconst required_1 = require(\"./required\");\nconst limitItems_1 = require(\"./limitItems\");\nconst uniqueItems_1 = require(\"./uniqueItems\");\nconst const_1 = require(\"./const\");\nconst enum_1 = require(\"./enum\");\nconst validation = [\n // number\n limitNumber_1.default,\n multipleOf_1.default,\n // string\n limitLength_1.default,\n pattern_1.default,\n // object\n limitProperties_1.default,\n required_1.default,\n // array\n limitItems_1.default,\n uniqueItems_1.default,\n // any\n { keyword: \"type\", schemaType: [\"string\", \"array\"] },\n { keyword: \"nullable\", schemaType: \"boolean\" },\n const_1.default,\n enum_1.default,\n];\nexports.default = validation;\n//# sourceMappingURL=index.js.map",
47
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateAdditionalItems = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`,\n params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`,\n};\nconst def = {\n keyword: \"additionalItems\",\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt) {\n const { parentSchema, it } = cxt;\n const { items } = parentSchema;\n if (!Array.isArray(items)) {\n (0, util_1.checkStrictMode)(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas');\n return;\n }\n validateAdditionalItems(cxt, items);\n },\n};\nfunction validateAdditionalItems(cxt, items) {\n const { gen, schema, data, keyword, it } = cxt;\n it.items = true;\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n if (schema === false) {\n cxt.setParams({ len: items.length });\n cxt.pass((0, codegen_1._) `${len} <= ${items.length}`);\n }\n else if (typeof schema == \"object\" && !(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.var(\"valid\", (0, codegen_1._) `${len} <= ${items.length}`); // TODO var\n gen.if((0, codegen_1.not)(valid), () => validateItems(valid));\n cxt.ok(valid);\n }\n function validateItems(valid) {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({ keyword, dataProp: i, dataPropType: util_1.Type.Num }, valid);\n if (!it.allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n });\n }\n}\nexports.validateAdditionalItems = validateAdditionalItems;\nexports.default = def;\n//# sourceMappingURL=additionalItems.js.map",
48
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateTuple = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nconst def = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt) {\n const { schema, it } = cxt;\n if (Array.isArray(schema))\n return validateTuple(cxt, \"additionalItems\", schema);\n it.items = true;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n cxt.ok((0, code_1.validateArray)(cxt));\n },\n};\nfunction validateTuple(cxt, extraItems, schArr = cxt.schema) {\n const { gen, parentSchema, data, keyword, it } = cxt;\n checkStrictTuple(parentSchema);\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = util_1.mergeEvaluated.items(gen, schArr.length, it.items);\n }\n const valid = gen.name(\"valid\");\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n schArr.forEach((sch, i) => {\n if ((0, util_1.alwaysValidSchema)(it, sch))\n return;\n gen.if((0, codegen_1._) `${len} > ${i}`, () => cxt.subschema({\n keyword,\n schemaProp: i,\n dataProp: i,\n }, valid));\n cxt.ok(valid);\n });\n function checkStrictTuple(sch) {\n const { opts, errSchemaPath } = it;\n const l = schArr.length;\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false);\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`;\n (0, util_1.checkStrictMode)(it, msg, opts.strictTuples);\n }\n }\n}\nexports.validateTuple = validateTuple;\nexports.default = def;\n//# sourceMappingURL=items.js.map",
49
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst items_1 = require(\"./items\");\nconst def = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => (0, items_1.validateTuple)(cxt, \"items\"),\n};\nexports.default = def;\n//# sourceMappingURL=prefixItems.js.map",
50
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nconst additionalItems_1 = require(\"./additionalItems\");\nconst error = {\n message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`,\n params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`,\n};\nconst def = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt) {\n const { schema, parentSchema, it } = cxt;\n const { prefixItems } = parentSchema;\n it.items = true;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n if (prefixItems)\n (0, additionalItems_1.validateAdditionalItems)(cxt, prefixItems);\n else\n cxt.ok((0, code_1.validateArray)(cxt));\n },\n};\nexports.default = def;\n//# sourceMappingURL=items2020.js.map",
51
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { min, max } }) => max === undefined\n ? (0, codegen_1.str) `must contain at least ${min} valid item(s)`\n : (0, codegen_1.str) `must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({ params: { min, max } }) => max === undefined ? (0, codegen_1._) `{minContains: ${min}}` : (0, codegen_1._) `{minContains: ${min}, maxContains: ${max}}`,\n};\nconst def = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, data, it } = cxt;\n let min;\n let max;\n const { minContains, maxContains } = parentSchema;\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains;\n max = maxContains;\n }\n else {\n min = 1;\n }\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n cxt.setParams({ min, max });\n if (max === undefined && min === 0) {\n (0, util_1.checkStrictMode)(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`);\n return;\n }\n if (max !== undefined && min > max) {\n (0, util_1.checkStrictMode)(it, `\"minContains\" > \"maxContains\" is always invalid`);\n cxt.fail();\n return;\n }\n if ((0, util_1.alwaysValidSchema)(it, schema)) {\n let cond = (0, codegen_1._) `${len} >= ${min}`;\n if (max !== undefined)\n cond = (0, codegen_1._) `${cond} && ${len} <= ${max}`;\n cxt.pass(cond);\n return;\n }\n it.items = true;\n const valid = gen.name(\"valid\");\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()));\n }\n else if (min === 0) {\n gen.let(valid, true);\n if (max !== undefined)\n gen.if((0, codegen_1._) `${data}.length > 0`, validateItemsWithCount);\n }\n else {\n gen.let(valid, false);\n validateItemsWithCount();\n }\n cxt.result(valid, () => cxt.reset());\n function validateItemsWithCount() {\n const schValid = gen.name(\"_valid\");\n const count = gen.let(\"count\", 0);\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)));\n }\n function validateItems(_valid, block) {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword: \"contains\",\n dataProp: i,\n dataPropType: util_1.Type.Num,\n compositeRule: true,\n }, _valid);\n block();\n });\n }\n function checkLimits(count) {\n gen.code((0, codegen_1._) `${count}++`);\n if (max === undefined) {\n gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true).break());\n }\n else {\n gen.if((0, codegen_1._) `${count} > ${max}`, () => gen.assign(valid, false).break());\n if (min === 1)\n gen.assign(valid, true);\n else\n gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true));\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=contains.js.map",
52
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateSchemaDeps = exports.validatePropertyDeps = exports.error = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nexports.error = {\n message: ({ params: { property, depsCount, deps } }) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\";\n return (0, codegen_1.str) `must have ${property_ies} ${deps} when property ${property} is present`;\n },\n params: ({ params: { property, depsCount, deps, missingProperty } }) => (0, codegen_1._) `{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n};\nconst def = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error: exports.error,\n code(cxt) {\n const [propDeps, schDeps] = splitDependencies(cxt);\n validatePropertyDeps(cxt, propDeps);\n validateSchemaDeps(cxt, schDeps);\n },\n};\nfunction splitDependencies({ schema }) {\n const propertyDeps = {};\n const schemaDeps = {};\n for (const key in schema) {\n if (key === \"__proto__\")\n continue;\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps;\n deps[key] = schema[key];\n }\n return [propertyDeps, schemaDeps];\n}\nfunction validatePropertyDeps(cxt, propertyDeps = cxt.schema) {\n const { gen, data, it } = cxt;\n if (Object.keys(propertyDeps).length === 0)\n return;\n const missing = gen.let(\"missing\");\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop];\n if (deps.length === 0)\n continue;\n const hasProperty = (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties);\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n });\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n (0, code_1.checkReportMissingProp)(cxt, depProp);\n }\n });\n }\n else {\n gen.if((0, codegen_1._) `${hasProperty} && (${(0, code_1.checkMissingProp)(cxt, deps, missing)})`);\n (0, code_1.reportMissingProp)(cxt, missing);\n gen.else();\n }\n }\n}\nexports.validatePropertyDeps = validatePropertyDeps;\nfunction validateSchemaDeps(cxt, schemaDeps = cxt.schema) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n for (const prop in schemaDeps) {\n if ((0, util_1.alwaysValidSchema)(it, schemaDeps[prop]))\n continue;\n gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties), () => {\n const schCxt = cxt.subschema({ keyword, schemaProp: prop }, valid);\n cxt.mergeValidEvaluated(schCxt, valid);\n }, () => gen.var(valid, true) // TODO var\n );\n cxt.ok(valid);\n }\n}\nexports.validateSchemaDeps = validateSchemaDeps;\nexports.default = def;\n//# sourceMappingURL=dependencies.js.map",
53
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"property name must be valid\",\n params: ({ params }) => (0, codegen_1._) `{propertyName: ${params.propertyName}}`,\n};\nconst def = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt) {\n const { gen, schema, data, it } = cxt;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n const valid = gen.name(\"valid\");\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({ propertyName: key });\n cxt.subschema({\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n }, valid);\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.error(true);\n if (!it.allErrors)\n gen.break();\n });\n });\n cxt.ok(valid);\n },\n};\nexports.default = def;\n//# sourceMappingURL=propertyNames.js.map",
54
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"must NOT have additional properties\",\n params: ({ params }) => (0, codegen_1._) `{additionalProperty: ${params.additionalProperty}}`,\n};\nconst def = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, data, errsCount, it } = cxt;\n /* istanbul ignore if */\n if (!errsCount)\n throw new Error(\"ajv implementation error\");\n const { allErrors, opts } = it;\n it.props = true;\n if (opts.removeAdditional !== \"all\" && (0, util_1.alwaysValidSchema)(it, schema))\n return;\n const props = (0, code_1.allSchemaProperties)(parentSchema.properties);\n const patProps = (0, code_1.allSchemaProperties)(parentSchema.patternProperties);\n checkAdditionalProperties();\n cxt.ok((0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n function checkAdditionalProperties() {\n gen.forIn(\"key\", data, (key) => {\n if (!props.length && !patProps.length)\n additionalPropertyCode(key);\n else\n gen.if(isAdditional(key), () => additionalPropertyCode(key));\n });\n }\n function isAdditional(key) {\n let definedProp;\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = (0, util_1.schemaRefOrVal)(it, parentSchema.properties, \"properties\");\n definedProp = (0, code_1.isOwnProperty)(gen, propsSchema, key);\n }\n else if (props.length) {\n definedProp = (0, codegen_1.or)(...props.map((p) => (0, codegen_1._) `${key} === ${p}`));\n }\n else {\n definedProp = codegen_1.nil;\n }\n if (patProps.length) {\n definedProp = (0, codegen_1.or)(definedProp, ...patProps.map((p) => (0, codegen_1._) `${(0, code_1.usePattern)(cxt, p)}.test(${key})`));\n }\n return (0, codegen_1.not)(definedProp);\n }\n function deleteAdditional(key) {\n gen.code((0, codegen_1._) `delete ${data}[${key}]`);\n }\n function additionalPropertyCode(key) {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key);\n return;\n }\n if (schema === false) {\n cxt.setParams({ additionalProperty: key });\n cxt.error();\n if (!allErrors)\n gen.break();\n return;\n }\n if (typeof schema == \"object\" && !(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.name(\"valid\");\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false);\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.reset();\n deleteAdditional(key);\n });\n }\n else {\n applyAdditionalSchema(key, valid);\n if (!allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n }\n }\n }\n function applyAdditionalSchema(key, valid, errors) {\n const subschema = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: util_1.Type.Str,\n };\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n });\n }\n cxt.subschema(subschema, valid);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=additionalProperties.js.map",
55
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validate_1 = require(\"../../compile/validate\");\nconst code_1 = require(\"../code\");\nconst util_1 = require(\"../../compile/util\");\nconst additionalProperties_1 = require(\"./additionalProperties\");\nconst def = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt) {\n const { gen, schema, parentSchema, data, it } = cxt;\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n additionalProperties_1.default.code(new validate_1.KeywordCxt(it, additionalProperties_1.default, \"additionalProperties\"));\n }\n const allProps = (0, code_1.allSchemaProperties)(schema);\n for (const prop of allProps) {\n it.definedProperties.add(prop);\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = util_1.mergeEvaluated.props(gen, (0, util_1.toHash)(allProps), it.props);\n }\n const properties = allProps.filter((p) => !(0, util_1.alwaysValidSchema)(it, schema[p]));\n if (properties.length === 0)\n return;\n const valid = gen.name(\"valid\");\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop);\n }\n else {\n gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties));\n applyPropertySchema(prop);\n if (!it.allErrors)\n gen.else().var(valid, true);\n gen.endIf();\n }\n cxt.it.definedProperties.add(prop);\n cxt.ok(valid);\n }\n function hasDefault(prop) {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined;\n }\n function applyPropertySchema(prop) {\n cxt.subschema({\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n }, valid);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=properties.js.map",
56
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst util_2 = require(\"../../compile/util\");\nconst def = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt) {\n const { gen, schema, data, parentSchema, it } = cxt;\n const { opts } = it;\n const patterns = (0, code_1.allSchemaProperties)(schema);\n const alwaysValidPatterns = patterns.filter((p) => (0, util_1.alwaysValidSchema)(it, schema[p]));\n if (patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))) {\n return;\n }\n const checkProperties = opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties;\n const valid = gen.name(\"valid\");\n if (it.props !== true && !(it.props instanceof codegen_1.Name)) {\n it.props = (0, util_2.evaluatedPropsToName)(gen, it.props);\n }\n const { props } = it;\n validatePatternProperties();\n function validatePatternProperties() {\n for (const pat of patterns) {\n if (checkProperties)\n checkMatchingProperties(pat);\n if (it.allErrors) {\n validateProperties(pat);\n }\n else {\n gen.var(valid, true); // TODO var\n validateProperties(pat);\n gen.if(valid);\n }\n }\n }\n function checkMatchingProperties(pat) {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n (0, util_1.checkStrictMode)(it, `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`);\n }\n }\n }\n function validateProperties(pat) {\n gen.forIn(\"key\", data, (key) => {\n gen.if((0, codegen_1._) `${(0, code_1.usePattern)(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat);\n if (!alwaysValid) {\n cxt.subschema({\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: util_2.Type.Str,\n }, valid);\n }\n if (it.opts.unevaluated && props !== true) {\n gen.assign((0, codegen_1._) `${props}[${key}]`, true);\n }\n else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n }\n });\n });\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=patternProperties.js.map",
57
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt) {\n const { gen, schema, it } = cxt;\n if ((0, util_1.alwaysValidSchema)(it, schema)) {\n cxt.fail();\n return;\n }\n const valid = gen.name(\"valid\");\n cxt.subschema({\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n }, valid);\n cxt.failResult(valid, () => cxt.reset(), () => cxt.error());\n },\n error: { message: \"must NOT be valid\" },\n};\nexports.default = def;\n//# sourceMappingURL=not.js.map",
58
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst def = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: code_1.validateUnion,\n error: { message: \"must match a schema in anyOf\" },\n};\nexports.default = def;\n//# sourceMappingURL=anyOf.js.map",
59
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"must match exactly one schema in oneOf\",\n params: ({ params }) => (0, codegen_1._) `{passingSchemas: ${params.passing}}`,\n};\nconst def = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n if (it.opts.discriminator && parentSchema.discriminator)\n return;\n const schArr = schema;\n const valid = gen.let(\"valid\", false);\n const passing = gen.let(\"passing\", null);\n const schValid = gen.name(\"_valid\");\n cxt.setParams({ passing });\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n gen.block(validateOneOf);\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n function validateOneOf() {\n schArr.forEach((sch, i) => {\n let schCxt;\n if ((0, util_1.alwaysValidSchema)(it, sch)) {\n gen.var(schValid, true);\n }\n else {\n schCxt = cxt.subschema({\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n }\n if (i > 0) {\n gen\n .if((0, codegen_1._) `${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, (0, codegen_1._) `[${passing}, ${i}]`)\n .else();\n }\n gen.if(schValid, () => {\n gen.assign(valid, true);\n gen.assign(passing, i);\n if (schCxt)\n cxt.mergeEvaluated(schCxt, codegen_1.Name);\n });\n });\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=oneOf.js.map",
60
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt) {\n const { gen, schema, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const valid = gen.name(\"valid\");\n schema.forEach((sch, i) => {\n if ((0, util_1.alwaysValidSchema)(it, sch))\n return;\n const schCxt = cxt.subschema({ keyword: \"allOf\", schemaProp: i }, valid);\n cxt.ok(valid);\n cxt.mergeEvaluated(schCxt);\n });\n },\n};\nexports.default = def;\n//# sourceMappingURL=allOf.js.map",
61
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params }) => (0, codegen_1.str) `must match \"${params.ifClause}\" schema`,\n params: ({ params }) => (0, codegen_1._) `{failingKeyword: ${params.ifClause}}`,\n};\nconst def = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, parentSchema, it } = cxt;\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n (0, util_1.checkStrictMode)(it, '\"if\" without \"then\" and \"else\" is ignored');\n }\n const hasThen = hasSchema(it, \"then\");\n const hasElse = hasSchema(it, \"else\");\n if (!hasThen && !hasElse)\n return;\n const valid = gen.let(\"valid\", true);\n const schValid = gen.name(\"_valid\");\n validateIf();\n cxt.reset();\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\");\n cxt.setParams({ ifClause });\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause));\n }\n else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"));\n }\n else {\n gen.if((0, codegen_1.not)(schValid), validateClause(\"else\"));\n }\n cxt.pass(valid, () => cxt.error(true));\n function validateIf() {\n const schCxt = cxt.subschema({\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n }, schValid);\n cxt.mergeEvaluated(schCxt);\n }\n function validateClause(keyword, ifClause) {\n return () => {\n const schCxt = cxt.subschema({ keyword }, schValid);\n gen.assign(valid, schValid);\n cxt.mergeValidEvaluated(schCxt, valid);\n if (ifClause)\n gen.assign(ifClause, (0, codegen_1._) `${keyword}`);\n else\n cxt.setParams({ ifClause: keyword });\n };\n }\n },\n};\nfunction hasSchema(it, keyword) {\n const schema = it.schema[keyword];\n return schema !== undefined && !(0, util_1.alwaysValidSchema)(it, schema);\n}\nexports.default = def;\n//# sourceMappingURL=if.js.map",
62
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({ keyword, parentSchema, it }) {\n if (parentSchema.if === undefined)\n (0, util_1.checkStrictMode)(it, `\"${keyword}\" without \"if\" is ignored`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=thenElse.js.map",
63
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst additionalItems_1 = require(\"./additionalItems\");\nconst prefixItems_1 = require(\"./prefixItems\");\nconst items_1 = require(\"./items\");\nconst items2020_1 = require(\"./items2020\");\nconst contains_1 = require(\"./contains\");\nconst dependencies_1 = require(\"./dependencies\");\nconst propertyNames_1 = require(\"./propertyNames\");\nconst additionalProperties_1 = require(\"./additionalProperties\");\nconst properties_1 = require(\"./properties\");\nconst patternProperties_1 = require(\"./patternProperties\");\nconst not_1 = require(\"./not\");\nconst anyOf_1 = require(\"./anyOf\");\nconst oneOf_1 = require(\"./oneOf\");\nconst allOf_1 = require(\"./allOf\");\nconst if_1 = require(\"./if\");\nconst thenElse_1 = require(\"./thenElse\");\nfunction getApplicator(draft2020 = false) {\n const applicator = [\n // any\n not_1.default,\n anyOf_1.default,\n oneOf_1.default,\n allOf_1.default,\n if_1.default,\n thenElse_1.default,\n // object\n propertyNames_1.default,\n additionalProperties_1.default,\n dependencies_1.default,\n properties_1.default,\n patternProperties_1.default,\n ];\n // array\n if (draft2020)\n applicator.push(prefixItems_1.default, items2020_1.default);\n else\n applicator.push(additionalItems_1.default, items_1.default);\n applicator.push(contains_1.default);\n return applicator;\n}\nexports.default = getApplicator;\n//# sourceMappingURL=index.js.map",
64
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must match format \"${schemaCode}\"`,\n params: ({ schemaCode }) => (0, codegen_1._) `{format: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt, ruleType) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n const { opts, errSchemaPath, schemaEnv, self } = it;\n if (!opts.validateFormats)\n return;\n if ($data)\n validate$DataFormat();\n else\n validateFormat();\n function validate$DataFormat() {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n });\n const fDef = gen.const(\"fDef\", (0, codegen_1._) `${fmts}[${schemaCode}]`);\n const fType = gen.let(\"fType\");\n const format = gen.let(\"format\");\n // TODO simplify\n gen.if((0, codegen_1._) `typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1._) `${fDef}.type || \"string\"`).assign(format, (0, codegen_1._) `${fDef}.validate`), () => gen.assign(fType, (0, codegen_1._) `\"string\"`).assign(format, fDef));\n cxt.fail$data((0, codegen_1.or)(unknownFmt(), invalidFmt()));\n function unknownFmt() {\n if (opts.strictSchema === false)\n return codegen_1.nil;\n return (0, codegen_1._) `${schemaCode} && !${format}`;\n }\n function invalidFmt() {\n const callFormat = schemaEnv.$async\n ? (0, codegen_1._) `(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : (0, codegen_1._) `${format}(${data})`;\n const validData = (0, codegen_1._) `(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`;\n return (0, codegen_1._) `${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`;\n }\n }\n function validateFormat() {\n const formatDef = self.formats[schema];\n if (!formatDef) {\n unknownFormat();\n return;\n }\n if (formatDef === true)\n return;\n const [fmtType, format, fmtRef] = getFormat(formatDef);\n if (fmtType === ruleType)\n cxt.pass(validCondition());\n function unknownFormat() {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg());\n return;\n }\n throw new Error(unknownMsg());\n function unknownMsg() {\n return `unknown format \"${schema}\" ignored in schema at path \"${errSchemaPath}\"`;\n }\n }\n function getFormat(fmtDef) {\n const code = fmtDef instanceof RegExp\n ? (0, codegen_1.regexpCode)(fmtDef)\n : opts.code.formats\n ? (0, codegen_1._) `${opts.code.formats}${(0, codegen_1.getProperty)(schema)}`\n : undefined;\n const fmt = gen.scopeValue(\"formats\", { key: schema, ref: fmtDef, code });\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, (0, codegen_1._) `${fmt}.validate`];\n }\n return [\"string\", fmtDef, fmt];\n }\n function validCondition() {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async)\n throw new Error(\"async format in sync schema\");\n return (0, codegen_1._) `await ${fmtRef}(${data})`;\n }\n return typeof format == \"function\" ? (0, codegen_1._) `${fmtRef}(${data})` : (0, codegen_1._) `${fmtRef}.test(${data})`;\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=format.js.map",
65
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst format_1 = require(\"./format\");\nconst format = [format_1.default];\nexports.default = format;\n//# sourceMappingURL=index.js.map",
66
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.contentVocabulary = exports.metadataVocabulary = void 0;\nexports.metadataVocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n];\nexports.contentVocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n];\n//# sourceMappingURL=metadata.js.map",
67
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core_1 = require(\"./core\");\nconst validation_1 = require(\"./validation\");\nconst applicator_1 = require(\"./applicator\");\nconst format_1 = require(\"./format\");\nconst metadata_1 = require(\"./metadata\");\nconst draft7Vocabularies = [\n core_1.default,\n validation_1.default,\n (0, applicator_1.default)(),\n format_1.default,\n metadata_1.metadataVocabulary,\n metadata_1.contentVocabulary,\n];\nexports.default = draft7Vocabularies;\n//# sourceMappingURL=draft7.js.map",
68
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiscrError = void 0;\nvar DiscrError;\n(function (DiscrError) {\n DiscrError[\"Tag\"] = \"tag\";\n DiscrError[\"Mapping\"] = \"mapping\";\n})(DiscrError || (exports.DiscrError = DiscrError = {}));\n//# sourceMappingURL=types.js.map",
69
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst types_1 = require(\"../discriminator/types\");\nconst compile_1 = require(\"../../compile\");\nconst ref_error_1 = require(\"../../compile/ref_error\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({ params: { discrError, tag, tagName } }) => (0, codegen_1._) `{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n};\nconst def = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt) {\n const { gen, data, schema, parentSchema, it } = cxt;\n const { oneOf } = parentSchema;\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\");\n }\n const tagName = schema.propertyName;\n if (typeof tagName != \"string\")\n throw new Error(\"discriminator: requires propertyName\");\n if (schema.mapping)\n throw new Error(\"discriminator: mapping is not supported\");\n if (!oneOf)\n throw new Error(\"discriminator: requires oneOf keyword\");\n const valid = gen.let(\"valid\", false);\n const tag = gen.const(\"tag\", (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(tagName)}`);\n gen.if((0, codegen_1._) `typeof ${tag} == \"string\"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName }));\n cxt.ok(valid);\n function validateMapping() {\n const mapping = getMapping();\n gen.if(false);\n for (const tagValue in mapping) {\n gen.elseIf((0, codegen_1._) `${tag} === ${tagValue}`);\n gen.assign(valid, applyTagSchema(mapping[tagValue]));\n }\n gen.else();\n cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName });\n gen.endIf();\n }\n function applyTagSchema(schemaProp) {\n const _valid = gen.name(\"valid\");\n const schCxt = cxt.subschema({ keyword: \"oneOf\", schemaProp }, _valid);\n cxt.mergeEvaluated(schCxt, codegen_1.Name);\n return _valid;\n }\n function getMapping() {\n var _a;\n const oneOfMapping = {};\n const topRequired = hasRequired(parentSchema);\n let tagRequired = true;\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i];\n if ((sch === null || sch === void 0 ? void 0 : sch.$ref) && !(0, util_1.schemaHasRulesButRef)(sch, it.self.RULES)) {\n const ref = sch.$ref;\n sch = compile_1.resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref);\n if (sch instanceof compile_1.SchemaEnv)\n sch = sch.schema;\n if (sch === undefined)\n throw new ref_error_1.default(it.opts.uriResolver, it.baseId, ref);\n }\n const propSch = (_a = sch === null || sch === void 0 ? void 0 : sch.properties) === null || _a === void 0 ? void 0 : _a[tagName];\n if (typeof propSch != \"object\") {\n throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`);\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch));\n addMappings(propSch, i);\n }\n if (!tagRequired)\n throw new Error(`discriminator: \"${tagName}\" must be required`);\n return oneOfMapping;\n function hasRequired({ required }) {\n return Array.isArray(required) && required.includes(tagName);\n }\n function addMappings(sch, i) {\n if (sch.const) {\n addMapping(sch.const, i);\n }\n else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i);\n }\n }\n else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`);\n }\n }\n function addMapping(tagValue, i) {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`);\n }\n oneOfMapping[tagValue] = i;\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=index.js.map",
70
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv = void 0;\nconst core_1 = require(\"./core\");\nconst draft7_1 = require(\"./vocabularies/draft7\");\nconst discriminator_1 = require(\"./vocabularies/discriminator\");\nconst draft7MetaSchema = require(\"./refs/json-schema-draft-07.json\");\nconst META_SUPPORT_DATA = [\"/properties\"];\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\";\nclass Ajv extends core_1.default {\n _addVocabularies() {\n super._addVocabularies();\n draft7_1.default.forEach((v) => this.addVocabulary(v));\n if (this.opts.discriminator)\n this.addKeyword(discriminator_1.default);\n }\n _addDefaultMetaSchema() {\n super._addDefaultMetaSchema();\n if (!this.opts.meta)\n return;\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema;\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false);\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID;\n }\n defaultMeta() {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined));\n }\n}\nexports.Ajv = Ajv;\nmodule.exports = exports = Ajv;\nmodule.exports.Ajv = Ajv;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Ajv;\nvar validate_1 = require(\"./compile/validate\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });\nvar codegen_1 = require(\"./compile/codegen\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return codegen_1._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return codegen_1.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return codegen_1.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return codegen_1.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return codegen_1.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return codegen_1.CodeGen; } });\nvar validation_error_1 = require(\"./runtime/validation_error\");\nObject.defineProperty(exports, \"ValidationError\", { enumerable: true, get: function () { return validation_error_1.default; } });\nvar ref_error_1 = require(\"./compile/ref_error\");\nObject.defineProperty(exports, \"MissingRefError\", { enumerable: true, get: function () { return ref_error_1.default; } });\n//# sourceMappingURL=ajv.js.map",
71
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatNames = exports.fastFormats = exports.fullFormats = void 0;\nfunction fmtDef(validate, compare) {\n return { validate, compare };\n}\nexports.fullFormats = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: fmtDef(date, compareDate),\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: fmtDef(getTime(true), compareTime),\n \"date-time\": fmtDef(getDateTime(true), compareDateTime),\n \"iso-time\": fmtDef(getTime(), compareIsoTime),\n \"iso-date-time\": fmtDef(getDateTime(), compareIsoDateTime),\n // duration: https://tools.ietf.org/html/rfc3339#appendix-A\n duration: /^P(?!$)((\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?|(\\d+W)?)$/,\n uri,\n \"uri-reference\": /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,\n // uri-template: https://tools.ietf.org/html/rfc6570\n \"uri-template\": /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i,\n // For the source: https://gist.github.com/dperini/729294\n // For test cases: https://mathiasbynens.be/demo/url-regex\n url: /^(?:https?|ftp):\\/\\/(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)(?:\\.(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu,\n email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname: /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)$/,\n ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i,\n regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n \"json-pointer\": /^(?:\\/(?:[^~/]|~0|~1)*)*$/,\n \"json-pointer-uri-fragment\": /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n \"relative-json-pointer\": /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/,\n // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types\n // byte: https://github.com/miguelmota/is-base64\n byte,\n // signed 32 bit integer\n int32: { type: \"number\", validate: validateInt32 },\n // signed 64 bit integer\n int64: { type: \"number\", validate: validateInt64 },\n // C-type float\n float: { type: \"number\", validate: validateNumber },\n // C-type double\n double: { type: \"number\", validate: validateNumber },\n // hint to the UI to hide input strings\n password: true,\n // unchecked string payload\n binary: true,\n};\nexports.fastFormats = {\n ...exports.fullFormats,\n date: fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/, compareDate),\n time: fmtDef(/^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i, compareTime),\n \"date-time\": fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i, compareDateTime),\n \"iso-time\": fmtDef(/^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i, compareIsoTime),\n \"iso-date-time\": fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i, compareIsoDateTime),\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n \"uri-reference\": /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')\n email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n};\nexports.formatNames = Object.keys(exports.fullFormats);\nfunction isLeapYear(year) {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction date(str) {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n const matches = DATE.exec(str);\n if (!matches)\n return false;\n const year = +matches[1];\n const month = +matches[2];\n const day = +matches[3];\n return (month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month]));\n}\nfunction compareDate(d1, d2) {\n if (!(d1 && d2))\n return undefined;\n if (d1 > d2)\n return 1;\n if (d1 < d2)\n return -1;\n return 0;\n}\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d(?:\\.\\d+)?)(z|([+-])(\\d\\d)(?::?(\\d\\d))?)?$/i;\nfunction getTime(strictTimeZone) {\n return function time(str) {\n const matches = TIME.exec(str);\n if (!matches)\n return false;\n const hr = +matches[1];\n const min = +matches[2];\n const sec = +matches[3];\n const tz = matches[4];\n const tzSign = matches[5] === \"-\" ? -1 : 1;\n const tzH = +(matches[6] || 0);\n const tzM = +(matches[7] || 0);\n if (tzH > 23 || tzM > 59 || (strictTimeZone && !tz))\n return false;\n if (hr <= 23 && min <= 59 && sec < 60)\n return true;\n // leap second\n const utcMin = min - tzM * tzSign;\n const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0);\n return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61;\n };\n}\nfunction compareTime(s1, s2) {\n if (!(s1 && s2))\n return undefined;\n const t1 = new Date(\"2020-01-01T\" + s1).valueOf();\n const t2 = new Date(\"2020-01-01T\" + s2).valueOf();\n if (!(t1 && t2))\n return undefined;\n return t1 - t2;\n}\nfunction compareIsoTime(t1, t2) {\n if (!(t1 && t2))\n return undefined;\n const a1 = TIME.exec(t1);\n const a2 = TIME.exec(t2);\n if (!(a1 && a2))\n return undefined;\n t1 = a1[1] + a1[2] + a1[3];\n t2 = a2[1] + a2[2] + a2[3];\n if (t1 > t2)\n return 1;\n if (t1 < t2)\n return -1;\n return 0;\n}\nconst DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction getDateTime(strictTimeZone) {\n const time = getTime(strictTimeZone);\n return function date_time(str) {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n const dateTime = str.split(DATE_TIME_SEPARATOR);\n return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1]);\n };\n}\nfunction compareDateTime(dt1, dt2) {\n if (!(dt1 && dt2))\n return undefined;\n const d1 = new Date(dt1).valueOf();\n const d2 = new Date(dt2).valueOf();\n if (!(d1 && d2))\n return undefined;\n return d1 - d2;\n}\nfunction compareIsoDateTime(dt1, dt2) {\n if (!(dt1 && dt2))\n return undefined;\n const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR);\n const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR);\n const res = compareDate(d1, d2);\n if (res === undefined)\n return undefined;\n return res || compareTime(t1, t2);\n}\nconst NOT_URI_FRAGMENT = /\\/|:/;\nconst URI = /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\nfunction uri(str) {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n}\nconst BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;\nfunction byte(str) {\n BYTE.lastIndex = 0;\n return BYTE.test(str);\n}\nconst MIN_INT32 = -(2 ** 31);\nconst MAX_INT32 = 2 ** 31 - 1;\nfunction validateInt32(value) {\n return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32;\n}\nfunction validateInt64(value) {\n // JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64\n return Number.isInteger(value);\n}\nfunction validateNumber() {\n return true;\n}\nconst Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\n if (Z_ANCHOR.test(str))\n return false;\n try {\n new RegExp(str);\n return true;\n }\n catch (e) {\n return false;\n }\n}\n//# sourceMappingURL=formats.js.map",
72
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatLimitDefinition = void 0;\nconst ajv_1 = require(\"ajv\");\nconst codegen_1 = require(\"ajv/dist/compile/codegen\");\nconst ops = codegen_1.operators;\nconst KWDs = {\n formatMaximum: { okStr: \"<=\", ok: ops.LTE, fail: ops.GT },\n formatMinimum: { okStr: \">=\", ok: ops.GTE, fail: ops.LT },\n formatExclusiveMaximum: { okStr: \"<\", ok: ops.LT, fail: ops.GTE },\n formatExclusiveMinimum: { okStr: \">\", ok: ops.GT, fail: ops.LTE },\n};\nconst error = {\n message: ({ keyword, schemaCode }) => (0, codegen_1.str) `should be ${KWDs[keyword].okStr} ${schemaCode}`,\n params: ({ keyword, schemaCode }) => (0, codegen_1._) `{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`,\n};\nexports.formatLimitDefinition = {\n keyword: Object.keys(KWDs),\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, schemaCode, keyword, it } = cxt;\n const { opts, self } = it;\n if (!opts.validateFormats)\n return;\n const fCxt = new ajv_1.KeywordCxt(it, self.RULES.all.format.definition, \"format\");\n if (fCxt.$data)\n validate$DataFormat();\n else\n validateFormat();\n function validate$DataFormat() {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n });\n const fmt = gen.const(\"fmt\", (0, codegen_1._) `${fmts}[${fCxt.schemaCode}]`);\n cxt.fail$data((0, codegen_1.or)((0, codegen_1._) `typeof ${fmt} != \"object\"`, (0, codegen_1._) `${fmt} instanceof RegExp`, (0, codegen_1._) `typeof ${fmt}.compare != \"function\"`, compareCode(fmt)));\n }\n function validateFormat() {\n const format = fCxt.schema;\n const fmtDef = self.formats[format];\n if (!fmtDef || fmtDef === true)\n return;\n if (typeof fmtDef != \"object\" ||\n fmtDef instanceof RegExp ||\n typeof fmtDef.compare != \"function\") {\n throw new Error(`\"${keyword}\": format \"${format}\" does not define \"compare\" function`);\n }\n const fmt = gen.scopeValue(\"formats\", {\n key: format,\n ref: fmtDef,\n code: opts.code.formats ? (0, codegen_1._) `${opts.code.formats}${(0, codegen_1.getProperty)(format)}` : undefined,\n });\n cxt.fail$data(compareCode(fmt));\n }\n function compareCode(fmt) {\n return (0, codegen_1._) `${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword].fail} 0`;\n }\n },\n dependencies: [\"format\"],\n};\nconst formatLimitPlugin = (ajv) => {\n ajv.addKeyword(exports.formatLimitDefinition);\n return ajv;\n};\nexports.default = formatLimitPlugin;\n//# sourceMappingURL=limit.js.map",
73
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst formats_1 = require(\"./formats\");\nconst limit_1 = require(\"./limit\");\nconst codegen_1 = require(\"ajv/dist/compile/codegen\");\nconst fullName = new codegen_1.Name(\"fullFormats\");\nconst fastName = new codegen_1.Name(\"fastFormats\");\nconst formatsPlugin = (ajv, opts = { keywords: true }) => {\n if (Array.isArray(opts)) {\n addFormats(ajv, opts, formats_1.fullFormats, fullName);\n return ajv;\n }\n const [formats, exportName] = opts.mode === \"fast\" ? [formats_1.fastFormats, fastName] : [formats_1.fullFormats, fullName];\n const list = opts.formats || formats_1.formatNames;\n addFormats(ajv, list, formats, exportName);\n if (opts.keywords)\n (0, limit_1.default)(ajv);\n return ajv;\n};\nformatsPlugin.get = (name, mode = \"full\") => {\n const formats = mode === \"fast\" ? formats_1.fastFormats : formats_1.fullFormats;\n const f = formats[name];\n if (!f)\n throw new Error(`Unknown format \"${name}\"`);\n return f;\n};\nfunction addFormats(ajv, list, fs, exportName) {\n var _a;\n var _b;\n (_a = (_b = ajv.opts.code).formats) !== null && _a !== void 0 ? _a : (_b.formats = (0, codegen_1._) `require(\"ajv-formats/dist/formats\").${exportName}`);\n for (const f of list)\n ajv.addFormat(f, fs[f]);\n}\nmodule.exports = exports = formatsPlugin;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = formatsPlugin;\n//# sourceMappingURL=index.js.map",
74
+ "/**\n * Returns a `Buffer` instance from the given data URI `uri`.\n *\n * @param {String} uri Data URI to turn into a Buffer instance\n * @returns {Buffer} Buffer instance from Data URI\n * @api public\n */\nexport function dataUriToBuffer(uri) {\n if (!/^data:/i.test(uri)) {\n throw new TypeError('`uri` does not appear to be a Data URI (must begin with \"data:\")');\n }\n // strip newlines\n uri = uri.replace(/\\r?\\n/g, '');\n // split the URI up into the \"metadata\" and the \"data\" portions\n const firstComma = uri.indexOf(',');\n if (firstComma === -1 || firstComma <= 4) {\n throw new TypeError('malformed data: URI');\n }\n // remove the \"data:\" scheme and parse the metadata\n const meta = uri.substring(5, firstComma).split(';');\n let charset = '';\n let base64 = false;\n const type = meta[0] || 'text/plain';\n let typeFull = type;\n for (let i = 1; i < meta.length; i++) {\n if (meta[i] === 'base64') {\n base64 = true;\n }\n else if (meta[i]) {\n typeFull += `;${meta[i]}`;\n if (meta[i].indexOf('charset=') === 0) {\n charset = meta[i].substring(8);\n }\n }\n }\n // defaults to US-ASCII only if type is not provided\n if (!meta[0] && !charset.length) {\n typeFull += ';charset=US-ASCII';\n charset = 'US-ASCII';\n }\n // get the encoded data portion and decode URI-encoded chars\n const encoding = base64 ? 'base64' : 'ascii';\n const data = unescape(uri.substring(firstComma + 1));\n const buffer = Buffer.from(data, encoding);\n // set `.type` and `.typeFull` properties to MIME type\n buffer.type = type;\n buffer.typeFull = typeFull;\n // set the `.charset` property\n buffer.charset = charset;\n return buffer;\n}\nexport default dataUriToBuffer;\n//# sourceMappingURL=index.js.map",
75
+ "/**\n * @license\n * web-streams-polyfill v3.3.3\n * Copyright 2024 Mattias Buelens, Diwank Singh Tomer and other contributors.\n * This code is released under the MIT license.\n * SPDX-License-Identifier: MIT\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.WebStreamsPolyfill = {}));\n})(this, (function (exports) { 'use strict';\n\n function noop() {\n return undefined;\n }\n\n function typeIsObject(x) {\n return (typeof x === 'object' && x !== null) || typeof x === 'function';\n }\n const rethrowAssertionErrorRejection = noop;\n function setFunctionName(fn, name) {\n try {\n Object.defineProperty(fn, 'name', {\n value: name,\n configurable: true\n });\n }\n catch (_a) {\n // This property is non-configurable in older browsers, so ignore if this throws.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name#browser_compatibility\n }\n }\n\n const originalPromise = Promise;\n const originalPromiseThen = Promise.prototype.then;\n const originalPromiseReject = Promise.reject.bind(originalPromise);\n // https://webidl.spec.whatwg.org/#a-new-promise\n function newPromise(executor) {\n return new originalPromise(executor);\n }\n // https://webidl.spec.whatwg.org/#a-promise-resolved-with\n function promiseResolvedWith(value) {\n return newPromise(resolve => resolve(value));\n }\n // https://webidl.spec.whatwg.org/#a-promise-rejected-with\n function promiseRejectedWith(reason) {\n return originalPromiseReject(reason);\n }\n function PerformPromiseThen(promise, onFulfilled, onRejected) {\n // There doesn't appear to be any way to correctly emulate the behaviour from JavaScript, so this is just an\n // approximation.\n return originalPromiseThen.call(promise, onFulfilled, onRejected);\n }\n // Bluebird logs a warning when a promise is created within a fulfillment handler, but then isn't returned\n // from that handler. To prevent this, return null instead of void from all handlers.\n // http://bluebirdjs.com/docs/warning-explanations.html#warning-a-promise-was-created-in-a-handler-but-was-not-returned-from-it\n function uponPromise(promise, onFulfilled, onRejected) {\n PerformPromiseThen(PerformPromiseThen(promise, onFulfilled, onRejected), undefined, rethrowAssertionErrorRejection);\n }\n function uponFulfillment(promise, onFulfilled) {\n uponPromise(promise, onFulfilled);\n }\n function uponRejection(promise, onRejected) {\n uponPromise(promise, undefined, onRejected);\n }\n function transformPromiseWith(promise, fulfillmentHandler, rejectionHandler) {\n return PerformPromiseThen(promise, fulfillmentHandler, rejectionHandler);\n }\n function setPromiseIsHandledToTrue(promise) {\n PerformPromiseThen(promise, undefined, rethrowAssertionErrorRejection);\n }\n let _queueMicrotask = callback => {\n if (typeof queueMicrotask === 'function') {\n _queueMicrotask = queueMicrotask;\n }\n else {\n const resolvedPromise = promiseResolvedWith(undefined);\n _queueMicrotask = cb => PerformPromiseThen(resolvedPromise, cb);\n }\n return _queueMicrotask(callback);\n };\n function reflectCall(F, V, args) {\n if (typeof F !== 'function') {\n throw new TypeError('Argument is not a function');\n }\n return Function.prototype.apply.call(F, V, args);\n }\n function promiseCall(F, V, args) {\n try {\n return promiseResolvedWith(reflectCall(F, V, args));\n }\n catch (value) {\n return promiseRejectedWith(value);\n }\n }\n\n // Original from Chromium\n // https://chromium.googlesource.com/chromium/src/+/0aee4434a4dba42a42abaea9bfbc0cd196a63bc1/third_party/blink/renderer/core/streams/SimpleQueue.js\n const QUEUE_MAX_ARRAY_SIZE = 16384;\n /**\n * Simple queue structure.\n *\n * Avoids scalability issues with using a packed array directly by using\n * multiple arrays in a linked list and keeping the array size bounded.\n */\n class SimpleQueue {\n constructor() {\n this._cursor = 0;\n this._size = 0;\n // _front and _back are always defined.\n this._front = {\n _elements: [],\n _next: undefined\n };\n this._back = this._front;\n // The cursor is used to avoid calling Array.shift().\n // It contains the index of the front element of the array inside the\n // front-most node. It is always in the range [0, QUEUE_MAX_ARRAY_SIZE).\n this._cursor = 0;\n // When there is only one node, size === elements.length - cursor.\n this._size = 0;\n }\n get length() {\n return this._size;\n }\n // For exception safety, this method is structured in order:\n // 1. Read state\n // 2. Calculate required state mutations\n // 3. Perform state mutations\n push(element) {\n const oldBack = this._back;\n let newBack = oldBack;\n if (oldBack._elements.length === QUEUE_MAX_ARRAY_SIZE - 1) {\n newBack = {\n _elements: [],\n _next: undefined\n };\n }\n // push() is the mutation most likely to throw an exception, so it\n // goes first.\n oldBack._elements.push(element);\n if (newBack !== oldBack) {\n this._back = newBack;\n oldBack._next = newBack;\n }\n ++this._size;\n }\n // Like push(), shift() follows the read -> calculate -> mutate pattern for\n // exception safety.\n shift() { // must not be called on an empty queue\n const oldFront = this._front;\n let newFront = oldFront;\n const oldCursor = this._cursor;\n let newCursor = oldCursor + 1;\n const elements = oldFront._elements;\n const element = elements[oldCursor];\n if (newCursor === QUEUE_MAX_ARRAY_SIZE) {\n newFront = oldFront._next;\n newCursor = 0;\n }\n // No mutations before this point.\n --this._size;\n this._cursor = newCursor;\n if (oldFront !== newFront) {\n this._front = newFront;\n }\n // Permit shifted element to be garbage collected.\n elements[oldCursor] = undefined;\n return element;\n }\n // The tricky thing about forEach() is that it can be called\n // re-entrantly. The queue may be mutated inside the callback. It is easy to\n // see that push() within the callback has no negative effects since the end\n // of the queue is checked for on every iteration. If shift() is called\n // repeatedly within the callback then the next iteration may return an\n // element that has been removed. In this case the callback will be called\n // with undefined values until we either \"catch up\" with elements that still\n // exist or reach the back of the queue.\n forEach(callback) {\n let i = this._cursor;\n let node = this._front;\n let elements = node._elements;\n while (i !== elements.length || node._next !== undefined) {\n if (i === elements.length) {\n node = node._next;\n elements = node._elements;\n i = 0;\n if (elements.length === 0) {\n break;\n }\n }\n callback(elements[i]);\n ++i;\n }\n }\n // Return the element that would be returned if shift() was called now,\n // without modifying the queue.\n peek() { // must not be called on an empty queue\n const front = this._front;\n const cursor = this._cursor;\n return front._elements[cursor];\n }\n }\n\n const AbortSteps = Symbol('[[AbortSteps]]');\n const ErrorSteps = Symbol('[[ErrorSteps]]');\n const CancelSteps = Symbol('[[CancelSteps]]');\n const PullSteps = Symbol('[[PullSteps]]');\n const ReleaseSteps = Symbol('[[ReleaseSteps]]');\n\n function ReadableStreamReaderGenericInitialize(reader, stream) {\n reader._ownerReadableStream = stream;\n stream._reader = reader;\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseInitialize(reader);\n }\n else if (stream._state === 'closed') {\n defaultReaderClosedPromiseInitializeAsResolved(reader);\n }\n else {\n defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n }\n }\n // A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n // check.\n function ReadableStreamReaderGenericCancel(reader, reason) {\n const stream = reader._ownerReadableStream;\n return ReadableStreamCancel(stream, reason);\n }\n function ReadableStreamReaderGenericRelease(reader) {\n const stream = reader._ownerReadableStream;\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseReject(reader, new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`));\n }\n else {\n defaultReaderClosedPromiseResetToRejected(reader, new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`));\n }\n stream._readableStreamController[ReleaseSteps]();\n stream._reader = undefined;\n reader._ownerReadableStream = undefined;\n }\n // Helper functions for the readers.\n function readerLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released reader');\n }\n // Helper functions for the ReadableStreamDefaultReader.\n function defaultReaderClosedPromiseInitialize(reader) {\n reader._closedPromise = newPromise((resolve, reject) => {\n reader._closedPromise_resolve = resolve;\n reader._closedPromise_reject = reject;\n });\n }\n function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseReject(reader, reason);\n }\n function defaultReaderClosedPromiseInitializeAsResolved(reader) {\n defaultReaderClosedPromiseInitialize(reader);\n defaultReaderClosedPromiseResolve(reader);\n }\n function defaultReaderClosedPromiseReject(reader, reason) {\n if (reader._closedPromise_reject === undefined) {\n return;\n }\n setPromiseIsHandledToTrue(reader._closedPromise);\n reader._closedPromise_reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n }\n function defaultReaderClosedPromiseResetToRejected(reader, reason) {\n defaultReaderClosedPromiseInitializeAsRejected(reader, reason);\n }\n function defaultReaderClosedPromiseResolve(reader) {\n if (reader._closedPromise_resolve === undefined) {\n return;\n }\n reader._closedPromise_resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n }\n\n /// <reference lib=\"es2015.core\" />\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite#Polyfill\n const NumberIsFinite = Number.isFinite || function (x) {\n return typeof x === 'number' && isFinite(x);\n };\n\n /// <reference lib=\"es2015.core\" />\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc#Polyfill\n const MathTrunc = Math.trunc || function (v) {\n return v < 0 ? Math.ceil(v) : Math.floor(v);\n };\n\n // https://heycam.github.io/webidl/#idl-dictionaries\n function isDictionary(x) {\n return typeof x === 'object' || typeof x === 'function';\n }\n function assertDictionary(obj, context) {\n if (obj !== undefined && !isDictionary(obj)) {\n throw new TypeError(`${context} is not an object.`);\n }\n }\n // https://heycam.github.io/webidl/#idl-callback-functions\n function assertFunction(x, context) {\n if (typeof x !== 'function') {\n throw new TypeError(`${context} is not a function.`);\n }\n }\n // https://heycam.github.io/webidl/#idl-object\n function isObject(x) {\n return (typeof x === 'object' && x !== null) || typeof x === 'function';\n }\n function assertObject(x, context) {\n if (!isObject(x)) {\n throw new TypeError(`${context} is not an object.`);\n }\n }\n function assertRequiredArgument(x, position, context) {\n if (x === undefined) {\n throw new TypeError(`Parameter ${position} is required in '${context}'.`);\n }\n }\n function assertRequiredField(x, field, context) {\n if (x === undefined) {\n throw new TypeError(`${field} is required in '${context}'.`);\n }\n }\n // https://heycam.github.io/webidl/#idl-unrestricted-double\n function convertUnrestrictedDouble(value) {\n return Number(value);\n }\n function censorNegativeZero(x) {\n return x === 0 ? 0 : x;\n }\n function integerPart(x) {\n return censorNegativeZero(MathTrunc(x));\n }\n // https://heycam.github.io/webidl/#idl-unsigned-long-long\n function convertUnsignedLongLongWithEnforceRange(value, context) {\n const lowerBound = 0;\n const upperBound = Number.MAX_SAFE_INTEGER;\n let x = Number(value);\n x = censorNegativeZero(x);\n if (!NumberIsFinite(x)) {\n throw new TypeError(`${context} is not a finite number`);\n }\n x = integerPart(x);\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(`${context} is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`);\n }\n if (!NumberIsFinite(x) || x === 0) {\n return 0;\n }\n // TODO Use BigInt if supported?\n // let xBigInt = BigInt(integerPart(x));\n // xBigInt = BigInt.asUintN(64, xBigInt);\n // return Number(xBigInt);\n return x;\n }\n\n function assertReadableStream(x, context) {\n if (!IsReadableStream(x)) {\n throw new TypeError(`${context} is not a ReadableStream.`);\n }\n }\n\n // Abstract operations for the ReadableStream.\n function AcquireReadableStreamDefaultReader(stream) {\n return new ReadableStreamDefaultReader(stream);\n }\n // ReadableStream API exposed for controllers.\n function ReadableStreamAddReadRequest(stream, readRequest) {\n stream._reader._readRequests.push(readRequest);\n }\n function ReadableStreamFulfillReadRequest(stream, chunk, done) {\n const reader = stream._reader;\n const readRequest = reader._readRequests.shift();\n if (done) {\n readRequest._closeSteps();\n }\n else {\n readRequest._chunkSteps(chunk);\n }\n }\n function ReadableStreamGetNumReadRequests(stream) {\n return stream._reader._readRequests.length;\n }\n function ReadableStreamHasDefaultReader(stream) {\n const reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamDefaultReader(reader)) {\n return false;\n }\n return true;\n }\n /**\n * A default reader vended by a {@link ReadableStream}.\n *\n * @public\n */\n class ReadableStreamDefaultReader {\n constructor(stream) {\n assertRequiredArgument(stream, 1, 'ReadableStreamDefaultReader');\n assertReadableStream(stream, 'First parameter');\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n ReadableStreamReaderGenericInitialize(this, stream);\n this._readRequests = new SimpleQueue();\n }\n /**\n * Returns a promise that will be fulfilled when the stream becomes closed,\n * or rejected if the stream ever errors or the reader's lock is released before the stream finishes closing.\n */\n get closed() {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n }\n /**\n * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.\n */\n cancel(reason = undefined) {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n /**\n * Returns a promise that allows access to the next chunk from the stream's internal queue, if available.\n *\n * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source.\n */\n read() {\n if (!IsReadableStreamDefaultReader(this)) {\n return promiseRejectedWith(defaultReaderBrandCheckException('read'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n let resolvePromise;\n let rejectPromise;\n const promise = newPromise((resolve, reject) => {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n const readRequest = {\n _chunkSteps: chunk => resolvePromise({ value: chunk, done: false }),\n _closeSteps: () => resolvePromise({ value: undefined, done: true }),\n _errorSteps: e => rejectPromise(e)\n };\n ReadableStreamDefaultReaderRead(this, readRequest);\n return promise;\n }\n /**\n * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.\n * If the associated stream is errored when the lock is released, the reader will appear errored in the same way\n * from now on; otherwise, the reader will appear closed.\n *\n * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by\n * the reader's {@link ReadableStreamDefaultReader.read | read()} method has not yet been settled. Attempting to\n * do so will throw a `TypeError` and leave the reader locked to the stream.\n */\n releaseLock() {\n if (!IsReadableStreamDefaultReader(this)) {\n throw defaultReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n ReadableStreamDefaultReaderRelease(this);\n }\n }\n Object.defineProperties(ReadableStreamDefaultReader.prototype, {\n cancel: { enumerable: true },\n read: { enumerable: true },\n releaseLock: { enumerable: true },\n closed: { enumerable: true }\n });\n setFunctionName(ReadableStreamDefaultReader.prototype.cancel, 'cancel');\n setFunctionName(ReadableStreamDefaultReader.prototype.read, 'read');\n setFunctionName(ReadableStreamDefaultReader.prototype.releaseLock, 'releaseLock');\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamDefaultReader.prototype, Symbol.toStringTag, {\n value: 'ReadableStreamDefaultReader',\n configurable: true\n });\n }\n // Abstract operations for the readers.\n function IsReadableStreamDefaultReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n return false;\n }\n return x instanceof ReadableStreamDefaultReader;\n }\n function ReadableStreamDefaultReaderRead(reader, readRequest) {\n const stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'closed') {\n readRequest._closeSteps();\n }\n else if (stream._state === 'errored') {\n readRequest._errorSteps(stream._storedError);\n }\n else {\n stream._readableStreamController[PullSteps](readRequest);\n }\n }\n function ReadableStreamDefaultReaderRelease(reader) {\n ReadableStreamReaderGenericRelease(reader);\n const e = new TypeError('Reader was released');\n ReadableStreamDefaultReaderErrorReadRequests(reader, e);\n }\n function ReadableStreamDefaultReaderErrorReadRequests(reader, e) {\n const readRequests = reader._readRequests;\n reader._readRequests = new SimpleQueue();\n readRequests.forEach(readRequest => {\n readRequest._errorSteps(e);\n });\n }\n // Helper functions for the ReadableStreamDefaultReader.\n function defaultReaderBrandCheckException(name) {\n return new TypeError(`ReadableStreamDefaultReader.prototype.${name} can only be used on a ReadableStreamDefaultReader`);\n }\n\n /// <reference lib=\"es2018.asynciterable\" />\n /* eslint-disable @typescript-eslint/no-empty-function */\n const AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () { }).prototype);\n\n /// <reference lib=\"es2018.asynciterable\" />\n class ReadableStreamAsyncIteratorImpl {\n constructor(reader, preventCancel) {\n this._ongoingPromise = undefined;\n this._isFinished = false;\n this._reader = reader;\n this._preventCancel = preventCancel;\n }\n next() {\n const nextSteps = () => this._nextSteps();\n this._ongoingPromise = this._ongoingPromise ?\n transformPromiseWith(this._ongoingPromise, nextSteps, nextSteps) :\n nextSteps();\n return this._ongoingPromise;\n }\n return(value) {\n const returnSteps = () => this._returnSteps(value);\n return this._ongoingPromise ?\n transformPromiseWith(this._ongoingPromise, returnSteps, returnSteps) :\n returnSteps();\n }\n _nextSteps() {\n if (this._isFinished) {\n return Promise.resolve({ value: undefined, done: true });\n }\n const reader = this._reader;\n let resolvePromise;\n let rejectPromise;\n const promise = newPromise((resolve, reject) => {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n const readRequest = {\n _chunkSteps: chunk => {\n this._ongoingPromise = undefined;\n // This needs to be delayed by one microtask, otherwise we stop pulling too early which breaks a test.\n // FIXME Is this a bug in the specification, or in the test?\n _queueMicrotask(() => resolvePromise({ value: chunk, done: false }));\n },\n _closeSteps: () => {\n this._ongoingPromise = undefined;\n this._isFinished = true;\n ReadableStreamReaderGenericRelease(reader);\n resolvePromise({ value: undefined, done: true });\n },\n _errorSteps: reason => {\n this._ongoingPromise = undefined;\n this._isFinished = true;\n ReadableStreamReaderGenericRelease(reader);\n rejectPromise(reason);\n }\n };\n ReadableStreamDefaultReaderRead(reader, readRequest);\n return promise;\n }\n _returnSteps(value) {\n if (this._isFinished) {\n return Promise.resolve({ value, done: true });\n }\n this._isFinished = true;\n const reader = this._reader;\n if (!this._preventCancel) {\n const result = ReadableStreamReaderGenericCancel(reader, value);\n ReadableStreamReaderGenericRelease(reader);\n return transformPromiseWith(result, () => ({ value, done: true }));\n }\n ReadableStreamReaderGenericRelease(reader);\n return promiseResolvedWith({ value, done: true });\n }\n }\n const ReadableStreamAsyncIteratorPrototype = {\n next() {\n if (!IsReadableStreamAsyncIterator(this)) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('next'));\n }\n return this._asyncIteratorImpl.next();\n },\n return(value) {\n if (!IsReadableStreamAsyncIterator(this)) {\n return promiseRejectedWith(streamAsyncIteratorBrandCheckException('return'));\n }\n return this._asyncIteratorImpl.return(value);\n }\n };\n Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype);\n // Abstract operations for the ReadableStream.\n function AcquireReadableStreamAsyncIterator(stream, preventCancel) {\n const reader = AcquireReadableStreamDefaultReader(stream);\n const impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel);\n const iterator = Object.create(ReadableStreamAsyncIteratorPrototype);\n iterator._asyncIteratorImpl = impl;\n return iterator;\n }\n function IsReadableStreamAsyncIterator(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_asyncIteratorImpl')) {\n return false;\n }\n try {\n // noinspection SuspiciousTypeOfGuard\n return x._asyncIteratorImpl instanceof\n ReadableStreamAsyncIteratorImpl;\n }\n catch (_a) {\n return false;\n }\n }\n // Helper functions for the ReadableStream.\n function streamAsyncIteratorBrandCheckException(name) {\n return new TypeError(`ReadableStreamAsyncIterator.${name} can only be used on a ReadableSteamAsyncIterator`);\n }\n\n /// <reference lib=\"es2015.core\" />\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN#Polyfill\n const NumberIsNaN = Number.isNaN || function (x) {\n // eslint-disable-next-line no-self-compare\n return x !== x;\n };\n\n var _a, _b, _c;\n function CreateArrayFromList(elements) {\n // We use arrays to represent lists, so this is basically a no-op.\n // Do a slice though just in case we happen to depend on the unique-ness.\n return elements.slice();\n }\n function CopyDataBlockBytes(dest, destOffset, src, srcOffset, n) {\n new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n }\n let TransferArrayBuffer = (O) => {\n if (typeof O.transfer === 'function') {\n TransferArrayBuffer = buffer => buffer.transfer();\n }\n else if (typeof structuredClone === 'function') {\n TransferArrayBuffer = buffer => structuredClone(buffer, { transfer: [buffer] });\n }\n else {\n // Not implemented correctly\n TransferArrayBuffer = buffer => buffer;\n }\n return TransferArrayBuffer(O);\n };\n let IsDetachedBuffer = (O) => {\n if (typeof O.detached === 'boolean') {\n IsDetachedBuffer = buffer => buffer.detached;\n }\n else {\n // Not implemented correctly\n IsDetachedBuffer = buffer => buffer.byteLength === 0;\n }\n return IsDetachedBuffer(O);\n };\n function ArrayBufferSlice(buffer, begin, end) {\n // ArrayBuffer.prototype.slice is not available on IE10\n // https://www.caniuse.com/mdn-javascript_builtins_arraybuffer_slice\n if (buffer.slice) {\n return buffer.slice(begin, end);\n }\n const length = end - begin;\n const slice = new ArrayBuffer(length);\n CopyDataBlockBytes(slice, 0, buffer, begin, length);\n return slice;\n }\n function GetMethod(receiver, prop) {\n const func = receiver[prop];\n if (func === undefined || func === null) {\n return undefined;\n }\n if (typeof func !== 'function') {\n throw new TypeError(`${String(prop)} is not a function`);\n }\n return func;\n }\n function CreateAsyncFromSyncIterator(syncIteratorRecord) {\n // Instead of re-implementing CreateAsyncFromSyncIterator and %AsyncFromSyncIteratorPrototype%,\n // we use yield* inside an async generator function to achieve the same result.\n // Wrap the sync iterator inside a sync iterable, so we can use it with yield*.\n const syncIterable = {\n [Symbol.iterator]: () => syncIteratorRecord.iterator\n };\n // Create an async generator function and immediately invoke it.\n const asyncIterator = (async function* () {\n return yield* syncIterable;\n }());\n // Return as an async iterator record.\n const nextMethod = asyncIterator.next;\n return { iterator: asyncIterator, nextMethod, done: false };\n }\n // Aligns with core-js/modules/es.symbol.async-iterator.js\n const SymbolAsyncIterator = (_c = (_a = Symbol.asyncIterator) !== null && _a !== void 0 ? _a : (_b = Symbol.for) === null || _b === void 0 ? void 0 : _b.call(Symbol, 'Symbol.asyncIterator')) !== null && _c !== void 0 ? _c : '@@asyncIterator';\n function GetIterator(obj, hint = 'sync', method) {\n if (method === undefined) {\n if (hint === 'async') {\n method = GetMethod(obj, SymbolAsyncIterator);\n if (method === undefined) {\n const syncMethod = GetMethod(obj, Symbol.iterator);\n const syncIteratorRecord = GetIterator(obj, 'sync', syncMethod);\n return CreateAsyncFromSyncIterator(syncIteratorRecord);\n }\n }\n else {\n method = GetMethod(obj, Symbol.iterator);\n }\n }\n if (method === undefined) {\n throw new TypeError('The object is not iterable');\n }\n const iterator = reflectCall(method, obj, []);\n if (!typeIsObject(iterator)) {\n throw new TypeError('The iterator method must return an object');\n }\n const nextMethod = iterator.next;\n return { iterator, nextMethod, done: false };\n }\n function IteratorNext(iteratorRecord) {\n const result = reflectCall(iteratorRecord.nextMethod, iteratorRecord.iterator, []);\n if (!typeIsObject(result)) {\n throw new TypeError('The iterator.next() method must return an object');\n }\n return result;\n }\n function IteratorComplete(iterResult) {\n return Boolean(iterResult.done);\n }\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n\n function IsNonNegativeNumber(v) {\n if (typeof v !== 'number') {\n return false;\n }\n if (NumberIsNaN(v)) {\n return false;\n }\n if (v < 0) {\n return false;\n }\n return true;\n }\n function CloneAsUint8Array(O) {\n const buffer = ArrayBufferSlice(O.buffer, O.byteOffset, O.byteOffset + O.byteLength);\n return new Uint8Array(buffer);\n }\n\n function DequeueValue(container) {\n const pair = container._queue.shift();\n container._queueTotalSize -= pair.size;\n if (container._queueTotalSize < 0) {\n container._queueTotalSize = 0;\n }\n return pair.value;\n }\n function EnqueueValueWithSize(container, value, size) {\n if (!IsNonNegativeNumber(size) || size === Infinity) {\n throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n }\n container._queue.push({ value, size });\n container._queueTotalSize += size;\n }\n function PeekQueueValue(container) {\n const pair = container._queue.peek();\n return pair.value;\n }\n function ResetQueue(container) {\n container._queue = new SimpleQueue();\n container._queueTotalSize = 0;\n }\n\n function isDataViewConstructor(ctor) {\n return ctor === DataView;\n }\n function isDataView(view) {\n return isDataViewConstructor(view.constructor);\n }\n function arrayBufferViewElementSize(ctor) {\n if (isDataViewConstructor(ctor)) {\n return 1;\n }\n return ctor.BYTES_PER_ELEMENT;\n }\n\n /**\n * A pull-into request in a {@link ReadableByteStreamController}.\n *\n * @public\n */\n class ReadableStreamBYOBRequest {\n constructor() {\n throw new TypeError('Illegal constructor');\n }\n /**\n * Returns the view for writing in to, or `null` if the BYOB request has already been responded to.\n */\n get view() {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('view');\n }\n return this._view;\n }\n respond(bytesWritten) {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('respond');\n }\n assertRequiredArgument(bytesWritten, 1, 'respond');\n bytesWritten = convertUnsignedLongLongWithEnforceRange(bytesWritten, 'First parameter');\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n if (IsDetachedBuffer(this._view.buffer)) {\n throw new TypeError(`The BYOB request's buffer has been detached and so cannot be used as a response`);\n }\n ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n }\n respondWithNewView(view) {\n if (!IsReadableStreamBYOBRequest(this)) {\n throw byobRequestBrandCheckException('respondWithNewView');\n }\n assertRequiredArgument(view, 1, 'respondWithNewView');\n if (!ArrayBuffer.isView(view)) {\n throw new TypeError('You can only respond with array buffer views');\n }\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n if (IsDetachedBuffer(view.buffer)) {\n throw new TypeError('The given view\\'s buffer has been detached and so cannot be used as a response');\n }\n ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n }\n }\n Object.defineProperties(ReadableStreamBYOBRequest.prototype, {\n respond: { enumerable: true },\n respondWithNewView: { enumerable: true },\n view: { enumerable: true }\n });\n setFunctionName(ReadableStreamBYOBRequest.prototype.respond, 'respond');\n setFunctionName(ReadableStreamBYOBRequest.prototype.respondWithNewView, 'respondWithNewView');\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamBYOBRequest.prototype, Symbol.toStringTag, {\n value: 'ReadableStreamBYOBRequest',\n configurable: true\n });\n }\n /**\n * Allows control of a {@link ReadableStream | readable byte stream}'s state and internal queue.\n *\n * @public\n */\n class ReadableByteStreamController {\n constructor() {\n throw new TypeError('Illegal constructor');\n }\n /**\n * Returns the current BYOB pull request, or `null` if there isn't one.\n */\n get byobRequest() {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('byobRequest');\n }\n return ReadableByteStreamControllerGetBYOBRequest(this);\n }\n /**\n * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is\n * over-full. An underlying byte source ought to use this information to determine when and how to apply backpressure.\n */\n get desiredSize() {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('desiredSize');\n }\n return ReadableByteStreamControllerGetDesiredSize(this);\n }\n /**\n * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from\n * the stream, but once those are read, the stream will become closed.\n */\n close() {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('close');\n }\n if (this._closeRequested) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n const state = this._controlledReadableByteStream._state;\n if (state !== 'readable') {\n throw new TypeError(`The stream (in ${state} state) is not in the readable state and cannot be closed`);\n }\n ReadableByteStreamControllerClose(this);\n }\n enqueue(chunk) {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('enqueue');\n }\n assertRequiredArgument(chunk, 1, 'enqueue');\n if (!ArrayBuffer.isView(chunk)) {\n throw new TypeError('chunk must be an array buffer view');\n }\n if (chunk.byteLength === 0) {\n throw new TypeError('chunk must have non-zero byteLength');\n }\n if (chunk.buffer.byteLength === 0) {\n throw new TypeError(`chunk's buffer must have non-zero byteLength`);\n }\n if (this._closeRequested) {\n throw new TypeError('stream is closed or draining');\n }\n const state = this._controlledReadableByteStream._state;\n if (state !== 'readable') {\n throw new TypeError(`The stream (in ${state} state) is not in the readable state and cannot be enqueued to`);\n }\n ReadableByteStreamControllerEnqueue(this, chunk);\n }\n /**\n * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.\n */\n error(e = undefined) {\n if (!IsReadableByteStreamController(this)) {\n throw byteStreamControllerBrandCheckException('error');\n }\n ReadableByteStreamControllerError(this, e);\n }\n /** @internal */\n [CancelSteps](reason) {\n ReadableByteStreamControllerClearPendingPullIntos(this);\n ResetQueue(this);\n const result = this._cancelAlgorithm(reason);\n ReadableByteStreamControllerClearAlgorithms(this);\n return result;\n }\n /** @internal */\n [PullSteps](readRequest) {\n const stream = this._controlledReadableByteStream;\n if (this._queueTotalSize > 0) {\n ReadableByteStreamControllerFillReadRequestFromQueue(this, readRequest);\n return;\n }\n const autoAllocateChunkSize = this._autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n let buffer;\n try {\n buffer = new ArrayBuffer(autoAllocateChunkSize);\n }\n catch (bufferE) {\n readRequest._errorSteps(bufferE);\n return;\n }\n const pullIntoDescriptor = {\n buffer,\n bufferByteLength: autoAllocateChunkSize,\n byteOffset: 0,\n byteLength: autoAllocateChunkSize,\n bytesFilled: 0,\n minimumFill: 1,\n elementSize: 1,\n viewConstructor: Uint8Array,\n readerType: 'default'\n };\n this._pendingPullIntos.push(pullIntoDescriptor);\n }\n ReadableStreamAddReadRequest(stream, readRequest);\n ReadableByteStreamControllerCallPullIfNeeded(this);\n }\n /** @internal */\n [ReleaseSteps]() {\n if (this._pendingPullIntos.length > 0) {\n const firstPullInto = this._pendingPullIntos.peek();\n firstPullInto.readerType = 'none';\n this._pendingPullIntos = new SimpleQueue();\n this._pendingPullIntos.push(firstPullInto);\n }\n }\n }\n Object.defineProperties(ReadableByteStreamController.prototype, {\n close: { enumerable: true },\n enqueue: { enumerable: true },\n error: { enumerable: true },\n byobRequest: { enumerable: true },\n desiredSize: { enumerable: true }\n });\n setFunctionName(ReadableByteStreamController.prototype.close, 'close');\n setFunctionName(ReadableByteStreamController.prototype.enqueue, 'enqueue');\n setFunctionName(ReadableByteStreamController.prototype.error, 'error');\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(ReadableByteStreamController.prototype, Symbol.toStringTag, {\n value: 'ReadableByteStreamController',\n configurable: true\n });\n }\n // Abstract operations for the ReadableByteStreamController.\n function IsReadableByteStreamController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableByteStream')) {\n return false;\n }\n return x instanceof ReadableByteStreamController;\n }\n function IsReadableStreamBYOBRequest(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n return false;\n }\n return x instanceof ReadableStreamBYOBRequest;\n }\n function ReadableByteStreamControllerCallPullIfNeeded(controller) {\n const shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n if (!shouldPull) {\n return;\n }\n if (controller._pulling) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n // TODO: Test controller argument\n const pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, () => {\n controller._pulling = false;\n if (controller._pullAgain) {\n controller._pullAgain = false;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n return null;\n }, e => {\n ReadableByteStreamControllerError(controller, e);\n return null;\n });\n }\n function ReadableByteStreamControllerClearPendingPullIntos(controller) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n controller._pendingPullIntos = new SimpleQueue();\n }\n function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n let done = false;\n if (stream._state === 'closed') {\n done = true;\n }\n const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'default') {\n ReadableStreamFulfillReadRequest(stream, filledView, done);\n }\n else {\n ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n }\n }\n function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n const bytesFilled = pullIntoDescriptor.bytesFilled;\n const elementSize = pullIntoDescriptor.elementSize;\n return new pullIntoDescriptor.viewConstructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n }\n function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n controller._queue.push({ buffer, byteOffset, byteLength });\n controller._queueTotalSize += byteLength;\n }\n function ReadableByteStreamControllerEnqueueClonedChunkToQueue(controller, buffer, byteOffset, byteLength) {\n let clonedChunk;\n try {\n clonedChunk = ArrayBufferSlice(buffer, byteOffset, byteOffset + byteLength);\n }\n catch (cloneE) {\n ReadableByteStreamControllerError(controller, cloneE);\n throw cloneE;\n }\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, clonedChunk, 0, byteLength);\n }\n function ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, firstDescriptor) {\n if (firstDescriptor.bytesFilled > 0) {\n ReadableByteStreamControllerEnqueueClonedChunkToQueue(controller, firstDescriptor.buffer, firstDescriptor.byteOffset, firstDescriptor.bytesFilled);\n }\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n }\n function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n const maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n const maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n let totalBytesToCopyRemaining = maxBytesToCopy;\n let ready = false;\n const remainderBytes = maxBytesFilled % pullIntoDescriptor.elementSize;\n const maxAlignedBytes = maxBytesFilled - remainderBytes;\n // A descriptor for a read() request that is not yet filled up to its minimum length will stay at the head\n // of the queue, so the underlying source can keep filling it.\n if (maxAlignedBytes >= pullIntoDescriptor.minimumFill) {\n totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n ready = true;\n }\n const queue = controller._queue;\n while (totalBytesToCopyRemaining > 0) {\n const headOfQueue = queue.peek();\n const bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n const destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n CopyDataBlockBytes(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n if (headOfQueue.byteLength === bytesToCopy) {\n queue.shift();\n }\n else {\n headOfQueue.byteOffset += bytesToCopy;\n headOfQueue.byteLength -= bytesToCopy;\n }\n controller._queueTotalSize -= bytesToCopy;\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n totalBytesToCopyRemaining -= bytesToCopy;\n }\n return ready;\n }\n function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n pullIntoDescriptor.bytesFilled += size;\n }\n function ReadableByteStreamControllerHandleQueueDrain(controller) {\n if (controller._queueTotalSize === 0 && controller._closeRequested) {\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(controller._controlledReadableByteStream);\n }\n else {\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }\n function ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n if (controller._byobRequest === null) {\n return;\n }\n controller._byobRequest._associatedReadableByteStreamController = undefined;\n controller._byobRequest._view = null;\n controller._byobRequest = null;\n }\n function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n while (controller._pendingPullIntos.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n const pullIntoDescriptor = controller._pendingPullIntos.peek();\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n }\n }\n }\n function ReadableByteStreamControllerProcessReadRequestsUsingQueue(controller) {\n const reader = controller._controlledReadableByteStream._reader;\n while (reader._readRequests.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n const readRequest = reader._readRequests.shift();\n ReadableByteStreamControllerFillReadRequestFromQueue(controller, readRequest);\n }\n }\n function ReadableByteStreamControllerPullInto(controller, view, min, readIntoRequest) {\n const stream = controller._controlledReadableByteStream;\n const ctor = view.constructor;\n const elementSize = arrayBufferViewElementSize(ctor);\n const { byteOffset, byteLength } = view;\n const minimumFill = min * elementSize;\n let buffer;\n try {\n buffer = TransferArrayBuffer(view.buffer);\n }\n catch (e) {\n readIntoRequest._errorSteps(e);\n return;\n }\n const pullIntoDescriptor = {\n buffer,\n bufferByteLength: buffer.byteLength,\n byteOffset,\n byteLength,\n bytesFilled: 0,\n minimumFill,\n elementSize,\n viewConstructor: ctor,\n readerType: 'byob'\n };\n if (controller._pendingPullIntos.length > 0) {\n controller._pendingPullIntos.push(pullIntoDescriptor);\n // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n // - No change happens on desiredSize\n // - The source has already been notified of that there's at least 1 pending read(view)\n ReadableStreamAddReadIntoRequest(stream, readIntoRequest);\n return;\n }\n if (stream._state === 'closed') {\n const emptyView = new ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n readIntoRequest._closeSteps(emptyView);\n return;\n }\n if (controller._queueTotalSize > 0) {\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor)) {\n const filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n ReadableByteStreamControllerHandleQueueDrain(controller);\n readIntoRequest._chunkSteps(filledView);\n return;\n }\n if (controller._closeRequested) {\n const e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n readIntoRequest._errorSteps(e);\n return;\n }\n }\n controller._pendingPullIntos.push(pullIntoDescriptor);\n ReadableStreamAddReadIntoRequest(stream, readIntoRequest);\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n if (firstDescriptor.readerType === 'none') {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n }\n const stream = controller._controlledReadableByteStream;\n if (ReadableStreamHasBYOBReader(stream)) {\n while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n const pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n }\n }\n }\n function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'none') {\n ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, pullIntoDescriptor);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n return;\n }\n if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.minimumFill) {\n // A descriptor for a read() request that is not yet filled up to its minimum length will stay at the head\n // of the queue, so the underlying source can keep filling it.\n return;\n }\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n const remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n if (remainderSize > 0) {\n const end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n ReadableByteStreamControllerEnqueueClonedChunkToQueue(controller, pullIntoDescriptor.buffer, end - remainderSize, remainderSize);\n }\n pullIntoDescriptor.bytesFilled -= remainderSize;\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n }\n function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n const firstDescriptor = controller._pendingPullIntos.peek();\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n const state = controller._controlledReadableByteStream._state;\n if (state === 'closed') {\n ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n }\n else {\n ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerShiftPendingPullInto(controller) {\n const descriptor = controller._pendingPullIntos.shift();\n return descriptor;\n }\n function ReadableByteStreamControllerShouldCallPull(controller) {\n const stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return false;\n }\n if (controller._closeRequested) {\n return false;\n }\n if (!controller._started) {\n return false;\n }\n if (ReadableStreamHasDefaultReader(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n if (ReadableStreamHasBYOBReader(stream) && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n return true;\n }\n const desiredSize = ReadableByteStreamControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n }\n function ReadableByteStreamControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n }\n // A client of ReadableByteStreamController may use these functions directly to bypass state check.\n function ReadableByteStreamControllerClose(controller) {\n const stream = controller._controlledReadableByteStream;\n if (controller._closeRequested || stream._state !== 'readable') {\n return;\n }\n if (controller._queueTotalSize > 0) {\n controller._closeRequested = true;\n return;\n }\n if (controller._pendingPullIntos.length > 0) {\n const firstPendingPullInto = controller._pendingPullIntos.peek();\n if (firstPendingPullInto.bytesFilled % firstPendingPullInto.elementSize !== 0) {\n const e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n throw e;\n }\n }\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n }\n function ReadableByteStreamControllerEnqueue(controller, chunk) {\n const stream = controller._controlledReadableByteStream;\n if (controller._closeRequested || stream._state !== 'readable') {\n return;\n }\n const { buffer, byteOffset, byteLength } = chunk;\n if (IsDetachedBuffer(buffer)) {\n throw new TypeError('chunk\\'s buffer is detached and so cannot be enqueued');\n }\n const transferredBuffer = TransferArrayBuffer(buffer);\n if (controller._pendingPullIntos.length > 0) {\n const firstPendingPullInto = controller._pendingPullIntos.peek();\n if (IsDetachedBuffer(firstPendingPullInto.buffer)) {\n throw new TypeError('The BYOB request\\'s buffer has been detached and so cannot be filled with an enqueued chunk');\n }\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n firstPendingPullInto.buffer = TransferArrayBuffer(firstPendingPullInto.buffer);\n if (firstPendingPullInto.readerType === 'none') {\n ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, firstPendingPullInto);\n }\n }\n if (ReadableStreamHasDefaultReader(stream)) {\n ReadableByteStreamControllerProcessReadRequestsUsingQueue(controller);\n if (ReadableStreamGetNumReadRequests(stream) === 0) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n else {\n if (controller._pendingPullIntos.length > 0) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n }\n const transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n ReadableStreamFulfillReadRequest(stream, transferredView, false);\n }\n }\n else if (ReadableStreamHasBYOBReader(stream)) {\n // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n }\n else {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n function ReadableByteStreamControllerError(controller, e) {\n const stream = controller._controlledReadableByteStream;\n if (stream._state !== 'readable') {\n return;\n }\n ReadableByteStreamControllerClearPendingPullIntos(controller);\n ResetQueue(controller);\n ReadableByteStreamControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n }\n function ReadableByteStreamControllerFillReadRequestFromQueue(controller, readRequest) {\n const entry = controller._queue.shift();\n controller._queueTotalSize -= entry.byteLength;\n ReadableByteStreamControllerHandleQueueDrain(controller);\n const view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n readRequest._chunkSteps(view);\n }\n function ReadableByteStreamControllerGetBYOBRequest(controller) {\n if (controller._byobRequest === null && controller._pendingPullIntos.length > 0) {\n const firstDescriptor = controller._pendingPullIntos.peek();\n const view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n const byobRequest = Object.create(ReadableStreamBYOBRequest.prototype);\n SetUpReadableStreamBYOBRequest(byobRequest, controller, view);\n controller._byobRequest = byobRequest;\n }\n return controller._byobRequest;\n }\n function ReadableByteStreamControllerGetDesiredSize(controller) {\n const state = controller._controlledReadableByteStream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function ReadableByteStreamControllerRespond(controller, bytesWritten) {\n const firstDescriptor = controller._pendingPullIntos.peek();\n const state = controller._controlledReadableByteStream._state;\n if (state === 'closed') {\n if (bytesWritten !== 0) {\n throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n }\n }\n else {\n if (bytesWritten === 0) {\n throw new TypeError('bytesWritten must be greater than 0 when calling respond() on a readable stream');\n }\n if (firstDescriptor.bytesFilled + bytesWritten > firstDescriptor.byteLength) {\n throw new RangeError('bytesWritten out of range');\n }\n }\n firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n }\n function ReadableByteStreamControllerRespondWithNewView(controller, view) {\n const firstDescriptor = controller._pendingPullIntos.peek();\n const state = controller._controlledReadableByteStream._state;\n if (state === 'closed') {\n if (view.byteLength !== 0) {\n throw new TypeError('The view\\'s length must be 0 when calling respondWithNewView() on a closed stream');\n }\n }\n else {\n if (view.byteLength === 0) {\n throw new TypeError('The view\\'s length must be greater than 0 when calling respondWithNewView() on a readable stream');\n }\n }\n if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n throw new RangeError('The region specified by view does not match byobRequest');\n }\n if (firstDescriptor.bufferByteLength !== view.buffer.byteLength) {\n throw new RangeError('The buffer of view has different capacity than byobRequest');\n }\n if (firstDescriptor.bytesFilled + view.byteLength > firstDescriptor.byteLength) {\n throw new RangeError('The region specified by view is larger than byobRequest');\n }\n const viewByteLength = view.byteLength;\n firstDescriptor.buffer = TransferArrayBuffer(view.buffer);\n ReadableByteStreamControllerRespondInternal(controller, viewByteLength);\n }\n function SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize) {\n controller._controlledReadableByteStream = stream;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._byobRequest = null;\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n controller._queue = controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._closeRequested = false;\n controller._started = false;\n controller._strategyHWM = highWaterMark;\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n controller._autoAllocateChunkSize = autoAllocateChunkSize;\n controller._pendingPullIntos = new SimpleQueue();\n stream._readableStreamController = controller;\n const startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), () => {\n controller._started = true;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n return null;\n }, r => {\n ReadableByteStreamControllerError(controller, r);\n return null;\n });\n }\n function SetUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingByteSource, highWaterMark) {\n const controller = Object.create(ReadableByteStreamController.prototype);\n let startAlgorithm;\n let pullAlgorithm;\n let cancelAlgorithm;\n if (underlyingByteSource.start !== undefined) {\n startAlgorithm = () => underlyingByteSource.start(controller);\n }\n else {\n startAlgorithm = () => undefined;\n }\n if (underlyingByteSource.pull !== undefined) {\n pullAlgorithm = () => underlyingByteSource.pull(controller);\n }\n else {\n pullAlgorithm = () => promiseResolvedWith(undefined);\n }\n if (underlyingByteSource.cancel !== undefined) {\n cancelAlgorithm = reason => underlyingByteSource.cancel(reason);\n }\n else {\n cancelAlgorithm = () => promiseResolvedWith(undefined);\n }\n const autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n if (autoAllocateChunkSize === 0) {\n throw new TypeError('autoAllocateChunkSize must be greater than 0');\n }\n SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, autoAllocateChunkSize);\n }\n function SetUpReadableStreamBYOBRequest(request, controller, view) {\n request._associatedReadableByteStreamController = controller;\n request._view = view;\n }\n // Helper functions for the ReadableStreamBYOBRequest.\n function byobRequestBrandCheckException(name) {\n return new TypeError(`ReadableStreamBYOBRequest.prototype.${name} can only be used on a ReadableStreamBYOBRequest`);\n }\n // Helper functions for the ReadableByteStreamController.\n function byteStreamControllerBrandCheckException(name) {\n return new TypeError(`ReadableByteStreamController.prototype.${name} can only be used on a ReadableByteStreamController`);\n }\n\n function convertReaderOptions(options, context) {\n assertDictionary(options, context);\n const mode = options === null || options === void 0 ? void 0 : options.mode;\n return {\n mode: mode === undefined ? undefined : convertReadableStreamReaderMode(mode, `${context} has member 'mode' that`)\n };\n }\n function convertReadableStreamReaderMode(mode, context) {\n mode = `${mode}`;\n if (mode !== 'byob') {\n throw new TypeError(`${context} '${mode}' is not a valid enumeration value for ReadableStreamReaderMode`);\n }\n return mode;\n }\n function convertByobReadOptions(options, context) {\n var _a;\n assertDictionary(options, context);\n const min = (_a = options === null || options === void 0 ? void 0 : options.min) !== null && _a !== void 0 ? _a : 1;\n return {\n min: convertUnsignedLongLongWithEnforceRange(min, `${context} has member 'min' that`)\n };\n }\n\n // Abstract operations for the ReadableStream.\n function AcquireReadableStreamBYOBReader(stream) {\n return new ReadableStreamBYOBReader(stream);\n }\n // ReadableStream API exposed for controllers.\n function ReadableStreamAddReadIntoRequest(stream, readIntoRequest) {\n stream._reader._readIntoRequests.push(readIntoRequest);\n }\n function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n const reader = stream._reader;\n const readIntoRequest = reader._readIntoRequests.shift();\n if (done) {\n readIntoRequest._closeSteps(chunk);\n }\n else {\n readIntoRequest._chunkSteps(chunk);\n }\n }\n function ReadableStreamGetNumReadIntoRequests(stream) {\n return stream._reader._readIntoRequests.length;\n }\n function ReadableStreamHasBYOBReader(stream) {\n const reader = stream._reader;\n if (reader === undefined) {\n return false;\n }\n if (!IsReadableStreamBYOBReader(reader)) {\n return false;\n }\n return true;\n }\n /**\n * A BYOB reader vended by a {@link ReadableStream}.\n *\n * @public\n */\n class ReadableStreamBYOBReader {\n constructor(stream) {\n assertRequiredArgument(stream, 1, 'ReadableStreamBYOBReader');\n assertReadableStream(stream, 'First parameter');\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n if (!IsReadableByteStreamController(stream._readableStreamController)) {\n throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' +\n 'source');\n }\n ReadableStreamReaderGenericInitialize(this, stream);\n this._readIntoRequests = new SimpleQueue();\n }\n /**\n * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or\n * the reader's lock is released before the stream finishes closing.\n */\n get closed() {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('closed'));\n }\n return this._closedPromise;\n }\n /**\n * If the reader is active, behaves the same as {@link ReadableStream.cancel | stream.cancel(reason)}.\n */\n cancel(reason = undefined) {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('cancel'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('cancel'));\n }\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n read(view, rawOptions = {}) {\n if (!IsReadableStreamBYOBReader(this)) {\n return promiseRejectedWith(byobReaderBrandCheckException('read'));\n }\n if (!ArrayBuffer.isView(view)) {\n return promiseRejectedWith(new TypeError('view must be an array buffer view'));\n }\n if (view.byteLength === 0) {\n return promiseRejectedWith(new TypeError('view must have non-zero byteLength'));\n }\n if (view.buffer.byteLength === 0) {\n return promiseRejectedWith(new TypeError(`view's buffer must have non-zero byteLength`));\n }\n if (IsDetachedBuffer(view.buffer)) {\n return promiseRejectedWith(new TypeError('view\\'s buffer has been detached'));\n }\n let options;\n try {\n options = convertByobReadOptions(rawOptions, 'options');\n }\n catch (e) {\n return promiseRejectedWith(e);\n }\n const min = options.min;\n if (min === 0) {\n return promiseRejectedWith(new TypeError('options.min must be greater than 0'));\n }\n if (!isDataView(view)) {\n if (min > view.length) {\n return promiseRejectedWith(new RangeError('options.min must be less than or equal to view\\'s length'));\n }\n }\n else if (min > view.byteLength) {\n return promiseRejectedWith(new RangeError('options.min must be less than or equal to view\\'s byteLength'));\n }\n if (this._ownerReadableStream === undefined) {\n return promiseRejectedWith(readerLockException('read from'));\n }\n let resolvePromise;\n let rejectPromise;\n const promise = newPromise((resolve, reject) => {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n const readIntoRequest = {\n _chunkSteps: chunk => resolvePromise({ value: chunk, done: false }),\n _closeSteps: chunk => resolvePromise({ value: chunk, done: true }),\n _errorSteps: e => rejectPromise(e)\n };\n ReadableStreamBYOBReaderRead(this, view, min, readIntoRequest);\n return promise;\n }\n /**\n * Releases the reader's lock on the corresponding stream. After the lock is released, the reader is no longer active.\n * If the associated stream is errored when the lock is released, the reader will appear errored in the same way\n * from now on; otherwise, the reader will appear closed.\n *\n * A reader's lock cannot be released while it still has a pending read request, i.e., if a promise returned by\n * the reader's {@link ReadableStreamBYOBReader.read | read()} method has not yet been settled. Attempting to\n * do so will throw a `TypeError` and leave the reader locked to the stream.\n */\n releaseLock() {\n if (!IsReadableStreamBYOBReader(this)) {\n throw byobReaderBrandCheckException('releaseLock');\n }\n if (this._ownerReadableStream === undefined) {\n return;\n }\n ReadableStreamBYOBReaderRelease(this);\n }\n }\n Object.defineProperties(ReadableStreamBYOBReader.prototype, {\n cancel: { enumerable: true },\n read: { enumerable: true },\n releaseLock: { enumerable: true },\n closed: { enumerable: true }\n });\n setFunctionName(ReadableStreamBYOBReader.prototype.cancel, 'cancel');\n setFunctionName(ReadableStreamBYOBReader.prototype.read, 'read');\n setFunctionName(ReadableStreamBYOBReader.prototype.releaseLock, 'releaseLock');\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamBYOBReader.prototype, Symbol.toStringTag, {\n value: 'ReadableStreamBYOBReader',\n configurable: true\n });\n }\n // Abstract operations for the readers.\n function IsReadableStreamBYOBReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n return false;\n }\n return x instanceof ReadableStreamBYOBReader;\n }\n function ReadableStreamBYOBReaderRead(reader, view, min, readIntoRequest) {\n const stream = reader._ownerReadableStream;\n stream._disturbed = true;\n if (stream._state === 'errored') {\n readIntoRequest._errorSteps(stream._storedError);\n }\n else {\n ReadableByteStreamControllerPullInto(stream._readableStreamController, view, min, readIntoRequest);\n }\n }\n function ReadableStreamBYOBReaderRelease(reader) {\n ReadableStreamReaderGenericRelease(reader);\n const e = new TypeError('Reader was released');\n ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e);\n }\n function ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e) {\n const readIntoRequests = reader._readIntoRequests;\n reader._readIntoRequests = new SimpleQueue();\n readIntoRequests.forEach(readIntoRequest => {\n readIntoRequest._errorSteps(e);\n });\n }\n // Helper functions for the ReadableStreamBYOBReader.\n function byobReaderBrandCheckException(name) {\n return new TypeError(`ReadableStreamBYOBReader.prototype.${name} can only be used on a ReadableStreamBYOBReader`);\n }\n\n function ExtractHighWaterMark(strategy, defaultHWM) {\n const { highWaterMark } = strategy;\n if (highWaterMark === undefined) {\n return defaultHWM;\n }\n if (NumberIsNaN(highWaterMark) || highWaterMark < 0) {\n throw new RangeError('Invalid highWaterMark');\n }\n return highWaterMark;\n }\n function ExtractSizeAlgorithm(strategy) {\n const { size } = strategy;\n if (!size) {\n return () => 1;\n }\n return size;\n }\n\n function convertQueuingStrategy(init, context) {\n assertDictionary(init, context);\n const highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark;\n const size = init === null || init === void 0 ? void 0 : init.size;\n return {\n highWaterMark: highWaterMark === undefined ? undefined : convertUnrestrictedDouble(highWaterMark),\n size: size === undefined ? undefined : convertQueuingStrategySize(size, `${context} has member 'size' that`)\n };\n }\n function convertQueuingStrategySize(fn, context) {\n assertFunction(fn, context);\n return chunk => convertUnrestrictedDouble(fn(chunk));\n }\n\n function convertUnderlyingSink(original, context) {\n assertDictionary(original, context);\n const abort = original === null || original === void 0 ? void 0 : original.abort;\n const close = original === null || original === void 0 ? void 0 : original.close;\n const start = original === null || original === void 0 ? void 0 : original.start;\n const type = original === null || original === void 0 ? void 0 : original.type;\n const write = original === null || original === void 0 ? void 0 : original.write;\n return {\n abort: abort === undefined ?\n undefined :\n convertUnderlyingSinkAbortCallback(abort, original, `${context} has member 'abort' that`),\n close: close === undefined ?\n undefined :\n convertUnderlyingSinkCloseCallback(close, original, `${context} has member 'close' that`),\n start: start === undefined ?\n undefined :\n convertUnderlyingSinkStartCallback(start, original, `${context} has member 'start' that`),\n write: write === undefined ?\n undefined :\n convertUnderlyingSinkWriteCallback(write, original, `${context} has member 'write' that`),\n type\n };\n }\n function convertUnderlyingSinkAbortCallback(fn, original, context) {\n assertFunction(fn, context);\n return (reason) => promiseCall(fn, original, [reason]);\n }\n function convertUnderlyingSinkCloseCallback(fn, original, context) {\n assertFunction(fn, context);\n return () => promiseCall(fn, original, []);\n }\n function convertUnderlyingSinkStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return (controller) => reflectCall(fn, original, [controller]);\n }\n function convertUnderlyingSinkWriteCallback(fn, original, context) {\n assertFunction(fn, context);\n return (chunk, controller) => promiseCall(fn, original, [chunk, controller]);\n }\n\n function assertWritableStream(x, context) {\n if (!IsWritableStream(x)) {\n throw new TypeError(`${context} is not a WritableStream.`);\n }\n }\n\n function isAbortSignal(value) {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n try {\n return typeof value.aborted === 'boolean';\n }\n catch (_a) {\n // AbortSignal.prototype.aborted throws if its brand check fails\n return false;\n }\n }\n const supportsAbortController = typeof AbortController === 'function';\n /**\n * Construct a new AbortController, if supported by the platform.\n *\n * @internal\n */\n function createAbortController() {\n if (supportsAbortController) {\n return new AbortController();\n }\n return undefined;\n }\n\n /**\n * A writable stream represents a destination for data, into which you can write.\n *\n * @public\n */\n class WritableStream {\n constructor(rawUnderlyingSink = {}, rawStrategy = {}) {\n if (rawUnderlyingSink === undefined) {\n rawUnderlyingSink = null;\n }\n else {\n assertObject(rawUnderlyingSink, 'First parameter');\n }\n const strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n const underlyingSink = convertUnderlyingSink(rawUnderlyingSink, 'First parameter');\n InitializeWritableStream(this);\n const type = underlyingSink.type;\n if (type !== undefined) {\n throw new RangeError('Invalid type is specified');\n }\n const sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n const highWaterMark = ExtractHighWaterMark(strategy, 1);\n SetUpWritableStreamDefaultControllerFromUnderlyingSink(this, underlyingSink, highWaterMark, sizeAlgorithm);\n }\n /**\n * Returns whether or not the writable stream is locked to a writer.\n */\n get locked() {\n if (!IsWritableStream(this)) {\n throw streamBrandCheckException$2('locked');\n }\n return IsWritableStreamLocked(this);\n }\n /**\n * Aborts the stream, signaling that the producer can no longer successfully write to the stream and it is to be\n * immediately moved to an errored state, with any queued-up writes discarded. This will also execute any abort\n * mechanism of the underlying sink.\n *\n * The returned promise will fulfill if the stream shuts down successfully, or reject if the underlying sink signaled\n * that there was an error doing so. Additionally, it will reject with a `TypeError` (without attempting to cancel\n * the stream) if the stream is currently locked.\n */\n abort(reason = undefined) {\n if (!IsWritableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$2('abort'));\n }\n if (IsWritableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot abort a stream that already has a writer'));\n }\n return WritableStreamAbort(this, reason);\n }\n /**\n * Closes the stream. The underlying sink will finish processing any previously-written chunks, before invoking its\n * close behavior. During this time any further attempts to write will fail (without erroring the stream).\n *\n * The method returns a promise that will fulfill if all remaining chunks are successfully written and the stream\n * successfully closes, or rejects if an error is encountered during this process. Additionally, it will reject with\n * a `TypeError` (without attempting to cancel the stream) if the stream is currently locked.\n */\n close() {\n if (!IsWritableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$2('close'));\n }\n if (IsWritableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot close a stream that already has a writer'));\n }\n if (WritableStreamCloseQueuedOrInFlight(this)) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamClose(this);\n }\n /**\n * Creates a {@link WritableStreamDefaultWriter | writer} and locks the stream to the new writer. While the stream\n * is locked, no other writer can be acquired until this one is released.\n *\n * This functionality is especially useful for creating abstractions that desire the ability to write to a stream\n * without interruption or interleaving. By getting a writer for the stream, you can ensure nobody else can write at\n * the same time, which would cause the resulting written data to be unpredictable and probably useless.\n */\n getWriter() {\n if (!IsWritableStream(this)) {\n throw streamBrandCheckException$2('getWriter');\n }\n return AcquireWritableStreamDefaultWriter(this);\n }\n }\n Object.defineProperties(WritableStream.prototype, {\n abort: { enumerable: true },\n close: { enumerable: true },\n getWriter: { enumerable: true },\n locked: { enumerable: true }\n });\n setFunctionName(WritableStream.prototype.abort, 'abort');\n setFunctionName(WritableStream.prototype.close, 'close');\n setFunctionName(WritableStream.prototype.getWriter, 'getWriter');\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(WritableStream.prototype, Symbol.toStringTag, {\n value: 'WritableStream',\n configurable: true\n });\n }\n // Abstract operations for the WritableStream.\n function AcquireWritableStreamDefaultWriter(stream) {\n return new WritableStreamDefaultWriter(stream);\n }\n // Throws if and only if startAlgorithm throws.\n function CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark = 1, sizeAlgorithm = () => 1) {\n const stream = Object.create(WritableStream.prototype);\n InitializeWritableStream(stream);\n const controller = Object.create(WritableStreamDefaultController.prototype);\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n }\n function InitializeWritableStream(stream) {\n stream._state = 'writable';\n // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n // 'erroring' or 'errored'. May be set to an undefined value.\n stream._storedError = undefined;\n stream._writer = undefined;\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n stream._writableStreamController = undefined;\n // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n // producer without waiting for the queued writes to finish.\n stream._writeRequests = new SimpleQueue();\n // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n stream._inFlightWriteRequest = undefined;\n // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n // has been detached.\n stream._closeRequest = undefined;\n // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n stream._inFlightCloseRequest = undefined;\n // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n stream._pendingAbortRequest = undefined;\n // The backpressure signal set by the controller.\n stream._backpressure = false;\n }\n function IsWritableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n return false;\n }\n return x instanceof WritableStream;\n }\n function IsWritableStreamLocked(stream) {\n if (stream._writer === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamAbort(stream, reason) {\n var _a;\n if (stream._state === 'closed' || stream._state === 'errored') {\n return promiseResolvedWith(undefined);\n }\n stream._writableStreamController._abortReason = reason;\n (_a = stream._writableStreamController._abortController) === null || _a === void 0 ? void 0 : _a.abort(reason);\n // TypeScript narrows the type of `stream._state` down to 'writable' | 'erroring',\n // but it doesn't know that signaling abort runs author code that might have changed the state.\n // Widen the type again by casting to WritableStreamState.\n const state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return promiseResolvedWith(undefined);\n }\n if (stream._pendingAbortRequest !== undefined) {\n return stream._pendingAbortRequest._promise;\n }\n let wasAlreadyErroring = false;\n if (state === 'erroring') {\n wasAlreadyErroring = true;\n // reason will not be used, so don't keep a reference to it.\n reason = undefined;\n }\n const promise = newPromise((resolve, reject) => {\n stream._pendingAbortRequest = {\n _promise: undefined,\n _resolve: resolve,\n _reject: reject,\n _reason: reason,\n _wasAlreadyErroring: wasAlreadyErroring\n };\n });\n stream._pendingAbortRequest._promise = promise;\n if (!wasAlreadyErroring) {\n WritableStreamStartErroring(stream, reason);\n }\n return promise;\n }\n function WritableStreamClose(stream) {\n const state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return promiseRejectedWith(new TypeError(`The stream (in ${state} state) is not in the writable state and cannot be closed`));\n }\n const promise = newPromise((resolve, reject) => {\n const closeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._closeRequest = closeRequest;\n });\n const writer = stream._writer;\n if (writer !== undefined && stream._backpressure && state === 'writable') {\n defaultWriterReadyPromiseResolve(writer);\n }\n WritableStreamDefaultControllerClose(stream._writableStreamController);\n return promise;\n }\n // WritableStream API exposed for controllers.\n function WritableStreamAddWriteRequest(stream) {\n const promise = newPromise((resolve, reject) => {\n const writeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n stream._writeRequests.push(writeRequest);\n });\n return promise;\n }\n function WritableStreamDealWithRejection(stream, error) {\n const state = stream._state;\n if (state === 'writable') {\n WritableStreamStartErroring(stream, error);\n return;\n }\n WritableStreamFinishErroring(stream);\n }\n function WritableStreamStartErroring(stream, reason) {\n const controller = stream._writableStreamController;\n stream._state = 'erroring';\n stream._storedError = reason;\n const writer = stream._writer;\n if (writer !== undefined) {\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n }\n if (!WritableStreamHasOperationMarkedInFlight(stream) && controller._started) {\n WritableStreamFinishErroring(stream);\n }\n }\n function WritableStreamFinishErroring(stream) {\n stream._state = 'errored';\n stream._writableStreamController[ErrorSteps]();\n const storedError = stream._storedError;\n stream._writeRequests.forEach(writeRequest => {\n writeRequest._reject(storedError);\n });\n stream._writeRequests = new SimpleQueue();\n if (stream._pendingAbortRequest === undefined) {\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n const abortRequest = stream._pendingAbortRequest;\n stream._pendingAbortRequest = undefined;\n if (abortRequest._wasAlreadyErroring) {\n abortRequest._reject(storedError);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n const promise = stream._writableStreamController[AbortSteps](abortRequest._reason);\n uponPromise(promise, () => {\n abortRequest._resolve();\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return null;\n }, (reason) => {\n abortRequest._reject(reason);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return null;\n });\n }\n function WritableStreamFinishInFlightWrite(stream) {\n stream._inFlightWriteRequest._resolve(undefined);\n stream._inFlightWriteRequest = undefined;\n }\n function WritableStreamFinishInFlightWriteWithError(stream, error) {\n stream._inFlightWriteRequest._reject(error);\n stream._inFlightWriteRequest = undefined;\n WritableStreamDealWithRejection(stream, error);\n }\n function WritableStreamFinishInFlightClose(stream) {\n stream._inFlightCloseRequest._resolve(undefined);\n stream._inFlightCloseRequest = undefined;\n const state = stream._state;\n if (state === 'erroring') {\n // The error was too late to do anything, so it is ignored.\n stream._storedError = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._resolve();\n stream._pendingAbortRequest = undefined;\n }\n }\n stream._state = 'closed';\n const writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseResolve(writer);\n }\n }\n function WritableStreamFinishInFlightCloseWithError(stream, error) {\n stream._inFlightCloseRequest._reject(error);\n stream._inFlightCloseRequest = undefined;\n // Never execute sink abort() after sink close().\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._reject(error);\n stream._pendingAbortRequest = undefined;\n }\n WritableStreamDealWithRejection(stream, error);\n }\n // TODO(ricea): Fix alphabetical order.\n function WritableStreamCloseQueuedOrInFlight(stream) {\n if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamHasOperationMarkedInFlight(stream) {\n if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n return true;\n }\n function WritableStreamMarkCloseRequestInFlight(stream) {\n stream._inFlightCloseRequest = stream._closeRequest;\n stream._closeRequest = undefined;\n }\n function WritableStreamMarkFirstWriteRequestInFlight(stream) {\n stream._inFlightWriteRequest = stream._writeRequests.shift();\n }\n function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n if (stream._closeRequest !== undefined) {\n stream._closeRequest._reject(stream._storedError);\n stream._closeRequest = undefined;\n }\n const writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseReject(writer, stream._storedError);\n }\n }\n function WritableStreamUpdateBackpressure(stream, backpressure) {\n const writer = stream._writer;\n if (writer !== undefined && backpressure !== stream._backpressure) {\n if (backpressure) {\n defaultWriterReadyPromiseReset(writer);\n }\n else {\n defaultWriterReadyPromiseResolve(writer);\n }\n }\n stream._backpressure = backpressure;\n }\n /**\n * A default writer vended by a {@link WritableStream}.\n *\n * @public\n */\n class WritableStreamDefaultWriter {\n constructor(stream) {\n assertRequiredArgument(stream, 1, 'WritableStreamDefaultWriter');\n assertWritableStream(stream, 'First parameter');\n if (IsWritableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n }\n this._ownerWritableStream = stream;\n stream._writer = this;\n const state = stream._state;\n if (state === 'writable') {\n if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._backpressure) {\n defaultWriterReadyPromiseInitialize(this);\n }\n else {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n }\n defaultWriterClosedPromiseInitialize(this);\n }\n else if (state === 'erroring') {\n defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n defaultWriterClosedPromiseInitialize(this);\n }\n else if (state === 'closed') {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n defaultWriterClosedPromiseInitializeAsResolved(this);\n }\n else {\n const storedError = stream._storedError;\n defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n }\n }\n /**\n * Returns a promise that will be fulfilled when the stream becomes closed, or rejected if the stream ever errors or\n * the writer’s lock is released before the stream finishes closing.\n */\n get closed() {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('closed'));\n }\n return this._closedPromise;\n }\n /**\n * Returns the desired size to fill the stream’s internal queue. It can be negative, if the queue is over-full.\n * A producer can use this information to determine the right amount of data to write.\n *\n * It will be `null` if the stream cannot be successfully written to (due to either being errored, or having an abort\n * queued up). It will return zero if the stream is closed. And the getter will throw an exception if invoked when\n * the writer’s lock is released.\n */\n get desiredSize() {\n if (!IsWritableStreamDefaultWriter(this)) {\n throw defaultWriterBrandCheckException('desiredSize');\n }\n if (this._ownerWritableStream === undefined) {\n throw defaultWriterLockException('desiredSize');\n }\n return WritableStreamDefaultWriterGetDesiredSize(this);\n }\n /**\n * Returns a promise that will be fulfilled when the desired size to fill the stream’s internal queue transitions\n * from non-positive to positive, signaling that it is no longer applying backpressure. Once the desired size dips\n * back to zero or below, the getter will return a new promise that stays pending until the next transition.\n *\n * If the stream becomes errored or aborted, or the writer’s lock is released, the returned promise will become\n * rejected.\n */\n get ready() {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('ready'));\n }\n return this._readyPromise;\n }\n /**\n * If the reader is active, behaves the same as {@link WritableStream.abort | stream.abort(reason)}.\n */\n abort(reason = undefined) {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('abort'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('abort'));\n }\n return WritableStreamDefaultWriterAbort(this, reason);\n }\n /**\n * If the reader is active, behaves the same as {@link WritableStream.close | stream.close()}.\n */\n close() {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('close'));\n }\n const stream = this._ownerWritableStream;\n if (stream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('close'));\n }\n if (WritableStreamCloseQueuedOrInFlight(stream)) {\n return promiseRejectedWith(new TypeError('Cannot close an already-closing stream'));\n }\n return WritableStreamDefaultWriterClose(this);\n }\n /**\n * Releases the writer’s lock on the corresponding stream. After the lock is released, the writer is no longer active.\n * If the associated stream is errored when the lock is released, the writer will appear errored in the same way from\n * now on; otherwise, the writer will appear closed.\n *\n * Note that the lock can still be released even if some ongoing writes have not yet finished (i.e. even if the\n * promises returned from previous calls to {@link WritableStreamDefaultWriter.write | write()} have not yet settled).\n * It’s not necessary to hold the lock on the writer for the duration of the write; the lock instead simply prevents\n * other producers from writing in an interleaved manner.\n */\n releaseLock() {\n if (!IsWritableStreamDefaultWriter(this)) {\n throw defaultWriterBrandCheckException('releaseLock');\n }\n const stream = this._ownerWritableStream;\n if (stream === undefined) {\n return;\n }\n WritableStreamDefaultWriterRelease(this);\n }\n write(chunk = undefined) {\n if (!IsWritableStreamDefaultWriter(this)) {\n return promiseRejectedWith(defaultWriterBrandCheckException('write'));\n }\n if (this._ownerWritableStream === undefined) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\n }\n return WritableStreamDefaultWriterWrite(this, chunk);\n }\n }\n Object.defineProperties(WritableStreamDefaultWriter.prototype, {\n abort: { enumerable: true },\n close: { enumerable: true },\n releaseLock: { enumerable: true },\n write: { enumerable: true },\n closed: { enumerable: true },\n desiredSize: { enumerable: true },\n ready: { enumerable: true }\n });\n setFunctionName(WritableStreamDefaultWriter.prototype.abort, 'abort');\n setFunctionName(WritableStreamDefaultWriter.prototype.close, 'close');\n setFunctionName(WritableStreamDefaultWriter.prototype.releaseLock, 'releaseLock');\n setFunctionName(WritableStreamDefaultWriter.prototype.write, 'write');\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(WritableStreamDefaultWriter.prototype, Symbol.toStringTag, {\n value: 'WritableStreamDefaultWriter',\n configurable: true\n });\n }\n // Abstract operations for the WritableStreamDefaultWriter.\n function IsWritableStreamDefaultWriter(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n return false;\n }\n return x instanceof WritableStreamDefaultWriter;\n }\n // A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n function WritableStreamDefaultWriterAbort(writer, reason) {\n const stream = writer._ownerWritableStream;\n return WritableStreamAbort(stream, reason);\n }\n function WritableStreamDefaultWriterClose(writer) {\n const stream = writer._ownerWritableStream;\n return WritableStreamClose(stream);\n }\n function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n const stream = writer._ownerWritableStream;\n const state = stream._state;\n if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n return WritableStreamDefaultWriterClose(writer);\n }\n function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n if (writer._closedPromiseState === 'pending') {\n defaultWriterClosedPromiseReject(writer, error);\n }\n else {\n defaultWriterClosedPromiseResetToRejected(writer, error);\n }\n }\n function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n if (writer._readyPromiseState === 'pending') {\n defaultWriterReadyPromiseReject(writer, error);\n }\n else {\n defaultWriterReadyPromiseResetToRejected(writer, error);\n }\n }\n function WritableStreamDefaultWriterGetDesiredSize(writer) {\n const stream = writer._ownerWritableStream;\n const state = stream._state;\n if (state === 'errored' || state === 'erroring') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n }\n function WritableStreamDefaultWriterRelease(writer) {\n const stream = writer._ownerWritableStream;\n const releasedError = new TypeError(`Writer was released and can no longer be used to monitor the stream's closedness`);\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n // rejected until afterwards. This means that simply testing state will not work.\n WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n stream._writer = undefined;\n writer._ownerWritableStream = undefined;\n }\n function WritableStreamDefaultWriterWrite(writer, chunk) {\n const stream = writer._ownerWritableStream;\n const controller = stream._writableStreamController;\n const chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n if (stream !== writer._ownerWritableStream) {\n return promiseRejectedWith(defaultWriterLockException('write to'));\n }\n const state = stream._state;\n if (state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) || state === 'closed') {\n return promiseRejectedWith(new TypeError('The stream is closing or closed and cannot be written to'));\n }\n if (state === 'erroring') {\n return promiseRejectedWith(stream._storedError);\n }\n const promise = WritableStreamAddWriteRequest(stream);\n WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n return promise;\n }\n const closeSentinel = {};\n /**\n * Allows control of a {@link WritableStream | writable stream}'s state and internal queue.\n *\n * @public\n */\n class WritableStreamDefaultController {\n constructor() {\n throw new TypeError('Illegal constructor');\n }\n /**\n * The reason which was passed to `WritableStream.abort(reason)` when the stream was aborted.\n *\n * @deprecated\n * This property has been removed from the specification, see https://github.com/whatwg/streams/pull/1177.\n * Use {@link WritableStreamDefaultController.signal}'s `reason` instead.\n */\n get abortReason() {\n if (!IsWritableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$2('abortReason');\n }\n return this._abortReason;\n }\n /**\n * An `AbortSignal` that can be used to abort the pending write or close operation when the stream is aborted.\n */\n get signal() {\n if (!IsWritableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$2('signal');\n }\n if (this._abortController === undefined) {\n // Older browsers or older Node versions may not support `AbortController` or `AbortSignal`.\n // We don't want to bundle and ship an `AbortController` polyfill together with our polyfill,\n // so instead we only implement support for `signal` if we find a global `AbortController` constructor.\n throw new TypeError('WritableStreamDefaultController.prototype.signal is not supported');\n }\n return this._abortController.signal;\n }\n /**\n * Closes the controlled writable stream, making all future interactions with it fail with the given error `e`.\n *\n * This method is rarely used, since usually it suffices to return a rejected promise from one of the underlying\n * sink's methods. However, it can be useful for suddenly shutting down a stream in response to an event outside the\n * normal lifecycle of interactions with the underlying sink.\n */\n error(e = undefined) {\n if (!IsWritableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$2('error');\n }\n const state = this._controlledWritableStream._state;\n if (state !== 'writable') {\n // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n // just treat it as a no-op.\n return;\n }\n WritableStreamDefaultControllerError(this, e);\n }\n /** @internal */\n [AbortSteps](reason) {\n const result = this._abortAlgorithm(reason);\n WritableStreamDefaultControllerClearAlgorithms(this);\n return result;\n }\n /** @internal */\n [ErrorSteps]() {\n ResetQueue(this);\n }\n }\n Object.defineProperties(WritableStreamDefaultController.prototype, {\n abortReason: { enumerable: true },\n signal: { enumerable: true },\n error: { enumerable: true }\n });\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(WritableStreamDefaultController.prototype, Symbol.toStringTag, {\n value: 'WritableStreamDefaultController',\n configurable: true\n });\n }\n // Abstract operations implementing interface required by the WritableStream.\n function IsWritableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledWritableStream')) {\n return false;\n }\n return x instanceof WritableStreamDefaultController;\n }\n function SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledWritableStream = stream;\n stream._writableStreamController = controller;\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n controller._queue = undefined;\n controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._abortReason = undefined;\n controller._abortController = createAbortController();\n controller._started = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._writeAlgorithm = writeAlgorithm;\n controller._closeAlgorithm = closeAlgorithm;\n controller._abortAlgorithm = abortAlgorithm;\n const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n const startResult = startAlgorithm();\n const startPromise = promiseResolvedWith(startResult);\n uponPromise(startPromise, () => {\n controller._started = true;\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n return null;\n }, r => {\n controller._started = true;\n WritableStreamDealWithRejection(stream, r);\n return null;\n });\n }\n function SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, highWaterMark, sizeAlgorithm) {\n const controller = Object.create(WritableStreamDefaultController.prototype);\n let startAlgorithm;\n let writeAlgorithm;\n let closeAlgorithm;\n let abortAlgorithm;\n if (underlyingSink.start !== undefined) {\n startAlgorithm = () => underlyingSink.start(controller);\n }\n else {\n startAlgorithm = () => undefined;\n }\n if (underlyingSink.write !== undefined) {\n writeAlgorithm = chunk => underlyingSink.write(chunk, controller);\n }\n else {\n writeAlgorithm = () => promiseResolvedWith(undefined);\n }\n if (underlyingSink.close !== undefined) {\n closeAlgorithm = () => underlyingSink.close();\n }\n else {\n closeAlgorithm = () => promiseResolvedWith(undefined);\n }\n if (underlyingSink.abort !== undefined) {\n abortAlgorithm = reason => underlyingSink.abort(reason);\n }\n else {\n abortAlgorithm = () => promiseResolvedWith(undefined);\n }\n SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm);\n }\n // ClearAlgorithms may be called twice. Erroring the same stream in multiple ways will often result in redundant calls.\n function WritableStreamDefaultControllerClearAlgorithms(controller) {\n controller._writeAlgorithm = undefined;\n controller._closeAlgorithm = undefined;\n controller._abortAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n }\n function WritableStreamDefaultControllerClose(controller) {\n EnqueueValueWithSize(controller, closeSentinel, 0);\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }\n function WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n try {\n return controller._strategySizeAlgorithm(chunk);\n }\n catch (chunkSizeE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n return 1;\n }\n }\n function WritableStreamDefaultControllerGetDesiredSize(controller) {\n return controller._strategyHWM - controller._queueTotalSize;\n }\n function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n }\n catch (enqueueE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n return;\n }\n const stream = controller._controlledWritableStream;\n if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._state === 'writable') {\n const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }\n // Abstract operations for the WritableStreamDefaultController.\n function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n const stream = controller._controlledWritableStream;\n if (!controller._started) {\n return;\n }\n if (stream._inFlightWriteRequest !== undefined) {\n return;\n }\n const state = stream._state;\n if (state === 'erroring') {\n WritableStreamFinishErroring(stream);\n return;\n }\n if (controller._queue.length === 0) {\n return;\n }\n const value = PeekQueueValue(controller);\n if (value === closeSentinel) {\n WritableStreamDefaultControllerProcessClose(controller);\n }\n else {\n WritableStreamDefaultControllerProcessWrite(controller, value);\n }\n }\n function WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n if (controller._controlledWritableStream._state === 'writable') {\n WritableStreamDefaultControllerError(controller, error);\n }\n }\n function WritableStreamDefaultControllerProcessClose(controller) {\n const stream = controller._controlledWritableStream;\n WritableStreamMarkCloseRequestInFlight(stream);\n DequeueValue(controller);\n const sinkClosePromise = controller._closeAlgorithm();\n WritableStreamDefaultControllerClearAlgorithms(controller);\n uponPromise(sinkClosePromise, () => {\n WritableStreamFinishInFlightClose(stream);\n return null;\n }, reason => {\n WritableStreamFinishInFlightCloseWithError(stream, reason);\n return null;\n });\n }\n function WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n const stream = controller._controlledWritableStream;\n WritableStreamMarkFirstWriteRequestInFlight(stream);\n const sinkWritePromise = controller._writeAlgorithm(chunk);\n uponPromise(sinkWritePromise, () => {\n WritableStreamFinishInFlightWrite(stream);\n const state = stream._state;\n DequeueValue(controller);\n if (!WritableStreamCloseQueuedOrInFlight(stream) && state === 'writable') {\n const backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n return null;\n }, reason => {\n if (stream._state === 'writable') {\n WritableStreamDefaultControllerClearAlgorithms(controller);\n }\n WritableStreamFinishInFlightWriteWithError(stream, reason);\n return null;\n });\n }\n function WritableStreamDefaultControllerGetBackpressure(controller) {\n const desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n return desiredSize <= 0;\n }\n // A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n function WritableStreamDefaultControllerError(controller, error) {\n const stream = controller._controlledWritableStream;\n WritableStreamDefaultControllerClearAlgorithms(controller);\n WritableStreamStartErroring(stream, error);\n }\n // Helper functions for the WritableStream.\n function streamBrandCheckException$2(name) {\n return new TypeError(`WritableStream.prototype.${name} can only be used on a WritableStream`);\n }\n // Helper functions for the WritableStreamDefaultController.\n function defaultControllerBrandCheckException$2(name) {\n return new TypeError(`WritableStreamDefaultController.prototype.${name} can only be used on a WritableStreamDefaultController`);\n }\n // Helper functions for the WritableStreamDefaultWriter.\n function defaultWriterBrandCheckException(name) {\n return new TypeError(`WritableStreamDefaultWriter.prototype.${name} can only be used on a WritableStreamDefaultWriter`);\n }\n function defaultWriterLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released writer');\n }\n function defaultWriterClosedPromiseInitialize(writer) {\n writer._closedPromise = newPromise((resolve, reject) => {\n writer._closedPromise_resolve = resolve;\n writer._closedPromise_reject = reject;\n writer._closedPromiseState = 'pending';\n });\n }\n function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseReject(writer, reason);\n }\n function defaultWriterClosedPromiseInitializeAsResolved(writer) {\n defaultWriterClosedPromiseInitialize(writer);\n defaultWriterClosedPromiseResolve(writer);\n }\n function defaultWriterClosedPromiseReject(writer, reason) {\n if (writer._closedPromise_reject === undefined) {\n return;\n }\n setPromiseIsHandledToTrue(writer._closedPromise);\n writer._closedPromise_reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n }\n function defaultWriterClosedPromiseResetToRejected(writer, reason) {\n defaultWriterClosedPromiseInitializeAsRejected(writer, reason);\n }\n function defaultWriterClosedPromiseResolve(writer) {\n if (writer._closedPromise_resolve === undefined) {\n return;\n }\n writer._closedPromise_resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n }\n function defaultWriterReadyPromiseInitialize(writer) {\n writer._readyPromise = newPromise((resolve, reject) => {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n }\n function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseReject(writer, reason);\n }\n function defaultWriterReadyPromiseInitializeAsResolved(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n defaultWriterReadyPromiseResolve(writer);\n }\n function defaultWriterReadyPromiseReject(writer, reason) {\n if (writer._readyPromise_reject === undefined) {\n return;\n }\n setPromiseIsHandledToTrue(writer._readyPromise);\n writer._readyPromise_reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n }\n function defaultWriterReadyPromiseReset(writer) {\n defaultWriterReadyPromiseInitialize(writer);\n }\n function defaultWriterReadyPromiseResetToRejected(writer, reason) {\n defaultWriterReadyPromiseInitializeAsRejected(writer, reason);\n }\n function defaultWriterReadyPromiseResolve(writer) {\n if (writer._readyPromise_resolve === undefined) {\n return;\n }\n writer._readyPromise_resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n }\n\n /// <reference lib=\"dom\" />\n function getGlobals() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n else if (typeof self !== 'undefined') {\n return self;\n }\n else if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n }\n const globals = getGlobals();\n\n /// <reference types=\"node\" />\n function isDOMExceptionConstructor(ctor) {\n if (!(typeof ctor === 'function' || typeof ctor === 'object')) {\n return false;\n }\n if (ctor.name !== 'DOMException') {\n return false;\n }\n try {\n new ctor();\n return true;\n }\n catch (_a) {\n return false;\n }\n }\n /**\n * Support:\n * - Web browsers\n * - Node 18 and higher (https://github.com/nodejs/node/commit/e4b1fb5e6422c1ff151234bb9de792d45dd88d87)\n */\n function getFromGlobal() {\n const ctor = globals === null || globals === void 0 ? void 0 : globals.DOMException;\n return isDOMExceptionConstructor(ctor) ? ctor : undefined;\n }\n /**\n * Support:\n * - All platforms\n */\n function createPolyfill() {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const ctor = function DOMException(message, name) {\n this.message = message || '';\n this.name = name || 'Error';\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n };\n setFunctionName(ctor, 'DOMException');\n ctor.prototype = Object.create(Error.prototype);\n Object.defineProperty(ctor.prototype, 'constructor', { value: ctor, writable: true, configurable: true });\n return ctor;\n }\n // eslint-disable-next-line @typescript-eslint/no-redeclare\n const DOMException = getFromGlobal() || createPolyfill();\n\n function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventCancel, signal) {\n const reader = AcquireReadableStreamDefaultReader(source);\n const writer = AcquireWritableStreamDefaultWriter(dest);\n source._disturbed = true;\n let shuttingDown = false;\n // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n let currentWrite = promiseResolvedWith(undefined);\n return newPromise((resolve, reject) => {\n let abortAlgorithm;\n if (signal !== undefined) {\n abortAlgorithm = () => {\n const error = signal.reason !== undefined ? signal.reason : new DOMException('Aborted', 'AbortError');\n const actions = [];\n if (!preventAbort) {\n actions.push(() => {\n if (dest._state === 'writable') {\n return WritableStreamAbort(dest, error);\n }\n return promiseResolvedWith(undefined);\n });\n }\n if (!preventCancel) {\n actions.push(() => {\n if (source._state === 'readable') {\n return ReadableStreamCancel(source, error);\n }\n return promiseResolvedWith(undefined);\n });\n }\n shutdownWithAction(() => Promise.all(actions.map(action => action())), true, error);\n };\n if (signal.aborted) {\n abortAlgorithm();\n return;\n }\n signal.addEventListener('abort', abortAlgorithm);\n }\n // Using reader and writer, read all chunks from this and write them to dest\n // - Backpressure must be enforced\n // - Shutdown must stop all activity\n function pipeLoop() {\n return newPromise((resolveLoop, rejectLoop) => {\n function next(done) {\n if (done) {\n resolveLoop();\n }\n else {\n // Use `PerformPromiseThen` instead of `uponPromise` to avoid\n // adding unnecessary `.catch(rethrowAssertionErrorRejection)` handlers\n PerformPromiseThen(pipeStep(), next, rejectLoop);\n }\n }\n next(false);\n });\n }\n function pipeStep() {\n if (shuttingDown) {\n return promiseResolvedWith(true);\n }\n return PerformPromiseThen(writer._readyPromise, () => {\n return newPromise((resolveRead, rejectRead) => {\n ReadableStreamDefaultReaderRead(reader, {\n _chunkSteps: chunk => {\n currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, chunk), undefined, noop);\n resolveRead(false);\n },\n _closeSteps: () => resolveRead(true),\n _errorSteps: rejectRead\n });\n });\n });\n }\n // Errors must be propagated forward\n isOrBecomesErrored(source, reader._closedPromise, storedError => {\n if (!preventAbort) {\n shutdownWithAction(() => WritableStreamAbort(dest, storedError), true, storedError);\n }\n else {\n shutdown(true, storedError);\n }\n return null;\n });\n // Errors must be propagated backward\n isOrBecomesErrored(dest, writer._closedPromise, storedError => {\n if (!preventCancel) {\n shutdownWithAction(() => ReadableStreamCancel(source, storedError), true, storedError);\n }\n else {\n shutdown(true, storedError);\n }\n return null;\n });\n // Closing must be propagated forward\n isOrBecomesClosed(source, reader._closedPromise, () => {\n if (!preventClose) {\n shutdownWithAction(() => WritableStreamDefaultWriterCloseWithErrorPropagation(writer));\n }\n else {\n shutdown();\n }\n return null;\n });\n // Closing must be propagated backward\n if (WritableStreamCloseQueuedOrInFlight(dest) || dest._state === 'closed') {\n const destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n if (!preventCancel) {\n shutdownWithAction(() => ReadableStreamCancel(source, destClosed), true, destClosed);\n }\n else {\n shutdown(true, destClosed);\n }\n }\n setPromiseIsHandledToTrue(pipeLoop());\n function waitForWritesToFinish() {\n // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n // for that too.\n const oldCurrentWrite = currentWrite;\n return PerformPromiseThen(currentWrite, () => oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined);\n }\n function isOrBecomesErrored(stream, promise, action) {\n if (stream._state === 'errored') {\n action(stream._storedError);\n }\n else {\n uponRejection(promise, action);\n }\n }\n function isOrBecomesClosed(stream, promise, action) {\n if (stream._state === 'closed') {\n action();\n }\n else {\n uponFulfillment(promise, action);\n }\n }\n function shutdownWithAction(action, originalIsError, originalError) {\n if (shuttingDown) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n uponFulfillment(waitForWritesToFinish(), doTheRest);\n }\n else {\n doTheRest();\n }\n function doTheRest() {\n uponPromise(action(), () => finalize(originalIsError, originalError), newError => finalize(true, newError));\n return null;\n }\n }\n function shutdown(isError, error) {\n if (shuttingDown) {\n return;\n }\n shuttingDown = true;\n if (dest._state === 'writable' && !WritableStreamCloseQueuedOrInFlight(dest)) {\n uponFulfillment(waitForWritesToFinish(), () => finalize(isError, error));\n }\n else {\n finalize(isError, error);\n }\n }\n function finalize(isError, error) {\n WritableStreamDefaultWriterRelease(writer);\n ReadableStreamReaderGenericRelease(reader);\n if (signal !== undefined) {\n signal.removeEventListener('abort', abortAlgorithm);\n }\n if (isError) {\n reject(error);\n }\n else {\n resolve(undefined);\n }\n return null;\n }\n });\n }\n\n /**\n * Allows control of a {@link ReadableStream | readable stream}'s state and internal queue.\n *\n * @public\n */\n class ReadableStreamDefaultController {\n constructor() {\n throw new TypeError('Illegal constructor');\n }\n /**\n * Returns the desired size to fill the controlled stream's internal queue. It can be negative, if the queue is\n * over-full. An underlying source ought to use this information to determine when and how to apply backpressure.\n */\n get desiredSize() {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('desiredSize');\n }\n return ReadableStreamDefaultControllerGetDesiredSize(this);\n }\n /**\n * Closes the controlled readable stream. Consumers will still be able to read any previously-enqueued chunks from\n * the stream, but once those are read, the stream will become closed.\n */\n close() {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('close');\n }\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n throw new TypeError('The stream is not in a state that permits close');\n }\n ReadableStreamDefaultControllerClose(this);\n }\n enqueue(chunk = undefined) {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('enqueue');\n }\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(this)) {\n throw new TypeError('The stream is not in a state that permits enqueue');\n }\n return ReadableStreamDefaultControllerEnqueue(this, chunk);\n }\n /**\n * Errors the controlled readable stream, making all future interactions with it fail with the given error `e`.\n */\n error(e = undefined) {\n if (!IsReadableStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException$1('error');\n }\n ReadableStreamDefaultControllerError(this, e);\n }\n /** @internal */\n [CancelSteps](reason) {\n ResetQueue(this);\n const result = this._cancelAlgorithm(reason);\n ReadableStreamDefaultControllerClearAlgorithms(this);\n return result;\n }\n /** @internal */\n [PullSteps](readRequest) {\n const stream = this._controlledReadableStream;\n if (this._queue.length > 0) {\n const chunk = DequeueValue(this);\n if (this._closeRequested && this._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(this);\n ReadableStreamClose(stream);\n }\n else {\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n readRequest._chunkSteps(chunk);\n }\n else {\n ReadableStreamAddReadRequest(stream, readRequest);\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n }\n /** @internal */\n [ReleaseSteps]() {\n // Do nothing.\n }\n }\n Object.defineProperties(ReadableStreamDefaultController.prototype, {\n close: { enumerable: true },\n enqueue: { enumerable: true },\n error: { enumerable: true },\n desiredSize: { enumerable: true }\n });\n setFunctionName(ReadableStreamDefaultController.prototype.close, 'close');\n setFunctionName(ReadableStreamDefaultController.prototype.enqueue, 'enqueue');\n setFunctionName(ReadableStreamDefaultController.prototype.error, 'error');\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStreamDefaultController.prototype, Symbol.toStringTag, {\n value: 'ReadableStreamDefaultController',\n configurable: true\n });\n }\n // Abstract operations for the ReadableStreamDefaultController.\n function IsReadableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledReadableStream')) {\n return false;\n }\n return x instanceof ReadableStreamDefaultController;\n }\n function ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n const shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n if (!shouldPull) {\n return;\n }\n if (controller._pulling) {\n controller._pullAgain = true;\n return;\n }\n controller._pulling = true;\n const pullPromise = controller._pullAlgorithm();\n uponPromise(pullPromise, () => {\n controller._pulling = false;\n if (controller._pullAgain) {\n controller._pullAgain = false;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n return null;\n }, e => {\n ReadableStreamDefaultControllerError(controller, e);\n return null;\n });\n }\n function ReadableStreamDefaultControllerShouldCallPull(controller) {\n const stream = controller._controlledReadableStream;\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return false;\n }\n if (!controller._started) {\n return false;\n }\n if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n const desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n return false;\n }\n function ReadableStreamDefaultControllerClearAlgorithms(controller) {\n controller._pullAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n controller._strategySizeAlgorithm = undefined;\n }\n // A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n function ReadableStreamDefaultControllerClose(controller) {\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return;\n }\n const stream = controller._controlledReadableStream;\n controller._closeRequested = true;\n if (controller._queue.length === 0) {\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamClose(stream);\n }\n }\n function ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(controller)) {\n return;\n }\n const stream = controller._controlledReadableStream;\n if (IsReadableStreamLocked(stream) && ReadableStreamGetNumReadRequests(stream) > 0) {\n ReadableStreamFulfillReadRequest(stream, chunk, false);\n }\n else {\n let chunkSize;\n try {\n chunkSize = controller._strategySizeAlgorithm(chunk);\n }\n catch (chunkSizeE) {\n ReadableStreamDefaultControllerError(controller, chunkSizeE);\n throw chunkSizeE;\n }\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n }\n catch (enqueueE) {\n ReadableStreamDefaultControllerError(controller, enqueueE);\n throw enqueueE;\n }\n }\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n function ReadableStreamDefaultControllerError(controller, e) {\n const stream = controller._controlledReadableStream;\n if (stream._state !== 'readable') {\n return;\n }\n ResetQueue(controller);\n ReadableStreamDefaultControllerClearAlgorithms(controller);\n ReadableStreamError(stream, e);\n }\n function ReadableStreamDefaultControllerGetDesiredSize(controller) {\n const state = controller._controlledReadableStream._state;\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n return controller._strategyHWM - controller._queueTotalSize;\n }\n // This is used in the implementation of TransformStream.\n function ReadableStreamDefaultControllerHasBackpressure(controller) {\n if (ReadableStreamDefaultControllerShouldCallPull(controller)) {\n return false;\n }\n return true;\n }\n function ReadableStreamDefaultControllerCanCloseOrEnqueue(controller) {\n const state = controller._controlledReadableStream._state;\n if (!controller._closeRequested && state === 'readable') {\n return true;\n }\n return false;\n }\n function SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm) {\n controller._controlledReadableStream = stream;\n controller._queue = undefined;\n controller._queueTotalSize = undefined;\n ResetQueue(controller);\n controller._started = false;\n controller._closeRequested = false;\n controller._pullAgain = false;\n controller._pulling = false;\n controller._strategySizeAlgorithm = sizeAlgorithm;\n controller._strategyHWM = highWaterMark;\n controller._pullAlgorithm = pullAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n stream._readableStreamController = controller;\n const startResult = startAlgorithm();\n uponPromise(promiseResolvedWith(startResult), () => {\n controller._started = true;\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n return null;\n }, r => {\n ReadableStreamDefaultControllerError(controller, r);\n return null;\n });\n }\n function SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, highWaterMark, sizeAlgorithm) {\n const controller = Object.create(ReadableStreamDefaultController.prototype);\n let startAlgorithm;\n let pullAlgorithm;\n let cancelAlgorithm;\n if (underlyingSource.start !== undefined) {\n startAlgorithm = () => underlyingSource.start(controller);\n }\n else {\n startAlgorithm = () => undefined;\n }\n if (underlyingSource.pull !== undefined) {\n pullAlgorithm = () => underlyingSource.pull(controller);\n }\n else {\n pullAlgorithm = () => promiseResolvedWith(undefined);\n }\n if (underlyingSource.cancel !== undefined) {\n cancelAlgorithm = reason => underlyingSource.cancel(reason);\n }\n else {\n cancelAlgorithm = () => promiseResolvedWith(undefined);\n }\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n }\n // Helper functions for the ReadableStreamDefaultController.\n function defaultControllerBrandCheckException$1(name) {\n return new TypeError(`ReadableStreamDefaultController.prototype.${name} can only be used on a ReadableStreamDefaultController`);\n }\n\n function ReadableStreamTee(stream, cloneForBranch2) {\n if (IsReadableByteStreamController(stream._readableStreamController)) {\n return ReadableByteStreamTee(stream);\n }\n return ReadableStreamDefaultTee(stream);\n }\n function ReadableStreamDefaultTee(stream, cloneForBranch2) {\n const reader = AcquireReadableStreamDefaultReader(stream);\n let reading = false;\n let readAgain = false;\n let canceled1 = false;\n let canceled2 = false;\n let reason1;\n let reason2;\n let branch1;\n let branch2;\n let resolveCancelPromise;\n const cancelPromise = newPromise(resolve => {\n resolveCancelPromise = resolve;\n });\n function pullAlgorithm() {\n if (reading) {\n readAgain = true;\n return promiseResolvedWith(undefined);\n }\n reading = true;\n const readRequest = {\n _chunkSteps: chunk => {\n // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using\n // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let\n // successful synchronously-available reads get ahead of asynchronously-available errors.\n _queueMicrotask(() => {\n readAgain = false;\n const chunk1 = chunk;\n const chunk2 = chunk;\n // There is no way to access the cloning code right now in the reference implementation.\n // If we add one then we'll need an implementation for serializable objects.\n // if (!canceled2 && cloneForBranch2) {\n // chunk2 = StructuredDeserialize(StructuredSerialize(chunk2));\n // }\n if (!canceled1) {\n ReadableStreamDefaultControllerEnqueue(branch1._readableStreamController, chunk1);\n }\n if (!canceled2) {\n ReadableStreamDefaultControllerEnqueue(branch2._readableStreamController, chunk2);\n }\n reading = false;\n if (readAgain) {\n pullAlgorithm();\n }\n });\n },\n _closeSteps: () => {\n reading = false;\n if (!canceled1) {\n ReadableStreamDefaultControllerClose(branch1._readableStreamController);\n }\n if (!canceled2) {\n ReadableStreamDefaultControllerClose(branch2._readableStreamController);\n }\n if (!canceled1 || !canceled2) {\n resolveCancelPromise(undefined);\n }\n },\n _errorSteps: () => {\n reading = false;\n }\n };\n ReadableStreamDefaultReaderRead(reader, readRequest);\n return promiseResolvedWith(undefined);\n }\n function cancel1Algorithm(reason) {\n canceled1 = true;\n reason1 = reason;\n if (canceled2) {\n const compositeReason = CreateArrayFromList([reason1, reason2]);\n const cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function cancel2Algorithm(reason) {\n canceled2 = true;\n reason2 = reason;\n if (canceled1) {\n const compositeReason = CreateArrayFromList([reason1, reason2]);\n const cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function startAlgorithm() {\n // do nothing\n }\n branch1 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel1Algorithm);\n branch2 = CreateReadableStream(startAlgorithm, pullAlgorithm, cancel2Algorithm);\n uponRejection(reader._closedPromise, (r) => {\n ReadableStreamDefaultControllerError(branch1._readableStreamController, r);\n ReadableStreamDefaultControllerError(branch2._readableStreamController, r);\n if (!canceled1 || !canceled2) {\n resolveCancelPromise(undefined);\n }\n return null;\n });\n return [branch1, branch2];\n }\n function ReadableByteStreamTee(stream) {\n let reader = AcquireReadableStreamDefaultReader(stream);\n let reading = false;\n let readAgainForBranch1 = false;\n let readAgainForBranch2 = false;\n let canceled1 = false;\n let canceled2 = false;\n let reason1;\n let reason2;\n let branch1;\n let branch2;\n let resolveCancelPromise;\n const cancelPromise = newPromise(resolve => {\n resolveCancelPromise = resolve;\n });\n function forwardReaderError(thisReader) {\n uponRejection(thisReader._closedPromise, r => {\n if (thisReader !== reader) {\n return null;\n }\n ReadableByteStreamControllerError(branch1._readableStreamController, r);\n ReadableByteStreamControllerError(branch2._readableStreamController, r);\n if (!canceled1 || !canceled2) {\n resolveCancelPromise(undefined);\n }\n return null;\n });\n }\n function pullWithDefaultReader() {\n if (IsReadableStreamBYOBReader(reader)) {\n ReadableStreamReaderGenericRelease(reader);\n reader = AcquireReadableStreamDefaultReader(stream);\n forwardReaderError(reader);\n }\n const readRequest = {\n _chunkSteps: chunk => {\n // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using\n // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let\n // successful synchronously-available reads get ahead of asynchronously-available errors.\n _queueMicrotask(() => {\n readAgainForBranch1 = false;\n readAgainForBranch2 = false;\n const chunk1 = chunk;\n let chunk2 = chunk;\n if (!canceled1 && !canceled2) {\n try {\n chunk2 = CloneAsUint8Array(chunk);\n }\n catch (cloneE) {\n ReadableByteStreamControllerError(branch1._readableStreamController, cloneE);\n ReadableByteStreamControllerError(branch2._readableStreamController, cloneE);\n resolveCancelPromise(ReadableStreamCancel(stream, cloneE));\n return;\n }\n }\n if (!canceled1) {\n ReadableByteStreamControllerEnqueue(branch1._readableStreamController, chunk1);\n }\n if (!canceled2) {\n ReadableByteStreamControllerEnqueue(branch2._readableStreamController, chunk2);\n }\n reading = false;\n if (readAgainForBranch1) {\n pull1Algorithm();\n }\n else if (readAgainForBranch2) {\n pull2Algorithm();\n }\n });\n },\n _closeSteps: () => {\n reading = false;\n if (!canceled1) {\n ReadableByteStreamControllerClose(branch1._readableStreamController);\n }\n if (!canceled2) {\n ReadableByteStreamControllerClose(branch2._readableStreamController);\n }\n if (branch1._readableStreamController._pendingPullIntos.length > 0) {\n ReadableByteStreamControllerRespond(branch1._readableStreamController, 0);\n }\n if (branch2._readableStreamController._pendingPullIntos.length > 0) {\n ReadableByteStreamControllerRespond(branch2._readableStreamController, 0);\n }\n if (!canceled1 || !canceled2) {\n resolveCancelPromise(undefined);\n }\n },\n _errorSteps: () => {\n reading = false;\n }\n };\n ReadableStreamDefaultReaderRead(reader, readRequest);\n }\n function pullWithBYOBReader(view, forBranch2) {\n if (IsReadableStreamDefaultReader(reader)) {\n ReadableStreamReaderGenericRelease(reader);\n reader = AcquireReadableStreamBYOBReader(stream);\n forwardReaderError(reader);\n }\n const byobBranch = forBranch2 ? branch2 : branch1;\n const otherBranch = forBranch2 ? branch1 : branch2;\n const readIntoRequest = {\n _chunkSteps: chunk => {\n // This needs to be delayed a microtask because it takes at least a microtask to detect errors (using\n // reader._closedPromise below), and we want errors in stream to error both branches immediately. We cannot let\n // successful synchronously-available reads get ahead of asynchronously-available errors.\n _queueMicrotask(() => {\n readAgainForBranch1 = false;\n readAgainForBranch2 = false;\n const byobCanceled = forBranch2 ? canceled2 : canceled1;\n const otherCanceled = forBranch2 ? canceled1 : canceled2;\n if (!otherCanceled) {\n let clonedChunk;\n try {\n clonedChunk = CloneAsUint8Array(chunk);\n }\n catch (cloneE) {\n ReadableByteStreamControllerError(byobBranch._readableStreamController, cloneE);\n ReadableByteStreamControllerError(otherBranch._readableStreamController, cloneE);\n resolveCancelPromise(ReadableStreamCancel(stream, cloneE));\n return;\n }\n if (!byobCanceled) {\n ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n }\n ReadableByteStreamControllerEnqueue(otherBranch._readableStreamController, clonedChunk);\n }\n else if (!byobCanceled) {\n ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n }\n reading = false;\n if (readAgainForBranch1) {\n pull1Algorithm();\n }\n else if (readAgainForBranch2) {\n pull2Algorithm();\n }\n });\n },\n _closeSteps: chunk => {\n reading = false;\n const byobCanceled = forBranch2 ? canceled2 : canceled1;\n const otherCanceled = forBranch2 ? canceled1 : canceled2;\n if (!byobCanceled) {\n ReadableByteStreamControllerClose(byobBranch._readableStreamController);\n }\n if (!otherCanceled) {\n ReadableByteStreamControllerClose(otherBranch._readableStreamController);\n }\n if (chunk !== undefined) {\n if (!byobCanceled) {\n ReadableByteStreamControllerRespondWithNewView(byobBranch._readableStreamController, chunk);\n }\n if (!otherCanceled && otherBranch._readableStreamController._pendingPullIntos.length > 0) {\n ReadableByteStreamControllerRespond(otherBranch._readableStreamController, 0);\n }\n }\n if (!byobCanceled || !otherCanceled) {\n resolveCancelPromise(undefined);\n }\n },\n _errorSteps: () => {\n reading = false;\n }\n };\n ReadableStreamBYOBReaderRead(reader, view, 1, readIntoRequest);\n }\n function pull1Algorithm() {\n if (reading) {\n readAgainForBranch1 = true;\n return promiseResolvedWith(undefined);\n }\n reading = true;\n const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch1._readableStreamController);\n if (byobRequest === null) {\n pullWithDefaultReader();\n }\n else {\n pullWithBYOBReader(byobRequest._view, false);\n }\n return promiseResolvedWith(undefined);\n }\n function pull2Algorithm() {\n if (reading) {\n readAgainForBranch2 = true;\n return promiseResolvedWith(undefined);\n }\n reading = true;\n const byobRequest = ReadableByteStreamControllerGetBYOBRequest(branch2._readableStreamController);\n if (byobRequest === null) {\n pullWithDefaultReader();\n }\n else {\n pullWithBYOBReader(byobRequest._view, true);\n }\n return promiseResolvedWith(undefined);\n }\n function cancel1Algorithm(reason) {\n canceled1 = true;\n reason1 = reason;\n if (canceled2) {\n const compositeReason = CreateArrayFromList([reason1, reason2]);\n const cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function cancel2Algorithm(reason) {\n canceled2 = true;\n reason2 = reason;\n if (canceled1) {\n const compositeReason = CreateArrayFromList([reason1, reason2]);\n const cancelResult = ReadableStreamCancel(stream, compositeReason);\n resolveCancelPromise(cancelResult);\n }\n return cancelPromise;\n }\n function startAlgorithm() {\n return;\n }\n branch1 = CreateReadableByteStream(startAlgorithm, pull1Algorithm, cancel1Algorithm);\n branch2 = CreateReadableByteStream(startAlgorithm, pull2Algorithm, cancel2Algorithm);\n forwardReaderError(reader);\n return [branch1, branch2];\n }\n\n function isReadableStreamLike(stream) {\n return typeIsObject(stream) && typeof stream.getReader !== 'undefined';\n }\n\n function ReadableStreamFrom(source) {\n if (isReadableStreamLike(source)) {\n return ReadableStreamFromDefaultReader(source.getReader());\n }\n return ReadableStreamFromIterable(source);\n }\n function ReadableStreamFromIterable(asyncIterable) {\n let stream;\n const iteratorRecord = GetIterator(asyncIterable, 'async');\n const startAlgorithm = noop;\n function pullAlgorithm() {\n let nextResult;\n try {\n nextResult = IteratorNext(iteratorRecord);\n }\n catch (e) {\n return promiseRejectedWith(e);\n }\n const nextPromise = promiseResolvedWith(nextResult);\n return transformPromiseWith(nextPromise, iterResult => {\n if (!typeIsObject(iterResult)) {\n throw new TypeError('The promise returned by the iterator.next() method must fulfill with an object');\n }\n const done = IteratorComplete(iterResult);\n if (done) {\n ReadableStreamDefaultControllerClose(stream._readableStreamController);\n }\n else {\n const value = IteratorValue(iterResult);\n ReadableStreamDefaultControllerEnqueue(stream._readableStreamController, value);\n }\n });\n }\n function cancelAlgorithm(reason) {\n const iterator = iteratorRecord.iterator;\n let returnMethod;\n try {\n returnMethod = GetMethod(iterator, 'return');\n }\n catch (e) {\n return promiseRejectedWith(e);\n }\n if (returnMethod === undefined) {\n return promiseResolvedWith(undefined);\n }\n let returnResult;\n try {\n returnResult = reflectCall(returnMethod, iterator, [reason]);\n }\n catch (e) {\n return promiseRejectedWith(e);\n }\n const returnPromise = promiseResolvedWith(returnResult);\n return transformPromiseWith(returnPromise, iterResult => {\n if (!typeIsObject(iterResult)) {\n throw new TypeError('The promise returned by the iterator.return() method must fulfill with an object');\n }\n return undefined;\n });\n }\n stream = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, 0);\n return stream;\n }\n function ReadableStreamFromDefaultReader(reader) {\n let stream;\n const startAlgorithm = noop;\n function pullAlgorithm() {\n let readPromise;\n try {\n readPromise = reader.read();\n }\n catch (e) {\n return promiseRejectedWith(e);\n }\n return transformPromiseWith(readPromise, readResult => {\n if (!typeIsObject(readResult)) {\n throw new TypeError('The promise returned by the reader.read() method must fulfill with an object');\n }\n if (readResult.done) {\n ReadableStreamDefaultControllerClose(stream._readableStreamController);\n }\n else {\n const value = readResult.value;\n ReadableStreamDefaultControllerEnqueue(stream._readableStreamController, value);\n }\n });\n }\n function cancelAlgorithm(reason) {\n try {\n return promiseResolvedWith(reader.cancel(reason));\n }\n catch (e) {\n return promiseRejectedWith(e);\n }\n }\n stream = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, 0);\n return stream;\n }\n\n function convertUnderlyingDefaultOrByteSource(source, context) {\n assertDictionary(source, context);\n const original = source;\n const autoAllocateChunkSize = original === null || original === void 0 ? void 0 : original.autoAllocateChunkSize;\n const cancel = original === null || original === void 0 ? void 0 : original.cancel;\n const pull = original === null || original === void 0 ? void 0 : original.pull;\n const start = original === null || original === void 0 ? void 0 : original.start;\n const type = original === null || original === void 0 ? void 0 : original.type;\n return {\n autoAllocateChunkSize: autoAllocateChunkSize === undefined ?\n undefined :\n convertUnsignedLongLongWithEnforceRange(autoAllocateChunkSize, `${context} has member 'autoAllocateChunkSize' that`),\n cancel: cancel === undefined ?\n undefined :\n convertUnderlyingSourceCancelCallback(cancel, original, `${context} has member 'cancel' that`),\n pull: pull === undefined ?\n undefined :\n convertUnderlyingSourcePullCallback(pull, original, `${context} has member 'pull' that`),\n start: start === undefined ?\n undefined :\n convertUnderlyingSourceStartCallback(start, original, `${context} has member 'start' that`),\n type: type === undefined ? undefined : convertReadableStreamType(type, `${context} has member 'type' that`)\n };\n }\n function convertUnderlyingSourceCancelCallback(fn, original, context) {\n assertFunction(fn, context);\n return (reason) => promiseCall(fn, original, [reason]);\n }\n function convertUnderlyingSourcePullCallback(fn, original, context) {\n assertFunction(fn, context);\n return (controller) => promiseCall(fn, original, [controller]);\n }\n function convertUnderlyingSourceStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return (controller) => reflectCall(fn, original, [controller]);\n }\n function convertReadableStreamType(type, context) {\n type = `${type}`;\n if (type !== 'bytes') {\n throw new TypeError(`${context} '${type}' is not a valid enumeration value for ReadableStreamType`);\n }\n return type;\n }\n\n function convertIteratorOptions(options, context) {\n assertDictionary(options, context);\n const preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel;\n return { preventCancel: Boolean(preventCancel) };\n }\n\n function convertPipeOptions(options, context) {\n assertDictionary(options, context);\n const preventAbort = options === null || options === void 0 ? void 0 : options.preventAbort;\n const preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel;\n const preventClose = options === null || options === void 0 ? void 0 : options.preventClose;\n const signal = options === null || options === void 0 ? void 0 : options.signal;\n if (signal !== undefined) {\n assertAbortSignal(signal, `${context} has member 'signal' that`);\n }\n return {\n preventAbort: Boolean(preventAbort),\n preventCancel: Boolean(preventCancel),\n preventClose: Boolean(preventClose),\n signal\n };\n }\n function assertAbortSignal(signal, context) {\n if (!isAbortSignal(signal)) {\n throw new TypeError(`${context} is not an AbortSignal.`);\n }\n }\n\n function convertReadableWritablePair(pair, context) {\n assertDictionary(pair, context);\n const readable = pair === null || pair === void 0 ? void 0 : pair.readable;\n assertRequiredField(readable, 'readable', 'ReadableWritablePair');\n assertReadableStream(readable, `${context} has member 'readable' that`);\n const writable = pair === null || pair === void 0 ? void 0 : pair.writable;\n assertRequiredField(writable, 'writable', 'ReadableWritablePair');\n assertWritableStream(writable, `${context} has member 'writable' that`);\n return { readable, writable };\n }\n\n /**\n * A readable stream represents a source of data, from which you can read.\n *\n * @public\n */\n class ReadableStream {\n constructor(rawUnderlyingSource = {}, rawStrategy = {}) {\n if (rawUnderlyingSource === undefined) {\n rawUnderlyingSource = null;\n }\n else {\n assertObject(rawUnderlyingSource, 'First parameter');\n }\n const strategy = convertQueuingStrategy(rawStrategy, 'Second parameter');\n const underlyingSource = convertUnderlyingDefaultOrByteSource(rawUnderlyingSource, 'First parameter');\n InitializeReadableStream(this);\n if (underlyingSource.type === 'bytes') {\n if (strategy.size !== undefined) {\n throw new RangeError('The strategy for a byte stream cannot have a size function');\n }\n const highWaterMark = ExtractHighWaterMark(strategy, 0);\n SetUpReadableByteStreamControllerFromUnderlyingSource(this, underlyingSource, highWaterMark);\n }\n else {\n const sizeAlgorithm = ExtractSizeAlgorithm(strategy);\n const highWaterMark = ExtractHighWaterMark(strategy, 1);\n SetUpReadableStreamDefaultControllerFromUnderlyingSource(this, underlyingSource, highWaterMark, sizeAlgorithm);\n }\n }\n /**\n * Whether or not the readable stream is locked to a {@link ReadableStreamDefaultReader | reader}.\n */\n get locked() {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('locked');\n }\n return IsReadableStreamLocked(this);\n }\n /**\n * Cancels the stream, signaling a loss of interest in the stream by a consumer.\n *\n * The supplied `reason` argument will be given to the underlying source's {@link UnderlyingSource.cancel | cancel()}\n * method, which might or might not use it.\n */\n cancel(reason = undefined) {\n if (!IsReadableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$1('cancel'));\n }\n if (IsReadableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('Cannot cancel a stream that already has a reader'));\n }\n return ReadableStreamCancel(this, reason);\n }\n getReader(rawOptions = undefined) {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('getReader');\n }\n const options = convertReaderOptions(rawOptions, 'First parameter');\n if (options.mode === undefined) {\n return AcquireReadableStreamDefaultReader(this);\n }\n return AcquireReadableStreamBYOBReader(this);\n }\n pipeThrough(rawTransform, rawOptions = {}) {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('pipeThrough');\n }\n assertRequiredArgument(rawTransform, 1, 'pipeThrough');\n const transform = convertReadableWritablePair(rawTransform, 'First parameter');\n const options = convertPipeOptions(rawOptions, 'Second parameter');\n if (IsReadableStreamLocked(this)) {\n throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream');\n }\n if (IsWritableStreamLocked(transform.writable)) {\n throw new TypeError('ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream');\n }\n const promise = ReadableStreamPipeTo(this, transform.writable, options.preventClose, options.preventAbort, options.preventCancel, options.signal);\n setPromiseIsHandledToTrue(promise);\n return transform.readable;\n }\n pipeTo(destination, rawOptions = {}) {\n if (!IsReadableStream(this)) {\n return promiseRejectedWith(streamBrandCheckException$1('pipeTo'));\n }\n if (destination === undefined) {\n return promiseRejectedWith(`Parameter 1 is required in 'pipeTo'.`);\n }\n if (!IsWritableStream(destination)) {\n return promiseRejectedWith(new TypeError(`ReadableStream.prototype.pipeTo's first argument must be a WritableStream`));\n }\n let options;\n try {\n options = convertPipeOptions(rawOptions, 'Second parameter');\n }\n catch (e) {\n return promiseRejectedWith(e);\n }\n if (IsReadableStreamLocked(this)) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n }\n if (IsWritableStreamLocked(destination)) {\n return promiseRejectedWith(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n }\n return ReadableStreamPipeTo(this, destination, options.preventClose, options.preventAbort, options.preventCancel, options.signal);\n }\n /**\n * Tees this readable stream, returning a two-element array containing the two resulting branches as\n * new {@link ReadableStream} instances.\n *\n * Teeing a stream will lock it, preventing any other consumer from acquiring a reader.\n * To cancel the stream, cancel both of the resulting branches; a composite cancellation reason will then be\n * propagated to the stream's underlying source.\n *\n * Note that the chunks seen in each branch will be the same object. If the chunks are not immutable,\n * this could allow interference between the two branches.\n */\n tee() {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('tee');\n }\n const branches = ReadableStreamTee(this);\n return CreateArrayFromList(branches);\n }\n values(rawOptions = undefined) {\n if (!IsReadableStream(this)) {\n throw streamBrandCheckException$1('values');\n }\n const options = convertIteratorOptions(rawOptions, 'First parameter');\n return AcquireReadableStreamAsyncIterator(this, options.preventCancel);\n }\n [SymbolAsyncIterator](options) {\n // Stub implementation, overridden below\n return this.values(options);\n }\n /**\n * Creates a new ReadableStream wrapping the provided iterable or async iterable.\n *\n * This can be used to adapt various kinds of objects into a readable stream,\n * such as an array, an async generator, or a Node.js readable stream.\n */\n static from(asyncIterable) {\n return ReadableStreamFrom(asyncIterable);\n }\n }\n Object.defineProperties(ReadableStream, {\n from: { enumerable: true }\n });\n Object.defineProperties(ReadableStream.prototype, {\n cancel: { enumerable: true },\n getReader: { enumerable: true },\n pipeThrough: { enumerable: true },\n pipeTo: { enumerable: true },\n tee: { enumerable: true },\n values: { enumerable: true },\n locked: { enumerable: true }\n });\n setFunctionName(ReadableStream.from, 'from');\n setFunctionName(ReadableStream.prototype.cancel, 'cancel');\n setFunctionName(ReadableStream.prototype.getReader, 'getReader');\n setFunctionName(ReadableStream.prototype.pipeThrough, 'pipeThrough');\n setFunctionName(ReadableStream.prototype.pipeTo, 'pipeTo');\n setFunctionName(ReadableStream.prototype.tee, 'tee');\n setFunctionName(ReadableStream.prototype.values, 'values');\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(ReadableStream.prototype, Symbol.toStringTag, {\n value: 'ReadableStream',\n configurable: true\n });\n }\n Object.defineProperty(ReadableStream.prototype, SymbolAsyncIterator, {\n value: ReadableStream.prototype.values,\n writable: true,\n configurable: true\n });\n // Abstract operations for the ReadableStream.\n // Throws if and only if startAlgorithm throws.\n function CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark = 1, sizeAlgorithm = () => 1) {\n const stream = Object.create(ReadableStream.prototype);\n InitializeReadableStream(stream);\n const controller = Object.create(ReadableStreamDefaultController.prototype);\n SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm);\n return stream;\n }\n // Throws if and only if startAlgorithm throws.\n function CreateReadableByteStream(startAlgorithm, pullAlgorithm, cancelAlgorithm) {\n const stream = Object.create(ReadableStream.prototype);\n InitializeReadableStream(stream);\n const controller = Object.create(ReadableByteStreamController.prototype);\n SetUpReadableByteStreamController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, 0, undefined);\n return stream;\n }\n function InitializeReadableStream(stream) {\n stream._state = 'readable';\n stream._reader = undefined;\n stream._storedError = undefined;\n stream._disturbed = false;\n }\n function IsReadableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n return false;\n }\n return x instanceof ReadableStream;\n }\n function IsReadableStreamLocked(stream) {\n if (stream._reader === undefined) {\n return false;\n }\n return true;\n }\n // ReadableStream API exposed for controllers.\n function ReadableStreamCancel(stream, reason) {\n stream._disturbed = true;\n if (stream._state === 'closed') {\n return promiseResolvedWith(undefined);\n }\n if (stream._state === 'errored') {\n return promiseRejectedWith(stream._storedError);\n }\n ReadableStreamClose(stream);\n const reader = stream._reader;\n if (reader !== undefined && IsReadableStreamBYOBReader(reader)) {\n const readIntoRequests = reader._readIntoRequests;\n reader._readIntoRequests = new SimpleQueue();\n readIntoRequests.forEach(readIntoRequest => {\n readIntoRequest._closeSteps(undefined);\n });\n }\n const sourceCancelPromise = stream._readableStreamController[CancelSteps](reason);\n return transformPromiseWith(sourceCancelPromise, noop);\n }\n function ReadableStreamClose(stream) {\n stream._state = 'closed';\n const reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n defaultReaderClosedPromiseResolve(reader);\n if (IsReadableStreamDefaultReader(reader)) {\n const readRequests = reader._readRequests;\n reader._readRequests = new SimpleQueue();\n readRequests.forEach(readRequest => {\n readRequest._closeSteps();\n });\n }\n }\n function ReadableStreamError(stream, e) {\n stream._state = 'errored';\n stream._storedError = e;\n const reader = stream._reader;\n if (reader === undefined) {\n return;\n }\n defaultReaderClosedPromiseReject(reader, e);\n if (IsReadableStreamDefaultReader(reader)) {\n ReadableStreamDefaultReaderErrorReadRequests(reader, e);\n }\n else {\n ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e);\n }\n }\n // Helper functions for the ReadableStream.\n function streamBrandCheckException$1(name) {\n return new TypeError(`ReadableStream.prototype.${name} can only be used on a ReadableStream`);\n }\n\n function convertQueuingStrategyInit(init, context) {\n assertDictionary(init, context);\n const highWaterMark = init === null || init === void 0 ? void 0 : init.highWaterMark;\n assertRequiredField(highWaterMark, 'highWaterMark', 'QueuingStrategyInit');\n return {\n highWaterMark: convertUnrestrictedDouble(highWaterMark)\n };\n }\n\n // The size function must not have a prototype property nor be a constructor\n const byteLengthSizeFunction = (chunk) => {\n return chunk.byteLength;\n };\n setFunctionName(byteLengthSizeFunction, 'size');\n /**\n * A queuing strategy that counts the number of bytes in each chunk.\n *\n * @public\n */\n class ByteLengthQueuingStrategy {\n constructor(options) {\n assertRequiredArgument(options, 1, 'ByteLengthQueuingStrategy');\n options = convertQueuingStrategyInit(options, 'First parameter');\n this._byteLengthQueuingStrategyHighWaterMark = options.highWaterMark;\n }\n /**\n * Returns the high water mark provided to the constructor.\n */\n get highWaterMark() {\n if (!IsByteLengthQueuingStrategy(this)) {\n throw byteLengthBrandCheckException('highWaterMark');\n }\n return this._byteLengthQueuingStrategyHighWaterMark;\n }\n /**\n * Measures the size of `chunk` by returning the value of its `byteLength` property.\n */\n get size() {\n if (!IsByteLengthQueuingStrategy(this)) {\n throw byteLengthBrandCheckException('size');\n }\n return byteLengthSizeFunction;\n }\n }\n Object.defineProperties(ByteLengthQueuingStrategy.prototype, {\n highWaterMark: { enumerable: true },\n size: { enumerable: true }\n });\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(ByteLengthQueuingStrategy.prototype, Symbol.toStringTag, {\n value: 'ByteLengthQueuingStrategy',\n configurable: true\n });\n }\n // Helper functions for the ByteLengthQueuingStrategy.\n function byteLengthBrandCheckException(name) {\n return new TypeError(`ByteLengthQueuingStrategy.prototype.${name} can only be used on a ByteLengthQueuingStrategy`);\n }\n function IsByteLengthQueuingStrategy(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_byteLengthQueuingStrategyHighWaterMark')) {\n return false;\n }\n return x instanceof ByteLengthQueuingStrategy;\n }\n\n // The size function must not have a prototype property nor be a constructor\n const countSizeFunction = () => {\n return 1;\n };\n setFunctionName(countSizeFunction, 'size');\n /**\n * A queuing strategy that counts the number of chunks.\n *\n * @public\n */\n class CountQueuingStrategy {\n constructor(options) {\n assertRequiredArgument(options, 1, 'CountQueuingStrategy');\n options = convertQueuingStrategyInit(options, 'First parameter');\n this._countQueuingStrategyHighWaterMark = options.highWaterMark;\n }\n /**\n * Returns the high water mark provided to the constructor.\n */\n get highWaterMark() {\n if (!IsCountQueuingStrategy(this)) {\n throw countBrandCheckException('highWaterMark');\n }\n return this._countQueuingStrategyHighWaterMark;\n }\n /**\n * Measures the size of `chunk` by always returning 1.\n * This ensures that the total queue size is a count of the number of chunks in the queue.\n */\n get size() {\n if (!IsCountQueuingStrategy(this)) {\n throw countBrandCheckException('size');\n }\n return countSizeFunction;\n }\n }\n Object.defineProperties(CountQueuingStrategy.prototype, {\n highWaterMark: { enumerable: true },\n size: { enumerable: true }\n });\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(CountQueuingStrategy.prototype, Symbol.toStringTag, {\n value: 'CountQueuingStrategy',\n configurable: true\n });\n }\n // Helper functions for the CountQueuingStrategy.\n function countBrandCheckException(name) {\n return new TypeError(`CountQueuingStrategy.prototype.${name} can only be used on a CountQueuingStrategy`);\n }\n function IsCountQueuingStrategy(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_countQueuingStrategyHighWaterMark')) {\n return false;\n }\n return x instanceof CountQueuingStrategy;\n }\n\n function convertTransformer(original, context) {\n assertDictionary(original, context);\n const cancel = original === null || original === void 0 ? void 0 : original.cancel;\n const flush = original === null || original === void 0 ? void 0 : original.flush;\n const readableType = original === null || original === void 0 ? void 0 : original.readableType;\n const start = original === null || original === void 0 ? void 0 : original.start;\n const transform = original === null || original === void 0 ? void 0 : original.transform;\n const writableType = original === null || original === void 0 ? void 0 : original.writableType;\n return {\n cancel: cancel === undefined ?\n undefined :\n convertTransformerCancelCallback(cancel, original, `${context} has member 'cancel' that`),\n flush: flush === undefined ?\n undefined :\n convertTransformerFlushCallback(flush, original, `${context} has member 'flush' that`),\n readableType,\n start: start === undefined ?\n undefined :\n convertTransformerStartCallback(start, original, `${context} has member 'start' that`),\n transform: transform === undefined ?\n undefined :\n convertTransformerTransformCallback(transform, original, `${context} has member 'transform' that`),\n writableType\n };\n }\n function convertTransformerFlushCallback(fn, original, context) {\n assertFunction(fn, context);\n return (controller) => promiseCall(fn, original, [controller]);\n }\n function convertTransformerStartCallback(fn, original, context) {\n assertFunction(fn, context);\n return (controller) => reflectCall(fn, original, [controller]);\n }\n function convertTransformerTransformCallback(fn, original, context) {\n assertFunction(fn, context);\n return (chunk, controller) => promiseCall(fn, original, [chunk, controller]);\n }\n function convertTransformerCancelCallback(fn, original, context) {\n assertFunction(fn, context);\n return (reason) => promiseCall(fn, original, [reason]);\n }\n\n // Class TransformStream\n /**\n * A transform stream consists of a pair of streams: a {@link WritableStream | writable stream},\n * known as its writable side, and a {@link ReadableStream | readable stream}, known as its readable side.\n * In a manner specific to the transform stream in question, writes to the writable side result in new data being\n * made available for reading from the readable side.\n *\n * @public\n */\n class TransformStream {\n constructor(rawTransformer = {}, rawWritableStrategy = {}, rawReadableStrategy = {}) {\n if (rawTransformer === undefined) {\n rawTransformer = null;\n }\n const writableStrategy = convertQueuingStrategy(rawWritableStrategy, 'Second parameter');\n const readableStrategy = convertQueuingStrategy(rawReadableStrategy, 'Third parameter');\n const transformer = convertTransformer(rawTransformer, 'First parameter');\n if (transformer.readableType !== undefined) {\n throw new RangeError('Invalid readableType specified');\n }\n if (transformer.writableType !== undefined) {\n throw new RangeError('Invalid writableType specified');\n }\n const readableHighWaterMark = ExtractHighWaterMark(readableStrategy, 0);\n const readableSizeAlgorithm = ExtractSizeAlgorithm(readableStrategy);\n const writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1);\n const writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy);\n let startPromise_resolve;\n const startPromise = newPromise(resolve => {\n startPromise_resolve = resolve;\n });\n InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);\n if (transformer.start !== undefined) {\n startPromise_resolve(transformer.start(this._transformStreamController));\n }\n else {\n startPromise_resolve(undefined);\n }\n }\n /**\n * The readable side of the transform stream.\n */\n get readable() {\n if (!IsTransformStream(this)) {\n throw streamBrandCheckException('readable');\n }\n return this._readable;\n }\n /**\n * The writable side of the transform stream.\n */\n get writable() {\n if (!IsTransformStream(this)) {\n throw streamBrandCheckException('writable');\n }\n return this._writable;\n }\n }\n Object.defineProperties(TransformStream.prototype, {\n readable: { enumerable: true },\n writable: { enumerable: true }\n });\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(TransformStream.prototype, Symbol.toStringTag, {\n value: 'TransformStream',\n configurable: true\n });\n }\n function InitializeTransformStream(stream, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm) {\n function startAlgorithm() {\n return startPromise;\n }\n function writeAlgorithm(chunk) {\n return TransformStreamDefaultSinkWriteAlgorithm(stream, chunk);\n }\n function abortAlgorithm(reason) {\n return TransformStreamDefaultSinkAbortAlgorithm(stream, reason);\n }\n function closeAlgorithm() {\n return TransformStreamDefaultSinkCloseAlgorithm(stream);\n }\n stream._writable = CreateWritableStream(startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, writableHighWaterMark, writableSizeAlgorithm);\n function pullAlgorithm() {\n return TransformStreamDefaultSourcePullAlgorithm(stream);\n }\n function cancelAlgorithm(reason) {\n return TransformStreamDefaultSourceCancelAlgorithm(stream, reason);\n }\n stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm);\n // The [[backpressure]] slot is set to undefined so that it can be initialised by TransformStreamSetBackpressure.\n stream._backpressure = undefined;\n stream._backpressureChangePromise = undefined;\n stream._backpressureChangePromise_resolve = undefined;\n TransformStreamSetBackpressure(stream, true);\n stream._transformStreamController = undefined;\n }\n function IsTransformStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n return false;\n }\n return x instanceof TransformStream;\n }\n // This is a no-op if both sides are already errored.\n function TransformStreamError(stream, e) {\n ReadableStreamDefaultControllerError(stream._readable._readableStreamController, e);\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n }\n function TransformStreamErrorWritableAndUnblockWrite(stream, e) {\n TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController);\n WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e);\n TransformStreamUnblockWrite(stream);\n }\n function TransformStreamUnblockWrite(stream) {\n if (stream._backpressure) {\n // Pretend that pull() was called to permit any pending write() calls to complete. TransformStreamSetBackpressure()\n // cannot be called from enqueue() or pull() once the ReadableStream is errored, so this will will be the final time\n // _backpressure is set.\n TransformStreamSetBackpressure(stream, false);\n }\n }\n function TransformStreamSetBackpressure(stream, backpressure) {\n // Passes also when called during construction.\n if (stream._backpressureChangePromise !== undefined) {\n stream._backpressureChangePromise_resolve();\n }\n stream._backpressureChangePromise = newPromise(resolve => {\n stream._backpressureChangePromise_resolve = resolve;\n });\n stream._backpressure = backpressure;\n }\n // Class TransformStreamDefaultController\n /**\n * Allows control of the {@link ReadableStream} and {@link WritableStream} of the associated {@link TransformStream}.\n *\n * @public\n */\n class TransformStreamDefaultController {\n constructor() {\n throw new TypeError('Illegal constructor');\n }\n /**\n * Returns the desired size to fill the readable side’s internal queue. It can be negative, if the queue is over-full.\n */\n get desiredSize() {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n const readableController = this._controlledTransformStream._readable._readableStreamController;\n return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n }\n enqueue(chunk = undefined) {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n TransformStreamDefaultControllerEnqueue(this, chunk);\n }\n /**\n * Errors both the readable side and the writable side of the controlled transform stream, making all future\n * interactions with it fail with the given error `e`. Any chunks queued for transformation will be discarded.\n */\n error(reason = undefined) {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('error');\n }\n TransformStreamDefaultControllerError(this, reason);\n }\n /**\n * Closes the readable side and errors the writable side of the controlled transform stream. This is useful when the\n * transformer only needs to consume a portion of the chunks written to the writable side.\n */\n terminate() {\n if (!IsTransformStreamDefaultController(this)) {\n throw defaultControllerBrandCheckException('terminate');\n }\n TransformStreamDefaultControllerTerminate(this);\n }\n }\n Object.defineProperties(TransformStreamDefaultController.prototype, {\n enqueue: { enumerable: true },\n error: { enumerable: true },\n terminate: { enumerable: true },\n desiredSize: { enumerable: true }\n });\n setFunctionName(TransformStreamDefaultController.prototype.enqueue, 'enqueue');\n setFunctionName(TransformStreamDefaultController.prototype.error, 'error');\n setFunctionName(TransformStreamDefaultController.prototype.terminate, 'terminate');\n if (typeof Symbol.toStringTag === 'symbol') {\n Object.defineProperty(TransformStreamDefaultController.prototype, Symbol.toStringTag, {\n value: 'TransformStreamDefaultController',\n configurable: true\n });\n }\n // Transform Stream Default Controller Abstract Operations\n function IsTransformStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n return false;\n }\n return x instanceof TransformStreamDefaultController;\n }\n function SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm, cancelAlgorithm) {\n controller._controlledTransformStream = stream;\n stream._transformStreamController = controller;\n controller._transformAlgorithm = transformAlgorithm;\n controller._flushAlgorithm = flushAlgorithm;\n controller._cancelAlgorithm = cancelAlgorithm;\n controller._finishPromise = undefined;\n controller._finishPromise_resolve = undefined;\n controller._finishPromise_reject = undefined;\n }\n function SetUpTransformStreamDefaultControllerFromTransformer(stream, transformer) {\n const controller = Object.create(TransformStreamDefaultController.prototype);\n let transformAlgorithm;\n let flushAlgorithm;\n let cancelAlgorithm;\n if (transformer.transform !== undefined) {\n transformAlgorithm = chunk => transformer.transform(chunk, controller);\n }\n else {\n transformAlgorithm = chunk => {\n try {\n TransformStreamDefaultControllerEnqueue(controller, chunk);\n return promiseResolvedWith(undefined);\n }\n catch (transformResultE) {\n return promiseRejectedWith(transformResultE);\n }\n };\n }\n if (transformer.flush !== undefined) {\n flushAlgorithm = () => transformer.flush(controller);\n }\n else {\n flushAlgorithm = () => promiseResolvedWith(undefined);\n }\n if (transformer.cancel !== undefined) {\n cancelAlgorithm = reason => transformer.cancel(reason);\n }\n else {\n cancelAlgorithm = () => promiseResolvedWith(undefined);\n }\n SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm, cancelAlgorithm);\n }\n function TransformStreamDefaultControllerClearAlgorithms(controller) {\n controller._transformAlgorithm = undefined;\n controller._flushAlgorithm = undefined;\n controller._cancelAlgorithm = undefined;\n }\n function TransformStreamDefaultControllerEnqueue(controller, chunk) {\n const stream = controller._controlledTransformStream;\n const readableController = stream._readable._readableStreamController;\n if (!ReadableStreamDefaultControllerCanCloseOrEnqueue(readableController)) {\n throw new TypeError('Readable side is not in a state that permits enqueue');\n }\n // We throttle transform invocations based on the backpressure of the ReadableStream, but we still\n // accept TransformStreamDefaultControllerEnqueue() calls.\n try {\n ReadableStreamDefaultControllerEnqueue(readableController, chunk);\n }\n catch (e) {\n // This happens when readableStrategy.size() throws.\n TransformStreamErrorWritableAndUnblockWrite(stream, e);\n throw stream._readable._storedError;\n }\n const backpressure = ReadableStreamDefaultControllerHasBackpressure(readableController);\n if (backpressure !== stream._backpressure) {\n TransformStreamSetBackpressure(stream, true);\n }\n }\n function TransformStreamDefaultControllerError(controller, e) {\n TransformStreamError(controller._controlledTransformStream, e);\n }\n function TransformStreamDefaultControllerPerformTransform(controller, chunk) {\n const transformPromise = controller._transformAlgorithm(chunk);\n return transformPromiseWith(transformPromise, undefined, r => {\n TransformStreamError(controller._controlledTransformStream, r);\n throw r;\n });\n }\n function TransformStreamDefaultControllerTerminate(controller) {\n const stream = controller._controlledTransformStream;\n const readableController = stream._readable._readableStreamController;\n ReadableStreamDefaultControllerClose(readableController);\n const error = new TypeError('TransformStream terminated');\n TransformStreamErrorWritableAndUnblockWrite(stream, error);\n }\n // TransformStreamDefaultSink Algorithms\n function TransformStreamDefaultSinkWriteAlgorithm(stream, chunk) {\n const controller = stream._transformStreamController;\n if (stream._backpressure) {\n const backpressureChangePromise = stream._backpressureChangePromise;\n return transformPromiseWith(backpressureChangePromise, () => {\n const writable = stream._writable;\n const state = writable._state;\n if (state === 'erroring') {\n throw writable._storedError;\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n });\n }\n return TransformStreamDefaultControllerPerformTransform(controller, chunk);\n }\n function TransformStreamDefaultSinkAbortAlgorithm(stream, reason) {\n const controller = stream._transformStreamController;\n if (controller._finishPromise !== undefined) {\n return controller._finishPromise;\n }\n // stream._readable cannot change after construction, so caching it across a call to user code is safe.\n const readable = stream._readable;\n // Assign the _finishPromise now so that if _cancelAlgorithm calls readable.cancel() internally,\n // we don't run the _cancelAlgorithm again.\n controller._finishPromise = newPromise((resolve, reject) => {\n controller._finishPromise_resolve = resolve;\n controller._finishPromise_reject = reject;\n });\n const cancelPromise = controller._cancelAlgorithm(reason);\n TransformStreamDefaultControllerClearAlgorithms(controller);\n uponPromise(cancelPromise, () => {\n if (readable._state === 'errored') {\n defaultControllerFinishPromiseReject(controller, readable._storedError);\n }\n else {\n ReadableStreamDefaultControllerError(readable._readableStreamController, reason);\n defaultControllerFinishPromiseResolve(controller);\n }\n return null;\n }, r => {\n ReadableStreamDefaultControllerError(readable._readableStreamController, r);\n defaultControllerFinishPromiseReject(controller, r);\n return null;\n });\n return controller._finishPromise;\n }\n function TransformStreamDefaultSinkCloseAlgorithm(stream) {\n const controller = stream._transformStreamController;\n if (controller._finishPromise !== undefined) {\n return controller._finishPromise;\n }\n // stream._readable cannot change after construction, so caching it across a call to user code is safe.\n const readable = stream._readable;\n // Assign the _finishPromise now so that if _flushAlgorithm calls readable.cancel() internally,\n // we don't also run the _cancelAlgorithm.\n controller._finishPromise = newPromise((resolve, reject) => {\n controller._finishPromise_resolve = resolve;\n controller._finishPromise_reject = reject;\n });\n const flushPromise = controller._flushAlgorithm();\n TransformStreamDefaultControllerClearAlgorithms(controller);\n uponPromise(flushPromise, () => {\n if (readable._state === 'errored') {\n defaultControllerFinishPromiseReject(controller, readable._storedError);\n }\n else {\n ReadableStreamDefaultControllerClose(readable._readableStreamController);\n defaultControllerFinishPromiseResolve(controller);\n }\n return null;\n }, r => {\n ReadableStreamDefaultControllerError(readable._readableStreamController, r);\n defaultControllerFinishPromiseReject(controller, r);\n return null;\n });\n return controller._finishPromise;\n }\n // TransformStreamDefaultSource Algorithms\n function TransformStreamDefaultSourcePullAlgorithm(stream) {\n // Invariant. Enforced by the promises returned by start() and pull().\n TransformStreamSetBackpressure(stream, false);\n // Prevent the next pull() call until there is backpressure.\n return stream._backpressureChangePromise;\n }\n function TransformStreamDefaultSourceCancelAlgorithm(stream, reason) {\n const controller = stream._transformStreamController;\n if (controller._finishPromise !== undefined) {\n return controller._finishPromise;\n }\n // stream._writable cannot change after construction, so caching it across a call to user code is safe.\n const writable = stream._writable;\n // Assign the _finishPromise now so that if _flushAlgorithm calls writable.abort() or\n // writable.cancel() internally, we don't run the _cancelAlgorithm again, or also run the\n // _flushAlgorithm.\n controller._finishPromise = newPromise((resolve, reject) => {\n controller._finishPromise_resolve = resolve;\n controller._finishPromise_reject = reject;\n });\n const cancelPromise = controller._cancelAlgorithm(reason);\n TransformStreamDefaultControllerClearAlgorithms(controller);\n uponPromise(cancelPromise, () => {\n if (writable._state === 'errored') {\n defaultControllerFinishPromiseReject(controller, writable._storedError);\n }\n else {\n WritableStreamDefaultControllerErrorIfNeeded(writable._writableStreamController, reason);\n TransformStreamUnblockWrite(stream);\n defaultControllerFinishPromiseResolve(controller);\n }\n return null;\n }, r => {\n WritableStreamDefaultControllerErrorIfNeeded(writable._writableStreamController, r);\n TransformStreamUnblockWrite(stream);\n defaultControllerFinishPromiseReject(controller, r);\n return null;\n });\n return controller._finishPromise;\n }\n // Helper functions for the TransformStreamDefaultController.\n function defaultControllerBrandCheckException(name) {\n return new TypeError(`TransformStreamDefaultController.prototype.${name} can only be used on a TransformStreamDefaultController`);\n }\n function defaultControllerFinishPromiseResolve(controller) {\n if (controller._finishPromise_resolve === undefined) {\n return;\n }\n controller._finishPromise_resolve();\n controller._finishPromise_resolve = undefined;\n controller._finishPromise_reject = undefined;\n }\n function defaultControllerFinishPromiseReject(controller, reason) {\n if (controller._finishPromise_reject === undefined) {\n return;\n }\n setPromiseIsHandledToTrue(controller._finishPromise);\n controller._finishPromise_reject(reason);\n controller._finishPromise_resolve = undefined;\n controller._finishPromise_reject = undefined;\n }\n // Helper functions for the TransformStream.\n function streamBrandCheckException(name) {\n return new TypeError(`TransformStream.prototype.${name} can only be used on a TransformStream`);\n }\n\n exports.ByteLengthQueuingStrategy = ByteLengthQueuingStrategy;\n exports.CountQueuingStrategy = CountQueuingStrategy;\n exports.ReadableByteStreamController = ReadableByteStreamController;\n exports.ReadableStream = ReadableStream;\n exports.ReadableStreamBYOBReader = ReadableStreamBYOBReader;\n exports.ReadableStreamBYOBRequest = ReadableStreamBYOBRequest;\n exports.ReadableStreamDefaultController = ReadableStreamDefaultController;\n exports.ReadableStreamDefaultReader = ReadableStreamDefaultReader;\n exports.TransformStream = TransformStream;\n exports.TransformStreamDefaultController = TransformStreamDefaultController;\n exports.WritableStream = WritableStream;\n exports.WritableStreamDefaultController = WritableStreamDefaultController;\n exports.WritableStreamDefaultWriter = WritableStreamDefaultWriter;\n\n}));\n//# sourceMappingURL=ponyfill.es2018.js.map\n",
76
+ "/* c8 ignore start */\n// 64 KiB (same size chrome slice theirs blob into Uint8array's)\nconst POOL_SIZE = 65536\n\nif (!globalThis.ReadableStream) {\n // `node:stream/web` got introduced in v16.5.0 as experimental\n // and it's preferred over the polyfilled version. So we also\n // suppress the warning that gets emitted by NodeJS for using it.\n try {\n const process = require('node:process')\n const { emitWarning } = process\n try {\n process.emitWarning = () => {}\n Object.assign(globalThis, require('node:stream/web'))\n process.emitWarning = emitWarning\n } catch (error) {\n process.emitWarning = emitWarning\n throw error\n }\n } catch (error) {\n // fallback to polyfill implementation\n Object.assign(globalThis, require('web-streams-polyfill/dist/ponyfill.es2018.js'))\n }\n}\n\ntry {\n // Don't use node: prefix for this, require+node: is not supported until node v14.14\n // Only `import()` can use prefix in 12.20 and later\n const { Blob } = require('buffer')\n if (Blob && !Blob.prototype.stream) {\n Blob.prototype.stream = function name (params) {\n let position = 0\n const blob = this\n\n return new ReadableStream({\n type: 'bytes',\n async pull (ctrl) {\n const chunk = blob.slice(position, Math.min(blob.size, position + POOL_SIZE))\n const buffer = await chunk.arrayBuffer()\n position += buffer.byteLength\n ctrl.enqueue(new Uint8Array(buffer))\n\n if (position === blob.size) {\n ctrl.close()\n }\n }\n })\n }\n }\n} catch (error) {}\n/* c8 ignore end */\n",
77
+ "/*! fetch-blob. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n\n// TODO (jimmywarting): in the feature use conditional loading with top level await (requires 14.x)\n// Node has recently added whatwg stream into core\n\nimport './streams.cjs'\n\n// 64 KiB (same size chrome slice theirs blob into Uint8array's)\nconst POOL_SIZE = 65536\n\n/** @param {(Blob | Uint8Array)[]} parts */\nasync function * toIterator (parts, clone = true) {\n for (const part of parts) {\n if ('stream' in part) {\n yield * (/** @type {AsyncIterableIterator<Uint8Array>} */ (part.stream()))\n } else if (ArrayBuffer.isView(part)) {\n if (clone) {\n let position = part.byteOffset\n const end = part.byteOffset + part.byteLength\n while (position !== end) {\n const size = Math.min(end - position, POOL_SIZE)\n const chunk = part.buffer.slice(position, position + size)\n position += chunk.byteLength\n yield new Uint8Array(chunk)\n }\n } else {\n yield part\n }\n /* c8 ignore next 10 */\n } else {\n // For blobs that have arrayBuffer but no stream method (nodes buffer.Blob)\n let position = 0, b = (/** @type {Blob} */ (part))\n while (position !== b.size) {\n const chunk = b.slice(position, Math.min(b.size, position + POOL_SIZE))\n const buffer = await chunk.arrayBuffer()\n position += buffer.byteLength\n yield new Uint8Array(buffer)\n }\n }\n }\n}\n\nconst _Blob = class Blob {\n /** @type {Array.<(Blob|Uint8Array)>} */\n #parts = []\n #type = ''\n #size = 0\n #endings = 'transparent'\n\n /**\n * The Blob() constructor returns a new Blob object. The content\n * of the blob consists of the concatenation of the values given\n * in the parameter array.\n *\n * @param {*} blobParts\n * @param {{ type?: string, endings?: string }} [options]\n */\n constructor (blobParts = [], options = {}) {\n if (typeof blobParts !== 'object' || blobParts === null) {\n throw new TypeError('Failed to construct \\'Blob\\': The provided value cannot be converted to a sequence.')\n }\n\n if (typeof blobParts[Symbol.iterator] !== 'function') {\n throw new TypeError('Failed to construct \\'Blob\\': The object must have a callable @@iterator property.')\n }\n\n if (typeof options !== 'object' && typeof options !== 'function') {\n throw new TypeError('Failed to construct \\'Blob\\': parameter 2 cannot convert to dictionary.')\n }\n\n if (options === null) options = {}\n\n const encoder = new TextEncoder()\n for (const element of blobParts) {\n let part\n if (ArrayBuffer.isView(element)) {\n part = new Uint8Array(element.buffer.slice(element.byteOffset, element.byteOffset + element.byteLength))\n } else if (element instanceof ArrayBuffer) {\n part = new Uint8Array(element.slice(0))\n } else if (element instanceof Blob) {\n part = element\n } else {\n part = encoder.encode(`${element}`)\n }\n\n this.#size += ArrayBuffer.isView(part) ? part.byteLength : part.size\n this.#parts.push(part)\n }\n\n this.#endings = `${options.endings === undefined ? 'transparent' : options.endings}`\n const type = options.type === undefined ? '' : String(options.type)\n this.#type = /^[\\x20-\\x7E]*$/.test(type) ? type : ''\n }\n\n /**\n * The Blob interface's size property returns the\n * size of the Blob in bytes.\n */\n get size () {\n return this.#size\n }\n\n /**\n * The type property of a Blob object returns the MIME type of the file.\n */\n get type () {\n return this.#type\n }\n\n /**\n * The text() method in the Blob interface returns a Promise\n * that resolves with a string containing the contents of\n * the blob, interpreted as UTF-8.\n *\n * @return {Promise<string>}\n */\n async text () {\n // More optimized than using this.arrayBuffer()\n // that requires twice as much ram\n const decoder = new TextDecoder()\n let str = ''\n for await (const part of toIterator(this.#parts, false)) {\n str += decoder.decode(part, { stream: true })\n }\n // Remaining\n str += decoder.decode()\n return str\n }\n\n /**\n * The arrayBuffer() method in the Blob interface returns a\n * Promise that resolves with the contents of the blob as\n * binary data contained in an ArrayBuffer.\n *\n * @return {Promise<ArrayBuffer>}\n */\n async arrayBuffer () {\n // Easier way... Just a unnecessary overhead\n // const view = new Uint8Array(this.size);\n // await this.stream().getReader({mode: 'byob'}).read(view);\n // return view.buffer;\n\n const data = new Uint8Array(this.size)\n let offset = 0\n for await (const chunk of toIterator(this.#parts, false)) {\n data.set(chunk, offset)\n offset += chunk.length\n }\n\n return data.buffer\n }\n\n stream () {\n const it = toIterator(this.#parts, true)\n\n return new globalThis.ReadableStream({\n // @ts-ignore\n type: 'bytes',\n async pull (ctrl) {\n const chunk = await it.next()\n chunk.done ? ctrl.close() : ctrl.enqueue(chunk.value)\n },\n\n async cancel () {\n await it.return()\n }\n })\n }\n\n /**\n * The Blob interface's slice() method creates and returns a\n * new Blob object which contains data from a subset of the\n * blob on which it's called.\n *\n * @param {number} [start]\n * @param {number} [end]\n * @param {string} [type]\n */\n slice (start = 0, end = this.size, type = '') {\n const { size } = this\n\n let relativeStart = start < 0 ? Math.max(size + start, 0) : Math.min(start, size)\n let relativeEnd = end < 0 ? Math.max(size + end, 0) : Math.min(end, size)\n\n const span = Math.max(relativeEnd - relativeStart, 0)\n const parts = this.#parts\n const blobParts = []\n let added = 0\n\n for (const part of parts) {\n // don't add the overflow to new blobParts\n if (added >= span) {\n break\n }\n\n const size = ArrayBuffer.isView(part) ? part.byteLength : part.size\n if (relativeStart && size <= relativeStart) {\n // Skip the beginning and change the relative\n // start & end position as we skip the unwanted parts\n relativeStart -= size\n relativeEnd -= size\n } else {\n let chunk\n if (ArrayBuffer.isView(part)) {\n chunk = part.subarray(relativeStart, Math.min(size, relativeEnd))\n added += chunk.byteLength\n } else {\n chunk = part.slice(relativeStart, Math.min(size, relativeEnd))\n added += chunk.size\n }\n relativeEnd -= size\n blobParts.push(chunk)\n relativeStart = 0 // All next sequential parts should start at 0\n }\n }\n\n const blob = new Blob([], { type: String(type).toLowerCase() })\n blob.#size = span\n blob.#parts = blobParts\n\n return blob\n }\n\n get [Symbol.toStringTag] () {\n return 'Blob'\n }\n\n static [Symbol.hasInstance] (object) {\n return (\n object &&\n typeof object === 'object' &&\n typeof object.constructor === 'function' &&\n (\n typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function'\n ) &&\n /^(Blob|File)$/.test(object[Symbol.toStringTag])\n )\n }\n}\n\nObject.defineProperties(_Blob.prototype, {\n size: { enumerable: true },\n type: { enumerable: true },\n slice: { enumerable: true }\n})\n\n/** @type {typeof globalThis.Blob} */\nexport const Blob = _Blob\nexport default Blob\n",
78
+ "import Blob from './index.js'\n\nconst _File = class File extends Blob {\n #lastModified = 0\n #name = ''\n\n /**\n * @param {*[]} fileBits\n * @param {string} fileName\n * @param {{lastModified?: number, type?: string}} options\n */// @ts-ignore\n constructor (fileBits, fileName, options = {}) {\n if (arguments.length < 2) {\n throw new TypeError(`Failed to construct 'File': 2 arguments required, but only ${arguments.length} present.`)\n }\n super(fileBits, options)\n\n if (options === null) options = {}\n\n // Simulate WebIDL type casting for NaN value in lastModified option.\n const lastModified = options.lastModified === undefined ? Date.now() : Number(options.lastModified)\n if (!Number.isNaN(lastModified)) {\n this.#lastModified = lastModified\n }\n\n this.#name = String(fileName)\n }\n\n get name () {\n return this.#name\n }\n\n get lastModified () {\n return this.#lastModified\n }\n\n get [Symbol.toStringTag] () {\n return 'File'\n }\n\n static [Symbol.hasInstance] (object) {\n return !!object && object instanceof Blob &&\n /^(File)$/.test(object[Symbol.toStringTag])\n }\n}\n\n/** @type {typeof globalThis.File} */// @ts-ignore\nexport const File = _File\nexport default File\n",
79
+ "/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n\nimport C from 'fetch-blob'\nimport F from 'fetch-blob/file.js'\n\nvar {toStringTag:t,iterator:i,hasInstance:h}=Symbol,\nr=Math.random,\nm='append,set,get,getAll,delete,keys,values,entries,forEach,constructor'.split(','),\nf=(a,b,c)=>(a+='',/^(Blob|File)$/.test(b && b[t])?[(c=c!==void 0?c+'':b[t]=='File'?b.name:'blob',a),b.name!==c||b[t]=='blob'?new F([b],c,b):b]:[a,b+'']),\ne=(c,f)=>(f?c:c.replace(/\\r?\\n|\\r/g,'\\r\\n')).replace(/\\n/g,'%0A').replace(/\\r/g,'%0D').replace(/\"/g,'%22'),\nx=(n, a, e)=>{if(a.length<e){throw new TypeError(`Failed to execute '${n}' on 'FormData': ${e} arguments required, but only ${a.length} present.`)}}\n\nexport const File = F\n\n/** @type {typeof globalThis.FormData} */\nexport const FormData = class FormData {\n#d=[];\nconstructor(...a){if(a.length)throw new TypeError(`Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.`)}\nget [t]() {return 'FormData'}\n[i](){return this.entries()}\nstatic [h](o) {return o&&typeof o==='object'&&o[t]==='FormData'&&!m.some(m=>typeof o[m]!='function')}\nappend(...a){x('append',arguments,2);this.#d.push(f(...a))}\ndelete(a){x('delete',arguments,1);a+='';this.#d=this.#d.filter(([b])=>b!==a)}\nget(a){x('get',arguments,1);a+='';for(var b=this.#d,l=b.length,c=0;c<l;c++)if(b[c][0]===a)return b[c][1];return null}\ngetAll(a,b){x('getAll',arguments,1);b=[];a+='';this.#d.forEach(c=>c[0]===a&&b.push(c[1]));return b}\nhas(a){x('has',arguments,1);a+='';return this.#d.some(b=>b[0]===a)}\nforEach(a,b){x('forEach',arguments,1);for(var [c,d]of this)a.call(b,d,c,this)}\nset(...a){x('set',arguments,2);var b=[],c=!0;a=f(...a);this.#d.forEach(d=>{d[0]===a[0]?c&&(c=!b.push(a)):b.push(d)});c&&b.push(a);this.#d=b}\n*entries(){yield*this.#d}\n*keys(){for(var[a]of this)yield a}\n*values(){for(var[,a]of this)yield a}}\n\n/** @param {FormData} F */\nexport function formDataToBlob (F,B=C){\nvar b=`${r()}${r()}`.replace(/\\./g, '').slice(-28).padStart(32, '-'),c=[],p=`--${b}\\r\\nContent-Disposition: form-data; name=\"`\nF.forEach((v,n)=>typeof v=='string'\n?c.push(p+e(n)+`\"\\r\\n\\r\\n${v.replace(/\\r(?!\\n)|(?<!\\r)\\n/g, '\\r\\n')}\\r\\n`)\n:c.push(p+e(n)+`\"; filename=\"${e(v.name, 1)}\"\\r\\nContent-Type: ${v.type||\"application/octet-stream\"}\\r\\n\\r\\n`, v, '\\r\\n'))\nc.push(`--${b}--`)\nreturn new B(c,{type:\"multipart/form-data; boundary=\"+b})}\n",
80
+ "export class FetchBaseError extends Error {\n\tconstructor(message, type) {\n\t\tsuper(message);\n\t\t// Hide custom error implementation details from end-users\n\t\tError.captureStackTrace(this, this.constructor);\n\n\t\tthis.type = type;\n\t}\n\n\tget name() {\n\t\treturn this.constructor.name;\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn this.constructor.name;\n\t}\n}\n",
81
+ "\nimport {FetchBaseError} from './base.js';\n\n/**\n * @typedef {{ address?: string, code: string, dest?: string, errno: number, info?: object, message: string, path?: string, port?: number, syscall: string}} SystemError\n*/\n\n/**\n * FetchError interface for operational errors\n */\nexport class FetchError extends FetchBaseError {\n\t/**\n\t * @param {string} message - Error message for human\n\t * @param {string} [type] - Error type for machine\n\t * @param {SystemError} [systemError] - For Node.js system error\n\t */\n\tconstructor(message, type, systemError) {\n\t\tsuper(message, type);\n\t\t// When err.type is `system`, err.erroredSysCall contains system error and err.code contains system error code\n\t\tif (systemError) {\n\t\t\t// eslint-disable-next-line no-multi-assign\n\t\t\tthis.code = this.errno = systemError.code;\n\t\t\tthis.erroredSysCall = systemError.syscall;\n\t\t}\n\t}\n}\n",
82
+ "/**\n * Is.js\n *\n * Object type checks.\n */\n\nconst NAME = Symbol.toStringTag;\n\n/**\n * Check if `obj` is a URLSearchParams object\n * ref: https://github.com/node-fetch/node-fetch/issues/296#issuecomment-307598143\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isURLSearchParameters = object => {\n\treturn (\n\t\ttypeof object === 'object' &&\n\t\ttypeof object.append === 'function' &&\n\t\ttypeof object.delete === 'function' &&\n\t\ttypeof object.get === 'function' &&\n\t\ttypeof object.getAll === 'function' &&\n\t\ttypeof object.has === 'function' &&\n\t\ttypeof object.set === 'function' &&\n\t\ttypeof object.sort === 'function' &&\n\t\tobject[NAME] === 'URLSearchParams'\n\t);\n};\n\n/**\n * Check if `object` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isBlob = object => {\n\treturn (\n\t\tobject &&\n\t\ttypeof object === 'object' &&\n\t\ttypeof object.arrayBuffer === 'function' &&\n\t\ttypeof object.type === 'string' &&\n\t\ttypeof object.stream === 'function' &&\n\t\ttypeof object.constructor === 'function' &&\n\t\t/^(Blob|File)$/.test(object[NAME])\n\t);\n};\n\n/**\n * Check if `obj` is an instance of AbortSignal.\n * @param {*} object - Object to check for\n * @return {boolean}\n */\nexport const isAbortSignal = object => {\n\treturn (\n\t\ttypeof object === 'object' && (\n\t\t\tobject[NAME] === 'AbortSignal' ||\n\t\t\tobject[NAME] === 'EventTarget'\n\t\t)\n\t);\n};\n\n/**\n * isDomainOrSubdomain reports whether sub is a subdomain (or exact match) of\n * the parent domain.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nexport const isDomainOrSubdomain = (destination, original) => {\n\tconst orig = new URL(original).hostname;\n\tconst dest = new URL(destination).hostname;\n\n\treturn orig === dest || orig.endsWith(`.${dest}`);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nexport const isSameProtocol = (destination, original) => {\n\tconst orig = new URL(original).protocol;\n\tconst dest = new URL(destination).protocol;\n\n\treturn orig === dest;\n};\n",
83
+ "/*! node-domexception. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n\nif (!globalThis.DOMException) {\n try {\n const { MessageChannel } = require('worker_threads'),\n port = new MessageChannel().port1,\n ab = new ArrayBuffer()\n port.postMessage(ab, [ab, ab])\n } catch (err) {\n err.constructor.name === 'DOMException' && (\n globalThis.DOMException = err.constructor\n )\n }\n}\n\nmodule.exports = globalThis.DOMException\n",
84
+ "import { statSync, createReadStream, promises as fs } from 'node:fs'\nimport { basename } from 'node:path'\nimport DOMException from 'node-domexception'\n\nimport File from './file.js'\nimport Blob from './index.js'\n\nconst { stat } = fs\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n */\nconst blobFromSync = (path, type) => fromBlob(statSync(path), path, type)\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n * @returns {Promise<Blob>}\n */\nconst blobFrom = (path, type) => stat(path).then(stat => fromBlob(stat, path, type))\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n * @returns {Promise<File>}\n */\nconst fileFrom = (path, type) => stat(path).then(stat => fromFile(stat, path, type))\n\n/**\n * @param {string} path filepath on the disk\n * @param {string} [type] mimetype to use\n */\nconst fileFromSync = (path, type) => fromFile(statSync(path), path, type)\n\n// @ts-ignore\nconst fromBlob = (stat, path, type = '') => new Blob([new BlobDataItem({\n path,\n size: stat.size,\n lastModified: stat.mtimeMs,\n start: 0\n})], { type })\n\n// @ts-ignore\nconst fromFile = (stat, path, type = '') => new File([new BlobDataItem({\n path,\n size: stat.size,\n lastModified: stat.mtimeMs,\n start: 0\n})], basename(path), { type, lastModified: stat.mtimeMs })\n\n/**\n * This is a blob backed up by a file on the disk\n * with minium requirement. Its wrapped around a Blob as a blobPart\n * so you have no direct access to this.\n *\n * @private\n */\nclass BlobDataItem {\n #path\n #start\n\n constructor (options) {\n this.#path = options.path\n this.#start = options.start\n this.size = options.size\n this.lastModified = options.lastModified\n }\n\n /**\n * Slicing arguments is first validated and formatted\n * to not be out of range by Blob.prototype.slice\n */\n slice (start, end) {\n return new BlobDataItem({\n path: this.#path,\n lastModified: this.lastModified,\n size: end - start,\n start: this.#start + start\n })\n }\n\n async * stream () {\n const { mtimeMs } = await stat(this.#path)\n if (mtimeMs > this.lastModified) {\n throw new DOMException('The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.', 'NotReadableError')\n }\n yield * createReadStream(this.#path, {\n start: this.#start,\n end: this.#start + this.size - 1\n })\n }\n\n get [Symbol.toStringTag] () {\n return 'Blob'\n }\n}\n\nexport default blobFromSync\nexport { File, Blob, blobFrom, blobFromSync, fileFrom, fileFromSync }\n",
85
+ "import {File} from 'fetch-blob/from.js';\nimport {FormData} from 'formdata-polyfill/esm.min.js';\n\nlet s = 0;\nconst S = {\n\tSTART_BOUNDARY: s++,\n\tHEADER_FIELD_START: s++,\n\tHEADER_FIELD: s++,\n\tHEADER_VALUE_START: s++,\n\tHEADER_VALUE: s++,\n\tHEADER_VALUE_ALMOST_DONE: s++,\n\tHEADERS_ALMOST_DONE: s++,\n\tPART_DATA_START: s++,\n\tPART_DATA: s++,\n\tEND: s++\n};\n\nlet f = 1;\nconst F = {\n\tPART_BOUNDARY: f,\n\tLAST_BOUNDARY: f *= 2\n};\n\nconst LF = 10;\nconst CR = 13;\nconst SPACE = 32;\nconst HYPHEN = 45;\nconst COLON = 58;\nconst A = 97;\nconst Z = 122;\n\nconst lower = c => c | 0x20;\n\nconst noop = () => {};\n\nclass MultipartParser {\n\t/**\n\t * @param {string} boundary\n\t */\n\tconstructor(boundary) {\n\t\tthis.index = 0;\n\t\tthis.flags = 0;\n\n\t\tthis.onHeaderEnd = noop;\n\t\tthis.onHeaderField = noop;\n\t\tthis.onHeadersEnd = noop;\n\t\tthis.onHeaderValue = noop;\n\t\tthis.onPartBegin = noop;\n\t\tthis.onPartData = noop;\n\t\tthis.onPartEnd = noop;\n\n\t\tthis.boundaryChars = {};\n\n\t\tboundary = '\\r\\n--' + boundary;\n\t\tconst ui8a = new Uint8Array(boundary.length);\n\t\tfor (let i = 0; i < boundary.length; i++) {\n\t\t\tui8a[i] = boundary.charCodeAt(i);\n\t\t\tthis.boundaryChars[ui8a[i]] = true;\n\t\t}\n\n\t\tthis.boundary = ui8a;\n\t\tthis.lookbehind = new Uint8Array(this.boundary.length + 8);\n\t\tthis.state = S.START_BOUNDARY;\n\t}\n\n\t/**\n\t * @param {Uint8Array} data\n\t */\n\twrite(data) {\n\t\tlet i = 0;\n\t\tconst length_ = data.length;\n\t\tlet previousIndex = this.index;\n\t\tlet {lookbehind, boundary, boundaryChars, index, state, flags} = this;\n\t\tconst boundaryLength = this.boundary.length;\n\t\tconst boundaryEnd = boundaryLength - 1;\n\t\tconst bufferLength = data.length;\n\t\tlet c;\n\t\tlet cl;\n\n\t\tconst mark = name => {\n\t\t\tthis[name + 'Mark'] = i;\n\t\t};\n\n\t\tconst clear = name => {\n\t\t\tdelete this[name + 'Mark'];\n\t\t};\n\n\t\tconst callback = (callbackSymbol, start, end, ui8a) => {\n\t\t\tif (start === undefined || start !== end) {\n\t\t\t\tthis[callbackSymbol](ui8a && ui8a.subarray(start, end));\n\t\t\t}\n\t\t};\n\n\t\tconst dataCallback = (name, clear) => {\n\t\t\tconst markSymbol = name + 'Mark';\n\t\t\tif (!(markSymbol in this)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (clear) {\n\t\t\t\tcallback(name, this[markSymbol], i, data);\n\t\t\t\tdelete this[markSymbol];\n\t\t\t} else {\n\t\t\t\tcallback(name, this[markSymbol], data.length, data);\n\t\t\t\tthis[markSymbol] = 0;\n\t\t\t}\n\t\t};\n\n\t\tfor (i = 0; i < length_; i++) {\n\t\t\tc = data[i];\n\n\t\t\tswitch (state) {\n\t\t\t\tcase S.START_BOUNDARY:\n\t\t\t\t\tif (index === boundary.length - 2) {\n\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else if (c !== CR) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (index - 1 === boundary.length - 2) {\n\t\t\t\t\t\tif (flags & F.LAST_BOUNDARY && c === HYPHEN) {\n\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t} else if (!(flags & F.LAST_BOUNDARY) && c === LF) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c !== boundary[index + 2]) {\n\t\t\t\t\t\tindex = -2;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === boundary[index + 2]) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_FIELD_START:\n\t\t\t\t\tstate = S.HEADER_FIELD;\n\t\t\t\t\tmark('onHeaderField');\n\t\t\t\t\tindex = 0;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_FIELD:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tclear('onHeaderField');\n\t\t\t\t\t\tstate = S.HEADERS_ALMOST_DONE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tindex++;\n\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === COLON) {\n\t\t\t\t\t\tif (index === 1) {\n\t\t\t\t\t\t\t// empty header field\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdataCallback('onHeaderField', true);\n\t\t\t\t\t\tstate = S.HEADER_VALUE_START;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcl = lower(c);\n\t\t\t\t\tif (cl < A || cl > Z) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_START:\n\t\t\t\t\tif (c === SPACE) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tmark('onHeaderValue');\n\t\t\t\t\tstate = S.HEADER_VALUE;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_VALUE:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tdataCallback('onHeaderValue', true);\n\t\t\t\t\t\tcallback('onHeaderEnd');\n\t\t\t\t\t\tstate = S.HEADER_VALUE_ALMOST_DONE;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADERS_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback('onHeadersEnd');\n\t\t\t\t\tstate = S.PART_DATA_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.PART_DATA_START:\n\t\t\t\t\tstate = S.PART_DATA;\n\t\t\t\t\tmark('onPartData');\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.PART_DATA:\n\t\t\t\t\tpreviousIndex = index;\n\n\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t// boyer-moore derrived algorithm to safely skip non-boundary data\n\t\t\t\t\t\ti += boundaryEnd;\n\t\t\t\t\t\twhile (i < bufferLength && !(data[i] in boundaryChars)) {\n\t\t\t\t\t\t\ti += boundaryLength;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ti -= boundaryEnd;\n\t\t\t\t\t\tc = data[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index < boundary.length) {\n\t\t\t\t\t\tif (boundary[index] === c) {\n\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\tdataCallback('onPartData', true);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index === boundary.length) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\t\t// CR = part boundary\n\t\t\t\t\t\t\tflags |= F.PART_BOUNDARY;\n\t\t\t\t\t\t} else if (c === HYPHEN) {\n\t\t\t\t\t\t\t// HYPHEN = end boundary\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index - 1 === boundary.length) {\n\t\t\t\t\t\tif (flags & F.PART_BOUNDARY) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tif (c === LF) {\n\t\t\t\t\t\t\t\t// unset the PART_BOUNDARY flag\n\t\t\t\t\t\t\t\tflags &= ~F.PART_BOUNDARY;\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (flags & F.LAST_BOUNDARY) {\n\t\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t// when matching a possible boundary, keep a lookbehind reference\n\t\t\t\t\t\t// in case it turns out to be a false lead\n\t\t\t\t\t\tlookbehind[index - 1] = c;\n\t\t\t\t\t} else if (previousIndex > 0) {\n\t\t\t\t\t\t// if our boundary turned out to be rubbish, the captured lookbehind\n\t\t\t\t\t\t// belongs to partData\n\t\t\t\t\t\tconst _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);\n\t\t\t\t\t\tcallback('onPartData', 0, previousIndex, _lookbehind);\n\t\t\t\t\t\tpreviousIndex = 0;\n\t\t\t\t\t\tmark('onPartData');\n\n\t\t\t\t\t\t// reconsider the current character even so it interrupted the sequence\n\t\t\t\t\t\t// it could be the beginning of a new sequence\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.END:\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Unexpected state entered: ${state}`);\n\t\t\t}\n\t\t}\n\n\t\tdataCallback('onHeaderField');\n\t\tdataCallback('onHeaderValue');\n\t\tdataCallback('onPartData');\n\n\t\t// Update properties for the next call\n\t\tthis.index = index;\n\t\tthis.state = state;\n\t\tthis.flags = flags;\n\t}\n\n\tend() {\n\t\tif ((this.state === S.HEADER_FIELD_START && this.index === 0) ||\n\t\t\t(this.state === S.PART_DATA && this.index === this.boundary.length)) {\n\t\t\tthis.onPartEnd();\n\t\t} else if (this.state !== S.END) {\n\t\t\tthrow new Error('MultipartParser.end(): stream ended unexpectedly');\n\t\t}\n\t}\n}\n\nfunction _fileName(headerValue) {\n\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\tconst m = headerValue.match(/\\bfilename=(\"(.*?)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))($|;\\s)/i);\n\tif (!m) {\n\t\treturn;\n\t}\n\n\tconst match = m[2] || m[3] || '';\n\tlet filename = match.slice(match.lastIndexOf('\\\\') + 1);\n\tfilename = filename.replace(/%22/g, '\"');\n\tfilename = filename.replace(/&#(\\d{4});/g, (m, code) => {\n\t\treturn String.fromCharCode(code);\n\t});\n\treturn filename;\n}\n\nexport async function toFormData(Body, ct) {\n\tif (!/multipart/i.test(ct)) {\n\t\tthrow new TypeError('Failed to fetch');\n\t}\n\n\tconst m = ct.match(/boundary=(?:\"([^\"]+)\"|([^;]+))/i);\n\n\tif (!m) {\n\t\tthrow new TypeError('no or bad content-type header, no multipart boundary');\n\t}\n\n\tconst parser = new MultipartParser(m[1] || m[2]);\n\n\tlet headerField;\n\tlet headerValue;\n\tlet entryValue;\n\tlet entryName;\n\tlet contentType;\n\tlet filename;\n\tconst entryChunks = [];\n\tconst formData = new FormData();\n\n\tconst onPartData = ui8a => {\n\t\tentryValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tconst appendToFile = ui8a => {\n\t\tentryChunks.push(ui8a);\n\t};\n\n\tconst appendFileToFormData = () => {\n\t\tconst file = new File(entryChunks, filename, {type: contentType});\n\t\tformData.append(entryName, file);\n\t};\n\n\tconst appendEntryToFormData = () => {\n\t\tformData.append(entryName, entryValue);\n\t};\n\n\tconst decoder = new TextDecoder('utf-8');\n\tdecoder.decode();\n\n\tparser.onPartBegin = function () {\n\t\tparser.onPartData = onPartData;\n\t\tparser.onPartEnd = appendEntryToFormData;\n\n\t\theaderField = '';\n\t\theaderValue = '';\n\t\tentryValue = '';\n\t\tentryName = '';\n\t\tcontentType = '';\n\t\tfilename = null;\n\t\tentryChunks.length = 0;\n\t};\n\n\tparser.onHeaderField = function (ui8a) {\n\t\theaderField += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderValue = function (ui8a) {\n\t\theaderValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderEnd = function () {\n\t\theaderValue += decoder.decode();\n\t\theaderField = headerField.toLowerCase();\n\n\t\tif (headerField === 'content-disposition') {\n\t\t\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\t\t\tconst m = headerValue.match(/\\bname=(\"([^\"]*)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))/i);\n\n\t\t\tif (m) {\n\t\t\t\tentryName = m[2] || m[3] || '';\n\t\t\t}\n\n\t\t\tfilename = _fileName(headerValue);\n\n\t\t\tif (filename) {\n\t\t\t\tparser.onPartData = appendToFile;\n\t\t\t\tparser.onPartEnd = appendFileToFormData;\n\t\t\t}\n\t\t} else if (headerField === 'content-type') {\n\t\t\tcontentType = headerValue;\n\t\t}\n\n\t\theaderValue = '';\n\t\theaderField = '';\n\t};\n\n\tfor await (const chunk of Body) {\n\t\tparser.write(chunk);\n\t}\n\n\tparser.end();\n\n\treturn formData;\n}\n",
86
+ "\n/**\n * Body.js\n *\n * Body interface provides common methods for Request and Response\n */\n\nimport Stream, {PassThrough} from 'node:stream';\nimport {types, deprecate, promisify} from 'node:util';\nimport {Buffer} from 'node:buffer';\n\nimport Blob from 'fetch-blob';\nimport {FormData, formDataToBlob} from 'formdata-polyfill/esm.min.js';\n\nimport {FetchError} from './errors/fetch-error.js';\nimport {FetchBaseError} from './errors/base.js';\nimport {isBlob, isURLSearchParameters} from './utils/is.js';\n\nconst pipeline = promisify(Stream.pipeline);\nconst INTERNALS = Symbol('Body internals');\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nexport default class Body {\n\tconstructor(body, {\n\t\tsize = 0\n\t} = {}) {\n\t\tlet boundary = null;\n\n\t\tif (body === null) {\n\t\t\t// Body is undefined or null\n\t\t\tbody = null;\n\t\t} else if (isURLSearchParameters(body)) {\n\t\t\t// Body is a URLSearchParams\n\t\t\tbody = Buffer.from(body.toString());\n\t\t} else if (isBlob(body)) {\n\t\t\t// Body is blob\n\t\t} else if (Buffer.isBuffer(body)) {\n\t\t\t// Body is Buffer\n\t\t} else if (types.isAnyArrayBuffer(body)) {\n\t\t\t// Body is ArrayBuffer\n\t\t\tbody = Buffer.from(body);\n\t\t} else if (ArrayBuffer.isView(body)) {\n\t\t\t// Body is ArrayBufferView\n\t\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t\t} else if (body instanceof Stream) {\n\t\t\t// Body is stream\n\t\t} else if (body instanceof FormData) {\n\t\t\t// Body is FormData\n\t\t\tbody = formDataToBlob(body);\n\t\t\tboundary = body.type.split('=')[1];\n\t\t} else {\n\t\t\t// None of the above\n\t\t\t// coerce to string then buffer\n\t\t\tbody = Buffer.from(String(body));\n\t\t}\n\n\t\tlet stream = body;\n\n\t\tif (Buffer.isBuffer(body)) {\n\t\t\tstream = Stream.Readable.from(body);\n\t\t} else if (isBlob(body)) {\n\t\t\tstream = Stream.Readable.from(body.stream());\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\tbody,\n\t\t\tstream,\n\t\t\tboundary,\n\t\t\tdisturbed: false,\n\t\t\terror: null\n\t\t};\n\t\tthis.size = size;\n\n\t\tif (body instanceof Stream) {\n\t\t\tbody.on('error', error_ => {\n\t\t\t\tconst error = error_ instanceof FetchBaseError ?\n\t\t\t\t\terror_ :\n\t\t\t\t\tnew FetchError(`Invalid response body while trying to fetch ${this.url}: ${error_.message}`, 'system', error_);\n\t\t\t\tthis[INTERNALS].error = error;\n\t\t\t});\n\t\t}\n\t}\n\n\tget body() {\n\t\treturn this[INTERNALS].stream;\n\t}\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t}\n\n\t/**\n\t * Decode response as ArrayBuffer\n\t *\n\t * @return Promise\n\t */\n\tasync arrayBuffer() {\n\t\tconst {buffer, byteOffset, byteLength} = await consumeBody(this);\n\t\treturn buffer.slice(byteOffset, byteOffset + byteLength);\n\t}\n\n\tasync formData() {\n\t\tconst ct = this.headers.get('content-type');\n\n\t\tif (ct.startsWith('application/x-www-form-urlencoded')) {\n\t\t\tconst formData = new FormData();\n\t\t\tconst parameters = new URLSearchParams(await this.text());\n\n\t\t\tfor (const [name, value] of parameters) {\n\t\t\t\tformData.append(name, value);\n\t\t\t}\n\n\t\t\treturn formData;\n\t\t}\n\n\t\tconst {toFormData} = await import('./utils/multipart-parser.js');\n\t\treturn toFormData(this.body, ct);\n\t}\n\n\t/**\n\t * Return raw response as Blob\n\t *\n\t * @return Promise\n\t */\n\tasync blob() {\n\t\tconst ct = (this.headers && this.headers.get('content-type')) || (this[INTERNALS].body && this[INTERNALS].body.type) || '';\n\t\tconst buf = await this.arrayBuffer();\n\n\t\treturn new Blob([buf], {\n\t\t\ttype: ct\n\t\t});\n\t}\n\n\t/**\n\t * Decode response as json\n\t *\n\t * @return Promise\n\t */\n\tasync json() {\n\t\tconst text = await this.text();\n\t\treturn JSON.parse(text);\n\t}\n\n\t/**\n\t * Decode response as text\n\t *\n\t * @return Promise\n\t */\n\tasync text() {\n\t\tconst buffer = await consumeBody(this);\n\t\treturn new TextDecoder().decode(buffer);\n\t}\n\n\t/**\n\t * Decode response as buffer (non-spec api)\n\t *\n\t * @return Promise\n\t */\n\tbuffer() {\n\t\treturn consumeBody(this);\n\t}\n}\n\nBody.prototype.buffer = deprecate(Body.prototype.buffer, 'Please use \\'response.arrayBuffer()\\' instead of \\'response.buffer()\\'', 'node-fetch#buffer');\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: {enumerable: true},\n\tbodyUsed: {enumerable: true},\n\tarrayBuffer: {enumerable: true},\n\tblob: {enumerable: true},\n\tjson: {enumerable: true},\n\ttext: {enumerable: true},\n\tdata: {get: deprecate(() => {},\n\t\t'data doesn\\'t exist, use json(), text(), arrayBuffer(), or body instead',\n\t\t'https://github.com/node-fetch/node-fetch/issues/1000 (response)')}\n});\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nasync function consumeBody(data) {\n\tif (data[INTERNALS].disturbed) {\n\t\tthrow new TypeError(`body used already for: ${data.url}`);\n\t}\n\n\tdata[INTERNALS].disturbed = true;\n\n\tif (data[INTERNALS].error) {\n\t\tthrow data[INTERNALS].error;\n\t}\n\n\tconst {body} = data;\n\n\t// Body is null\n\tif (body === null) {\n\t\treturn Buffer.alloc(0);\n\t}\n\n\t/* c8 ignore next 3 */\n\tif (!(body instanceof Stream)) {\n\t\treturn Buffer.alloc(0);\n\t}\n\n\t// Body is stream\n\t// get ready to actually consume the body\n\tconst accum = [];\n\tlet accumBytes = 0;\n\n\ttry {\n\t\tfor await (const chunk of body) {\n\t\t\tif (data.size > 0 && accumBytes + chunk.length > data.size) {\n\t\t\t\tconst error = new FetchError(`content size at ${data.url} over limit: ${data.size}`, 'max-size');\n\t\t\t\tbody.destroy(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t}\n\t} catch (error) {\n\t\tconst error_ = error instanceof FetchBaseError ? error : new FetchError(`Invalid response body while trying to fetch ${data.url}: ${error.message}`, 'system', error);\n\t\tthrow error_;\n\t}\n\n\tif (body.readableEnded === true || body._readableState.ended === true) {\n\t\ttry {\n\t\t\tif (accum.every(c => typeof c === 'string')) {\n\t\t\t\treturn Buffer.from(accum.join(''));\n\t\t\t}\n\n\t\t\treturn Buffer.concat(accum, accumBytes);\n\t\t} catch (error) {\n\t\t\tthrow new FetchError(`Could not create Buffer from response body for ${data.url}: ${error.message}`, 'system', error);\n\t\t}\n\t} else {\n\t\tthrow new FetchError(`Premature close of server response while trying to fetch ${data.url}`);\n\t}\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param Mixed instance Response or Request instance\n * @param String highWaterMark highWaterMark for both PassThrough body streams\n * @return Mixed\n */\nexport const clone = (instance, highWaterMark) => {\n\tlet p1;\n\tlet p2;\n\tlet {body} = instance[INTERNALS];\n\n\t// Don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// Check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif ((body instanceof Stream) && (typeof body.getBoundary !== 'function')) {\n\t\t// Tee instance body\n\t\tp1 = new PassThrough({highWaterMark});\n\t\tp2 = new PassThrough({highWaterMark});\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// Set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].stream = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n};\n\nconst getNonSpecFormDataBoundary = deprecate(\n\tbody => body.getBoundary(),\n\t'form-data doesn\\'t follow the spec and requires special treatment. Use alternative package',\n\t'https://github.com/node-fetch/node-fetch/issues/1167'\n);\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param {any} body Any options.body input\n * @returns {string | null}\n */\nexport const extractContentType = (body, request) => {\n\t// Body is null or undefined\n\tif (body === null) {\n\t\treturn null;\n\t}\n\n\t// Body is string\n\tif (typeof body === 'string') {\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n\n\t// Body is a URLSearchParams\n\tif (isURLSearchParameters(body)) {\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t}\n\n\t// Body is blob\n\tif (isBlob(body)) {\n\t\treturn body.type || null;\n\t}\n\n\t// Body is a Buffer (Buffer, ArrayBuffer or ArrayBufferView)\n\tif (Buffer.isBuffer(body) || types.isAnyArrayBuffer(body) || ArrayBuffer.isView(body)) {\n\t\treturn null;\n\t}\n\n\tif (body instanceof FormData) {\n\t\treturn `multipart/form-data; boundary=${request[INTERNALS].boundary}`;\n\t}\n\n\t// Detect form data input from form-data module\n\tif (body && typeof body.getBoundary === 'function') {\n\t\treturn `multipart/form-data;boundary=${getNonSpecFormDataBoundary(body)}`;\n\t}\n\n\t// Body is stream - can't really do much about this\n\tif (body instanceof Stream) {\n\t\treturn null;\n\t}\n\n\t// Body constructor defaults other things to string\n\treturn 'text/plain;charset=UTF-8';\n};\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param {any} obj.body Body object from the Body instance.\n * @returns {number | null}\n */\nexport const getTotalBytes = request => {\n\tconst {body} = request[INTERNALS];\n\n\t// Body is null or undefined\n\tif (body === null) {\n\t\treturn 0;\n\t}\n\n\t// Body is Blob\n\tif (isBlob(body)) {\n\t\treturn body.size;\n\t}\n\n\t// Body is Buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn body.length;\n\t}\n\n\t// Detect form data input from form-data module\n\tif (body && typeof body.getLengthSync === 'function') {\n\t\treturn body.hasKnownLength && body.hasKnownLength() ? body.getLengthSync() : null;\n\t}\n\n\t// Body is stream\n\treturn null;\n};\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param {Stream.Writable} dest The stream to write to.\n * @param obj.body Body object from the Body instance.\n * @returns {Promise<void>}\n */\nexport const writeToStream = async (dest, {body}) => {\n\tif (body === null) {\n\t\t// Body is null\n\t\tdest.end();\n\t} else {\n\t\t// Body is stream\n\t\tawait pipeline(body, dest);\n\t}\n};\n",
87
+ "/**\n * Headers.js\n *\n * Headers class offers convenient helpers\n */\n\nimport {types} from 'node:util';\nimport http from 'node:http';\n\n/* c8 ignore next 9 */\nconst validateHeaderName = typeof http.validateHeaderName === 'function' ?\n\thttp.validateHeaderName :\n\tname => {\n\t\tif (!/^[\\^`\\-\\w!#$%&'*+.|~]+$/.test(name)) {\n\t\t\tconst error = new TypeError(`Header name must be a valid HTTP token [${name}]`);\n\t\t\tObject.defineProperty(error, 'code', {value: 'ERR_INVALID_HTTP_TOKEN'});\n\t\t\tthrow error;\n\t\t}\n\t};\n\n/* c8 ignore next 9 */\nconst validateHeaderValue = typeof http.validateHeaderValue === 'function' ?\n\thttp.validateHeaderValue :\n\t(name, value) => {\n\t\tif (/[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/.test(value)) {\n\t\t\tconst error = new TypeError(`Invalid character in header content [\"${name}\"]`);\n\t\t\tObject.defineProperty(error, 'code', {value: 'ERR_INVALID_CHAR'});\n\t\t\tthrow error;\n\t\t}\n\t};\n\n/**\n * @typedef {Headers | Record<string, string> | Iterable<readonly [string, string]> | Iterable<Iterable<string>>} HeadersInit\n */\n\n/**\n * This Fetch API interface allows you to perform various actions on HTTP request and response headers.\n * These actions include retrieving, setting, adding to, and removing.\n * A Headers object has an associated header list, which is initially empty and consists of zero or more name and value pairs.\n * You can add to this using methods like append() (see Examples.)\n * In all methods of this interface, header names are matched by case-insensitive byte sequence.\n *\n */\nexport default class Headers extends URLSearchParams {\n\t/**\n\t * Headers class\n\t *\n\t * @constructor\n\t * @param {HeadersInit} [init] - Response headers\n\t */\n\tconstructor(init) {\n\t\t// Validate and normalize init object in [name, value(s)][]\n\t\t/** @type {string[][]} */\n\t\tlet result = [];\n\t\tif (init instanceof Headers) {\n\t\t\tconst raw = init.raw();\n\t\t\tfor (const [name, values] of Object.entries(raw)) {\n\t\t\t\tresult.push(...values.map(value => [name, value]));\n\t\t\t}\n\t\t} else if (init == null) { // eslint-disable-line no-eq-null, eqeqeq\n\t\t\t// No op\n\t\t} else if (typeof init === 'object' && !types.isBoxedPrimitive(init)) {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\t\tif (method == null) {\n\t\t\t\t// Record<ByteString, ByteString>\n\t\t\t\tresult.push(...Object.entries(init));\n\t\t\t} else {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// Sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tresult = [...init]\n\t\t\t\t\t.map(pair => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof pair !== 'object' || types.isBoxedPrimitive(pair)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tthrow new TypeError('Each header pair must be an iterable object');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn [...pair];\n\t\t\t\t\t}).map(pair => {\n\t\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn [...pair];\n\t\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Failed to construct \\'Headers\\': The provided value is not of type \\'(sequence<sequence<ByteString>> or record<ByteString, ByteString>)');\n\t\t}\n\n\t\t// Validate and lowercase\n\t\tresult =\n\t\t\tresult.length > 0 ?\n\t\t\t\tresult.map(([name, value]) => {\n\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\treturn [String(name).toLowerCase(), String(value)];\n\t\t\t\t}) :\n\t\t\t\tundefined;\n\n\t\tsuper(result);\n\n\t\t// Returning a Proxy that will lowercase key names, validate parameters and sort keys\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn new Proxy(this, {\n\t\t\tget(target, p, receiver) {\n\t\t\t\tswitch (p) {\n\t\t\t\t\tcase 'append':\n\t\t\t\t\tcase 'set':\n\t\t\t\t\t\treturn (name, value) => {\n\t\t\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\t\t\treturn URLSearchParams.prototype[p].call(\n\t\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\t\tString(name).toLowerCase(),\n\t\t\t\t\t\t\t\tString(value)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t};\n\n\t\t\t\t\tcase 'delete':\n\t\t\t\t\tcase 'has':\n\t\t\t\t\tcase 'getAll':\n\t\t\t\t\t\treturn name => {\n\t\t\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\t\t\treturn URLSearchParams.prototype[p].call(\n\t\t\t\t\t\t\t\ttarget,\n\t\t\t\t\t\t\t\tString(name).toLowerCase()\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t};\n\n\t\t\t\t\tcase 'keys':\n\t\t\t\t\t\treturn () => {\n\t\t\t\t\t\t\ttarget.sort();\n\t\t\t\t\t\t\treturn new Set(URLSearchParams.prototype.keys.call(target)).keys();\n\t\t\t\t\t\t};\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn Reflect.get(target, p, receiver);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t/* c8 ignore next */\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn this.constructor.name;\n\t}\n\n\ttoString() {\n\t\treturn Object.prototype.toString.call(this);\n\t}\n\n\tget(name) {\n\t\tconst values = this.getAll(name);\n\t\tif (values.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet value = values.join(', ');\n\t\tif (/^content-encoding$/i.test(name)) {\n\t\t\tvalue = value.toLowerCase();\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tforEach(callback, thisArg = undefined) {\n\t\tfor (const name of this.keys()) {\n\t\t\tReflect.apply(callback, thisArg, [this.get(name), name, this]);\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const name of this.keys()) {\n\t\t\tyield this.get(name);\n\t\t}\n\t}\n\n\t/**\n\t * @type {() => IterableIterator<[string, string]>}\n\t */\n\t* entries() {\n\t\tfor (const name of this.keys()) {\n\t\t\tyield [name, this.get(name)];\n\t\t}\n\t}\n\n\t[Symbol.iterator]() {\n\t\treturn this.entries();\n\t}\n\n\t/**\n\t * Node-fetch non-spec method\n\t * returning all headers and their values as array\n\t * @returns {Record<string, string[]>}\n\t */\n\traw() {\n\t\treturn [...this.keys()].reduce((result, key) => {\n\t\t\tresult[key] = this.getAll(key);\n\t\t\treturn result;\n\t\t}, {});\n\t}\n\n\t/**\n\t * For better console.log(headers) and also to convert Headers into Node.js Request compatible format\n\t */\n\t[Symbol.for('nodejs.util.inspect.custom')]() {\n\t\treturn [...this.keys()].reduce((result, key) => {\n\t\t\tconst values = this.getAll(key);\n\t\t\t// Http.request() only supports string as Host header.\n\t\t\t// This hack makes specifying custom Host header possible.\n\t\t\tif (key === 'host') {\n\t\t\t\tresult[key] = values[0];\n\t\t\t} else {\n\t\t\t\tresult[key] = values.length > 1 ? values : values[0];\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}, {});\n\t}\n}\n\n/**\n * Re-shaping object for Web IDL tests\n * Only need to do it for overridden methods\n */\nObject.defineProperties(\n\tHeaders.prototype,\n\t['get', 'entries', 'forEach', 'values'].reduce((result, property) => {\n\t\tresult[property] = {enumerable: true};\n\t\treturn result;\n\t}, {})\n);\n\n/**\n * Create a Headers object from an http.IncomingMessage.rawHeaders, ignoring those that do\n * not conform to HTTP grammar productions.\n * @param {import('http').IncomingMessage['rawHeaders']} headers\n */\nexport function fromRawHeaders(headers = []) {\n\treturn new Headers(\n\t\theaders\n\t\t\t// Split into pairs\n\t\t\t.reduce((result, value, index, array) => {\n\t\t\t\tif (index % 2 === 0) {\n\t\t\t\t\tresult.push(array.slice(index, index + 2));\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}, [])\n\t\t\t.filter(([name, value]) => {\n\t\t\t\ttry {\n\t\t\t\t\tvalidateHeaderName(name);\n\t\t\t\t\tvalidateHeaderValue(name, String(value));\n\t\t\t\t\treturn true;\n\t\t\t\t} catch {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t})\n\n\t);\n}\n",
88
+ "const redirectStatus = new Set([301, 302, 303, 307, 308]);\n\n/**\n * Redirect code matching\n *\n * @param {number} code - Status code\n * @return {boolean}\n */\nexport const isRedirect = code => {\n\treturn redirectStatus.has(code);\n};\n",
89
+ "/**\n * Response.js\n *\n * Response class provides content decoding\n */\n\nimport Headers from './headers.js';\nimport Body, {clone, extractContentType} from './body.js';\nimport {isRedirect} from './utils/is-redirect.js';\n\nconst INTERNALS = Symbol('Response internals');\n\n/**\n * Response class\n *\n * Ref: https://fetch.spec.whatwg.org/#response-class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nexport default class Response extends Body {\n\tconstructor(body = null, options = {}) {\n\t\tsuper(body, options);\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq, no-negated-condition\n\t\tconst status = options.status != null ? options.status : 200;\n\n\t\tconst headers = new Headers(options.headers);\n\n\t\tif (body !== null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body, this);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\ttype: 'default',\n\t\t\turl: options.url,\n\t\t\tstatus,\n\t\t\tstatusText: options.statusText || '',\n\t\t\theaders,\n\t\t\tcounter: options.counter,\n\t\t\thighWaterMark: options.highWaterMark\n\t\t};\n\t}\n\n\tget type() {\n\t\treturn this[INTERNALS].type;\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS].status;\n\t}\n\n\t/**\n\t * Convenience property representing if the request ended normally\n\t */\n\tget ok() {\n\t\treturn this[INTERNALS].status >= 200 && this[INTERNALS].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS].headers;\n\t}\n\n\tget highWaterMark() {\n\t\treturn this[INTERNALS].highWaterMark;\n\t}\n\n\t/**\n\t * Clone this response\n\t *\n\t * @return Response\n\t */\n\tclone() {\n\t\treturn new Response(clone(this, this.highWaterMark), {\n\t\t\ttype: this.type,\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected,\n\t\t\tsize: this.size,\n\t\t\thighWaterMark: this.highWaterMark\n\t\t});\n\t}\n\n\t/**\n\t * @param {string} url The URL that the new response is to originate from.\n\t * @param {number} status An optional status code for the response (e.g., 302.)\n\t * @returns {Response} A Response object.\n\t */\n\tstatic redirect(url, status = 302) {\n\t\tif (!isRedirect(status)) {\n\t\t\tthrow new RangeError('Failed to execute \"redirect\" on \"response\": Invalid status code');\n\t\t}\n\n\t\treturn new Response(null, {\n\t\t\theaders: {\n\t\t\t\tlocation: new URL(url).toString()\n\t\t\t},\n\t\t\tstatus\n\t\t});\n\t}\n\n\tstatic error() {\n\t\tconst response = new Response(null, {status: 0, statusText: ''});\n\t\tresponse[INTERNALS].type = 'error';\n\t\treturn response;\n\t}\n\n\tstatic json(data = undefined, init = {}) {\n\t\tconst body = JSON.stringify(data);\n\n\t\tif (body === undefined) {\n\t\t\tthrow new TypeError('data is not JSON serializable');\n\t\t}\n\n\t\tconst headers = new Headers(init && init.headers);\n\n\t\tif (!headers.has('content-type')) {\n\t\t\theaders.set('content-type', 'application/json');\n\t\t}\n\n\t\treturn new Response(body, {\n\t\t\t...init,\n\t\t\theaders\n\t\t});\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn 'Response';\n\t}\n}\n\nObject.defineProperties(Response.prototype, {\n\ttype: {enumerable: true},\n\turl: {enumerable: true},\n\tstatus: {enumerable: true},\n\tok: {enumerable: true},\n\tredirected: {enumerable: true},\n\tstatusText: {enumerable: true},\n\theaders: {enumerable: true},\n\tclone: {enumerable: true}\n});\n",
90
+ "export const getSearch = parsedURL => {\n\tif (parsedURL.search) {\n\t\treturn parsedURL.search;\n\t}\n\n\tconst lastOffset = parsedURL.href.length - 1;\n\tconst hash = parsedURL.hash || (parsedURL.href[lastOffset] === '#' ? '#' : '');\n\treturn parsedURL.href[lastOffset - hash.length] === '?' ? '?' : '';\n};\n",
91
+ "import {isIP} from 'node:net';\n\n/**\n * @external URL\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/URL|URL}\n */\n\n/**\n * @module utils/referrer\n * @private\n */\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#strip-url|Referrer Policy §8.4. Strip url for use as a referrer}\n * @param {string} URL\n * @param {boolean} [originOnly=false]\n */\nexport function stripURLForUseAsAReferrer(url, originOnly = false) {\n\t// 1. If url is null, return no referrer.\n\tif (url == null) { // eslint-disable-line no-eq-null, eqeqeq\n\t\treturn 'no-referrer';\n\t}\n\n\turl = new URL(url);\n\n\t// 2. If url's scheme is a local scheme, then return no referrer.\n\tif (/^(about|blob|data):$/.test(url.protocol)) {\n\t\treturn 'no-referrer';\n\t}\n\n\t// 3. Set url's username to the empty string.\n\turl.username = '';\n\n\t// 4. Set url's password to null.\n\t// Note: `null` appears to be a mistake as this actually results in the password being `\"null\"`.\n\turl.password = '';\n\n\t// 5. Set url's fragment to null.\n\t// Note: `null` appears to be a mistake as this actually results in the fragment being `\"#null\"`.\n\turl.hash = '';\n\n\t// 6. If the origin-only flag is true, then:\n\tif (originOnly) {\n\t\t// 6.1. Set url's path to null.\n\t\t// Note: `null` appears to be a mistake as this actually results in the path being `\"/null\"`.\n\t\turl.pathname = '';\n\n\t\t// 6.2. Set url's query to null.\n\t\t// Note: `null` appears to be a mistake as this actually results in the query being `\"?null\"`.\n\t\turl.search = '';\n\t}\n\n\t// 7. Return url.\n\treturn url;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#enumdef-referrerpolicy|enum ReferrerPolicy}\n */\nexport const ReferrerPolicy = new Set([\n\t'',\n\t'no-referrer',\n\t'no-referrer-when-downgrade',\n\t'same-origin',\n\t'origin',\n\t'strict-origin',\n\t'origin-when-cross-origin',\n\t'strict-origin-when-cross-origin',\n\t'unsafe-url'\n]);\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#default-referrer-policy|default referrer policy}\n */\nexport const DEFAULT_REFERRER_POLICY = 'strict-origin-when-cross-origin';\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#referrer-policies|Referrer Policy §3. Referrer Policies}\n * @param {string} referrerPolicy\n * @returns {string} referrerPolicy\n */\nexport function validateReferrerPolicy(referrerPolicy) {\n\tif (!ReferrerPolicy.has(referrerPolicy)) {\n\t\tthrow new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`);\n\t}\n\n\treturn referrerPolicy;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy|Referrer Policy §3.2. Is origin potentially trustworthy?}\n * @param {external:URL} url\n * @returns `true`: \"Potentially Trustworthy\", `false`: \"Not Trustworthy\"\n */\nexport function isOriginPotentiallyTrustworthy(url) {\n\t// 1. If origin is an opaque origin, return \"Not Trustworthy\".\n\t// Not applicable\n\n\t// 2. Assert: origin is a tuple origin.\n\t// Not for implementations\n\n\t// 3. If origin's scheme is either \"https\" or \"wss\", return \"Potentially Trustworthy\".\n\tif (/^(http|ws)s:$/.test(url.protocol)) {\n\t\treturn true;\n\t}\n\n\t// 4. If origin's host component matches one of the CIDR notations 127.0.0.0/8 or ::1/128 [RFC4632], return \"Potentially Trustworthy\".\n\tconst hostIp = url.host.replace(/(^\\[)|(]$)/g, '');\n\tconst hostIPVersion = isIP(hostIp);\n\n\tif (hostIPVersion === 4 && /^127\\./.test(hostIp)) {\n\t\treturn true;\n\t}\n\n\tif (hostIPVersion === 6 && /^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)) {\n\t\treturn true;\n\t}\n\n\t// 5. If origin's host component is \"localhost\" or falls within \".localhost\", and the user agent conforms to the name resolution rules in [let-localhost-be-localhost], return \"Potentially Trustworthy\".\n\t// We are returning FALSE here because we cannot ensure conformance to\n\t// let-localhost-be-loalhost (https://tools.ietf.org/html/draft-west-let-localhost-be-localhost)\n\tif (url.host === 'localhost' || url.host.endsWith('.localhost')) {\n\t\treturn false;\n\t}\n\n\t// 6. If origin's scheme component is file, return \"Potentially Trustworthy\".\n\tif (url.protocol === 'file:') {\n\t\treturn true;\n\t}\n\n\t// 7. If origin's scheme component is one which the user agent considers to be authenticated, return \"Potentially Trustworthy\".\n\t// Not supported\n\n\t// 8. If origin has been configured as a trustworthy origin, return \"Potentially Trustworthy\".\n\t// Not supported\n\n\t// 9. Return \"Not Trustworthy\".\n\treturn false;\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-secure-contexts/#is-url-trustworthy|Referrer Policy §3.3. Is url potentially trustworthy?}\n * @param {external:URL} url\n * @returns `true`: \"Potentially Trustworthy\", `false`: \"Not Trustworthy\"\n */\nexport function isUrlPotentiallyTrustworthy(url) {\n\t// 1. If url is \"about:blank\" or \"about:srcdoc\", return \"Potentially Trustworthy\".\n\tif (/^about:(blank|srcdoc)$/.test(url)) {\n\t\treturn true;\n\t}\n\n\t// 2. If url's scheme is \"data\", return \"Potentially Trustworthy\".\n\tif (url.protocol === 'data:') {\n\t\treturn true;\n\t}\n\n\t// Note: The origin of blob: and filesystem: URLs is the origin of the context in which they were\n\t// created. Therefore, blobs created in a trustworthy origin will themselves be potentially\n\t// trustworthy.\n\tif (/^(blob|filesystem):$/.test(url.protocol)) {\n\t\treturn true;\n\t}\n\n\t// 3. Return the result of executing §3.2 Is origin potentially trustworthy? on url's origin.\n\treturn isOriginPotentiallyTrustworthy(url);\n}\n\n/**\n * Modifies the referrerURL to enforce any extra security policy considerations.\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}, step 7\n * @callback module:utils/referrer~referrerURLCallback\n * @param {external:URL} referrerURL\n * @returns {external:URL} modified referrerURL\n */\n\n/**\n * Modifies the referrerOrigin to enforce any extra security policy considerations.\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}, step 7\n * @callback module:utils/referrer~referrerOriginCallback\n * @param {external:URL} referrerOrigin\n * @returns {external:URL} modified referrerOrigin\n */\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer|Referrer Policy §8.3. Determine request's Referrer}\n * @param {Request} request\n * @param {object} o\n * @param {module:utils/referrer~referrerURLCallback} o.referrerURLCallback\n * @param {module:utils/referrer~referrerOriginCallback} o.referrerOriginCallback\n * @returns {external:URL} Request's referrer\n */\nexport function determineRequestsReferrer(request, {referrerURLCallback, referrerOriginCallback} = {}) {\n\t// There are 2 notes in the specification about invalid pre-conditions. We return null, here, for\n\t// these cases:\n\t// > Note: If request's referrer is \"no-referrer\", Fetch will not call into this algorithm.\n\t// > Note: If request's referrer policy is the empty string, Fetch will not call into this\n\t// > algorithm.\n\tif (request.referrer === 'no-referrer' || request.referrerPolicy === '') {\n\t\treturn null;\n\t}\n\n\t// 1. Let policy be request's associated referrer policy.\n\tconst policy = request.referrerPolicy;\n\n\t// 2. Let environment be request's client.\n\t// not applicable to node.js\n\n\t// 3. Switch on request's referrer:\n\tif (request.referrer === 'about:client') {\n\t\treturn 'no-referrer';\n\t}\n\n\t// \"a URL\": Let referrerSource be request's referrer.\n\tconst referrerSource = request.referrer;\n\n\t// 4. Let request's referrerURL be the result of stripping referrerSource for use as a referrer.\n\tlet referrerURL = stripURLForUseAsAReferrer(referrerSource);\n\n\t// 5. Let referrerOrigin be the result of stripping referrerSource for use as a referrer, with the\n\t// origin-only flag set to true.\n\tlet referrerOrigin = stripURLForUseAsAReferrer(referrerSource, true);\n\n\t// 6. If the result of serializing referrerURL is a string whose length is greater than 4096, set\n\t// referrerURL to referrerOrigin.\n\tif (referrerURL.toString().length > 4096) {\n\t\treferrerURL = referrerOrigin;\n\t}\n\n\t// 7. The user agent MAY alter referrerURL or referrerOrigin at this point to enforce arbitrary\n\t// policy considerations in the interests of minimizing data leakage. For example, the user\n\t// agent could strip the URL down to an origin, modify its host, replace it with an empty\n\t// string, etc.\n\tif (referrerURLCallback) {\n\t\treferrerURL = referrerURLCallback(referrerURL);\n\t}\n\n\tif (referrerOriginCallback) {\n\t\treferrerOrigin = referrerOriginCallback(referrerOrigin);\n\t}\n\n\t// 8.Execute the statements corresponding to the value of policy:\n\tconst currentURL = new URL(request.url);\n\n\tswitch (policy) {\n\t\tcase 'no-referrer':\n\t\t\treturn 'no-referrer';\n\n\t\tcase 'origin':\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'unsafe-url':\n\t\t\treturn referrerURL;\n\n\t\tcase 'strict-origin':\n\t\t\t// 1. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t// potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 2. Return referrerOrigin.\n\t\t\treturn referrerOrigin.toString();\n\n\t\tcase 'strict-origin-when-cross-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t// return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// 2. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t// potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 3. Return referrerOrigin.\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'same-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t// return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// 2. Return no referrer.\n\t\t\treturn 'no-referrer';\n\n\t\tcase 'origin-when-cross-origin':\n\t\t\t// 1. If the origin of referrerURL and the origin of request's current URL are the same, then\n\t\t\t// return referrerURL.\n\t\t\tif (referrerURL.origin === currentURL.origin) {\n\t\t\t\treturn referrerURL;\n\t\t\t}\n\n\t\t\t// Return referrerOrigin.\n\t\t\treturn referrerOrigin;\n\n\t\tcase 'no-referrer-when-downgrade':\n\t\t\t// 1. If referrerURL is a potentially trustworthy URL and request's current URL is not a\n\t\t\t// potentially trustworthy URL, then return no referrer.\n\t\t\tif (isUrlPotentiallyTrustworthy(referrerURL) && !isUrlPotentiallyTrustworthy(currentURL)) {\n\t\t\t\treturn 'no-referrer';\n\t\t\t}\n\n\t\t\t// 2. Return referrerURL.\n\t\t\treturn referrerURL;\n\n\t\tdefault:\n\t\t\tthrow new TypeError(`Invalid referrerPolicy: ${policy}`);\n\t}\n}\n\n/**\n * @see {@link https://w3c.github.io/webappsec-referrer-policy/#parse-referrer-policy-from-header|Referrer Policy §8.1. Parse a referrer policy from a Referrer-Policy header}\n * @param {Headers} headers Response headers\n * @returns {string} policy\n */\nexport function parseReferrerPolicyFromHeader(headers) {\n\t// 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy`\n\t// and response’s header list.\n\tconst policyTokens = (headers.get('referrer-policy') || '').split(/[,\\s]+/);\n\n\t// 2. Let policy be the empty string.\n\tlet policy = '';\n\n\t// 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty\n\t// string, then set policy to token.\n\t// Note: This algorithm loops over multiple policy values to allow deployment of new policy\n\t// values with fallbacks for older user agents, as described in § 11.1 Unknown Policy Values.\n\tfor (const token of policyTokens) {\n\t\tif (token && ReferrerPolicy.has(token)) {\n\t\t\tpolicy = token;\n\t\t}\n\t}\n\n\t// 4. Return policy.\n\treturn policy;\n}\n",
92
+ "/**\n * Request.js\n *\n * Request class contains server only options\n *\n * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/.\n */\n\nimport {format as formatUrl} from 'node:url';\nimport {deprecate} from 'node:util';\nimport Headers from './headers.js';\nimport Body, {clone, extractContentType, getTotalBytes} from './body.js';\nimport {isAbortSignal} from './utils/is.js';\nimport {getSearch} from './utils/get-search.js';\nimport {\n\tvalidateReferrerPolicy, determineRequestsReferrer, DEFAULT_REFERRER_POLICY\n} from './utils/referrer.js';\n\nconst INTERNALS = Symbol('Request internals');\n\n/**\n * Check if `obj` is an instance of Request.\n *\n * @param {*} object\n * @return {boolean}\n */\nconst isRequest = object => {\n\treturn (\n\t\ttypeof object === 'object' &&\n\t\ttypeof object[INTERNALS] === 'object'\n\t);\n};\n\nconst doBadDataWarn = deprecate(() => {},\n\t'.data is not a valid RequestInit property, use .body instead',\n\t'https://github.com/node-fetch/node-fetch/issues/1000 (request)');\n\n/**\n * Request class\n *\n * Ref: https://fetch.spec.whatwg.org/#request-class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nexport default class Request extends Body {\n\tconstructor(input, init = {}) {\n\t\tlet parsedURL;\n\n\t\t// Normalize input and force URL to be encoded as UTF-8 (https://github.com/node-fetch/node-fetch/issues/245)\n\t\tif (isRequest(input)) {\n\t\t\tparsedURL = new URL(input.url);\n\t\t} else {\n\t\t\tparsedURL = new URL(input);\n\t\t\tinput = {};\n\t\t}\n\n\t\tif (parsedURL.username !== '' || parsedURL.password !== '') {\n\t\t\tthrow new TypeError(`${parsedURL} is an url with embedded credentials.`);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tif (/^(delete|get|head|options|post|put)$/i.test(method)) {\n\t\t\tmethod = method.toUpperCase();\n\t\t}\n\n\t\tif (!isRequest(init) && 'data' in init) {\n\t\t\tdoBadDataWarn();\n\t\t}\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tif ((init.body != null || (isRequest(input) && input.body !== null)) &&\n\t\t\t(method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tconst inputBody = init.body ?\n\t\t\tinit.body :\n\t\t\t(isRequest(input) && input.body !== null ?\n\t\t\t\tclone(input) :\n\t\t\t\tnull);\n\n\t\tsuper(inputBody, {\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody !== null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody, this);\n\t\t\tif (contentType) {\n\t\t\t\theaders.set('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ?\n\t\t\tinput.signal :\n\t\t\tnull;\n\t\tif ('signal' in init) {\n\t\t\tsignal = init.signal;\n\t\t}\n\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal or EventTarget');\n\t\t}\n\n\t\t// §5.4, Request constructor steps, step 15.1\n\t\t// eslint-disable-next-line no-eq-null, eqeqeq\n\t\tlet referrer = init.referrer == null ? input.referrer : init.referrer;\n\t\tif (referrer === '') {\n\t\t\t// §5.4, Request constructor steps, step 15.2\n\t\t\treferrer = 'no-referrer';\n\t\t} else if (referrer) {\n\t\t\t// §5.4, Request constructor steps, step 15.3.1, 15.3.2\n\t\t\tconst parsedReferrer = new URL(referrer);\n\t\t\t// §5.4, Request constructor steps, step 15.3.3, 15.3.4\n\t\t\treferrer = /^about:(\\/\\/)?client$/.test(parsedReferrer) ? 'client' : parsedReferrer;\n\t\t} else {\n\t\t\treferrer = undefined;\n\t\t}\n\n\t\tthis[INTERNALS] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal,\n\t\t\treferrer\n\t\t};\n\n\t\t// Node-fetch-only options\n\t\tthis.follow = init.follow === undefined ? (input.follow === undefined ? 20 : input.follow) : init.follow;\n\t\tthis.compress = init.compress === undefined ? (input.compress === undefined ? true : input.compress) : init.compress;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t\tthis.highWaterMark = init.highWaterMark || input.highWaterMark || 16384;\n\t\tthis.insecureHTTPParser = init.insecureHTTPParser || input.insecureHTTPParser || false;\n\n\t\t// §5.4, Request constructor steps, step 16.\n\t\t// Default is empty string per https://fetch.spec.whatwg.org/#concept-request-referrer-policy\n\t\tthis.referrerPolicy = init.referrerPolicy || input.referrerPolicy || '';\n\t}\n\n\t/** @returns {string} */\n\tget method() {\n\t\treturn this[INTERNALS].method;\n\t}\n\n\t/** @returns {string} */\n\tget url() {\n\t\treturn formatUrl(this[INTERNALS].parsedURL);\n\t}\n\n\t/** @returns {Headers} */\n\tget headers() {\n\t\treturn this[INTERNALS].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS].redirect;\n\t}\n\n\t/** @returns {AbortSignal} */\n\tget signal() {\n\t\treturn this[INTERNALS].signal;\n\t}\n\n\t// https://fetch.spec.whatwg.org/#dom-request-referrer\n\tget referrer() {\n\t\tif (this[INTERNALS].referrer === 'no-referrer') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (this[INTERNALS].referrer === 'client') {\n\t\t\treturn 'about:client';\n\t\t}\n\n\t\tif (this[INTERNALS].referrer) {\n\t\t\treturn this[INTERNALS].referrer.toString();\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tget referrerPolicy() {\n\t\treturn this[INTERNALS].referrerPolicy;\n\t}\n\n\tset referrerPolicy(referrerPolicy) {\n\t\tthis[INTERNALS].referrerPolicy = validateReferrerPolicy(referrerPolicy);\n\t}\n\n\t/**\n\t * Clone this request\n\t *\n\t * @return Request\n\t */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn 'Request';\n\t}\n}\n\nObject.defineProperties(Request.prototype, {\n\tmethod: {enumerable: true},\n\turl: {enumerable: true},\n\theaders: {enumerable: true},\n\tredirect: {enumerable: true},\n\tclone: {enumerable: true},\n\tsignal: {enumerable: true},\n\treferrer: {enumerable: true},\n\treferrerPolicy: {enumerable: true}\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param {Request} request - A Request instance\n * @return The options object to be passed to http.request\n */\nexport const getNodeRequestOptions = request => {\n\tconst {parsedURL} = request[INTERNALS];\n\tconst headers = new Headers(request[INTERNALS].headers);\n\n\t// Fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body === null && /^(post|put)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\n\tif (request.body !== null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\t// Set Content-Length if totalBytes is a number (that is not NaN)\n\t\tif (typeof totalBytes === 'number' && !Number.isNaN(totalBytes)) {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// 4.1. Main fetch, step 2.6\n\t// > If request's referrer policy is the empty string, then set request's referrer policy to the\n\t// > default referrer policy.\n\tif (request.referrerPolicy === '') {\n\t\trequest.referrerPolicy = DEFAULT_REFERRER_POLICY;\n\t}\n\n\t// 4.1. Main fetch, step 2.7\n\t// > If request's referrer is not \"no-referrer\", set request's referrer to the result of invoking\n\t// > determine request's referrer.\n\tif (request.referrer && request.referrer !== 'no-referrer') {\n\t\trequest[INTERNALS].referrer = determineRequestsReferrer(request);\n\t} else {\n\t\trequest[INTERNALS].referrer = 'no-referrer';\n\t}\n\n\t// 4.5. HTTP-network-or-cache fetch, step 6.9\n\t// > If httpRequest's referrer is a URL, then append `Referer`/httpRequest's referrer, serialized\n\t// > and isomorphic encoded, to httpRequest's header list.\n\tif (request[INTERNALS].referrer instanceof URL) {\n\t\theaders.set('Referer', request.referrer);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip, deflate, br');\n\t}\n\n\tlet {agent} = request;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\tconst search = getSearch(parsedURL);\n\n\t// Pass the full URL directly to request(), but overwrite the following\n\t// options:\n\tconst options = {\n\t\t// Overwrite search to retain trailing ? (issue #776)\n\t\tpath: parsedURL.pathname + search,\n\t\t// The following options are not expressed in the URL\n\t\tmethod: request.method,\n\t\theaders: headers[Symbol.for('nodejs.util.inspect.custom')](),\n\t\tinsecureHTTPParser: request.insecureHTTPParser,\n\t\tagent\n\t};\n\n\treturn {\n\t\t/** @type {URL} */\n\t\tparsedURL,\n\t\toptions\n\t};\n};\n",
93
+ "import {FetchBaseError} from './base.js';\n\n/**\n * AbortError interface for cancelled requests\n */\nexport class AbortError extends FetchBaseError {\n\tconstructor(message, type = 'aborted') {\n\t\tsuper(message, type);\n\t}\n}\n",
94
+ "/**\n * Index.js\n *\n * a request API compatible with window.fetch\n *\n * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/.\n */\n\nimport http from 'node:http';\nimport https from 'node:https';\nimport zlib from 'node:zlib';\nimport Stream, {PassThrough, pipeline as pump} from 'node:stream';\nimport {Buffer} from 'node:buffer';\n\nimport dataUriToBuffer from 'data-uri-to-buffer';\n\nimport {writeToStream, clone} from './body.js';\nimport Response from './response.js';\nimport Headers, {fromRawHeaders} from './headers.js';\nimport Request, {getNodeRequestOptions} from './request.js';\nimport {FetchError} from './errors/fetch-error.js';\nimport {AbortError} from './errors/abort-error.js';\nimport {isRedirect} from './utils/is-redirect.js';\nimport {FormData} from 'formdata-polyfill/esm.min.js';\nimport {isDomainOrSubdomain, isSameProtocol} from './utils/is.js';\nimport {parseReferrerPolicyFromHeader} from './utils/referrer.js';\nimport {\n\tBlob,\n\tFile,\n\tfileFromSync,\n\tfileFrom,\n\tblobFromSync,\n\tblobFrom\n} from 'fetch-blob/from.js';\n\nexport {FormData, Headers, Request, Response, FetchError, AbortError, isRedirect};\nexport {Blob, File, fileFromSync, fileFrom, blobFromSync, blobFrom};\n\nconst supportedSchemas = new Set(['data:', 'http:', 'https:']);\n\n/**\n * Fetch function\n *\n * @param {string | URL | import('./request').default} url - Absolute url or Request instance\n * @param {*} [options_] - Fetch options\n * @return {Promise<import('./response').default>}\n */\nexport default async function fetch(url, options_) {\n\treturn new Promise((resolve, reject) => {\n\t\t// Build request object\n\t\tconst request = new Request(url, options_);\n\t\tconst {parsedURL, options} = getNodeRequestOptions(request);\n\t\tif (!supportedSchemas.has(parsedURL.protocol)) {\n\t\t\tthrow new TypeError(`node-fetch cannot load ${url}. URL scheme \"${parsedURL.protocol.replace(/:$/, '')}\" is not supported.`);\n\t\t}\n\n\t\tif (parsedURL.protocol === 'data:') {\n\t\t\tconst data = dataUriToBuffer(request.url);\n\t\t\tconst response = new Response(data, {headers: {'Content-Type': data.typeFull}});\n\t\t\tresolve(response);\n\t\t\treturn;\n\t\t}\n\n\t\t// Wrap http.request into fetch\n\t\tconst send = (parsedURL.protocol === 'https:' ? https : http).request;\n\t\tconst {signal} = request;\n\t\tlet response = null;\n\n\t\tconst abort = () => {\n\t\t\tconst error = new AbortError('The operation was aborted.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\n\t\t\tif (!response || !response.body) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = () => {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// Send request\n\t\tconst request_ = send(parsedURL.toString(), options);\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tconst finalize = () => {\n\t\t\trequest_.abort();\n\t\t\tif (signal) {\n\t\t\t\tsignal.removeEventListener('abort', abortAndFinalize);\n\t\t\t}\n\t\t};\n\n\t\trequest_.on('error', error => {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${error.message}`, 'system', error));\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(request_, error => {\n\t\t\tif (response && response.body) {\n\t\t\t\tresponse.body.destroy(error);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (process.version < 'v14') {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\trequest_.on('socket', s => {\n\t\t\t\tlet endedWithEventsCount;\n\t\t\t\ts.prependListener('end', () => {\n\t\t\t\t\tendedWithEventsCount = s._eventsCount;\n\t\t\t\t});\n\t\t\t\ts.prependListener('close', hadError => {\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && endedWithEventsCount < s._eventsCount && !hadError) {\n\t\t\t\t\t\tconst error = new Error('Premature close');\n\t\t\t\t\t\terror.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\trequest_.on('response', response_ => {\n\t\t\trequest_.setTimeout(0);\n\t\t\tconst headers = fromRawHeaders(response_.rawHeaders);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (isRedirect(response_.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL(location, request.url);\n\t\t\t\t} catch {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// Nothing to do\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow': {\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOptions = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: clone(request),\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\tsize: request.size,\n\t\t\t\t\t\t\treferrer: request.referrer,\n\t\t\t\t\t\t\treferrerPolicy: request.referrerPolicy\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// when forwarding sensitive headers like \"Authorization\",\n\t\t\t\t\t\t// \"WWW-Authenticate\", and \"Cookie\" to untrusted targets,\n\t\t\t\t\t\t// headers will be ignored when following a redirect to a domain\n\t\t\t\t\t\t// that is not a subdomain match or exact match of the initial domain.\n\t\t\t\t\t\t// For example, a redirect from \"foo.com\" to either \"foo.com\" or \"sub.foo.com\"\n\t\t\t\t\t\t// will forward the sensitive headers, but a redirect to \"bar.com\" will not.\n\t\t\t\t\t\t// headers will also be ignored when following a redirect to a domain using\n\t\t\t\t\t\t// a different protocol. For example, a redirect from \"https://foo.com\" to \"http://foo.com\"\n\t\t\t\t\t\t// will not forward the sensitive headers\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOptions.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (response_.statusCode !== 303 && request.body && options_.body instanceof Stream.Readable) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (response_.statusCode === 303 || ((response_.statusCode === 301 || response_.statusCode === 302) && request.method === 'POST')) {\n\t\t\t\t\t\t\trequestOptions.method = 'GET';\n\t\t\t\t\t\t\trequestOptions.body = undefined;\n\t\t\t\t\t\t\trequestOptions.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 14\n\t\t\t\t\t\tconst responseReferrerPolicy = parseReferrerPolicyFromHeader(headers);\n\t\t\t\t\t\tif (responseReferrerPolicy) {\n\t\t\t\t\t\t\trequestOptions.referrerPolicy = responseReferrerPolicy;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOptions)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn reject(new TypeError(`Redirect option '${request.redirect}' is not a valid value of RequestRedirect`));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Prepare response\n\t\t\tif (signal) {\n\t\t\t\tresponse_.once('end', () => {\n\t\t\t\t\tsignal.removeEventListener('abort', abortAndFinalize);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet body = pump(response_, new PassThrough(), error => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t});\n\t\t\t// see https://github.com/nodejs/node/pull/29376\n\t\t\t/* c8 ignore next 3 */\n\t\t\tif (process.version < 'v12.10') {\n\t\t\t\tresponse_.on('aborted', abortAndFinalize);\n\t\t\t}\n\n\t\t\tconst responseOptions = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: response_.statusCode,\n\t\t\t\tstatusText: response_.statusMessage,\n\t\t\t\theaders,\n\t\t\t\tsize: request.size,\n\t\t\t\tcounter: request.counter,\n\t\t\t\thighWaterMark: request.highWaterMark\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || response_.statusCode === 204 || response_.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// For gzip\n\t\t\tif (codings === 'gzip' || codings === 'x-gzip') {\n\t\t\t\tbody = pump(body, zlib.createGunzip(zlibOptions), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For deflate\n\t\t\tif (codings === 'deflate' || codings === 'x-deflate') {\n\t\t\t\t// Handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = pump(response_, new PassThrough(), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\traw.once('data', chunk => {\n\t\t\t\t\t// See http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = pump(body, zlib.createInflate(), error => {\n\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = pump(body, zlib.createInflateRaw(), error => {\n\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.once('end', () => {\n\t\t\t\t\t// Some old IIS servers return zero-length OK deflate responses, so\n\t\t\t\t\t// 'data' is never emitted. See https://github.com/node-fetch/node-fetch/pull/903\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For br\n\t\t\tif (codings === 'br') {\n\t\t\t\tbody = pump(body, zlib.createBrotliDecompress(), error => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresponse = new Response(body, responseOptions);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Otherwise, use response as-is\n\t\t\tresponse = new Response(body, responseOptions);\n\t\t\tresolve(response);\n\t\t});\n\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\twriteToStream(request_, request).catch(reject);\n\t});\n}\n\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tconst LAST_CHUNK = Buffer.from('0\\r\\n\\r\\n');\n\n\tlet isChunkedTransfer = false;\n\tlet properLastChunkReceived = false;\n\tlet previousChunk;\n\n\trequest.on('response', response => {\n\t\tconst {headers} = response;\n\t\tisChunkedTransfer = headers['transfer-encoding'] === 'chunked' && !headers['content-length'];\n\t});\n\n\trequest.on('socket', socket => {\n\t\tconst onSocketClose = () => {\n\t\t\tif (isChunkedTransfer && !properLastChunkReceived) {\n\t\t\t\tconst error = new Error('Premature close');\n\t\t\t\terror.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\terrorCallback(error);\n\t\t\t}\n\t\t};\n\n\t\tconst onData = buf => {\n\t\t\tproperLastChunkReceived = Buffer.compare(buf.slice(-5), LAST_CHUNK) === 0;\n\n\t\t\t// Sometimes final 0-length chunk and end of message code are in separate packets\n\t\t\tif (!properLastChunkReceived && previousChunk) {\n\t\t\t\tproperLastChunkReceived = (\n\t\t\t\t\tBuffer.compare(previousChunk.slice(-3), LAST_CHUNK.slice(0, 3)) === 0 &&\n\t\t\t\t\tBuffer.compare(buf.slice(-2), LAST_CHUNK.slice(3)) === 0\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tpreviousChunk = buf;\n\t\t};\n\n\t\tsocket.prependListener('close', onSocketClose);\n\t\tsocket.on('data', onData);\n\n\t\trequest.on('close', () => {\n\t\t\tsocket.removeListener('close', onSocketClose);\n\t\t\tsocket.removeListener('data', onData);\n\t\t});\n\t});\n}\n",
95
+ "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",
96
+ "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 fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].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",
97
+ "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 === \"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",
98
+ "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",
99
+ "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",
100
+ "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",
101
+ "var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nimport { 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.!#$%&’*+/=?^_`{|}~-]+@[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 // 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 constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\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 (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").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}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\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 (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").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}\n_ZodNativeEnum_cache = new WeakMap();\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 base;\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 base;\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",
102
+ "import { z } from 'zod';\nexport const LATEST_PROTOCOL_VERSION = '2025-06-18';\nexport const DEFAULT_NEGOTIATED_PROTOCOL_VERSION = '2025-03-26';\nexport const SUPPORTED_PROTOCOL_VERSIONS = [LATEST_PROTOCOL_VERSION, '2025-03-26', '2024-11-05', '2024-10-07'];\n/* JSON-RPC types */\nexport const JSONRPC_VERSION = '2.0';\n/**\n * Assert 'object' type schema.\n *\n * @internal\n */\nconst AssertObjectSchema = z.custom((v) => v !== null && (typeof v === 'object' || typeof v === 'function'));\n/**\n * A progress token, used to associate progress notifications with the original request.\n */\nexport const ProgressTokenSchema = z.union([z.string(), z.number().int()]);\n/**\n * An opaque token used to represent a cursor for pagination.\n */\nexport const CursorSchema = z.string();\nconst RequestMetaSchema = z\n .object({\n /**\n * If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.\n */\n progressToken: ProgressTokenSchema.optional()\n})\n /**\n * Passthrough required here because we want to allow any additional fields to be added to the request meta.\n */\n .passthrough();\n/**\n * Common params for any request.\n */\nconst BaseRequestParamsSchema = z.object({\n /**\n * See [General fields: `_meta`](/specification/draft/basic/index#meta) for notes on `_meta` usage.\n */\n _meta: RequestMetaSchema.optional()\n});\nexport const RequestSchema = z.object({\n method: z.string(),\n params: BaseRequestParamsSchema.passthrough().optional()\n});\nconst NotificationsParamsSchema = z.object({\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.record(z.string(), z.unknown()).optional()\n});\nexport const NotificationSchema = z.object({\n method: z.string(),\n params: NotificationsParamsSchema.passthrough().optional()\n});\nexport const ResultSchema = z\n .object({\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.record(z.string(), z.unknown()).optional()\n})\n /**\n * Passthrough required here because we want to allow any additional fields to be added to the result.\n */\n .passthrough();\n/**\n * A uniquely identifying ID for a request in JSON-RPC.\n */\nexport const RequestIdSchema = z.union([z.string(), z.number().int()]);\n/**\n * A request that expects a response.\n */\nexport const JSONRPCRequestSchema = z\n .object({\n jsonrpc: z.literal(JSONRPC_VERSION),\n id: RequestIdSchema\n})\n .merge(RequestSchema)\n .strict();\nexport const isJSONRPCRequest = (value) => JSONRPCRequestSchema.safeParse(value).success;\n/**\n * A notification which does not expect a response.\n */\nexport const JSONRPCNotificationSchema = z\n .object({\n jsonrpc: z.literal(JSONRPC_VERSION)\n})\n .merge(NotificationSchema)\n .strict();\nexport const isJSONRPCNotification = (value) => JSONRPCNotificationSchema.safeParse(value).success;\n/**\n * A successful (non-error) response to a request.\n */\nexport const JSONRPCResponseSchema = z\n .object({\n jsonrpc: z.literal(JSONRPC_VERSION),\n id: RequestIdSchema,\n result: ResultSchema\n})\n .strict();\nexport const isJSONRPCResponse = (value) => JSONRPCResponseSchema.safeParse(value).success;\n/**\n * Error codes defined by the JSON-RPC specification.\n */\nexport var ErrorCode;\n(function (ErrorCode) {\n // SDK error codes\n ErrorCode[ErrorCode[\"ConnectionClosed\"] = -32000] = \"ConnectionClosed\";\n ErrorCode[ErrorCode[\"RequestTimeout\"] = -32001] = \"RequestTimeout\";\n // Standard JSON-RPC error codes\n ErrorCode[ErrorCode[\"ParseError\"] = -32700] = \"ParseError\";\n ErrorCode[ErrorCode[\"InvalidRequest\"] = -32600] = \"InvalidRequest\";\n ErrorCode[ErrorCode[\"MethodNotFound\"] = -32601] = \"MethodNotFound\";\n ErrorCode[ErrorCode[\"InvalidParams\"] = -32602] = \"InvalidParams\";\n ErrorCode[ErrorCode[\"InternalError\"] = -32603] = \"InternalError\";\n})(ErrorCode || (ErrorCode = {}));\n/**\n * A response to a request that indicates an error occurred.\n */\nexport const JSONRPCErrorSchema = z\n .object({\n jsonrpc: z.literal(JSONRPC_VERSION),\n id: RequestIdSchema,\n error: z.object({\n /**\n * The error type that occurred.\n */\n code: z.number().int(),\n /**\n * A short description of the error. The message SHOULD be limited to a concise single sentence.\n */\n message: z.string(),\n /**\n * Additional information about the error. The value of this member is defined by the sender (e.g. detailed error information, nested errors etc.).\n */\n data: z.optional(z.unknown())\n })\n})\n .strict();\nexport const isJSONRPCError = (value) => JSONRPCErrorSchema.safeParse(value).success;\nexport const JSONRPCMessageSchema = z.union([JSONRPCRequestSchema, JSONRPCNotificationSchema, JSONRPCResponseSchema, JSONRPCErrorSchema]);\n/* Empty result */\n/**\n * A response that indicates success but carries no data.\n */\nexport const EmptyResultSchema = ResultSchema.strict();\nexport const CancelledNotificationParamsSchema = NotificationsParamsSchema.extend({\n /**\n * The ID of the request to cancel.\n *\n * This MUST correspond to the ID of a request previously issued in the same direction.\n */\n requestId: RequestIdSchema,\n /**\n * An optional string describing the reason for the cancellation. This MAY be logged or presented to the user.\n */\n reason: z.string().optional()\n});\n/* Cancellation */\n/**\n * This notification can be sent by either side to indicate that it is cancelling a previously-issued request.\n *\n * The request SHOULD still be in-flight, but due to communication latency, it is always possible that this notification MAY arrive after the request has already finished.\n *\n * This notification indicates that the result will be unused, so any associated processing SHOULD cease.\n *\n * A client MUST NOT attempt to cancel its `initialize` request.\n */\nexport const CancelledNotificationSchema = NotificationSchema.extend({\n method: z.literal('notifications/cancelled'),\n params: CancelledNotificationParamsSchema\n});\n/* Base Metadata */\n/**\n * Icon schema for use in tools, prompts, resources, and implementations.\n */\nexport const IconSchema = z.object({\n /**\n * URL or data URI for the icon.\n */\n src: z.string(),\n /**\n * Optional MIME type for the icon.\n */\n mimeType: z.string().optional(),\n /**\n * Optional array of strings that specify sizes at which the icon can be used.\n * Each string should be in WxH format (e.g., `\"48x48\"`, `\"96x96\"`) or `\"any\"` for scalable formats like SVG.\n *\n * If not provided, the client should assume that the icon can be used at any size.\n */\n sizes: z.array(z.string()).optional()\n});\n/**\n * Base schema to add `icons` property.\n *\n */\nexport const IconsSchema = z.object({\n /**\n * Optional set of sized icons that the client can display in a user interface.\n *\n * Clients that support rendering icons MUST support at least the following MIME types:\n * - `image/png` - PNG images (safe, universal compatibility)\n * - `image/jpeg` (and `image/jpg`) - JPEG images (safe, universal compatibility)\n *\n * Clients that support rendering icons SHOULD also support:\n * - `image/svg+xml` - SVG images (scalable but requires security precautions)\n * - `image/webp` - WebP images (modern, efficient format)\n */\n icons: z.array(IconSchema).optional()\n});\n/**\n * Base metadata interface for common properties across resources, tools, prompts, and implementations.\n */\nexport const BaseMetadataSchema = z.object({\n /** Intended for programmatic or logical use, but used as a display name in past specs or fallback */\n name: z.string(),\n /**\n * Intended for UI and end-user contexts — optimized to be human-readable and easily understood,\n * even by those unfamiliar with domain-specific terminology.\n *\n * If not provided, the name should be used for display (except for Tool,\n * where `annotations.title` should be given precedence over using `name`,\n * if present).\n */\n title: z.string().optional()\n});\n/* Initialization */\n/**\n * Describes the name and version of an MCP implementation.\n */\nexport const ImplementationSchema = BaseMetadataSchema.extend({\n version: z.string(),\n /**\n * An optional URL of the website for this implementation.\n */\n websiteUrl: z.string().optional()\n}).merge(IconsSchema);\n/**\n * Capabilities a client may support. Known capabilities are defined here, in this schema, but this is not a closed set: any client can define its own, additional capabilities.\n */\nexport const ClientCapabilitiesSchema = z.object({\n /**\n * Experimental, non-standard capabilities that the client supports.\n */\n experimental: z.record(z.string(), AssertObjectSchema).optional(),\n /**\n * Present if the client supports sampling from an LLM.\n */\n sampling: AssertObjectSchema.optional(),\n /**\n * Present if the client supports eliciting user input.\n */\n elicitation: z.intersection(z\n .object({\n /**\n * Whether the client should apply defaults to the user input.\n */\n applyDefaults: z.boolean().optional()\n })\n .optional(), z.record(z.string(), z.unknown()).optional()),\n /**\n * Present if the client supports listing roots.\n */\n roots: z\n .object({\n /**\n * Whether the client supports issuing notifications for changes to the roots list.\n */\n listChanged: z.boolean().optional()\n })\n .optional()\n});\nexport const InitializeRequestParamsSchema = BaseRequestParamsSchema.extend({\n /**\n * The latest version of the Model Context Protocol that the client supports. The client MAY decide to support older versions as well.\n */\n protocolVersion: z.string(),\n capabilities: ClientCapabilitiesSchema,\n clientInfo: ImplementationSchema\n});\n/**\n * This request is sent from the client to the server when it first connects, asking it to begin initialization.\n */\nexport const InitializeRequestSchema = RequestSchema.extend({\n method: z.literal('initialize'),\n params: InitializeRequestParamsSchema\n});\nexport const isInitializeRequest = (value) => InitializeRequestSchema.safeParse(value).success;\n/**\n * Capabilities that a server may support. Known capabilities are defined here, in this schema, but this is not a closed set: any server can define its own, additional capabilities.\n */\nexport const ServerCapabilitiesSchema = z.object({\n /**\n * Experimental, non-standard capabilities that the server supports.\n */\n experimental: z.record(z.string(), AssertObjectSchema).optional(),\n /**\n * Present if the server supports sending log messages to the client.\n */\n logging: AssertObjectSchema.optional(),\n /**\n * Present if the server supports sending completions to the client.\n */\n completions: AssertObjectSchema.optional(),\n /**\n * Present if the server offers any prompt templates.\n */\n prompts: z.optional(z.object({\n /**\n * Whether this server supports issuing notifications for changes to the prompt list.\n */\n listChanged: z.optional(z.boolean())\n })),\n /**\n * Present if the server offers any resources to read.\n */\n resources: z\n .object({\n /**\n * Whether this server supports clients subscribing to resource updates.\n */\n subscribe: z.boolean().optional(),\n /**\n * Whether this server supports issuing notifications for changes to the resource list.\n */\n listChanged: z.boolean().optional()\n })\n .optional(),\n /**\n * Present if the server offers any tools to call.\n */\n tools: z\n .object({\n /**\n * Whether this server supports issuing notifications for changes to the tool list.\n */\n listChanged: z.boolean().optional()\n })\n .optional()\n});\n/**\n * After receiving an initialize request from the client, the server sends this response.\n */\nexport const InitializeResultSchema = ResultSchema.extend({\n /**\n * The version of the Model Context Protocol that the server wants to use. This may not match the version that the client requested. If the client cannot support this version, it MUST disconnect.\n */\n protocolVersion: z.string(),\n capabilities: ServerCapabilitiesSchema,\n serverInfo: ImplementationSchema,\n /**\n * Instructions describing how to use the server and its features.\n *\n * This can be used by clients to improve the LLM's understanding of available tools, resources, etc. It can be thought of like a \"hint\" to the model. For example, this information MAY be added to the system prompt.\n */\n instructions: z.string().optional()\n});\n/**\n * This notification is sent from the client to the server after initialization has finished.\n */\nexport const InitializedNotificationSchema = NotificationSchema.extend({\n method: z.literal('notifications/initialized')\n});\nexport const isInitializedNotification = (value) => InitializedNotificationSchema.safeParse(value).success;\n/* Ping */\n/**\n * A ping, issued by either the server or the client, to check that the other party is still alive. The receiver must promptly respond, or else may be disconnected.\n */\nexport const PingRequestSchema = RequestSchema.extend({\n method: z.literal('ping')\n});\n/* Progress notifications */\nexport const ProgressSchema = z.object({\n /**\n * The progress thus far. This should increase every time progress is made, even if the total is unknown.\n */\n progress: z.number(),\n /**\n * Total number of items to process (or total progress required), if known.\n */\n total: z.optional(z.number()),\n /**\n * An optional message describing the current progress.\n */\n message: z.optional(z.string())\n});\nexport const ProgressNotificationParamsSchema = NotificationsParamsSchema.merge(ProgressSchema).extend({\n /**\n * The progress token which was given in the initial request, used to associate this notification with the request that is proceeding.\n */\n progressToken: ProgressTokenSchema\n});\n/**\n * An out-of-band notification used to inform the receiver of a progress update for a long-running request.\n *\n * @category notifications/progress\n */\nexport const ProgressNotificationSchema = NotificationSchema.extend({\n method: z.literal('notifications/progress'),\n params: ProgressNotificationParamsSchema\n});\nexport const PaginatedRequestParamsSchema = BaseRequestParamsSchema.extend({\n /**\n * An opaque token representing the current pagination position.\n * If provided, the server should return results starting after this cursor.\n */\n cursor: CursorSchema.optional()\n});\n/* Pagination */\nexport const PaginatedRequestSchema = RequestSchema.extend({\n params: PaginatedRequestParamsSchema.optional()\n});\nexport const PaginatedResultSchema = ResultSchema.extend({\n /**\n * An opaque token representing the pagination position after the last returned result.\n * If present, there may be more results available.\n */\n nextCursor: z.optional(CursorSchema)\n});\n/* Resources */\n/**\n * The contents of a specific resource or sub-resource.\n */\nexport const ResourceContentsSchema = z.object({\n /**\n * The URI of this resource.\n */\n uri: z.string(),\n /**\n * The MIME type of this resource, if known.\n */\n mimeType: z.optional(z.string()),\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.record(z.string(), z.unknown()).optional()\n});\nexport const TextResourceContentsSchema = ResourceContentsSchema.extend({\n /**\n * The text of the item. This must only be set if the item can actually be represented as text (not binary data).\n */\n text: z.string()\n});\n/**\n * A Zod schema for validating Base64 strings that is more performant and\n * robust for very large inputs than the default regex-based check. It avoids\n * stack overflows by using the native `atob` function for validation.\n */\nconst Base64Schema = z.string().refine(val => {\n try {\n // atob throws a DOMException if the string contains characters\n // that are not part of the Base64 character set.\n atob(val);\n return true;\n }\n catch (_a) {\n return false;\n }\n}, { message: 'Invalid Base64 string' });\nexport const BlobResourceContentsSchema = ResourceContentsSchema.extend({\n /**\n * A base64-encoded string representing the binary data of the item.\n */\n blob: Base64Schema\n});\n/**\n * A known resource that the server is capable of reading.\n */\nexport const ResourceSchema = BaseMetadataSchema.extend({\n /**\n * The URI of this resource.\n */\n uri: z.string(),\n /**\n * A description of what this resource represents.\n *\n * This can be used by clients to improve the LLM's understanding of available resources. It can be thought of like a \"hint\" to the model.\n */\n description: z.optional(z.string()),\n /**\n * The MIME type of this resource, if known.\n */\n mimeType: z.optional(z.string()),\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.optional(z.object({}).passthrough())\n}).merge(IconsSchema);\n/**\n * A template description for resources available on the server.\n */\nexport const ResourceTemplateSchema = BaseMetadataSchema.extend({\n /**\n * A URI template (according to RFC 6570) that can be used to construct resource URIs.\n */\n uriTemplate: z.string(),\n /**\n * A description of what this template is for.\n *\n * This can be used by clients to improve the LLM's understanding of available resources. It can be thought of like a \"hint\" to the model.\n */\n description: z.optional(z.string()),\n /**\n * The MIME type for all resources that match this template. This should only be included if all resources matching this template have the same type.\n */\n mimeType: z.optional(z.string()),\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.optional(z.object({}).passthrough())\n}).merge(IconsSchema);\n/**\n * Sent from the client to request a list of resources the server has.\n */\nexport const ListResourcesRequestSchema = PaginatedRequestSchema.extend({\n method: z.literal('resources/list')\n});\n/**\n * The server's response to a resources/list request from the client.\n */\nexport const ListResourcesResultSchema = PaginatedResultSchema.extend({\n resources: z.array(ResourceSchema)\n});\n/**\n * Sent from the client to request a list of resource templates the server has.\n */\nexport const ListResourceTemplatesRequestSchema = PaginatedRequestSchema.extend({\n method: z.literal('resources/templates/list')\n});\n/**\n * The server's response to a resources/templates/list request from the client.\n */\nexport const ListResourceTemplatesResultSchema = PaginatedResultSchema.extend({\n resourceTemplates: z.array(ResourceTemplateSchema)\n});\nexport const ResourceRequestParamsSchema = BaseRequestParamsSchema.extend({\n /**\n * The URI of the resource to read. The URI can use any protocol; it is up to the server how to interpret it.\n *\n * @format uri\n */\n uri: z.string()\n});\n/**\n * Parameters for a `resources/read` request.\n */\nexport const ReadResourceRequestParamsSchema = ResourceRequestParamsSchema;\n/**\n * Sent from the client to the server, to read a specific resource URI.\n */\nexport const ReadResourceRequestSchema = RequestSchema.extend({\n method: z.literal('resources/read'),\n params: ReadResourceRequestParamsSchema\n});\n/**\n * The server's response to a resources/read request from the client.\n */\nexport const ReadResourceResultSchema = ResultSchema.extend({\n contents: z.array(z.union([TextResourceContentsSchema, BlobResourceContentsSchema]))\n});\n/**\n * An optional notification from the server to the client, informing it that the list of resources it can read from has changed. This may be issued by servers without any previous subscription from the client.\n */\nexport const ResourceListChangedNotificationSchema = NotificationSchema.extend({\n method: z.literal('notifications/resources/list_changed')\n});\nexport const SubscribeRequestParamsSchema = ResourceRequestParamsSchema;\n/**\n * Sent from the client to request resources/updated notifications from the server whenever a particular resource changes.\n */\nexport const SubscribeRequestSchema = RequestSchema.extend({\n method: z.literal('resources/subscribe'),\n params: SubscribeRequestParamsSchema\n});\nexport const UnsubscribeRequestParamsSchema = ResourceRequestParamsSchema;\n/**\n * Sent from the client to request cancellation of resources/updated notifications from the server. This should follow a previous resources/subscribe request.\n */\nexport const UnsubscribeRequestSchema = RequestSchema.extend({\n method: z.literal('resources/unsubscribe'),\n params: UnsubscribeRequestParamsSchema\n});\n/**\n * Parameters for a `notifications/resources/updated` notification.\n */\nexport const ResourceUpdatedNotificationParamsSchema = NotificationsParamsSchema.extend({\n /**\n * The URI of the resource that has been updated. This might be a sub-resource of the one that the client actually subscribed to.\n */\n uri: z.string()\n});\n/**\n * A notification from the server to the client, informing it that a resource has changed and may need to be read again. This should only be sent if the client previously sent a resources/subscribe request.\n */\nexport const ResourceUpdatedNotificationSchema = NotificationSchema.extend({\n method: z.literal('notifications/resources/updated'),\n params: ResourceUpdatedNotificationParamsSchema\n});\n/* Prompts */\n/**\n * Describes an argument that a prompt can accept.\n */\nexport const PromptArgumentSchema = z.object({\n /**\n * The name of the argument.\n */\n name: z.string(),\n /**\n * A human-readable description of the argument.\n */\n description: z.optional(z.string()),\n /**\n * Whether this argument must be provided.\n */\n required: z.optional(z.boolean())\n});\n/**\n * A prompt or prompt template that the server offers.\n */\nexport const PromptSchema = BaseMetadataSchema.extend({\n /**\n * An optional description of what this prompt provides\n */\n description: z.optional(z.string()),\n /**\n * A list of arguments to use for templating the prompt.\n */\n arguments: z.optional(z.array(PromptArgumentSchema)),\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.optional(z.object({}).passthrough())\n}).merge(IconsSchema);\n/**\n * Sent from the client to request a list of prompts and prompt templates the server has.\n */\nexport const ListPromptsRequestSchema = PaginatedRequestSchema.extend({\n method: z.literal('prompts/list')\n});\n/**\n * The server's response to a prompts/list request from the client.\n */\nexport const ListPromptsResultSchema = PaginatedResultSchema.extend({\n prompts: z.array(PromptSchema)\n});\n/**\n * Parameters for a `prompts/get` request.\n */\nexport const GetPromptRequestParamsSchema = BaseRequestParamsSchema.extend({\n /**\n * The name of the prompt or prompt template.\n */\n name: z.string(),\n /**\n * Arguments to use for templating the prompt.\n */\n arguments: z.record(z.string(), z.string()).optional()\n});\n/**\n * Used by the client to get a prompt provided by the server.\n */\nexport const GetPromptRequestSchema = RequestSchema.extend({\n method: z.literal('prompts/get'),\n params: GetPromptRequestParamsSchema\n});\n/**\n * Text provided to or from an LLM.\n */\nexport const TextContentSchema = z.object({\n type: z.literal('text'),\n /**\n * The text content of the message.\n */\n text: z.string(),\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.record(z.string(), z.unknown()).optional()\n});\n/**\n * An image provided to or from an LLM.\n */\nexport const ImageContentSchema = z.object({\n type: z.literal('image'),\n /**\n * The base64-encoded image data.\n */\n data: Base64Schema,\n /**\n * The MIME type of the image. Different providers may support different image types.\n */\n mimeType: z.string(),\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.record(z.string(), z.unknown()).optional()\n});\n/**\n * An Audio provided to or from an LLM.\n */\nexport const AudioContentSchema = z.object({\n type: z.literal('audio'),\n /**\n * The base64-encoded audio data.\n */\n data: Base64Schema,\n /**\n * The MIME type of the audio. Different providers may support different audio types.\n */\n mimeType: z.string(),\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.record(z.string(), z.unknown()).optional()\n});\n/**\n * The contents of a resource, embedded into a prompt or tool call result.\n */\nexport const EmbeddedResourceSchema = z.object({\n type: z.literal('resource'),\n resource: z.union([TextResourceContentsSchema, BlobResourceContentsSchema]),\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.record(z.string(), z.unknown()).optional()\n});\n/**\n * A resource that the server is capable of reading, included in a prompt or tool call result.\n *\n * Note: resource links returned by tools are not guaranteed to appear in the results of `resources/list` requests.\n */\nexport const ResourceLinkSchema = ResourceSchema.extend({\n type: z.literal('resource_link')\n});\n/**\n * A content block that can be used in prompts and tool results.\n */\nexport const ContentBlockSchema = z.union([\n TextContentSchema,\n ImageContentSchema,\n AudioContentSchema,\n ResourceLinkSchema,\n EmbeddedResourceSchema\n]);\n/**\n * Describes a message returned as part of a prompt.\n */\nexport const PromptMessageSchema = z.object({\n role: z.enum(['user', 'assistant']),\n content: ContentBlockSchema\n});\n/**\n * The server's response to a prompts/get request from the client.\n */\nexport const GetPromptResultSchema = ResultSchema.extend({\n /**\n * An optional description for the prompt.\n */\n description: z.optional(z.string()),\n messages: z.array(PromptMessageSchema)\n});\n/**\n * An optional notification from the server to the client, informing it that the list of prompts it offers has changed. This may be issued by servers without any previous subscription from the client.\n */\nexport const PromptListChangedNotificationSchema = NotificationSchema.extend({\n method: z.literal('notifications/prompts/list_changed')\n});\n/* Tools */\n/**\n * Additional properties describing a Tool to clients.\n *\n * NOTE: all properties in ToolAnnotations are **hints**.\n * They are not guaranteed to provide a faithful description of\n * tool behavior (including descriptive properties like `title`).\n *\n * Clients should never make tool use decisions based on ToolAnnotations\n * received from untrusted servers.\n */\nexport const ToolAnnotationsSchema = z.object({\n /**\n * A human-readable title for the tool.\n */\n title: z.string().optional(),\n /**\n * If true, the tool does not modify its environment.\n *\n * Default: false\n */\n readOnlyHint: z.boolean().optional(),\n /**\n * If true, the tool may perform destructive updates to its environment.\n * If false, the tool performs only additive updates.\n *\n * (This property is meaningful only when `readOnlyHint == false`)\n *\n * Default: true\n */\n destructiveHint: z.boolean().optional(),\n /**\n * If true, calling the tool repeatedly with the same arguments\n * will have no additional effect on the its environment.\n *\n * (This property is meaningful only when `readOnlyHint == false`)\n *\n * Default: false\n */\n idempotentHint: z.boolean().optional(),\n /**\n * If true, this tool may interact with an \"open world\" of external\n * entities. If false, the tool's domain of interaction is closed.\n * For example, the world of a web search tool is open, whereas that\n * of a memory tool is not.\n *\n * Default: true\n */\n openWorldHint: z.boolean().optional()\n});\n/**\n * Definition for a tool the client can call.\n */\nexport const ToolSchema = BaseMetadataSchema.extend({\n /**\n * A human-readable description of the tool.\n */\n description: z.string().optional(),\n /**\n * A JSON Schema object defining the expected parameters for the tool.\n */\n inputSchema: z.object({\n type: z.literal('object'),\n properties: z.record(z.string(), AssertObjectSchema).optional(),\n required: z.optional(z.array(z.string()))\n }),\n /**\n * An optional JSON Schema object defining the structure of the tool's output returned in\n * the structuredContent field of a CallToolResult.\n */\n outputSchema: z\n .object({\n type: z.literal('object'),\n properties: z.record(z.string(), AssertObjectSchema).optional(),\n required: z.optional(z.array(z.string())),\n /**\n * Not in the MCP specification, but added to support the Ajv validator while removing .passthrough() which previously allowed additionalProperties to be passed through.\n */\n additionalProperties: z.optional(z.boolean())\n })\n .optional(),\n /**\n * Optional additional tool information.\n */\n annotations: z.optional(ToolAnnotationsSchema),\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.record(z.string(), z.unknown()).optional()\n}).merge(IconsSchema);\n/**\n * Sent from the client to request a list of tools the server has.\n */\nexport const ListToolsRequestSchema = PaginatedRequestSchema.extend({\n method: z.literal('tools/list')\n});\n/**\n * The server's response to a tools/list request from the client.\n */\nexport const ListToolsResultSchema = PaginatedResultSchema.extend({\n tools: z.array(ToolSchema)\n});\n/**\n * The server's response to a tool call.\n */\nexport const CallToolResultSchema = ResultSchema.extend({\n /**\n * A list of content objects that represent the result of the tool call.\n *\n * If the Tool does not define an outputSchema, this field MUST be present in the result.\n * For backwards compatibility, this field is always present, but it may be empty.\n */\n content: z.array(ContentBlockSchema).default([]),\n /**\n * An object containing structured tool output.\n *\n * If the Tool defines an outputSchema, this field MUST be present in the result, and contain a JSON object that matches the schema.\n */\n structuredContent: z.record(z.string(), z.unknown()).optional(),\n /**\n * Whether the tool call ended in an error.\n *\n * If not set, this is assumed to be false (the call was successful).\n *\n * Any errors that originate from the tool SHOULD be reported inside the result\n * object, with `isError` set to true, _not_ as an MCP protocol-level error\n * response. Otherwise, the LLM would not be able to see that an error occurred\n * and self-correct.\n *\n * However, any errors in _finding_ the tool, an error indicating that the\n * server does not support tool calls, or any other exceptional conditions,\n * should be reported as an MCP error response.\n */\n isError: z.optional(z.boolean())\n});\n/**\n * CallToolResultSchema extended with backwards compatibility to protocol version 2024-10-07.\n */\nexport const CompatibilityCallToolResultSchema = CallToolResultSchema.or(ResultSchema.extend({\n toolResult: z.unknown()\n}));\n/**\n * Parameters for a `tools/call` request.\n */\nexport const CallToolRequestParamsSchema = BaseRequestParamsSchema.extend({\n /**\n * The name of the tool to call.\n */\n name: z.string(),\n /**\n * Arguments to pass to the tool.\n */\n arguments: z.optional(z.record(z.string(), z.unknown()))\n});\n/**\n * Used by the client to invoke a tool provided by the server.\n */\nexport const CallToolRequestSchema = RequestSchema.extend({\n method: z.literal('tools/call'),\n params: CallToolRequestParamsSchema\n});\n/**\n * An optional notification from the server to the client, informing it that the list of tools it offers has changed. This may be issued by servers without any previous subscription from the client.\n */\nexport const ToolListChangedNotificationSchema = NotificationSchema.extend({\n method: z.literal('notifications/tools/list_changed')\n});\n/* Logging */\n/**\n * The severity of a log message.\n */\nexport const LoggingLevelSchema = z.enum(['debug', 'info', 'notice', 'warning', 'error', 'critical', 'alert', 'emergency']);\n/**\n * Parameters for a `logging/setLevel` request.\n */\nexport const SetLevelRequestParamsSchema = BaseRequestParamsSchema.extend({\n /**\n * The level of logging that the client wants to receive from the server. The server should send all logs at this level and higher (i.e., more severe) to the client as notifications/logging/message.\n */\n level: LoggingLevelSchema\n});\n/**\n * A request from the client to the server, to enable or adjust logging.\n */\nexport const SetLevelRequestSchema = RequestSchema.extend({\n method: z.literal('logging/setLevel'),\n params: SetLevelRequestParamsSchema\n});\n/**\n * Parameters for a `notifications/message` notification.\n */\nexport const LoggingMessageNotificationParamsSchema = NotificationsParamsSchema.extend({\n /**\n * The severity of this log message.\n */\n level: LoggingLevelSchema,\n /**\n * An optional name of the logger issuing this message.\n */\n logger: z.string().optional(),\n /**\n * The data to be logged, such as a string message or an object. Any JSON serializable type is allowed here.\n */\n data: z.unknown()\n});\n/**\n * Notification of a log message passed from server to client. If no logging/setLevel request has been sent from the client, the server MAY decide which messages to send automatically.\n */\nexport const LoggingMessageNotificationSchema = NotificationSchema.extend({\n method: z.literal('notifications/message'),\n params: LoggingMessageNotificationParamsSchema\n});\n/* Sampling */\n/**\n * Hints to use for model selection.\n */\nexport const ModelHintSchema = z.object({\n /**\n * A hint for a model name.\n */\n name: z.string().optional()\n});\n/**\n * The server's preferences for model selection, requested of the client during sampling.\n */\nexport const ModelPreferencesSchema = z.object({\n /**\n * Optional hints to use for model selection.\n */\n hints: z.optional(z.array(ModelHintSchema)),\n /**\n * How much to prioritize cost when selecting a model.\n */\n costPriority: z.optional(z.number().min(0).max(1)),\n /**\n * How much to prioritize sampling speed (latency) when selecting a model.\n */\n speedPriority: z.optional(z.number().min(0).max(1)),\n /**\n * How much to prioritize intelligence and capabilities when selecting a model.\n */\n intelligencePriority: z.optional(z.number().min(0).max(1))\n});\n/**\n * Describes a message issued to or received from an LLM API.\n */\nexport const SamplingMessageSchema = z.object({\n role: z.enum(['user', 'assistant']),\n content: z.union([TextContentSchema, ImageContentSchema, AudioContentSchema])\n});\n/**\n * Parameters for a `sampling/createMessage` request.\n */\nexport const CreateMessageRequestParamsSchema = BaseRequestParamsSchema.extend({\n messages: z.array(SamplingMessageSchema),\n /**\n * The server's preferences for which model to select. The client MAY modify or omit this request.\n */\n modelPreferences: ModelPreferencesSchema.optional(),\n /**\n * An optional system prompt the server wants to use for sampling. The client MAY modify or omit this prompt.\n */\n systemPrompt: z.string().optional(),\n /**\n * A request to include context from one or more MCP servers (including the caller), to be attached to the prompt. The client MAY ignore this request.\n */\n includeContext: z.enum(['none', 'thisServer', 'allServers']).optional(),\n temperature: z.number().optional(),\n /**\n * The requested maximum number of tokens to sample (to prevent runaway completions).\n *\n * The client MAY choose to sample fewer tokens than the requested maximum.\n */\n maxTokens: z.number().int(),\n stopSequences: z.array(z.string()).optional(),\n /**\n * Optional metadata to pass through to the LLM provider. The format of this metadata is provider-specific.\n */\n metadata: AssertObjectSchema.optional()\n});\n/**\n * A request from the server to sample an LLM via the client. The client has full discretion over which model to select. The client should also inform the user before beginning sampling, to allow them to inspect the request (human in the loop) and decide whether to approve it.\n */\nexport const CreateMessageRequestSchema = RequestSchema.extend({\n method: z.literal('sampling/createMessage'),\n params: CreateMessageRequestParamsSchema\n});\n/**\n * The client's response to a sampling/create_message request from the server. The client should inform the user before returning the sampled message, to allow them to inspect the response (human in the loop) and decide whether to allow the server to see it.\n */\nexport const CreateMessageResultSchema = ResultSchema.extend({\n /**\n * The name of the model that generated the message.\n */\n model: z.string(),\n /**\n * The reason why sampling stopped.\n */\n stopReason: z.optional(z.enum(['endTurn', 'stopSequence', 'maxTokens']).or(z.string())),\n role: z.enum(['user', 'assistant']),\n content: z.discriminatedUnion('type', [TextContentSchema, ImageContentSchema, AudioContentSchema])\n});\n/* Elicitation */\n/**\n * Primitive schema definition for boolean fields.\n */\nexport const BooleanSchemaSchema = z.object({\n type: z.literal('boolean'),\n title: z.string().optional(),\n description: z.string().optional(),\n default: z.boolean().optional()\n});\n/**\n * Primitive schema definition for string fields.\n */\nexport const StringSchemaSchema = z.object({\n type: z.literal('string'),\n title: z.string().optional(),\n description: z.string().optional(),\n minLength: z.number().optional(),\n maxLength: z.number().optional(),\n format: z.enum(['email', 'uri', 'date', 'date-time']).optional(),\n default: z.string().optional()\n});\n/**\n * Primitive schema definition for number fields.\n */\nexport const NumberSchemaSchema = z.object({\n type: z.enum(['number', 'integer']),\n title: z.string().optional(),\n description: z.string().optional(),\n minimum: z.number().optional(),\n maximum: z.number().optional(),\n default: z.number().optional()\n});\n/**\n * Schema for single-selection enumeration without display titles for options.\n */\nexport const UntitledSingleSelectEnumSchemaSchema = z.object({\n type: z.literal('string'),\n title: z.string().optional(),\n description: z.string().optional(),\n enum: z.array(z.string()),\n default: z.string().optional()\n});\n/**\n * Schema for single-selection enumeration with display titles for each option.\n */\nexport const TitledSingleSelectEnumSchemaSchema = z.object({\n type: z.literal('string'),\n title: z.string().optional(),\n description: z.string().optional(),\n oneOf: z.array(z.object({\n const: z.string(),\n title: z.string()\n })),\n default: z.string().optional()\n});\n/**\n * Use TitledSingleSelectEnumSchema instead.\n * This interface will be removed in a future version.\n */\nexport const LegacyTitledEnumSchemaSchema = z.object({\n type: z.literal('string'),\n title: z.string().optional(),\n description: z.string().optional(),\n enum: z.array(z.string()),\n enumNames: z.array(z.string()).optional(),\n default: z.string().optional()\n});\n// Combined single selection enumeration\nexport const SingleSelectEnumSchemaSchema = z.union([UntitledSingleSelectEnumSchemaSchema, TitledSingleSelectEnumSchemaSchema]);\n/**\n * Schema for multiple-selection enumeration without display titles for options.\n */\nexport const UntitledMultiSelectEnumSchemaSchema = z.object({\n type: z.literal('array'),\n title: z.string().optional(),\n description: z.string().optional(),\n minItems: z.number().optional(),\n maxItems: z.number().optional(),\n items: z.object({\n type: z.literal('string'),\n enum: z.array(z.string())\n }),\n default: z.array(z.string()).optional()\n});\n/**\n * Schema for multiple-selection enumeration with display titles for each option.\n */\nexport const TitledMultiSelectEnumSchemaSchema = z.object({\n type: z.literal('array'),\n title: z.string().optional(),\n description: z.string().optional(),\n minItems: z.number().optional(),\n maxItems: z.number().optional(),\n items: z.object({\n anyOf: z.array(z.object({\n const: z.string(),\n title: z.string()\n }))\n }),\n default: z.array(z.string()).optional()\n});\n/**\n * Combined schema for multiple-selection enumeration\n */\nexport const MultiSelectEnumSchemaSchema = z.union([UntitledMultiSelectEnumSchemaSchema, TitledMultiSelectEnumSchemaSchema]);\n/**\n * Primitive schema definition for enum fields.\n */\nexport const EnumSchemaSchema = z.union([LegacyTitledEnumSchemaSchema, SingleSelectEnumSchemaSchema, MultiSelectEnumSchemaSchema]);\n/**\n * Union of all primitive schema definitions.\n */\nexport const PrimitiveSchemaDefinitionSchema = z.union([EnumSchemaSchema, BooleanSchemaSchema, StringSchemaSchema, NumberSchemaSchema]);\n/**\n * Parameters for an `elicitation/create` request.\n */\nexport const ElicitRequestParamsSchema = BaseRequestParamsSchema.extend({\n /**\n * The message to present to the user.\n */\n message: z.string(),\n /**\n * A restricted subset of JSON Schema.\n * Only top-level properties are allowed, without nesting.\n */\n requestedSchema: z.object({\n type: z.literal('object'),\n properties: z.record(z.string(), PrimitiveSchemaDefinitionSchema),\n required: z.array(z.string()).optional()\n })\n});\n/**\n * A request from the server to elicit user input via the client.\n * The client should present the message and form fields to the user.\n */\nexport const ElicitRequestSchema = RequestSchema.extend({\n method: z.literal('elicitation/create'),\n params: ElicitRequestParamsSchema\n});\n/**\n * The client's response to an elicitation/create request from the server.\n */\nexport const ElicitResultSchema = ResultSchema.extend({\n /**\n * The user action in response to the elicitation.\n * - \"accept\": User submitted the form/confirmed the action\n * - \"decline\": User explicitly decline the action\n * - \"cancel\": User dismissed without making an explicit choice\n */\n action: z.enum(['accept', 'decline', 'cancel']),\n /**\n * The submitted form data, only present when action is \"accept\".\n * Contains values matching the requested schema.\n */\n content: z.record(z.union([z.string(), z.number(), z.boolean(), z.array(z.string())])).optional()\n});\n/* Autocomplete */\n/**\n * A reference to a resource or resource template definition.\n */\nexport const ResourceTemplateReferenceSchema = z.object({\n type: z.literal('ref/resource'),\n /**\n * The URI or URI template of the resource.\n */\n uri: z.string()\n});\n/**\n * @deprecated Use ResourceTemplateReferenceSchema instead\n */\nexport const ResourceReferenceSchema = ResourceTemplateReferenceSchema;\n/**\n * Identifies a prompt.\n */\nexport const PromptReferenceSchema = z.object({\n type: z.literal('ref/prompt'),\n /**\n * The name of the prompt or prompt template\n */\n name: z.string()\n});\n/**\n * Parameters for a `completion/complete` request.\n */\nexport const CompleteRequestParamsSchema = BaseRequestParamsSchema.extend({\n ref: z.union([PromptReferenceSchema, ResourceTemplateReferenceSchema]),\n /**\n * The argument's information\n */\n argument: z.object({\n /**\n * The name of the argument\n */\n name: z.string(),\n /**\n * The value of the argument to use for completion matching.\n */\n value: z.string()\n }),\n context: z\n .object({\n /**\n * Previously-resolved variables in a URI template or prompt.\n */\n arguments: z.record(z.string(), z.string()).optional()\n })\n .optional()\n});\n/**\n * A request from the client to the server, to ask for completion options.\n */\nexport const CompleteRequestSchema = RequestSchema.extend({\n method: z.literal('completion/complete'),\n params: CompleteRequestParamsSchema\n});\nexport function assertCompleteRequestPrompt(request) {\n if (request.params.ref.type !== 'ref/prompt') {\n throw new TypeError(`Expected CompleteRequestPrompt, but got ${request.params.ref.type}`);\n }\n}\nexport function assertCompleteRequestResourceTemplate(request) {\n if (request.params.ref.type !== 'ref/resource') {\n throw new TypeError(`Expected CompleteRequestResourceTemplate, but got ${request.params.ref.type}`);\n }\n}\n/**\n * The server's response to a completion/complete request\n */\nexport const CompleteResultSchema = ResultSchema.extend({\n completion: z\n .object({\n /**\n * An array of completion values. Must not exceed 100 items.\n */\n values: z.array(z.string()).max(100),\n /**\n * The total number of completion options available. This can exceed the number of values actually sent in the response.\n */\n total: z.optional(z.number().int()),\n /**\n * Indicates whether there are additional completion options beyond those provided in the current response, even if the exact total is unknown.\n */\n hasMore: z.optional(z.boolean())\n })\n .passthrough()\n});\n/* Roots */\n/**\n * Represents a root directory or file that the server can operate on.\n */\nexport const RootSchema = z.object({\n /**\n * The URI identifying the root. This *must* start with file:// for now.\n */\n uri: z.string().startsWith('file://'),\n /**\n * An optional name for the root.\n */\n name: z.string().optional(),\n /**\n * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)\n * for notes on _meta usage.\n */\n _meta: z.record(z.string(), z.unknown()).optional()\n});\n/**\n * Sent from the server to request a list of root URIs from the client.\n */\nexport const ListRootsRequestSchema = RequestSchema.extend({\n method: z.literal('roots/list')\n});\n/**\n * The client's response to a roots/list request from the server.\n */\nexport const ListRootsResultSchema = ResultSchema.extend({\n roots: z.array(RootSchema)\n});\n/**\n * A notification from the client to the server, informing it that the list of roots has changed.\n */\nexport const RootsListChangedNotificationSchema = NotificationSchema.extend({\n method: z.literal('notifications/roots/list_changed')\n});\n/* Client messages */\nexport const ClientRequestSchema = z.union([\n PingRequestSchema,\n InitializeRequestSchema,\n CompleteRequestSchema,\n SetLevelRequestSchema,\n GetPromptRequestSchema,\n ListPromptsRequestSchema,\n ListResourcesRequestSchema,\n ListResourceTemplatesRequestSchema,\n ReadResourceRequestSchema,\n SubscribeRequestSchema,\n UnsubscribeRequestSchema,\n CallToolRequestSchema,\n ListToolsRequestSchema\n]);\nexport const ClientNotificationSchema = z.union([\n CancelledNotificationSchema,\n ProgressNotificationSchema,\n InitializedNotificationSchema,\n RootsListChangedNotificationSchema\n]);\nexport const ClientResultSchema = z.union([EmptyResultSchema, CreateMessageResultSchema, ElicitResultSchema, ListRootsResultSchema]);\n/* Server messages */\nexport const ServerRequestSchema = z.union([PingRequestSchema, CreateMessageRequestSchema, ElicitRequestSchema, ListRootsRequestSchema]);\nexport const ServerNotificationSchema = z.union([\n CancelledNotificationSchema,\n ProgressNotificationSchema,\n LoggingMessageNotificationSchema,\n ResourceUpdatedNotificationSchema,\n ResourceListChangedNotificationSchema,\n ToolListChangedNotificationSchema,\n PromptListChangedNotificationSchema\n]);\nexport const ServerResultSchema = z.union([\n EmptyResultSchema,\n InitializeResultSchema,\n CompleteResultSchema,\n GetPromptResultSchema,\n ListPromptsResultSchema,\n ListResourcesResultSchema,\n ListResourceTemplatesResultSchema,\n ReadResourceResultSchema,\n CallToolResultSchema,\n ListToolsResultSchema\n]);\nexport class McpError extends Error {\n constructor(code, message, data) {\n super(`MCP error ${code}: ${message}`);\n this.code = code;\n this.data = data;\n this.name = 'McpError';\n }\n}\n//# sourceMappingURL=types.js.map",
103
+ "import { CancelledNotificationSchema, ErrorCode, isJSONRPCError, isJSONRPCRequest, isJSONRPCResponse, isJSONRPCNotification, McpError, PingRequestSchema, ProgressNotificationSchema } from '../types.js';\n/**\n * The default request timeout, in miliseconds.\n */\nexport const DEFAULT_REQUEST_TIMEOUT_MSEC = 60000;\n/**\n * Implements MCP protocol framing on top of a pluggable transport, including\n * features like request/response linking, notifications, and progress.\n */\nexport class Protocol {\n constructor(_options) {\n this._options = _options;\n this._requestMessageId = 0;\n this._requestHandlers = new Map();\n this._requestHandlerAbortControllers = new Map();\n this._notificationHandlers = new Map();\n this._responseHandlers = new Map();\n this._progressHandlers = new Map();\n this._timeoutInfo = new Map();\n this._pendingDebouncedNotifications = new Set();\n this.setNotificationHandler(CancelledNotificationSchema, notification => {\n const controller = this._requestHandlerAbortControllers.get(notification.params.requestId);\n controller === null || controller === void 0 ? void 0 : controller.abort(notification.params.reason);\n });\n this.setNotificationHandler(ProgressNotificationSchema, notification => {\n this._onprogress(notification);\n });\n this.setRequestHandler(PingRequestSchema, \n // Automatic pong by default.\n _request => ({}));\n }\n _setupTimeout(messageId, timeout, maxTotalTimeout, onTimeout, resetTimeoutOnProgress = false) {\n this._timeoutInfo.set(messageId, {\n timeoutId: setTimeout(onTimeout, timeout),\n startTime: Date.now(),\n timeout,\n maxTotalTimeout,\n resetTimeoutOnProgress,\n onTimeout\n });\n }\n _resetTimeout(messageId) {\n const info = this._timeoutInfo.get(messageId);\n if (!info)\n return false;\n const totalElapsed = Date.now() - info.startTime;\n if (info.maxTotalTimeout && totalElapsed >= info.maxTotalTimeout) {\n this._timeoutInfo.delete(messageId);\n throw new McpError(ErrorCode.RequestTimeout, 'Maximum total timeout exceeded', {\n maxTotalTimeout: info.maxTotalTimeout,\n totalElapsed\n });\n }\n clearTimeout(info.timeoutId);\n info.timeoutId = setTimeout(info.onTimeout, info.timeout);\n return true;\n }\n _cleanupTimeout(messageId) {\n const info = this._timeoutInfo.get(messageId);\n if (info) {\n clearTimeout(info.timeoutId);\n this._timeoutInfo.delete(messageId);\n }\n }\n /**\n * Attaches to the given transport, starts it, and starts listening for messages.\n *\n * The Protocol object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward.\n */\n async connect(transport) {\n var _a, _b, _c;\n this._transport = transport;\n const _onclose = (_a = this.transport) === null || _a === void 0 ? void 0 : _a.onclose;\n this._transport.onclose = () => {\n _onclose === null || _onclose === void 0 ? void 0 : _onclose();\n this._onclose();\n };\n const _onerror = (_b = this.transport) === null || _b === void 0 ? void 0 : _b.onerror;\n this._transport.onerror = (error) => {\n _onerror === null || _onerror === void 0 ? void 0 : _onerror(error);\n this._onerror(error);\n };\n const _onmessage = (_c = this._transport) === null || _c === void 0 ? void 0 : _c.onmessage;\n this._transport.onmessage = (message, extra) => {\n _onmessage === null || _onmessage === void 0 ? void 0 : _onmessage(message, extra);\n if (isJSONRPCResponse(message) || isJSONRPCError(message)) {\n this._onresponse(message);\n }\n else if (isJSONRPCRequest(message)) {\n this._onrequest(message, extra);\n }\n else if (isJSONRPCNotification(message)) {\n this._onnotification(message);\n }\n else {\n this._onerror(new Error(`Unknown message type: ${JSON.stringify(message)}`));\n }\n };\n await this._transport.start();\n }\n _onclose() {\n var _a;\n const responseHandlers = this._responseHandlers;\n this._responseHandlers = new Map();\n this._progressHandlers.clear();\n this._pendingDebouncedNotifications.clear();\n this._transport = undefined;\n (_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);\n const error = new McpError(ErrorCode.ConnectionClosed, 'Connection closed');\n for (const handler of responseHandlers.values()) {\n handler(error);\n }\n }\n _onerror(error) {\n var _a;\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);\n }\n _onnotification(notification) {\n var _a;\n const handler = (_a = this._notificationHandlers.get(notification.method)) !== null && _a !== void 0 ? _a : this.fallbackNotificationHandler;\n // Ignore notifications not being subscribed to.\n if (handler === undefined) {\n return;\n }\n // Starting with Promise.resolve() puts any synchronous errors into the monad as well.\n Promise.resolve()\n .then(() => handler(notification))\n .catch(error => this._onerror(new Error(`Uncaught error in notification handler: ${error}`)));\n }\n _onrequest(request, extra) {\n var _a, _b;\n const handler = (_a = this._requestHandlers.get(request.method)) !== null && _a !== void 0 ? _a : this.fallbackRequestHandler;\n // Capture the current transport at request time to ensure responses go to the correct client\n const capturedTransport = this._transport;\n if (handler === undefined) {\n capturedTransport === null || capturedTransport === void 0 ? void 0 : capturedTransport.send({\n jsonrpc: '2.0',\n id: request.id,\n error: {\n code: ErrorCode.MethodNotFound,\n message: 'Method not found'\n }\n }).catch(error => this._onerror(new Error(`Failed to send an error response: ${error}`)));\n return;\n }\n const abortController = new AbortController();\n this._requestHandlerAbortControllers.set(request.id, abortController);\n const fullExtra = {\n signal: abortController.signal,\n sessionId: capturedTransport === null || capturedTransport === void 0 ? void 0 : capturedTransport.sessionId,\n _meta: (_b = request.params) === null || _b === void 0 ? void 0 : _b._meta,\n sendNotification: notification => this.notification(notification, { relatedRequestId: request.id }),\n sendRequest: (r, resultSchema, options) => this.request(r, resultSchema, { ...options, relatedRequestId: request.id }),\n authInfo: extra === null || extra === void 0 ? void 0 : extra.authInfo,\n requestId: request.id,\n requestInfo: extra === null || extra === void 0 ? void 0 : extra.requestInfo\n };\n // Starting with Promise.resolve() puts any synchronous errors into the monad as well.\n Promise.resolve()\n .then(() => handler(request, fullExtra))\n .then(result => {\n if (abortController.signal.aborted) {\n return;\n }\n return capturedTransport === null || capturedTransport === void 0 ? void 0 : capturedTransport.send({\n result,\n jsonrpc: '2.0',\n id: request.id\n });\n }, error => {\n var _a;\n if (abortController.signal.aborted) {\n return;\n }\n return capturedTransport === null || capturedTransport === void 0 ? void 0 : capturedTransport.send({\n jsonrpc: '2.0',\n id: request.id,\n error: {\n code: Number.isSafeInteger(error['code']) ? error['code'] : ErrorCode.InternalError,\n message: (_a = error.message) !== null && _a !== void 0 ? _a : 'Internal error'\n }\n });\n })\n .catch(error => this._onerror(new Error(`Failed to send response: ${error}`)))\n .finally(() => {\n this._requestHandlerAbortControllers.delete(request.id);\n });\n }\n _onprogress(notification) {\n const { progressToken, ...params } = notification.params;\n const messageId = Number(progressToken);\n const handler = this._progressHandlers.get(messageId);\n if (!handler) {\n this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(notification)}`));\n return;\n }\n const responseHandler = this._responseHandlers.get(messageId);\n const timeoutInfo = this._timeoutInfo.get(messageId);\n if (timeoutInfo && responseHandler && timeoutInfo.resetTimeoutOnProgress) {\n try {\n this._resetTimeout(messageId);\n }\n catch (error) {\n responseHandler(error);\n return;\n }\n }\n handler(params);\n }\n _onresponse(response) {\n const messageId = Number(response.id);\n const handler = this._responseHandlers.get(messageId);\n if (handler === undefined) {\n this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(response)}`));\n return;\n }\n this._responseHandlers.delete(messageId);\n this._progressHandlers.delete(messageId);\n this._cleanupTimeout(messageId);\n if (isJSONRPCResponse(response)) {\n handler(response);\n }\n else {\n const error = new McpError(response.error.code, response.error.message, response.error.data);\n handler(error);\n }\n }\n get transport() {\n return this._transport;\n }\n /**\n * Closes the connection.\n */\n async close() {\n var _a;\n await ((_a = this._transport) === null || _a === void 0 ? void 0 : _a.close());\n }\n /**\n * Sends a request and wait for a response.\n *\n * Do not use this method to emit notifications! Use notification() instead.\n */\n request(request, resultSchema, options) {\n const { relatedRequestId, resumptionToken, onresumptiontoken } = options !== null && options !== void 0 ? options : {};\n return new Promise((resolve, reject) => {\n var _a, _b, _c, _d, _e, _f;\n if (!this._transport) {\n reject(new Error('Not connected'));\n return;\n }\n if (((_a = this._options) === null || _a === void 0 ? void 0 : _a.enforceStrictCapabilities) === true) {\n this.assertCapabilityForMethod(request.method);\n }\n (_b = options === null || options === void 0 ? void 0 : options.signal) === null || _b === void 0 ? void 0 : _b.throwIfAborted();\n const messageId = this._requestMessageId++;\n const jsonrpcRequest = {\n ...request,\n jsonrpc: '2.0',\n id: messageId\n };\n if (options === null || options === void 0 ? void 0 : options.onprogress) {\n this._progressHandlers.set(messageId, options.onprogress);\n jsonrpcRequest.params = {\n ...request.params,\n _meta: {\n ...(((_c = request.params) === null || _c === void 0 ? void 0 : _c._meta) || {}),\n progressToken: messageId\n }\n };\n }\n const cancel = (reason) => {\n var _a;\n this._responseHandlers.delete(messageId);\n this._progressHandlers.delete(messageId);\n this._cleanupTimeout(messageId);\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.send({\n jsonrpc: '2.0',\n method: 'notifications/cancelled',\n params: {\n requestId: messageId,\n reason: String(reason)\n }\n }, { relatedRequestId, resumptionToken, onresumptiontoken }).catch(error => this._onerror(new Error(`Failed to send cancellation: ${error}`)));\n reject(reason);\n };\n this._responseHandlers.set(messageId, response => {\n var _a;\n if ((_a = options === null || options === void 0 ? void 0 : options.signal) === null || _a === void 0 ? void 0 : _a.aborted) {\n return;\n }\n if (response instanceof Error) {\n return reject(response);\n }\n try {\n const result = resultSchema.parse(response.result);\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n });\n (_d = options === null || options === void 0 ? void 0 : options.signal) === null || _d === void 0 ? void 0 : _d.addEventListener('abort', () => {\n var _a;\n cancel((_a = options === null || options === void 0 ? void 0 : options.signal) === null || _a === void 0 ? void 0 : _a.reason);\n });\n const timeout = (_e = options === null || options === void 0 ? void 0 : options.timeout) !== null && _e !== void 0 ? _e : DEFAULT_REQUEST_TIMEOUT_MSEC;\n const timeoutHandler = () => cancel(new McpError(ErrorCode.RequestTimeout, 'Request timed out', { timeout }));\n this._setupTimeout(messageId, timeout, options === null || options === void 0 ? void 0 : options.maxTotalTimeout, timeoutHandler, (_f = options === null || options === void 0 ? void 0 : options.resetTimeoutOnProgress) !== null && _f !== void 0 ? _f : false);\n this._transport.send(jsonrpcRequest, { relatedRequestId, resumptionToken, onresumptiontoken }).catch(error => {\n this._cleanupTimeout(messageId);\n reject(error);\n });\n });\n }\n /**\n * Emits a notification, which is a one-way message that does not expect a response.\n */\n async notification(notification, options) {\n var _a, _b;\n if (!this._transport) {\n throw new Error('Not connected');\n }\n this.assertNotificationCapability(notification.method);\n const debouncedMethods = (_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.debouncedNotificationMethods) !== null && _b !== void 0 ? _b : [];\n // A notification can only be debounced if it's in the list AND it's \"simple\"\n // (i.e., has no parameters and no related request ID that could be lost).\n const canDebounce = debouncedMethods.includes(notification.method) && !notification.params && !(options === null || options === void 0 ? void 0 : options.relatedRequestId);\n if (canDebounce) {\n // If a notification of this type is already scheduled, do nothing.\n if (this._pendingDebouncedNotifications.has(notification.method)) {\n return;\n }\n // Mark this notification type as pending.\n this._pendingDebouncedNotifications.add(notification.method);\n // Schedule the actual send to happen in the next microtask.\n // This allows all synchronous calls in the current event loop tick to be coalesced.\n Promise.resolve().then(() => {\n var _a;\n // Un-mark the notification so the next one can be scheduled.\n this._pendingDebouncedNotifications.delete(notification.method);\n // SAFETY CHECK: If the connection was closed while this was pending, abort.\n if (!this._transport) {\n return;\n }\n const jsonrpcNotification = {\n ...notification,\n jsonrpc: '2.0'\n };\n // Send the notification, but don't await it here to avoid blocking.\n // Handle potential errors with a .catch().\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.send(jsonrpcNotification, options).catch(error => this._onerror(error));\n });\n // Return immediately.\n return;\n }\n const jsonrpcNotification = {\n ...notification,\n jsonrpc: '2.0'\n };\n await this._transport.send(jsonrpcNotification, options);\n }\n /**\n * Registers a handler to invoke when this protocol object receives a request with the given method.\n *\n * Note that this will replace any previous request handler for the same method.\n */\n setRequestHandler(requestSchema, handler) {\n const method = requestSchema.shape.method.value;\n this.assertRequestHandlerCapability(method);\n this._requestHandlers.set(method, (request, extra) => {\n return Promise.resolve(handler(requestSchema.parse(request), extra));\n });\n }\n /**\n * Removes the request handler for the given method.\n */\n removeRequestHandler(method) {\n this._requestHandlers.delete(method);\n }\n /**\n * Asserts that a request handler has not already been set for the given method, in preparation for a new one being automatically installed.\n */\n assertCanSetRequestHandler(method) {\n if (this._requestHandlers.has(method)) {\n throw new Error(`A request handler for ${method} already exists, which would be overridden`);\n }\n }\n /**\n * Registers a handler to invoke when this protocol object receives a notification with the given method.\n *\n * Note that this will replace any previous notification handler for the same method.\n */\n setNotificationHandler(notificationSchema, handler) {\n this._notificationHandlers.set(notificationSchema.shape.method.value, notification => Promise.resolve(handler(notificationSchema.parse(notification))));\n }\n /**\n * Removes the notification handler for the given method.\n */\n removeNotificationHandler(method) {\n this._notificationHandlers.delete(method);\n }\n}\nfunction isPlainObject(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\nexport function mergeCapabilities(base, additional) {\n const result = { ...base };\n for (const key in additional) {\n const k = key;\n const addValue = additional[k];\n if (addValue === undefined)\n continue;\n const baseValue = result[k];\n if (isPlainObject(baseValue) && isPlainObject(addValue)) {\n result[k] = { ...baseValue, ...addValue };\n }\n else {\n result[k] = addValue;\n }\n }\n return result;\n}\n//# sourceMappingURL=protocol.js.map",
104
+ "/**\n * AJV-based JSON Schema validator provider\n */\nimport { Ajv } from 'ajv';\nimport _addFormats from 'ajv-formats';\nfunction createDefaultAjvInstance() {\n const ajv = new Ajv({\n strict: false,\n validateFormats: true,\n validateSchema: false,\n allErrors: true\n });\n const addFormats = _addFormats;\n addFormats(ajv);\n return ajv;\n}\n/**\n * @example\n * ```typescript\n * // Use with default AJV instance (recommended)\n * import { AjvJsonSchemaValidator } from '@modelcontextprotocol/sdk/validation/ajv';\n * const validator = new AjvJsonSchemaValidator();\n *\n * // Use with custom AJV instance\n * import { Ajv } from 'ajv';\n * const ajv = new Ajv({ strict: true, allErrors: true });\n * const validator = new AjvJsonSchemaValidator(ajv);\n * ```\n */\nexport class AjvJsonSchemaValidator {\n /**\n * Create an AJV validator\n *\n * @param ajv - Optional pre-configured AJV instance. If not provided, a default instance will be created.\n *\n * @example\n * ```typescript\n * // Use default configuration (recommended for most cases)\n * import { AjvJsonSchemaValidator } from '@modelcontextprotocol/sdk/validation/ajv';\n * const validator = new AjvJsonSchemaValidator();\n *\n * // Or provide custom AJV instance for advanced configuration\n * import { Ajv } from 'ajv';\n * import addFormats from 'ajv-formats';\n *\n * const ajv = new Ajv({ validateFormats: true });\n * addFormats(ajv);\n * const validator = new AjvJsonSchemaValidator(ajv);\n * ```\n */\n constructor(ajv) {\n this._ajv = ajv !== null && ajv !== void 0 ? ajv : createDefaultAjvInstance();\n }\n /**\n * Create a validator for the given JSON Schema\n *\n * The validator is compiled once and can be reused multiple times.\n * If the schema has an $id, it will be cached by AJV automatically.\n *\n * @param schema - Standard JSON Schema object\n * @returns A validator function that validates input data\n */\n getValidator(schema) {\n var _a;\n // Check if schema has $id and is already compiled/cached\n const ajvValidator = '$id' in schema && typeof schema.$id === 'string'\n ? ((_a = this._ajv.getSchema(schema.$id)) !== null && _a !== void 0 ? _a : this._ajv.compile(schema))\n : this._ajv.compile(schema);\n return (input) => {\n const valid = ajvValidator(input);\n if (valid) {\n return {\n valid: true,\n data: input,\n errorMessage: undefined\n };\n }\n else {\n return {\n valid: false,\n data: undefined,\n errorMessage: this._ajv.errorsText(ajvValidator.errors)\n };\n }\n };\n }\n}\n//# sourceMappingURL=ajv-provider.js.map",
105
+ "import { mergeCapabilities, Protocol } from '../shared/protocol.js';\nimport { CallToolResultSchema, CompleteResultSchema, EmptyResultSchema, ErrorCode, GetPromptResultSchema, InitializeResultSchema, LATEST_PROTOCOL_VERSION, ListPromptsResultSchema, ListResourcesResultSchema, ListResourceTemplatesResultSchema, ListToolsResultSchema, McpError, ReadResourceResultSchema, SUPPORTED_PROTOCOL_VERSIONS, ElicitResultSchema, ElicitRequestSchema } from '../types.js';\nimport { AjvJsonSchemaValidator } from '../validation/ajv-provider.js';\n/**\n * Elicitation default application helper. Applies defaults to the data based on the schema.\n *\n * @param schema - The schema to apply defaults to.\n * @param data - The data to apply defaults to.\n */\nfunction applyElicitationDefaults(schema, data) {\n if (!schema || data === null || typeof data !== 'object')\n return;\n // Handle object properties\n if (schema.type === 'object' && schema.properties && typeof schema.properties === 'object') {\n const obj = data;\n const props = schema.properties;\n for (const key of Object.keys(props)) {\n const propSchema = props[key];\n // If missing or explicitly undefined, apply default if present\n if (obj[key] === undefined && Object.prototype.hasOwnProperty.call(propSchema, 'default')) {\n obj[key] = propSchema.default;\n }\n // Recurse into existing nested objects/arrays\n if (obj[key] !== undefined) {\n applyElicitationDefaults(propSchema, obj[key]);\n }\n }\n }\n if (Array.isArray(schema.anyOf)) {\n for (const sub of schema.anyOf) {\n applyElicitationDefaults(sub, data);\n }\n }\n // Combine schemas\n if (Array.isArray(schema.oneOf)) {\n for (const sub of schema.oneOf) {\n applyElicitationDefaults(sub, data);\n }\n }\n}\n/**\n * An MCP client on top of a pluggable transport.\n *\n * The client will automatically begin the initialization flow with the server when connect() is called.\n *\n * To use with custom types, extend the base Request/Notification/Result types and pass them as type parameters:\n *\n * ```typescript\n * // Custom schemas\n * const CustomRequestSchema = RequestSchema.extend({...})\n * const CustomNotificationSchema = NotificationSchema.extend({...})\n * const CustomResultSchema = ResultSchema.extend({...})\n *\n * // Type aliases\n * type CustomRequest = z.infer<typeof CustomRequestSchema>\n * type CustomNotification = z.infer<typeof CustomNotificationSchema>\n * type CustomResult = z.infer<typeof CustomResultSchema>\n *\n * // Create typed client\n * const client = new Client<CustomRequest, CustomNotification, CustomResult>({\n * name: \"CustomClient\",\n * version: \"1.0.0\"\n * })\n * ```\n */\nexport class Client extends Protocol {\n /**\n * Initializes this client with the given name and version information.\n */\n constructor(_clientInfo, options) {\n var _a, _b;\n super(options);\n this._clientInfo = _clientInfo;\n this._cachedToolOutputValidators = new Map();\n this._capabilities = (_a = options === null || options === void 0 ? void 0 : options.capabilities) !== null && _a !== void 0 ? _a : {};\n this._jsonSchemaValidator = (_b = options === null || options === void 0 ? void 0 : options.jsonSchemaValidator) !== null && _b !== void 0 ? _b : new AjvJsonSchemaValidator();\n }\n /**\n * Registers new capabilities. This can only be called before connecting to a transport.\n *\n * The new capabilities will be merged with any existing capabilities previously given (e.g., at initialization).\n */\n registerCapabilities(capabilities) {\n if (this.transport) {\n throw new Error('Cannot register capabilities after connecting to transport');\n }\n this._capabilities = mergeCapabilities(this._capabilities, capabilities);\n }\n /**\n * Override request handler registration to enforce client-side validation for elicitation.\n */\n setRequestHandler(requestSchema, handler) {\n const method = requestSchema.shape.method.value;\n if (method === 'elicitation/create') {\n const wrappedHandler = async (request, extra) => {\n var _a;\n const validatedRequest = ElicitRequestSchema.safeParse(request);\n if (!validatedRequest.success) {\n throw new McpError(ErrorCode.InvalidParams, `Invalid elicitation request: ${validatedRequest.error.message}`);\n }\n const result = await Promise.resolve(handler(request, extra));\n const validationResult = ElicitResultSchema.safeParse(result);\n if (!validationResult.success) {\n throw new McpError(ErrorCode.InvalidParams, `Invalid elicitation result: ${validationResult.error.message}`);\n }\n const validatedResult = validationResult.data;\n if (((_a = this._capabilities.elicitation) === null || _a === void 0 ? void 0 : _a.applyDefaults) &&\n validatedResult.action === 'accept' &&\n validatedResult.content &&\n validatedRequest.data.params.requestedSchema) {\n try {\n applyElicitationDefaults(validatedRequest.data.params.requestedSchema, validatedResult.content);\n }\n catch (_b) {\n // gracefully ignore errors in default application\n }\n }\n return validatedResult;\n };\n // Install the wrapped handler\n return super.setRequestHandler(requestSchema, wrappedHandler);\n }\n // Non-elicitation handlers use default behavior\n return super.setRequestHandler(requestSchema, handler);\n }\n assertCapability(capability, method) {\n var _a;\n if (!((_a = this._serverCapabilities) === null || _a === void 0 ? void 0 : _a[capability])) {\n throw new Error(`Server does not support ${capability} (required for ${method})`);\n }\n }\n async connect(transport, options) {\n await super.connect(transport);\n // When transport sessionId is already set this means we are trying to reconnect.\n // In this case we don't need to initialize again.\n if (transport.sessionId !== undefined) {\n return;\n }\n try {\n const result = await this.request({\n method: 'initialize',\n params: {\n protocolVersion: LATEST_PROTOCOL_VERSION,\n capabilities: this._capabilities,\n clientInfo: this._clientInfo\n }\n }, InitializeResultSchema, options);\n if (result === undefined) {\n throw new Error(`Server sent invalid initialize result: ${result}`);\n }\n if (!SUPPORTED_PROTOCOL_VERSIONS.includes(result.protocolVersion)) {\n throw new Error(`Server's protocol version is not supported: ${result.protocolVersion}`);\n }\n this._serverCapabilities = result.capabilities;\n this._serverVersion = result.serverInfo;\n // HTTP transports must set the protocol version in each header after initialization.\n if (transport.setProtocolVersion) {\n transport.setProtocolVersion(result.protocolVersion);\n }\n this._instructions = result.instructions;\n await this.notification({\n method: 'notifications/initialized'\n });\n }\n catch (error) {\n // Disconnect if initialization fails.\n void this.close();\n throw error;\n }\n }\n /**\n * After initialization has completed, this will be populated with the server's reported capabilities.\n */\n getServerCapabilities() {\n return this._serverCapabilities;\n }\n /**\n * After initialization has completed, this will be populated with information about the server's name and version.\n */\n getServerVersion() {\n return this._serverVersion;\n }\n /**\n * After initialization has completed, this may be populated with information about the server's instructions.\n */\n getInstructions() {\n return this._instructions;\n }\n assertCapabilityForMethod(method) {\n var _a, _b, _c, _d, _e;\n switch (method) {\n case 'logging/setLevel':\n if (!((_a = this._serverCapabilities) === null || _a === void 0 ? void 0 : _a.logging)) {\n throw new Error(`Server does not support logging (required for ${method})`);\n }\n break;\n case 'prompts/get':\n case 'prompts/list':\n if (!((_b = this._serverCapabilities) === null || _b === void 0 ? void 0 : _b.prompts)) {\n throw new Error(`Server does not support prompts (required for ${method})`);\n }\n break;\n case 'resources/list':\n case 'resources/templates/list':\n case 'resources/read':\n case 'resources/subscribe':\n case 'resources/unsubscribe':\n if (!((_c = this._serverCapabilities) === null || _c === void 0 ? void 0 : _c.resources)) {\n throw new Error(`Server does not support resources (required for ${method})`);\n }\n if (method === 'resources/subscribe' && !this._serverCapabilities.resources.subscribe) {\n throw new Error(`Server does not support resource subscriptions (required for ${method})`);\n }\n break;\n case 'tools/call':\n case 'tools/list':\n if (!((_d = this._serverCapabilities) === null || _d === void 0 ? void 0 : _d.tools)) {\n throw new Error(`Server does not support tools (required for ${method})`);\n }\n break;\n case 'completion/complete':\n if (!((_e = this._serverCapabilities) === null || _e === void 0 ? void 0 : _e.completions)) {\n throw new Error(`Server does not support completions (required for ${method})`);\n }\n break;\n case 'initialize':\n // No specific capability required for initialize\n break;\n case 'ping':\n // No specific capability required for ping\n break;\n }\n }\n assertNotificationCapability(method) {\n var _a;\n switch (method) {\n case 'notifications/roots/list_changed':\n if (!((_a = this._capabilities.roots) === null || _a === void 0 ? void 0 : _a.listChanged)) {\n throw new Error(`Client does not support roots list changed notifications (required for ${method})`);\n }\n break;\n case 'notifications/initialized':\n // No specific capability required for initialized\n break;\n case 'notifications/cancelled':\n // Cancellation notifications are always allowed\n break;\n case 'notifications/progress':\n // Progress notifications are always allowed\n break;\n }\n }\n assertRequestHandlerCapability(method) {\n switch (method) {\n case 'sampling/createMessage':\n if (!this._capabilities.sampling) {\n throw new Error(`Client does not support sampling capability (required for ${method})`);\n }\n break;\n case 'elicitation/create':\n if (!this._capabilities.elicitation) {\n throw new Error(`Client does not support elicitation capability (required for ${method})`);\n }\n break;\n case 'roots/list':\n if (!this._capabilities.roots) {\n throw new Error(`Client does not support roots capability (required for ${method})`);\n }\n break;\n case 'ping':\n // No specific capability required for ping\n break;\n }\n }\n async ping(options) {\n return this.request({ method: 'ping' }, EmptyResultSchema, options);\n }\n async complete(params, options) {\n return this.request({ method: 'completion/complete', params }, CompleteResultSchema, options);\n }\n async setLoggingLevel(level, options) {\n return this.request({ method: 'logging/setLevel', params: { level } }, EmptyResultSchema, options);\n }\n async getPrompt(params, options) {\n return this.request({ method: 'prompts/get', params }, GetPromptResultSchema, options);\n }\n async listPrompts(params, options) {\n return this.request({ method: 'prompts/list', params }, ListPromptsResultSchema, options);\n }\n async listResources(params, options) {\n return this.request({ method: 'resources/list', params }, ListResourcesResultSchema, options);\n }\n async listResourceTemplates(params, options) {\n return this.request({ method: 'resources/templates/list', params }, ListResourceTemplatesResultSchema, options);\n }\n async readResource(params, options) {\n return this.request({ method: 'resources/read', params }, ReadResourceResultSchema, options);\n }\n async subscribeResource(params, options) {\n return this.request({ method: 'resources/subscribe', params }, EmptyResultSchema, options);\n }\n async unsubscribeResource(params, options) {\n return this.request({ method: 'resources/unsubscribe', params }, EmptyResultSchema, options);\n }\n async callTool(params, resultSchema = CallToolResultSchema, options) {\n const result = await this.request({ method: 'tools/call', params }, resultSchema, options);\n // Check if the tool has an outputSchema\n const validator = this.getToolOutputValidator(params.name);\n if (validator) {\n // If tool has outputSchema, it MUST return structuredContent (unless it's an error)\n if (!result.structuredContent && !result.isError) {\n throw new McpError(ErrorCode.InvalidRequest, `Tool ${params.name} has an output schema but did not return structured content`);\n }\n // Only validate structured content if present (not when there's an error)\n if (result.structuredContent) {\n try {\n // Validate the structured content against the schema\n const validationResult = validator(result.structuredContent);\n if (!validationResult.valid) {\n throw new McpError(ErrorCode.InvalidParams, `Structured content does not match the tool's output schema: ${validationResult.errorMessage}`);\n }\n }\n catch (error) {\n if (error instanceof McpError) {\n throw error;\n }\n throw new McpError(ErrorCode.InvalidParams, `Failed to validate structured content: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n }\n return result;\n }\n /**\n * Cache validators for tool output schemas.\n * Called after listTools() to pre-compile validators for better performance.\n */\n cacheToolOutputSchemas(tools) {\n this._cachedToolOutputValidators.clear();\n for (const tool of tools) {\n // If the tool has an outputSchema, create and cache the validator\n if (tool.outputSchema) {\n const toolValidator = this._jsonSchemaValidator.getValidator(tool.outputSchema);\n this._cachedToolOutputValidators.set(tool.name, toolValidator);\n }\n }\n }\n /**\n * Get cached validator for a tool\n */\n getToolOutputValidator(toolName) {\n return this._cachedToolOutputValidators.get(toolName);\n }\n async listTools(params, options) {\n const result = await this.request({ method: 'tools/list', params }, ListToolsResultSchema, options);\n // Cache the tools and their output schemas for future validation\n this.cacheToolOutputSchemas(result.tools);\n return result;\n }\n async sendRootsListChanged() {\n return this.notification({ method: 'notifications/roots/list_changed' });\n }\n}\n//# sourceMappingURL=index.js.map",
106
+ "let crypto;\ncrypto =\n globalThis.crypto?.webcrypto ?? // Node.js [18-16] REPL\n globalThis.crypto ?? // Node.js >18\n import(\"node:crypto\").then(m => m.webcrypto); // Node.js <18 Non-REPL\n/**\n * Creates an array of length `size` of random bytes\n * @param size\n * @returns Array of random ints (0 to 255)\n */\nasync function getRandomValues(size) {\n return (await crypto).getRandomValues(new Uint8Array(size));\n}\n/** Generate cryptographically strong random string\n * @param size The desired length of the string\n * @returns The random string\n */\nasync function random(size) {\n const mask = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~\";\n let result = \"\";\n const randomUints = await getRandomValues(size);\n for (let i = 0; i < size; i++) {\n // cap the value of the randomIndex to mask.length - 1\n const randomIndex = randomUints[i] % mask.length;\n result += mask[randomIndex];\n }\n return result;\n}\n/** Generate a PKCE challenge verifier\n * @param length Length of the verifier\n * @returns A random verifier `length` characters long\n */\nasync function generateVerifier(length) {\n return await random(length);\n}\n/** Generate a PKCE code challenge from a code verifier\n * @param code_verifier\n * @returns The base64 url encoded code challenge\n */\nexport async function generateChallenge(code_verifier) {\n const buffer = await (await crypto).subtle.digest(\"SHA-256\", new TextEncoder().encode(code_verifier));\n // Generate base64url string\n // btoa is deprecated in Node.js but is used here for web browser compatibility\n // (which has no good replacement yet, see also https://github.com/whatwg/html/issues/6811)\n return btoa(String.fromCharCode(...new Uint8Array(buffer)))\n .replace(/\\//g, '_')\n .replace(/\\+/g, '-')\n .replace(/=/g, '');\n}\n/** Generate a PKCE challenge pair\n * @param length Length of the verifer (between 43-128). Defaults to 43.\n * @returns PKCE challenge pair\n */\nexport default async function pkceChallenge(length) {\n if (!length)\n length = 43;\n if (length < 43 || length > 128) {\n throw `Expected a length between 43 and 128. Received ${length}.`;\n }\n const verifier = await generateVerifier(length);\n const challenge = await generateChallenge(verifier);\n return {\n code_verifier: verifier,\n code_challenge: challenge,\n };\n}\n/** Verify that a code_verifier produces the expected code challenge\n * @param code_verifier\n * @param expectedChallenge The code challenge to verify\n * @returns True if challenges are equal. False otherwise.\n */\nexport async function verifyChallenge(code_verifier, expectedChallenge) {\n const actualChallenge = await generateChallenge(code_verifier);\n return actualChallenge === expectedChallenge;\n}\n",
107
+ "import { z } from 'zod';\n/**\n * Reusable URL validation that disallows javascript: scheme\n */\nexport const SafeUrlSchema = z\n .string()\n .url()\n .superRefine((val, ctx) => {\n if (!URL.canParse(val)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'URL must be parseable',\n fatal: true\n });\n return z.NEVER;\n }\n})\n .refine(url => {\n const u = new URL(url);\n return u.protocol !== 'javascript:' && u.protocol !== 'data:' && u.protocol !== 'vbscript:';\n}, { message: 'URL cannot use javascript:, data:, or vbscript: scheme' });\n/**\n * RFC 9728 OAuth Protected Resource Metadata\n */\nexport const OAuthProtectedResourceMetadataSchema = z\n .object({\n resource: z.string().url(),\n authorization_servers: z.array(SafeUrlSchema).optional(),\n jwks_uri: z.string().url().optional(),\n scopes_supported: z.array(z.string()).optional(),\n bearer_methods_supported: z.array(z.string()).optional(),\n resource_signing_alg_values_supported: z.array(z.string()).optional(),\n resource_name: z.string().optional(),\n resource_documentation: z.string().optional(),\n resource_policy_uri: z.string().url().optional(),\n resource_tos_uri: z.string().url().optional(),\n tls_client_certificate_bound_access_tokens: z.boolean().optional(),\n authorization_details_types_supported: z.array(z.string()).optional(),\n dpop_signing_alg_values_supported: z.array(z.string()).optional(),\n dpop_bound_access_tokens_required: z.boolean().optional()\n})\n .passthrough();\n/**\n * RFC 8414 OAuth 2.0 Authorization Server Metadata\n */\nexport const OAuthMetadataSchema = z\n .object({\n issuer: z.string(),\n authorization_endpoint: SafeUrlSchema,\n token_endpoint: SafeUrlSchema,\n registration_endpoint: SafeUrlSchema.optional(),\n scopes_supported: z.array(z.string()).optional(),\n response_types_supported: z.array(z.string()),\n response_modes_supported: z.array(z.string()).optional(),\n grant_types_supported: z.array(z.string()).optional(),\n token_endpoint_auth_methods_supported: z.array(z.string()).optional(),\n token_endpoint_auth_signing_alg_values_supported: z.array(z.string()).optional(),\n service_documentation: SafeUrlSchema.optional(),\n revocation_endpoint: SafeUrlSchema.optional(),\n revocation_endpoint_auth_methods_supported: z.array(z.string()).optional(),\n revocation_endpoint_auth_signing_alg_values_supported: z.array(z.string()).optional(),\n introspection_endpoint: z.string().optional(),\n introspection_endpoint_auth_methods_supported: z.array(z.string()).optional(),\n introspection_endpoint_auth_signing_alg_values_supported: z.array(z.string()).optional(),\n code_challenge_methods_supported: z.array(z.string()).optional()\n})\n .passthrough();\n/**\n * OpenID Connect Discovery 1.0 Provider Metadata\n * see: https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata\n */\nexport const OpenIdProviderMetadataSchema = z\n .object({\n issuer: z.string(),\n authorization_endpoint: SafeUrlSchema,\n token_endpoint: SafeUrlSchema,\n userinfo_endpoint: SafeUrlSchema.optional(),\n jwks_uri: SafeUrlSchema,\n registration_endpoint: SafeUrlSchema.optional(),\n scopes_supported: z.array(z.string()).optional(),\n response_types_supported: z.array(z.string()),\n response_modes_supported: z.array(z.string()).optional(),\n grant_types_supported: z.array(z.string()).optional(),\n acr_values_supported: z.array(z.string()).optional(),\n subject_types_supported: z.array(z.string()),\n id_token_signing_alg_values_supported: z.array(z.string()),\n id_token_encryption_alg_values_supported: z.array(z.string()).optional(),\n id_token_encryption_enc_values_supported: z.array(z.string()).optional(),\n userinfo_signing_alg_values_supported: z.array(z.string()).optional(),\n userinfo_encryption_alg_values_supported: z.array(z.string()).optional(),\n userinfo_encryption_enc_values_supported: z.array(z.string()).optional(),\n request_object_signing_alg_values_supported: z.array(z.string()).optional(),\n request_object_encryption_alg_values_supported: z.array(z.string()).optional(),\n request_object_encryption_enc_values_supported: z.array(z.string()).optional(),\n token_endpoint_auth_methods_supported: z.array(z.string()).optional(),\n token_endpoint_auth_signing_alg_values_supported: z.array(z.string()).optional(),\n display_values_supported: z.array(z.string()).optional(),\n claim_types_supported: z.array(z.string()).optional(),\n claims_supported: z.array(z.string()).optional(),\n service_documentation: z.string().optional(),\n claims_locales_supported: z.array(z.string()).optional(),\n ui_locales_supported: z.array(z.string()).optional(),\n claims_parameter_supported: z.boolean().optional(),\n request_parameter_supported: z.boolean().optional(),\n request_uri_parameter_supported: z.boolean().optional(),\n require_request_uri_registration: z.boolean().optional(),\n op_policy_uri: SafeUrlSchema.optional(),\n op_tos_uri: SafeUrlSchema.optional()\n})\n .passthrough();\n/**\n * OpenID Connect Discovery metadata that may include OAuth 2.0 fields\n * This schema represents the real-world scenario where OIDC providers\n * return a mix of OpenID Connect and OAuth 2.0 metadata fields\n */\nexport const OpenIdProviderDiscoveryMetadataSchema = OpenIdProviderMetadataSchema.merge(OAuthMetadataSchema.pick({\n code_challenge_methods_supported: true\n}));\n/**\n * OAuth 2.1 token response\n */\nexport const OAuthTokensSchema = z\n .object({\n access_token: z.string(),\n id_token: z.string().optional(), // Optional for OAuth 2.1, but necessary in OpenID Connect\n token_type: z.string(),\n expires_in: z.number().optional(),\n scope: z.string().optional(),\n refresh_token: z.string().optional()\n})\n .strip();\n/**\n * OAuth 2.1 error response\n */\nexport const OAuthErrorResponseSchema = z.object({\n error: z.string(),\n error_description: z.string().optional(),\n error_uri: z.string().optional()\n});\n/**\n * Optional version of SafeUrlSchema that allows empty string for retrocompatibility on tos_uri and logo_uri\n */\nexport const OptionalSafeUrlSchema = SafeUrlSchema.optional().or(z.literal('').transform(() => undefined));\n/**\n * RFC 7591 OAuth 2.0 Dynamic Client Registration metadata\n */\nexport const OAuthClientMetadataSchema = z\n .object({\n redirect_uris: z.array(SafeUrlSchema),\n token_endpoint_auth_method: z.string().optional(),\n grant_types: z.array(z.string()).optional(),\n response_types: z.array(z.string()).optional(),\n client_name: z.string().optional(),\n client_uri: SafeUrlSchema.optional(),\n logo_uri: OptionalSafeUrlSchema,\n scope: z.string().optional(),\n contacts: z.array(z.string()).optional(),\n tos_uri: OptionalSafeUrlSchema,\n policy_uri: z.string().optional(),\n jwks_uri: SafeUrlSchema.optional(),\n jwks: z.any().optional(),\n software_id: z.string().optional(),\n software_version: z.string().optional(),\n software_statement: z.string().optional()\n})\n .strip();\n/**\n * RFC 7591 OAuth 2.0 Dynamic Client Registration client information\n */\nexport const OAuthClientInformationSchema = z\n .object({\n client_id: z.string(),\n client_secret: z.string().optional(),\n client_id_issued_at: z.number().optional(),\n client_secret_expires_at: z.number().optional()\n})\n .strip();\n/**\n * RFC 7591 OAuth 2.0 Dynamic Client Registration full response (client information plus metadata)\n */\nexport const OAuthClientInformationFullSchema = OAuthClientMetadataSchema.merge(OAuthClientInformationSchema);\n/**\n * RFC 7591 OAuth 2.0 Dynamic Client Registration error response\n */\nexport const OAuthClientRegistrationErrorSchema = z\n .object({\n error: z.string(),\n error_description: z.string().optional()\n})\n .strip();\n/**\n * RFC 7009 OAuth 2.0 Token Revocation request\n */\nexport const OAuthTokenRevocationRequestSchema = z\n .object({\n token: z.string(),\n token_type_hint: z.string().optional()\n})\n .strip();\n//# sourceMappingURL=auth.js.map",
108
+ "/**\n * Utilities for handling OAuth resource URIs.\n */\n/**\n * Converts a server URL to a resource URL by removing the fragment.\n * RFC 8707 section 2 states that resource URIs \"MUST NOT include a fragment component\".\n * Keeps everything else unchanged (scheme, domain, port, path, query).\n */\nexport function resourceUrlFromServerUrl(url) {\n const resourceURL = typeof url === 'string' ? new URL(url) : new URL(url.href);\n resourceURL.hash = ''; // Remove fragment\n return resourceURL;\n}\n/**\n * Checks if a requested resource URL matches a configured resource URL.\n * A requested resource matches if it has the same scheme, domain, port,\n * and its path starts with the configured resource's path.\n *\n * @param requestedResource The resource URL being requested\n * @param configuredResource The resource URL that has been configured\n * @returns true if the requested resource matches the configured resource, false otherwise\n */\nexport function checkResourceAllowed({ requestedResource, configuredResource }) {\n const requested = typeof requestedResource === 'string' ? new URL(requestedResource) : new URL(requestedResource.href);\n const configured = typeof configuredResource === 'string' ? new URL(configuredResource) : new URL(configuredResource.href);\n // Compare the origin (scheme, domain, and port)\n if (requested.origin !== configured.origin) {\n return false;\n }\n // Handle cases like requested=/foo and configured=/foo/\n if (requested.pathname.length < configured.pathname.length) {\n return false;\n }\n // Check if the requested path starts with the configured path\n // Ensure both paths end with / for proper comparison\n // This ensures that if we have paths like \"/api\" and \"/api/users\",\n // we properly detect that \"/api/users\" is a subpath of \"/api\"\n // By adding a trailing slash if missing, we avoid false positives\n // where paths like \"/api123\" would incorrectly match \"/api\"\n const requestedPath = requested.pathname.endsWith('/') ? requested.pathname : requested.pathname + '/';\n const configuredPath = configured.pathname.endsWith('/') ? configured.pathname : configured.pathname + '/';\n return requestedPath.startsWith(configuredPath);\n}\n//# sourceMappingURL=auth-utils.js.map",
109
+ "/**\n * Base class for all OAuth errors\n */\nexport class OAuthError extends Error {\n constructor(message, errorUri) {\n super(message);\n this.errorUri = errorUri;\n this.name = this.constructor.name;\n }\n /**\n * Converts the error to a standard OAuth error response object\n */\n toResponseObject() {\n const response = {\n error: this.errorCode,\n error_description: this.message\n };\n if (this.errorUri) {\n response.error_uri = this.errorUri;\n }\n return response;\n }\n get errorCode() {\n return this.constructor.errorCode;\n }\n}\n/**\n * Invalid request error - The request is missing a required parameter,\n * includes an invalid parameter value, includes a parameter more than once,\n * or is otherwise malformed.\n */\nexport class InvalidRequestError extends OAuthError {\n}\nInvalidRequestError.errorCode = 'invalid_request';\n/**\n * Invalid client error - Client authentication failed (e.g., unknown client, no client\n * authentication included, or unsupported authentication method).\n */\nexport class InvalidClientError extends OAuthError {\n}\nInvalidClientError.errorCode = 'invalid_client';\n/**\n * Invalid grant error - The provided authorization grant or refresh token is\n * invalid, expired, revoked, does not match the redirection URI used in the\n * authorization request, or was issued to another client.\n */\nexport class InvalidGrantError extends OAuthError {\n}\nInvalidGrantError.errorCode = 'invalid_grant';\n/**\n * Unauthorized client error - The authenticated client is not authorized to use\n * this authorization grant type.\n */\nexport class UnauthorizedClientError extends OAuthError {\n}\nUnauthorizedClientError.errorCode = 'unauthorized_client';\n/**\n * Unsupported grant type error - The authorization grant type is not supported\n * by the authorization server.\n */\nexport class UnsupportedGrantTypeError extends OAuthError {\n}\nUnsupportedGrantTypeError.errorCode = 'unsupported_grant_type';\n/**\n * Invalid scope error - The requested scope is invalid, unknown, malformed, or\n * exceeds the scope granted by the resource owner.\n */\nexport class InvalidScopeError extends OAuthError {\n}\nInvalidScopeError.errorCode = 'invalid_scope';\n/**\n * Access denied error - The resource owner or authorization server denied the request.\n */\nexport class AccessDeniedError extends OAuthError {\n}\nAccessDeniedError.errorCode = 'access_denied';\n/**\n * Server error - The authorization server encountered an unexpected condition\n * that prevented it from fulfilling the request.\n */\nexport class ServerError extends OAuthError {\n}\nServerError.errorCode = 'server_error';\n/**\n * Temporarily unavailable error - The authorization server is currently unable to\n * handle the request due to a temporary overloading or maintenance of the server.\n */\nexport class TemporarilyUnavailableError extends OAuthError {\n}\nTemporarilyUnavailableError.errorCode = 'temporarily_unavailable';\n/**\n * Unsupported response type error - The authorization server does not support\n * obtaining an authorization code using this method.\n */\nexport class UnsupportedResponseTypeError extends OAuthError {\n}\nUnsupportedResponseTypeError.errorCode = 'unsupported_response_type';\n/**\n * Unsupported token type error - The authorization server does not support\n * the requested token type.\n */\nexport class UnsupportedTokenTypeError extends OAuthError {\n}\nUnsupportedTokenTypeError.errorCode = 'unsupported_token_type';\n/**\n * Invalid token error - The access token provided is expired, revoked, malformed,\n * or invalid for other reasons.\n */\nexport class InvalidTokenError extends OAuthError {\n}\nInvalidTokenError.errorCode = 'invalid_token';\n/**\n * Method not allowed error - The HTTP method used is not allowed for this endpoint.\n * (Custom, non-standard error)\n */\nexport class MethodNotAllowedError extends OAuthError {\n}\nMethodNotAllowedError.errorCode = 'method_not_allowed';\n/**\n * Too many requests error - Rate limit exceeded.\n * (Custom, non-standard error based on RFC 6585)\n */\nexport class TooManyRequestsError extends OAuthError {\n}\nTooManyRequestsError.errorCode = 'too_many_requests';\n/**\n * Invalid client metadata error - The client metadata is invalid.\n * (Custom error for dynamic client registration - RFC 7591)\n */\nexport class InvalidClientMetadataError extends OAuthError {\n}\nInvalidClientMetadataError.errorCode = 'invalid_client_metadata';\n/**\n * Insufficient scope error - The request requires higher privileges than provided by the access token.\n */\nexport class InsufficientScopeError extends OAuthError {\n}\nInsufficientScopeError.errorCode = 'insufficient_scope';\n/**\n * A utility class for defining one-off error codes\n */\nexport class CustomOAuthError extends OAuthError {\n constructor(customErrorCode, message, errorUri) {\n super(message, errorUri);\n this.customErrorCode = customErrorCode;\n }\n get errorCode() {\n return this.customErrorCode;\n }\n}\n/**\n * A full list of all OAuthErrors, enabling parsing from error responses\n */\nexport const OAUTH_ERRORS = {\n [InvalidRequestError.errorCode]: InvalidRequestError,\n [InvalidClientError.errorCode]: InvalidClientError,\n [InvalidGrantError.errorCode]: InvalidGrantError,\n [UnauthorizedClientError.errorCode]: UnauthorizedClientError,\n [UnsupportedGrantTypeError.errorCode]: UnsupportedGrantTypeError,\n [InvalidScopeError.errorCode]: InvalidScopeError,\n [AccessDeniedError.errorCode]: AccessDeniedError,\n [ServerError.errorCode]: ServerError,\n [TemporarilyUnavailableError.errorCode]: TemporarilyUnavailableError,\n [UnsupportedResponseTypeError.errorCode]: UnsupportedResponseTypeError,\n [UnsupportedTokenTypeError.errorCode]: UnsupportedTokenTypeError,\n [InvalidTokenError.errorCode]: InvalidTokenError,\n [MethodNotAllowedError.errorCode]: MethodNotAllowedError,\n [TooManyRequestsError.errorCode]: TooManyRequestsError,\n [InvalidClientMetadataError.errorCode]: InvalidClientMetadataError,\n [InsufficientScopeError.errorCode]: InsufficientScopeError\n};\n//# sourceMappingURL=errors.js.map",
110
+ "import pkceChallenge from 'pkce-challenge';\nimport { LATEST_PROTOCOL_VERSION } from '../types.js';\nimport { OAuthErrorResponseSchema, OpenIdProviderDiscoveryMetadataSchema } from '../shared/auth.js';\nimport { OAuthClientInformationFullSchema, OAuthMetadataSchema, OAuthProtectedResourceMetadataSchema, OAuthTokensSchema } from '../shared/auth.js';\nimport { checkResourceAllowed, resourceUrlFromServerUrl } from '../shared/auth-utils.js';\nimport { InvalidClientError, InvalidGrantError, OAUTH_ERRORS, OAuthError, ServerError, UnauthorizedClientError } from '../server/auth/errors.js';\nexport class UnauthorizedError extends Error {\n constructor(message) {\n super(message !== null && message !== void 0 ? message : 'Unauthorized');\n }\n}\nfunction isClientAuthMethod(method) {\n return ['client_secret_basic', 'client_secret_post', 'none'].includes(method);\n}\nconst AUTHORIZATION_CODE_RESPONSE_TYPE = 'code';\nconst AUTHORIZATION_CODE_CHALLENGE_METHOD = 'S256';\n/**\n * Determines the best client authentication method to use based on server support and client configuration.\n *\n * Priority order (highest to lowest):\n * 1. client_secret_basic (if client secret is available)\n * 2. client_secret_post (if client secret is available)\n * 3. none (for public clients)\n *\n * @param clientInformation - OAuth client information containing credentials\n * @param supportedMethods - Authentication methods supported by the authorization server\n * @returns The selected authentication method\n */\nexport function selectClientAuthMethod(clientInformation, supportedMethods) {\n const hasClientSecret = clientInformation.client_secret !== undefined;\n // If server doesn't specify supported methods, use RFC 6749 defaults\n if (supportedMethods.length === 0) {\n return hasClientSecret ? 'client_secret_post' : 'none';\n }\n // Prefer the method returned by the server during client registration if valid and supported\n if ('token_endpoint_auth_method' in clientInformation &&\n clientInformation.token_endpoint_auth_method &&\n isClientAuthMethod(clientInformation.token_endpoint_auth_method) &&\n supportedMethods.includes(clientInformation.token_endpoint_auth_method)) {\n return clientInformation.token_endpoint_auth_method;\n }\n // Try methods in priority order (most secure first)\n if (hasClientSecret && supportedMethods.includes('client_secret_basic')) {\n return 'client_secret_basic';\n }\n if (hasClientSecret && supportedMethods.includes('client_secret_post')) {\n return 'client_secret_post';\n }\n if (supportedMethods.includes('none')) {\n return 'none';\n }\n // Fallback: use what we have\n return hasClientSecret ? 'client_secret_post' : 'none';\n}\n/**\n * Applies client authentication to the request based on the specified method.\n *\n * Implements OAuth 2.1 client authentication methods:\n * - client_secret_basic: HTTP Basic authentication (RFC 6749 Section 2.3.1)\n * - client_secret_post: Credentials in request body (RFC 6749 Section 2.3.1)\n * - none: Public client authentication (RFC 6749 Section 2.1)\n *\n * @param method - The authentication method to use\n * @param clientInformation - OAuth client information containing credentials\n * @param headers - HTTP headers object to modify\n * @param params - URL search parameters to modify\n * @throws {Error} When required credentials are missing\n */\nfunction applyClientAuthentication(method, clientInformation, headers, params) {\n const { client_id, client_secret } = clientInformation;\n switch (method) {\n case 'client_secret_basic':\n applyBasicAuth(client_id, client_secret, headers);\n return;\n case 'client_secret_post':\n applyPostAuth(client_id, client_secret, params);\n return;\n case 'none':\n applyPublicAuth(client_id, params);\n return;\n default:\n throw new Error(`Unsupported client authentication method: ${method}`);\n }\n}\n/**\n * Applies HTTP Basic authentication (RFC 6749 Section 2.3.1)\n */\nfunction applyBasicAuth(clientId, clientSecret, headers) {\n if (!clientSecret) {\n throw new Error('client_secret_basic authentication requires a client_secret');\n }\n const credentials = btoa(`${clientId}:${clientSecret}`);\n headers.set('Authorization', `Basic ${credentials}`);\n}\n/**\n * Applies POST body authentication (RFC 6749 Section 2.3.1)\n */\nfunction applyPostAuth(clientId, clientSecret, params) {\n params.set('client_id', clientId);\n if (clientSecret) {\n params.set('client_secret', clientSecret);\n }\n}\n/**\n * Applies public client authentication (RFC 6749 Section 2.1)\n */\nfunction applyPublicAuth(clientId, params) {\n params.set('client_id', clientId);\n}\n/**\n * Parses an OAuth error response from a string or Response object.\n *\n * If the input is a standard OAuth2.0 error response, it will be parsed according to the spec\n * and an instance of the appropriate OAuthError subclass will be returned.\n * If parsing fails, it falls back to a generic ServerError that includes\n * the response status (if available) and original content.\n *\n * @param input - A Response object or string containing the error response\n * @returns A Promise that resolves to an OAuthError instance\n */\nexport async function parseErrorResponse(input) {\n const statusCode = input instanceof Response ? input.status : undefined;\n const body = input instanceof Response ? await input.text() : input;\n try {\n const result = OAuthErrorResponseSchema.parse(JSON.parse(body));\n const { error, error_description, error_uri } = result;\n const errorClass = OAUTH_ERRORS[error] || ServerError;\n return new errorClass(error_description || '', error_uri);\n }\n catch (error) {\n // Not a valid OAuth error response, but try to inform the user of the raw data anyway\n const errorMessage = `${statusCode ? `HTTP ${statusCode}: ` : ''}Invalid OAuth error response: ${error}. Raw body: ${body}`;\n return new ServerError(errorMessage);\n }\n}\n/**\n * Orchestrates the full auth flow with a server.\n *\n * This can be used as a single entry point for all authorization functionality,\n * instead of linking together the other lower-level functions in this module.\n */\nexport async function auth(provider, options) {\n var _a, _b;\n try {\n return await authInternal(provider, options);\n }\n catch (error) {\n // Handle recoverable error types by invalidating credentials and retrying\n if (error instanceof InvalidClientError || error instanceof UnauthorizedClientError) {\n await ((_a = provider.invalidateCredentials) === null || _a === void 0 ? void 0 : _a.call(provider, 'all'));\n return await authInternal(provider, options);\n }\n else if (error instanceof InvalidGrantError) {\n await ((_b = provider.invalidateCredentials) === null || _b === void 0 ? void 0 : _b.call(provider, 'tokens'));\n return await authInternal(provider, options);\n }\n // Throw otherwise\n throw error;\n }\n}\nasync function authInternal(provider, { serverUrl, authorizationCode, scope, resourceMetadataUrl, fetchFn }) {\n let resourceMetadata;\n let authorizationServerUrl;\n try {\n resourceMetadata = await discoverOAuthProtectedResourceMetadata(serverUrl, { resourceMetadataUrl }, fetchFn);\n if (resourceMetadata.authorization_servers && resourceMetadata.authorization_servers.length > 0) {\n authorizationServerUrl = resourceMetadata.authorization_servers[0];\n }\n }\n catch (_a) {\n // Ignore errors and fall back to /.well-known/oauth-authorization-server\n }\n /**\n * If we don't get a valid authorization server metadata from protected resource metadata,\n * fallback to the legacy MCP spec's implementation (version 2025-03-26): MCP server base URL acts as the Authorization server.\n */\n if (!authorizationServerUrl) {\n authorizationServerUrl = new URL('/', serverUrl);\n }\n const resource = await selectResourceURL(serverUrl, provider, resourceMetadata);\n const metadata = await discoverAuthorizationServerMetadata(authorizationServerUrl, {\n fetchFn\n });\n // Handle client registration if needed\n let clientInformation = await Promise.resolve(provider.clientInformation());\n if (!clientInformation) {\n if (authorizationCode !== undefined) {\n throw new Error('Existing OAuth client information is required when exchanging an authorization code');\n }\n if (!provider.saveClientInformation) {\n throw new Error('OAuth client information must be saveable for dynamic registration');\n }\n const fullInformation = await registerClient(authorizationServerUrl, {\n metadata,\n clientMetadata: provider.clientMetadata,\n fetchFn\n });\n await provider.saveClientInformation(fullInformation);\n clientInformation = fullInformation;\n }\n // Exchange authorization code for tokens\n if (authorizationCode !== undefined) {\n const codeVerifier = await provider.codeVerifier();\n const tokens = await exchangeAuthorization(authorizationServerUrl, {\n metadata,\n clientInformation,\n authorizationCode,\n codeVerifier,\n redirectUri: provider.redirectUrl,\n resource,\n addClientAuthentication: provider.addClientAuthentication,\n fetchFn: fetchFn\n });\n await provider.saveTokens(tokens);\n return 'AUTHORIZED';\n }\n const tokens = await provider.tokens();\n // Handle token refresh or new authorization\n if (tokens === null || tokens === void 0 ? void 0 : tokens.refresh_token) {\n try {\n // Attempt to refresh the token\n const newTokens = await refreshAuthorization(authorizationServerUrl, {\n metadata,\n clientInformation,\n refreshToken: tokens.refresh_token,\n resource,\n addClientAuthentication: provider.addClientAuthentication,\n fetchFn\n });\n await provider.saveTokens(newTokens);\n return 'AUTHORIZED';\n }\n catch (error) {\n // If this is a ServerError, or an unknown type, log it out and try to continue. Otherwise, escalate so we can fix things and retry.\n if (!(error instanceof OAuthError) || error instanceof ServerError) {\n // Could not refresh OAuth tokens\n }\n else {\n // Refresh failed for another reason, re-throw\n throw error;\n }\n }\n }\n const state = provider.state ? await provider.state() : undefined;\n // Start new authorization flow\n const { authorizationUrl, codeVerifier } = await startAuthorization(authorizationServerUrl, {\n metadata,\n clientInformation,\n state,\n redirectUrl: provider.redirectUrl,\n scope: scope || provider.clientMetadata.scope,\n resource\n });\n await provider.saveCodeVerifier(codeVerifier);\n await provider.redirectToAuthorization(authorizationUrl);\n return 'REDIRECT';\n}\nexport async function selectResourceURL(serverUrl, provider, resourceMetadata) {\n const defaultResource = resourceUrlFromServerUrl(serverUrl);\n // If provider has custom validation, delegate to it\n if (provider.validateResourceURL) {\n return await provider.validateResourceURL(defaultResource, resourceMetadata === null || resourceMetadata === void 0 ? void 0 : resourceMetadata.resource);\n }\n // Only include resource parameter when Protected Resource Metadata is present\n if (!resourceMetadata) {\n return undefined;\n }\n // Validate that the metadata's resource is compatible with our request\n if (!checkResourceAllowed({ requestedResource: defaultResource, configuredResource: resourceMetadata.resource })) {\n throw new Error(`Protected resource ${resourceMetadata.resource} does not match expected ${defaultResource} (or origin)`);\n }\n // Prefer the resource from metadata since it's what the server is telling us to request\n return new URL(resourceMetadata.resource);\n}\n/**\n * Extract resource_metadata and scope from WWW-Authenticate header.\n */\nexport function extractWWWAuthenticateParams(res) {\n const authenticateHeader = res.headers.get('WWW-Authenticate');\n if (!authenticateHeader) {\n return {};\n }\n const [type, scheme] = authenticateHeader.split(' ');\n if (type.toLowerCase() !== 'bearer' || !scheme) {\n return {};\n }\n const resourceMetadataRegex = /resource_metadata=\"([^\"]*)\"/;\n const resourceMetadataMatch = resourceMetadataRegex.exec(authenticateHeader);\n const scopeRegex = /scope=\"([^\"]*)\"/;\n const scopeMatch = scopeRegex.exec(authenticateHeader);\n let resourceMetadataUrl;\n if (resourceMetadataMatch) {\n try {\n resourceMetadataUrl = new URL(resourceMetadataMatch[1]);\n }\n catch (_a) {\n // Ignore invalid URL\n }\n }\n const scope = (scopeMatch === null || scopeMatch === void 0 ? void 0 : scopeMatch[1]) || undefined;\n return {\n resourceMetadataUrl,\n scope\n };\n}\n/**\n * Extract resource_metadata from response header.\n * @deprecated Use `extractWWWAuthenticateParams` instead.\n */\nexport function extractResourceMetadataUrl(res) {\n const authenticateHeader = res.headers.get('WWW-Authenticate');\n if (!authenticateHeader) {\n return undefined;\n }\n const [type, scheme] = authenticateHeader.split(' ');\n if (type.toLowerCase() !== 'bearer' || !scheme) {\n return undefined;\n }\n const regex = /resource_metadata=\"([^\"]*)\"/;\n const match = regex.exec(authenticateHeader);\n if (!match) {\n return undefined;\n }\n try {\n return new URL(match[1]);\n }\n catch (_a) {\n return undefined;\n }\n}\n/**\n * Looks up RFC 9728 OAuth 2.0 Protected Resource Metadata.\n *\n * If the server returns a 404 for the well-known endpoint, this function will\n * return `undefined`. Any other errors will be thrown as exceptions.\n */\nexport async function discoverOAuthProtectedResourceMetadata(serverUrl, opts, fetchFn = fetch) {\n const response = await discoverMetadataWithFallback(serverUrl, 'oauth-protected-resource', fetchFn, {\n protocolVersion: opts === null || opts === void 0 ? void 0 : opts.protocolVersion,\n metadataUrl: opts === null || opts === void 0 ? void 0 : opts.resourceMetadataUrl\n });\n if (!response || response.status === 404) {\n throw new Error(`Resource server does not implement OAuth 2.0 Protected Resource Metadata.`);\n }\n if (!response.ok) {\n throw new Error(`HTTP ${response.status} trying to load well-known OAuth protected resource metadata.`);\n }\n return OAuthProtectedResourceMetadataSchema.parse(await response.json());\n}\n/**\n * Helper function to handle fetch with CORS retry logic\n */\nasync function fetchWithCorsRetry(url, headers, fetchFn = fetch) {\n try {\n return await fetchFn(url, { headers });\n }\n catch (error) {\n if (error instanceof TypeError) {\n if (headers) {\n // CORS errors come back as TypeError, retry without headers\n return fetchWithCorsRetry(url, undefined, fetchFn);\n }\n else {\n // We're getting CORS errors on retry too, return undefined\n return undefined;\n }\n }\n throw error;\n }\n}\n/**\n * Constructs the well-known path for auth-related metadata discovery\n */\nfunction buildWellKnownPath(wellKnownPrefix, pathname = '', options = {}) {\n // Strip trailing slash from pathname to avoid double slashes\n if (pathname.endsWith('/')) {\n pathname = pathname.slice(0, -1);\n }\n return options.prependPathname ? `${pathname}/.well-known/${wellKnownPrefix}` : `/.well-known/${wellKnownPrefix}${pathname}`;\n}\n/**\n * Tries to discover OAuth metadata at a specific URL\n */\nasync function tryMetadataDiscovery(url, protocolVersion, fetchFn = fetch) {\n const headers = {\n 'MCP-Protocol-Version': protocolVersion\n };\n return await fetchWithCorsRetry(url, headers, fetchFn);\n}\n/**\n * Determines if fallback to root discovery should be attempted\n */\nfunction shouldAttemptFallback(response, pathname) {\n return !response || (response.status >= 400 && response.status < 500 && pathname !== '/');\n}\n/**\n * Generic function for discovering OAuth metadata with fallback support\n */\nasync function discoverMetadataWithFallback(serverUrl, wellKnownType, fetchFn, opts) {\n var _a, _b;\n const issuer = new URL(serverUrl);\n const protocolVersion = (_a = opts === null || opts === void 0 ? void 0 : opts.protocolVersion) !== null && _a !== void 0 ? _a : LATEST_PROTOCOL_VERSION;\n let url;\n if (opts === null || opts === void 0 ? void 0 : opts.metadataUrl) {\n url = new URL(opts.metadataUrl);\n }\n else {\n // Try path-aware discovery first\n const wellKnownPath = buildWellKnownPath(wellKnownType, issuer.pathname);\n url = new URL(wellKnownPath, (_b = opts === null || opts === void 0 ? void 0 : opts.metadataServerUrl) !== null && _b !== void 0 ? _b : issuer);\n url.search = issuer.search;\n }\n let response = await tryMetadataDiscovery(url, protocolVersion, fetchFn);\n // If path-aware discovery fails with 404 and we're not already at root, try fallback to root discovery\n if (!(opts === null || opts === void 0 ? void 0 : opts.metadataUrl) && shouldAttemptFallback(response, issuer.pathname)) {\n const rootUrl = new URL(`/.well-known/${wellKnownType}`, issuer);\n response = await tryMetadataDiscovery(rootUrl, protocolVersion, fetchFn);\n }\n return response;\n}\n/**\n * Looks up RFC 8414 OAuth 2.0 Authorization Server Metadata.\n *\n * If the server returns a 404 for the well-known endpoint, this function will\n * return `undefined`. Any other errors will be thrown as exceptions.\n *\n * @deprecated This function is deprecated in favor of `discoverAuthorizationServerMetadata`.\n */\nexport async function discoverOAuthMetadata(issuer, { authorizationServerUrl, protocolVersion } = {}, fetchFn = fetch) {\n if (typeof issuer === 'string') {\n issuer = new URL(issuer);\n }\n if (!authorizationServerUrl) {\n authorizationServerUrl = issuer;\n }\n if (typeof authorizationServerUrl === 'string') {\n authorizationServerUrl = new URL(authorizationServerUrl);\n }\n protocolVersion !== null && protocolVersion !== void 0 ? protocolVersion : (protocolVersion = LATEST_PROTOCOL_VERSION);\n const response = await discoverMetadataWithFallback(authorizationServerUrl, 'oauth-authorization-server', fetchFn, {\n protocolVersion,\n metadataServerUrl: authorizationServerUrl\n });\n if (!response || response.status === 404) {\n return undefined;\n }\n if (!response.ok) {\n throw new Error(`HTTP ${response.status} trying to load well-known OAuth metadata`);\n }\n return OAuthMetadataSchema.parse(await response.json());\n}\n/**\n * Builds a list of discovery URLs to try for authorization server metadata.\n * URLs are returned in priority order:\n * 1. OAuth metadata at the given URL\n * 2. OIDC metadata endpoints at the given URL\n */\nexport function buildDiscoveryUrls(authorizationServerUrl) {\n const url = typeof authorizationServerUrl === 'string' ? new URL(authorizationServerUrl) : authorizationServerUrl;\n const hasPath = url.pathname !== '/';\n const urlsToTry = [];\n if (!hasPath) {\n // Root path: https://example.com/.well-known/oauth-authorization-server\n urlsToTry.push({\n url: new URL('/.well-known/oauth-authorization-server', url.origin),\n type: 'oauth'\n });\n // OIDC: https://example.com/.well-known/openid-configuration\n urlsToTry.push({\n url: new URL(`/.well-known/openid-configuration`, url.origin),\n type: 'oidc'\n });\n return urlsToTry;\n }\n // Strip trailing slash from pathname to avoid double slashes\n let pathname = url.pathname;\n if (pathname.endsWith('/')) {\n pathname = pathname.slice(0, -1);\n }\n // 1. OAuth metadata at the given URL\n // Insert well-known before the path: https://example.com/.well-known/oauth-authorization-server/tenant1\n urlsToTry.push({\n url: new URL(`/.well-known/oauth-authorization-server${pathname}`, url.origin),\n type: 'oauth'\n });\n // 2. OIDC metadata endpoints\n // RFC 8414 style: Insert /.well-known/openid-configuration before the path\n urlsToTry.push({\n url: new URL(`/.well-known/openid-configuration${pathname}`, url.origin),\n type: 'oidc'\n });\n // OIDC Discovery 1.0 style: Append /.well-known/openid-configuration after the path\n urlsToTry.push({\n url: new URL(`${pathname}/.well-known/openid-configuration`, url.origin),\n type: 'oidc'\n });\n return urlsToTry;\n}\n/**\n * Discovers authorization server metadata with support for RFC 8414 OAuth 2.0 Authorization Server Metadata\n * and OpenID Connect Discovery 1.0 specifications.\n *\n * This function implements a fallback strategy for authorization server discovery:\n * 1. Attempts RFC 8414 OAuth metadata discovery first\n * 2. If OAuth discovery fails, falls back to OpenID Connect Discovery\n *\n * @param authorizationServerUrl - The authorization server URL obtained from the MCP Server's\n * protected resource metadata, or the MCP server's URL if the\n * metadata was not found.\n * @param options - Configuration options\n * @param options.fetchFn - Optional fetch function for making HTTP requests, defaults to global fetch\n * @param options.protocolVersion - MCP protocol version to use, defaults to LATEST_PROTOCOL_VERSION\n * @returns Promise resolving to authorization server metadata, or undefined if discovery fails\n */\nexport async function discoverAuthorizationServerMetadata(authorizationServerUrl, { fetchFn = fetch, protocolVersion = LATEST_PROTOCOL_VERSION } = {}) {\n const headers = {\n 'MCP-Protocol-Version': protocolVersion,\n Accept: 'application/json'\n };\n // Get the list of URLs to try\n const urlsToTry = buildDiscoveryUrls(authorizationServerUrl);\n // Try each URL in order\n for (const { url: endpointUrl, type } of urlsToTry) {\n const response = await fetchWithCorsRetry(endpointUrl, headers, fetchFn);\n if (!response) {\n /**\n * CORS error occurred - don't throw as the endpoint may not allow CORS,\n * continue trying other possible endpoints\n */\n continue;\n }\n if (!response.ok) {\n // Continue looking for any 4xx response code.\n if (response.status >= 400 && response.status < 500) {\n continue; // Try next URL\n }\n throw new Error(`HTTP ${response.status} trying to load ${type === 'oauth' ? 'OAuth' : 'OpenID provider'} metadata from ${endpointUrl}`);\n }\n // Parse and validate based on type\n if (type === 'oauth') {\n return OAuthMetadataSchema.parse(await response.json());\n }\n else {\n return OpenIdProviderDiscoveryMetadataSchema.parse(await response.json());\n }\n }\n return undefined;\n}\n/**\n * Begins the authorization flow with the given server, by generating a PKCE challenge and constructing the authorization URL.\n */\nexport async function startAuthorization(authorizationServerUrl, { metadata, clientInformation, redirectUrl, scope, state, resource }) {\n let authorizationUrl;\n if (metadata) {\n authorizationUrl = new URL(metadata.authorization_endpoint);\n if (!metadata.response_types_supported.includes(AUTHORIZATION_CODE_RESPONSE_TYPE)) {\n throw new Error(`Incompatible auth server: does not support response type ${AUTHORIZATION_CODE_RESPONSE_TYPE}`);\n }\n if (metadata.code_challenge_methods_supported &&\n !metadata.code_challenge_methods_supported.includes(AUTHORIZATION_CODE_CHALLENGE_METHOD)) {\n throw new Error(`Incompatible auth server: does not support code challenge method ${AUTHORIZATION_CODE_CHALLENGE_METHOD}`);\n }\n }\n else {\n authorizationUrl = new URL('/authorize', authorizationServerUrl);\n }\n // Generate PKCE challenge\n const challenge = await pkceChallenge();\n const codeVerifier = challenge.code_verifier;\n const codeChallenge = challenge.code_challenge;\n authorizationUrl.searchParams.set('response_type', AUTHORIZATION_CODE_RESPONSE_TYPE);\n authorizationUrl.searchParams.set('client_id', clientInformation.client_id);\n authorizationUrl.searchParams.set('code_challenge', codeChallenge);\n authorizationUrl.searchParams.set('code_challenge_method', AUTHORIZATION_CODE_CHALLENGE_METHOD);\n authorizationUrl.searchParams.set('redirect_uri', String(redirectUrl));\n if (state) {\n authorizationUrl.searchParams.set('state', state);\n }\n if (scope) {\n authorizationUrl.searchParams.set('scope', scope);\n }\n if (scope === null || scope === void 0 ? void 0 : scope.includes('offline_access')) {\n // if the request includes the OIDC-only \"offline_access\" scope,\n // we need to set the prompt to \"consent\" to ensure the user is prompted to grant offline access\n // https://openid.net/specs/openid-connect-core-1_0.html#OfflineAccess\n authorizationUrl.searchParams.append('prompt', 'consent');\n }\n if (resource) {\n authorizationUrl.searchParams.set('resource', resource.href);\n }\n return { authorizationUrl, codeVerifier };\n}\n/**\n * Exchanges an authorization code for an access token with the given server.\n *\n * Supports multiple client authentication methods as specified in OAuth 2.1:\n * - Automatically selects the best authentication method based on server support\n * - Falls back to appropriate defaults when server metadata is unavailable\n *\n * @param authorizationServerUrl - The authorization server's base URL\n * @param options - Configuration object containing client info, auth code, etc.\n * @returns Promise resolving to OAuth tokens\n * @throws {Error} When token exchange fails or authentication is invalid\n */\nexport async function exchangeAuthorization(authorizationServerUrl, { metadata, clientInformation, authorizationCode, codeVerifier, redirectUri, resource, addClientAuthentication, fetchFn }) {\n var _a;\n const grantType = 'authorization_code';\n const tokenUrl = (metadata === null || metadata === void 0 ? void 0 : metadata.token_endpoint) ? new URL(metadata.token_endpoint) : new URL('/token', authorizationServerUrl);\n if ((metadata === null || metadata === void 0 ? void 0 : metadata.grant_types_supported) && !metadata.grant_types_supported.includes(grantType)) {\n throw new Error(`Incompatible auth server: does not support grant type ${grantType}`);\n }\n // Exchange code for tokens\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json'\n });\n const params = new URLSearchParams({\n grant_type: grantType,\n code: authorizationCode,\n code_verifier: codeVerifier,\n redirect_uri: String(redirectUri)\n });\n if (addClientAuthentication) {\n addClientAuthentication(headers, params, authorizationServerUrl, metadata);\n }\n else {\n // Determine and apply client authentication method\n const supportedMethods = (_a = metadata === null || metadata === void 0 ? void 0 : metadata.token_endpoint_auth_methods_supported) !== null && _a !== void 0 ? _a : [];\n const authMethod = selectClientAuthMethod(clientInformation, supportedMethods);\n applyClientAuthentication(authMethod, clientInformation, headers, params);\n }\n if (resource) {\n params.set('resource', resource.href);\n }\n const response = await (fetchFn !== null && fetchFn !== void 0 ? fetchFn : fetch)(tokenUrl, {\n method: 'POST',\n headers,\n body: params\n });\n if (!response.ok) {\n throw await parseErrorResponse(response);\n }\n return OAuthTokensSchema.parse(await response.json());\n}\n/**\n * Exchange a refresh token for an updated access token.\n *\n * Supports multiple client authentication methods as specified in OAuth 2.1:\n * - Automatically selects the best authentication method based on server support\n * - Preserves the original refresh token if a new one is not returned\n *\n * @param authorizationServerUrl - The authorization server's base URL\n * @param options - Configuration object containing client info, refresh token, etc.\n * @returns Promise resolving to OAuth tokens (preserves original refresh_token if not replaced)\n * @throws {Error} When token refresh fails or authentication is invalid\n */\nexport async function refreshAuthorization(authorizationServerUrl, { metadata, clientInformation, refreshToken, resource, addClientAuthentication, fetchFn }) {\n var _a;\n const grantType = 'refresh_token';\n let tokenUrl;\n if (metadata) {\n tokenUrl = new URL(metadata.token_endpoint);\n if (metadata.grant_types_supported && !metadata.grant_types_supported.includes(grantType)) {\n throw new Error(`Incompatible auth server: does not support grant type ${grantType}`);\n }\n }\n else {\n tokenUrl = new URL('/token', authorizationServerUrl);\n }\n // Exchange refresh token\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded'\n });\n const params = new URLSearchParams({\n grant_type: grantType,\n refresh_token: refreshToken\n });\n if (addClientAuthentication) {\n addClientAuthentication(headers, params, authorizationServerUrl, metadata);\n }\n else {\n // Determine and apply client authentication method\n const supportedMethods = (_a = metadata === null || metadata === void 0 ? void 0 : metadata.token_endpoint_auth_methods_supported) !== null && _a !== void 0 ? _a : [];\n const authMethod = selectClientAuthMethod(clientInformation, supportedMethods);\n applyClientAuthentication(authMethod, clientInformation, headers, params);\n }\n if (resource) {\n params.set('resource', resource.href);\n }\n const response = await (fetchFn !== null && fetchFn !== void 0 ? fetchFn : fetch)(tokenUrl, {\n method: 'POST',\n headers,\n body: params\n });\n if (!response.ok) {\n throw await parseErrorResponse(response);\n }\n return OAuthTokensSchema.parse({ refresh_token: refreshToken, ...(await response.json()) });\n}\n/**\n * Performs OAuth 2.0 Dynamic Client Registration according to RFC 7591.\n */\nexport async function registerClient(authorizationServerUrl, { metadata, clientMetadata, fetchFn }) {\n let registrationUrl;\n if (metadata) {\n if (!metadata.registration_endpoint) {\n throw new Error('Incompatible auth server: does not support dynamic client registration');\n }\n registrationUrl = new URL(metadata.registration_endpoint);\n }\n else {\n registrationUrl = new URL('/register', authorizationServerUrl);\n }\n const response = await (fetchFn !== null && fetchFn !== void 0 ? fetchFn : fetch)(registrationUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(clientMetadata)\n });\n if (!response.ok) {\n throw await parseErrorResponse(response);\n }\n return OAuthClientInformationFullSchema.parse(await response.json());\n}\n//# sourceMappingURL=auth.js.map",
111
+ "class ParseError extends Error {\n constructor(message, options) {\n super(message), this.name = \"ParseError\", this.type = options.type, this.field = options.field, this.value = options.value, this.line = options.line;\n }\n}\nfunction noop(_arg) {\n}\nfunction createParser(callbacks) {\n if (typeof callbacks == \"function\")\n throw new TypeError(\n \"`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?\"\n );\n const { onEvent = noop, onError = noop, onRetry = noop, onComment } = callbacks;\n let incompleteLine = \"\", isFirstChunk = !0, id, data = \"\", eventType = \"\";\n function feed(newChunk) {\n const chunk = isFirstChunk ? newChunk.replace(/^\\xEF\\xBB\\xBF/, \"\") : newChunk, [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`);\n for (const line of complete)\n parseLine(line);\n incompleteLine = incomplete, isFirstChunk = !1;\n }\n function parseLine(line) {\n if (line === \"\") {\n dispatchEvent();\n return;\n }\n if (line.startsWith(\":\")) {\n onComment && onComment(line.slice(line.startsWith(\": \") ? 2 : 1));\n return;\n }\n const fieldSeparatorIndex = line.indexOf(\":\");\n if (fieldSeparatorIndex !== -1) {\n const field = line.slice(0, fieldSeparatorIndex), offset = line[fieldSeparatorIndex + 1] === \" \" ? 2 : 1, value = line.slice(fieldSeparatorIndex + offset);\n processField(field, value, line);\n return;\n }\n processField(line, \"\", line);\n }\n function processField(field, value, line) {\n switch (field) {\n case \"event\":\n eventType = value;\n break;\n case \"data\":\n data = `${data}${value}\n`;\n break;\n case \"id\":\n id = value.includes(\"\\0\") ? void 0 : value;\n break;\n case \"retry\":\n /^\\d+$/.test(value) ? onRetry(parseInt(value, 10)) : onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: \"invalid-retry\",\n value,\n line\n })\n );\n break;\n default:\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}\\u2026` : field}\"`,\n { type: \"unknown-field\", field, value, line }\n )\n );\n break;\n }\n }\n function dispatchEvent() {\n data.length > 0 && onEvent({\n id,\n event: eventType || void 0,\n // If the data buffer's last character is a U+000A LINE FEED (LF) character,\n // then remove the last character from the data buffer.\n data: data.endsWith(`\n`) ? data.slice(0, -1) : data\n }), id = void 0, data = \"\", eventType = \"\";\n }\n function reset(options = {}) {\n incompleteLine && options.consume && parseLine(incompleteLine), isFirstChunk = !0, id = void 0, data = \"\", eventType = \"\", incompleteLine = \"\";\n }\n return { feed, reset };\n}\nfunction splitLines(chunk) {\n const lines = [];\n let incompleteLine = \"\", searchIndex = 0;\n for (; searchIndex < chunk.length; ) {\n const crIndex = chunk.indexOf(\"\\r\", searchIndex), lfIndex = chunk.indexOf(`\n`, searchIndex);\n let lineEnd = -1;\n if (crIndex !== -1 && lfIndex !== -1 ? lineEnd = Math.min(crIndex, lfIndex) : crIndex !== -1 ? lineEnd = crIndex : lfIndex !== -1 && (lineEnd = lfIndex), lineEnd === -1) {\n incompleteLine = chunk.slice(searchIndex);\n break;\n } else {\n const line = chunk.slice(searchIndex, lineEnd);\n lines.push(line), searchIndex = lineEnd + 1, chunk[searchIndex - 1] === \"\\r\" && chunk[searchIndex] === `\n` && searchIndex++;\n }\n }\n return [lines, incompleteLine];\n}\nexport {\n ParseError,\n createParser\n};\n//# sourceMappingURL=index.js.map\n",
112
+ "import { createParser } from \"./index.js\";\nimport { ParseError } from \"./index.js\";\nclass EventSourceParserStream extends TransformStream {\n constructor({ onError, onRetry, onComment } = {}) {\n let parser;\n super({\n start(controller) {\n parser = createParser({\n onEvent: (event) => {\n controller.enqueue(event);\n },\n onError(error) {\n onError === \"terminate\" ? controller.error(error) : typeof onError == \"function\" && onError(error);\n },\n onRetry,\n onComment\n });\n },\n transform(chunk) {\n parser.feed(chunk);\n }\n });\n }\n}\nexport {\n EventSourceParserStream,\n ParseError\n};\n//# sourceMappingURL=stream.js.map\n",
113
+ "import { isInitializedNotification, isJSONRPCRequest, isJSONRPCResponse, JSONRPCMessageSchema } from '../types.js';\nimport { auth, extractWWWAuthenticateParams, UnauthorizedError } from './auth.js';\nimport { EventSourceParserStream } from 'eventsource-parser/stream';\n// Default reconnection options for StreamableHTTP connections\nconst DEFAULT_STREAMABLE_HTTP_RECONNECTION_OPTIONS = {\n initialReconnectionDelay: 1000,\n maxReconnectionDelay: 30000,\n reconnectionDelayGrowFactor: 1.5,\n maxRetries: 2\n};\nexport class StreamableHTTPError extends Error {\n constructor(code, message) {\n super(`Streamable HTTP error: ${message}`);\n this.code = code;\n }\n}\n/**\n * Client transport for Streamable HTTP: this implements the MCP Streamable HTTP transport specification.\n * It will connect to a server using HTTP POST for sending messages and HTTP GET with Server-Sent Events\n * for receiving messages.\n */\nexport class StreamableHTTPClientTransport {\n constructor(url, opts) {\n var _a;\n this._hasCompletedAuthFlow = false; // Circuit breaker: detect auth success followed by immediate 401\n this._url = url;\n this._resourceMetadataUrl = undefined;\n this._scope = undefined;\n this._requestInit = opts === null || opts === void 0 ? void 0 : opts.requestInit;\n this._authProvider = opts === null || opts === void 0 ? void 0 : opts.authProvider;\n this._fetch = opts === null || opts === void 0 ? void 0 : opts.fetch;\n this._sessionId = opts === null || opts === void 0 ? void 0 : opts.sessionId;\n this._reconnectionOptions = (_a = opts === null || opts === void 0 ? void 0 : opts.reconnectionOptions) !== null && _a !== void 0 ? _a : DEFAULT_STREAMABLE_HTTP_RECONNECTION_OPTIONS;\n }\n async _authThenStart() {\n var _a;\n if (!this._authProvider) {\n throw new UnauthorizedError('No auth provider');\n }\n let result;\n try {\n result = await auth(this._authProvider, {\n serverUrl: this._url,\n resourceMetadataUrl: this._resourceMetadataUrl,\n scope: this._scope,\n fetchFn: this._fetch\n });\n }\n catch (error) {\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);\n throw error;\n }\n if (result !== 'AUTHORIZED') {\n throw new UnauthorizedError();\n }\n return await this._startOrAuthSse({ resumptionToken: undefined });\n }\n async _commonHeaders() {\n var _a;\n const headers = {};\n if (this._authProvider) {\n const tokens = await this._authProvider.tokens();\n if (tokens) {\n headers['Authorization'] = `Bearer ${tokens.access_token}`;\n }\n }\n if (this._sessionId) {\n headers['mcp-session-id'] = this._sessionId;\n }\n if (this._protocolVersion) {\n headers['mcp-protocol-version'] = this._protocolVersion;\n }\n const extraHeaders = this._normalizeHeaders((_a = this._requestInit) === null || _a === void 0 ? void 0 : _a.headers);\n return new Headers({\n ...headers,\n ...extraHeaders\n });\n }\n async _startOrAuthSse(options) {\n var _a, _b, _c;\n const { resumptionToken } = options;\n try {\n // Try to open an initial SSE stream with GET to listen for server messages\n // This is optional according to the spec - server may not support it\n const headers = await this._commonHeaders();\n headers.set('Accept', 'text/event-stream');\n // Include Last-Event-ID header for resumable streams if provided\n if (resumptionToken) {\n headers.set('last-event-id', resumptionToken);\n }\n const response = await ((_a = this._fetch) !== null && _a !== void 0 ? _a : fetch)(this._url, {\n method: 'GET',\n headers,\n signal: (_b = this._abortController) === null || _b === void 0 ? void 0 : _b.signal\n });\n if (!response.ok) {\n if (response.status === 401 && this._authProvider) {\n // Need to authenticate\n return await this._authThenStart();\n }\n // 405 indicates that the server does not offer an SSE stream at GET endpoint\n // This is an expected case that should not trigger an error\n if (response.status === 405) {\n return;\n }\n throw new StreamableHTTPError(response.status, `Failed to open SSE stream: ${response.statusText}`);\n }\n this._handleSseStream(response.body, options, true);\n }\n catch (error) {\n (_c = this.onerror) === null || _c === void 0 ? void 0 : _c.call(this, error);\n throw error;\n }\n }\n /**\n * Calculates the next reconnection delay using backoff algorithm\n *\n * @param attempt Current reconnection attempt count for the specific stream\n * @returns Time to wait in milliseconds before next reconnection attempt\n */\n _getNextReconnectionDelay(attempt) {\n // Access default values directly, ensuring they're never undefined\n const initialDelay = this._reconnectionOptions.initialReconnectionDelay;\n const growFactor = this._reconnectionOptions.reconnectionDelayGrowFactor;\n const maxDelay = this._reconnectionOptions.maxReconnectionDelay;\n // Cap at maximum delay\n return Math.min(initialDelay * Math.pow(growFactor, attempt), maxDelay);\n }\n _normalizeHeaders(headers) {\n if (!headers)\n return {};\n if (headers instanceof Headers) {\n return Object.fromEntries(headers.entries());\n }\n if (Array.isArray(headers)) {\n return Object.fromEntries(headers);\n }\n return { ...headers };\n }\n /**\n * Schedule a reconnection attempt with exponential backoff\n *\n * @param lastEventId The ID of the last received event for resumability\n * @param attemptCount Current reconnection attempt count for this specific stream\n */\n _scheduleReconnection(options, attemptCount = 0) {\n var _a;\n // Use provided options or default options\n const maxRetries = this._reconnectionOptions.maxRetries;\n // Check if we've exceeded maximum retry attempts\n if (maxRetries > 0 && attemptCount >= maxRetries) {\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, new Error(`Maximum reconnection attempts (${maxRetries}) exceeded.`));\n return;\n }\n // Calculate next delay based on current attempt count\n const delay = this._getNextReconnectionDelay(attemptCount);\n // Schedule the reconnection\n setTimeout(() => {\n // Use the last event ID to resume where we left off\n this._startOrAuthSse(options).catch(error => {\n var _a;\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, new Error(`Failed to reconnect SSE stream: ${error instanceof Error ? error.message : String(error)}`));\n // Schedule another attempt if this one failed, incrementing the attempt counter\n this._scheduleReconnection(options, attemptCount + 1);\n });\n }, delay);\n }\n _handleSseStream(stream, options, isReconnectable) {\n if (!stream) {\n return;\n }\n const { onresumptiontoken, replayMessageId } = options;\n let lastEventId;\n const processStream = async () => {\n var _a, _b, _c, _d;\n // this is the closest we can get to trying to catch network errors\n // if something happens reader will throw\n try {\n // Create a pipeline: binary stream -> text decoder -> SSE parser\n const reader = stream\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .getReader();\n while (true) {\n const { value: event, done } = await reader.read();\n if (done) {\n break;\n }\n // Update last event ID if provided\n if (event.id) {\n lastEventId = event.id;\n onresumptiontoken === null || onresumptiontoken === void 0 ? void 0 : onresumptiontoken(event.id);\n }\n if (!event.event || event.event === 'message') {\n try {\n const message = JSONRPCMessageSchema.parse(JSON.parse(event.data));\n if (replayMessageId !== undefined && isJSONRPCResponse(message)) {\n message.id = replayMessageId;\n }\n (_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, message);\n }\n catch (error) {\n (_b = this.onerror) === null || _b === void 0 ? void 0 : _b.call(this, error);\n }\n }\n }\n }\n catch (error) {\n // Handle stream errors - likely a network disconnect\n (_c = this.onerror) === null || _c === void 0 ? void 0 : _c.call(this, new Error(`SSE stream disconnected: ${error}`));\n // Attempt to reconnect if the stream disconnects unexpectedly and we aren't closing\n if (isReconnectable && this._abortController && !this._abortController.signal.aborted) {\n // Use the exponential backoff reconnection strategy\n try {\n this._scheduleReconnection({\n resumptionToken: lastEventId,\n onresumptiontoken,\n replayMessageId\n }, 0);\n }\n catch (error) {\n (_d = this.onerror) === null || _d === void 0 ? void 0 : _d.call(this, new Error(`Failed to reconnect: ${error instanceof Error ? error.message : String(error)}`));\n }\n }\n }\n };\n processStream();\n }\n async start() {\n if (this._abortController) {\n throw new Error('StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.');\n }\n this._abortController = new AbortController();\n }\n /**\n * Call this method after the user has finished authorizing via their user agent and is redirected back to the MCP client application. This will exchange the authorization code for an access token, enabling the next connection attempt to successfully auth.\n */\n async finishAuth(authorizationCode) {\n if (!this._authProvider) {\n throw new UnauthorizedError('No auth provider');\n }\n const result = await auth(this._authProvider, {\n serverUrl: this._url,\n authorizationCode,\n resourceMetadataUrl: this._resourceMetadataUrl,\n scope: this._scope,\n fetchFn: this._fetch\n });\n if (result !== 'AUTHORIZED') {\n throw new UnauthorizedError('Failed to authorize');\n }\n }\n async close() {\n var _a, _b;\n // Abort any pending requests\n (_a = this._abortController) === null || _a === void 0 ? void 0 : _a.abort();\n (_b = this.onclose) === null || _b === void 0 ? void 0 : _b.call(this);\n }\n async send(message, options) {\n var _a, _b, _c, _d;\n try {\n const { resumptionToken, onresumptiontoken } = options || {};\n if (resumptionToken) {\n // If we have at last event ID, we need to reconnect the SSE stream\n this._startOrAuthSse({ resumptionToken, replayMessageId: isJSONRPCRequest(message) ? message.id : undefined }).catch(err => { var _a; return (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, err); });\n return;\n }\n const headers = await this._commonHeaders();\n headers.set('content-type', 'application/json');\n headers.set('accept', 'application/json, text/event-stream');\n const init = {\n ...this._requestInit,\n method: 'POST',\n headers,\n body: JSON.stringify(message),\n signal: (_a = this._abortController) === null || _a === void 0 ? void 0 : _a.signal\n };\n const response = await ((_b = this._fetch) !== null && _b !== void 0 ? _b : fetch)(this._url, init);\n // Handle session ID received during initialization\n const sessionId = response.headers.get('mcp-session-id');\n if (sessionId) {\n this._sessionId = sessionId;\n }\n if (!response.ok) {\n if (response.status === 401 && this._authProvider) {\n // Prevent infinite recursion when server returns 401 after successful auth\n if (this._hasCompletedAuthFlow) {\n throw new StreamableHTTPError(401, 'Server returned 401 after successful authentication');\n }\n const { resourceMetadataUrl, scope } = extractWWWAuthenticateParams(response);\n this._resourceMetadataUrl = resourceMetadataUrl;\n this._scope = scope;\n const result = await auth(this._authProvider, {\n serverUrl: this._url,\n resourceMetadataUrl: this._resourceMetadataUrl,\n scope: this._scope,\n fetchFn: this._fetch\n });\n if (result !== 'AUTHORIZED') {\n throw new UnauthorizedError();\n }\n // Mark that we completed auth flow\n this._hasCompletedAuthFlow = true;\n // Purposely _not_ awaited, so we don't call onerror twice\n return this.send(message);\n }\n const text = await response.text().catch(() => null);\n throw new Error(`Error POSTing to endpoint (HTTP ${response.status}): ${text}`);\n }\n // Reset auth loop flag on successful response\n this._hasCompletedAuthFlow = false;\n // If the response is 202 Accepted, there's no body to process\n if (response.status === 202) {\n // if the accepted notification is initialized, we start the SSE stream\n // if it's supported by the server\n if (isInitializedNotification(message)) {\n // Start without a lastEventId since this is a fresh connection\n this._startOrAuthSse({ resumptionToken: undefined }).catch(err => { var _a; return (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, err); });\n }\n return;\n }\n // Get original message(s) for detecting request IDs\n const messages = Array.isArray(message) ? message : [message];\n const hasRequests = messages.filter(msg => 'method' in msg && 'id' in msg && msg.id !== undefined).length > 0;\n // Check the response type\n const contentType = response.headers.get('content-type');\n if (hasRequests) {\n if (contentType === null || contentType === void 0 ? void 0 : contentType.includes('text/event-stream')) {\n // Handle SSE stream responses for requests\n // We use the same handler as standalone streams, which now supports\n // reconnection with the last event ID\n this._handleSseStream(response.body, { onresumptiontoken }, false);\n }\n else if (contentType === null || contentType === void 0 ? void 0 : contentType.includes('application/json')) {\n // For non-streaming servers, we might get direct JSON responses\n const data = await response.json();\n const responseMessages = Array.isArray(data)\n ? data.map(msg => JSONRPCMessageSchema.parse(msg))\n : [JSONRPCMessageSchema.parse(data)];\n for (const msg of responseMessages) {\n (_c = this.onmessage) === null || _c === void 0 ? void 0 : _c.call(this, msg);\n }\n }\n else {\n throw new StreamableHTTPError(-1, `Unexpected content type: ${contentType}`);\n }\n }\n }\n catch (error) {\n (_d = this.onerror) === null || _d === void 0 ? void 0 : _d.call(this, error);\n throw error;\n }\n }\n get sessionId() {\n return this._sessionId;\n }\n /**\n * Terminates the current session by sending a DELETE request to the server.\n *\n * Clients that no longer need a particular session\n * (e.g., because the user is leaving the client application) SHOULD send an\n * HTTP DELETE to the MCP endpoint with the Mcp-Session-Id header to explicitly\n * terminate the session.\n *\n * The server MAY respond with HTTP 405 Method Not Allowed, indicating that\n * the server does not allow clients to terminate sessions.\n */\n async terminateSession() {\n var _a, _b, _c;\n if (!this._sessionId) {\n return; // No session to terminate\n }\n try {\n const headers = await this._commonHeaders();\n const init = {\n ...this._requestInit,\n method: 'DELETE',\n headers,\n signal: (_a = this._abortController) === null || _a === void 0 ? void 0 : _a.signal\n };\n const response = await ((_b = this._fetch) !== null && _b !== void 0 ? _b : fetch)(this._url, init);\n // We specifically handle 405 as a valid response according to the spec,\n // meaning the server does not support explicit session termination\n if (!response.ok && response.status !== 405) {\n throw new StreamableHTTPError(response.status, `Failed to terminate session: ${response.statusText}`);\n }\n this._sessionId = undefined;\n }\n catch (error) {\n (_c = this.onerror) === null || _c === void 0 ? void 0 : _c.call(this, error);\n throw error;\n }\n }\n setProtocolVersion(version) {\n this._protocolVersion = version;\n }\n get protocolVersion() {\n return this._protocolVersion;\n }\n}\n//# sourceMappingURL=streamableHttp.js.map",
114
+ "import { mergeCapabilities, Protocol } from '../shared/protocol.js';\nimport { CreateMessageResultSchema, ElicitResultSchema, EmptyResultSchema, ErrorCode, InitializedNotificationSchema, InitializeRequestSchema, LATEST_PROTOCOL_VERSION, ListRootsResultSchema, LoggingLevelSchema, McpError, SetLevelRequestSchema, SUPPORTED_PROTOCOL_VERSIONS } from '../types.js';\nimport { AjvJsonSchemaValidator } from '../validation/ajv-provider.js';\n/**\n * An MCP server on top of a pluggable transport.\n *\n * This server will automatically respond to the initialization flow as initiated from the client.\n *\n * To use with custom types, extend the base Request/Notification/Result types and pass them as type parameters:\n *\n * ```typescript\n * // Custom schemas\n * const CustomRequestSchema = RequestSchema.extend({...})\n * const CustomNotificationSchema = NotificationSchema.extend({...})\n * const CustomResultSchema = ResultSchema.extend({...})\n *\n * // Type aliases\n * type CustomRequest = z.infer<typeof CustomRequestSchema>\n * type CustomNotification = z.infer<typeof CustomNotificationSchema>\n * type CustomResult = z.infer<typeof CustomResultSchema>\n *\n * // Create typed server\n * const server = new Server<CustomRequest, CustomNotification, CustomResult>({\n * name: \"CustomServer\",\n * version: \"1.0.0\"\n * })\n * ```\n * @deprecated Use `McpServer` instead for the high-level API. Only use `Server` for advanced use cases.\n */\nexport class Server extends Protocol {\n /**\n * Initializes this server with the given name and version information.\n */\n constructor(_serverInfo, options) {\n var _a, _b;\n super(options);\n this._serverInfo = _serverInfo;\n // Map log levels by session id\n this._loggingLevels = new Map();\n // Map LogLevelSchema to severity index\n this.LOG_LEVEL_SEVERITY = new Map(LoggingLevelSchema.options.map((level, index) => [level, index]));\n // Is a message with the given level ignored in the log level set for the given session id?\n this.isMessageIgnored = (level, sessionId) => {\n const currentLevel = this._loggingLevels.get(sessionId);\n return currentLevel ? this.LOG_LEVEL_SEVERITY.get(level) < this.LOG_LEVEL_SEVERITY.get(currentLevel) : false;\n };\n this._capabilities = (_a = options === null || options === void 0 ? void 0 : options.capabilities) !== null && _a !== void 0 ? _a : {};\n this._instructions = options === null || options === void 0 ? void 0 : options.instructions;\n this._jsonSchemaValidator = (_b = options === null || options === void 0 ? void 0 : options.jsonSchemaValidator) !== null && _b !== void 0 ? _b : new AjvJsonSchemaValidator();\n this.setRequestHandler(InitializeRequestSchema, request => this._oninitialize(request));\n this.setNotificationHandler(InitializedNotificationSchema, () => { var _a; return (_a = this.oninitialized) === null || _a === void 0 ? void 0 : _a.call(this); });\n if (this._capabilities.logging) {\n this.setRequestHandler(SetLevelRequestSchema, async (request, extra) => {\n var _a;\n const transportSessionId = extra.sessionId || ((_a = extra.requestInfo) === null || _a === void 0 ? void 0 : _a.headers['mcp-session-id']) || undefined;\n const { level } = request.params;\n const parseResult = LoggingLevelSchema.safeParse(level);\n if (parseResult.success) {\n this._loggingLevels.set(transportSessionId, parseResult.data);\n }\n return {};\n });\n }\n }\n /**\n * Registers new capabilities. This can only be called before connecting to a transport.\n *\n * The new capabilities will be merged with any existing capabilities previously given (e.g., at initialization).\n */\n registerCapabilities(capabilities) {\n if (this.transport) {\n throw new Error('Cannot register capabilities after connecting to transport');\n }\n this._capabilities = mergeCapabilities(this._capabilities, capabilities);\n }\n assertCapabilityForMethod(method) {\n var _a, _b, _c;\n switch (method) {\n case 'sampling/createMessage':\n if (!((_a = this._clientCapabilities) === null || _a === void 0 ? void 0 : _a.sampling)) {\n throw new Error(`Client does not support sampling (required for ${method})`);\n }\n break;\n case 'elicitation/create':\n if (!((_b = this._clientCapabilities) === null || _b === void 0 ? void 0 : _b.elicitation)) {\n throw new Error(`Client does not support elicitation (required for ${method})`);\n }\n break;\n case 'roots/list':\n if (!((_c = this._clientCapabilities) === null || _c === void 0 ? void 0 : _c.roots)) {\n throw new Error(`Client does not support listing roots (required for ${method})`);\n }\n break;\n case 'ping':\n // No specific capability required for ping\n break;\n }\n }\n assertNotificationCapability(method) {\n switch (method) {\n case 'notifications/message':\n if (!this._capabilities.logging) {\n throw new Error(`Server does not support logging (required for ${method})`);\n }\n break;\n case 'notifications/resources/updated':\n case 'notifications/resources/list_changed':\n if (!this._capabilities.resources) {\n throw new Error(`Server does not support notifying about resources (required for ${method})`);\n }\n break;\n case 'notifications/tools/list_changed':\n if (!this._capabilities.tools) {\n throw new Error(`Server does not support notifying of tool list changes (required for ${method})`);\n }\n break;\n case 'notifications/prompts/list_changed':\n if (!this._capabilities.prompts) {\n throw new Error(`Server does not support notifying of prompt list changes (required for ${method})`);\n }\n break;\n case 'notifications/cancelled':\n // Cancellation notifications are always allowed\n break;\n case 'notifications/progress':\n // Progress notifications are always allowed\n break;\n }\n }\n assertRequestHandlerCapability(method) {\n switch (method) {\n case 'completion/complete':\n if (!this._capabilities.completions) {\n throw new Error(`Server does not support completions (required for ${method})`);\n }\n break;\n case 'logging/setLevel':\n if (!this._capabilities.logging) {\n throw new Error(`Server does not support logging (required for ${method})`);\n }\n break;\n case 'prompts/get':\n case 'prompts/list':\n if (!this._capabilities.prompts) {\n throw new Error(`Server does not support prompts (required for ${method})`);\n }\n break;\n case 'resources/list':\n case 'resources/templates/list':\n case 'resources/read':\n if (!this._capabilities.resources) {\n throw new Error(`Server does not support resources (required for ${method})`);\n }\n break;\n case 'tools/call':\n case 'tools/list':\n if (!this._capabilities.tools) {\n throw new Error(`Server does not support tools (required for ${method})`);\n }\n break;\n case 'ping':\n case 'initialize':\n // No specific capability required for these methods\n break;\n }\n }\n async _oninitialize(request) {\n const requestedVersion = request.params.protocolVersion;\n this._clientCapabilities = request.params.capabilities;\n this._clientVersion = request.params.clientInfo;\n const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(requestedVersion) ? requestedVersion : LATEST_PROTOCOL_VERSION;\n return {\n protocolVersion,\n capabilities: this.getCapabilities(),\n serverInfo: this._serverInfo,\n ...(this._instructions && { instructions: this._instructions })\n };\n }\n /**\n * After initialization has completed, this will be populated with the client's reported capabilities.\n */\n getClientCapabilities() {\n return this._clientCapabilities;\n }\n /**\n * After initialization has completed, this will be populated with information about the client's name and version.\n */\n getClientVersion() {\n return this._clientVersion;\n }\n getCapabilities() {\n return this._capabilities;\n }\n async ping() {\n return this.request({ method: 'ping' }, EmptyResultSchema);\n }\n async createMessage(params, options) {\n return this.request({ method: 'sampling/createMessage', params }, CreateMessageResultSchema, options);\n }\n async elicitInput(params, options) {\n const result = await this.request({ method: 'elicitation/create', params }, ElicitResultSchema, options);\n // Validate the response content against the requested schema if action is \"accept\"\n if (result.action === 'accept' && result.content && params.requestedSchema) {\n try {\n const validator = this._jsonSchemaValidator.getValidator(params.requestedSchema);\n const validationResult = validator(result.content);\n if (!validationResult.valid) {\n throw new McpError(ErrorCode.InvalidParams, `Elicitation response content does not match requested schema: ${validationResult.errorMessage}`);\n }\n }\n catch (error) {\n if (error instanceof McpError) {\n throw error;\n }\n throw new McpError(ErrorCode.InternalError, `Error validating elicitation response: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n return result;\n }\n async listRoots(params, options) {\n return this.request({ method: 'roots/list', params }, ListRootsResultSchema, options);\n }\n /**\n * Sends a logging message to the client, if connected.\n * Note: You only need to send the parameters object, not the entire JSON RPC message\n * @see LoggingMessageNotification\n * @param params\n * @param sessionId optional for stateless and backward compatibility\n */\n async sendLoggingMessage(params, sessionId) {\n if (this._capabilities.logging) {\n if (!this.isMessageIgnored(params.level, sessionId)) {\n return this.notification({ method: 'notifications/message', params });\n }\n }\n }\n async sendResourceUpdated(params) {\n return this.notification({\n method: 'notifications/resources/updated',\n params\n });\n }\n async sendResourceListChanged() {\n return this.notification({\n method: 'notifications/resources/list_changed'\n });\n }\n async sendToolListChanged() {\n return this.notification({ method: 'notifications/tools/list_changed' });\n }\n async sendPromptListChanged() {\n return this.notification({ method: 'notifications/prompts/list_changed' });\n }\n}\n//# sourceMappingURL=index.js.map",
115
+ "export const ignoreOverride = Symbol(\"Let zodToJsonSchema decide on which parser to use\");\nexport const jsonDescription = (jsonSchema, def) => {\n if (def.description) {\n try {\n return {\n ...jsonSchema,\n ...JSON.parse(def.description),\n };\n }\n catch { }\n }\n return jsonSchema;\n};\nexport const defaultOptions = {\n name: undefined,\n $refStrategy: \"root\",\n basePath: [\"#\"],\n effectStrategy: \"input\",\n pipeStrategy: \"all\",\n dateStrategy: \"format:date-time\",\n mapStrategy: \"entries\",\n removeAdditionalStrategy: \"passthrough\",\n allowedAdditionalProperties: true,\n rejectedAdditionalProperties: false,\n definitionPath: \"definitions\",\n target: \"jsonSchema7\",\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n markdownDescription: false,\n patternStrategy: \"escape\",\n applyRegexFlags: false,\n emailStrategy: \"format:email\",\n base64Strategy: \"contentEncoding:base64\",\n nameStrategy: \"ref\",\n};\nexport const getDefaultOptions = (options) => (typeof options === \"string\"\n ? {\n ...defaultOptions,\n name: options,\n }\n : {\n ...defaultOptions,\n ...options,\n });\n",
116
+ "import { getDefaultOptions } from \"./Options.js\";\nexport const getRefs = (options) => {\n const _options = getDefaultOptions(options);\n const currentPath = _options.name !== undefined\n ? [..._options.basePath, _options.definitionPath, _options.name]\n : _options.basePath;\n return {\n ..._options,\n currentPath: currentPath,\n propertyPath: undefined,\n seen: new Map(Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ])),\n };\n};\n",
117
+ "export function addErrorMessage(res, key, errorMessage, refs) {\n if (!refs?.errorMessages)\n return;\n if (errorMessage) {\n res.errorMessage = {\n ...res.errorMessage,\n [key]: errorMessage,\n };\n }\n}\nexport function setResponseValueAndErrors(res, key, value, errorMessage, refs) {\n res[key] = value;\n addErrorMessage(res, key, errorMessage, refs);\n}\n",
118
+ "export function parseAnyDef() {\n return {};\n}\n",
119
+ "import { ZodFirstPartyTypeKind } from \"zod\";\nimport { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseArrayDef(def, refs) {\n const res = {\n type: \"array\",\n };\n if (def.type?._def &&\n def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n }\n if (def.minLength) {\n setResponseValueAndErrors(res, \"minItems\", def.minLength.value, def.minLength.message, refs);\n }\n if (def.maxLength) {\n setResponseValueAndErrors(res, \"maxItems\", def.maxLength.value, def.maxLength.message, refs);\n }\n if (def.exactLength) {\n setResponseValueAndErrors(res, \"minItems\", def.exactLength.value, def.exactLength.message, refs);\n setResponseValueAndErrors(res, \"maxItems\", def.exactLength.value, def.exactLength.message, refs);\n }\n return res;\n}\n",
120
+ "import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseBigintDef(def, refs) {\n const res = {\n type: \"integer\",\n format: \"int64\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n",
121
+ "export function parseBooleanDef() {\n return {\n type: \"boolean\",\n };\n}\n",
122
+ "import { parseDef } from \"../parseDef.js\";\nexport function parseBrandedDef(_def, refs) {\n return parseDef(_def.type._def, refs);\n}\n",
123
+ "import { parseDef } from \"../parseDef.js\";\nexport const parseCatchDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n",
124
+ "import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseDateDef(def, refs, overrideDateStrategy) {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n };\n }\n switch (strategy) {\n case \"string\":\n case \"format:date-time\":\n return {\n type: \"string\",\n format: \"date-time\",\n };\n case \"format:date\":\n return {\n type: \"string\",\n format: \"date\",\n };\n case \"integer\":\n return integerDateParser(def, refs);\n }\n}\nconst integerDateParser = (def, refs) => {\n const res = {\n type: \"integer\",\n format: \"unix-time\",\n };\n if (refs.target === \"openApi3\") {\n return res;\n }\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minimum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maximum\", check.value, // This is in milliseconds\n check.message, refs);\n break;\n }\n }\n return res;\n};\n",
125
+ "import { parseDef } from \"../parseDef.js\";\nexport function parseDefaultDef(_def, refs) {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n };\n}\n",
126
+ "import { parseDef } from \"../parseDef.js\";\nexport function parseEffectsDef(_def, refs) {\n return refs.effectStrategy === \"input\"\n ? parseDef(_def.schema._def, refs)\n : {};\n}\n",
127
+ "export function parseEnumDef(def) {\n return {\n type: \"string\",\n enum: Array.from(def.values),\n };\n}\n",
128
+ "import { parseDef } from \"../parseDef.js\";\nconst isJsonSchema7AllOfType = (type) => {\n if (\"type\" in type && type.type === \"string\")\n return false;\n return \"allOf\" in type;\n};\nexport function parseIntersectionDef(def, refs) {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"1\"],\n }),\n ].filter((x) => !!x);\n let unevaluatedProperties = refs.target === \"jsonSchema2019-09\"\n ? { unevaluatedProperties: false }\n : undefined;\n const mergedAllOf = [];\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach((schema) => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n if (schema.unevaluatedProperties === undefined) {\n // If one of the schemas has no unevaluatedProperties set,\n // the merged schema should also have no unevaluatedProperties set\n unevaluatedProperties = undefined;\n }\n }\n else {\n let nestedSchema = schema;\n if (\"additionalProperties\" in schema &&\n schema.additionalProperties === false) {\n const { additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n else {\n // As soon as one of the schemas has additionalProperties set not to false, we allow unevaluatedProperties\n unevaluatedProperties = undefined;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length\n ? {\n allOf: mergedAllOf,\n ...unevaluatedProperties,\n }\n : undefined;\n}\n",
129
+ "export function parseLiteralDef(def, refs) {\n const parsedType = typeof def.value;\n if (parsedType !== \"bigint\" &&\n parsedType !== \"number\" &&\n parsedType !== \"boolean\" &&\n parsedType !== \"string\") {\n return {\n type: Array.isArray(def.value) ? \"array\" : \"object\",\n };\n }\n if (refs.target === \"openApi3\") {\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n enum: [def.value],\n };\n }\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n const: def.value,\n };\n}\n",
130
+ "import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[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}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?: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])$/,\n ipv4Cidr: /^(?:(?: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 /**\n * Unused\n */\n 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})))$/,\n ipv6Cidr: /^(([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 base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n};\nexport function parseStringDef(def, refs) {\n const res = {\n type: \"string\",\n };\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n break;\n case \"endsWith\":\n addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"includes\": {\n addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\", check.message, refs);\n break;\n }\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n break;\n }\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n /* c8 ignore next */\n ((_) => { })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n let result = \"\";\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n result += source[i];\n }\n return result;\n}\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(schema, value, message, refs) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(schema, regex, message, refs) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"),\n m: regex.flags.includes(\"m\"),\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n }\n else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n }\n else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n }\n else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n }\n else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\n}\n",
131
+ "import { ZodFirstPartyTypeKind, } from \"zod\";\nimport { parseDef } from \"../parseDef.js\";\nimport { parseStringDef } from \"./string.js\";\nimport { parseBrandedDef } from \"./branded.js\";\nexport function parseRecordDef(def, refs) {\n if (refs.target === \"openAi\") {\n console.warn(\"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\");\n }\n if (refs.target === \"openApi3\" &&\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n type: \"object\",\n required: def.keyType._def.values,\n properties: def.keyType._def.values.reduce((acc, key) => ({\n ...acc,\n [key]: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", key],\n }) ?? {},\n }), {}),\n additionalProperties: refs.rejectedAdditionalProperties,\n };\n }\n const schema = {\n type: \"object\",\n additionalProperties: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n }) ?? refs.allowedAdditionalProperties,\n };\n if (refs.target === \"openApi3\") {\n return schema;\n }\n if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.checks?.length) {\n const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.type._def.checks?.length) {\n const { type, ...keyType } = parseBrandedDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n return schema;\n}\n",
132
+ "import { parseDef } from \"../parseDef.js\";\nimport { parseRecordDef } from \"./record.js\";\nexport function parseMapDef(def, refs) {\n if (refs.mapStrategy === \"record\") {\n return parseRecordDef(def, refs);\n }\n const keys = parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"0\"],\n }) || {};\n const values = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"1\"],\n }) || {};\n return {\n type: \"array\",\n maxItems: 125,\n items: {\n type: \"array\",\n items: [keys, values],\n minItems: 2,\n maxItems: 2,\n },\n };\n}\n",
133
+ "export function parseNativeEnumDef(def) {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key) => {\n return typeof object[object[key]] !== \"number\";\n });\n const actualValues = actualKeys.map((key) => object[key]);\n const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)));\n return {\n type: parsedTypes.length === 1\n ? parsedTypes[0] === \"string\"\n ? \"string\"\n : \"number\"\n : [\"string\", \"number\"],\n enum: actualValues,\n };\n}\n",
134
+ "export function parseNeverDef() {\n return {\n not: {},\n };\n}\n",
135
+ "export function parseNullDef(refs) {\n return refs.target === \"openApi3\"\n ? {\n enum: [\"null\"],\n nullable: true,\n }\n : {\n type: \"null\",\n };\n}\n",
136
+ "import { parseDef } from \"../parseDef.js\";\nexport const primitiveMappings = {\n ZodString: \"string\",\n ZodNumber: \"number\",\n ZodBigInt: \"integer\",\n ZodBoolean: \"boolean\",\n ZodNull: \"null\",\n};\nexport function parseUnionDef(def, refs) {\n if (refs.target === \"openApi3\")\n return asAnyOf(def, refs);\n const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (options.every((x) => x._def.typeName in primitiveMappings &&\n (!x._def.checks || !x._def.checks.length))) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n const types = options.reduce((types, x) => {\n const type = primitiveMappings[x._def.typeName]; //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types;\n }, []);\n return {\n type: types.length > 1 ? types : types[0],\n };\n }\n else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n // all options literals\n const types = options.reduce((acc, x) => {\n const type = typeof x._def.value;\n switch (type) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return [...acc, type];\n case \"bigint\":\n return [...acc, \"integer\"];\n case \"object\":\n if (x._def.value === null)\n return [...acc, \"null\"];\n case \"symbol\":\n case \"undefined\":\n case \"function\":\n default:\n return acc;\n }\n }, []);\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n enum: options.reduce((acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n }, []),\n };\n }\n }\n else if (options.every((x) => x._def.typeName === \"ZodEnum\")) {\n return {\n type: \"string\",\n enum: options.reduce((acc, x) => [\n ...acc,\n ...x._def.values.filter((x) => !acc.includes(x)),\n ], []),\n };\n }\n return asAnyOf(def, refs);\n}\nconst asAnyOf = (def, refs) => {\n const anyOf = (def.options instanceof Map\n ? Array.from(def.options.values())\n : def.options)\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", `${i}`],\n }))\n .filter((x) => !!x &&\n (!refs.strictUnions ||\n (typeof x === \"object\" && Object.keys(x).length > 0)));\n return anyOf.length ? { anyOf } : undefined;\n};\n",
137
+ "import { parseDef } from \"../parseDef.js\";\nimport { primitiveMappings } from \"./union.js\";\nexport function parseNullableDef(def, refs) {\n if ([\"ZodString\", \"ZodNumber\", \"ZodBigInt\", \"ZodBoolean\", \"ZodNull\"].includes(def.innerType._def.typeName) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n if (refs.target === \"openApi3\") {\n return {\n type: primitiveMappings[def.innerType._def.typeName],\n nullable: true,\n };\n }\n return {\n type: [\n primitiveMappings[def.innerType._def.typeName],\n \"null\",\n ],\n };\n }\n if (refs.target === \"openApi3\") {\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath],\n });\n if (base && \"$ref\" in base)\n return { allOf: [base], nullable: true };\n return base && { ...base, nullable: true };\n }\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"0\"],\n });\n return base && { anyOf: [base, { type: \"null\" }] };\n}\n",
138
+ "import { addErrorMessage, setResponseValueAndErrors, } from \"../errorMessages.js\";\nexport function parseNumberDef(def, refs) {\n const res = {\n type: \"number\",\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n addErrorMessage(res, \"type\", check.message, refs);\n break;\n case \"min\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n }\n break;\n case \"max\":\n if (refs.target === \"jsonSchema7\") {\n if (check.inclusive) {\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n }\n break;\n case \"multipleOf\":\n setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n",
139
+ "import { ZodOptional } from \"zod\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseObjectDef(def, refs) {\n const forceOptionalIntoNullable = refs.target === \"openAi\";\n const result = {\n type: \"object\",\n properties: {},\n };\n const required = [];\n const shape = def.shape();\n for (const propName in shape) {\n let propDef = shape[propName];\n if (propDef === undefined || propDef._def === undefined) {\n continue;\n }\n let propOptional = safeIsOptional(propDef);\n if (propOptional && forceOptionalIntoNullable) {\n if (propDef instanceof ZodOptional) {\n propDef = propDef._def.innerType;\n }\n if (!propDef.isNullable()) {\n propDef = propDef.nullable();\n }\n propOptional = false;\n }\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", propName],\n propertyPath: [...refs.currentPath, \"properties\", propName],\n });\n if (parsedDef === undefined) {\n continue;\n }\n result.properties[propName] = parsedDef;\n if (!propOptional) {\n required.push(propName);\n }\n }\n if (required.length) {\n result.required = required;\n }\n const additionalProperties = decideAdditionalProperties(def, refs);\n if (additionalProperties !== undefined) {\n result.additionalProperties = additionalProperties;\n }\n return result;\n}\nfunction decideAdditionalProperties(def, refs) {\n if (def.catchall._def.typeName !== \"ZodNever\") {\n return parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"],\n });\n }\n switch (def.unknownKeys) {\n case \"passthrough\":\n return refs.allowedAdditionalProperties;\n case \"strict\":\n return refs.rejectedAdditionalProperties;\n case \"strip\":\n return refs.removeAdditionalStrategy === \"strict\"\n ? refs.allowedAdditionalProperties\n : refs.rejectedAdditionalProperties;\n }\n}\nfunction safeIsOptional(schema) {\n try {\n return schema.isOptional();\n }\n catch {\n return true;\n }\n}\n",
140
+ "import { parseDef } from \"../parseDef.js\";\nexport const parseOptionalDef = (def, refs) => {\n if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n return parseDef(def.innerType._def, refs);\n }\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"1\"],\n });\n return innerSchema\n ? {\n anyOf: [\n {\n not: {},\n },\n innerSchema,\n ],\n }\n : {};\n};\n",
141
+ "import { parseDef } from \"../parseDef.js\";\nexport const parsePipelineDef = (def, refs) => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n }\n else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n });\n return {\n allOf: [a, b].filter((x) => x !== undefined),\n };\n};\n",
142
+ "import { parseDef } from \"../parseDef.js\";\nexport function parsePromiseDef(def, refs) {\n return parseDef(def.type._def, refs);\n}\n",
143
+ "import { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseSetDef(def, refs) {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"],\n });\n const schema = {\n type: \"array\",\n uniqueItems: true,\n items,\n };\n if (def.minSize) {\n setResponseValueAndErrors(schema, \"minItems\", def.minSize.value, def.minSize.message, refs);\n }\n if (def.maxSize) {\n setResponseValueAndErrors(schema, \"maxItems\", def.maxSize.value, def.maxSize.message, refs);\n }\n return schema;\n}\n",
144
+ "import { parseDef } from \"../parseDef.js\";\nexport function parseTupleDef(def, refs) {\n if (def.rest) {\n return {\n type: \"array\",\n minItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalItems\"],\n }),\n };\n }\n else {\n return {\n type: \"array\",\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n };\n }\n}\n",
145
+ "export function parseUndefinedDef() {\n return {\n not: {},\n };\n}\n",
146
+ "export function parseUnknownDef() {\n return {};\n}\n",
147
+ "import { parseDef } from \"../parseDef.js\";\nexport const parseReadonlyDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n",
148
+ "import { ZodFirstPartyTypeKind } from \"zod\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nimport { parseArrayDef } from \"./parsers/array.js\";\nimport { parseBigintDef } from \"./parsers/bigint.js\";\nimport { parseBooleanDef } from \"./parsers/boolean.js\";\nimport { parseBrandedDef } from \"./parsers/branded.js\";\nimport { parseCatchDef } from \"./parsers/catch.js\";\nimport { parseDateDef } from \"./parsers/date.js\";\nimport { parseDefaultDef } from \"./parsers/default.js\";\nimport { parseEffectsDef } from \"./parsers/effects.js\";\nimport { parseEnumDef } from \"./parsers/enum.js\";\nimport { parseIntersectionDef } from \"./parsers/intersection.js\";\nimport { parseLiteralDef } from \"./parsers/literal.js\";\nimport { parseMapDef } from \"./parsers/map.js\";\nimport { parseNativeEnumDef } from \"./parsers/nativeEnum.js\";\nimport { parseNeverDef } from \"./parsers/never.js\";\nimport { parseNullDef } from \"./parsers/null.js\";\nimport { parseNullableDef } from \"./parsers/nullable.js\";\nimport { parseNumberDef } from \"./parsers/number.js\";\nimport { parseObjectDef } from \"./parsers/object.js\";\nimport { parseOptionalDef } from \"./parsers/optional.js\";\nimport { parsePipelineDef } from \"./parsers/pipeline.js\";\nimport { parsePromiseDef } from \"./parsers/promise.js\";\nimport { parseRecordDef } from \"./parsers/record.js\";\nimport { parseSetDef } from \"./parsers/set.js\";\nimport { parseStringDef } from \"./parsers/string.js\";\nimport { parseTupleDef } from \"./parsers/tuple.js\";\nimport { parseUndefinedDef } from \"./parsers/undefined.js\";\nimport { parseUnionDef } from \"./parsers/union.js\";\nimport { parseUnknownDef } from \"./parsers/unknown.js\";\nimport { parseReadonlyDef } from \"./parsers/readonly.js\";\nexport const selectParser = (def, typeName, refs) => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def, refs);\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef();\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef(refs);\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def, refs);\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLazy:\n return () => def.getter()._def;\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef();\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef();\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef();\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined;\n default:\n /* c8 ignore next */\n return ((_) => undefined)(typeName);\n }\n};\n",
149
+ "import { ignoreOverride } from \"./Options.js\";\nimport { selectParser } from \"./selectParser.js\";\nexport function parseDef(def, refs, forceResolution = false) {\n const seenItem = refs.seen.get(def);\n if (refs.override) {\n const overrideResult = refs.override?.(def, refs, seenItem, forceResolution);\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n if (seenSchema !== undefined) {\n return seenSchema;\n }\n }\n const newItem = { def, path: refs.currentPath, jsonSchema: undefined };\n refs.seen.set(def, newItem);\n const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n const jsonSchema = typeof jsonSchemaOrGetter === \"function\"\n ? parseDef(jsonSchemaOrGetter(), refs)\n : jsonSchemaOrGetter;\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema);\n }\n if (refs.postProcess) {\n const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n newItem.jsonSchema = jsonSchema;\n return postProcessResult;\n }\n newItem.jsonSchema = jsonSchema;\n return jsonSchema;\n}\nconst get$ref = (item, refs) => {\n switch (refs.$refStrategy) {\n case \"root\":\n return { $ref: item.path.join(\"/\") };\n case \"relative\":\n return { $ref: getRelativePath(refs.currentPath, item.path) };\n case \"none\":\n case \"seen\": {\n if (item.path.length < refs.currentPath.length &&\n item.path.every((value, index) => refs.currentPath[index] === value)) {\n console.warn(`Recursive reference detected at ${refs.currentPath.join(\"/\")}! Defaulting to any`);\n return {};\n }\n return refs.$refStrategy === \"seen\" ? {} : undefined;\n }\n }\n};\nconst getRelativePath = (pathA, pathB) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i])\n break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\nconst addMeta = (def, refs, jsonSchema) => {\n if (def.description) {\n jsonSchema.description = def.description;\n if (refs.markdownDescription) {\n jsonSchema.markdownDescription = def.description;\n }\n }\n return jsonSchema;\n};\n",
150
+ "import { parseDef } from \"./parseDef.js\";\nimport { getRefs } from \"./Refs.js\";\nconst zodToJsonSchema = (schema, options) => {\n const refs = getRefs(options);\n const definitions = typeof options === \"object\" && options.definitions\n ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({\n ...acc,\n [name]: parseDef(schema._def, {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, true) ?? {},\n }), {})\n : undefined;\n const name = typeof options === \"string\"\n ? options\n : options?.nameStrategy === \"title\"\n ? undefined\n : options?.name;\n const main = parseDef(schema._def, name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }, false) ?? {};\n const title = typeof options === \"object\" &&\n options.name !== undefined &&\n options.nameStrategy === \"title\"\n ? options.name\n : undefined;\n if (title !== undefined) {\n main.title = title;\n }\n const combined = name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [\n ...(refs.$refStrategy === \"relative\" ? [] : refs.basePath),\n refs.definitionPath,\n name,\n ].join(\"/\"),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n };\n if (refs.target === \"jsonSchema7\") {\n combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (refs.target === \"jsonSchema2019-09\" || refs.target === \"openAi\") {\n combined.$schema = \"https://json-schema.org/draft/2019-09/schema#\";\n }\n if (refs.target === \"openAi\" &&\n (\"anyOf\" in combined ||\n \"oneOf\" in combined ||\n \"allOf\" in combined ||\n (\"type\" in combined && Array.isArray(combined.type)))) {\n console.warn(\"Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.\");\n }\n return combined;\n};\nexport { zodToJsonSchema };\n",
151
+ "import { ZodType } from 'zod';\nexport var McpZodTypeKind;\n(function (McpZodTypeKind) {\n McpZodTypeKind[\"Completable\"] = \"McpCompletable\";\n})(McpZodTypeKind || (McpZodTypeKind = {}));\nexport class Completable 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}\nCompletable.create = (type, params) => {\n return new Completable({\n type,\n typeName: McpZodTypeKind.Completable,\n complete: params.complete,\n ...processCreateParams(params)\n });\n};\n/**\n * Wraps a Zod type to provide autocompletion capabilities. Useful for, e.g., prompt arguments in MCP.\n */\nexport function completable(schema, complete) {\n return Completable.create(schema, { ...schema._def, complete });\n}\n// Not sure why this isn't exported from Zod:\n// https://github.com/colinhacks/zod/blob/f7ad26147ba291cb3fb257545972a8e00e767470/src/types.ts#L130\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 var _a, _b;\n const { message } = params;\n if (iss.code === 'invalid_enum_value') {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === 'undefined') {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== 'invalid_type')\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\n//# sourceMappingURL=completable.js.map",
152
+ "/**\n * Tool name validation utilities according to SEP: Specify Format for Tool Names\n *\n * Tool names SHOULD be between 1 and 128 characters in length (inclusive).\n * Tool names are case-sensitive.\n * Allowed characters: uppercase and lowercase ASCII letters (A-Z, a-z), digits\n * (0-9), underscore (_), dash (-), and dot (.).\n * Tool names SHOULD NOT contain spaces, commas, or other special characters.\n */\n/**\n * Regular expression for valid tool names according to SEP-986 specification\n */\nconst TOOL_NAME_REGEX = /^[A-Za-z0-9._-]{1,128}$/;\n/**\n * Validates a tool name according to the SEP specification\n * @param name - The tool name to validate\n * @returns An object containing validation result and any warnings\n */\nexport function validateToolName(name) {\n const warnings = [];\n // Check length\n if (name.length === 0) {\n return {\n isValid: false,\n warnings: ['Tool name cannot be empty']\n };\n }\n if (name.length > 128) {\n return {\n isValid: false,\n warnings: [`Tool name exceeds maximum length of 128 characters (current: ${name.length})`]\n };\n }\n // Check for specific problematic patterns (these are warnings, not validation failures)\n if (name.includes(' ')) {\n warnings.push('Tool name contains spaces, which may cause parsing issues');\n }\n if (name.includes(',')) {\n warnings.push('Tool name contains commas, which may cause parsing issues');\n }\n // Check for potentially confusing patterns (leading/trailing dashes, dots, slashes)\n if (name.startsWith('-') || name.endsWith('-')) {\n warnings.push('Tool name starts or ends with a dash, which may cause parsing issues in some contexts');\n }\n if (name.startsWith('.') || name.endsWith('.')) {\n warnings.push('Tool name starts or ends with a dot, which may cause parsing issues in some contexts');\n }\n // Check for invalid characters\n if (!TOOL_NAME_REGEX.test(name)) {\n const invalidChars = name\n .split('')\n .filter(char => !/[A-Za-z0-9._-]/.test(char))\n .filter((char, index, arr) => arr.indexOf(char) === index); // Remove duplicates\n warnings.push(`Tool name contains invalid characters: ${invalidChars.map(c => `\"${c}\"`).join(', ')}`, 'Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)');\n return {\n isValid: false,\n warnings\n };\n }\n return {\n isValid: true,\n warnings\n };\n}\n/**\n * Issues warnings for non-conforming tool names\n * @param name - The tool name that triggered the warnings\n * @param warnings - Array of warning messages\n */\nexport function issueToolNameWarning(name, warnings) {\n if (warnings.length > 0) {\n console.warn(`Tool name validation warning for \"${name}\":`);\n for (const warning of warnings) {\n console.warn(` - ${warning}`);\n }\n console.warn('Tool registration will proceed, but this may cause compatibility issues.');\n console.warn('Consider updating the tool name to conform to the MCP tool naming standard.');\n console.warn('See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.');\n }\n}\n/**\n * Validates a tool name and issues warnings for non-conforming names\n * @param name - The tool name to validate\n * @returns true if the name is valid, false otherwise\n */\nexport function validateAndWarnToolName(name) {\n const result = validateToolName(name);\n // Always issue warnings for any validation issues (both invalid names and warnings)\n issueToolNameWarning(name, result.warnings);\n return result.isValid;\n}\n//# sourceMappingURL=toolNameValidation.js.map",
153
+ "import { Server } from './index.js';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\nimport { z } from 'zod';\nimport { McpError, ErrorCode, ListResourceTemplatesRequestSchema, ReadResourceRequestSchema, ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, CompleteRequestSchema, assertCompleteRequestPrompt, assertCompleteRequestResourceTemplate } from '../types.js';\nimport { Completable } from './completable.js';\nimport { UriTemplate } from '../shared/uriTemplate.js';\nimport { validateAndWarnToolName } from '../shared/toolNameValidation.js';\n/**\n * High-level MCP server that provides a simpler API for working with resources, tools, and prompts.\n * For advanced usage (like sending notifications or setting custom request handlers), use the underlying\n * Server instance available via the `server` property.\n */\nexport class McpServer {\n constructor(serverInfo, options) {\n this._registeredResources = {};\n this._registeredResourceTemplates = {};\n this._registeredTools = {};\n this._registeredPrompts = {};\n this._toolHandlersInitialized = false;\n this._completionHandlerInitialized = false;\n this._resourceHandlersInitialized = false;\n this._promptHandlersInitialized = false;\n this.server = new Server(serverInfo, options);\n }\n /**\n * Attaches to the given transport, starts it, and starts listening for messages.\n *\n * The `server` object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward.\n */\n async connect(transport) {\n return await this.server.connect(transport);\n }\n /**\n * Closes the connection.\n */\n async close() {\n await this.server.close();\n }\n setToolRequestHandlers() {\n if (this._toolHandlersInitialized) {\n return;\n }\n this.server.assertCanSetRequestHandler(ListToolsRequestSchema.shape.method.value);\n this.server.assertCanSetRequestHandler(CallToolRequestSchema.shape.method.value);\n this.server.registerCapabilities({\n tools: {\n listChanged: true\n }\n });\n this.server.setRequestHandler(ListToolsRequestSchema, () => ({\n tools: Object.entries(this._registeredTools)\n .filter(([, tool]) => tool.enabled)\n .map(([name, tool]) => {\n const toolDefinition = {\n name,\n title: tool.title,\n description: tool.description,\n inputSchema: tool.inputSchema\n ? zodToJsonSchema(tool.inputSchema, {\n strictUnions: true,\n pipeStrategy: 'input'\n })\n : EMPTY_OBJECT_JSON_SCHEMA,\n annotations: tool.annotations,\n _meta: tool._meta\n };\n if (tool.outputSchema) {\n toolDefinition.outputSchema = zodToJsonSchema(tool.outputSchema, {\n strictUnions: true,\n pipeStrategy: 'output'\n });\n }\n return toolDefinition;\n })\n }));\n this.server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {\n const tool = this._registeredTools[request.params.name];\n let result;\n try {\n if (!tool) {\n throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} not found`);\n }\n if (!tool.enabled) {\n throw new McpError(ErrorCode.InvalidParams, `Tool ${request.params.name} disabled`);\n }\n if (tool.inputSchema) {\n const cb = tool.callback;\n const parseResult = await tool.inputSchema.safeParseAsync(request.params.arguments);\n if (!parseResult.success) {\n throw new McpError(ErrorCode.InvalidParams, `Input validation error: Invalid arguments for tool ${request.params.name}: ${parseResult.error.message}`);\n }\n const args = parseResult.data;\n result = await Promise.resolve(cb(args, extra));\n }\n else {\n const cb = tool.callback;\n result = await Promise.resolve(cb(extra));\n }\n if (tool.outputSchema && !result.isError) {\n if (!result.structuredContent) {\n throw new McpError(ErrorCode.InvalidParams, `Output validation error: Tool ${request.params.name} has an output schema but no structured content was provided`);\n }\n // if the tool has an output schema, validate structured content\n const parseResult = await tool.outputSchema.safeParseAsync(result.structuredContent);\n if (!parseResult.success) {\n throw new McpError(ErrorCode.InvalidParams, `Output validation error: Invalid structured content for tool ${request.params.name}: ${parseResult.error.message}`);\n }\n }\n }\n catch (error) {\n return this.createToolError(error instanceof Error ? error.message : String(error));\n }\n return result;\n });\n this._toolHandlersInitialized = true;\n }\n /**\n * Creates a tool error result.\n *\n * @param errorMessage - The error message.\n * @returns The tool error result.\n */\n createToolError(errorMessage) {\n return {\n content: [\n {\n type: 'text',\n text: errorMessage\n }\n ],\n isError: true\n };\n }\n setCompletionRequestHandler() {\n if (this._completionHandlerInitialized) {\n return;\n }\n this.server.assertCanSetRequestHandler(CompleteRequestSchema.shape.method.value);\n this.server.registerCapabilities({\n completions: {}\n });\n this.server.setRequestHandler(CompleteRequestSchema, async (request) => {\n switch (request.params.ref.type) {\n case 'ref/prompt':\n assertCompleteRequestPrompt(request);\n return this.handlePromptCompletion(request, request.params.ref);\n case 'ref/resource':\n assertCompleteRequestResourceTemplate(request);\n return this.handleResourceCompletion(request, request.params.ref);\n default:\n throw new McpError(ErrorCode.InvalidParams, `Invalid completion reference: ${request.params.ref}`);\n }\n });\n this._completionHandlerInitialized = true;\n }\n async handlePromptCompletion(request, ref) {\n const prompt = this._registeredPrompts[ref.name];\n if (!prompt) {\n throw new McpError(ErrorCode.InvalidParams, `Prompt ${ref.name} not found`);\n }\n if (!prompt.enabled) {\n throw new McpError(ErrorCode.InvalidParams, `Prompt ${ref.name} disabled`);\n }\n if (!prompt.argsSchema) {\n return EMPTY_COMPLETION_RESULT;\n }\n const field = prompt.argsSchema.shape[request.params.argument.name];\n if (!(field instanceof Completable)) {\n return EMPTY_COMPLETION_RESULT;\n }\n const def = field._def;\n const suggestions = await def.complete(request.params.argument.value, request.params.context);\n return createCompletionResult(suggestions);\n }\n async handleResourceCompletion(request, ref) {\n const template = Object.values(this._registeredResourceTemplates).find(t => t.resourceTemplate.uriTemplate.toString() === ref.uri);\n if (!template) {\n if (this._registeredResources[ref.uri]) {\n // Attempting to autocomplete a fixed resource URI is not an error in the spec (but probably should be).\n return EMPTY_COMPLETION_RESULT;\n }\n throw new McpError(ErrorCode.InvalidParams, `Resource template ${request.params.ref.uri} not found`);\n }\n const completer = template.resourceTemplate.completeCallback(request.params.argument.name);\n if (!completer) {\n return EMPTY_COMPLETION_RESULT;\n }\n const suggestions = await completer(request.params.argument.value, request.params.context);\n return createCompletionResult(suggestions);\n }\n setResourceRequestHandlers() {\n if (this._resourceHandlersInitialized) {\n return;\n }\n this.server.assertCanSetRequestHandler(ListResourcesRequestSchema.shape.method.value);\n this.server.assertCanSetRequestHandler(ListResourceTemplatesRequestSchema.shape.method.value);\n this.server.assertCanSetRequestHandler(ReadResourceRequestSchema.shape.method.value);\n this.server.registerCapabilities({\n resources: {\n listChanged: true\n }\n });\n this.server.setRequestHandler(ListResourcesRequestSchema, async (request, extra) => {\n const resources = Object.entries(this._registeredResources)\n .filter(([_, resource]) => resource.enabled)\n .map(([uri, resource]) => ({\n uri,\n name: resource.name,\n ...resource.metadata\n }));\n const templateResources = [];\n for (const template of Object.values(this._registeredResourceTemplates)) {\n if (!template.resourceTemplate.listCallback) {\n continue;\n }\n const result = await template.resourceTemplate.listCallback(extra);\n for (const resource of result.resources) {\n templateResources.push({\n ...template.metadata,\n // the defined resource metadata should override the template metadata if present\n ...resource\n });\n }\n }\n return { resources: [...resources, ...templateResources] };\n });\n this.server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => {\n const resourceTemplates = Object.entries(this._registeredResourceTemplates).map(([name, template]) => ({\n name,\n uriTemplate: template.resourceTemplate.uriTemplate.toString(),\n ...template.metadata\n }));\n return { resourceTemplates };\n });\n this.server.setRequestHandler(ReadResourceRequestSchema, async (request, extra) => {\n const uri = new URL(request.params.uri);\n // First check for exact resource match\n const resource = this._registeredResources[uri.toString()];\n if (resource) {\n if (!resource.enabled) {\n throw new McpError(ErrorCode.InvalidParams, `Resource ${uri} disabled`);\n }\n return resource.readCallback(uri, extra);\n }\n // Then check templates\n for (const template of Object.values(this._registeredResourceTemplates)) {\n const variables = template.resourceTemplate.uriTemplate.match(uri.toString());\n if (variables) {\n return template.readCallback(uri, variables, extra);\n }\n }\n throw new McpError(ErrorCode.InvalidParams, `Resource ${uri} not found`);\n });\n this.setCompletionRequestHandler();\n this._resourceHandlersInitialized = true;\n }\n setPromptRequestHandlers() {\n if (this._promptHandlersInitialized) {\n return;\n }\n this.server.assertCanSetRequestHandler(ListPromptsRequestSchema.shape.method.value);\n this.server.assertCanSetRequestHandler(GetPromptRequestSchema.shape.method.value);\n this.server.registerCapabilities({\n prompts: {\n listChanged: true\n }\n });\n this.server.setRequestHandler(ListPromptsRequestSchema, () => ({\n prompts: Object.entries(this._registeredPrompts)\n .filter(([, prompt]) => prompt.enabled)\n .map(([name, prompt]) => {\n return {\n name,\n title: prompt.title,\n description: prompt.description,\n arguments: prompt.argsSchema ? promptArgumentsFromSchema(prompt.argsSchema) : undefined\n };\n })\n }));\n this.server.setRequestHandler(GetPromptRequestSchema, async (request, extra) => {\n const prompt = this._registeredPrompts[request.params.name];\n if (!prompt) {\n throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.name} not found`);\n }\n if (!prompt.enabled) {\n throw new McpError(ErrorCode.InvalidParams, `Prompt ${request.params.name} disabled`);\n }\n if (prompt.argsSchema) {\n const parseResult = await prompt.argsSchema.safeParseAsync(request.params.arguments);\n if (!parseResult.success) {\n throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for prompt ${request.params.name}: ${parseResult.error.message}`);\n }\n const args = parseResult.data;\n const cb = prompt.callback;\n return await Promise.resolve(cb(args, extra));\n }\n else {\n const cb = prompt.callback;\n return await Promise.resolve(cb(extra));\n }\n });\n this.setCompletionRequestHandler();\n this._promptHandlersInitialized = true;\n }\n resource(name, uriOrTemplate, ...rest) {\n let metadata;\n if (typeof rest[0] === 'object') {\n metadata = rest.shift();\n }\n const readCallback = rest[0];\n if (typeof uriOrTemplate === 'string') {\n if (this._registeredResources[uriOrTemplate]) {\n throw new Error(`Resource ${uriOrTemplate} is already registered`);\n }\n const registeredResource = this._createRegisteredResource(name, undefined, uriOrTemplate, metadata, readCallback);\n this.setResourceRequestHandlers();\n this.sendResourceListChanged();\n return registeredResource;\n }\n else {\n if (this._registeredResourceTemplates[name]) {\n throw new Error(`Resource template ${name} is already registered`);\n }\n const registeredResourceTemplate = this._createRegisteredResourceTemplate(name, undefined, uriOrTemplate, metadata, readCallback);\n this.setResourceRequestHandlers();\n this.sendResourceListChanged();\n return registeredResourceTemplate;\n }\n }\n registerResource(name, uriOrTemplate, config, readCallback) {\n if (typeof uriOrTemplate === 'string') {\n if (this._registeredResources[uriOrTemplate]) {\n throw new Error(`Resource ${uriOrTemplate} is already registered`);\n }\n const registeredResource = this._createRegisteredResource(name, config.title, uriOrTemplate, config, readCallback);\n this.setResourceRequestHandlers();\n this.sendResourceListChanged();\n return registeredResource;\n }\n else {\n if (this._registeredResourceTemplates[name]) {\n throw new Error(`Resource template ${name} is already registered`);\n }\n const registeredResourceTemplate = this._createRegisteredResourceTemplate(name, config.title, uriOrTemplate, config, readCallback);\n this.setResourceRequestHandlers();\n this.sendResourceListChanged();\n return registeredResourceTemplate;\n }\n }\n _createRegisteredResource(name, title, uri, metadata, readCallback) {\n const registeredResource = {\n name,\n title,\n metadata,\n readCallback,\n enabled: true,\n disable: () => registeredResource.update({ enabled: false }),\n enable: () => registeredResource.update({ enabled: true }),\n remove: () => registeredResource.update({ uri: null }),\n update: updates => {\n if (typeof updates.uri !== 'undefined' && updates.uri !== uri) {\n delete this._registeredResources[uri];\n if (updates.uri)\n this._registeredResources[updates.uri] = registeredResource;\n }\n if (typeof updates.name !== 'undefined')\n registeredResource.name = updates.name;\n if (typeof updates.title !== 'undefined')\n registeredResource.title = updates.title;\n if (typeof updates.metadata !== 'undefined')\n registeredResource.metadata = updates.metadata;\n if (typeof updates.callback !== 'undefined')\n registeredResource.readCallback = updates.callback;\n if (typeof updates.enabled !== 'undefined')\n registeredResource.enabled = updates.enabled;\n this.sendResourceListChanged();\n }\n };\n this._registeredResources[uri] = registeredResource;\n return registeredResource;\n }\n _createRegisteredResourceTemplate(name, title, template, metadata, readCallback) {\n const registeredResourceTemplate = {\n resourceTemplate: template,\n title,\n metadata,\n readCallback,\n enabled: true,\n disable: () => registeredResourceTemplate.update({ enabled: false }),\n enable: () => registeredResourceTemplate.update({ enabled: true }),\n remove: () => registeredResourceTemplate.update({ name: null }),\n update: updates => {\n if (typeof updates.name !== 'undefined' && updates.name !== name) {\n delete this._registeredResourceTemplates[name];\n if (updates.name)\n this._registeredResourceTemplates[updates.name] = registeredResourceTemplate;\n }\n if (typeof updates.title !== 'undefined')\n registeredResourceTemplate.title = updates.title;\n if (typeof updates.template !== 'undefined')\n registeredResourceTemplate.resourceTemplate = updates.template;\n if (typeof updates.metadata !== 'undefined')\n registeredResourceTemplate.metadata = updates.metadata;\n if (typeof updates.callback !== 'undefined')\n registeredResourceTemplate.readCallback = updates.callback;\n if (typeof updates.enabled !== 'undefined')\n registeredResourceTemplate.enabled = updates.enabled;\n this.sendResourceListChanged();\n }\n };\n this._registeredResourceTemplates[name] = registeredResourceTemplate;\n return registeredResourceTemplate;\n }\n _createRegisteredPrompt(name, title, description, argsSchema, callback) {\n const registeredPrompt = {\n title,\n description,\n argsSchema: argsSchema === undefined ? undefined : z.object(argsSchema),\n callback,\n enabled: true,\n disable: () => registeredPrompt.update({ enabled: false }),\n enable: () => registeredPrompt.update({ enabled: true }),\n remove: () => registeredPrompt.update({ name: null }),\n update: updates => {\n if (typeof updates.name !== 'undefined' && updates.name !== name) {\n delete this._registeredPrompts[name];\n if (updates.name)\n this._registeredPrompts[updates.name] = registeredPrompt;\n }\n if (typeof updates.title !== 'undefined')\n registeredPrompt.title = updates.title;\n if (typeof updates.description !== 'undefined')\n registeredPrompt.description = updates.description;\n if (typeof updates.argsSchema !== 'undefined')\n registeredPrompt.argsSchema = z.object(updates.argsSchema);\n if (typeof updates.callback !== 'undefined')\n registeredPrompt.callback = updates.callback;\n if (typeof updates.enabled !== 'undefined')\n registeredPrompt.enabled = updates.enabled;\n this.sendPromptListChanged();\n }\n };\n this._registeredPrompts[name] = registeredPrompt;\n return registeredPrompt;\n }\n _createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, _meta, callback) {\n // Validate tool name according to SEP specification\n validateAndWarnToolName(name);\n const registeredTool = {\n title,\n description,\n inputSchema: getZodSchemaObject(inputSchema),\n outputSchema: getZodSchemaObject(outputSchema),\n annotations,\n _meta,\n callback,\n enabled: true,\n disable: () => registeredTool.update({ enabled: false }),\n enable: () => registeredTool.update({ enabled: true }),\n remove: () => registeredTool.update({ name: null }),\n update: updates => {\n if (typeof updates.name !== 'undefined' && updates.name !== name) {\n if (typeof updates.name === 'string') {\n validateAndWarnToolName(updates.name);\n }\n delete this._registeredTools[name];\n if (updates.name)\n this._registeredTools[updates.name] = registeredTool;\n }\n if (typeof updates.title !== 'undefined')\n registeredTool.title = updates.title;\n if (typeof updates.description !== 'undefined')\n registeredTool.description = updates.description;\n if (typeof updates.paramsSchema !== 'undefined')\n registeredTool.inputSchema = z.object(updates.paramsSchema);\n if (typeof updates.callback !== 'undefined')\n registeredTool.callback = updates.callback;\n if (typeof updates.annotations !== 'undefined')\n registeredTool.annotations = updates.annotations;\n if (typeof updates._meta !== 'undefined')\n registeredTool._meta = updates._meta;\n if (typeof updates.enabled !== 'undefined')\n registeredTool.enabled = updates.enabled;\n this.sendToolListChanged();\n }\n };\n this._registeredTools[name] = registeredTool;\n this.setToolRequestHandlers();\n this.sendToolListChanged();\n return registeredTool;\n }\n /**\n * tool() implementation. Parses arguments passed to overrides defined above.\n */\n tool(name, ...rest) {\n if (this._registeredTools[name]) {\n throw new Error(`Tool ${name} is already registered`);\n }\n let description;\n let inputSchema;\n let outputSchema;\n let annotations;\n // Tool properties are passed as separate arguments, with omissions allowed.\n // Support for this style is frozen as of protocol version 2025-03-26. Future additions\n // to tool definition should *NOT* be added.\n if (typeof rest[0] === 'string') {\n description = rest.shift();\n }\n // Handle the different overload combinations\n if (rest.length > 1) {\n // We have at least one more arg before the callback\n const firstArg = rest[0];\n if (isZodRawShape(firstArg)) {\n // We have a params schema as the first arg\n inputSchema = rest.shift();\n // Check if the next arg is potentially annotations\n if (rest.length > 1 && typeof rest[0] === 'object' && rest[0] !== null && !isZodRawShape(rest[0])) {\n // Case: tool(name, paramsSchema, annotations, cb)\n // Or: tool(name, description, paramsSchema, annotations, cb)\n annotations = rest.shift();\n }\n }\n else if (typeof firstArg === 'object' && firstArg !== null) {\n // Not a ZodRawShape, so must be annotations in this position\n // Case: tool(name, annotations, cb)\n // Or: tool(name, description, annotations, cb)\n annotations = rest.shift();\n }\n }\n const callback = rest[0];\n return this._createRegisteredTool(name, undefined, description, inputSchema, outputSchema, annotations, undefined, callback);\n }\n /**\n * Registers a tool with a config object and callback.\n */\n registerTool(name, config, cb) {\n if (this._registeredTools[name]) {\n throw new Error(`Tool ${name} is already registered`);\n }\n const { title, description, inputSchema, outputSchema, annotations, _meta } = config;\n return this._createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, _meta, cb);\n }\n prompt(name, ...rest) {\n if (this._registeredPrompts[name]) {\n throw new Error(`Prompt ${name} is already registered`);\n }\n let description;\n if (typeof rest[0] === 'string') {\n description = rest.shift();\n }\n let argsSchema;\n if (rest.length > 1) {\n argsSchema = rest.shift();\n }\n const cb = rest[0];\n const registeredPrompt = this._createRegisteredPrompt(name, undefined, description, argsSchema, cb);\n this.setPromptRequestHandlers();\n this.sendPromptListChanged();\n return registeredPrompt;\n }\n /**\n * Registers a prompt with a config object and callback.\n */\n registerPrompt(name, config, cb) {\n if (this._registeredPrompts[name]) {\n throw new Error(`Prompt ${name} is already registered`);\n }\n const { title, description, argsSchema } = config;\n const registeredPrompt = this._createRegisteredPrompt(name, title, description, argsSchema, cb);\n this.setPromptRequestHandlers();\n this.sendPromptListChanged();\n return registeredPrompt;\n }\n /**\n * Checks if the server is connected to a transport.\n * @returns True if the server is connected\n */\n isConnected() {\n return this.server.transport !== undefined;\n }\n /**\n * Sends a logging message to the client, if connected.\n * Note: You only need to send the parameters object, not the entire JSON RPC message\n * @see LoggingMessageNotification\n * @param params\n * @param sessionId optional for stateless and backward compatibility\n */\n async sendLoggingMessage(params, sessionId) {\n return this.server.sendLoggingMessage(params, sessionId);\n }\n /**\n * Sends a resource list changed event to the client, if connected.\n */\n sendResourceListChanged() {\n if (this.isConnected()) {\n this.server.sendResourceListChanged();\n }\n }\n /**\n * Sends a tool list changed event to the client, if connected.\n */\n sendToolListChanged() {\n if (this.isConnected()) {\n this.server.sendToolListChanged();\n }\n }\n /**\n * Sends a prompt list changed event to the client, if connected.\n */\n sendPromptListChanged() {\n if (this.isConnected()) {\n this.server.sendPromptListChanged();\n }\n }\n}\n/**\n * A resource template combines a URI pattern with optional functionality to enumerate\n * all resources matching that pattern.\n */\nexport class ResourceTemplate {\n constructor(uriTemplate, _callbacks) {\n this._callbacks = _callbacks;\n this._uriTemplate = typeof uriTemplate === 'string' ? new UriTemplate(uriTemplate) : uriTemplate;\n }\n /**\n * Gets the URI template pattern.\n */\n get uriTemplate() {\n return this._uriTemplate;\n }\n /**\n * Gets the list callback, if one was provided.\n */\n get listCallback() {\n return this._callbacks.list;\n }\n /**\n * Gets the callback for completing a specific URI template variable, if one was provided.\n */\n completeCallback(variable) {\n var _a;\n return (_a = this._callbacks.complete) === null || _a === void 0 ? void 0 : _a[variable];\n }\n}\nconst EMPTY_OBJECT_JSON_SCHEMA = {\n type: 'object',\n properties: {}\n};\n// Helper to check if an object is a Zod schema (ZodRawShape)\nfunction isZodRawShape(obj) {\n if (typeof obj !== 'object' || obj === null)\n return false;\n const isEmptyObject = Object.keys(obj).length === 0;\n // Check if object is empty or at least one property is a ZodType instance\n // Note: use heuristic check to avoid instanceof failure across different Zod versions\n return isEmptyObject || Object.values(obj).some(isZodTypeLike);\n}\nfunction isZodTypeLike(value) {\n return (value !== null &&\n typeof value === 'object' &&\n 'parse' in value &&\n typeof value.parse === 'function' &&\n 'safeParse' in value &&\n typeof value.safeParse === 'function');\n}\n/**\n * Converts a provided Zod schema to a Zod object if it is a ZodRawShape,\n * otherwise returns the schema as is.\n */\nfunction getZodSchemaObject(schema) {\n if (!schema) {\n return undefined;\n }\n if (isZodRawShape(schema)) {\n return z.object(schema);\n }\n return schema;\n}\nfunction promptArgumentsFromSchema(schema) {\n return Object.entries(schema.shape).map(([name, field]) => ({\n name,\n description: field.description,\n required: !field.isOptional()\n }));\n}\nfunction createCompletionResult(suggestions) {\n return {\n completion: {\n values: suggestions.slice(0, 100),\n total: suggestions.length,\n hasMore: suggestions.length > 100\n }\n };\n}\nconst EMPTY_COMPLETION_RESULT = {\n completion: {\n values: [],\n hasMore: false\n }\n};\n//# sourceMappingURL=mcp.js.map",
154
+ "import process from 'node:process';\nimport { ReadBuffer, serializeMessage } from '../shared/stdio.js';\n/**\n * Server transport for stdio: this communicates with a MCP client by reading from the current process' stdin and writing to stdout.\n *\n * This transport is only available in Node.js environments.\n */\nexport class StdioServerTransport {\n constructor(_stdin = process.stdin, _stdout = process.stdout) {\n this._stdin = _stdin;\n this._stdout = _stdout;\n this._readBuffer = new ReadBuffer();\n this._started = false;\n // Arrow functions to bind `this` properly, while maintaining function identity.\n this._ondata = (chunk) => {\n this._readBuffer.append(chunk);\n this.processReadBuffer();\n };\n this._onerror = (error) => {\n var _a;\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);\n };\n }\n /**\n * Starts listening for messages on stdin.\n */\n async start() {\n if (this._started) {\n throw new Error('StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.');\n }\n this._started = true;\n this._stdin.on('data', this._ondata);\n this._stdin.on('error', this._onerror);\n }\n processReadBuffer() {\n var _a, _b;\n while (true) {\n try {\n const message = this._readBuffer.readMessage();\n if (message === null) {\n break;\n }\n (_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, message);\n }\n catch (error) {\n (_b = this.onerror) === null || _b === void 0 ? void 0 : _b.call(this, error);\n }\n }\n }\n async close() {\n var _a;\n // Remove our event listeners first\n this._stdin.off('data', this._ondata);\n this._stdin.off('error', this._onerror);\n // Check if we were the only data listener\n const remainingDataListeners = this._stdin.listenerCount('data');\n if (remainingDataListeners === 0) {\n // Only pause stdin if we were the only listener\n // This prevents interfering with other parts of the application that might be using stdin\n this._stdin.pause();\n }\n // Clear the buffer and notify closure\n this._readBuffer.clear();\n (_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n send(message) {\n return new Promise(resolve => {\n const json = serializeMessage(message);\n if (this._stdout.write(json)) {\n resolve();\n }\n else {\n this._stdout.once('drain', resolve);\n }\n });\n }\n}\n//# sourceMappingURL=stdio.js.map",
155
+ "import { JSONRPCMessageSchema } from '../types.js';\n/**\n * Buffers a continuous stdio stream into discrete JSON-RPC messages.\n */\nexport class ReadBuffer {\n append(chunk) {\n this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk;\n }\n readMessage() {\n if (!this._buffer) {\n return null;\n }\n const index = this._buffer.indexOf('\\n');\n if (index === -1) {\n return null;\n }\n const line = this._buffer.toString('utf8', 0, index).replace(/\\r$/, '');\n this._buffer = this._buffer.subarray(index + 1);\n return deserializeMessage(line);\n }\n clear() {\n this._buffer = undefined;\n }\n}\nexport function deserializeMessage(line) {\n return JSONRPCMessageSchema.parse(JSON.parse(line));\n}\nexport function serializeMessage(message) {\n return JSON.stringify(message) + '\\n';\n}\n//# sourceMappingURL=stdio.js.map",
156
+ "export enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n}\n// Determine if stdio or http mode by checking the run command\nfunction detectTransportMode(): boolean {\n const args = Array.isArray(process.argv) ? process.argv.join(' ').toLowerCase() : ''\n const proto = typeof process !== 'undefined' && process.env.APP_PROTOCOL ? process.env.APP_PROTOCOL.toLowerCase() : ''\n const hasMcpUrl = typeof process !== 'undefined' && !!process.env.MCP_CONFIG_URL\n const envTransport =\n typeof process !== 'undefined' && process.env.transportType ? process.env.transportType.toLowerCase() : ''\n const forceStdio =\n typeof process !== 'undefined' && (process.env.MCP_STDIO === '1' || process.env.F2C_FORCE_STDIO === '1')\n const forceHttp = typeof process !== 'undefined' && process.env.F2C_FORCE_HTTP === '1'\n if (envTransport === 'stdio' || forceStdio) return false\n if (envTransport === 'http' || forceHttp) return true\n if (args.includes('http.ts')) return true\n if (hasMcpUrl) return true\n if (proto === 'http' || proto === 'https') return true\n return false\n}\nexport const isHttp = detectTransportMode()\nexport class Logger {\n private context: string\n private level: LogLevel\n private useTimestamp: boolean\n constructor(context: string, level: LogLevel = LogLevel.INFO) {\n this.context = context\n this.level = level\n this.useTimestamp = typeof process !== 'undefined' && process.env.F2C_LOG_TIMESTAMP === '1'\n }\n\n setLevel(level: LogLevel): void {\n this.level = level\n }\n log(...args: any[]): void {\n if (isHttp) {\n console.log(...args)\n } else {\n console.error(...args)\n }\n }\n logWarn(...args: any[]): void {\n if (isHttp) {\n console.warn(...args)\n } else {\n console.error(...args)\n }\n }\n debug(...args: any[]): void {\n if (this.level <= LogLevel.DEBUG) {\n const prefix = this.useTimestamp\n ? `[${new Date().toISOString()}] [DEBUG] [${this.context}]`\n : `[DEBUG] [${this.context}]`\n this.log(prefix, ...args)\n }\n }\n\n info(...args: any[]): void {\n if (this.level <= LogLevel.INFO) {\n const prefix = this.useTimestamp\n ? `[${new Date().toISOString()}] [INFO] [${this.context}]`\n : `[INFO] [${this.context}]`\n this.log(prefix, ...args)\n }\n }\n\n warn(...args: any[]): void {\n if (this.level <= LogLevel.WARN) {\n const prefix = this.useTimestamp\n ? `[${new Date().toISOString()}] [WARN] [${this.context}]`\n : `[WARN] [${this.context}]`\n this.logWarn(prefix, ...args)\n }\n }\n\n error(...args: any[]): void {\n if (this.level <= LogLevel.ERROR) {\n const prefix = this.useTimestamp\n ? `[${new Date().toISOString()}] [ERROR] [${this.context}]`\n : `[ERROR] [${this.context}]`\n console.error(prefix, ...args)\n }\n }\n\n raw(...args: any[]): void {\n if (isHttp) {\n console.log(...args)\n } else {\n console.error(...args)\n }\n }\n}\n\n// Create default logger instance\nexport const createLogger = (context: string, level: LogLevel = LogLevel.INFO) => new Logger(context, level)\n",
157
+ "import type {McpServer} from '@modelcontextprotocol/sdk/server/mcp.js'\nimport {StdioServerTransport} from '@modelcontextprotocol/sdk/server/stdio.js'\nimport {createLogger} from 'src/utils/logger'\n\nconst logger = createLogger('StdioTransport')\n\nexport async function startServer(server: McpServer) {\n try {\n const transport = new StdioServerTransport()\n await server.connect(transport)\n } catch (e: any) {\n logger.info(\n JSON.stringify({\n jsonrpc: '2.0',\n id: null,\n error: {\n code: -32000,\n message: `Server startup failed: ${e.message}`,\n },\n }),\n )\n process.exit(1)\n }\n}\n",
158
+ "import {randomUUID} from 'crypto'\nimport config, {ws_web_timeout_ms} from 'src/config'\nimport {EventType, MessageType} from 'src/server/code/ws'\nimport {createLogger, LogLevel} from 'src/utils/logger'\n\nconst log = createLogger('mcp-client', LogLevel.DEBUG)\ntype PendingRequest = {\n resolve: (value: any) => void\n reject: (error: Error) => void\n timeout?: NodeJS.Timeout\n}\n\nclass McpClient {\n private ws: WebSocket | null = null\n private timeout = ws_web_timeout_ms\n private pendingRequests = new Map<string, PendingRequest>()\n private uid: string\n\n constructor(uid: string, timeout?: number) {\n if (timeout && timeout > 0) {\n this.timeout = timeout\n }\n\n this.uid = uid\n }\n\n async connect(): Promise<void> {\n if (this.ws?.readyState === WebSocket.OPEN) return\n\n return new Promise((resolve, reject) => {\n const ws = new WebSocket(`${config.getCodeWS('mcp_' + this.uid)}`)\n this.ws = ws\n\n ws.onopen = () => resolve()\n ws.onerror = () => reject(new Error('WebSocket connection failed'))\n ws.onmessage = e => this.handleMessage(e.data)\n ws.onclose = () => {\n // 主动清理,避免挂起的请求泄漏\n this.disconnect()\n }\n })\n }\n\n private handleMessage(raw: string): void {\n let msg: any\n try {\n msg = JSON.parse(raw)\n } catch (err) {\n log.error('消息解析错误:', err)\n return\n }\n\n const id = msg.requestId\n if (!id) return\n\n const req = this.pendingRequests.get(id)\n if (!req) return\n\n if (req.timeout) clearTimeout(req.timeout)\n this.pendingRequests.delete(id)\n req.resolve(msg)\n }\n\n async request(type: EventType, data: any): Promise<MessageType> {\n log.debug('request', this.uid, type, data)\n await this.connect()\n\n return new Promise((resolve, reject) => {\n const ws = this.ws\n if (!ws || ws.readyState !== WebSocket.OPEN) {\n return reject(new Error('WebSocket not connected'))\n }\n\n const requestId = `mcp_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`\n\n let timeout: NodeJS.Timeout | undefined\n if (this.timeout > 0) {\n timeout = setTimeout(() => {\n this.pendingRequests.delete(requestId)\n log.warn(`请求超时: ${type}`, {requestId})\n reject(new Error(`Request timeout: ${type}`))\n }, this.timeout)\n }\n\n this.pendingRequests.set(requestId, {resolve, reject, timeout})\n\n ws.send(\n JSON.stringify({\n type,\n data,\n requestId,\n from: 'mcp',\n timestamp: Date.now(),\n }),\n )\n })\n }\n\n disconnect(): void {\n this.ws?.close()\n this.ws = null\n\n this.pendingRequests.forEach(req => {\n if (req.timeout) clearTimeout(req.timeout)\n req.reject(new Error('Connection closed'))\n })\n this.pendingRequests.clear()\n }\n\n get isConnected(): boolean {\n return this.ws?.readyState === WebSocket.OPEN\n }\n}\n\nexport const createMcpClient = (uid: string, timeout?: number) => new McpClient(uid, timeout)\n\nclass McpClientPoolImpl {\n private pool = new Map<string, McpClient>()\n private getUid(o: any): string {\n const token = (o?.requestInfo?.headers as any)?.accesstoken\n return typeof token === 'string' && token.length > 0 ? token : randomUUID()\n }\n get(o: any, timeout?: number): McpClient {\n const uid = typeof o === 'string' ? o : this.getUid(o)\n const c = this.pool.get(uid)\n if (c) return c\n const client = createMcpClient(uid, timeout)\n this.pool.set(uid, client)\n return client\n }\n disconnect(o: any): boolean {\n const uid = this.getUid(o)\n const c = this.pool.get(uid)\n if (!c) return false\n c.disconnect()\n this.pool.delete(uid)\n return true\n }\n disconnectAll(): void {\n for (const [id, c] of this.pool.entries()) {\n c.disconnect()\n this.pool.delete(id)\n }\n }\n isConnected(o: any): boolean {\n const uid = this.getUid(o)\n const c = this.pool.get(uid)\n return c?.isConnected ?? false\n }\n}\n\nexport const mcpClients = new McpClientPoolImpl()\n",
159
+ "const PRESET = {protocol: 'http', host: 'localhost', port: 3000}\nexport const env = (typeof process !== 'undefined' && process.env.APP_ENV) || 'dev'\nexport class AppConfig {\n public port: number\n public ip: string\n public httpProto: string\n\n constructor(init: {protocol?: string; host?: string; port?: string | number}) {\n const httpProto = (init?.protocol || 'http').toLowerCase()\n const host = init?.host || 'localhost'\n const portStr = typeof init?.port === 'number' ? String(init.port) : init?.port || '3000'\n const port = Number.parseInt(portStr, 10)\n this.httpProto = httpProto\n this.port = port\n this.ip = host\n }\n\n private get wsProto(): 'ws' | 'wss' {\n return this.httpProto === 'https' ? 'wss' : 'ws'\n }\n\n private portSuffix(proto: 'http' | 'https' | 'ws' | 'wss'): string {\n const p = this.port\n if ((proto === 'http' || proto === 'ws') && p === 80) return ''\n if ((proto === 'https' || proto === 'wss') && p === 443) return ''\n return `:${p}`\n }\n\n get httpUrl(): string {\n const proto = this.httpProto as 'http' | 'https'\n return `${proto}://${this.ip}${this.portSuffix(proto)}`\n }\n\n get codeWsUrl(): string {\n const proto = this.wsProto\n return `${proto}://${this.ip}${this.portSuffix(proto)}/code`\n }\n\n get mcpHttpUrl(): string {\n if (Bun && Bun.env.MCP_CONFIG_URL) return Bun.env.MCP_CONFIG_URL\n const proto = this.httpProto as 'http' | 'https'\n return `${proto}://${this.ip}${this.portSuffix(proto)}/mcp`\n }\n\n getCodeWS(uid: string): string {\n return `${this.codeWsUrl}/${uid}`\n }\n\n static fromEnv(): AppConfig {\n const base = PRESET\n const protocol = (typeof process !== 'undefined' && process.env.APP_PROTOCOL) || base.protocol\n const host = (typeof process !== 'undefined' && process.env.APP_HOST) || base.host\n const port = (typeof process !== 'undefined' && process.env.APP_PORT) || base.port\n return new AppConfig({protocol, host, port})\n }\n}\n\nexport default AppConfig.fromEnv()\n\nexport const ws_web_timeout_ms =\n typeof process !== 'undefined' && process.env.WS_WEB_TIMEOUT_MS\n ? Number.parseInt(process.env.WS_WEB_TIMEOUT_MS, 10)\n : 0\n",
160
+ "export const wrapTailwindCode = (source: string) => {\n return `<!doctype html>\n<html>\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <script src=\"https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4\"></script>\n </head>\n <body>\n ${source}\n </body>\n</html>`\n}\n",
161
+ "import {McpServer} from '@modelcontextprotocol/sdk/server/mcp.js'\n\nconst COMMON_REQUIREMENTS = {\n react: {\n base: `- 仅返回有效的 TSX 代码;不要添加任何解释。\n- 属性重命名:'class'→'className','for'→'htmlFor','tabindex'→'tabIndex'。\n- 将 HTML DOM 事件映射为 React 驼峰事件:'onclick'→'onClick','oninput'→'onInput','onchange'→'onChange','onsubmit'→'onSubmit','onfocus'→'onFocus','onblur'→'onBlur'。\n- 保持语义与结构;不得添加任何业务逻辑。`,\n tailwind: `- Tailwind 工具类保留在 'className'。\n- 将内联 'style=\"...\"' 转为 React 样式对象:'style={{...}}'。`,\n css: `- 用语义化类名替换 Tailwind 工具类,并通过 CSS Module 引用:import styles from './{{componentName}}.module.css'。\n- 通过 'className={styles.className}' 应用类名。\n- 仅在动态情况下将内联 'style=\"...\"' 转为 React 样式对象;静态样式优先移入 CSS Module。`,\n },\n vue: {\n base: `- 仅输出单个 .vue 代码块;不要添加任何解释。\n- 保持语义与结构;不得添加任何业务逻辑。\n- 组件命名提示:{{componentName}}(文件名可能为 {{componentName}}.vue)。`,\n tailwind: `- 使用 <template> 与 <script setup lang=\"ts\">(无逻辑时脚本保持为空)。\n- Tailwind 工具类保留在 'class'(不要改为 className)。\n- 将 HTML DOM 事件映射为 Vue 监听器('@event'):'onclick'→'@click','oninput'→'@input','onchange'→'@change','onsubmit'→'@submit','onfocus'→'@focus','onblur'→'@blur'。\n- 将内联 'style=\"...\"' 转为 Vue 绑定样式对象 ':style=\"{...}\"'。`,\n css: `- 使用 <template>、<script setup lang=\"ts\"> 与 <style scoped>(无逻辑时脚本保持为空)。\n- 不使用 Tailwind 工具类。改为语义化类名,并在 <style scoped> 中编写等效 CSS 规则。\n- 将 HTML DOM 事件映射为 Vue 监听器('@event'):'onclick'→'@click','oninput'→'@input','onchange'→'@change','onsubmit'→'@submit','onfocus'→'@focus','onblur'→'@blur'。\n- 静态内联样式优先移入 <style scoped>;动态表达保留为 ':style=\"{...}\"'。`,\n },\n}\n\nexport const registerCodeConvertPrompts = (mcpServer: McpServer) => {}\n\n// Helper function to generate prompt text based on framework and style\nexport function generatePromptText(\n promptName: string,\n componentName: string,\n source: string,\n assets?: string[],\n): string {\n const basePrompt =\n '你是一个精确的代码转换器。以还原度为最高优先:保持原始视觉输出与结构不变。将组件名标准化为英文 PascalCase;把非英文名称(如中文)翻译为简洁的英文标识符。'\n\n const assetListSection = assets && assets.length > 0 ? `\\n\\n资产:\\n${assets.join('\\n')}` : ''\n\n switch (promptName) {\n case 'html-to-react-tailwind':\n return `${basePrompt}\n将提供的 HTML + TailwindCSS 代码片段转换为 React 函数组件(TSX)。\n\n要求:\n${COMMON_REQUIREMENTS.react.base}\n${COMMON_REQUIREMENTS.react.tailwind}\n\n组件名: ${componentName}\n\n源码:\n${source}${assetListSection}`\n\n case 'html-to-react-css':\n return `${basePrompt}\n将提供的 HTML + TailwindCSS 代码片段转换为使用语义化 CSS(不使用 Tailwind)的 React 函数组件(TSX)。\n\n要求:\n${COMMON_REQUIREMENTS.react.base}\n${COMMON_REQUIREMENTS.react.css.replace(/\\{\\{componentName\\}\\}/g, componentName)}\n\n组件名: ${componentName}\n\n源码:\n${source}${assetListSection}`\n\n case 'html-to-vue-tailwind':\n return `${basePrompt}\n将提供的 HTML + TailwindCSS 代码片段转换为保留 Tailwind 工具类的 Vue 3 单文件组件(SFC)。\n\n要求:\n${COMMON_REQUIREMENTS.vue.base.replace(/\\{\\{componentName\\}\\}/g, componentName)}\n${COMMON_REQUIREMENTS.vue.tailwind}\n\n源码:\n${source}${assetListSection}`\n\n case 'html-to-vue-css':\n return `${basePrompt}\n将提供的 HTML + TailwindCSS 代码片段转换为使用语义化 CSS 的 Vue 3 单文件组件(SFC)。\n\n要求:\n${COMMON_REQUIREMENTS.vue.base.replace(/\\{\\{componentName\\}\\}/g, componentName)}\n${COMMON_REQUIREMENTS.vue.css}\n\n源码:\n${source}${assetListSection}`\n\n case 'html-to-html-tailwind':\n return `必须原样返回以下源码,不做任何操作。\n\n规则:\n- 仅输出下方源码文本;不得添加或删除任何字符;输出必须与源码逐字符一致。\n\n源码:\n${source}${assetListSection}`\n\n default:\n return `${basePrompt}\n将提供的 HTML + TailwindCSS 代码片段转换为使用语义化 CSS 的 React 函数组件(TSX)。\n\n组件名: ${componentName}\n\n源码:\n${source}${assetListSection}`\n }\n}\n",
162
+ "import {McpServer} from '@modelcontextprotocol/sdk/server/mcp.js'\nimport {RequestHandlerExtra} from '@modelcontextprotocol/sdk/shared/protocol.js'\nimport {ServerNotification, ServerRequest} from '@modelcontextprotocol/sdk/types.js'\nimport path from 'path'\nimport downloader from 'src/utils/downloader'\nimport {createLogger, LogLevel} from 'src/utils/logger'\nimport {z} from 'zod'\nimport {base64} from 'zod/v4'\nimport {mcpClients} from '@/client/mcp-client.js'\nimport {wrapTailwindCode} from '@/utils/code'\nimport {generatePromptText} from './prompt'\n\nconst logger = createLogger('gen-code-tool', LogLevel.DEBUG)\n\nexport const genCodeTool = (\n mcpServer: McpServer,\n fn?: (toolName: string, arg: any, o?: RequestHandlerExtra<ServerRequest, ServerNotification>) => any,\n) =>\n mcpServer.registerTool(\n 'get_code_to_component',\n {\n title: 'get code to component',\n description: 'Fetch HTML code via WebSocket and generate React/Vue/HTML output',\n inputSchema: {\n componentName: z.string().optional().describe('Optional component name hint (e.g., HelloDiv)'),\n framework: z\n .enum(['react', 'vue', 'html'])\n .default('react')\n .describe('Target framework to generate: react, vue, or html (default: react)'),\n style: z\n .enum(['css', 'tailwind'])\n .default('css')\n .describe(\n \"Styling mode: 'css' converts Tailwind to CSS rules; 'tailwind' keeps Tailwind utilities (default: css)\",\n ),\n localPath: z\n .string()\n .optional()\n .describe(\n 'Absolute path for asset(e.g., images) and code storage. Directory will be created if non-existent. Path must follow OS-specific format without special character escaping. When this path is set, all code-related static resources are stored in this directory, while other assets (e.g., images) will be saved into the subdirectory named assets under this path.',\n ),\n },\n outputSchema: {\n files: z\n .array(\n z.object({\n path: z.string().describe('Path to the file relative to the localPath'),\n content: z.string().describe('Content of the file'),\n }),\n )\n .default([])\n .describe('List of files generated or updated'),\n assets: z\n .array(\n z.object({\n filename: z.string().describe('Filename of the asset'),\n base64: z.string().describe('Base64-encoded content of the asset'),\n format: z.string().describe('Format of the asset (e.g., image/png)').default('png'),\n }),\n )\n .default([])\n .describe('List of assets generated or updated'),\n },\n },\n async ({componentName, framework, style, localPath}, o) => {\n // console.error('get_code_to_component', o)\n if (fn) {\n const rs: any = await fn('get_code_to_component', {componentName, framework, style, localPath})\n return rs\n }\n logger.debug('get_code_to_component', o.requestInfo?.headers.accesstoken)\n let name = componentName || 'ConvertedComponent'\n const fw = framework || 'react'\n let sm = style || 'css'\n // downloader.setup({localPath: localPath || process.cwd(), imgFormat: 'png'})\n\n if (fw === 'html') {\n sm = 'tailwind'\n }\n\n try {\n const client = mcpClients.get(o)\n logger.info('Socket 连接状态:', client.isConnected)\n\n const rs = await client.request('mcp-request-code', {\n componentName: name,\n framework: fw,\n style: sm,\n })\n logger.debug('Socket 响应:', rs)\n if (rs.data?.error) {\n throw new Error(rs.data.error)\n }\n name = rs.data?.nodeName || name\n\n const htmlContent = rs.data.content\n\n // 提取 body 内容或使用完整 HTML\n const bodyMatch = htmlContent.match(/<body[^>]*>([\\s\\S]*?)<\\/body>/i)\n let source = bodyMatch ? bodyMatch[1].trim() : htmlContent.trim()\n\n if (!source) {\n throw new Error('No HTML content received from socket')\n }\n\n const promptName = `html-to-${fw}-${sm}`\n\n if (sm === 'tailwind' && fw === 'html') {\n // 包装 Tailwind 代码\n source = wrapTailwindCode(source)\n }\n\n // 从 socket 返回的 files 中提取资源列表(图片类)\n const files = rs.data.files\n const imageFiles = Array.isArray(files)\n ? files.filter((f: {path: string}) => f.path.match(/\\.(png|jpg|jpeg|svg|gif|webp)$/i))\n : []\n const codeFiles = Array.isArray(files)\n ? files.filter((f: {path: string}) => !f.path.match(/\\.(png|jpg|jpeg|svg|gif|webp)$/i))\n : []\n\n // 生成组件代码提示(附带资产列表)\n const assetList = imageFiles.map((f: {path: string}) => f.path)\n const promptText = generatePromptText(promptName, name, source, assetList)\n const imgFormat = 'png'\n // const localMCP = !Bun.env.MCP_CONFIG_URL\n // if (localMCP && Array.isArray(files)) {\n // downloader.setup({localPath: localPath || process.cwd(), imgFormat})\n // await downloader.downLoadImageFromBase64(imageFiles)\n // }\n const structuredContent = {\n files: codeFiles.map((f: {path: string; content: string}) => ({\n path: f.path,\n content: f.content,\n })),\n assets: imageFiles.map((f: {path: string; content: string}) => ({\n filename: f.path,\n base64: f.content,\n format: imgFormat,\n })),\n }\n // logger.debug('structuredContent', structuredContent)\n return {\n content: [{type: 'text', text: promptText}],\n structuredContent,\n }\n } catch (error) {\n logger.info('错误时 Socket 连接状态:', false)\n logger.error('Socket 请求错误:', error)\n\n return {\n content: [\n {\n type: 'text',\n text: `Error fetching or processing HTML via socket: ${error instanceof Error ? error.message : 'Unknown error'}`,\n },\n ],\n }\n }\n },\n )\n",
163
+ "export const getCliParam = (names: string[]): string | undefined => {\n // console.log('process.argv', process.argv)\n const argv = Array.isArray(process.argv) ? process.argv.slice(2) : []\n for (const name of names) {\n for (let i = 0; i < argv.length; i++) {\n const token = argv[i]\n if (typeof token === 'string' && token.startsWith(`--${name}=`)) {\n const v = token.slice(name.length + 3)\n if (v) return v\n }\n if (token === `--${name}` && i + 1 < argv.length) {\n const v = argv[i + 1]\n if (v && !v.startsWith('--')) return v\n }\n }\n }\n return undefined\n}\n",
164
+ "import fs from 'fs'\nimport fsp from 'fs/promises'\nimport path from 'path'\nimport {createLogger, LogLevel} from 'src/utils/logger'\nimport compatFetch from './fetch'\n\nexport interface NodeToCodeFile {\n content: string\n path: string\n}\n\nexport interface DownloaderOptions {\n localPath?: string\n imgFormat: 'png' | 'jpg' | 'svg'\n}\n\nconst logger = createLogger('Downloader', LogLevel.DEBUG)\n\nexport class Downloader {\n op!: DownloaderOptions\n assetsPath = ''\n savePath = ''\n public setup(o: DownloaderOptions) {\n this.op = o\n if (this.op.localPath) {\n this.assetsPath = path.join(this.op.localPath, 'assets')\n this.savePath = this.op.localPath\n }\n }\n /**\n * 下载远程图片到本地\n * @param url 远程图片URL\n * @param options 下载选项\n * @returns 返回本地相对路径\n */\n private async downloadImage(url: string, fileName: string): Promise<string> {\n const {imgFormat} = this.op\n const localPath = this.assetsPath\n try {\n // 确保目标目录存在\n if (!fs.existsSync(localPath)) {\n fs.mkdirSync(localPath, {recursive: true})\n }\n const localfileName = `${fileName}.${imgFormat}`\n // 构建本地文件路径\n const localFilePath = path.join(localPath, localfileName)\n\n // 下载图片\n const response = await compatFetch(url)\n if (!response.ok) {\n throw new Error(`下载失败: ${response.status} ${response.statusText}`)\n }\n\n // 将响应内容转换为Buffer并写入文件\n const buffer = await response.arrayBuffer()\n fs.writeFileSync(localFilePath, new Uint8Array(buffer))\n\n // 返回相对路径\n return path.join(path.basename(localPath), localfileName).replace(/\\\\/g, '/')\n } catch (error) {\n logger.error('图片下载错误:', error)\n throw error\n }\n }\n\n /**\n * 从HTML/JSX内容中提取并下载图片\n * @param content 包含图片URL的内容\n * @param localPath 本地存储路径\n * @returns 替换后的内容\n */\n private async downLoadImageAndReplaceContent(content: string): Promise<string> {\n try {\n // 匹配Figma图片URL的正则表达式\n const imgRegex = /https:\\/\\/figma-alpha-api\\.s3\\.us-west-2\\.amazonaws\\.com\\/images\\/[a-f0-9-]+/g\n const matches = content.match(imgRegex)\n\n if (!matches) {\n return content\n }\n\n // 去重URL\n const uniqueUrls = [...new Set(matches)]\n\n // 创建下载任务映射\n const downloadTasks = new Map()\n\n // 并行下载所有图片\n await Promise.all(\n uniqueUrls.map(async remoteUrl => {\n const fileName = path.basename(remoteUrl)\n const localUrl = await this.downloadImage(remoteUrl, fileName)\n downloadTasks.set(remoteUrl, localUrl)\n }),\n )\n\n // 一次性替换所有URL\n let processedContent = content\n for (const [remoteUrl, localUrl] of downloadTasks.entries()) {\n // 使用全局替换以处理重复的URL\n const regex = new RegExp(remoteUrl.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'g')\n processedContent = processedContent.replace(regex, localUrl)\n }\n\n return processedContent\n } catch (error) {\n logger.error('内容处理错误:', error)\n throw error\n }\n }\n /**\n * 从 base64 数据保存图片到本地\n * @param base64Data base64 图片数据(可以包含 data:image/png;base64, 前缀)\n * @param fileName 文件名(包含扩展名)\n * @returns 返回本地相对路径\n */\n private async saveImageFromBase64(base64Data: string, fileName: string): Promise<string> {\n const localPath = this.assetsPath\n try {\n // 确保目标目录存在\n if (!fs.existsSync(localPath)) {\n fs.mkdirSync(localPath, {recursive: true})\n }\n\n // 移除 base64 前缀(如果存在)\n const base64String = base64Data.replace(/^data:image\\/\\w+;base64,/, '')\n\n // 构建本地文件路径\n const localFilePath = path.join(localPath, fileName)\n\n // 将 base64 转换为 Buffer 并写入文件\n const buffer = Buffer.from(base64String, 'base64')\n fs.writeFileSync(localFilePath, buffer)\n\n logger.debug(`Saved base64 image: ${localFilePath}`)\n\n // 返回相对路径\n return path.join(path.basename(localPath), fileName).replace(/\\\\/g, '/')\n } catch (error) {\n logger.error('Base64 图片保存错误:', error)\n throw error\n }\n }\n\n /**\n * 处理包含 base64 图片的文件列表\n * 将 base64 图片保存到本地,并更新代码中的引用路径\n * @param files 文件列表\n */\n public async downLoadImageFromBase64(files: NodeToCodeFile[]) {\n if (!this.op.localPath) return\n\n // 过滤出图片文件\n const imageFiles = files.filter(f => f.path.match(/\\.(png|jpg|jpeg|svg|gif|webp)$/i))\n\n // 保存所有图片文件\n for (const imageFile of imageFiles) {\n try {\n const fileName = path.basename(imageFile.path)\n await this.saveImageFromBase64(imageFile.content, fileName)\n logger.debug(`Successfully saved image: ${imageFile.path}`)\n } catch (error) {\n logger.error(`Failed to save image ${imageFile.path}:`, error)\n }\n }\n\n // 保存代码文件\n const codeFiles = files.filter(f => !f.path.match(/\\.(png|jpg|jpeg|svg|gif|webp)$/i))\n\n for (const file of codeFiles) {\n try {\n const savedPath = await this.saveContentToFile(file.content, file.path)\n logger.debug(`Successfully saved: ${savedPath}`)\n } catch (error) {\n logger.error(`Failed to save file ${file.path}:`, error)\n }\n }\n }\n\n public async checkLocalAndDownload(files: NodeToCodeFile[]) {\n if (!this.op.localPath) return\n\n await Promise.all(\n files.map(async f => {\n f.content = await this.downLoadImageAndReplaceContent(f.content)\n }),\n )\n\n for (const file of files) {\n try {\n const savedPath = await this.saveContentToFile(file.content, file.path)\n logger.debug(`Successfully saved: ${savedPath}`)\n } catch (error) {\n logger.error(`Failed to save file ${file.path}:`, error)\n }\n }\n }\n /**\n * 确保目录存在\n */\n private async ensureDirectoryExists(dirPath: string): Promise<void> {\n if (!fs.existsSync(dirPath)) {\n logger.debug(`Creating directory: ${dirPath}`)\n await fsp.mkdir(dirPath, {recursive: true})\n }\n }\n async saveContentToFile(content: string, filePath: string): Promise<string> {\n try {\n const fullPath = path.join(this.savePath, filePath)\n const dirPath = path.dirname(fullPath)\n logger.debug(`Full path: ${fullPath}, directory: ${dirPath}`)\n\n await this.ensureDirectoryExists(dirPath)\n\n // 为HTML文件添加HTML和body标签\n if (filePath.endsWith('.html')) {\n logger.debug('Wrapping content with HTML template')\n content = this.wrapHtmlContent(content)\n }\n\n logger.debug(`Writing ${content.length} bytes to file`)\n await fsp.writeFile(fullPath, content)\n logger.info(`File saved: ${fullPath}`)\n return fullPath\n } catch (error) {\n logger.error('File save error:', filePath, error)\n throw error // 文件保存失败仍然抛出异常,因为这是关键操作\n }\n }\n /**\n * 包装HTML内容\n */\n private wrapHtmlContent(content: string): string {\n logger.debug('Wrapping content with HTML template')\n return `<!DOCTYPE html>\n <html>\n <head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>F2C Generated</title>\n </head>\n <body>\n ${content}\n </body>\n </html>`\n }\n}\n\nexport default new Downloader()\n",
165
+ "/**\n * 兼容性fetch工具\n * 对于支持原生fetch的Node环境使用fetch,对于不支持的环境使用node-fetch\n */\n\nlet nodeFetchModule: any = null\n\n/**\n * 获取兼容的fetch函数\n * @returns Promise<typeof fetch>\n */\nasync function getCompatibleFetch(): Promise<typeof fetch> {\n // 优先检查global.fetch(用于测试环境)\n if (typeof global !== 'undefined' && global.fetch) {\n return global.fetch\n }\n\n // 检查是否支持原生fetch\n if (typeof globalThis.fetch !== 'undefined') {\n return globalThis.fetch\n }\n\n // 如果不支持原生fetch,动态导入node-fetch\n if (!nodeFetchModule) {\n try {\n nodeFetchModule = await import('node-fetch')\n } catch (error) {\n throw new Error(\n 'Neither native fetch nor node-fetch is available. Please install node-fetch or upgrade to Node.js 18+',\n )\n }\n }\n\n return nodeFetchModule.default as unknown as typeof fetch\n}\n\n/**\n * 兼容性fetch函数\n * @param input - 请求URL或Request对象\n * @param init - 请求配置选项\n * @returns Promise<Response>\n */\nexport async function compatFetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response> {\n // 每次调用都重新获取fetch函数,以确保在测试环境中能正确使用mock\n const fetchFn = await getCompatibleFetch()\n return fetchFn(input, init)\n}\n\nexport default compatFetch\n",
166
+ "#!/usr/bin/env node\nimport {Client} from '@modelcontextprotocol/sdk/client/index.js'\nimport {StreamableHTTPClientTransport} from '@modelcontextprotocol/sdk/client/streamableHttp.js'\nimport {McpServer} from '@modelcontextprotocol/sdk/server/mcp.js'\nimport {startServer} from 'src/server/common/stdio'\nimport {createLogger, LogLevel} from 'src/utils/logger'\nimport {name as pkgName, version as pkgVersion} from '../package.json'\n// import z from 'zod'\nimport config from './config'\nimport {genCodeTool} from './tool/code-convert/gen-code-tool'\nimport {getCliParam} from './utils'\nimport downloader from './utils/downloader'\n\nexport const server = new McpServer(\n {\n name: 'f2c-local-mcp',\n version: '0.0.1',\n },\n {\n capabilities: {\n logging: {},\n tools: {},\n },\n },\n)\n\nconst logger = createLogger('local-gen-code-client', LogLevel.INFO)\nlet client = new Client({name: 'web-demo', version: '1.0.0'}, {capabilities: {}})\n//\ngenCodeTool(server, async (toolName, {componentName, framework, style, localPath}: any) => {\n logger.debug('genCodeTool', componentName, framework, style, localPath)\n const rs: any = await client.callTool({\n name: toolName,\n arguments: {\n componentName,\n framework,\n style,\n localPath,\n },\n })\n //\n if (Array.isArray(rs?.structuredContent?.assets)) {\n try {\n localPath = localPath || process.cwd()\n downloader.setup({localPath, imgFormat: 'png'})\n //\n const imageFiles = rs?.structuredContent?.assets.map((f: {filename: string; base64: string}) => ({\n path: f.filename,\n content: f.base64,\n }))\n logger.debug(\n 'download image files',\n localPath,\n imageFiles.map((f: {path: any}) => f.path),\n )\n await downloader.downLoadImageFromBase64(imageFiles)\n } catch (e) {\n logger.error('download image failed', e)\n // return {error: e}\n }\n }\n //\n return rs\n})\n\nconst cliToken = getCliParam(['accessToken'])\nconst cliMcp = getCliParam(['mcpServer'])\n//\nconst mcpServer = cliMcp || process.env.MCP_SERVER_URL || 'https://f2c-figma-mcp.yy.com/mcp'\nconst accessToken = cliToken || process.env.MCP_CLIENT_TOKEN || ''\n//\nlogger.info('McpName:', pkgName)\nlogger.info('McpVersion:', pkgVersion)\nlogger.info('McpServer', mcpServer)\nlogger.info('MccessToken:', accessToken || 'NONE')\n//\nconst transport = new StreamableHTTPClientTransport(new URL(mcpServer), {\n requestInit: {\n headers: {\n accesstoken: accessToken,\n },\n },\n})\n\nawait client.connect(transport)\n\nstartServer(server)\n"
167
+ ],
168
+ "mappings": "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",
169
+ "debugId": "755D5DA80D11E7E564756E2164756E21",
170
+ "names": []
171
+ }