sunpeak 0.16.21 → 0.16.24

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.
Files changed (68) hide show
  1. package/README.md +4 -3
  2. package/bin/commands/dev.mjs +22 -3
  3. package/bin/commands/new.mjs +6 -2
  4. package/bin/commands/start.mjs +4 -0
  5. package/bin/lib/get-port.mjs +60 -0
  6. package/bin/lib/live/browser-auth.mjs +125 -0
  7. package/bin/lib/live/chatgpt-config.d.mts +5 -0
  8. package/bin/lib/live/chatgpt-config.mjs +12 -0
  9. package/bin/lib/live/chatgpt-fixtures.d.mts +12 -0
  10. package/bin/lib/live/chatgpt-fixtures.mjs +25 -0
  11. package/bin/lib/live/chatgpt-page.mjs +210 -0
  12. package/bin/lib/live/global-setup.mjs +150 -0
  13. package/bin/lib/live/host-fixtures.mjs +61 -0
  14. package/bin/lib/live/host-page.mjs +242 -0
  15. package/bin/lib/live/live-config.d.mts +38 -0
  16. package/bin/lib/live/live-config.mjs +98 -0
  17. package/bin/lib/live/live-fixtures.d.mts +11 -0
  18. package/bin/lib/live/live-fixtures.mjs +102 -0
  19. package/bin/lib/live/test-config.d.mts +10 -0
  20. package/bin/lib/live/test-config.mjs +35 -0
  21. package/bin/lib/live/types.d.mts +54 -0
  22. package/bin/lib/live/utils.mjs +70 -0
  23. package/bin/sunpeak.js +1 -1
  24. package/dist/chatgpt/index.cjs +1 -1
  25. package/dist/chatgpt/index.js +1 -1
  26. package/dist/claude/index.cjs +1 -1
  27. package/dist/claude/index.js +1 -1
  28. package/dist/{index-CX6Z4bED.js → index-B7Qw3Vhh.js} +2 -2
  29. package/dist/index-B7Qw3Vhh.js.map +1 -0
  30. package/dist/{index-B4aC3vjH.js → index-BEHP_bM8.js} +2 -2
  31. package/dist/index-BEHP_bM8.js.map +1 -0
  32. package/dist/{index-bKBBCBK6.cjs → index-SfudQ9Y_.cjs} +2 -2
  33. package/dist/index-SfudQ9Y_.cjs.map +1 -0
  34. package/dist/{index-CKabCJyV.cjs → index-XKHXfBiD.cjs} +2 -2
  35. package/dist/index-XKHXfBiD.cjs.map +1 -0
  36. package/dist/index.cjs +13 -5
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.js +13 -5
  39. package/dist/index.js.map +1 -1
  40. package/dist/mcp/index.cjs +38 -13
  41. package/dist/mcp/index.cjs.map +1 -1
  42. package/dist/mcp/index.js +38 -13
  43. package/dist/mcp/index.js.map +1 -1
  44. package/dist/mcp/types.d.ts +2 -0
  45. package/dist/simulator/index.cjs +1 -1
  46. package/dist/simulator/index.js +1 -1
  47. package/dist/simulator/simple-sidebar.d.ts +3 -1
  48. package/dist/{simulator-D8t-r7HH.js → simulator-BCq2iOT-.js} +67 -27
  49. package/dist/simulator-BCq2iOT-.js.map +1 -0
  50. package/dist/{simulator-FFNttkqL.cjs → simulator-DRUsm6IZ.cjs} +67 -27
  51. package/dist/simulator-DRUsm6IZ.cjs.map +1 -0
  52. package/package.json +25 -1
  53. package/template/README.md +24 -2
  54. package/template/_gitignore +1 -0
  55. package/template/package.json +3 -2
  56. package/template/playwright.config.ts +24 -1
  57. package/template/tests/live/albums.spec.ts +53 -0
  58. package/template/tests/live/carousel.spec.ts +52 -0
  59. package/template/tests/live/map.spec.ts +31 -0
  60. package/template/tests/live/playwright.config.ts +3 -0
  61. package/template/tests/live/review.spec.ts +54 -0
  62. package/template/vitest.config.ts +1 -1
  63. package/dist/index-B4aC3vjH.js.map +0 -1
  64. package/dist/index-CKabCJyV.cjs.map +0 -1
  65. package/dist/index-CX6Z4bED.js.map +0 -1
  66. package/dist/index-bKBBCBK6.cjs.map +0 -1
  67. package/dist/simulator-D8t-r7HH.js.map +0 -1
  68. package/dist/simulator-FFNttkqL.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/mcp/favicon.ts","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/code.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/scope.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/util.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/names.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/errors.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/boolSchema.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/rules.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/applicability.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/dataType.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/defaults.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/code.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/keyword.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/subschema.js","../../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js","../../../../node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/resolve.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/validation_error.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/ref_error.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/index.js","../../../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js","../../../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js","../../../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/uri.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/core.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/id.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/ref.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/ucs2length.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/pattern.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/required.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/equal.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/const.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/enum.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/contains.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/properties.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/not.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/if.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/format.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/metadata.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/draft7.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/types.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/ajv.js","../../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/formats.js","../../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/limit.js","../../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/index.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js","../../../../node_modules/.pnpm/@hono+node-server@1.19.11_hono@4.12.8/node_modules/@hono/node-server/dist/index.mjs","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/streamableHttp.js","../../../../node_modules/.pnpm/@modelcontextprotocol+ext-apps@1.2.2_@modelcontextprotocol+sdk@1.27.1_zod@4.3.6__react-_e9bf7657371391a829fe8b4e289b253c/node_modules/@modelcontextprotocol/ext-apps/dist/src/server/index.js","../../src/mcp/server.ts","../../src/mcp/production-server.ts"],"sourcesContent":["// Sunpeak favicon as base64-encoded PNG (128x128)\nexport const FAVICON_BASE64 =\n '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';\n\nexport const FAVICON_BUFFER = Buffer.from(FAVICON_BASE64, 'base64');\n","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","'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","'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","\"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","\"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","\"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","\"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","\"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","'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","'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","'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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst util_1 = require(\"../../compile/util\");\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 { gen, data, $data, schema, schemaCode, it } = cxt;\n const u = it.opts.unicodeRegExp ? \"u\" : \"\";\n if ($data) {\n const { regExp } = it.opts.code;\n const regExpCode = regExp.code === \"new RegExp\" ? (0, codegen_1._) `new RegExp` : (0, util_1.useFunc)(gen, regExp);\n const valid = gen.let(\"valid\");\n gen.try(() => gen.assign(valid, (0, codegen_1._) `${regExpCode}(${schemaCode}, ${u}).test(${data})`), () => gen.assign(valid, false));\n cxt.fail$data((0, codegen_1._) `!${valid}`);\n }\n else {\n const regExp = (0, code_1.usePattern)(cxt, schema);\n cxt.fail$data((0, codegen_1._) `!${regExp}.test(${data})`);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=pattern.js.map","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","/**\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 ?? 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 // Check if schema has $id and is already compiled/cached\n const ajvValidator = '$id' in schema && typeof schema.$id === 'string'\n ? (this._ajv.getSchema(schema.$id) ?? 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","/**\n * Experimental server task features for MCP SDK.\n * WARNING: These APIs are experimental and may change without notice.\n *\n * @experimental\n */\nimport { CreateMessageResultSchema, ElicitResultSchema } from '../../types.js';\n/**\n * Experimental task features for low-level MCP servers.\n *\n * Access via `server.experimental.tasks`:\n * ```typescript\n * const stream = server.experimental.tasks.requestStream(request, schema, options);\n * ```\n *\n * For high-level server usage with task-based tools, use `McpServer.experimental.tasks` instead.\n *\n * @experimental\n */\nexport class ExperimentalServerTasks {\n constructor(_server) {\n this._server = _server;\n }\n /**\n * Sends a request and returns an AsyncGenerator that yields response messages.\n * The generator is guaranteed to end with either a 'result' or 'error' message.\n *\n * This method provides streaming access to request processing, allowing you to\n * observe intermediate task status updates for task-augmented requests.\n *\n * @param request - The request to send\n * @param resultSchema - Zod schema for validating the result\n * @param options - Optional request options (timeout, signal, task creation params, etc.)\n * @returns AsyncGenerator that yields ResponseMessage objects\n *\n * @experimental\n */\n requestStream(request, resultSchema, options) {\n return this._server.requestStream(request, resultSchema, options);\n }\n /**\n * Sends a sampling request and returns an AsyncGenerator that yields response messages.\n * The generator is guaranteed to end with either a 'result' or 'error' message.\n *\n * For task-augmented requests, yields 'taskCreated' and 'taskStatus' messages\n * before the final result.\n *\n * @example\n * ```typescript\n * const stream = server.experimental.tasks.createMessageStream({\n * messages: [{ role: 'user', content: { type: 'text', text: 'Hello' } }],\n * maxTokens: 100\n * }, {\n * onprogress: (progress) => {\n * // Handle streaming tokens via progress notifications\n * console.log('Progress:', progress.message);\n * }\n * });\n *\n * for await (const message of stream) {\n * switch (message.type) {\n * case 'taskCreated':\n * console.log('Task created:', message.task.taskId);\n * break;\n * case 'taskStatus':\n * console.log('Task status:', message.task.status);\n * break;\n * case 'result':\n * console.log('Final result:', message.result);\n * break;\n * case 'error':\n * console.error('Error:', message.error);\n * break;\n * }\n * }\n * ```\n *\n * @param params - The sampling request parameters\n * @param options - Optional request options (timeout, signal, task creation params, onprogress, etc.)\n * @returns AsyncGenerator that yields ResponseMessage objects\n *\n * @experimental\n */\n createMessageStream(params, options) {\n // Access client capabilities via the server\n const clientCapabilities = this._server.getClientCapabilities();\n // Capability check - only required when tools/toolChoice are provided\n if ((params.tools || params.toolChoice) && !clientCapabilities?.sampling?.tools) {\n throw new Error('Client does not support sampling tools capability.');\n }\n // Message structure validation - always validate tool_use/tool_result pairs.\n // These may appear even without tools/toolChoice in the current request when\n // a previous sampling request returned tool_use and this is a follow-up with results.\n if (params.messages.length > 0) {\n const lastMessage = params.messages[params.messages.length - 1];\n const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content];\n const hasToolResults = lastContent.some(c => c.type === 'tool_result');\n const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : undefined;\n const previousContent = previousMessage\n ? Array.isArray(previousMessage.content)\n ? previousMessage.content\n : [previousMessage.content]\n : [];\n const hasPreviousToolUse = previousContent.some(c => c.type === 'tool_use');\n if (hasToolResults) {\n if (lastContent.some(c => c.type !== 'tool_result')) {\n throw new Error('The last message must contain only tool_result content if any is present');\n }\n if (!hasPreviousToolUse) {\n throw new Error('tool_result blocks are not matching any tool_use from the previous message');\n }\n }\n if (hasPreviousToolUse) {\n // Extract tool_use IDs from previous message and tool_result IDs from current message\n const toolUseIds = new Set(previousContent.filter(c => c.type === 'tool_use').map(c => c.id));\n const toolResultIds = new Set(lastContent.filter(c => c.type === 'tool_result').map(c => c.toolUseId));\n if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every(id => toolResultIds.has(id))) {\n throw new Error('ids of tool_result blocks and tool_use blocks from previous message do not match');\n }\n }\n }\n return this.requestStream({\n method: 'sampling/createMessage',\n params\n }, CreateMessageResultSchema, options);\n }\n /**\n * Sends an elicitation request and returns an AsyncGenerator that yields response messages.\n * The generator is guaranteed to end with either a 'result' or 'error' message.\n *\n * For task-augmented requests (especially URL-based elicitation), yields 'taskCreated'\n * and 'taskStatus' messages before the final result.\n *\n * @example\n * ```typescript\n * const stream = server.experimental.tasks.elicitInputStream({\n * mode: 'url',\n * message: 'Please authenticate',\n * elicitationId: 'auth-123',\n * url: 'https://example.com/auth'\n * }, {\n * task: { ttl: 300000 } // Task-augmented for long-running auth flow\n * });\n *\n * for await (const message of stream) {\n * switch (message.type) {\n * case 'taskCreated':\n * console.log('Task created:', message.task.taskId);\n * break;\n * case 'taskStatus':\n * console.log('Task status:', message.task.status);\n * break;\n * case 'result':\n * console.log('User action:', message.result.action);\n * break;\n * case 'error':\n * console.error('Error:', message.error);\n * break;\n * }\n * }\n * ```\n *\n * @param params - The elicitation request parameters\n * @param options - Optional request options (timeout, signal, task creation params, etc.)\n * @returns AsyncGenerator that yields ResponseMessage objects\n *\n * @experimental\n */\n elicitInputStream(params, options) {\n // Access client capabilities via the server\n const clientCapabilities = this._server.getClientCapabilities();\n const mode = params.mode ?? 'form';\n // Capability check based on mode\n switch (mode) {\n case 'url': {\n if (!clientCapabilities?.elicitation?.url) {\n throw new Error('Client does not support url elicitation.');\n }\n break;\n }\n case 'form': {\n if (!clientCapabilities?.elicitation?.form) {\n throw new Error('Client does not support form elicitation.');\n }\n break;\n }\n }\n // Normalize params to ensure mode is set for form mode (defaults to 'form' per spec)\n const normalizedParams = mode === 'form' && params.mode === undefined ? { ...params, mode: 'form' } : params;\n // Cast to ServerRequest needed because TypeScript can't narrow the union type\n // based on the discriminated 'method' field when constructing the object literal\n return this.requestStream({\n method: 'elicitation/create',\n params: normalizedParams\n }, ElicitResultSchema, options);\n }\n /**\n * Gets the current status of a task.\n *\n * @param taskId - The task identifier\n * @param options - Optional request options\n * @returns The task status\n *\n * @experimental\n */\n async getTask(taskId, options) {\n return this._server.getTask({ taskId }, options);\n }\n /**\n * Retrieves the result of a completed task.\n *\n * @param taskId - The task identifier\n * @param resultSchema - Zod schema for validating the result\n * @param options - Optional request options\n * @returns The task result\n *\n * @experimental\n */\n async getTaskResult(taskId, resultSchema, options) {\n return this._server.getTaskResult({ taskId }, resultSchema, options);\n }\n /**\n * Lists tasks with optional pagination.\n *\n * @param cursor - Optional pagination cursor\n * @param options - Optional request options\n * @returns List of tasks with optional next cursor\n *\n * @experimental\n */\n async listTasks(cursor, options) {\n return this._server.listTasks(cursor ? { cursor } : undefined, options);\n }\n /**\n * Cancels a running task.\n *\n * @param taskId - The task identifier\n * @param options - Optional request options\n *\n * @experimental\n */\n async cancelTask(taskId, options) {\n return this._server.cancelTask({ taskId }, options);\n }\n}\n//# sourceMappingURL=server.js.map","/**\n * Experimental task capability assertion helpers.\n * WARNING: These APIs are experimental and may change without notice.\n *\n * @experimental\n */\n/**\n * Asserts that task creation is supported for tools/call.\n * Used by Client.assertTaskCapability and Server.assertTaskHandlerCapability.\n *\n * @param requests - The task requests capability object\n * @param method - The method being checked\n * @param entityName - 'Server' or 'Client' for error messages\n * @throws Error if the capability is not supported\n *\n * @experimental\n */\nexport function assertToolsCallTaskCapability(requests, method, entityName) {\n if (!requests) {\n throw new Error(`${entityName} does not support task creation (required for ${method})`);\n }\n switch (method) {\n case 'tools/call':\n if (!requests.tools?.call) {\n throw new Error(`${entityName} does not support task creation for tools/call (required for ${method})`);\n }\n break;\n default:\n // Method doesn't support tasks, which is fine - no error\n break;\n }\n}\n/**\n * Asserts that task creation is supported for sampling/createMessage or elicitation/create.\n * Used by Server.assertTaskCapability and Client.assertTaskHandlerCapability.\n *\n * @param requests - The task requests capability object\n * @param method - The method being checked\n * @param entityName - 'Server' or 'Client' for error messages\n * @throws Error if the capability is not supported\n *\n * @experimental\n */\nexport function assertClientRequestTaskCapability(requests, method, entityName) {\n if (!requests) {\n throw new Error(`${entityName} does not support task creation (required for ${method})`);\n }\n switch (method) {\n case 'sampling/createMessage':\n if (!requests.sampling?.createMessage) {\n throw new Error(`${entityName} does not support task creation for sampling/createMessage (required for ${method})`);\n }\n break;\n case 'elicitation/create':\n if (!requests.elicitation?.create) {\n throw new Error(`${entityName} does not support task creation for elicitation/create (required for ${method})`);\n }\n break;\n default:\n // Method doesn't support tasks, which is fine - no error\n break;\n }\n}\n//# sourceMappingURL=helpers.js.map","import { mergeCapabilities, Protocol } from '../shared/protocol.js';\nimport { CreateMessageResultSchema, CreateMessageResultWithToolsSchema, ElicitResultSchema, EmptyResultSchema, ErrorCode, InitializedNotificationSchema, InitializeRequestSchema, LATEST_PROTOCOL_VERSION, ListRootsResultSchema, LoggingLevelSchema, McpError, SetLevelRequestSchema, SUPPORTED_PROTOCOL_VERSIONS, CallToolRequestSchema, CallToolResultSchema, CreateTaskResultSchema } from '../types.js';\nimport { AjvJsonSchemaValidator } from '../validation/ajv-provider.js';\nimport { getObjectShape, isZ4Schema, safeParse } from './zod-compat.js';\nimport { ExperimentalServerTasks } from '../experimental/tasks/server.js';\nimport { assertToolsCallTaskCapability, assertClientRequestTaskCapability } from '../experimental/tasks/helpers.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 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 = options?.capabilities ?? {};\n this._instructions = options?.instructions;\n this._jsonSchemaValidator = options?.jsonSchemaValidator ?? new AjvJsonSchemaValidator();\n this.setRequestHandler(InitializeRequestSchema, request => this._oninitialize(request));\n this.setNotificationHandler(InitializedNotificationSchema, () => this.oninitialized?.());\n if (this._capabilities.logging) {\n this.setRequestHandler(SetLevelRequestSchema, async (request, extra) => {\n const transportSessionId = extra.sessionId || extra.requestInfo?.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 * Access experimental features.\n *\n * WARNING: These APIs are experimental and may change without notice.\n *\n * @experimental\n */\n get experimental() {\n if (!this._experimental) {\n this._experimental = {\n tasks: new ExperimentalServerTasks(this)\n };\n }\n return this._experimental;\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 server-side validation for tools/call.\n */\n setRequestHandler(requestSchema, handler) {\n const shape = getObjectShape(requestSchema);\n const methodSchema = shape?.method;\n if (!methodSchema) {\n throw new Error('Schema is missing a method literal');\n }\n // Extract literal value using type-safe property access\n let methodValue;\n if (isZ4Schema(methodSchema)) {\n const v4Schema = methodSchema;\n const v4Def = v4Schema._zod?.def;\n methodValue = v4Def?.value ?? v4Schema.value;\n }\n else {\n const v3Schema = methodSchema;\n const legacyDef = v3Schema._def;\n methodValue = legacyDef?.value ?? v3Schema.value;\n }\n if (typeof methodValue !== 'string') {\n throw new Error('Schema method literal must be a string');\n }\n const method = methodValue;\n if (method === 'tools/call') {\n const wrappedHandler = async (request, extra) => {\n const validatedRequest = safeParse(CallToolRequestSchema, request);\n if (!validatedRequest.success) {\n const errorMessage = validatedRequest.error instanceof Error ? validatedRequest.error.message : String(validatedRequest.error);\n throw new McpError(ErrorCode.InvalidParams, `Invalid tools/call request: ${errorMessage}`);\n }\n const { params } = validatedRequest.data;\n const result = await Promise.resolve(handler(request, extra));\n // When task creation is requested, validate and return CreateTaskResult\n if (params.task) {\n const taskValidationResult = safeParse(CreateTaskResultSchema, result);\n if (!taskValidationResult.success) {\n const errorMessage = taskValidationResult.error instanceof Error\n ? taskValidationResult.error.message\n : String(taskValidationResult.error);\n throw new McpError(ErrorCode.InvalidParams, `Invalid task creation result: ${errorMessage}`);\n }\n return taskValidationResult.data;\n }\n // For non-task requests, validate against CallToolResultSchema\n const validationResult = safeParse(CallToolResultSchema, result);\n if (!validationResult.success) {\n const errorMessage = validationResult.error instanceof Error ? validationResult.error.message : String(validationResult.error);\n throw new McpError(ErrorCode.InvalidParams, `Invalid tools/call result: ${errorMessage}`);\n }\n return validationResult.data;\n };\n // Install the wrapped handler\n return super.setRequestHandler(requestSchema, wrappedHandler);\n }\n // Other handlers use default behavior\n return super.setRequestHandler(requestSchema, handler);\n }\n assertCapabilityForMethod(method) {\n switch (method) {\n case 'sampling/createMessage':\n if (!this._clientCapabilities?.sampling) {\n throw new Error(`Client does not support sampling (required for ${method})`);\n }\n break;\n case 'elicitation/create':\n if (!this._clientCapabilities?.elicitation) {\n throw new Error(`Client does not support elicitation (required for ${method})`);\n }\n break;\n case 'roots/list':\n if (!this._clientCapabilities?.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/elicitation/complete':\n if (!this._clientCapabilities?.elicitation?.url) {\n throw new Error(`Client does not support URL elicitation (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 // Task handlers are registered in Protocol constructor before _capabilities is initialized\n // Skip capability check for task methods during initialization\n if (!this._capabilities) {\n return;\n }\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 'tasks/get':\n case 'tasks/list':\n case 'tasks/result':\n case 'tasks/cancel':\n if (!this._capabilities.tasks) {\n throw new Error(`Server does not support tasks capability (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 assertTaskCapability(method) {\n assertClientRequestTaskCapability(this._clientCapabilities?.tasks?.requests, method, 'Client');\n }\n assertTaskHandlerCapability(method) {\n // Task handlers are registered in Protocol constructor before _capabilities is initialized\n // Skip capability check for task methods during initialization\n if (!this._capabilities) {\n return;\n }\n assertToolsCallTaskCapability(this._capabilities.tasks?.requests, method, 'Server');\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 // Implementation\n async createMessage(params, options) {\n // Capability check - only required when tools/toolChoice are provided\n if (params.tools || params.toolChoice) {\n if (!this._clientCapabilities?.sampling?.tools) {\n throw new Error('Client does not support sampling tools capability.');\n }\n }\n // Message structure validation - always validate tool_use/tool_result pairs.\n // These may appear even without tools/toolChoice in the current request when\n // a previous sampling request returned tool_use and this is a follow-up with results.\n if (params.messages.length > 0) {\n const lastMessage = params.messages[params.messages.length - 1];\n const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content];\n const hasToolResults = lastContent.some(c => c.type === 'tool_result');\n const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : undefined;\n const previousContent = previousMessage\n ? Array.isArray(previousMessage.content)\n ? previousMessage.content\n : [previousMessage.content]\n : [];\n const hasPreviousToolUse = previousContent.some(c => c.type === 'tool_use');\n if (hasToolResults) {\n if (lastContent.some(c => c.type !== 'tool_result')) {\n throw new Error('The last message must contain only tool_result content if any is present');\n }\n if (!hasPreviousToolUse) {\n throw new Error('tool_result blocks are not matching any tool_use from the previous message');\n }\n }\n if (hasPreviousToolUse) {\n const toolUseIds = new Set(previousContent.filter(c => c.type === 'tool_use').map(c => c.id));\n const toolResultIds = new Set(lastContent.filter(c => c.type === 'tool_result').map(c => c.toolUseId));\n if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every(id => toolResultIds.has(id))) {\n throw new Error('ids of tool_result blocks and tool_use blocks from previous message do not match');\n }\n }\n }\n // Use different schemas based on whether tools are provided\n if (params.tools) {\n return this.request({ method: 'sampling/createMessage', params }, CreateMessageResultWithToolsSchema, options);\n }\n return this.request({ method: 'sampling/createMessage', params }, CreateMessageResultSchema, options);\n }\n /**\n * Creates an elicitation request for the given parameters.\n * For backwards compatibility, `mode` may be omitted for form requests and will default to `'form'`.\n * @param params The parameters for the elicitation request.\n * @param options Optional request options.\n * @returns The result of the elicitation request.\n */\n async elicitInput(params, options) {\n const mode = (params.mode ?? 'form');\n switch (mode) {\n case 'url': {\n if (!this._clientCapabilities?.elicitation?.url) {\n throw new Error('Client does not support url elicitation.');\n }\n const urlParams = params;\n return this.request({ method: 'elicitation/create', params: urlParams }, ElicitResultSchema, options);\n }\n case 'form': {\n if (!this._clientCapabilities?.elicitation?.form) {\n throw new Error('Client does not support form elicitation.');\n }\n const formParams = params.mode === 'form' ? params : { ...params, mode: 'form' };\n const result = await this.request({ method: 'elicitation/create', params: formParams }, ElicitResultSchema, options);\n if (result.action === 'accept' && result.content && formParams.requestedSchema) {\n try {\n const validator = this._jsonSchemaValidator.getValidator(formParams.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 }\n }\n /**\n * Creates a reusable callback that, when invoked, will send a `notifications/elicitation/complete`\n * notification for the specified elicitation ID.\n *\n * @param elicitationId The ID of the elicitation to mark as complete.\n * @param options Optional notification options. Useful when the completion notification should be related to a prior request.\n * @returns A function that emits the completion notification when awaited.\n */\n createElicitationCompletionNotifier(elicitationId, options) {\n if (!this._clientCapabilities?.elicitation?.url) {\n throw new Error('Client does not support URL elicitation (required for notifications/elicitation/complete)');\n }\n return () => this.notification({\n method: 'notifications/elicitation/complete',\n params: {\n elicitationId\n }\n }, options);\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","export const COMPLETABLE_SYMBOL = Symbol.for('mcp.completable');\n/**\n * Wraps a Zod type to provide autocompletion capabilities. Useful for, e.g., prompt arguments in MCP.\n * Works with both Zod v3 and v4 schemas.\n */\nexport function completable(schema, complete) {\n Object.defineProperty(schema, COMPLETABLE_SYMBOL, {\n value: { complete },\n enumerable: false,\n writable: false,\n configurable: false\n });\n return schema;\n}\n/**\n * Checks if a schema is completable (has completion metadata).\n */\nexport function isCompletable(schema) {\n return !!schema && typeof schema === 'object' && COMPLETABLE_SYMBOL in schema;\n}\n/**\n * Gets the completer callback from a completable schema, if it exists.\n */\nexport function getCompleter(schema) {\n const meta = schema[COMPLETABLE_SYMBOL];\n return meta?.complete;\n}\n/**\n * Unwraps a completable schema to get the underlying schema.\n * For backward compatibility with code that called `.unwrap()`.\n */\nexport function unwrapCompletable(schema) {\n return schema;\n}\n// Legacy exports for backward compatibility\n// These types are deprecated but kept for existing code\nexport var McpZodTypeKind;\n(function (McpZodTypeKind) {\n McpZodTypeKind[\"Completable\"] = \"McpCompletable\";\n})(McpZodTypeKind || (McpZodTypeKind = {}));\n//# sourceMappingURL=completable.js.map","/**\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","/**\n * Experimental McpServer task features for MCP SDK.\n * WARNING: These APIs are experimental and may change without notice.\n *\n * @experimental\n */\n/**\n * Experimental task features for McpServer.\n *\n * Access via `server.experimental.tasks`:\n * ```typescript\n * server.experimental.tasks.registerToolTask('long-running', config, handler);\n * ```\n *\n * @experimental\n */\nexport class ExperimentalMcpServerTasks {\n constructor(_mcpServer) {\n this._mcpServer = _mcpServer;\n }\n registerToolTask(name, config, handler) {\n // Validate that taskSupport is not 'forbidden' for task-based tools\n const execution = { taskSupport: 'required', ...config.execution };\n if (execution.taskSupport === 'forbidden') {\n throw new Error(`Cannot register task-based tool '${name}' with taskSupport 'forbidden'. Use registerTool() instead.`);\n }\n // Access McpServer's internal _createRegisteredTool method\n const mcpServerInternal = this._mcpServer;\n return mcpServerInternal._createRegisteredTool(name, config.title, config.description, config.inputSchema, config.outputSchema, config.annotations, execution, config._meta, handler);\n }\n}\n//# sourceMappingURL=mcp-server.js.map","import { Server } from './index.js';\nimport { normalizeObjectSchema, safeParseAsync, getObjectShape, objectFromShape, getParseErrorMessage, getSchemaDescription, isSchemaOptional, getLiteralValue } from './zod-compat.js';\nimport { toJsonSchemaCompat } from './zod-json-schema-compat.js';\nimport { McpError, ErrorCode, ListResourceTemplatesRequestSchema, ReadResourceRequestSchema, ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, CompleteRequestSchema, assertCompleteRequestPrompt, assertCompleteRequestResourceTemplate } from '../types.js';\nimport { isCompletable, getCompleter } from './completable.js';\nimport { UriTemplate } from '../shared/uriTemplate.js';\nimport { validateAndWarnToolName } from '../shared/toolNameValidation.js';\nimport { ExperimentalMcpServerTasks } from '../experimental/tasks/mcp-server.js';\nimport { ZodOptional } from 'zod';\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 * Access experimental features.\n *\n * WARNING: These APIs are experimental and may change without notice.\n *\n * @experimental\n */\n get experimental() {\n if (!this._experimental) {\n this._experimental = {\n tasks: new ExperimentalMcpServerTasks(this)\n };\n }\n return this._experimental;\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(getMethodValue(ListToolsRequestSchema));\n this.server.assertCanSetRequestHandler(getMethodValue(CallToolRequestSchema));\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: (() => {\n const obj = normalizeObjectSchema(tool.inputSchema);\n return obj\n ? toJsonSchemaCompat(obj, {\n strictUnions: true,\n pipeStrategy: 'input'\n })\n : EMPTY_OBJECT_JSON_SCHEMA;\n })(),\n annotations: tool.annotations,\n execution: tool.execution,\n _meta: tool._meta\n };\n if (tool.outputSchema) {\n const obj = normalizeObjectSchema(tool.outputSchema);\n if (obj) {\n toolDefinition.outputSchema = toJsonSchemaCompat(obj, {\n strictUnions: true,\n pipeStrategy: 'output'\n });\n }\n }\n return toolDefinition;\n })\n }));\n this.server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {\n try {\n const tool = this._registeredTools[request.params.name];\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 const isTaskRequest = !!request.params.task;\n const taskSupport = tool.execution?.taskSupport;\n const isTaskHandler = 'createTask' in tool.handler;\n // Validate task hint configuration\n if ((taskSupport === 'required' || taskSupport === 'optional') && !isTaskHandler) {\n throw new McpError(ErrorCode.InternalError, `Tool ${request.params.name} has taskSupport '${taskSupport}' but was not registered with registerToolTask`);\n }\n // Handle taskSupport 'required' without task augmentation\n if (taskSupport === 'required' && !isTaskRequest) {\n throw new McpError(ErrorCode.MethodNotFound, `Tool ${request.params.name} requires task augmentation (taskSupport: 'required')`);\n }\n // Handle taskSupport 'optional' without task augmentation - automatic polling\n if (taskSupport === 'optional' && !isTaskRequest && isTaskHandler) {\n return await this.handleAutomaticTaskPolling(tool, request, extra);\n }\n // Normal execution path\n const args = await this.validateToolInput(tool, request.params.arguments, request.params.name);\n const result = await this.executeToolHandler(tool, args, extra);\n // Return CreateTaskResult immediately for task requests\n if (isTaskRequest) {\n return result;\n }\n // Validate output schema for non-task requests\n await this.validateToolOutput(tool, result, request.params.name);\n return result;\n }\n catch (error) {\n if (error instanceof McpError) {\n if (error.code === ErrorCode.UrlElicitationRequired) {\n throw error; // Return the error to the caller without wrapping in CallToolResult\n }\n }\n return this.createToolError(error instanceof Error ? error.message : String(error));\n }\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 /**\n * Validates tool input arguments against the tool's input schema.\n */\n async validateToolInput(tool, args, toolName) {\n if (!tool.inputSchema) {\n return undefined;\n }\n // Try to normalize to object schema first (for raw shapes and object schemas)\n // If that fails, use the schema directly (for union/intersection/etc)\n const inputObj = normalizeObjectSchema(tool.inputSchema);\n const schemaToParse = inputObj ?? tool.inputSchema;\n const parseResult = await safeParseAsync(schemaToParse, args);\n if (!parseResult.success) {\n const error = 'error' in parseResult ? parseResult.error : 'Unknown error';\n const errorMessage = getParseErrorMessage(error);\n throw new McpError(ErrorCode.InvalidParams, `Input validation error: Invalid arguments for tool ${toolName}: ${errorMessage}`);\n }\n return parseResult.data;\n }\n /**\n * Validates tool output against the tool's output schema.\n */\n async validateToolOutput(tool, result, toolName) {\n if (!tool.outputSchema) {\n return;\n }\n // Only validate CallToolResult, not CreateTaskResult\n if (!('content' in result)) {\n return;\n }\n if (result.isError) {\n return;\n }\n if (!result.structuredContent) {\n throw new McpError(ErrorCode.InvalidParams, `Output validation error: Tool ${toolName} has an output schema but no structured content was provided`);\n }\n // if the tool has an output schema, validate structured content\n const outputObj = normalizeObjectSchema(tool.outputSchema);\n const parseResult = await safeParseAsync(outputObj, result.structuredContent);\n if (!parseResult.success) {\n const error = 'error' in parseResult ? parseResult.error : 'Unknown error';\n const errorMessage = getParseErrorMessage(error);\n throw new McpError(ErrorCode.InvalidParams, `Output validation error: Invalid structured content for tool ${toolName}: ${errorMessage}`);\n }\n }\n /**\n * Executes a tool handler (either regular or task-based).\n */\n async executeToolHandler(tool, args, extra) {\n const handler = tool.handler;\n const isTaskHandler = 'createTask' in handler;\n if (isTaskHandler) {\n if (!extra.taskStore) {\n throw new Error('No task store provided.');\n }\n const taskExtra = { ...extra, taskStore: extra.taskStore };\n if (tool.inputSchema) {\n const typedHandler = handler;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await Promise.resolve(typedHandler.createTask(args, taskExtra));\n }\n else {\n const typedHandler = handler;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await Promise.resolve(typedHandler.createTask(taskExtra));\n }\n }\n if (tool.inputSchema) {\n const typedHandler = handler;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await Promise.resolve(typedHandler(args, extra));\n }\n else {\n const typedHandler = handler;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await Promise.resolve(typedHandler(extra));\n }\n }\n /**\n * Handles automatic task polling for tools with taskSupport 'optional'.\n */\n async handleAutomaticTaskPolling(tool, request, extra) {\n if (!extra.taskStore) {\n throw new Error('No task store provided for task-capable tool.');\n }\n // Validate input and create task\n const args = await this.validateToolInput(tool, request.params.arguments, request.params.name);\n const handler = tool.handler;\n const taskExtra = { ...extra, taskStore: extra.taskStore };\n const createTaskResult = args // undefined only if tool.inputSchema is undefined\n ? await Promise.resolve(handler.createTask(args, taskExtra))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await Promise.resolve(handler.createTask(taskExtra));\n // Poll until completion\n const taskId = createTaskResult.task.taskId;\n let task = createTaskResult.task;\n const pollInterval = task.pollInterval ?? 5000;\n while (task.status !== 'completed' && task.status !== 'failed' && task.status !== 'cancelled') {\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n const updatedTask = await extra.taskStore.getTask(taskId);\n if (!updatedTask) {\n throw new McpError(ErrorCode.InternalError, `Task ${taskId} not found during polling`);\n }\n task = updatedTask;\n }\n // Return the final result\n return (await extra.taskStore.getTaskResult(taskId));\n }\n setCompletionRequestHandler() {\n if (this._completionHandlerInitialized) {\n return;\n }\n this.server.assertCanSetRequestHandler(getMethodValue(CompleteRequestSchema));\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 promptShape = getObjectShape(prompt.argsSchema);\n const field = promptShape?.[request.params.argument.name];\n if (!isCompletable(field)) {\n return EMPTY_COMPLETION_RESULT;\n }\n const completer = getCompleter(field);\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 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(getMethodValue(ListResourcesRequestSchema));\n this.server.assertCanSetRequestHandler(getMethodValue(ListResourceTemplatesRequestSchema));\n this.server.assertCanSetRequestHandler(getMethodValue(ReadResourceRequestSchema));\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._resourceHandlersInitialized = true;\n }\n setPromptRequestHandlers() {\n if (this._promptHandlersInitialized) {\n return;\n }\n this.server.assertCanSetRequestHandler(getMethodValue(ListPromptsRequestSchema));\n this.server.assertCanSetRequestHandler(getMethodValue(GetPromptRequestSchema));\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 argsObj = normalizeObjectSchema(prompt.argsSchema);\n const parseResult = await safeParseAsync(argsObj, request.params.arguments);\n if (!parseResult.success) {\n const error = 'error' in parseResult ? parseResult.error : 'Unknown error';\n const errorMessage = getParseErrorMessage(error);\n throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for prompt ${request.params.name}: ${errorMessage}`);\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await Promise.resolve(cb(extra));\n }\n });\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 // If the resource template has any completion callbacks, enable completions capability\n const variableNames = template.uriTemplate.variableNames;\n const hasCompleter = Array.isArray(variableNames) && variableNames.some(v => !!template.completeCallback(v));\n if (hasCompleter) {\n this.setCompletionRequestHandler();\n }\n return registeredResourceTemplate;\n }\n _createRegisteredPrompt(name, title, description, argsSchema, callback) {\n const registeredPrompt = {\n title,\n description,\n argsSchema: argsSchema === undefined ? undefined : objectFromShape(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 = objectFromShape(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 // If any argument uses a Completable schema, enable completions capability\n if (argsSchema) {\n const hasCompletable = Object.values(argsSchema).some(field => {\n const inner = field instanceof ZodOptional ? field._def?.innerType : field;\n return isCompletable(inner);\n });\n if (hasCompletable) {\n this.setCompletionRequestHandler();\n }\n }\n return registeredPrompt;\n }\n _createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, execution, _meta, handler) {\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 execution,\n _meta,\n handler: handler,\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 = objectFromShape(updates.paramsSchema);\n if (typeof updates.outputSchema !== 'undefined')\n registeredTool.outputSchema = objectFromShape(updates.outputSchema);\n if (typeof updates.callback !== 'undefined')\n registeredTool.handler = 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 (isZodRawShapeCompat(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 && !isZodRawShapeCompat(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 ZodRawShapeCompat, 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, { taskSupport: 'forbidden' }, 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, { taskSupport: 'forbidden' }, _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 return this._callbacks.complete?.[variable];\n }\n}\nconst EMPTY_OBJECT_JSON_SCHEMA = {\n type: 'object',\n properties: {}\n};\n/**\n * Checks if a value looks like a Zod schema by checking for parse/safeParse methods.\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 * Checks if an object is a Zod schema instance (v3 or v4).\n *\n * Zod schemas have internal markers:\n * - v3: `_def` property\n * - v4: `_zod` property\n *\n * This includes transformed schemas like z.preprocess(), z.transform(), z.pipe().\n */\nfunction isZodSchemaInstance(obj) {\n return '_def' in obj || '_zod' in obj || isZodTypeLike(obj);\n}\n/**\n * Checks if an object is a \"raw shape\" - a plain object where values are Zod schemas.\n *\n * Raw shapes are used as shorthand: `{ name: z.string() }` instead of `z.object({ name: z.string() })`.\n *\n * IMPORTANT: This must NOT match actual Zod schema instances (like z.preprocess, z.pipe),\n * which have internal properties that could be mistaken for schema values.\n */\nfunction isZodRawShapeCompat(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n // If it's already a Zod schema instance, it's NOT a raw shape\n if (isZodSchemaInstance(obj)) {\n return false;\n }\n // Empty objects are valid raw shapes (tools with no parameters)\n if (Object.keys(obj).length === 0) {\n return true;\n }\n // A raw shape has at least one property that is a Zod schema\n return Object.values(obj).some(isZodTypeLike);\n}\n/**\n * Converts a provided Zod schema to a Zod object if it is a ZodRawShapeCompat,\n * otherwise returns the schema as is.\n */\nfunction getZodSchemaObject(schema) {\n if (!schema) {\n return undefined;\n }\n if (isZodRawShapeCompat(schema)) {\n return objectFromShape(schema);\n }\n return schema;\n}\nfunction promptArgumentsFromSchema(schema) {\n const shape = getObjectShape(schema);\n if (!shape)\n return [];\n return Object.entries(shape).map(([name, field]) => {\n // Get description - works for both v3 and v4\n const description = getSchemaDescription(field);\n // Check if optional - works for both v3 and v4\n const isOptional = isSchemaOptional(field);\n return {\n name,\n description,\n required: !isOptional\n };\n });\n}\nfunction getMethodValue(schema) {\n const shape = getObjectShape(schema);\n const methodSchema = shape?.method;\n if (!methodSchema) {\n throw new Error('Schema is missing a method literal');\n }\n // Extract literal value - works for both v3 and v4\n const value = getLiteralValue(methodSchema);\n if (typeof value === 'string') {\n return value;\n }\n throw new Error('Schema method literal must be a string');\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","// src/server.ts\nimport { createServer as createServerHTTP } from \"http\";\n\n// src/listener.ts\nimport { Http2ServerRequest as Http2ServerRequest2 } from \"http2\";\n\n// src/request.ts\nimport { Http2ServerRequest } from \"http2\";\nimport { Readable } from \"stream\";\nvar RequestError = class extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"RequestError\";\n }\n};\nvar toRequestError = (e) => {\n if (e instanceof RequestError) {\n return e;\n }\n return new RequestError(e.message, { cause: e });\n};\nvar GlobalRequest = global.Request;\nvar Request = class extends GlobalRequest {\n constructor(input, options) {\n if (typeof input === \"object\" && getRequestCache in input) {\n input = input[getRequestCache]();\n }\n if (typeof options?.body?.getReader !== \"undefined\") {\n ;\n options.duplex ??= \"half\";\n }\n super(input, options);\n }\n};\nvar newHeadersFromIncoming = (incoming) => {\n const headerRecord = [];\n const rawHeaders = incoming.rawHeaders;\n for (let i = 0; i < rawHeaders.length; i += 2) {\n const { [i]: key, [i + 1]: value } = rawHeaders;\n if (key.charCodeAt(0) !== /*:*/\n 58) {\n headerRecord.push([key, value]);\n }\n }\n return new Headers(headerRecord);\n};\nvar wrapBodyStream = Symbol(\"wrapBodyStream\");\nvar newRequestFromIncoming = (method, url, headers, incoming, abortController) => {\n const init = {\n method,\n headers,\n signal: abortController.signal\n };\n if (method === \"TRACE\") {\n init.method = \"GET\";\n const req = new Request(url, init);\n Object.defineProperty(req, \"method\", {\n get() {\n return \"TRACE\";\n }\n });\n return req;\n }\n if (!(method === \"GET\" || method === \"HEAD\")) {\n if (\"rawBody\" in incoming && incoming.rawBody instanceof Buffer) {\n init.body = new ReadableStream({\n start(controller) {\n controller.enqueue(incoming.rawBody);\n controller.close();\n }\n });\n } else if (incoming[wrapBodyStream]) {\n let reader;\n init.body = new ReadableStream({\n async pull(controller) {\n try {\n reader ||= Readable.toWeb(incoming).getReader();\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n }\n });\n } else {\n init.body = Readable.toWeb(incoming);\n }\n }\n return new Request(url, init);\n};\nvar getRequestCache = Symbol(\"getRequestCache\");\nvar requestCache = Symbol(\"requestCache\");\nvar incomingKey = Symbol(\"incomingKey\");\nvar urlKey = Symbol(\"urlKey\");\nvar headersKey = Symbol(\"headersKey\");\nvar abortControllerKey = Symbol(\"abortControllerKey\");\nvar getAbortController = Symbol(\"getAbortController\");\nvar requestPrototype = {\n get method() {\n return this[incomingKey].method || \"GET\";\n },\n get url() {\n return this[urlKey];\n },\n get headers() {\n return this[headersKey] ||= newHeadersFromIncoming(this[incomingKey]);\n },\n [getAbortController]() {\n this[getRequestCache]();\n return this[abortControllerKey];\n },\n [getRequestCache]() {\n this[abortControllerKey] ||= new AbortController();\n return this[requestCache] ||= newRequestFromIncoming(\n this.method,\n this[urlKey],\n this.headers,\n this[incomingKey],\n this[abortControllerKey]\n );\n }\n};\n[\n \"body\",\n \"bodyUsed\",\n \"cache\",\n \"credentials\",\n \"destination\",\n \"integrity\",\n \"mode\",\n \"redirect\",\n \"referrer\",\n \"referrerPolicy\",\n \"signal\",\n \"keepalive\"\n].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n get() {\n return this[getRequestCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n value: function() {\n return this[getRequestCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(requestPrototype, Request.prototype);\nvar newRequest = (incoming, defaultHostname) => {\n const req = Object.create(requestPrototype);\n req[incomingKey] = incoming;\n const incomingUrl = incoming.url || \"\";\n if (incomingUrl[0] !== \"/\" && // short-circuit for performance. most requests are relative URL.\n (incomingUrl.startsWith(\"http://\") || incomingUrl.startsWith(\"https://\"))) {\n if (incoming instanceof Http2ServerRequest) {\n throw new RequestError(\"Absolute URL for :path is not allowed in HTTP/2\");\n }\n try {\n const url2 = new URL(incomingUrl);\n req[urlKey] = url2.href;\n } catch (e) {\n throw new RequestError(\"Invalid absolute URL\", { cause: e });\n }\n return req;\n }\n const host = (incoming instanceof Http2ServerRequest ? incoming.authority : incoming.headers.host) || defaultHostname;\n if (!host) {\n throw new RequestError(\"Missing host header\");\n }\n let scheme;\n if (incoming instanceof Http2ServerRequest) {\n scheme = incoming.scheme;\n if (!(scheme === \"http\" || scheme === \"https\")) {\n throw new RequestError(\"Unsupported scheme\");\n }\n } else {\n scheme = incoming.socket && incoming.socket.encrypted ? \"https\" : \"http\";\n }\n const url = new URL(`${scheme}://${host}${incomingUrl}`);\n if (url.hostname.length !== host.length && url.hostname !== host.replace(/:\\d+$/, \"\")) {\n throw new RequestError(\"Invalid host header\");\n }\n req[urlKey] = url.href;\n return req;\n};\n\n// src/response.ts\nvar responseCache = Symbol(\"responseCache\");\nvar getResponseCache = Symbol(\"getResponseCache\");\nvar cacheKey = Symbol(\"cache\");\nvar GlobalResponse = global.Response;\nvar Response2 = class _Response {\n #body;\n #init;\n [getResponseCache]() {\n delete this[cacheKey];\n return this[responseCache] ||= new GlobalResponse(this.#body, this.#init);\n }\n constructor(body, init) {\n let headers;\n this.#body = body;\n if (init instanceof _Response) {\n const cachedGlobalResponse = init[responseCache];\n if (cachedGlobalResponse) {\n this.#init = cachedGlobalResponse;\n this[getResponseCache]();\n return;\n } else {\n this.#init = init.#init;\n headers = new Headers(init.#init.headers);\n }\n } else {\n this.#init = init;\n }\n if (typeof body === \"string\" || typeof body?.getReader !== \"undefined\" || body instanceof Blob || body instanceof Uint8Array) {\n ;\n this[cacheKey] = [init?.status || 200, body, headers || init?.headers];\n }\n }\n get headers() {\n const cache = this[cacheKey];\n if (cache) {\n if (!(cache[2] instanceof Headers)) {\n cache[2] = new Headers(\n cache[2] || { \"content-type\": \"text/plain; charset=UTF-8\" }\n );\n }\n return cache[2];\n }\n return this[getResponseCache]().headers;\n }\n get status() {\n return this[cacheKey]?.[0] ?? this[getResponseCache]().status;\n }\n get ok() {\n const status = this.status;\n return status >= 200 && status < 300;\n }\n};\n[\"body\", \"bodyUsed\", \"redirected\", \"statusText\", \"trailers\", \"type\", \"url\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n get() {\n return this[getResponseCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n value: function() {\n return this[getResponseCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(Response2, GlobalResponse);\nObject.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);\n\n// src/utils.ts\nasync function readWithoutBlocking(readPromise) {\n return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]);\n}\nfunction writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) {\n const cancel = (error) => {\n reader.cancel(error).catch(() => {\n });\n };\n writable.on(\"close\", cancel);\n writable.on(\"error\", cancel);\n (currentReadPromise ?? reader.read()).then(flow, handleStreamError);\n return reader.closed.finally(() => {\n writable.off(\"close\", cancel);\n writable.off(\"error\", cancel);\n });\n function handleStreamError(error) {\n if (error) {\n writable.destroy(error);\n }\n }\n function onDrain() {\n reader.read().then(flow, handleStreamError);\n }\n function flow({ done, value }) {\n try {\n if (done) {\n writable.end();\n } else if (!writable.write(value)) {\n writable.once(\"drain\", onDrain);\n } else {\n return reader.read().then(flow, handleStreamError);\n }\n } catch (e) {\n handleStreamError(e);\n }\n }\n}\nfunction writeFromReadableStream(stream, writable) {\n if (stream.locked) {\n throw new TypeError(\"ReadableStream is locked.\");\n } else if (writable.destroyed) {\n return;\n }\n return writeFromReadableStreamDefaultReader(stream.getReader(), writable);\n}\nvar buildOutgoingHttpHeaders = (headers) => {\n const res = {};\n if (!(headers instanceof Headers)) {\n headers = new Headers(headers ?? void 0);\n }\n const cookies = [];\n for (const [k, v] of headers) {\n if (k === \"set-cookie\") {\n cookies.push(v);\n } else {\n res[k] = v;\n }\n }\n if (cookies.length > 0) {\n res[\"set-cookie\"] = cookies;\n }\n res[\"content-type\"] ??= \"text/plain; charset=UTF-8\";\n return res;\n};\n\n// src/utils/response/constants.ts\nvar X_ALREADY_SENT = \"x-hono-already-sent\";\n\n// src/globals.ts\nimport crypto from \"crypto\";\nif (typeof global.crypto === \"undefined\") {\n global.crypto = crypto;\n}\n\n// src/listener.ts\nvar outgoingEnded = Symbol(\"outgoingEnded\");\nvar handleRequestError = () => new Response(null, {\n status: 400\n});\nvar handleFetchError = (e) => new Response(null, {\n status: e instanceof Error && (e.name === \"TimeoutError\" || e.constructor.name === \"TimeoutError\") ? 504 : 500\n});\nvar handleResponseError = (e, outgoing) => {\n const err = e instanceof Error ? e : new Error(\"unknown error\", { cause: e });\n if (err.code === \"ERR_STREAM_PREMATURE_CLOSE\") {\n console.info(\"The user aborted a request.\");\n } else {\n console.error(e);\n if (!outgoing.headersSent) {\n outgoing.writeHead(500, { \"Content-Type\": \"text/plain\" });\n }\n outgoing.end(`Error: ${err.message}`);\n outgoing.destroy(err);\n }\n};\nvar flushHeaders = (outgoing) => {\n if (\"flushHeaders\" in outgoing && outgoing.writable) {\n outgoing.flushHeaders();\n }\n};\nvar responseViaCache = async (res, outgoing) => {\n let [status, body, header] = res[cacheKey];\n let hasContentLength = false;\n if (!header) {\n header = { \"content-type\": \"text/plain; charset=UTF-8\" };\n } else if (header instanceof Headers) {\n hasContentLength = header.has(\"content-length\");\n header = buildOutgoingHttpHeaders(header);\n } else if (Array.isArray(header)) {\n const headerObj = new Headers(header);\n hasContentLength = headerObj.has(\"content-length\");\n header = buildOutgoingHttpHeaders(headerObj);\n } else {\n for (const key in header) {\n if (key.length === 14 && key.toLowerCase() === \"content-length\") {\n hasContentLength = true;\n break;\n }\n }\n }\n if (!hasContentLength) {\n if (typeof body === \"string\") {\n header[\"Content-Length\"] = Buffer.byteLength(body);\n } else if (body instanceof Uint8Array) {\n header[\"Content-Length\"] = body.byteLength;\n } else if (body instanceof Blob) {\n header[\"Content-Length\"] = body.size;\n }\n }\n outgoing.writeHead(status, header);\n if (typeof body === \"string\" || body instanceof Uint8Array) {\n outgoing.end(body);\n } else if (body instanceof Blob) {\n outgoing.end(new Uint8Array(await body.arrayBuffer()));\n } else {\n flushHeaders(outgoing);\n await writeFromReadableStream(body, outgoing)?.catch(\n (e) => handleResponseError(e, outgoing)\n );\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar isPromise = (res) => typeof res.then === \"function\";\nvar responseViaResponseObject = async (res, outgoing, options = {}) => {\n if (isPromise(res)) {\n if (options.errorHandler) {\n try {\n res = await res;\n } catch (err) {\n const errRes = await options.errorHandler(err);\n if (!errRes) {\n return;\n }\n res = errRes;\n }\n } else {\n res = await res.catch(handleFetchError);\n }\n }\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n const resHeaderRecord = buildOutgoingHttpHeaders(res.headers);\n if (res.body) {\n const reader = res.body.getReader();\n const values = [];\n let done = false;\n let currentReadPromise = void 0;\n if (resHeaderRecord[\"transfer-encoding\"] !== \"chunked\") {\n let maxReadCount = 2;\n for (let i = 0; i < maxReadCount; i++) {\n currentReadPromise ||= reader.read();\n const chunk = await readWithoutBlocking(currentReadPromise).catch((e) => {\n console.error(e);\n done = true;\n });\n if (!chunk) {\n if (i === 1) {\n await new Promise((resolve) => setTimeout(resolve));\n maxReadCount = 3;\n continue;\n }\n break;\n }\n currentReadPromise = void 0;\n if (chunk.value) {\n values.push(chunk.value);\n }\n if (chunk.done) {\n done = true;\n break;\n }\n }\n if (done && !(\"content-length\" in resHeaderRecord)) {\n resHeaderRecord[\"content-length\"] = values.reduce((acc, value) => acc + value.length, 0);\n }\n }\n outgoing.writeHead(res.status, resHeaderRecord);\n values.forEach((value) => {\n ;\n outgoing.write(value);\n });\n if (done) {\n outgoing.end();\n } else {\n if (values.length === 0) {\n flushHeaders(outgoing);\n }\n await writeFromReadableStreamDefaultReader(reader, outgoing, currentReadPromise);\n }\n } else if (resHeaderRecord[X_ALREADY_SENT]) {\n } else {\n outgoing.writeHead(res.status, resHeaderRecord);\n outgoing.end();\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar getRequestListener = (fetchCallback, options = {}) => {\n const autoCleanupIncoming = options.autoCleanupIncoming ?? true;\n if (options.overrideGlobalObjects !== false && global.Request !== Request) {\n Object.defineProperty(global, \"Request\", {\n value: Request\n });\n Object.defineProperty(global, \"Response\", {\n value: Response2\n });\n }\n return async (incoming, outgoing) => {\n let res, req;\n try {\n req = newRequest(incoming, options.hostname);\n let incomingEnded = !autoCleanupIncoming || incoming.method === \"GET\" || incoming.method === \"HEAD\";\n if (!incomingEnded) {\n ;\n incoming[wrapBodyStream] = true;\n incoming.on(\"end\", () => {\n incomingEnded = true;\n });\n if (incoming instanceof Http2ServerRequest2) {\n ;\n outgoing[outgoingEnded] = () => {\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n outgoing.destroy();\n });\n }\n });\n }\n };\n }\n }\n outgoing.on(\"close\", () => {\n const abortController = req[abortControllerKey];\n if (abortController) {\n if (incoming.errored) {\n req[abortControllerKey].abort(incoming.errored.toString());\n } else if (!outgoing.writableFinished) {\n req[abortControllerKey].abort(\"Client connection prematurely closed.\");\n }\n }\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n });\n }\n });\n }\n });\n res = fetchCallback(req, { incoming, outgoing });\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n } catch (e) {\n if (!res) {\n if (options.errorHandler) {\n res = await options.errorHandler(req ? e : toRequestError(e));\n if (!res) {\n return;\n }\n } else if (!req) {\n res = handleRequestError();\n } else {\n res = handleFetchError(e);\n }\n } else {\n return handleResponseError(e, outgoing);\n }\n }\n try {\n return await responseViaResponseObject(res, outgoing, options);\n } catch (e) {\n return handleResponseError(e, outgoing);\n }\n };\n};\n\n// src/server.ts\nvar createAdaptorServer = (options) => {\n const fetchCallback = options.fetch;\n const requestListener = getRequestListener(fetchCallback, {\n hostname: options.hostname,\n overrideGlobalObjects: options.overrideGlobalObjects,\n autoCleanupIncoming: options.autoCleanupIncoming\n });\n const createServer = options.createServer || createServerHTTP;\n const server = createServer(options.serverOptions || {}, requestListener);\n return server;\n};\nvar serve = (options, listeningListener) => {\n const server = createAdaptorServer(options);\n server.listen(options?.port ?? 3e3, options.hostname, () => {\n const serverInfo = server.address();\n listeningListener && listeningListener(serverInfo);\n });\n return server;\n};\nexport {\n RequestError,\n createAdaptorServer,\n getRequestListener,\n serve\n};\n","/**\n * Web Standards Streamable HTTP Server Transport\n *\n * This is the core transport implementation using Web Standard APIs (Request, Response, ReadableStream).\n * It can run on any runtime that supports Web Standards: Node.js 18+, Cloudflare Workers, Deno, Bun, etc.\n *\n * For Node.js Express/HTTP compatibility, use `StreamableHTTPServerTransport` which wraps this transport.\n */\nimport { isInitializeRequest, isJSONRPCErrorResponse, isJSONRPCRequest, isJSONRPCResultResponse, JSONRPCMessageSchema, SUPPORTED_PROTOCOL_VERSIONS, DEFAULT_NEGOTIATED_PROTOCOL_VERSION } from '../types.js';\n/**\n * Server transport for Web Standards Streamable HTTP: this implements the MCP Streamable HTTP transport specification\n * using Web Standard APIs (Request, Response, ReadableStream).\n *\n * This transport works on any runtime that supports Web Standards: Node.js 18+, Cloudflare Workers, Deno, Bun, etc.\n *\n * Usage example:\n *\n * ```typescript\n * // Stateful mode - server sets the session ID\n * const statefulTransport = new WebStandardStreamableHTTPServerTransport({\n * sessionIdGenerator: () => crypto.randomUUID(),\n * });\n *\n * // Stateless mode - explicitly set session ID to undefined\n * const statelessTransport = new WebStandardStreamableHTTPServerTransport({\n * sessionIdGenerator: undefined,\n * });\n *\n * // Hono.js usage\n * app.all('/mcp', async (c) => {\n * return transport.handleRequest(c.req.raw);\n * });\n *\n * // Cloudflare Workers usage\n * export default {\n * async fetch(request: Request): Promise<Response> {\n * return transport.handleRequest(request);\n * }\n * };\n * ```\n *\n * In stateful mode:\n * - Session ID is generated and included in response headers\n * - Session ID is always included in initialization responses\n * - Requests with invalid session IDs are rejected with 404 Not Found\n * - Non-initialization requests without a session ID are rejected with 400 Bad Request\n * - State is maintained in-memory (connections, message history)\n *\n * In stateless mode:\n * - No Session ID is included in any responses\n * - No session validation is performed\n */\nexport class WebStandardStreamableHTTPServerTransport {\n constructor(options = {}) {\n this._started = false;\n this._hasHandledRequest = false;\n this._streamMapping = new Map();\n this._requestToStreamMapping = new Map();\n this._requestResponseMap = new Map();\n this._initialized = false;\n this._enableJsonResponse = false;\n this._standaloneSseStreamId = '_GET_stream';\n this.sessionIdGenerator = options.sessionIdGenerator;\n this._enableJsonResponse = options.enableJsonResponse ?? false;\n this._eventStore = options.eventStore;\n this._onsessioninitialized = options.onsessioninitialized;\n this._onsessionclosed = options.onsessionclosed;\n this._allowedHosts = options.allowedHosts;\n this._allowedOrigins = options.allowedOrigins;\n this._enableDnsRebindingProtection = options.enableDnsRebindingProtection ?? false;\n this._retryInterval = options.retryInterval;\n }\n /**\n * Starts the transport. This is required by the Transport interface but is a no-op\n * for the Streamable HTTP transport as connections are managed per-request.\n */\n async start() {\n if (this._started) {\n throw new Error('Transport already started');\n }\n this._started = true;\n }\n /**\n * Helper to create a JSON error response\n */\n createJsonErrorResponse(status, code, message, options) {\n const error = { code, message };\n if (options?.data !== undefined) {\n error.data = options.data;\n }\n return new Response(JSON.stringify({\n jsonrpc: '2.0',\n error,\n id: null\n }), {\n status,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n /**\n * Validates request headers for DNS rebinding protection.\n * @returns Error response if validation fails, undefined if validation passes.\n */\n validateRequestHeaders(req) {\n // Skip validation if protection is not enabled\n if (!this._enableDnsRebindingProtection) {\n return undefined;\n }\n // Validate Host header if allowedHosts is configured\n if (this._allowedHosts && this._allowedHosts.length > 0) {\n const hostHeader = req.headers.get('host');\n if (!hostHeader || !this._allowedHosts.includes(hostHeader)) {\n const error = `Invalid Host header: ${hostHeader}`;\n this.onerror?.(new Error(error));\n return this.createJsonErrorResponse(403, -32000, error);\n }\n }\n // Validate Origin header if allowedOrigins is configured\n if (this._allowedOrigins && this._allowedOrigins.length > 0) {\n const originHeader = req.headers.get('origin');\n if (originHeader && !this._allowedOrigins.includes(originHeader)) {\n const error = `Invalid Origin header: ${originHeader}`;\n this.onerror?.(new Error(error));\n return this.createJsonErrorResponse(403, -32000, error);\n }\n }\n return undefined;\n }\n /**\n * Handles an incoming HTTP request, whether GET, POST, or DELETE\n * Returns a Response object (Web Standard)\n */\n async handleRequest(req, options) {\n // In stateless mode (no sessionIdGenerator), each request must use a fresh transport.\n // Reusing a stateless transport causes message ID collisions between clients.\n if (!this.sessionIdGenerator && this._hasHandledRequest) {\n throw new Error('Stateless transport cannot be reused across requests. Create a new transport per request.');\n }\n this._hasHandledRequest = true;\n // Validate request headers for DNS rebinding protection\n const validationError = this.validateRequestHeaders(req);\n if (validationError) {\n return validationError;\n }\n switch (req.method) {\n case 'POST':\n return this.handlePostRequest(req, options);\n case 'GET':\n return this.handleGetRequest(req);\n case 'DELETE':\n return this.handleDeleteRequest(req);\n default:\n return this.handleUnsupportedRequest();\n }\n }\n /**\n * Writes a priming event to establish resumption capability.\n * Only sends if eventStore is configured (opt-in for resumability) and\n * the client's protocol version supports empty SSE data (>= 2025-11-25).\n */\n async writePrimingEvent(controller, encoder, streamId, protocolVersion) {\n if (!this._eventStore) {\n return;\n }\n // Priming events have empty data which older clients cannot handle.\n // Only send priming events to clients with protocol version >= 2025-11-25\n // which includes the fix for handling empty SSE data.\n if (protocolVersion < '2025-11-25') {\n return;\n }\n const primingEventId = await this._eventStore.storeEvent(streamId, {});\n let primingEvent = `id: ${primingEventId}\\ndata: \\n\\n`;\n if (this._retryInterval !== undefined) {\n primingEvent = `id: ${primingEventId}\\nretry: ${this._retryInterval}\\ndata: \\n\\n`;\n }\n controller.enqueue(encoder.encode(primingEvent));\n }\n /**\n * Handles GET requests for SSE stream\n */\n async handleGetRequest(req) {\n // The client MUST include an Accept header, listing text/event-stream as a supported content type.\n const acceptHeader = req.headers.get('accept');\n if (!acceptHeader?.includes('text/event-stream')) {\n this.onerror?.(new Error('Not Acceptable: Client must accept text/event-stream'));\n return this.createJsonErrorResponse(406, -32000, 'Not Acceptable: Client must accept text/event-stream');\n }\n // If an Mcp-Session-Id is returned by the server during initialization,\n // clients using the Streamable HTTP transport MUST include it\n // in the Mcp-Session-Id header on all of their subsequent HTTP requests.\n const sessionError = this.validateSession(req);\n if (sessionError) {\n return sessionError;\n }\n const protocolError = this.validateProtocolVersion(req);\n if (protocolError) {\n return protocolError;\n }\n // Handle resumability: check for Last-Event-ID header\n if (this._eventStore) {\n const lastEventId = req.headers.get('last-event-id');\n if (lastEventId) {\n return this.replayEvents(lastEventId);\n }\n }\n // Check if there's already an active standalone SSE stream for this session\n if (this._streamMapping.get(this._standaloneSseStreamId) !== undefined) {\n // Only one GET SSE stream is allowed per session\n this.onerror?.(new Error('Conflict: Only one SSE stream is allowed per session'));\n return this.createJsonErrorResponse(409, -32000, 'Conflict: Only one SSE stream is allowed per session');\n }\n const encoder = new TextEncoder();\n let streamController;\n // Create a ReadableStream with a controller we can use to push SSE events\n const readable = new ReadableStream({\n start: controller => {\n streamController = controller;\n },\n cancel: () => {\n // Stream was cancelled by client\n this._streamMapping.delete(this._standaloneSseStreamId);\n }\n });\n const headers = {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache, no-transform',\n Connection: 'keep-alive'\n };\n // After initialization, always include the session ID if we have one\n if (this.sessionId !== undefined) {\n headers['mcp-session-id'] = this.sessionId;\n }\n // Store the stream mapping with the controller for pushing data\n this._streamMapping.set(this._standaloneSseStreamId, {\n controller: streamController,\n encoder,\n cleanup: () => {\n this._streamMapping.delete(this._standaloneSseStreamId);\n try {\n streamController.close();\n }\n catch {\n // Controller might already be closed\n }\n }\n });\n return new Response(readable, { headers });\n }\n /**\n * Replays events that would have been sent after the specified event ID\n * Only used when resumability is enabled\n */\n async replayEvents(lastEventId) {\n if (!this._eventStore) {\n this.onerror?.(new Error('Event store not configured'));\n return this.createJsonErrorResponse(400, -32000, 'Event store not configured');\n }\n try {\n // If getStreamIdForEventId is available, use it for conflict checking\n let streamId;\n if (this._eventStore.getStreamIdForEventId) {\n streamId = await this._eventStore.getStreamIdForEventId(lastEventId);\n if (!streamId) {\n this.onerror?.(new Error('Invalid event ID format'));\n return this.createJsonErrorResponse(400, -32000, 'Invalid event ID format');\n }\n // Check conflict with the SAME streamId we'll use for mapping\n if (this._streamMapping.get(streamId) !== undefined) {\n this.onerror?.(new Error('Conflict: Stream already has an active connection'));\n return this.createJsonErrorResponse(409, -32000, 'Conflict: Stream already has an active connection');\n }\n }\n const headers = {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache, no-transform',\n Connection: 'keep-alive'\n };\n if (this.sessionId !== undefined) {\n headers['mcp-session-id'] = this.sessionId;\n }\n // Create a ReadableStream with controller for SSE\n const encoder = new TextEncoder();\n let streamController;\n const readable = new ReadableStream({\n start: controller => {\n streamController = controller;\n },\n cancel: () => {\n // Stream was cancelled by client\n // Cleanup will be handled by the mapping\n }\n });\n // Replay events - returns the streamId for backwards compatibility\n const replayedStreamId = await this._eventStore.replayEventsAfter(lastEventId, {\n send: async (eventId, message) => {\n const success = this.writeSSEEvent(streamController, encoder, message, eventId);\n if (!success) {\n this.onerror?.(new Error('Failed replay events'));\n try {\n streamController.close();\n }\n catch {\n // Controller might already be closed\n }\n }\n }\n });\n this._streamMapping.set(replayedStreamId, {\n controller: streamController,\n encoder,\n cleanup: () => {\n this._streamMapping.delete(replayedStreamId);\n try {\n streamController.close();\n }\n catch {\n // Controller might already be closed\n }\n }\n });\n return new Response(readable, { headers });\n }\n catch (error) {\n this.onerror?.(error);\n return this.createJsonErrorResponse(500, -32000, 'Error replaying events');\n }\n }\n /**\n * Writes an event to an SSE stream via controller with proper formatting\n */\n writeSSEEvent(controller, encoder, message, eventId) {\n try {\n let eventData = `event: message\\n`;\n // Include event ID if provided - this is important for resumability\n if (eventId) {\n eventData += `id: ${eventId}\\n`;\n }\n eventData += `data: ${JSON.stringify(message)}\\n\\n`;\n controller.enqueue(encoder.encode(eventData));\n return true;\n }\n catch (error) {\n this.onerror?.(error);\n return false;\n }\n }\n /**\n * Handles unsupported requests (PUT, PATCH, etc.)\n */\n handleUnsupportedRequest() {\n this.onerror?.(new Error('Method not allowed.'));\n return new Response(JSON.stringify({\n jsonrpc: '2.0',\n error: {\n code: -32000,\n message: 'Method not allowed.'\n },\n id: null\n }), {\n status: 405,\n headers: {\n Allow: 'GET, POST, DELETE',\n 'Content-Type': 'application/json'\n }\n });\n }\n /**\n * Handles POST requests containing JSON-RPC messages\n */\n async handlePostRequest(req, options) {\n try {\n // Validate the Accept header\n const acceptHeader = req.headers.get('accept');\n // The client MUST include an Accept header, listing both application/json and text/event-stream as supported content types.\n if (!acceptHeader?.includes('application/json') || !acceptHeader.includes('text/event-stream')) {\n this.onerror?.(new Error('Not Acceptable: Client must accept both application/json and text/event-stream'));\n return this.createJsonErrorResponse(406, -32000, 'Not Acceptable: Client must accept both application/json and text/event-stream');\n }\n const ct = req.headers.get('content-type');\n if (!ct || !ct.includes('application/json')) {\n this.onerror?.(new Error('Unsupported Media Type: Content-Type must be application/json'));\n return this.createJsonErrorResponse(415, -32000, 'Unsupported Media Type: Content-Type must be application/json');\n }\n // Build request info from headers and URL\n const requestInfo = {\n headers: Object.fromEntries(req.headers.entries()),\n url: new URL(req.url)\n };\n let rawMessage;\n if (options?.parsedBody !== undefined) {\n rawMessage = options.parsedBody;\n }\n else {\n try {\n rawMessage = await req.json();\n }\n catch {\n this.onerror?.(new Error('Parse error: Invalid JSON'));\n return this.createJsonErrorResponse(400, -32700, 'Parse error: Invalid JSON');\n }\n }\n let messages;\n // handle batch and single messages\n try {\n if (Array.isArray(rawMessage)) {\n messages = rawMessage.map(msg => JSONRPCMessageSchema.parse(msg));\n }\n else {\n messages = [JSONRPCMessageSchema.parse(rawMessage)];\n }\n }\n catch {\n this.onerror?.(new Error('Parse error: Invalid JSON-RPC message'));\n return this.createJsonErrorResponse(400, -32700, 'Parse error: Invalid JSON-RPC message');\n }\n // Check if this is an initialization request\n // https://spec.modelcontextprotocol.io/specification/2025-03-26/basic/lifecycle/\n const isInitializationRequest = messages.some(isInitializeRequest);\n if (isInitializationRequest) {\n // If it's a server with session management and the session ID is already set we should reject the request\n // to avoid re-initialization.\n if (this._initialized && this.sessionId !== undefined) {\n this.onerror?.(new Error('Invalid Request: Server already initialized'));\n return this.createJsonErrorResponse(400, -32600, 'Invalid Request: Server already initialized');\n }\n if (messages.length > 1) {\n this.onerror?.(new Error('Invalid Request: Only one initialization request is allowed'));\n return this.createJsonErrorResponse(400, -32600, 'Invalid Request: Only one initialization request is allowed');\n }\n this.sessionId = this.sessionIdGenerator?.();\n this._initialized = true;\n // If we have a session ID and an onsessioninitialized handler, call it immediately\n // This is needed in cases where the server needs to keep track of multiple sessions\n if (this.sessionId && this._onsessioninitialized) {\n await Promise.resolve(this._onsessioninitialized(this.sessionId));\n }\n }\n if (!isInitializationRequest) {\n // If an Mcp-Session-Id is returned by the server during initialization,\n // clients using the Streamable HTTP transport MUST include it\n // in the Mcp-Session-Id header on all of their subsequent HTTP requests.\n const sessionError = this.validateSession(req);\n if (sessionError) {\n return sessionError;\n }\n // Mcp-Protocol-Version header is required for all requests after initialization.\n const protocolError = this.validateProtocolVersion(req);\n if (protocolError) {\n return protocolError;\n }\n }\n // check if it contains requests\n const hasRequests = messages.some(isJSONRPCRequest);\n if (!hasRequests) {\n // if it only contains notifications or responses, return 202\n for (const message of messages) {\n this.onmessage?.(message, { authInfo: options?.authInfo, requestInfo });\n }\n return new Response(null, { status: 202 });\n }\n // The default behavior is to use SSE streaming\n // but in some cases server will return JSON responses\n const streamId = crypto.randomUUID();\n // Extract protocol version for priming event decision.\n // For initialize requests, get from request params.\n // For other requests, get from header (already validated).\n const initRequest = messages.find(m => isInitializeRequest(m));\n const clientProtocolVersion = initRequest\n ? initRequest.params.protocolVersion\n : (req.headers.get('mcp-protocol-version') ?? DEFAULT_NEGOTIATED_PROTOCOL_VERSION);\n if (this._enableJsonResponse) {\n // For JSON response mode, return a Promise that resolves when all responses are ready\n return new Promise(resolve => {\n this._streamMapping.set(streamId, {\n resolveJson: resolve,\n cleanup: () => {\n this._streamMapping.delete(streamId);\n }\n });\n for (const message of messages) {\n if (isJSONRPCRequest(message)) {\n this._requestToStreamMapping.set(message.id, streamId);\n }\n }\n for (const message of messages) {\n this.onmessage?.(message, { authInfo: options?.authInfo, requestInfo });\n }\n });\n }\n // SSE streaming mode - use ReadableStream with controller for more reliable data pushing\n const encoder = new TextEncoder();\n let streamController;\n const readable = new ReadableStream({\n start: controller => {\n streamController = controller;\n },\n cancel: () => {\n // Stream was cancelled by client\n this._streamMapping.delete(streamId);\n }\n });\n const headers = {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive'\n };\n // After initialization, always include the session ID if we have one\n if (this.sessionId !== undefined) {\n headers['mcp-session-id'] = this.sessionId;\n }\n // Store the response for this request to send messages back through this connection\n // We need to track by request ID to maintain the connection\n for (const message of messages) {\n if (isJSONRPCRequest(message)) {\n this._streamMapping.set(streamId, {\n controller: streamController,\n encoder,\n cleanup: () => {\n this._streamMapping.delete(streamId);\n try {\n streamController.close();\n }\n catch {\n // Controller might already be closed\n }\n }\n });\n this._requestToStreamMapping.set(message.id, streamId);\n }\n }\n // Write priming event if event store is configured (after mapping is set up)\n await this.writePrimingEvent(streamController, encoder, streamId, clientProtocolVersion);\n // handle each message\n for (const message of messages) {\n // Build closeSSEStream callback for requests when eventStore is configured\n // AND client supports resumability (protocol version >= 2025-11-25).\n // Old clients can't resume if the stream is closed early because they\n // didn't receive a priming event with an event ID.\n let closeSSEStream;\n let closeStandaloneSSEStream;\n if (isJSONRPCRequest(message) && this._eventStore && clientProtocolVersion >= '2025-11-25') {\n closeSSEStream = () => {\n this.closeSSEStream(message.id);\n };\n closeStandaloneSSEStream = () => {\n this.closeStandaloneSSEStream();\n };\n }\n this.onmessage?.(message, { authInfo: options?.authInfo, requestInfo, closeSSEStream, closeStandaloneSSEStream });\n }\n // The server SHOULD NOT close the SSE stream before sending all JSON-RPC responses\n // This will be handled by the send() method when responses are ready\n return new Response(readable, { status: 200, headers });\n }\n catch (error) {\n // return JSON-RPC formatted error\n this.onerror?.(error);\n return this.createJsonErrorResponse(400, -32700, 'Parse error', { data: String(error) });\n }\n }\n /**\n * Handles DELETE requests to terminate sessions\n */\n async handleDeleteRequest(req) {\n const sessionError = this.validateSession(req);\n if (sessionError) {\n return sessionError;\n }\n const protocolError = this.validateProtocolVersion(req);\n if (protocolError) {\n return protocolError;\n }\n await Promise.resolve(this._onsessionclosed?.(this.sessionId));\n await this.close();\n return new Response(null, { status: 200 });\n }\n /**\n * Validates session ID for non-initialization requests.\n * Returns Response error if invalid, undefined otherwise\n */\n validateSession(req) {\n if (this.sessionIdGenerator === undefined) {\n // If the sessionIdGenerator ID is not set, the session management is disabled\n // and we don't need to validate the session ID\n return undefined;\n }\n if (!this._initialized) {\n // If the server has not been initialized yet, reject all requests\n this.onerror?.(new Error('Bad Request: Server not initialized'));\n return this.createJsonErrorResponse(400, -32000, 'Bad Request: Server not initialized');\n }\n const sessionId = req.headers.get('mcp-session-id');\n if (!sessionId) {\n // Non-initialization requests without a session ID should return 400 Bad Request\n this.onerror?.(new Error('Bad Request: Mcp-Session-Id header is required'));\n return this.createJsonErrorResponse(400, -32000, 'Bad Request: Mcp-Session-Id header is required');\n }\n if (sessionId !== this.sessionId) {\n // Reject requests with invalid session ID with 404 Not Found\n this.onerror?.(new Error('Session not found'));\n return this.createJsonErrorResponse(404, -32001, 'Session not found');\n }\n return undefined;\n }\n /**\n * Validates the MCP-Protocol-Version header on incoming requests.\n *\n * For initialization: Version negotiation handles unknown versions gracefully\n * (server responds with its supported version).\n *\n * For subsequent requests with MCP-Protocol-Version header:\n * - Accept if in supported list\n * - 400 if unsupported\n *\n * For HTTP requests without the MCP-Protocol-Version header:\n * - Accept and default to the version negotiated at initialization\n */\n validateProtocolVersion(req) {\n const protocolVersion = req.headers.get('mcp-protocol-version');\n if (protocolVersion !== null && !SUPPORTED_PROTOCOL_VERSIONS.includes(protocolVersion)) {\n this.onerror?.(new Error(`Bad Request: Unsupported protocol version: ${protocolVersion}` +\n ` (supported versions: ${SUPPORTED_PROTOCOL_VERSIONS.join(', ')})`));\n return this.createJsonErrorResponse(400, -32000, `Bad Request: Unsupported protocol version: ${protocolVersion} (supported versions: ${SUPPORTED_PROTOCOL_VERSIONS.join(', ')})`);\n }\n return undefined;\n }\n async close() {\n // Close all SSE connections\n this._streamMapping.forEach(({ cleanup }) => {\n cleanup();\n });\n this._streamMapping.clear();\n // Clear any pending responses\n this._requestResponseMap.clear();\n this.onclose?.();\n }\n /**\n * Close an SSE stream for a specific request, triggering client reconnection.\n * Use this to implement polling behavior during long-running operations -\n * client will reconnect after the retry interval specified in the priming event.\n */\n closeSSEStream(requestId) {\n const streamId = this._requestToStreamMapping.get(requestId);\n if (!streamId)\n return;\n const stream = this._streamMapping.get(streamId);\n if (stream) {\n stream.cleanup();\n }\n }\n /**\n * Close the standalone GET SSE stream, triggering client reconnection.\n * Use this to implement polling behavior for server-initiated notifications.\n */\n closeStandaloneSSEStream() {\n const stream = this._streamMapping.get(this._standaloneSseStreamId);\n if (stream) {\n stream.cleanup();\n }\n }\n async send(message, options) {\n let requestId = options?.relatedRequestId;\n if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) {\n // If the message is a response, use the request ID from the message\n requestId = message.id;\n }\n // Check if this message should be sent on the standalone SSE stream (no request ID)\n // Ignore notifications from tools (which have relatedRequestId set)\n // Those will be sent via dedicated response SSE streams\n if (requestId === undefined) {\n // For standalone SSE streams, we can only send requests and notifications\n if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) {\n throw new Error('Cannot send a response on a standalone SSE stream unless resuming a previous client request');\n }\n // Generate and store event ID if event store is provided\n // Store even if stream is disconnected so events can be replayed on reconnect\n let eventId;\n if (this._eventStore) {\n // Stores the event and gets the generated event ID\n eventId = await this._eventStore.storeEvent(this._standaloneSseStreamId, message);\n }\n const standaloneSse = this._streamMapping.get(this._standaloneSseStreamId);\n if (standaloneSse === undefined) {\n // Stream is disconnected - event is stored for replay, nothing more to do\n return;\n }\n // Send the message to the standalone SSE stream\n if (standaloneSse.controller && standaloneSse.encoder) {\n this.writeSSEEvent(standaloneSse.controller, standaloneSse.encoder, message, eventId);\n }\n return;\n }\n // Get the response for this request\n const streamId = this._requestToStreamMapping.get(requestId);\n if (!streamId) {\n throw new Error(`No connection established for request ID: ${String(requestId)}`);\n }\n const stream = this._streamMapping.get(streamId);\n if (!this._enableJsonResponse && stream?.controller && stream?.encoder) {\n // For SSE responses, generate event ID if event store is provided\n let eventId;\n if (this._eventStore) {\n eventId = await this._eventStore.storeEvent(streamId, message);\n }\n // Write the event to the response stream\n this.writeSSEEvent(stream.controller, stream.encoder, message, eventId);\n }\n if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) {\n this._requestResponseMap.set(requestId, message);\n const relatedIds = Array.from(this._requestToStreamMapping.entries())\n .filter(([_, sid]) => sid === streamId)\n .map(([id]) => id);\n // Check if we have responses for all requests using this connection\n const allResponsesReady = relatedIds.every(id => this._requestResponseMap.has(id));\n if (allResponsesReady) {\n if (!stream) {\n throw new Error(`No connection established for request ID: ${String(requestId)}`);\n }\n if (this._enableJsonResponse && stream.resolveJson) {\n // All responses ready, send as JSON\n const headers = {\n 'Content-Type': 'application/json'\n };\n if (this.sessionId !== undefined) {\n headers['mcp-session-id'] = this.sessionId;\n }\n const responses = relatedIds.map(id => this._requestResponseMap.get(id));\n if (responses.length === 1) {\n stream.resolveJson(new Response(JSON.stringify(responses[0]), { status: 200, headers }));\n }\n else {\n stream.resolveJson(new Response(JSON.stringify(responses), { status: 200, headers }));\n }\n }\n else {\n // End the SSE stream\n stream.cleanup();\n }\n // Clean up\n for (const id of relatedIds) {\n this._requestResponseMap.delete(id);\n this._requestToStreamMapping.delete(id);\n }\n }\n }\n }\n}\n//# sourceMappingURL=webStandardStreamableHttp.js.map","/**\n * Node.js HTTP Streamable HTTP Server Transport\n *\n * This is a thin wrapper around `WebStandardStreamableHTTPServerTransport` that provides\n * compatibility with Node.js HTTP server (IncomingMessage/ServerResponse).\n *\n * For web-standard environments (Cloudflare Workers, Deno, Bun), use `WebStandardStreamableHTTPServerTransport` directly.\n */\nimport { getRequestListener } from '@hono/node-server';\nimport { WebStandardStreamableHTTPServerTransport } from './webStandardStreamableHttp.js';\n/**\n * Server transport for Streamable HTTP: this implements the MCP Streamable HTTP transport specification.\n * It supports both SSE streaming and direct HTTP responses.\n *\n * This is a wrapper around `WebStandardStreamableHTTPServerTransport` that provides Node.js HTTP compatibility.\n * It uses the `@hono/node-server` library to convert between Node.js HTTP and Web Standard APIs.\n *\n * Usage example:\n *\n * ```typescript\n * // Stateful mode - server sets the session ID\n * const statefulTransport = new StreamableHTTPServerTransport({\n * sessionIdGenerator: () => randomUUID(),\n * });\n *\n * // Stateless mode - explicitly set session ID to undefined\n * const statelessTransport = new StreamableHTTPServerTransport({\n * sessionIdGenerator: undefined,\n * });\n *\n * // Using with pre-parsed request body\n * app.post('/mcp', (req, res) => {\n * transport.handleRequest(req, res, req.body);\n * });\n * ```\n *\n * In stateful mode:\n * - Session ID is generated and included in response headers\n * - Session ID is always included in initialization responses\n * - Requests with invalid session IDs are rejected with 404 Not Found\n * - Non-initialization requests without a session ID are rejected with 400 Bad Request\n * - State is maintained in-memory (connections, message history)\n *\n * In stateless mode:\n * - No Session ID is included in any responses\n * - No session validation is performed\n */\nexport class StreamableHTTPServerTransport {\n constructor(options = {}) {\n // Store auth and parsedBody per request for passing through to handleRequest\n this._requestContext = new WeakMap();\n this._webStandardTransport = new WebStandardStreamableHTTPServerTransport(options);\n // Create a request listener that wraps the web standard transport\n // getRequestListener converts Node.js HTTP to Web Standard and properly handles SSE streaming\n // overrideGlobalObjects: false prevents Hono from overwriting global Response, which would\n // break frameworks like Next.js whose response classes extend the native Response\n this._requestListener = getRequestListener(async (webRequest) => {\n // Get context if available (set during handleRequest)\n const context = this._requestContext.get(webRequest);\n return this._webStandardTransport.handleRequest(webRequest, {\n authInfo: context?.authInfo,\n parsedBody: context?.parsedBody\n });\n }, { overrideGlobalObjects: false });\n }\n /**\n * Gets the session ID for this transport instance.\n */\n get sessionId() {\n return this._webStandardTransport.sessionId;\n }\n /**\n * Sets callback for when the transport is closed.\n */\n set onclose(handler) {\n this._webStandardTransport.onclose = handler;\n }\n get onclose() {\n return this._webStandardTransport.onclose;\n }\n /**\n * Sets callback for transport errors.\n */\n set onerror(handler) {\n this._webStandardTransport.onerror = handler;\n }\n get onerror() {\n return this._webStandardTransport.onerror;\n }\n /**\n * Sets callback for incoming messages.\n */\n set onmessage(handler) {\n this._webStandardTransport.onmessage = handler;\n }\n get onmessage() {\n return this._webStandardTransport.onmessage;\n }\n /**\n * Starts the transport. This is required by the Transport interface but is a no-op\n * for the Streamable HTTP transport as connections are managed per-request.\n */\n async start() {\n return this._webStandardTransport.start();\n }\n /**\n * Closes the transport and all active connections.\n */\n async close() {\n return this._webStandardTransport.close();\n }\n /**\n * Sends a JSON-RPC message through the transport.\n */\n async send(message, options) {\n return this._webStandardTransport.send(message, options);\n }\n /**\n * Handles an incoming HTTP request, whether GET or POST.\n *\n * This method converts Node.js HTTP objects to Web Standard Request/Response\n * and delegates to the underlying WebStandardStreamableHTTPServerTransport.\n *\n * @param req - Node.js IncomingMessage, optionally with auth property from middleware\n * @param res - Node.js ServerResponse\n * @param parsedBody - Optional pre-parsed body from body-parser middleware\n */\n async handleRequest(req, res, parsedBody) {\n // Store context for this request to pass through auth and parsedBody\n // We need to intercept the request creation to attach this context\n const authInfo = req.auth;\n // Create a custom handler that includes our context\n // overrideGlobalObjects: false prevents Hono from overwriting global Response, which would\n // break frameworks like Next.js whose response classes extend the native Response\n const handler = getRequestListener(async (webRequest) => {\n return this._webStandardTransport.handleRequest(webRequest, {\n authInfo,\n parsedBody\n });\n }, { overrideGlobalObjects: false });\n // Delegate to the request listener which handles all the Node.js <-> Web Standard conversion\n // including proper SSE streaming support\n await handler(req, res);\n }\n /**\n * Close an SSE stream for a specific request, triggering client reconnection.\n * Use this to implement polling behavior during long-running operations -\n * client will reconnect after the retry interval specified in the priming event.\n */\n closeSSEStream(requestId) {\n this._webStandardTransport.closeSSEStream(requestId);\n }\n /**\n * Close the standalone GET SSE stream, triggering client reconnection.\n * Use this to implement polling behavior for server-initiated notifications.\n */\n closeStandaloneSSEStream() {\n this._webStandardTransport.closeStandaloneSSEStream();\n }\n}\n//# sourceMappingURL=streamableHttp.js.map","import{Protocol as WQ}from\"@modelcontextprotocol/sdk/shared/protocol.js\";import{CallToolRequestSchema as jQ,CallToolResultSchema as BQ,EmptyResultSchema as KQ,ListResourcesResultSchema as NQ,ListToolsRequestSchema as YQ,PingRequestSchema as FQ,ReadResourceResultSchema as zQ}from\"@modelcontextprotocol/sdk/types.js\";import{JSONRPCMessageSchema as m}from\"@modelcontextprotocol/sdk/types.js\";var F=\"2026-01-26\";var z=\"ui/notifications/tool-input-partial\";class j{eventTarget;eventSource;messageListener;constructor(Z=window.parent,$){this.eventTarget=Z;this.eventSource=$;this.messageListener=(J)=>{if($&&J.source!==this.eventSource){console.debug(\"Ignoring message from unknown source\",J);return}let X=m.safeParse(J.data);if(X.success)console.debug(\"Parsed message\",X.data),this.onmessage?.(X.data);else if(J.data?.jsonrpc!==\"2.0\")console.debug(\"Ignoring non-JSON-RPC message\",X.error.message,J);else console.error(\"Failed to parse message\",X.error.message,J),this.onerror?.(Error(\"Invalid JSON-RPC message received: \"+X.error.message))}}async start(){window.addEventListener(\"message\",this.messageListener)}async send(Z,$){if(Z.method!==z)console.debug(\"Sending message\",Z);this.eventTarget.postMessage(Z,\"*\")}async close(){window.removeEventListener(\"message\",this.messageListener),this.onclose?.()}onclose;onerror;onmessage;sessionId;setProtocolVersion}import{z as Q}from\"zod/v4\";import{ContentBlockSchema as x,CallToolResultSchema as c,EmbeddedResourceSchema as p,ImplementationSchema as S,RequestIdSchema as l,ResourceLinkSchema as r,ToolSchema as n}from\"@modelcontextprotocol/sdk/types.js\";var b=Q.union([Q.literal(\"light\"),Q.literal(\"dark\")]).describe(\"Color theme preference for the host environment.\"),L=Q.union([Q.literal(\"inline\"),Q.literal(\"fullscreen\"),Q.literal(\"pip\")]).describe(\"Display mode for UI presentation.\"),i=Q.union([Q.literal(\"--color-background-primary\"),Q.literal(\"--color-background-secondary\"),Q.literal(\"--color-background-tertiary\"),Q.literal(\"--color-background-inverse\"),Q.literal(\"--color-background-ghost\"),Q.literal(\"--color-background-info\"),Q.literal(\"--color-background-danger\"),Q.literal(\"--color-background-success\"),Q.literal(\"--color-background-warning\"),Q.literal(\"--color-background-disabled\"),Q.literal(\"--color-text-primary\"),Q.literal(\"--color-text-secondary\"),Q.literal(\"--color-text-tertiary\"),Q.literal(\"--color-text-inverse\"),Q.literal(\"--color-text-ghost\"),Q.literal(\"--color-text-info\"),Q.literal(\"--color-text-danger\"),Q.literal(\"--color-text-success\"),Q.literal(\"--color-text-warning\"),Q.literal(\"--color-text-disabled\"),Q.literal(\"--color-border-primary\"),Q.literal(\"--color-border-secondary\"),Q.literal(\"--color-border-tertiary\"),Q.literal(\"--color-border-inverse\"),Q.literal(\"--color-border-ghost\"),Q.literal(\"--color-border-info\"),Q.literal(\"--color-border-danger\"),Q.literal(\"--color-border-success\"),Q.literal(\"--color-border-warning\"),Q.literal(\"--color-border-disabled\"),Q.literal(\"--color-ring-primary\"),Q.literal(\"--color-ring-secondary\"),Q.literal(\"--color-ring-inverse\"),Q.literal(\"--color-ring-info\"),Q.literal(\"--color-ring-danger\"),Q.literal(\"--color-ring-success\"),Q.literal(\"--color-ring-warning\"),Q.literal(\"--font-sans\"),Q.literal(\"--font-mono\"),Q.literal(\"--font-weight-normal\"),Q.literal(\"--font-weight-medium\"),Q.literal(\"--font-weight-semibold\"),Q.literal(\"--font-weight-bold\"),Q.literal(\"--font-text-xs-size\"),Q.literal(\"--font-text-sm-size\"),Q.literal(\"--font-text-md-size\"),Q.literal(\"--font-text-lg-size\"),Q.literal(\"--font-heading-xs-size\"),Q.literal(\"--font-heading-sm-size\"),Q.literal(\"--font-heading-md-size\"),Q.literal(\"--font-heading-lg-size\"),Q.literal(\"--font-heading-xl-size\"),Q.literal(\"--font-heading-2xl-size\"),Q.literal(\"--font-heading-3xl-size\"),Q.literal(\"--font-text-xs-line-height\"),Q.literal(\"--font-text-sm-line-height\"),Q.literal(\"--font-text-md-line-height\"),Q.literal(\"--font-text-lg-line-height\"),Q.literal(\"--font-heading-xs-line-height\"),Q.literal(\"--font-heading-sm-line-height\"),Q.literal(\"--font-heading-md-line-height\"),Q.literal(\"--font-heading-lg-line-height\"),Q.literal(\"--font-heading-xl-line-height\"),Q.literal(\"--font-heading-2xl-line-height\"),Q.literal(\"--font-heading-3xl-line-height\"),Q.literal(\"--border-radius-xs\"),Q.literal(\"--border-radius-sm\"),Q.literal(\"--border-radius-md\"),Q.literal(\"--border-radius-lg\"),Q.literal(\"--border-radius-xl\"),Q.literal(\"--border-radius-full\"),Q.literal(\"--border-width-regular\"),Q.literal(\"--shadow-hairline\"),Q.literal(\"--shadow-sm\"),Q.literal(\"--shadow-md\"),Q.literal(\"--shadow-lg\")]).describe(\"CSS variable keys available to MCP apps for theming.\"),o=Q.record(i.describe(`Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses \\`Record<K, string | undefined>\\` rather than \\`Partial<Record<K, string>>\\`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation.`),Q.union([Q.string(),Q.undefined()]).describe(`Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses \\`Record<K, string | undefined>\\` rather than \\`Partial<Record<K, string>>\\`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation.`)).describe(`Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses \\`Record<K, string | undefined>\\` rather than \\`Partial<Record<K, string>>\\`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation.`),a=Q.object({method:Q.literal(\"ui/open-link\"),params:Q.object({url:Q.string().describe(\"URL to open in the host's browser\")})}),O=Q.object({isError:Q.boolean().optional().describe(\"True if the host failed to open the URL (e.g., due to security policy).\")}).passthrough(),I=Q.object({isError:Q.boolean().optional().describe(\"True if the download failed (e.g., user cancelled or host denied).\")}).passthrough(),w=Q.object({isError:Q.boolean().optional().describe(\"True if the host rejected or failed to deliver the message.\")}).passthrough(),s=Q.object({method:Q.literal(\"ui/notifications/sandbox-proxy-ready\"),params:Q.object({})}),B=Q.object({connectDomains:Q.array(Q.string()).optional().describe(`Origins for network requests (fetch/XHR/WebSocket).\n\n- Maps to CSP \\`connect-src\\` directive\n- Empty or omitted → no network connections (secure default)`),resourceDomains:Q.array(Q.string()).optional().describe(\"Origins for static resources (images, scripts, stylesheets, fonts, media).\\n\\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\\n- Wildcard subdomains supported: `https://*.example.com`\\n- Empty or omitted → no network resources (secure default)\"),frameDomains:Q.array(Q.string()).optional().describe(\"Origins for nested iframes.\\n\\n- Maps to CSP `frame-src` directive\\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)\"),baseUriDomains:Q.array(Q.string()).optional().describe(\"Allowed base URIs for the document.\\n\\n- Maps to CSP `base-uri` directive\\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)\")}),K=Q.object({camera:Q.object({}).optional().describe(\"Request camera access.\\n\\nMaps to Permission Policy `camera` feature.\"),microphone:Q.object({}).optional().describe(\"Request microphone access.\\n\\nMaps to Permission Policy `microphone` feature.\"),geolocation:Q.object({}).optional().describe(\"Request geolocation access.\\n\\nMaps to Permission Policy `geolocation` feature.\"),clipboardWrite:Q.object({}).optional().describe(\"Request clipboard write access.\\n\\nMaps to Permission Policy `clipboard-write` feature.\")}),t=Q.object({method:Q.literal(\"ui/notifications/size-changed\"),params:Q.object({width:Q.number().optional().describe(\"New width in pixels.\"),height:Q.number().optional().describe(\"New height in pixels.\")})}),A=Q.object({method:Q.literal(\"ui/notifications/tool-input\"),params:Q.object({arguments:Q.record(Q.string(),Q.unknown().describe(\"Complete tool call arguments as key-value pairs.\")).optional().describe(\"Complete tool call arguments as key-value pairs.\")})}),P=Q.object({method:Q.literal(\"ui/notifications/tool-input-partial\"),params:Q.object({arguments:Q.record(Q.string(),Q.unknown().describe(\"Partial tool call arguments (incomplete, may change).\")).optional().describe(\"Partial tool call arguments (incomplete, may change).\")})}),H=Q.object({method:Q.literal(\"ui/notifications/tool-cancelled\"),params:Q.object({reason:Q.string().optional().describe('Optional reason for the cancellation (e.g., \"user action\", \"timeout\").')})}),g=Q.object({fonts:Q.string().optional()}),C=Q.object({variables:o.optional().describe(\"CSS variables for theming the app.\"),css:g.optional().describe(\"CSS blocks that apps can inject.\")}),_=Q.object({method:Q.literal(\"ui/resource-teardown\"),params:Q.object({})}),e=Q.record(Q.string(),Q.unknown()),q=Q.object({text:Q.object({}).optional().describe(\"Host supports text content blocks.\"),image:Q.object({}).optional().describe(\"Host supports image content blocks.\"),audio:Q.object({}).optional().describe(\"Host supports audio content blocks.\"),resource:Q.object({}).optional().describe(\"Host supports resource content blocks.\"),resourceLink:Q.object({}).optional().describe(\"Host supports resource link content blocks.\"),structuredContent:Q.object({}).optional().describe(\"Host supports structured content.\")}),y=Q.object({experimental:Q.object({}).optional().describe(\"Experimental features (structure TBD).\"),openLinks:Q.object({}).optional().describe(\"Host supports opening external URLs.\"),downloadFile:Q.object({}).optional().describe(\"Host supports file downloads via ui/download-file.\"),serverTools:Q.object({listChanged:Q.boolean().optional().describe(\"Host supports tools/list_changed notifications.\")}).optional().describe(\"Host can proxy tool calls to the MCP server.\"),serverResources:Q.object({listChanged:Q.boolean().optional().describe(\"Host supports resources/list_changed notifications.\")}).optional().describe(\"Host can proxy resource reads to the MCP server.\"),logging:Q.object({}).optional().describe(\"Host accepts log messages.\"),sandbox:Q.object({permissions:K.optional().describe(\"Permissions granted by the host (camera, microphone, geolocation).\"),csp:B.optional().describe(\"CSP domains approved by the host.\")}).optional().describe(\"Sandbox configuration applied by the host.\"),updateModelContext:q.optional().describe(\"Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns.\"),message:q.optional().describe(\"Host supports receiving content messages (ui/message) from the view.\")}),u=Q.object({experimental:Q.object({}).optional().describe(\"Experimental features (structure TBD).\"),tools:Q.object({listChanged:Q.boolean().optional().describe(\"App supports tools/list_changed notifications.\")}).optional().describe(\"App exposes MCP-style tools that the host can call.\"),availableDisplayModes:Q.array(L).optional().describe(\"Display modes the app supports.\")}),QQ=Q.object({method:Q.literal(\"ui/notifications/initialized\"),params:Q.object({}).optional()}),ZQ=Q.object({csp:B.optional().describe(\"Content Security Policy configuration for UI resources.\"),permissions:K.optional().describe(\"Sandbox permissions requested by the UI resource.\"),domain:Q.string().optional().describe(`Dedicated origin for view sandbox.\n\nUseful when views need stable, dedicated origins for OAuth callbacks, CORS policies, or API key allowlists.\n\n**Host-dependent:** The format and validation rules for this field are determined by each host. Servers MUST consult host-specific documentation for the expected domain format. Common patterns include:\n- Hash-based subdomains (e.g., \\`{hash}.claudemcpcontent.com\\`)\n- URL-derived subdomains (e.g., \\`www-example-com.oaiusercontent.com\\`)\n\nIf omitted, host uses default sandbox origin (typically per-conversation).`),prefersBorder:Q.boolean().optional().describe(`Visual boundary preference - true if view prefers a visible border.\n\nBoolean requesting whether a visible border and background is provided by the host. Specifying an explicit value for this is recommended because hosts' defaults may vary.\n\n- \\`true\\`: request visible border + background\n- \\`false\\`: request no visible border + background\n- omitted: host decides border`)}),$Q=Q.object({method:Q.literal(\"ui/request-display-mode\"),params:Q.object({mode:L.describe(\"The display mode being requested.\")})}),T=Q.object({mode:L.describe(\"The display mode that was actually set. May differ from requested if not supported.\")}).passthrough(),f=Q.union([Q.literal(\"model\"),Q.literal(\"app\")]).describe(\"Tool visibility scope - who can access the tool.\"),JQ=Q.object({resourceUri:Q.string().optional(),visibility:Q.array(f).optional().describe(`Who can access this tool. Default: [\"model\", \"app\"]\n- \"model\": Tool visible to and callable by the agent\n- \"app\": Tool callable by the app from this server only`)}),kQ=Q.object({mimeTypes:Q.array(Q.string()).optional().describe('Array of supported MIME types for UI resources.\\nMust include `\"text/html;profile=mcp-app\"` for MCP Apps support.')}),XQ=Q.object({method:Q.literal(\"ui/download-file\"),params:Q.object({contents:Q.array(Q.union([p,r])).describe(\"Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.\")})}),VQ=Q.object({method:Q.literal(\"ui/message\"),params:Q.object({role:Q.literal(\"user\").describe('Message role, currently only \"user\" is supported.'),content:Q.array(x).describe(\"Message content blocks (text, image, etc.).\")})}),DQ=Q.object({method:Q.literal(\"ui/notifications/sandbox-resource-ready\"),params:Q.object({html:Q.string().describe(\"HTML content to load into the inner iframe.\"),sandbox:Q.string().optional().describe(\"Optional override for the inner iframe's sandbox attribute.\"),csp:B.optional().describe(\"CSP configuration from resource metadata.\"),permissions:K.optional().describe(\"Sandbox permissions from resource metadata.\")})}),U=Q.object({method:Q.literal(\"ui/notifications/tool-result\"),params:c.describe(\"Standard MCP tool execution result.\")}),k=Q.object({toolInfo:Q.object({id:l.optional().describe(\"JSON-RPC id of the tools/call request.\"),tool:n.describe(\"Tool definition including name, inputSchema, etc.\")}).optional().describe(\"Metadata of the tool call that instantiated this App.\"),theme:b.optional().describe(\"Current color theme preference.\"),styles:C.optional().describe(\"Style configuration for theming the app.\"),displayMode:L.optional().describe(\"How the UI is currently displayed.\"),availableDisplayModes:Q.array(L).optional().describe(\"Display modes the host supports.\"),containerDimensions:Q.union([Q.object({height:Q.number().describe(\"Fixed container height in pixels.\")}),Q.object({maxHeight:Q.union([Q.number(),Q.undefined()]).optional().describe(\"Maximum container height in pixels.\")})]).and(Q.union([Q.object({width:Q.number().describe(\"Fixed container width in pixels.\")}),Q.object({maxWidth:Q.union([Q.number(),Q.undefined()]).optional().describe(\"Maximum container width in pixels.\")})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other\ncontainer holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:Q.string().optional().describe(\"User's language and region preference in BCP 47 format.\"),timeZone:Q.string().optional().describe(\"User's timezone in IANA format.\"),userAgent:Q.string().optional().describe(\"Host application identifier.\"),platform:Q.union([Q.literal(\"web\"),Q.literal(\"desktop\"),Q.literal(\"mobile\")]).optional().describe(\"Platform type for responsive design decisions.\"),deviceCapabilities:Q.object({touch:Q.boolean().optional().describe(\"Whether the device supports touch input.\"),hover:Q.boolean().optional().describe(\"Whether the device supports hover interactions.\")}).optional().describe(\"Device input capabilities.\"),safeAreaInsets:Q.object({top:Q.number().describe(\"Top safe area inset in pixels.\"),right:Q.number().describe(\"Right safe area inset in pixels.\"),bottom:Q.number().describe(\"Bottom safe area inset in pixels.\"),left:Q.number().describe(\"Left safe area inset in pixels.\")}).optional().describe(\"Mobile safe area boundaries in pixels.\")}).passthrough(),E=Q.object({method:Q.literal(\"ui/notifications/host-context-changed\"),params:k.describe(\"Partial context update containing only changed fields.\")}),LQ=Q.object({method:Q.literal(\"ui/update-model-context\"),params:Q.object({content:Q.array(x).optional().describe(\"Context content blocks (text, image, etc.).\"),structuredContent:Q.record(Q.string(),Q.unknown().describe(\"Structured content for machine-readable context data.\")).optional().describe(\"Structured content for machine-readable context data.\")})}),GQ=Q.object({method:Q.literal(\"ui/initialize\"),params:Q.object({appInfo:S.describe(\"App identification (name and version).\"),appCapabilities:u.describe(\"Features and capabilities this app provides.\"),protocolVersion:Q.string().describe(\"Protocol version this app supports.\")})}),R=Q.object({protocolVersion:Q.string().describe('Negotiated protocol version string (e.g., \"2025-11-21\").'),hostInfo:S.describe(\"Host application identification and version.\"),hostCapabilities:y.describe(\"Features and capabilities provided by the host.\"),hostContext:k.describe(\"Rich context about the host environment.\")}).passthrough();var v=\"ui/resourceUri\",d=\"text/html;profile=mcp-app\";class qQ extends WQ{_appInfo;_capabilities;options;_hostCapabilities;_hostInfo;_hostContext;constructor(Z,$={},J={autoResize:!0}){super(J);this._appInfo=Z;this._capabilities=$;this.options=J;this.setRequestHandler(FQ,(X)=>{return console.log(\"Received ping:\",X.params),{}}),this.onhostcontextchanged=()=>{}}getHostCapabilities(){return this._hostCapabilities}getHostVersion(){return this._hostInfo}getHostContext(){return this._hostContext}set ontoolinput(Z){this.setNotificationHandler(A,($)=>Z($.params))}set ontoolinputpartial(Z){this.setNotificationHandler(P,($)=>Z($.params))}set ontoolresult(Z){this.setNotificationHandler(U,($)=>Z($.params))}set ontoolcancelled(Z){this.setNotificationHandler(H,($)=>Z($.params))}set onhostcontextchanged(Z){this.setNotificationHandler(E,($)=>{this._hostContext={...this._hostContext,...$.params},Z($.params)})}set onteardown(Z){this.setRequestHandler(_,($,J)=>Z($.params,J))}set oncalltool(Z){this.setRequestHandler(jQ,($,J)=>Z($.params,J))}set onlisttools(Z){this.setRequestHandler(YQ,($,J)=>Z($.params,J))}assertCapabilityForMethod(Z){}assertRequestHandlerCapability(Z){switch(Z){case\"tools/call\":case\"tools/list\":if(!this._capabilities.tools)throw Error(`Client does not support tool capability (required for ${Z})`);return;case\"ping\":case\"ui/resource-teardown\":return;default:throw Error(`No handler for method ${Z} registered`)}}assertNotificationCapability(Z){}assertTaskCapability(Z){throw Error(\"Tasks are not supported in MCP Apps\")}assertTaskHandlerCapability(Z){throw Error(\"Task handlers are not supported in MCP Apps\")}async callServerTool(Z,$){if(typeof Z===\"string\")throw Error(`callServerTool() expects an object as its first argument, but received a string (\"${Z}\"). Did you mean: callServerTool({ name: \"${Z}\", arguments: { ... } })?`);return await this.request({method:\"tools/call\",params:Z},BQ,$)}async readServerResource(Z,$){return await this.request({method:\"resources/read\",params:Z},zQ,$)}async listServerResources(Z,$){return await this.request({method:\"resources/list\",params:Z},NQ,$)}sendMessage(Z,$){return this.request({method:\"ui/message\",params:Z},w,$)}sendLog(Z){return this.notification({method:\"notifications/message\",params:Z})}updateModelContext(Z,$){return this.request({method:\"ui/update-model-context\",params:Z},KQ,$)}openLink(Z,$){return this.request({method:\"ui/open-link\",params:Z},O,$)}sendOpenLink=this.openLink;downloadFile(Z,$){return this.request({method:\"ui/download-file\",params:Z},I,$)}requestDisplayMode(Z,$){return this.request({method:\"ui/request-display-mode\",params:Z},T,$)}sendSizeChanged(Z){return this.notification({method:\"ui/notifications/size-changed\",params:Z})}setupSizeChangedNotifications(){let Z=!1,$=0,J=0,X=()=>{if(Z)return;Z=!0,requestAnimationFrame(()=>{Z=!1;let V=document.documentElement,G=V.style.width,W=V.style.height;V.style.width=\"fit-content\",V.style.height=\"max-content\";let M=V.getBoundingClientRect();V.style.width=G,V.style.height=W;let h=window.innerWidth-V.clientWidth,N=Math.ceil(M.width+h),Y=Math.ceil(M.height);if(N!==$||Y!==J)$=N,J=Y,this.sendSizeChanged({width:N,height:Y})})};X();let D=new ResizeObserver(X);return D.observe(document.documentElement),D.observe(document.body),()=>D.disconnect()}async connect(Z=new j(window.parent,window.parent),$){if(this.transport)throw Error(\"App is already connected. Call close() before connecting again.\");await super.connect(Z);try{let J=await this.request({method:\"ui/initialize\",params:{appCapabilities:this._capabilities,appInfo:this._appInfo,protocolVersion:F}},R,$);if(J===void 0)throw Error(`Server sent invalid initialize result: ${J}`);if(this._hostCapabilities=J.hostCapabilities,this._hostInfo=J.hostInfo,this._hostContext=J.hostContext,await this.notification({method:\"ui/notifications/initialized\"}),this.options?.autoResize)this.setupSizeChangedNotifications()}catch(J){throw this.close(),J}}}function uZ(Z,$,J,X){let D=J._meta,V=D.ui,G=D[v],W=D;if(V?.resourceUri&&!G)W={...D,[v]:V.resourceUri};else if(G&&!V?.resourceUri)W={...D,ui:{...V,resourceUri:G}};return Z.registerTool($,{...J,_meta:W},X)}function fZ(Z,$,J,X,D){return Z.registerResource($,J,{mimeType:d,...X},D)}var OQ=\"io.modelcontextprotocol/ui\";function dZ(Z){if(!Z)return;return Z.extensions?.[OQ]}export{uZ as registerAppTool,fZ as registerAppResource,dZ as getUiCapability,v as RESOURCE_URI_META_KEY,d as RESOURCE_MIME_TYPE,OQ as EXTENSION_ID};\n","import { createServer, type IncomingMessage, type ServerResponse } from 'node:http';\nimport { URL } from 'node:url';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { FAVICON_BASE64, FAVICON_BUFFER } from './favicon.js';\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport { randomUUID } from 'node:crypto';\nimport { registerAppTool, RESOURCE_MIME_TYPE } from '@modelcontextprotocol/ext-apps/server';\nimport type { RegisteredResource, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nimport { z } from 'zod';\nimport { type MCPServerConfig, type MCPServerHandle, type SimulationWithDist } from './types.js';\n\nexport type { MCPServerConfig, MCPServerHandle, SimulationWithDist } from './types.js';\n\n// Dev server URLs for Vite HMR (localhost only — used for direct connections like ChatGPT)\nconst LOCAL_DEV_SERVER_URL = 'http://localhost:8000';\nconst LOCAL_HMR_WS_URL = 'ws://localhost:24678';\n\n/**\n * Detect whether this request needs pre-built HTML (no Vite HMR).\n *\n * Claude's iframe sandbox blocks HTTP script sources, so it can't load from the\n * local Vite dev server. We detect Claude by its user-agent and serve the\n * self-contained production build instead.\n *\n * ChatGPT also connects through tunnels but its browser can reach localhost via\n * the local-network-access permission, so it gets Vite HMR.\n */\nfunction needsProdBuild(headers: Record<string, string | string[] | undefined>): boolean {\n const ua = headers['user-agent'];\n const userAgent = typeof ua === 'string' ? ua : Array.isArray(ua) ? ua[0] : '';\n return /claude/i.test(userAgent ?? '');\n}\n\n/**\n * Read pre-built resource HTML (production mode).\n * The HTML file is generated by `sunpeak build` with JS and CSS inlined.\n */\nfunction readResourceHtmlProd(distPath: string): string {\n const htmlPath = path.resolve(distPath);\n\n if (!fs.existsSync(htmlPath)) {\n throw new Error(\n `Resource HTML file not found at ${htmlPath}. Run \"sunpeak build\" to generate the built app.`\n );\n }\n\n return fs.readFileSync(htmlPath, 'utf8');\n}\n\n/**\n * Generate HTML that loads from Vite dev server with HMR.\n * Used for direct connections (e.g. ChatGPT connecting to localhost).\n */\nfunction getViteResourceHtml(srcPath: string): string {\n // Extract component name from path:\n // /src/resources/albums/albums.tsx -> AlbumsResource\n const rawFileName = srcPath.split('/').pop() ?? '';\n const fileName = rawFileName.replace(/\\.tsx$/, '');\n const componentName =\n fileName\n .split('-')\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join('') + 'Resource';\n\n const devServerUrl = LOCAL_DEV_SERVER_URL;\n\n // Encode srcPath and componentName for the virtual entry module\n const entryParams = new URLSearchParams({ src: srcPath, component: componentName });\n // Vite serves virtual modules via /@id/ prefix\n const virtualModuleUrl = `${devServerUrl}/@id/virtual:sunpeak-entry?${entryParams.toString()}`;\n\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</head>\n<body>\n <script type=\"module\">\n import { injectIntoGlobalHook } from \"${devServerUrl}/@react-refresh\";\n injectIntoGlobalHook(window);\n window.$RefreshReg$ = () => {};\n window.$RefreshSig$ = () => (type) => type;\n window.__vite_plugin_react_preamble_installed__ = true;\n </script>\n <script type=\"module\" src=\"${devServerUrl}/@vite/client\"></script>\n <script type=\"module\">\n (async () => {\n if (!navigator.permissions?.query) return;\n const protocol = window.location.protocol;\n if (protocol !== 'http:' && protocol !== 'https:') return;\n const host = window.location.hostname;\n const isLoopback = host === 'localhost' || /^127\\\\.(\\\\d{1,3})\\\\.(\\\\d{1,3})\\\\.(\\\\d{1,3})$/.test(host) || host === '::1';\n if (isLoopback) return;\n try {\n const status = await navigator.permissions.query({ name: \"local-network-access\" });\n if (status.state === \"denied\") {\n document.getElementById('root').innerHTML = '<div style=\"background:#fef2f2;border:2px solid #ef4444;border-radius:8px;padding:16px;text-align:center;font-family:system-ui,sans-serif;\"><div style=\"color:#ef4444;font-size:18px;font-weight:600;margin-bottom:8px;\">Local network access permission is denied</div><div style=\"color:#ef4444;font-size:14px;\">Please enable it in your browser settings. <a href=\"https://developer.chrome.com/blog/local-network-access\" target=\"_blank\" style=\"color:#ef4444;text-decoration:underline;\">Learn more</a></div></div>';\n }\n } catch (e) {}\n })();\n </script>\n <div id=\"root\"></div>\n <script type=\"module\" src=\"${virtualModuleUrl}\"></script>\n</body>\n</html>`;\n}\n\n/**\n * Get resource HTML content.\n *\n * - Direct connections (ChatGPT): Vite dev server HTML with HMR\n * - Tunnel connections (Claude via ngrok): Pre-built HTML with everything inlined\n */\nfunction getResourceHtml(\n simulation: SimulationWithDist,\n viteMode: boolean,\n prodBuild: boolean\n): string {\n if (viteMode && simulation.srcPath && !prodBuild) {\n return getViteResourceHtml(simulation.srcPath);\n }\n return readResourceHtmlProd(simulation.distPath!);\n}\n\n/**\n * Inject localhost Vite dev server URLs into CSP metadata.\n * Only needed for direct connections where the iframe loads scripts from localhost.\n */\nfunction injectViteCSP(existingMeta: Record<string, unknown> | undefined): Record<string, unknown> {\n const meta = existingMeta ?? {};\n const ui = (meta.ui as Record<string, unknown>) ?? {};\n const csp = (ui.csp as Record<string, unknown>) ?? {};\n\n const existingResourceDomains = (csp.resourceDomains as string[]) ?? [];\n const resourceDomains = existingResourceDomains.includes(LOCAL_DEV_SERVER_URL)\n ? existingResourceDomains\n : [...existingResourceDomains, LOCAL_DEV_SERVER_URL];\n\n const existingConnectDomains = (csp.connectDomains as string[]) ?? [];\n const connectDomains = [...existingConnectDomains];\n if (!connectDomains.includes(LOCAL_DEV_SERVER_URL)) connectDomains.push(LOCAL_DEV_SERVER_URL);\n if (!connectDomains.includes(LOCAL_HMR_WS_URL)) connectDomains.push(LOCAL_HMR_WS_URL);\n\n return {\n ...meta,\n ui: {\n ...ui,\n csp: { ...csp, resourceDomains, connectDomains },\n },\n };\n}\n\ntype AppServerResult = {\n server: McpServer;\n resourceHandles: Map<string, RegisteredResource>;\n toolHandles: {\n handle: RegisteredTool;\n resourceName: string;\n toolMeta: Record<string, unknown>;\n }[];\n};\n\n// Server-startup timestamp for cache-busting resource URIs.\n// Stable within a dev server session (so ChatGPT cross-session reads work)\n// but changes on restart so Claude picks up rebuilt resources.\nconst startupTimestamp = Date.now().toString(36);\n\nfunction createAppServer(\n config: MCPServerConfig,\n simulations: SimulationWithDist[],\n viteMode: boolean\n): AppServerResult {\n const { name = 'sunpeak-app', version = '0.1.0' } = config;\n\n const mcpServer = new McpServer(\n {\n name,\n version,\n icons: [\n {\n src: `data:image/png;base64,${FAVICON_BASE64}`,\n mimeType: 'image/png',\n sizes: ['128x128'],\n },\n ],\n },\n { capabilities: { resources: {}, tools: {} } }\n );\n\n // Track registered resource URIs and tool names to avoid duplicate registration\n // (multiple simulations can share the same resource or tool, e.g. review-diff and review-post)\n const registeredUriSet = new Set<string>();\n const registeredToolNames = new Set<string>();\n const resourceHandles = new Map<string, RegisteredResource>();\n const toolHandles: AppServerResult['toolHandles'] = [];\n\n // Register each simulation's tool and resource\n for (const simulation of simulations) {\n const resource = simulation.resource;\n const tool = simulation.tool;\n const toolResult = simulation.toolResult ?? { structuredContent: null };\n const toolMeta = (tool._meta as Record<string, unknown>) ?? {};\n\n if (resource) {\n // ── UI tool: register resource + tool via ext-apps helper ──\n\n // Derive a URI from the resource name with a startup timestamp for cache-busting.\n // Stable within a dev server session (ChatGPT reads URIs from tools/list in one\n // session and fetches content in another), but changes on restart so hosts like\n // Claude pick up rebuilt resources.\n const uri = (resource.uri as string) ?? `ui://${resource.name as string}-${startupTimestamp}`;\n const resourceName = resource.name as string;\n const resourceMeta = (resource._meta as Record<string, unknown>) ?? {};\n\n // Register the resource directly via SDK (not ext-apps wrapper) to capture the\n // RegisteredResource handle for URI updates on rebuild (cache-busting).\n if (!registeredUriSet.has(uri)) {\n registeredUriSet.add(uri);\n const listMeta = viteMode ? injectViteCSP(resourceMeta) : resourceMeta;\n const handle = mcpServer.registerResource(\n resourceName,\n uri,\n {\n mimeType: RESOURCE_MIME_TYPE,\n description: resource.description as string | undefined,\n _meta: listMeta,\n },\n async (\n readUri: URL,\n extra: { requestInfo?: { headers?: Record<string, string | string[] | undefined> } }\n ) => {\n // Claude's sandbox blocks HTTP script sources, so serve pre-built HTML.\n // ChatGPT can reach localhost, so it gets Vite HMR.\n const prodBuild = needsProdBuild(\n (extra?.requestInfo?.headers as Record<string, string | string[] | undefined>) ?? {}\n );\n const readMeta = viteMode && !prodBuild ? injectViteCSP(resourceMeta) : resourceMeta;\n\n let content: string;\n try {\n content = getResourceHtml(simulation, viteMode, prodBuild);\n } catch (error) {\n console.error(`[MCP] ReadResource error for ${readUri.href}:`, error);\n throw error;\n }\n const sizeKB = (content.length / 1024).toFixed(1);\n const servedVite = viteMode && simulation.srcPath && !prodBuild;\n console.log(\n `[MCP] ReadResource: ${readUri.href} → ${sizeKB}KB${servedVite ? ' (vite)' : ' (built)'}`\n );\n\n return {\n contents: [\n {\n // Use readUri (not closure variable) so the response URI matches after updates\n uri: readUri.href,\n mimeType: RESOURCE_MIME_TYPE,\n text: content,\n _meta: readMeta,\n },\n ],\n };\n }\n );\n resourceHandles.set(resourceName, handle);\n }\n\n // Register the tool using ext-apps helper (normalizes ui/resourceUri metadata).\n // Capture the returned RegisteredTool handle for metadata updates on rebuild.\n // Note: inputSchema from simulation is JSON Schema, not Zod, so we omit it here\n // (simulation mode doesn't validate inputs - just logs what was called)\n const fullToolMeta = {\n ...toolMeta,\n ui: {\n resourceUri: uri,\n // Preserve tool visibility from simulation metadata if declared\n ...((toolMeta.ui as Record<string, unknown>)?.visibility\n ? { visibility: (toolMeta.ui as Record<string, unknown>).visibility }\n : {}),\n },\n };\n const toolHandle = registerAppTool(\n mcpServer,\n tool.name as string,\n {\n description: tool.description as string | undefined,\n _meta: fullToolMeta,\n },\n async (extra) => {\n // Access arguments from request context (no inputSchema = no parsed args)\n const args =\n (extra as { request?: { params?: { arguments?: Record<string, unknown> } } }).request\n ?.params?.arguments ?? {};\n const argKeys = Object.keys(args);\n const argsStr = argKeys.length > 0 ? `{${argKeys.join(', ')}}` : '{}';\n\n // Use real handler when available (Prod Tools mode), fall back to simulation mock\n const realHandler = simulation.handler;\n if (realHandler) {\n console.log(`[MCP] CallTool: ${tool.name}${argsStr} → live handler`);\n try {\n const result = await (\n realHandler as (args: Record<string, unknown>, extra: unknown) => unknown\n )(args, extra);\n if (typeof result === 'string') {\n return { content: [{ type: 'text' as const, text: result }] };\n }\n return result as { content: { type: 'text'; text: string }[] };\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error(`[MCP] CallTool error (${tool.name}): ${msg}`);\n return {\n content: [{ type: 'text' as const, text: `Error: ${msg}` }],\n isError: true,\n };\n }\n }\n\n const hasStructuredContent = toolResult?.structuredContent != null;\n console.log(\n `[MCP] CallTool: ${tool.name}${argsStr} → ${hasStructuredContent ? 'structured' : 'text'}`\n );\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Rendered ${tool.description}!`,\n },\n ],\n structuredContent:\n (toolResult?.structuredContent as Record<string, unknown>) ?? undefined,\n };\n }\n );\n toolHandles.push({ handle: toolHandle, resourceName, toolMeta: fullToolMeta });\n } else if (!registeredToolNames.has(tool.name as string)) {\n registeredToolNames.add(tool.name as string);\n // ── Plain tool (no UI): register directly via mcpServer ──\n // Use the real handler if available (loaded via Vite SSR in dev mode),\n // otherwise fall back to mock response from simulation data.\n //\n // Use a passthrough Zod schema so the MCP SDK passes args to the handler.\n // We can't use the tool's own Zod schema because it's loaded via Vite SSR\n // from a different Zod module instance, causing isZodSchemaInstance checks\n // to fail. A passthrough schema from the same Zod instance as the SDK\n // accepts any arguments and forwards them to the handler.\n const realHandler = simulation.handler;\n mcpServer.registerTool(\n tool.name as string,\n {\n description: tool.description as string | undefined,\n // Use passthrough so the SDK passes all args to the handler without stripping.\n // We can't use the tool's own Zod schema because it's loaded via Vite SSR\n // from a different Zod module instance, causing isZodSchemaInstance checks to fail.\n inputSchema: z.object({}).passthrough(),\n annotations: tool.annotations as Record<string, unknown> | undefined,\n _meta: toolMeta,\n },\n async (args, extra) => {\n const argKeys = Object.keys(args);\n const argsStr = argKeys.length > 0 ? `{${argKeys.join(', ')}}` : '{}';\n console.log(`[MCP] CallTool: ${tool.name}${argsStr}`);\n\n if (realHandler) {\n try {\n const result = await realHandler(args, extra);\n if (typeof result === 'string') {\n return { content: [{ type: 'text' as const, text: result }] };\n }\n return result as { content: { type: 'text'; text: string }[] };\n } catch (error) {\n console.error(`[MCP] Handler error for ${tool.name}:`, error);\n return {\n isError: true,\n content: [\n {\n type: 'text' as const,\n text: `Error: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n };\n }\n }\n\n // Fallback: mock response from simulation data\n return {\n content: [\n {\n type: 'text' as const,\n text: `Called ${tool.description}!`,\n },\n ],\n structuredContent:\n (toolResult?.structuredContent as Record<string, unknown>) ?? undefined,\n };\n }\n );\n }\n }\n\n const uiToolCount = simulations.filter((s) => s.resource).length;\n const plainToolCount = simulations.length - uiToolCount;\n console.log(\n `[MCP] Registered ${simulations.length} tool(s) (${uiToolCount} UI, ${plainToolCount} plain), ${registeredUriSet.size} resource(s)`\n );\n\n return { server: mcpServer, resourceHandles, toolHandles };\n}\n\ntype SessionRecord = {\n server: McpServer;\n transport: StreamableHTTPServerTransport;\n /** True for localhost connections (ChatGPT, simulator) — they use Vite HMR. */\n isLocal: boolean;\n lastActivity: number;\n /** Resource handles for URI cache-busting on rebuild. Keyed by resource name. */\n resourceHandles: Map<string, RegisteredResource>;\n /** Tool handles for metadata cache-busting on rebuild. */\n toolHandles: AppServerResult['toolHandles'];\n};\n\n/** How long an idle session lives before being cleaned up (5 minutes). */\nconst SESSION_IDLE_TIMEOUT_MS = 5 * 60 * 1000;\n\n/**\n * Check if the request originates from localhost.\n * Local connections (ChatGPT, simulator) use Vite HMR for live content updates.\n */\nfunction isLocalConnection(req: IncomingMessage): boolean {\n const addr = req.socket.remoteAddress;\n return addr === '127.0.0.1' || addr === '::1' || addr === '::ffff:127.0.0.1';\n}\n\nconst sessions = new Map<string, SessionRecord>();\n\nconst MCP_PATH = '/mcp';\n\nconst CORS_HEADERS = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers':\n 'content-type, accept, authorization, mcp-session-id, ngrok-skip-browser-warning',\n 'Access-Control-Expose-Headers': 'mcp-session-id',\n} as const;\n\n// Periodically clean up idle sessions.\n// Closing the server triggers transport.onclose which handles session map cleanup.\nconst cleanupInterval = setInterval(() => {\n const now = Date.now();\n for (const [id, session] of sessions) {\n if (now - session.lastActivity > SESSION_IDLE_TIMEOUT_MS) {\n console.log(`[MCP] Session expired: ${id.substring(0, 8)}...`);\n void session.server.close();\n }\n }\n}, 60_000);\ncleanupInterval.unref();\n\nasync function handleMcpRequest(\n req: IncomingMessage,\n res: ServerResponse,\n config: MCPServerConfig,\n simulations: SimulationWithDist[],\n viteMode: boolean\n) {\n // Set CORS headers for all MCP responses\n for (const [key, value] of Object.entries(CORS_HEADERS)) {\n res.setHeader(key, value);\n }\n\n // Parse body for POST requests\n let parsedBody: unknown;\n if (req.method === 'POST') {\n const chunks: Buffer[] = [];\n await new Promise<void>((resolve, reject) => {\n req.on('data', (chunk: Buffer | string) => {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk as string));\n });\n req.on('end', resolve);\n req.on('error', reject);\n });\n const rawBody = Buffer.concat(chunks).toString('utf8');\n try {\n parsedBody = JSON.parse(rawBody);\n const parsed = parsedBody as { method?: string; params?: Record<string, unknown> };\n if (parsed.method) {\n const sid = req.headers['mcp-session-id'] as string | undefined;\n const sidStr = sid ? ` (${sid.substring(0, 8)}...)` : '';\n const extra =\n parsed.method === 'resources/read' ? ` uri=${JSON.stringify(parsed.params?.uri)}` : '';\n console.log(`[MCP] ← ${parsed.method}${extra}${sidStr}`);\n }\n } catch {\n res.writeHead(400).end('Invalid JSON');\n return;\n }\n }\n\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n // Route to existing session\n if (sessionId) {\n const session = sessions.get(sessionId);\n if (!session) {\n res.writeHead(404).end('Unknown session');\n return;\n }\n session.lastActivity = Date.now();\n await session.transport.handleRequest(req, res, parsedBody);\n return;\n }\n\n // New session (POST without session ID = initialization)\n if (req.method === 'POST') {\n const isLocal = isLocalConnection(req);\n const { server, resourceHandles, toolHandles } = createAppServer(config, simulations, viteMode);\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n onsessioninitialized: (id) => {\n sessions.set(id, {\n server,\n transport,\n isLocal,\n lastActivity: Date.now(),\n resourceHandles,\n toolHandles,\n });\n const origin = isLocal ? 'local' : 'tunnel';\n console.log(\n `[MCP] Session started: ${id.substring(0, 8)}... (${origin}, ${sessions.size} active)`\n );\n },\n onsessionclosed: (id) => {\n sessions.delete(id);\n console.log(`[MCP] Session closed: ${id.substring(0, 8)}... (${sessions.size} active)`);\n },\n });\n\n transport.onerror = (error: Error) => {\n // Claude's client probes with an Accept header that doesn't include text/event-stream,\n // then retries correctly. Downgrade this expected negotiation error to a warning.\n if (error.message?.includes('Not Acceptable')) {\n console.warn(`[MCP] Accept header negotiation (expected with some clients)`);\n return;\n }\n const id = transport.sessionId;\n console.error(`[MCP] Transport error${id ? ` (${id.substring(0, 8)}...)` : ''}:`, error);\n };\n\n transport.onclose = () => {\n const id = transport.sessionId;\n if (id && sessions.has(id)) {\n sessions.delete(id);\n console.log(`[MCP] Session closed: ${id.substring(0, 8)}... (${sessions.size} active)`);\n }\n };\n\n await server.connect(transport);\n await transport.handleRequest(req, res, parsedBody);\n return;\n }\n\n // No session ID and not POST → invalid\n res.writeHead(400).end('Bad Request: session ID required');\n}\n\n// Type for Vite dev server (minimal interface we need)\ninterface ViteDevServer {\n middlewares: {\n (req: IncomingMessage, res: ServerResponse, next?: () => void): void;\n };\n ws: {\n handleUpgrade: (\n request: IncomingMessage,\n socket: import('node:stream').Duplex,\n head: Buffer\n ) => void;\n };\n}\n\n/**\n * Run the MCP server with the specified configuration.\n *\n * @param config - Server configuration with simulations.\n * @returns Handle for controlling the running server (e.g. cache invalidation).\n */\nexport function runMCPServer(config: MCPServerConfig): MCPServerHandle {\n const portEnv = Number(process.env.PORT ?? 8000);\n const port = config.port ?? (Number.isFinite(portEnv) ? portEnv : 8000);\n const { simulations } = config;\n\n // Check if Vite dev server is provided\n const viteServer = config.viteServer as ViteDevServer | undefined;\n const viteMode = !!viteServer;\n\n const httpServer = createServer(async (req: IncomingMessage, res: ServerResponse) => {\n if (!req.url) {\n res.writeHead(400).end('Missing URL');\n return;\n }\n\n const url = new URL(req.url, `http://${req.headers.host ?? 'localhost'}`);\n\n // CORS preflight for all routes\n if (req.method === 'OPTIONS') {\n res.writeHead(204, CORS_HEADERS);\n res.end();\n return;\n }\n\n // Root path (ChatGPT checks this before fetching favicon)\n if (req.method === 'GET' && url.pathname === '/') {\n res.writeHead(200, {\n 'Content-Type': 'text/html',\n 'Access-Control-Allow-Origin': '*',\n });\n res.end(`<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\" />\n<link rel=\"icon\" type=\"image/png\" href=\"/favicon.ico\" />\n<title>Sunpeak MCP Server</title>\n</head>\n<body><h1>Sunpeak MCP Server</h1><p>Connect via <a href=\"/mcp\">/mcp</a></p></body>\n</html>`);\n return;\n }\n\n // Favicon endpoint\n if (req.method === 'GET' && url.pathname === '/favicon.ico') {\n res.writeHead(200, {\n 'Content-Type': 'image/png',\n 'Content-Length': FAVICON_BUFFER.length,\n 'Cache-Control': 'public, max-age=86400',\n 'Access-Control-Allow-Origin': '*',\n });\n res.end(FAVICON_BUFFER);\n return;\n }\n\n // MCP endpoint (Streamable HTTP transport)\n if (url.pathname === MCP_PATH) {\n await handleMcpRequest(req, res, config, simulations, viteMode);\n return;\n }\n\n // If Vite server is available, delegate all other requests to it\n if (viteServer) {\n // Add CORS headers for Vite-served content (needed for cross-origin widget loading)\n res.setHeader('Access-Control-Allow-Origin', '*');\n res.setHeader('Access-Control-Allow-Headers', 'content-type, ngrok-skip-browser-warning');\n viteServer.middlewares(req, res);\n return;\n }\n\n // No Vite server, return 404 for non-MCP routes\n console.log(`[HTTP] ${req.method} ${url.pathname} → 404`);\n res.writeHead(404).end('Not Found');\n });\n\n // Handle WebSocket upgrades for Vite HMR\n if (viteServer) {\n httpServer.on('upgrade', (request, socket, head) => {\n // Forward all WebSocket upgrades to Vite (it handles /@vite/ws)\n viteServer.ws.handleUpgrade(request, socket, head);\n });\n }\n\n httpServer.on('clientError', (err: Error, socket) => {\n console.error('HTTP client error', err);\n socket.end('HTTP/1.1 400 Bad Request\\r\\n\\r\\n');\n });\n\n httpServer.listen(port, () => {\n console.log(`Sunpeak MCP server listening on http://localhost:${port}`);\n console.log(` MCP endpoint: http://localhost:${port}${MCP_PATH}`);\n if (viteMode) {\n console.log(` Vite HMR: enabled (source files served with hot reload)`);\n }\n });\n\n // Graceful shutdown handler\n const shutdown = async () => {\n console.log('\\nShutting down MCP server...');\n\n httpServer.close(() => {\n console.log('MCP server closed');\n process.exit(0);\n });\n\n // Force close after 5 seconds if graceful shutdown fails\n setTimeout(() => {\n console.error('Force closing MCP server');\n process.exit(1);\n }, 5000);\n };\n\n process.on('SIGTERM', () => void shutdown());\n process.on('SIGINT', () => void shutdown());\n\n return {\n invalidateResources() {\n if (sessions.size === 0) return;\n\n const timestamp = Date.now().toString(36);\n for (const [, session] of sessions) {\n // Update resource URIs with timestamp to force cache-busting.\n // .update() automatically sends resources/list_changed notification.\n for (const [name, handle] of session.resourceHandles) {\n handle.update({ uri: `ui://${name}-${timestamp}` });\n }\n // Update tool metadata to reference the new resource URIs.\n // .update() automatically sends tools/list_changed notification.\n for (const { handle, resourceName, toolMeta } of session.toolHandles) {\n const newUri = `ui://${resourceName}-${timestamp}`;\n handle.update({\n _meta: {\n ...toolMeta,\n ui: { ...(toolMeta.ui as Record<string, unknown>), resourceUri: newUri },\n 'ui/resourceUri': newUri,\n },\n });\n }\n }\n console.log(`[MCP] Cache-busted ${sessions.size} session(s) with timestamp ${timestamp}`);\n },\n };\n}\n","import { createServer, type IncomingMessage, type ServerResponse } from 'node:http';\nimport { URL } from 'node:url';\nimport { randomUUID } from 'node:crypto';\n\nimport { FAVICON_BASE64, FAVICON_BUFFER } from './favicon.js';\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport { WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js';\nimport {\n registerAppTool,\n registerAppResource,\n RESOURCE_MIME_TYPE,\n} from '@modelcontextprotocol/ext-apps/server';\n\nimport type { AuthInfo, CallToolResult, ToolHandlerExtra } from './types.js';\n\n// ============================================================================\n// Structured logging\n// ============================================================================\n\nlet jsonLogging = false;\n\n/**\n * Enable or disable structured JSON logging.\n *\n * When enabled, all server log messages are written as JSON lines to stdout/stderr,\n * making them easy to parse with log aggregation tools (Datadog, CloudWatch,\n * Loki, etc.).\n */\nexport function setJsonLogging(enabled: boolean): void {\n jsonLogging = enabled;\n}\n\nfunction log(level: 'info' | 'warn' | 'error', msg: string, extra?: Record<string, unknown>): void {\n if (jsonLogging) {\n const entry: Record<string, unknown> = {\n ts: new Date().toISOString(),\n level,\n msg,\n ...extra,\n };\n const line = JSON.stringify(entry) + '\\n';\n if (level === 'error') {\n process.stderr.write(line);\n } else {\n process.stdout.write(line);\n }\n } else {\n const prefix = '[MCP]';\n if (level === 'error') {\n console.error(extra ? `${prefix} ${msg} ${JSON.stringify(extra)}` : `${prefix} ${msg}`);\n } else if (level === 'warn') {\n console.warn(extra ? `${prefix} ${msg} ${JSON.stringify(extra)}` : `${prefix} ${msg}`);\n } else {\n console.log(extra ? `${prefix} ${msg} ${JSON.stringify(extra)}` : `${prefix} ${msg}`);\n }\n }\n}\n\n// ============================================================================\n// Public types\n// ============================================================================\n\n/**\n * A tool loaded from a compiled tool module (`dist/tools/*.js`).\n */\nexport interface ProductionTool {\n /** Tool name (derived from filename, e.g. 'show-albums') */\n name: string;\n /** Tool config from the `tool` export */\n tool: {\n resource?: string;\n title?: string;\n description?: string;\n annotations?: Record<string, unknown>;\n _meta?: Record<string, unknown>;\n };\n /** Zod shape from the `schema` export (passed to SDK as inputSchema) */\n schema?: Record<string, unknown>;\n /** Handler from the `default` export */\n handler: (\n args: Record<string, unknown>,\n extra: ToolHandlerExtra\n ) => CallToolResult | Promise<CallToolResult> | string | Promise<string>;\n}\n\n/**\n * A resource loaded from the build output (`dist/{name}/{name}.html` + `.json`).\n */\nexport interface ProductionResource {\n /** Resource name (from .json metadata) */\n name: string;\n /** Resource URI (from .json metadata, includes cache-bust timestamp) */\n uri: string;\n /** Pre-built HTML content (self-contained, JS+CSS inlined) */\n html: string;\n /** Resource _meta (CSP, permissions, domain, etc.) */\n _meta?: Record<string, unknown>;\n /** Resource description */\n description?: string;\n}\n\n/**\n * Auth function signature for `src/server.ts` (Node.js).\n * Called on every MCP request. Return AuthInfo to authenticate, null to reject (401).\n */\nexport type AuthFunction = (req: IncomingMessage) => Promise<AuthInfo | null> | AuthInfo | null;\n\n/**\n * Auth function signature for Web Standard handlers (Cloudflare Workers, Deno, Bun).\n */\nexport type WebAuthFunction = (req: Request) => Promise<AuthInfo | null> | AuthInfo | null;\n\n/**\n * Configuration for creating a production MCP server and Node.js handler.\n */\nexport interface ProductionServerConfig {\n /** Server name reported to hosts */\n name?: string;\n /** Server version reported to hosts */\n version?: string;\n /** Tool registrations with real handlers */\n tools: ProductionTool[];\n /** Resource registrations with pre-built HTML */\n resources: ProductionResource[];\n /** Auth function from server entry (populates extra.authInfo via req.auth) */\n auth?: AuthFunction;\n}\n\n/**\n * Configuration for creating a Web Standard MCP handler (serverless/edge).\n */\nexport interface WebHandlerConfig {\n /** Server name reported to hosts */\n name?: string;\n /** Server version reported to hosts */\n version?: string;\n /** Tool registrations with real handlers */\n tools: ProductionTool[];\n /** Resource registrations with pre-built HTML */\n resources: ProductionResource[];\n /** Auth function for Web Standard Request objects */\n auth?: WebAuthFunction;\n}\n\n// ============================================================================\n// MCP server creation\n// ============================================================================\n\n/**\n * Create an MCP server with production tool handlers and pre-built resources.\n *\n * Tools are registered with real Zod schemas (input validation) and handlers.\n * Resources serve pre-built HTML with their _meta preserved.\n */\nexport function createProductionMcpServer(config: ProductionServerConfig): McpServer {\n const { name = 'sunpeak-app', version = '0.1.0', tools, resources } = config;\n\n const mcpServer = new McpServer(\n {\n name,\n version,\n icons: [\n {\n src: `data:image/png;base64,${FAVICON_BASE64}`,\n mimeType: 'image/png',\n sizes: ['128x128'],\n },\n ],\n },\n { capabilities: { resources: {}, tools: {} } }\n );\n\n // Build resource lookup: resource name → ProductionResource\n const resourceByName = new Map<string, ProductionResource>();\n for (const res of resources) {\n resourceByName.set(res.name, res);\n }\n\n // Track registered resource URIs to avoid duplicates\n // (multiple tools can reference the same resource, e.g. review-diff and review-post)\n const registeredResources = new Set<string>();\n\n let toolCount = 0;\n\n for (const tool of tools) {\n // Build the handler callback (shared by UI and plain tools)\n const makeCallback = () => {\n return async (\n ...cbArgs: [Record<string, unknown>, ToolHandlerExtra] | [ToolHandlerExtra]\n ) => {\n const hasSchema = !!tool.schema;\n const args: Record<string, unknown> = hasSchema\n ? (cbArgs[0] as Record<string, unknown>)\n : {};\n const extra = (hasSchema ? cbArgs[1] : cbArgs[0]) as ToolHandlerExtra;\n\n const argKeys = Object.keys(args);\n const argsStr = argKeys.length > 0 ? `{${argKeys.join(', ')}}` : '{}';\n log('info', `CallTool: ${tool.name}${argsStr}`);\n\n const result = await tool.handler(args, extra);\n\n // Normalize string returns to CallToolResult\n if (typeof result === 'string') {\n return { content: [{ type: 'text' as const, text: result }] };\n }\n return result;\n };\n };\n\n const resourceName = tool.tool.resource;\n const res = resourceName ? resourceByName.get(resourceName) : undefined;\n\n if (resourceName && !res) {\n log('warn', `Resource \"${resourceName}\" not found for tool \"${tool.name}\". Skipping.`);\n continue;\n }\n\n if (res) {\n // ── UI tool: register resource + tool via ext-apps helper ──\n\n // Register resource (once per URI)\n if (!registeredResources.has(res.uri)) {\n registeredResources.add(res.uri);\n registerAppResource(\n mcpServer,\n res.name,\n res.uri,\n {\n description: res.description,\n _meta: res._meta,\n },\n async () => ({\n contents: [\n {\n uri: res.uri,\n mimeType: RESOURCE_MIME_TYPE,\n text: res.html,\n _meta: res._meta,\n },\n ],\n })\n );\n }\n\n // Register tool with UI metadata via registerAppTool\n const toolConfig: Record<string, unknown> = {\n title: tool.tool.title,\n description: tool.tool.description,\n annotations: tool.tool.annotations,\n ...(tool.schema ? { inputSchema: tool.schema } : {}),\n _meta: {\n ...tool.tool._meta,\n ui: {\n resourceUri: res.uri,\n ...((tool.tool._meta?.ui as Record<string, unknown>) ?? {}),\n },\n },\n };\n // Cast config and callback — tool modules are loaded dynamically at runtime,\n // so Zod shapes and callback generics can't be statically verified.\n registerAppTool(\n mcpServer,\n tool.name,\n toolConfig as Parameters<typeof registerAppTool>[2],\n makeCallback() as Parameters<typeof registerAppTool>[3]\n );\n } else {\n // ── Plain tool (no UI): register directly via mcpServer.tool() ──\n // Use the description + callback overload, with schema if available.\n // The mcpServer.tool() overloads are complex, so we call it dynamically.\n const cb = makeCallback();\n const toolArgs: unknown[] = [tool.name];\n if (tool.schema) {\n toolArgs.push(tool.schema);\n }\n toolArgs.push(async (...args: unknown[]) => {\n // Normalize to (args, extra) for the shared callback\n if (tool.schema) {\n return cb(args[0] as Record<string, unknown>, args[1] as ToolHandlerExtra);\n }\n return cb(args[0] as ToolHandlerExtra);\n });\n (mcpServer.tool as (...a: unknown[]) => unknown)(...toolArgs);\n }\n toolCount++;\n }\n\n const resourceCount = registeredResources.size;\n log('info', `Registered ${toolCount} tool(s) and ${resourceCount} resource(s)`);\n\n return mcpServer;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst MCP_PATH = '/mcp';\n\n/** How long an idle session lives before being cleaned up (5 minutes). */\nconst SESSION_IDLE_TIMEOUT_MS = 5 * 60 * 1000;\n\ninterface JsonRpcMessage {\n method: string;\n params?: Record<string, unknown>;\n}\n\nfunction isJsonRpcMessage(value: unknown): value is JsonRpcMessage {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as JsonRpcMessage).method === 'string'\n );\n}\n\nconst CORS_HEADERS = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers':\n 'content-type, accept, authorization, mcp-session-id, ngrok-skip-browser-warning',\n 'Access-Control-Expose-Headers': 'mcp-session-id',\n} as const;\n\n// ============================================================================\n// Composable Node.js MCP request handler (Streamable HTTP)\n// ============================================================================\n\n/**\n * Create a request handler that manages MCP sessions over Streamable HTTP.\n *\n * The returned handler responds to:\n * - `POST /mcp` — Initialize a session or send messages\n * - `GET /mcp` — Open an SSE stream for server-initiated notifications\n * - `DELETE /mcp` — Terminate a session\n * - `OPTIONS /mcp` — CORS preflight\n *\n * For any other request, the handler does nothing (doesn't write to `res`),\n * so callers can chain it with their own routing.\n *\n * @example\n * ```ts\n * import express from 'express';\n * import { createMcpHandler } from 'sunpeak/mcp';\n *\n * const app = express();\n * app.get('/health', (req, res) => res.json({ ok: true }));\n *\n * const mcpHandler = createMcpHandler({ tools, resources, auth });\n * app.use((req, res, next) => {\n * mcpHandler(req, res).then(() => {\n * if (!res.headersSent) next();\n * });\n * });\n *\n * app.listen(3000);\n * ```\n */\nexport function createMcpHandler(\n config: ProductionServerConfig\n): (req: IncomingMessage, res: ServerResponse) => Promise<void> {\n interface Session {\n server: McpServer;\n transport: StreamableHTTPServerTransport;\n lastActivity: number;\n }\n\n const sessions = new Map<string, Session>();\n const authFn = config.auth;\n\n // Periodically clean up idle sessions.\n // Closing the server triggers transport.onclose which handles session map cleanup.\n const cleanupInterval = setInterval(() => {\n const now = Date.now();\n for (const [id, session] of sessions) {\n if (now - session.lastActivity > SESSION_IDLE_TIMEOUT_MS) {\n log('info', `Session expired: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size - 1,\n });\n void session.server.close();\n }\n }\n }, 60_000);\n cleanupInterval.unref(); // Don't prevent process exit\n\n return async (req: IncomingMessage, res: ServerResponse): Promise<void> => {\n if (!req.url) return;\n\n const url = new URL(req.url, `http://${req.headers.host ?? 'localhost'}`);\n\n // Only handle /mcp path\n if (url.pathname !== MCP_PATH) return;\n\n // CORS preflight\n if (req.method === 'OPTIONS') {\n res.writeHead(204, CORS_HEADERS);\n res.end();\n return;\n }\n\n // Set CORS headers for all MCP responses\n for (const [key, value] of Object.entries(CORS_HEADERS)) {\n res.setHeader(key, value);\n }\n\n // Auth\n if (authFn) {\n const authInfo = await authFn(req);\n if (!authInfo) {\n res.writeHead(401, { 'WWW-Authenticate': 'Bearer' });\n res.end('Unauthorized');\n return;\n }\n (req as IncomingMessage & { auth?: AuthInfo }).auth = authInfo;\n }\n\n // Parse body for POST requests (needed for logging + transport)\n let parsedBody: unknown;\n if (req.method === 'POST') {\n const chunks: Buffer[] = [];\n await new Promise<void>((resolve, reject) => {\n req.on('data', (chunk: Buffer | string) => {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk as string));\n });\n req.on('end', resolve);\n req.on('error', reject);\n });\n const rawBody = Buffer.concat(chunks).toString('utf8');\n try {\n parsedBody = JSON.parse(rawBody);\n if (isJsonRpcMessage(parsedBody)) {\n const sid = req.headers['mcp-session-id'] as string | undefined;\n const sidStr = sid ? ` (${sid.substring(0, 8)}...)` : '';\n const extra =\n parsedBody.method === 'resources/read'\n ? ` uri=${JSON.stringify(parsedBody.params?.uri)}`\n : '';\n log('info', `← ${parsedBody.method}${extra}${sidStr}`);\n }\n } catch {\n res.writeHead(400).end('Invalid JSON');\n return;\n }\n }\n\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n // Route to existing session\n if (sessionId) {\n const session = sessions.get(sessionId);\n if (!session) {\n res.writeHead(404).end('Unknown session');\n return;\n }\n session.lastActivity = Date.now();\n await session.transport.handleRequest(req, res, parsedBody);\n return;\n }\n\n // New session (POST without session ID = initialization)\n if (req.method === 'POST') {\n const server = createProductionMcpServer(config);\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n onsessioninitialized: (id) => {\n sessions.set(id, { server, transport, lastActivity: Date.now() });\n log('info', `Session started: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size,\n });\n },\n onsessionclosed: (id) => {\n sessions.delete(id);\n log('info', `Session closed: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size,\n });\n },\n });\n\n transport.onerror = (error) => {\n const id = transport.sessionId;\n log('error', `Transport error${id ? ` (${id.substring(0, 8)}...)` : ''}`, {\n sessionId: id,\n error: String(error),\n });\n };\n\n // Clean up session map on disconnect (don't call server.close — it triggers\n // transport.close which calls onclose again, causing infinite recursion)\n transport.onclose = () => {\n const id = transport.sessionId;\n if (id && sessions.has(id)) {\n sessions.delete(id);\n log('info', `Session closed: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size,\n });\n }\n };\n\n await server.connect(transport);\n await transport.handleRequest(req, res, parsedBody);\n return;\n }\n\n // No session ID and not POST → invalid\n res.writeHead(400).end('Bad Request: session ID required');\n };\n}\n\n// ============================================================================\n// Composable Web Standard MCP handler (serverless / edge)\n// ============================================================================\n\n/**\n * Create a Web Standard request handler for MCP over Streamable HTTP.\n *\n * Returns a `(req: Request) => Promise<Response>` handler that works on any\n * Web Standard runtime: Cloudflare Workers, Deno, Bun, Vercel Edge, etc.\n *\n * Unlike `createMcpHandler`, this handler does NOT do path matching — it handles\n * every request it receives. Mount it behind your own router.\n *\n * @example\n * ```ts\n * // Cloudflare Worker\n * import { createHandler } from 'sunpeak/mcp';\n *\n * const handler = createHandler({ tools, resources, auth });\n * export default { fetch: handler };\n * ```\n *\n * @example\n * ```ts\n * // Hono\n * import { Hono } from 'hono';\n * import { createHandler } from 'sunpeak/mcp';\n *\n * const app = new Hono();\n * const handler = createHandler({ tools, resources });\n * app.all('/mcp', (c) => handler(c.req.raw));\n * export default app;\n * ```\n */\nexport function createHandler(config: WebHandlerConfig): (req: Request) => Promise<Response> {\n interface WebSession {\n server: McpServer;\n transport: WebStandardStreamableHTTPServerTransport;\n lastActivity: number;\n }\n\n const sessions = new Map<string, WebSession>();\n const authFn = config.auth;\n\n // Periodically clean up idle sessions.\n // Closing the server triggers transport.onclose which handles session map cleanup.\n const cleanupInterval = setInterval(() => {\n const now = Date.now();\n for (const [id, session] of sessions) {\n if (now - session.lastActivity > SESSION_IDLE_TIMEOUT_MS) {\n log('info', `Session expired: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size - 1,\n });\n void session.server.close();\n }\n }\n }, 60_000);\n cleanupInterval.unref();\n\n return async (req: Request): Promise<Response> => {\n // CORS preflight\n if (req.method === 'OPTIONS') {\n return new Response(null, { status: 204, headers: CORS_HEADERS });\n }\n\n // Auth\n let authInfo: AuthInfo | undefined;\n if (authFn) {\n const result = await authFn(req);\n if (!result) {\n return new Response('Unauthorized', {\n status: 401,\n headers: { 'WWW-Authenticate': 'Bearer', 'Access-Control-Allow-Origin': '*' },\n });\n }\n authInfo = result;\n }\n\n // Parse body for POST\n let parsedBody: unknown;\n if (req.method === 'POST') {\n try {\n parsedBody = await req.json();\n } catch {\n return new Response('Invalid JSON', { status: 400 });\n }\n }\n\n const sessionId = req.headers.get('mcp-session-id');\n\n // Route to existing session\n if (sessionId) {\n const session = sessions.get(sessionId);\n if (!session) {\n return new Response('Unknown session', { status: 404 });\n }\n session.lastActivity = Date.now();\n const response = await session.transport.handleRequest(req, { parsedBody, authInfo });\n return addCorsHeaders(response);\n }\n\n // New session (POST without session ID = initialization)\n if (req.method === 'POST') {\n const { name, version, tools, resources } = config;\n const server = createProductionMcpServer({ name, version, tools, resources });\n const transport = new WebStandardStreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n onsessioninitialized: (id) => {\n sessions.set(id, { server, transport, lastActivity: Date.now() });\n log('info', `Session started: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size,\n });\n },\n onsessionclosed: (id) => {\n sessions.delete(id);\n log('info', `Session closed: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size,\n });\n },\n });\n\n transport.onerror = (error) => {\n log('error', 'Transport error', { error: String(error) });\n };\n\n transport.onclose = () => {\n const id = transport.sessionId;\n if (id && sessions.has(id)) {\n sessions.delete(id);\n }\n };\n\n await server.connect(transport);\n const response = await transport.handleRequest(req, { parsedBody, authInfo });\n return addCorsHeaders(response);\n }\n\n return new Response('Bad Request: session ID required', { status: 400 });\n };\n}\n\n/** Add CORS headers to a response (including streaming SSE responses). */\nfunction addCorsHeaders(response: Response): Response {\n const headers = new Headers(response.headers);\n headers.set('Access-Control-Allow-Origin', '*');\n headers.set('Access-Control-Expose-Headers', 'mcp-session-id');\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n}\n\n// ============================================================================\n// Built-in HTTP server (used by `sunpeak start`)\n// ============================================================================\n\n/**\n * Options for `startProductionHttpServer`.\n */\nexport interface HttpServerOptions {\n /** HTTP port to listen on (default: 8000) */\n port?: number;\n /** Host/interface to bind to (default: '0.0.0.0') */\n host?: string;\n}\n\n/**\n * Start a production HTTP server with Streamable HTTP transport.\n *\n * This is a convenience wrapper around `createMcpHandler` that adds\n * a health check endpoint, root HTML page, favicon, and graceful shutdown.\n * For custom HTTP servers (Express, Fastify, etc.), use `createMcpHandler` directly.\n *\n * @param config - Production server configuration (tools, resources, auth)\n * @param portOrOptions - HTTP port number, or an options object with port and host\n */\nexport function startProductionHttpServer(\n config: ProductionServerConfig,\n portOrOptions: number | HttpServerOptions\n): void {\n const options: HttpServerOptions =\n typeof portOrOptions === 'number' ? { port: portOrOptions } : portOrOptions;\n const port = options.port ?? 8000;\n const host = options.host ?? '0.0.0.0';\n\n const startTime = Date.now();\n const mcpHandler = createMcpHandler(config);\n\n const httpServer = createServer(async (req: IncomingMessage, res: ServerResponse) => {\n if (!req.url) {\n res.writeHead(400).end('Missing URL');\n return;\n }\n\n const url = new URL(req.url, `http://${req.headers.host ?? 'localhost'}`);\n\n // OPTIONS preflight for non-MCP paths\n if (req.method === 'OPTIONS') {\n res.writeHead(204, CORS_HEADERS);\n res.end();\n return;\n }\n\n // Health check endpoint — for load balancer probes, k8s liveness/readiness,\n // and uptime monitoring\n if (req.method === 'GET' && url.pathname === '/health') {\n const body = JSON.stringify({\n status: 'ok',\n uptime: Math.floor((Date.now() - startTime) / 1000),\n });\n res.writeHead(200, {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache',\n 'Access-Control-Allow-Origin': '*',\n });\n res.end(body);\n return;\n }\n\n // Root path\n if (req.method === 'GET' && url.pathname === '/') {\n res.writeHead(200, {\n 'Content-Type': 'text/html',\n 'Access-Control-Allow-Origin': '*',\n });\n res.end(`<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\" />\n<link rel=\"icon\" type=\"image/png\" href=\"/favicon.ico\" />\n<title>Sunpeak MCP Server</title>\n</head>\n<body><h1>Sunpeak MCP Server</h1><p>Connect via <a href=\"/mcp\">/mcp</a></p></body>\n</html>`);\n return;\n }\n\n // Favicon\n if (req.method === 'GET' && url.pathname === '/favicon.ico') {\n res.writeHead(200, {\n 'Content-Type': 'image/png',\n 'Content-Length': FAVICON_BUFFER.length,\n 'Cache-Control': 'public, max-age=86400',\n 'Access-Control-Allow-Origin': '*',\n });\n res.end(FAVICON_BUFFER);\n return;\n }\n\n // MCP handler\n await mcpHandler(req, res);\n\n // 404 if handler didn't respond\n if (!res.headersSent) {\n log('info', `${req.method} ${url.pathname} → 404`);\n res.writeHead(404).end('Not Found');\n }\n });\n\n httpServer.on('clientError', (err: Error, socket) => {\n log('error', 'HTTP client error', { error: err.message });\n socket.end('HTTP/1.1 400 Bad Request\\r\\n\\r\\n');\n });\n\n const displayHost = host === '0.0.0.0' ? 'localhost' : host;\n httpServer.listen(port, host, () => {\n log('info', `Server listening on http://${displayHost}:${port}`);\n log('info', `MCP endpoint: http://${displayHost}:${port}${MCP_PATH}`);\n log('info', `Health check: http://${displayHost}:${port}/health`);\n });\n\n // Graceful shutdown\n const shutdown = async () => {\n log('info', 'Shutting down MCP server...');\n httpServer.close(() => {\n log('info', 'MCP server closed');\n process.exit(0);\n });\n setTimeout(() => {\n log('error', 'Force closing MCP server');\n process.exit(1);\n }, 5000);\n };\n\n process.on('SIGTERM', () => void shutdown());\n process.on('SIGINT', () => void shutdown());\n}\n"],"names":["exports","code","names","i","b","require$$0","UsedValueState","require$$1","not","items","y","rules","keyword","f","Type","names_1","require$$2","type","require$$3","require$$4","DataType","types","dataType","properties","pattern","u","validate","errors","_a","subschema","equal","jsonSchemaTraverseModule","limit","id","ref","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","resolve","path","uri","fastUri","fastUriModule","uri_1","o","Ajv","v","$schema","cacheKey","definitions","k","format","log","core_1","core","ucs2length_1","ucs2length","equal_1","validation_1","validation","prefixItems","require$$11","require$$12","require$$13","require$$14","require$$15","applicator","format_2","DiscrError","oneOf","required","module","ajv","formats","fs","CreateMessageResultSchema","ElicitResultSchema","Protocol","LoggingLevelSchema","InitializeRequestSchema","InitializedNotificationSchema","SetLevelRequestSchema","mergeCapabilities","getObjectShape","isZ4Schema","safeParse","CallToolRequestSchema","McpError","ErrorCode","CreateTaskResultSchema","CallToolResultSchema","SUPPORTED_PROTOCOL_VERSIONS","LATEST_PROTOCOL_VERSION","EmptyResultSchema","CreateMessageResultWithToolsSchema","ListRootsResultSchema","McpZodTypeKind","ListToolsRequestSchema","normalizeObjectSchema","toJsonSchemaCompat","safeParseAsync","getParseErrorMessage","CompleteRequestSchema","assertCompleteRequestPrompt","assertCompleteRequestResourceTemplate","ListResourcesRequestSchema","ListResourceTemplatesRequestSchema","ReadResourceRequestSchema","ListPromptsRequestSchema","GetPromptRequestSchema","metadata","title","description","objectFromShape","ZodOptional","getSchemaDescription","isSchemaOptional","getLiteralValue","Readable","Http2ServerRequest","stream","crypto","Http2ServerRequest2","JSONRPCMessageSchema","isInitializeRequest","isJSONRPCRequest","DEFAULT_NEGOTIATED_PROTOCOL_VERSION","isJSONRPCResultResponse","isJSONRPCErrorResponse","Q.union","Q.literal","Q.record","Q.string","Q.undefined","Q.object","Q.boolean","Q.array","Q.number","Q.unknown","p","r","x","c","l","n","S","RESOURCE_MIME_TYPE","registerAppTool","z","SESSION_IDLE_TIMEOUT_MS","MCP_PATH","CORS_HEADERS","randomUUID","createServer","URL","registerAppResource","sessions","cleanupInterval"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81]}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/mcp/favicon.ts","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/code.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/scope.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/util.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/names.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/errors.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/boolSchema.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/rules.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/applicability.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/dataType.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/defaults.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/code.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/keyword.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/subschema.js","../../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js","../../../../node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/resolve.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/validation_error.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/ref_error.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/index.js","../../../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js","../../../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js","../../../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/uri.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/core.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/id.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/ref.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/ucs2length.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/pattern.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/required.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/equal.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/const.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/enum.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/contains.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/properties.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/not.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/if.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/format.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/metadata.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/draft7.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/types.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/index.js","../../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/ajv.js","../../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/formats.js","../../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/limit.js","../../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/index.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js","../../../../node_modules/.pnpm/@hono+node-server@1.19.11_hono@4.12.8/node_modules/@hono/node-server/dist/index.mjs","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/webStandardStreamableHttp.js","../../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/dist/esm/server/streamableHttp.js","../../../../node_modules/.pnpm/@modelcontextprotocol+ext-apps@1.2.2_@modelcontextprotocol+sdk@1.27.1_zod@4.3.6__react-_e9bf7657371391a829fe8b4e289b253c/node_modules/@modelcontextprotocol/ext-apps/dist/src/server/index.js","../../src/mcp/server.ts","../../src/mcp/production-server.ts"],"sourcesContent":["// Sunpeak favicon as base64-encoded PNG (128x128)\nexport const FAVICON_BASE64 =\n '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';\n\nexport const FAVICON_BUFFER = Buffer.from(FAVICON_BASE64, 'base64');\n","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","'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","'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","\"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","\"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","\"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","\"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","\"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","'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","'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","'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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst util_1 = require(\"../../compile/util\");\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 { gen, data, $data, schema, schemaCode, it } = cxt;\n const u = it.opts.unicodeRegExp ? \"u\" : \"\";\n if ($data) {\n const { regExp } = it.opts.code;\n const regExpCode = regExp.code === \"new RegExp\" ? (0, codegen_1._) `new RegExp` : (0, util_1.useFunc)(gen, regExp);\n const valid = gen.let(\"valid\");\n gen.try(() => gen.assign(valid, (0, codegen_1._) `${regExpCode}(${schemaCode}, ${u}).test(${data})`), () => gen.assign(valid, false));\n cxt.fail$data((0, codegen_1._) `!${valid}`);\n }\n else {\n const regExp = (0, code_1.usePattern)(cxt, schema);\n cxt.fail$data((0, codegen_1._) `!${regExp}.test(${data})`);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=pattern.js.map","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","\"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","/**\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 ?? 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 // Check if schema has $id and is already compiled/cached\n const ajvValidator = '$id' in schema && typeof schema.$id === 'string'\n ? (this._ajv.getSchema(schema.$id) ?? 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","/**\n * Experimental server task features for MCP SDK.\n * WARNING: These APIs are experimental and may change without notice.\n *\n * @experimental\n */\nimport { CreateMessageResultSchema, ElicitResultSchema } from '../../types.js';\n/**\n * Experimental task features for low-level MCP servers.\n *\n * Access via `server.experimental.tasks`:\n * ```typescript\n * const stream = server.experimental.tasks.requestStream(request, schema, options);\n * ```\n *\n * For high-level server usage with task-based tools, use `McpServer.experimental.tasks` instead.\n *\n * @experimental\n */\nexport class ExperimentalServerTasks {\n constructor(_server) {\n this._server = _server;\n }\n /**\n * Sends a request and returns an AsyncGenerator that yields response messages.\n * The generator is guaranteed to end with either a 'result' or 'error' message.\n *\n * This method provides streaming access to request processing, allowing you to\n * observe intermediate task status updates for task-augmented requests.\n *\n * @param request - The request to send\n * @param resultSchema - Zod schema for validating the result\n * @param options - Optional request options (timeout, signal, task creation params, etc.)\n * @returns AsyncGenerator that yields ResponseMessage objects\n *\n * @experimental\n */\n requestStream(request, resultSchema, options) {\n return this._server.requestStream(request, resultSchema, options);\n }\n /**\n * Sends a sampling request and returns an AsyncGenerator that yields response messages.\n * The generator is guaranteed to end with either a 'result' or 'error' message.\n *\n * For task-augmented requests, yields 'taskCreated' and 'taskStatus' messages\n * before the final result.\n *\n * @example\n * ```typescript\n * const stream = server.experimental.tasks.createMessageStream({\n * messages: [{ role: 'user', content: { type: 'text', text: 'Hello' } }],\n * maxTokens: 100\n * }, {\n * onprogress: (progress) => {\n * // Handle streaming tokens via progress notifications\n * console.log('Progress:', progress.message);\n * }\n * });\n *\n * for await (const message of stream) {\n * switch (message.type) {\n * case 'taskCreated':\n * console.log('Task created:', message.task.taskId);\n * break;\n * case 'taskStatus':\n * console.log('Task status:', message.task.status);\n * break;\n * case 'result':\n * console.log('Final result:', message.result);\n * break;\n * case 'error':\n * console.error('Error:', message.error);\n * break;\n * }\n * }\n * ```\n *\n * @param params - The sampling request parameters\n * @param options - Optional request options (timeout, signal, task creation params, onprogress, etc.)\n * @returns AsyncGenerator that yields ResponseMessage objects\n *\n * @experimental\n */\n createMessageStream(params, options) {\n // Access client capabilities via the server\n const clientCapabilities = this._server.getClientCapabilities();\n // Capability check - only required when tools/toolChoice are provided\n if ((params.tools || params.toolChoice) && !clientCapabilities?.sampling?.tools) {\n throw new Error('Client does not support sampling tools capability.');\n }\n // Message structure validation - always validate tool_use/tool_result pairs.\n // These may appear even without tools/toolChoice in the current request when\n // a previous sampling request returned tool_use and this is a follow-up with results.\n if (params.messages.length > 0) {\n const lastMessage = params.messages[params.messages.length - 1];\n const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content];\n const hasToolResults = lastContent.some(c => c.type === 'tool_result');\n const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : undefined;\n const previousContent = previousMessage\n ? Array.isArray(previousMessage.content)\n ? previousMessage.content\n : [previousMessage.content]\n : [];\n const hasPreviousToolUse = previousContent.some(c => c.type === 'tool_use');\n if (hasToolResults) {\n if (lastContent.some(c => c.type !== 'tool_result')) {\n throw new Error('The last message must contain only tool_result content if any is present');\n }\n if (!hasPreviousToolUse) {\n throw new Error('tool_result blocks are not matching any tool_use from the previous message');\n }\n }\n if (hasPreviousToolUse) {\n // Extract tool_use IDs from previous message and tool_result IDs from current message\n const toolUseIds = new Set(previousContent.filter(c => c.type === 'tool_use').map(c => c.id));\n const toolResultIds = new Set(lastContent.filter(c => c.type === 'tool_result').map(c => c.toolUseId));\n if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every(id => toolResultIds.has(id))) {\n throw new Error('ids of tool_result blocks and tool_use blocks from previous message do not match');\n }\n }\n }\n return this.requestStream({\n method: 'sampling/createMessage',\n params\n }, CreateMessageResultSchema, options);\n }\n /**\n * Sends an elicitation request and returns an AsyncGenerator that yields response messages.\n * The generator is guaranteed to end with either a 'result' or 'error' message.\n *\n * For task-augmented requests (especially URL-based elicitation), yields 'taskCreated'\n * and 'taskStatus' messages before the final result.\n *\n * @example\n * ```typescript\n * const stream = server.experimental.tasks.elicitInputStream({\n * mode: 'url',\n * message: 'Please authenticate',\n * elicitationId: 'auth-123',\n * url: 'https://example.com/auth'\n * }, {\n * task: { ttl: 300000 } // Task-augmented for long-running auth flow\n * });\n *\n * for await (const message of stream) {\n * switch (message.type) {\n * case 'taskCreated':\n * console.log('Task created:', message.task.taskId);\n * break;\n * case 'taskStatus':\n * console.log('Task status:', message.task.status);\n * break;\n * case 'result':\n * console.log('User action:', message.result.action);\n * break;\n * case 'error':\n * console.error('Error:', message.error);\n * break;\n * }\n * }\n * ```\n *\n * @param params - The elicitation request parameters\n * @param options - Optional request options (timeout, signal, task creation params, etc.)\n * @returns AsyncGenerator that yields ResponseMessage objects\n *\n * @experimental\n */\n elicitInputStream(params, options) {\n // Access client capabilities via the server\n const clientCapabilities = this._server.getClientCapabilities();\n const mode = params.mode ?? 'form';\n // Capability check based on mode\n switch (mode) {\n case 'url': {\n if (!clientCapabilities?.elicitation?.url) {\n throw new Error('Client does not support url elicitation.');\n }\n break;\n }\n case 'form': {\n if (!clientCapabilities?.elicitation?.form) {\n throw new Error('Client does not support form elicitation.');\n }\n break;\n }\n }\n // Normalize params to ensure mode is set for form mode (defaults to 'form' per spec)\n const normalizedParams = mode === 'form' && params.mode === undefined ? { ...params, mode: 'form' } : params;\n // Cast to ServerRequest needed because TypeScript can't narrow the union type\n // based on the discriminated 'method' field when constructing the object literal\n return this.requestStream({\n method: 'elicitation/create',\n params: normalizedParams\n }, ElicitResultSchema, options);\n }\n /**\n * Gets the current status of a task.\n *\n * @param taskId - The task identifier\n * @param options - Optional request options\n * @returns The task status\n *\n * @experimental\n */\n async getTask(taskId, options) {\n return this._server.getTask({ taskId }, options);\n }\n /**\n * Retrieves the result of a completed task.\n *\n * @param taskId - The task identifier\n * @param resultSchema - Zod schema for validating the result\n * @param options - Optional request options\n * @returns The task result\n *\n * @experimental\n */\n async getTaskResult(taskId, resultSchema, options) {\n return this._server.getTaskResult({ taskId }, resultSchema, options);\n }\n /**\n * Lists tasks with optional pagination.\n *\n * @param cursor - Optional pagination cursor\n * @param options - Optional request options\n * @returns List of tasks with optional next cursor\n *\n * @experimental\n */\n async listTasks(cursor, options) {\n return this._server.listTasks(cursor ? { cursor } : undefined, options);\n }\n /**\n * Cancels a running task.\n *\n * @param taskId - The task identifier\n * @param options - Optional request options\n *\n * @experimental\n */\n async cancelTask(taskId, options) {\n return this._server.cancelTask({ taskId }, options);\n }\n}\n//# sourceMappingURL=server.js.map","/**\n * Experimental task capability assertion helpers.\n * WARNING: These APIs are experimental and may change without notice.\n *\n * @experimental\n */\n/**\n * Asserts that task creation is supported for tools/call.\n * Used by Client.assertTaskCapability and Server.assertTaskHandlerCapability.\n *\n * @param requests - The task requests capability object\n * @param method - The method being checked\n * @param entityName - 'Server' or 'Client' for error messages\n * @throws Error if the capability is not supported\n *\n * @experimental\n */\nexport function assertToolsCallTaskCapability(requests, method, entityName) {\n if (!requests) {\n throw new Error(`${entityName} does not support task creation (required for ${method})`);\n }\n switch (method) {\n case 'tools/call':\n if (!requests.tools?.call) {\n throw new Error(`${entityName} does not support task creation for tools/call (required for ${method})`);\n }\n break;\n default:\n // Method doesn't support tasks, which is fine - no error\n break;\n }\n}\n/**\n * Asserts that task creation is supported for sampling/createMessage or elicitation/create.\n * Used by Server.assertTaskCapability and Client.assertTaskHandlerCapability.\n *\n * @param requests - The task requests capability object\n * @param method - The method being checked\n * @param entityName - 'Server' or 'Client' for error messages\n * @throws Error if the capability is not supported\n *\n * @experimental\n */\nexport function assertClientRequestTaskCapability(requests, method, entityName) {\n if (!requests) {\n throw new Error(`${entityName} does not support task creation (required for ${method})`);\n }\n switch (method) {\n case 'sampling/createMessage':\n if (!requests.sampling?.createMessage) {\n throw new Error(`${entityName} does not support task creation for sampling/createMessage (required for ${method})`);\n }\n break;\n case 'elicitation/create':\n if (!requests.elicitation?.create) {\n throw new Error(`${entityName} does not support task creation for elicitation/create (required for ${method})`);\n }\n break;\n default:\n // Method doesn't support tasks, which is fine - no error\n break;\n }\n}\n//# sourceMappingURL=helpers.js.map","import { mergeCapabilities, Protocol } from '../shared/protocol.js';\nimport { CreateMessageResultSchema, CreateMessageResultWithToolsSchema, ElicitResultSchema, EmptyResultSchema, ErrorCode, InitializedNotificationSchema, InitializeRequestSchema, LATEST_PROTOCOL_VERSION, ListRootsResultSchema, LoggingLevelSchema, McpError, SetLevelRequestSchema, SUPPORTED_PROTOCOL_VERSIONS, CallToolRequestSchema, CallToolResultSchema, CreateTaskResultSchema } from '../types.js';\nimport { AjvJsonSchemaValidator } from '../validation/ajv-provider.js';\nimport { getObjectShape, isZ4Schema, safeParse } from './zod-compat.js';\nimport { ExperimentalServerTasks } from '../experimental/tasks/server.js';\nimport { assertToolsCallTaskCapability, assertClientRequestTaskCapability } from '../experimental/tasks/helpers.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 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 = options?.capabilities ?? {};\n this._instructions = options?.instructions;\n this._jsonSchemaValidator = options?.jsonSchemaValidator ?? new AjvJsonSchemaValidator();\n this.setRequestHandler(InitializeRequestSchema, request => this._oninitialize(request));\n this.setNotificationHandler(InitializedNotificationSchema, () => this.oninitialized?.());\n if (this._capabilities.logging) {\n this.setRequestHandler(SetLevelRequestSchema, async (request, extra) => {\n const transportSessionId = extra.sessionId || extra.requestInfo?.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 * Access experimental features.\n *\n * WARNING: These APIs are experimental and may change without notice.\n *\n * @experimental\n */\n get experimental() {\n if (!this._experimental) {\n this._experimental = {\n tasks: new ExperimentalServerTasks(this)\n };\n }\n return this._experimental;\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 server-side validation for tools/call.\n */\n setRequestHandler(requestSchema, handler) {\n const shape = getObjectShape(requestSchema);\n const methodSchema = shape?.method;\n if (!methodSchema) {\n throw new Error('Schema is missing a method literal');\n }\n // Extract literal value using type-safe property access\n let methodValue;\n if (isZ4Schema(methodSchema)) {\n const v4Schema = methodSchema;\n const v4Def = v4Schema._zod?.def;\n methodValue = v4Def?.value ?? v4Schema.value;\n }\n else {\n const v3Schema = methodSchema;\n const legacyDef = v3Schema._def;\n methodValue = legacyDef?.value ?? v3Schema.value;\n }\n if (typeof methodValue !== 'string') {\n throw new Error('Schema method literal must be a string');\n }\n const method = methodValue;\n if (method === 'tools/call') {\n const wrappedHandler = async (request, extra) => {\n const validatedRequest = safeParse(CallToolRequestSchema, request);\n if (!validatedRequest.success) {\n const errorMessage = validatedRequest.error instanceof Error ? validatedRequest.error.message : String(validatedRequest.error);\n throw new McpError(ErrorCode.InvalidParams, `Invalid tools/call request: ${errorMessage}`);\n }\n const { params } = validatedRequest.data;\n const result = await Promise.resolve(handler(request, extra));\n // When task creation is requested, validate and return CreateTaskResult\n if (params.task) {\n const taskValidationResult = safeParse(CreateTaskResultSchema, result);\n if (!taskValidationResult.success) {\n const errorMessage = taskValidationResult.error instanceof Error\n ? taskValidationResult.error.message\n : String(taskValidationResult.error);\n throw new McpError(ErrorCode.InvalidParams, `Invalid task creation result: ${errorMessage}`);\n }\n return taskValidationResult.data;\n }\n // For non-task requests, validate against CallToolResultSchema\n const validationResult = safeParse(CallToolResultSchema, result);\n if (!validationResult.success) {\n const errorMessage = validationResult.error instanceof Error ? validationResult.error.message : String(validationResult.error);\n throw new McpError(ErrorCode.InvalidParams, `Invalid tools/call result: ${errorMessage}`);\n }\n return validationResult.data;\n };\n // Install the wrapped handler\n return super.setRequestHandler(requestSchema, wrappedHandler);\n }\n // Other handlers use default behavior\n return super.setRequestHandler(requestSchema, handler);\n }\n assertCapabilityForMethod(method) {\n switch (method) {\n case 'sampling/createMessage':\n if (!this._clientCapabilities?.sampling) {\n throw new Error(`Client does not support sampling (required for ${method})`);\n }\n break;\n case 'elicitation/create':\n if (!this._clientCapabilities?.elicitation) {\n throw new Error(`Client does not support elicitation (required for ${method})`);\n }\n break;\n case 'roots/list':\n if (!this._clientCapabilities?.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/elicitation/complete':\n if (!this._clientCapabilities?.elicitation?.url) {\n throw new Error(`Client does not support URL elicitation (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 // Task handlers are registered in Protocol constructor before _capabilities is initialized\n // Skip capability check for task methods during initialization\n if (!this._capabilities) {\n return;\n }\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 'tasks/get':\n case 'tasks/list':\n case 'tasks/result':\n case 'tasks/cancel':\n if (!this._capabilities.tasks) {\n throw new Error(`Server does not support tasks capability (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 assertTaskCapability(method) {\n assertClientRequestTaskCapability(this._clientCapabilities?.tasks?.requests, method, 'Client');\n }\n assertTaskHandlerCapability(method) {\n // Task handlers are registered in Protocol constructor before _capabilities is initialized\n // Skip capability check for task methods during initialization\n if (!this._capabilities) {\n return;\n }\n assertToolsCallTaskCapability(this._capabilities.tasks?.requests, method, 'Server');\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 // Implementation\n async createMessage(params, options) {\n // Capability check - only required when tools/toolChoice are provided\n if (params.tools || params.toolChoice) {\n if (!this._clientCapabilities?.sampling?.tools) {\n throw new Error('Client does not support sampling tools capability.');\n }\n }\n // Message structure validation - always validate tool_use/tool_result pairs.\n // These may appear even without tools/toolChoice in the current request when\n // a previous sampling request returned tool_use and this is a follow-up with results.\n if (params.messages.length > 0) {\n const lastMessage = params.messages[params.messages.length - 1];\n const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content];\n const hasToolResults = lastContent.some(c => c.type === 'tool_result');\n const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : undefined;\n const previousContent = previousMessage\n ? Array.isArray(previousMessage.content)\n ? previousMessage.content\n : [previousMessage.content]\n : [];\n const hasPreviousToolUse = previousContent.some(c => c.type === 'tool_use');\n if (hasToolResults) {\n if (lastContent.some(c => c.type !== 'tool_result')) {\n throw new Error('The last message must contain only tool_result content if any is present');\n }\n if (!hasPreviousToolUse) {\n throw new Error('tool_result blocks are not matching any tool_use from the previous message');\n }\n }\n if (hasPreviousToolUse) {\n const toolUseIds = new Set(previousContent.filter(c => c.type === 'tool_use').map(c => c.id));\n const toolResultIds = new Set(lastContent.filter(c => c.type === 'tool_result').map(c => c.toolUseId));\n if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every(id => toolResultIds.has(id))) {\n throw new Error('ids of tool_result blocks and tool_use blocks from previous message do not match');\n }\n }\n }\n // Use different schemas based on whether tools are provided\n if (params.tools) {\n return this.request({ method: 'sampling/createMessage', params }, CreateMessageResultWithToolsSchema, options);\n }\n return this.request({ method: 'sampling/createMessage', params }, CreateMessageResultSchema, options);\n }\n /**\n * Creates an elicitation request for the given parameters.\n * For backwards compatibility, `mode` may be omitted for form requests and will default to `'form'`.\n * @param params The parameters for the elicitation request.\n * @param options Optional request options.\n * @returns The result of the elicitation request.\n */\n async elicitInput(params, options) {\n const mode = (params.mode ?? 'form');\n switch (mode) {\n case 'url': {\n if (!this._clientCapabilities?.elicitation?.url) {\n throw new Error('Client does not support url elicitation.');\n }\n const urlParams = params;\n return this.request({ method: 'elicitation/create', params: urlParams }, ElicitResultSchema, options);\n }\n case 'form': {\n if (!this._clientCapabilities?.elicitation?.form) {\n throw new Error('Client does not support form elicitation.');\n }\n const formParams = params.mode === 'form' ? params : { ...params, mode: 'form' };\n const result = await this.request({ method: 'elicitation/create', params: formParams }, ElicitResultSchema, options);\n if (result.action === 'accept' && result.content && formParams.requestedSchema) {\n try {\n const validator = this._jsonSchemaValidator.getValidator(formParams.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 }\n }\n /**\n * Creates a reusable callback that, when invoked, will send a `notifications/elicitation/complete`\n * notification for the specified elicitation ID.\n *\n * @param elicitationId The ID of the elicitation to mark as complete.\n * @param options Optional notification options. Useful when the completion notification should be related to a prior request.\n * @returns A function that emits the completion notification when awaited.\n */\n createElicitationCompletionNotifier(elicitationId, options) {\n if (!this._clientCapabilities?.elicitation?.url) {\n throw new Error('Client does not support URL elicitation (required for notifications/elicitation/complete)');\n }\n return () => this.notification({\n method: 'notifications/elicitation/complete',\n params: {\n elicitationId\n }\n }, options);\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","export const COMPLETABLE_SYMBOL = Symbol.for('mcp.completable');\n/**\n * Wraps a Zod type to provide autocompletion capabilities. Useful for, e.g., prompt arguments in MCP.\n * Works with both Zod v3 and v4 schemas.\n */\nexport function completable(schema, complete) {\n Object.defineProperty(schema, COMPLETABLE_SYMBOL, {\n value: { complete },\n enumerable: false,\n writable: false,\n configurable: false\n });\n return schema;\n}\n/**\n * Checks if a schema is completable (has completion metadata).\n */\nexport function isCompletable(schema) {\n return !!schema && typeof schema === 'object' && COMPLETABLE_SYMBOL in schema;\n}\n/**\n * Gets the completer callback from a completable schema, if it exists.\n */\nexport function getCompleter(schema) {\n const meta = schema[COMPLETABLE_SYMBOL];\n return meta?.complete;\n}\n/**\n * Unwraps a completable schema to get the underlying schema.\n * For backward compatibility with code that called `.unwrap()`.\n */\nexport function unwrapCompletable(schema) {\n return schema;\n}\n// Legacy exports for backward compatibility\n// These types are deprecated but kept for existing code\nexport var McpZodTypeKind;\n(function (McpZodTypeKind) {\n McpZodTypeKind[\"Completable\"] = \"McpCompletable\";\n})(McpZodTypeKind || (McpZodTypeKind = {}));\n//# sourceMappingURL=completable.js.map","/**\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","/**\n * Experimental McpServer task features for MCP SDK.\n * WARNING: These APIs are experimental and may change without notice.\n *\n * @experimental\n */\n/**\n * Experimental task features for McpServer.\n *\n * Access via `server.experimental.tasks`:\n * ```typescript\n * server.experimental.tasks.registerToolTask('long-running', config, handler);\n * ```\n *\n * @experimental\n */\nexport class ExperimentalMcpServerTasks {\n constructor(_mcpServer) {\n this._mcpServer = _mcpServer;\n }\n registerToolTask(name, config, handler) {\n // Validate that taskSupport is not 'forbidden' for task-based tools\n const execution = { taskSupport: 'required', ...config.execution };\n if (execution.taskSupport === 'forbidden') {\n throw new Error(`Cannot register task-based tool '${name}' with taskSupport 'forbidden'. Use registerTool() instead.`);\n }\n // Access McpServer's internal _createRegisteredTool method\n const mcpServerInternal = this._mcpServer;\n return mcpServerInternal._createRegisteredTool(name, config.title, config.description, config.inputSchema, config.outputSchema, config.annotations, execution, config._meta, handler);\n }\n}\n//# sourceMappingURL=mcp-server.js.map","import { Server } from './index.js';\nimport { normalizeObjectSchema, safeParseAsync, getObjectShape, objectFromShape, getParseErrorMessage, getSchemaDescription, isSchemaOptional, getLiteralValue } from './zod-compat.js';\nimport { toJsonSchemaCompat } from './zod-json-schema-compat.js';\nimport { McpError, ErrorCode, ListResourceTemplatesRequestSchema, ReadResourceRequestSchema, ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, CompleteRequestSchema, assertCompleteRequestPrompt, assertCompleteRequestResourceTemplate } from '../types.js';\nimport { isCompletable, getCompleter } from './completable.js';\nimport { UriTemplate } from '../shared/uriTemplate.js';\nimport { validateAndWarnToolName } from '../shared/toolNameValidation.js';\nimport { ExperimentalMcpServerTasks } from '../experimental/tasks/mcp-server.js';\nimport { ZodOptional } from 'zod';\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 * Access experimental features.\n *\n * WARNING: These APIs are experimental and may change without notice.\n *\n * @experimental\n */\n get experimental() {\n if (!this._experimental) {\n this._experimental = {\n tasks: new ExperimentalMcpServerTasks(this)\n };\n }\n return this._experimental;\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(getMethodValue(ListToolsRequestSchema));\n this.server.assertCanSetRequestHandler(getMethodValue(CallToolRequestSchema));\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: (() => {\n const obj = normalizeObjectSchema(tool.inputSchema);\n return obj\n ? toJsonSchemaCompat(obj, {\n strictUnions: true,\n pipeStrategy: 'input'\n })\n : EMPTY_OBJECT_JSON_SCHEMA;\n })(),\n annotations: tool.annotations,\n execution: tool.execution,\n _meta: tool._meta\n };\n if (tool.outputSchema) {\n const obj = normalizeObjectSchema(tool.outputSchema);\n if (obj) {\n toolDefinition.outputSchema = toJsonSchemaCompat(obj, {\n strictUnions: true,\n pipeStrategy: 'output'\n });\n }\n }\n return toolDefinition;\n })\n }));\n this.server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {\n try {\n const tool = this._registeredTools[request.params.name];\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 const isTaskRequest = !!request.params.task;\n const taskSupport = tool.execution?.taskSupport;\n const isTaskHandler = 'createTask' in tool.handler;\n // Validate task hint configuration\n if ((taskSupport === 'required' || taskSupport === 'optional') && !isTaskHandler) {\n throw new McpError(ErrorCode.InternalError, `Tool ${request.params.name} has taskSupport '${taskSupport}' but was not registered with registerToolTask`);\n }\n // Handle taskSupport 'required' without task augmentation\n if (taskSupport === 'required' && !isTaskRequest) {\n throw new McpError(ErrorCode.MethodNotFound, `Tool ${request.params.name} requires task augmentation (taskSupport: 'required')`);\n }\n // Handle taskSupport 'optional' without task augmentation - automatic polling\n if (taskSupport === 'optional' && !isTaskRequest && isTaskHandler) {\n return await this.handleAutomaticTaskPolling(tool, request, extra);\n }\n // Normal execution path\n const args = await this.validateToolInput(tool, request.params.arguments, request.params.name);\n const result = await this.executeToolHandler(tool, args, extra);\n // Return CreateTaskResult immediately for task requests\n if (isTaskRequest) {\n return result;\n }\n // Validate output schema for non-task requests\n await this.validateToolOutput(tool, result, request.params.name);\n return result;\n }\n catch (error) {\n if (error instanceof McpError) {\n if (error.code === ErrorCode.UrlElicitationRequired) {\n throw error; // Return the error to the caller without wrapping in CallToolResult\n }\n }\n return this.createToolError(error instanceof Error ? error.message : String(error));\n }\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 /**\n * Validates tool input arguments against the tool's input schema.\n */\n async validateToolInput(tool, args, toolName) {\n if (!tool.inputSchema) {\n return undefined;\n }\n // Try to normalize to object schema first (for raw shapes and object schemas)\n // If that fails, use the schema directly (for union/intersection/etc)\n const inputObj = normalizeObjectSchema(tool.inputSchema);\n const schemaToParse = inputObj ?? tool.inputSchema;\n const parseResult = await safeParseAsync(schemaToParse, args);\n if (!parseResult.success) {\n const error = 'error' in parseResult ? parseResult.error : 'Unknown error';\n const errorMessage = getParseErrorMessage(error);\n throw new McpError(ErrorCode.InvalidParams, `Input validation error: Invalid arguments for tool ${toolName}: ${errorMessage}`);\n }\n return parseResult.data;\n }\n /**\n * Validates tool output against the tool's output schema.\n */\n async validateToolOutput(tool, result, toolName) {\n if (!tool.outputSchema) {\n return;\n }\n // Only validate CallToolResult, not CreateTaskResult\n if (!('content' in result)) {\n return;\n }\n if (result.isError) {\n return;\n }\n if (!result.structuredContent) {\n throw new McpError(ErrorCode.InvalidParams, `Output validation error: Tool ${toolName} has an output schema but no structured content was provided`);\n }\n // if the tool has an output schema, validate structured content\n const outputObj = normalizeObjectSchema(tool.outputSchema);\n const parseResult = await safeParseAsync(outputObj, result.structuredContent);\n if (!parseResult.success) {\n const error = 'error' in parseResult ? parseResult.error : 'Unknown error';\n const errorMessage = getParseErrorMessage(error);\n throw new McpError(ErrorCode.InvalidParams, `Output validation error: Invalid structured content for tool ${toolName}: ${errorMessage}`);\n }\n }\n /**\n * Executes a tool handler (either regular or task-based).\n */\n async executeToolHandler(tool, args, extra) {\n const handler = tool.handler;\n const isTaskHandler = 'createTask' in handler;\n if (isTaskHandler) {\n if (!extra.taskStore) {\n throw new Error('No task store provided.');\n }\n const taskExtra = { ...extra, taskStore: extra.taskStore };\n if (tool.inputSchema) {\n const typedHandler = handler;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await Promise.resolve(typedHandler.createTask(args, taskExtra));\n }\n else {\n const typedHandler = handler;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await Promise.resolve(typedHandler.createTask(taskExtra));\n }\n }\n if (tool.inputSchema) {\n const typedHandler = handler;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await Promise.resolve(typedHandler(args, extra));\n }\n else {\n const typedHandler = handler;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await Promise.resolve(typedHandler(extra));\n }\n }\n /**\n * Handles automatic task polling for tools with taskSupport 'optional'.\n */\n async handleAutomaticTaskPolling(tool, request, extra) {\n if (!extra.taskStore) {\n throw new Error('No task store provided for task-capable tool.');\n }\n // Validate input and create task\n const args = await this.validateToolInput(tool, request.params.arguments, request.params.name);\n const handler = tool.handler;\n const taskExtra = { ...extra, taskStore: extra.taskStore };\n const createTaskResult = args // undefined only if tool.inputSchema is undefined\n ? await Promise.resolve(handler.createTask(args, taskExtra))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await Promise.resolve(handler.createTask(taskExtra));\n // Poll until completion\n const taskId = createTaskResult.task.taskId;\n let task = createTaskResult.task;\n const pollInterval = task.pollInterval ?? 5000;\n while (task.status !== 'completed' && task.status !== 'failed' && task.status !== 'cancelled') {\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n const updatedTask = await extra.taskStore.getTask(taskId);\n if (!updatedTask) {\n throw new McpError(ErrorCode.InternalError, `Task ${taskId} not found during polling`);\n }\n task = updatedTask;\n }\n // Return the final result\n return (await extra.taskStore.getTaskResult(taskId));\n }\n setCompletionRequestHandler() {\n if (this._completionHandlerInitialized) {\n return;\n }\n this.server.assertCanSetRequestHandler(getMethodValue(CompleteRequestSchema));\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 promptShape = getObjectShape(prompt.argsSchema);\n const field = promptShape?.[request.params.argument.name];\n if (!isCompletable(field)) {\n return EMPTY_COMPLETION_RESULT;\n }\n const completer = getCompleter(field);\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 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(getMethodValue(ListResourcesRequestSchema));\n this.server.assertCanSetRequestHandler(getMethodValue(ListResourceTemplatesRequestSchema));\n this.server.assertCanSetRequestHandler(getMethodValue(ReadResourceRequestSchema));\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._resourceHandlersInitialized = true;\n }\n setPromptRequestHandlers() {\n if (this._promptHandlersInitialized) {\n return;\n }\n this.server.assertCanSetRequestHandler(getMethodValue(ListPromptsRequestSchema));\n this.server.assertCanSetRequestHandler(getMethodValue(GetPromptRequestSchema));\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 argsObj = normalizeObjectSchema(prompt.argsSchema);\n const parseResult = await safeParseAsync(argsObj, request.params.arguments);\n if (!parseResult.success) {\n const error = 'error' in parseResult ? parseResult.error : 'Unknown error';\n const errorMessage = getParseErrorMessage(error);\n throw new McpError(ErrorCode.InvalidParams, `Invalid arguments for prompt ${request.params.name}: ${errorMessage}`);\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await Promise.resolve(cb(extra));\n }\n });\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 // If the resource template has any completion callbacks, enable completions capability\n const variableNames = template.uriTemplate.variableNames;\n const hasCompleter = Array.isArray(variableNames) && variableNames.some(v => !!template.completeCallback(v));\n if (hasCompleter) {\n this.setCompletionRequestHandler();\n }\n return registeredResourceTemplate;\n }\n _createRegisteredPrompt(name, title, description, argsSchema, callback) {\n const registeredPrompt = {\n title,\n description,\n argsSchema: argsSchema === undefined ? undefined : objectFromShape(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 = objectFromShape(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 // If any argument uses a Completable schema, enable completions capability\n if (argsSchema) {\n const hasCompletable = Object.values(argsSchema).some(field => {\n const inner = field instanceof ZodOptional ? field._def?.innerType : field;\n return isCompletable(inner);\n });\n if (hasCompletable) {\n this.setCompletionRequestHandler();\n }\n }\n return registeredPrompt;\n }\n _createRegisteredTool(name, title, description, inputSchema, outputSchema, annotations, execution, _meta, handler) {\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 execution,\n _meta,\n handler: handler,\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 = objectFromShape(updates.paramsSchema);\n if (typeof updates.outputSchema !== 'undefined')\n registeredTool.outputSchema = objectFromShape(updates.outputSchema);\n if (typeof updates.callback !== 'undefined')\n registeredTool.handler = 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 (isZodRawShapeCompat(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 && !isZodRawShapeCompat(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 ZodRawShapeCompat, 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, { taskSupport: 'forbidden' }, 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, { taskSupport: 'forbidden' }, _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 return this._callbacks.complete?.[variable];\n }\n}\nconst EMPTY_OBJECT_JSON_SCHEMA = {\n type: 'object',\n properties: {}\n};\n/**\n * Checks if a value looks like a Zod schema by checking for parse/safeParse methods.\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 * Checks if an object is a Zod schema instance (v3 or v4).\n *\n * Zod schemas have internal markers:\n * - v3: `_def` property\n * - v4: `_zod` property\n *\n * This includes transformed schemas like z.preprocess(), z.transform(), z.pipe().\n */\nfunction isZodSchemaInstance(obj) {\n return '_def' in obj || '_zod' in obj || isZodTypeLike(obj);\n}\n/**\n * Checks if an object is a \"raw shape\" - a plain object where values are Zod schemas.\n *\n * Raw shapes are used as shorthand: `{ name: z.string() }` instead of `z.object({ name: z.string() })`.\n *\n * IMPORTANT: This must NOT match actual Zod schema instances (like z.preprocess, z.pipe),\n * which have internal properties that could be mistaken for schema values.\n */\nfunction isZodRawShapeCompat(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n // If it's already a Zod schema instance, it's NOT a raw shape\n if (isZodSchemaInstance(obj)) {\n return false;\n }\n // Empty objects are valid raw shapes (tools with no parameters)\n if (Object.keys(obj).length === 0) {\n return true;\n }\n // A raw shape has at least one property that is a Zod schema\n return Object.values(obj).some(isZodTypeLike);\n}\n/**\n * Converts a provided Zod schema to a Zod object if it is a ZodRawShapeCompat,\n * otherwise returns the schema as is.\n */\nfunction getZodSchemaObject(schema) {\n if (!schema) {\n return undefined;\n }\n if (isZodRawShapeCompat(schema)) {\n return objectFromShape(schema);\n }\n return schema;\n}\nfunction promptArgumentsFromSchema(schema) {\n const shape = getObjectShape(schema);\n if (!shape)\n return [];\n return Object.entries(shape).map(([name, field]) => {\n // Get description - works for both v3 and v4\n const description = getSchemaDescription(field);\n // Check if optional - works for both v3 and v4\n const isOptional = isSchemaOptional(field);\n return {\n name,\n description,\n required: !isOptional\n };\n });\n}\nfunction getMethodValue(schema) {\n const shape = getObjectShape(schema);\n const methodSchema = shape?.method;\n if (!methodSchema) {\n throw new Error('Schema is missing a method literal');\n }\n // Extract literal value - works for both v3 and v4\n const value = getLiteralValue(methodSchema);\n if (typeof value === 'string') {\n return value;\n }\n throw new Error('Schema method literal must be a string');\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","// src/server.ts\nimport { createServer as createServerHTTP } from \"http\";\n\n// src/listener.ts\nimport { Http2ServerRequest as Http2ServerRequest2 } from \"http2\";\n\n// src/request.ts\nimport { Http2ServerRequest } from \"http2\";\nimport { Readable } from \"stream\";\nvar RequestError = class extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"RequestError\";\n }\n};\nvar toRequestError = (e) => {\n if (e instanceof RequestError) {\n return e;\n }\n return new RequestError(e.message, { cause: e });\n};\nvar GlobalRequest = global.Request;\nvar Request = class extends GlobalRequest {\n constructor(input, options) {\n if (typeof input === \"object\" && getRequestCache in input) {\n input = input[getRequestCache]();\n }\n if (typeof options?.body?.getReader !== \"undefined\") {\n ;\n options.duplex ??= \"half\";\n }\n super(input, options);\n }\n};\nvar newHeadersFromIncoming = (incoming) => {\n const headerRecord = [];\n const rawHeaders = incoming.rawHeaders;\n for (let i = 0; i < rawHeaders.length; i += 2) {\n const { [i]: key, [i + 1]: value } = rawHeaders;\n if (key.charCodeAt(0) !== /*:*/\n 58) {\n headerRecord.push([key, value]);\n }\n }\n return new Headers(headerRecord);\n};\nvar wrapBodyStream = Symbol(\"wrapBodyStream\");\nvar newRequestFromIncoming = (method, url, headers, incoming, abortController) => {\n const init = {\n method,\n headers,\n signal: abortController.signal\n };\n if (method === \"TRACE\") {\n init.method = \"GET\";\n const req = new Request(url, init);\n Object.defineProperty(req, \"method\", {\n get() {\n return \"TRACE\";\n }\n });\n return req;\n }\n if (!(method === \"GET\" || method === \"HEAD\")) {\n if (\"rawBody\" in incoming && incoming.rawBody instanceof Buffer) {\n init.body = new ReadableStream({\n start(controller) {\n controller.enqueue(incoming.rawBody);\n controller.close();\n }\n });\n } else if (incoming[wrapBodyStream]) {\n let reader;\n init.body = new ReadableStream({\n async pull(controller) {\n try {\n reader ||= Readable.toWeb(incoming).getReader();\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n }\n });\n } else {\n init.body = Readable.toWeb(incoming);\n }\n }\n return new Request(url, init);\n};\nvar getRequestCache = Symbol(\"getRequestCache\");\nvar requestCache = Symbol(\"requestCache\");\nvar incomingKey = Symbol(\"incomingKey\");\nvar urlKey = Symbol(\"urlKey\");\nvar headersKey = Symbol(\"headersKey\");\nvar abortControllerKey = Symbol(\"abortControllerKey\");\nvar getAbortController = Symbol(\"getAbortController\");\nvar requestPrototype = {\n get method() {\n return this[incomingKey].method || \"GET\";\n },\n get url() {\n return this[urlKey];\n },\n get headers() {\n return this[headersKey] ||= newHeadersFromIncoming(this[incomingKey]);\n },\n [getAbortController]() {\n this[getRequestCache]();\n return this[abortControllerKey];\n },\n [getRequestCache]() {\n this[abortControllerKey] ||= new AbortController();\n return this[requestCache] ||= newRequestFromIncoming(\n this.method,\n this[urlKey],\n this.headers,\n this[incomingKey],\n this[abortControllerKey]\n );\n }\n};\n[\n \"body\",\n \"bodyUsed\",\n \"cache\",\n \"credentials\",\n \"destination\",\n \"integrity\",\n \"mode\",\n \"redirect\",\n \"referrer\",\n \"referrerPolicy\",\n \"signal\",\n \"keepalive\"\n].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n get() {\n return this[getRequestCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n value: function() {\n return this[getRequestCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(requestPrototype, Request.prototype);\nvar newRequest = (incoming, defaultHostname) => {\n const req = Object.create(requestPrototype);\n req[incomingKey] = incoming;\n const incomingUrl = incoming.url || \"\";\n if (incomingUrl[0] !== \"/\" && // short-circuit for performance. most requests are relative URL.\n (incomingUrl.startsWith(\"http://\") || incomingUrl.startsWith(\"https://\"))) {\n if (incoming instanceof Http2ServerRequest) {\n throw new RequestError(\"Absolute URL for :path is not allowed in HTTP/2\");\n }\n try {\n const url2 = new URL(incomingUrl);\n req[urlKey] = url2.href;\n } catch (e) {\n throw new RequestError(\"Invalid absolute URL\", { cause: e });\n }\n return req;\n }\n const host = (incoming instanceof Http2ServerRequest ? incoming.authority : incoming.headers.host) || defaultHostname;\n if (!host) {\n throw new RequestError(\"Missing host header\");\n }\n let scheme;\n if (incoming instanceof Http2ServerRequest) {\n scheme = incoming.scheme;\n if (!(scheme === \"http\" || scheme === \"https\")) {\n throw new RequestError(\"Unsupported scheme\");\n }\n } else {\n scheme = incoming.socket && incoming.socket.encrypted ? \"https\" : \"http\";\n }\n const url = new URL(`${scheme}://${host}${incomingUrl}`);\n if (url.hostname.length !== host.length && url.hostname !== host.replace(/:\\d+$/, \"\")) {\n throw new RequestError(\"Invalid host header\");\n }\n req[urlKey] = url.href;\n return req;\n};\n\n// src/response.ts\nvar responseCache = Symbol(\"responseCache\");\nvar getResponseCache = Symbol(\"getResponseCache\");\nvar cacheKey = Symbol(\"cache\");\nvar GlobalResponse = global.Response;\nvar Response2 = class _Response {\n #body;\n #init;\n [getResponseCache]() {\n delete this[cacheKey];\n return this[responseCache] ||= new GlobalResponse(this.#body, this.#init);\n }\n constructor(body, init) {\n let headers;\n this.#body = body;\n if (init instanceof _Response) {\n const cachedGlobalResponse = init[responseCache];\n if (cachedGlobalResponse) {\n this.#init = cachedGlobalResponse;\n this[getResponseCache]();\n return;\n } else {\n this.#init = init.#init;\n headers = new Headers(init.#init.headers);\n }\n } else {\n this.#init = init;\n }\n if (typeof body === \"string\" || typeof body?.getReader !== \"undefined\" || body instanceof Blob || body instanceof Uint8Array) {\n ;\n this[cacheKey] = [init?.status || 200, body, headers || init?.headers];\n }\n }\n get headers() {\n const cache = this[cacheKey];\n if (cache) {\n if (!(cache[2] instanceof Headers)) {\n cache[2] = new Headers(\n cache[2] || { \"content-type\": \"text/plain; charset=UTF-8\" }\n );\n }\n return cache[2];\n }\n return this[getResponseCache]().headers;\n }\n get status() {\n return this[cacheKey]?.[0] ?? this[getResponseCache]().status;\n }\n get ok() {\n const status = this.status;\n return status >= 200 && status < 300;\n }\n};\n[\"body\", \"bodyUsed\", \"redirected\", \"statusText\", \"trailers\", \"type\", \"url\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n get() {\n return this[getResponseCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n value: function() {\n return this[getResponseCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(Response2, GlobalResponse);\nObject.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);\n\n// src/utils.ts\nasync function readWithoutBlocking(readPromise) {\n return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]);\n}\nfunction writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) {\n const cancel = (error) => {\n reader.cancel(error).catch(() => {\n });\n };\n writable.on(\"close\", cancel);\n writable.on(\"error\", cancel);\n (currentReadPromise ?? reader.read()).then(flow, handleStreamError);\n return reader.closed.finally(() => {\n writable.off(\"close\", cancel);\n writable.off(\"error\", cancel);\n });\n function handleStreamError(error) {\n if (error) {\n writable.destroy(error);\n }\n }\n function onDrain() {\n reader.read().then(flow, handleStreamError);\n }\n function flow({ done, value }) {\n try {\n if (done) {\n writable.end();\n } else if (!writable.write(value)) {\n writable.once(\"drain\", onDrain);\n } else {\n return reader.read().then(flow, handleStreamError);\n }\n } catch (e) {\n handleStreamError(e);\n }\n }\n}\nfunction writeFromReadableStream(stream, writable) {\n if (stream.locked) {\n throw new TypeError(\"ReadableStream is locked.\");\n } else if (writable.destroyed) {\n return;\n }\n return writeFromReadableStreamDefaultReader(stream.getReader(), writable);\n}\nvar buildOutgoingHttpHeaders = (headers) => {\n const res = {};\n if (!(headers instanceof Headers)) {\n headers = new Headers(headers ?? void 0);\n }\n const cookies = [];\n for (const [k, v] of headers) {\n if (k === \"set-cookie\") {\n cookies.push(v);\n } else {\n res[k] = v;\n }\n }\n if (cookies.length > 0) {\n res[\"set-cookie\"] = cookies;\n }\n res[\"content-type\"] ??= \"text/plain; charset=UTF-8\";\n return res;\n};\n\n// src/utils/response/constants.ts\nvar X_ALREADY_SENT = \"x-hono-already-sent\";\n\n// src/globals.ts\nimport crypto from \"crypto\";\nif (typeof global.crypto === \"undefined\") {\n global.crypto = crypto;\n}\n\n// src/listener.ts\nvar outgoingEnded = Symbol(\"outgoingEnded\");\nvar handleRequestError = () => new Response(null, {\n status: 400\n});\nvar handleFetchError = (e) => new Response(null, {\n status: e instanceof Error && (e.name === \"TimeoutError\" || e.constructor.name === \"TimeoutError\") ? 504 : 500\n});\nvar handleResponseError = (e, outgoing) => {\n const err = e instanceof Error ? e : new Error(\"unknown error\", { cause: e });\n if (err.code === \"ERR_STREAM_PREMATURE_CLOSE\") {\n console.info(\"The user aborted a request.\");\n } else {\n console.error(e);\n if (!outgoing.headersSent) {\n outgoing.writeHead(500, { \"Content-Type\": \"text/plain\" });\n }\n outgoing.end(`Error: ${err.message}`);\n outgoing.destroy(err);\n }\n};\nvar flushHeaders = (outgoing) => {\n if (\"flushHeaders\" in outgoing && outgoing.writable) {\n outgoing.flushHeaders();\n }\n};\nvar responseViaCache = async (res, outgoing) => {\n let [status, body, header] = res[cacheKey];\n let hasContentLength = false;\n if (!header) {\n header = { \"content-type\": \"text/plain; charset=UTF-8\" };\n } else if (header instanceof Headers) {\n hasContentLength = header.has(\"content-length\");\n header = buildOutgoingHttpHeaders(header);\n } else if (Array.isArray(header)) {\n const headerObj = new Headers(header);\n hasContentLength = headerObj.has(\"content-length\");\n header = buildOutgoingHttpHeaders(headerObj);\n } else {\n for (const key in header) {\n if (key.length === 14 && key.toLowerCase() === \"content-length\") {\n hasContentLength = true;\n break;\n }\n }\n }\n if (!hasContentLength) {\n if (typeof body === \"string\") {\n header[\"Content-Length\"] = Buffer.byteLength(body);\n } else if (body instanceof Uint8Array) {\n header[\"Content-Length\"] = body.byteLength;\n } else if (body instanceof Blob) {\n header[\"Content-Length\"] = body.size;\n }\n }\n outgoing.writeHead(status, header);\n if (typeof body === \"string\" || body instanceof Uint8Array) {\n outgoing.end(body);\n } else if (body instanceof Blob) {\n outgoing.end(new Uint8Array(await body.arrayBuffer()));\n } else {\n flushHeaders(outgoing);\n await writeFromReadableStream(body, outgoing)?.catch(\n (e) => handleResponseError(e, outgoing)\n );\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar isPromise = (res) => typeof res.then === \"function\";\nvar responseViaResponseObject = async (res, outgoing, options = {}) => {\n if (isPromise(res)) {\n if (options.errorHandler) {\n try {\n res = await res;\n } catch (err) {\n const errRes = await options.errorHandler(err);\n if (!errRes) {\n return;\n }\n res = errRes;\n }\n } else {\n res = await res.catch(handleFetchError);\n }\n }\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n const resHeaderRecord = buildOutgoingHttpHeaders(res.headers);\n if (res.body) {\n const reader = res.body.getReader();\n const values = [];\n let done = false;\n let currentReadPromise = void 0;\n if (resHeaderRecord[\"transfer-encoding\"] !== \"chunked\") {\n let maxReadCount = 2;\n for (let i = 0; i < maxReadCount; i++) {\n currentReadPromise ||= reader.read();\n const chunk = await readWithoutBlocking(currentReadPromise).catch((e) => {\n console.error(e);\n done = true;\n });\n if (!chunk) {\n if (i === 1) {\n await new Promise((resolve) => setTimeout(resolve));\n maxReadCount = 3;\n continue;\n }\n break;\n }\n currentReadPromise = void 0;\n if (chunk.value) {\n values.push(chunk.value);\n }\n if (chunk.done) {\n done = true;\n break;\n }\n }\n if (done && !(\"content-length\" in resHeaderRecord)) {\n resHeaderRecord[\"content-length\"] = values.reduce((acc, value) => acc + value.length, 0);\n }\n }\n outgoing.writeHead(res.status, resHeaderRecord);\n values.forEach((value) => {\n ;\n outgoing.write(value);\n });\n if (done) {\n outgoing.end();\n } else {\n if (values.length === 0) {\n flushHeaders(outgoing);\n }\n await writeFromReadableStreamDefaultReader(reader, outgoing, currentReadPromise);\n }\n } else if (resHeaderRecord[X_ALREADY_SENT]) {\n } else {\n outgoing.writeHead(res.status, resHeaderRecord);\n outgoing.end();\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar getRequestListener = (fetchCallback, options = {}) => {\n const autoCleanupIncoming = options.autoCleanupIncoming ?? true;\n if (options.overrideGlobalObjects !== false && global.Request !== Request) {\n Object.defineProperty(global, \"Request\", {\n value: Request\n });\n Object.defineProperty(global, \"Response\", {\n value: Response2\n });\n }\n return async (incoming, outgoing) => {\n let res, req;\n try {\n req = newRequest(incoming, options.hostname);\n let incomingEnded = !autoCleanupIncoming || incoming.method === \"GET\" || incoming.method === \"HEAD\";\n if (!incomingEnded) {\n ;\n incoming[wrapBodyStream] = true;\n incoming.on(\"end\", () => {\n incomingEnded = true;\n });\n if (incoming instanceof Http2ServerRequest2) {\n ;\n outgoing[outgoingEnded] = () => {\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n outgoing.destroy();\n });\n }\n });\n }\n };\n }\n }\n outgoing.on(\"close\", () => {\n const abortController = req[abortControllerKey];\n if (abortController) {\n if (incoming.errored) {\n req[abortControllerKey].abort(incoming.errored.toString());\n } else if (!outgoing.writableFinished) {\n req[abortControllerKey].abort(\"Client connection prematurely closed.\");\n }\n }\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n });\n }\n });\n }\n });\n res = fetchCallback(req, { incoming, outgoing });\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n } catch (e) {\n if (!res) {\n if (options.errorHandler) {\n res = await options.errorHandler(req ? e : toRequestError(e));\n if (!res) {\n return;\n }\n } else if (!req) {\n res = handleRequestError();\n } else {\n res = handleFetchError(e);\n }\n } else {\n return handleResponseError(e, outgoing);\n }\n }\n try {\n return await responseViaResponseObject(res, outgoing, options);\n } catch (e) {\n return handleResponseError(e, outgoing);\n }\n };\n};\n\n// src/server.ts\nvar createAdaptorServer = (options) => {\n const fetchCallback = options.fetch;\n const requestListener = getRequestListener(fetchCallback, {\n hostname: options.hostname,\n overrideGlobalObjects: options.overrideGlobalObjects,\n autoCleanupIncoming: options.autoCleanupIncoming\n });\n const createServer = options.createServer || createServerHTTP;\n const server = createServer(options.serverOptions || {}, requestListener);\n return server;\n};\nvar serve = (options, listeningListener) => {\n const server = createAdaptorServer(options);\n server.listen(options?.port ?? 3e3, options.hostname, () => {\n const serverInfo = server.address();\n listeningListener && listeningListener(serverInfo);\n });\n return server;\n};\nexport {\n RequestError,\n createAdaptorServer,\n getRequestListener,\n serve\n};\n","/**\n * Web Standards Streamable HTTP Server Transport\n *\n * This is the core transport implementation using Web Standard APIs (Request, Response, ReadableStream).\n * It can run on any runtime that supports Web Standards: Node.js 18+, Cloudflare Workers, Deno, Bun, etc.\n *\n * For Node.js Express/HTTP compatibility, use `StreamableHTTPServerTransport` which wraps this transport.\n */\nimport { isInitializeRequest, isJSONRPCErrorResponse, isJSONRPCRequest, isJSONRPCResultResponse, JSONRPCMessageSchema, SUPPORTED_PROTOCOL_VERSIONS, DEFAULT_NEGOTIATED_PROTOCOL_VERSION } from '../types.js';\n/**\n * Server transport for Web Standards Streamable HTTP: this implements the MCP Streamable HTTP transport specification\n * using Web Standard APIs (Request, Response, ReadableStream).\n *\n * This transport works on any runtime that supports Web Standards: Node.js 18+, Cloudflare Workers, Deno, Bun, etc.\n *\n * Usage example:\n *\n * ```typescript\n * // Stateful mode - server sets the session ID\n * const statefulTransport = new WebStandardStreamableHTTPServerTransport({\n * sessionIdGenerator: () => crypto.randomUUID(),\n * });\n *\n * // Stateless mode - explicitly set session ID to undefined\n * const statelessTransport = new WebStandardStreamableHTTPServerTransport({\n * sessionIdGenerator: undefined,\n * });\n *\n * // Hono.js usage\n * app.all('/mcp', async (c) => {\n * return transport.handleRequest(c.req.raw);\n * });\n *\n * // Cloudflare Workers usage\n * export default {\n * async fetch(request: Request): Promise<Response> {\n * return transport.handleRequest(request);\n * }\n * };\n * ```\n *\n * In stateful mode:\n * - Session ID is generated and included in response headers\n * - Session ID is always included in initialization responses\n * - Requests with invalid session IDs are rejected with 404 Not Found\n * - Non-initialization requests without a session ID are rejected with 400 Bad Request\n * - State is maintained in-memory (connections, message history)\n *\n * In stateless mode:\n * - No Session ID is included in any responses\n * - No session validation is performed\n */\nexport class WebStandardStreamableHTTPServerTransport {\n constructor(options = {}) {\n this._started = false;\n this._hasHandledRequest = false;\n this._streamMapping = new Map();\n this._requestToStreamMapping = new Map();\n this._requestResponseMap = new Map();\n this._initialized = false;\n this._enableJsonResponse = false;\n this._standaloneSseStreamId = '_GET_stream';\n this.sessionIdGenerator = options.sessionIdGenerator;\n this._enableJsonResponse = options.enableJsonResponse ?? false;\n this._eventStore = options.eventStore;\n this._onsessioninitialized = options.onsessioninitialized;\n this._onsessionclosed = options.onsessionclosed;\n this._allowedHosts = options.allowedHosts;\n this._allowedOrigins = options.allowedOrigins;\n this._enableDnsRebindingProtection = options.enableDnsRebindingProtection ?? false;\n this._retryInterval = options.retryInterval;\n }\n /**\n * Starts the transport. This is required by the Transport interface but is a no-op\n * for the Streamable HTTP transport as connections are managed per-request.\n */\n async start() {\n if (this._started) {\n throw new Error('Transport already started');\n }\n this._started = true;\n }\n /**\n * Helper to create a JSON error response\n */\n createJsonErrorResponse(status, code, message, options) {\n const error = { code, message };\n if (options?.data !== undefined) {\n error.data = options.data;\n }\n return new Response(JSON.stringify({\n jsonrpc: '2.0',\n error,\n id: null\n }), {\n status,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n });\n }\n /**\n * Validates request headers for DNS rebinding protection.\n * @returns Error response if validation fails, undefined if validation passes.\n */\n validateRequestHeaders(req) {\n // Skip validation if protection is not enabled\n if (!this._enableDnsRebindingProtection) {\n return undefined;\n }\n // Validate Host header if allowedHosts is configured\n if (this._allowedHosts && this._allowedHosts.length > 0) {\n const hostHeader = req.headers.get('host');\n if (!hostHeader || !this._allowedHosts.includes(hostHeader)) {\n const error = `Invalid Host header: ${hostHeader}`;\n this.onerror?.(new Error(error));\n return this.createJsonErrorResponse(403, -32000, error);\n }\n }\n // Validate Origin header if allowedOrigins is configured\n if (this._allowedOrigins && this._allowedOrigins.length > 0) {\n const originHeader = req.headers.get('origin');\n if (originHeader && !this._allowedOrigins.includes(originHeader)) {\n const error = `Invalid Origin header: ${originHeader}`;\n this.onerror?.(new Error(error));\n return this.createJsonErrorResponse(403, -32000, error);\n }\n }\n return undefined;\n }\n /**\n * Handles an incoming HTTP request, whether GET, POST, or DELETE\n * Returns a Response object (Web Standard)\n */\n async handleRequest(req, options) {\n // In stateless mode (no sessionIdGenerator), each request must use a fresh transport.\n // Reusing a stateless transport causes message ID collisions between clients.\n if (!this.sessionIdGenerator && this._hasHandledRequest) {\n throw new Error('Stateless transport cannot be reused across requests. Create a new transport per request.');\n }\n this._hasHandledRequest = true;\n // Validate request headers for DNS rebinding protection\n const validationError = this.validateRequestHeaders(req);\n if (validationError) {\n return validationError;\n }\n switch (req.method) {\n case 'POST':\n return this.handlePostRequest(req, options);\n case 'GET':\n return this.handleGetRequest(req);\n case 'DELETE':\n return this.handleDeleteRequest(req);\n default:\n return this.handleUnsupportedRequest();\n }\n }\n /**\n * Writes a priming event to establish resumption capability.\n * Only sends if eventStore is configured (opt-in for resumability) and\n * the client's protocol version supports empty SSE data (>= 2025-11-25).\n */\n async writePrimingEvent(controller, encoder, streamId, protocolVersion) {\n if (!this._eventStore) {\n return;\n }\n // Priming events have empty data which older clients cannot handle.\n // Only send priming events to clients with protocol version >= 2025-11-25\n // which includes the fix for handling empty SSE data.\n if (protocolVersion < '2025-11-25') {\n return;\n }\n const primingEventId = await this._eventStore.storeEvent(streamId, {});\n let primingEvent = `id: ${primingEventId}\\ndata: \\n\\n`;\n if (this._retryInterval !== undefined) {\n primingEvent = `id: ${primingEventId}\\nretry: ${this._retryInterval}\\ndata: \\n\\n`;\n }\n controller.enqueue(encoder.encode(primingEvent));\n }\n /**\n * Handles GET requests for SSE stream\n */\n async handleGetRequest(req) {\n // The client MUST include an Accept header, listing text/event-stream as a supported content type.\n const acceptHeader = req.headers.get('accept');\n if (!acceptHeader?.includes('text/event-stream')) {\n this.onerror?.(new Error('Not Acceptable: Client must accept text/event-stream'));\n return this.createJsonErrorResponse(406, -32000, 'Not Acceptable: Client must accept text/event-stream');\n }\n // If an Mcp-Session-Id is returned by the server during initialization,\n // clients using the Streamable HTTP transport MUST include it\n // in the Mcp-Session-Id header on all of their subsequent HTTP requests.\n const sessionError = this.validateSession(req);\n if (sessionError) {\n return sessionError;\n }\n const protocolError = this.validateProtocolVersion(req);\n if (protocolError) {\n return protocolError;\n }\n // Handle resumability: check for Last-Event-ID header\n if (this._eventStore) {\n const lastEventId = req.headers.get('last-event-id');\n if (lastEventId) {\n return this.replayEvents(lastEventId);\n }\n }\n // Check if there's already an active standalone SSE stream for this session\n if (this._streamMapping.get(this._standaloneSseStreamId) !== undefined) {\n // Only one GET SSE stream is allowed per session\n this.onerror?.(new Error('Conflict: Only one SSE stream is allowed per session'));\n return this.createJsonErrorResponse(409, -32000, 'Conflict: Only one SSE stream is allowed per session');\n }\n const encoder = new TextEncoder();\n let streamController;\n // Create a ReadableStream with a controller we can use to push SSE events\n const readable = new ReadableStream({\n start: controller => {\n streamController = controller;\n },\n cancel: () => {\n // Stream was cancelled by client\n this._streamMapping.delete(this._standaloneSseStreamId);\n }\n });\n const headers = {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache, no-transform',\n Connection: 'keep-alive'\n };\n // After initialization, always include the session ID if we have one\n if (this.sessionId !== undefined) {\n headers['mcp-session-id'] = this.sessionId;\n }\n // Store the stream mapping with the controller for pushing data\n this._streamMapping.set(this._standaloneSseStreamId, {\n controller: streamController,\n encoder,\n cleanup: () => {\n this._streamMapping.delete(this._standaloneSseStreamId);\n try {\n streamController.close();\n }\n catch {\n // Controller might already be closed\n }\n }\n });\n return new Response(readable, { headers });\n }\n /**\n * Replays events that would have been sent after the specified event ID\n * Only used when resumability is enabled\n */\n async replayEvents(lastEventId) {\n if (!this._eventStore) {\n this.onerror?.(new Error('Event store not configured'));\n return this.createJsonErrorResponse(400, -32000, 'Event store not configured');\n }\n try {\n // If getStreamIdForEventId is available, use it for conflict checking\n let streamId;\n if (this._eventStore.getStreamIdForEventId) {\n streamId = await this._eventStore.getStreamIdForEventId(lastEventId);\n if (!streamId) {\n this.onerror?.(new Error('Invalid event ID format'));\n return this.createJsonErrorResponse(400, -32000, 'Invalid event ID format');\n }\n // Check conflict with the SAME streamId we'll use for mapping\n if (this._streamMapping.get(streamId) !== undefined) {\n this.onerror?.(new Error('Conflict: Stream already has an active connection'));\n return this.createJsonErrorResponse(409, -32000, 'Conflict: Stream already has an active connection');\n }\n }\n const headers = {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache, no-transform',\n Connection: 'keep-alive'\n };\n if (this.sessionId !== undefined) {\n headers['mcp-session-id'] = this.sessionId;\n }\n // Create a ReadableStream with controller for SSE\n const encoder = new TextEncoder();\n let streamController;\n const readable = new ReadableStream({\n start: controller => {\n streamController = controller;\n },\n cancel: () => {\n // Stream was cancelled by client\n // Cleanup will be handled by the mapping\n }\n });\n // Replay events - returns the streamId for backwards compatibility\n const replayedStreamId = await this._eventStore.replayEventsAfter(lastEventId, {\n send: async (eventId, message) => {\n const success = this.writeSSEEvent(streamController, encoder, message, eventId);\n if (!success) {\n this.onerror?.(new Error('Failed replay events'));\n try {\n streamController.close();\n }\n catch {\n // Controller might already be closed\n }\n }\n }\n });\n this._streamMapping.set(replayedStreamId, {\n controller: streamController,\n encoder,\n cleanup: () => {\n this._streamMapping.delete(replayedStreamId);\n try {\n streamController.close();\n }\n catch {\n // Controller might already be closed\n }\n }\n });\n return new Response(readable, { headers });\n }\n catch (error) {\n this.onerror?.(error);\n return this.createJsonErrorResponse(500, -32000, 'Error replaying events');\n }\n }\n /**\n * Writes an event to an SSE stream via controller with proper formatting\n */\n writeSSEEvent(controller, encoder, message, eventId) {\n try {\n let eventData = `event: message\\n`;\n // Include event ID if provided - this is important for resumability\n if (eventId) {\n eventData += `id: ${eventId}\\n`;\n }\n eventData += `data: ${JSON.stringify(message)}\\n\\n`;\n controller.enqueue(encoder.encode(eventData));\n return true;\n }\n catch (error) {\n this.onerror?.(error);\n return false;\n }\n }\n /**\n * Handles unsupported requests (PUT, PATCH, etc.)\n */\n handleUnsupportedRequest() {\n this.onerror?.(new Error('Method not allowed.'));\n return new Response(JSON.stringify({\n jsonrpc: '2.0',\n error: {\n code: -32000,\n message: 'Method not allowed.'\n },\n id: null\n }), {\n status: 405,\n headers: {\n Allow: 'GET, POST, DELETE',\n 'Content-Type': 'application/json'\n }\n });\n }\n /**\n * Handles POST requests containing JSON-RPC messages\n */\n async handlePostRequest(req, options) {\n try {\n // Validate the Accept header\n const acceptHeader = req.headers.get('accept');\n // The client MUST include an Accept header, listing both application/json and text/event-stream as supported content types.\n if (!acceptHeader?.includes('application/json') || !acceptHeader.includes('text/event-stream')) {\n this.onerror?.(new Error('Not Acceptable: Client must accept both application/json and text/event-stream'));\n return this.createJsonErrorResponse(406, -32000, 'Not Acceptable: Client must accept both application/json and text/event-stream');\n }\n const ct = req.headers.get('content-type');\n if (!ct || !ct.includes('application/json')) {\n this.onerror?.(new Error('Unsupported Media Type: Content-Type must be application/json'));\n return this.createJsonErrorResponse(415, -32000, 'Unsupported Media Type: Content-Type must be application/json');\n }\n // Build request info from headers and URL\n const requestInfo = {\n headers: Object.fromEntries(req.headers.entries()),\n url: new URL(req.url)\n };\n let rawMessage;\n if (options?.parsedBody !== undefined) {\n rawMessage = options.parsedBody;\n }\n else {\n try {\n rawMessage = await req.json();\n }\n catch {\n this.onerror?.(new Error('Parse error: Invalid JSON'));\n return this.createJsonErrorResponse(400, -32700, 'Parse error: Invalid JSON');\n }\n }\n let messages;\n // handle batch and single messages\n try {\n if (Array.isArray(rawMessage)) {\n messages = rawMessage.map(msg => JSONRPCMessageSchema.parse(msg));\n }\n else {\n messages = [JSONRPCMessageSchema.parse(rawMessage)];\n }\n }\n catch {\n this.onerror?.(new Error('Parse error: Invalid JSON-RPC message'));\n return this.createJsonErrorResponse(400, -32700, 'Parse error: Invalid JSON-RPC message');\n }\n // Check if this is an initialization request\n // https://spec.modelcontextprotocol.io/specification/2025-03-26/basic/lifecycle/\n const isInitializationRequest = messages.some(isInitializeRequest);\n if (isInitializationRequest) {\n // If it's a server with session management and the session ID is already set we should reject the request\n // to avoid re-initialization.\n if (this._initialized && this.sessionId !== undefined) {\n this.onerror?.(new Error('Invalid Request: Server already initialized'));\n return this.createJsonErrorResponse(400, -32600, 'Invalid Request: Server already initialized');\n }\n if (messages.length > 1) {\n this.onerror?.(new Error('Invalid Request: Only one initialization request is allowed'));\n return this.createJsonErrorResponse(400, -32600, 'Invalid Request: Only one initialization request is allowed');\n }\n this.sessionId = this.sessionIdGenerator?.();\n this._initialized = true;\n // If we have a session ID and an onsessioninitialized handler, call it immediately\n // This is needed in cases where the server needs to keep track of multiple sessions\n if (this.sessionId && this._onsessioninitialized) {\n await Promise.resolve(this._onsessioninitialized(this.sessionId));\n }\n }\n if (!isInitializationRequest) {\n // If an Mcp-Session-Id is returned by the server during initialization,\n // clients using the Streamable HTTP transport MUST include it\n // in the Mcp-Session-Id header on all of their subsequent HTTP requests.\n const sessionError = this.validateSession(req);\n if (sessionError) {\n return sessionError;\n }\n // Mcp-Protocol-Version header is required for all requests after initialization.\n const protocolError = this.validateProtocolVersion(req);\n if (protocolError) {\n return protocolError;\n }\n }\n // check if it contains requests\n const hasRequests = messages.some(isJSONRPCRequest);\n if (!hasRequests) {\n // if it only contains notifications or responses, return 202\n for (const message of messages) {\n this.onmessage?.(message, { authInfo: options?.authInfo, requestInfo });\n }\n return new Response(null, { status: 202 });\n }\n // The default behavior is to use SSE streaming\n // but in some cases server will return JSON responses\n const streamId = crypto.randomUUID();\n // Extract protocol version for priming event decision.\n // For initialize requests, get from request params.\n // For other requests, get from header (already validated).\n const initRequest = messages.find(m => isInitializeRequest(m));\n const clientProtocolVersion = initRequest\n ? initRequest.params.protocolVersion\n : (req.headers.get('mcp-protocol-version') ?? DEFAULT_NEGOTIATED_PROTOCOL_VERSION);\n if (this._enableJsonResponse) {\n // For JSON response mode, return a Promise that resolves when all responses are ready\n return new Promise(resolve => {\n this._streamMapping.set(streamId, {\n resolveJson: resolve,\n cleanup: () => {\n this._streamMapping.delete(streamId);\n }\n });\n for (const message of messages) {\n if (isJSONRPCRequest(message)) {\n this._requestToStreamMapping.set(message.id, streamId);\n }\n }\n for (const message of messages) {\n this.onmessage?.(message, { authInfo: options?.authInfo, requestInfo });\n }\n });\n }\n // SSE streaming mode - use ReadableStream with controller for more reliable data pushing\n const encoder = new TextEncoder();\n let streamController;\n const readable = new ReadableStream({\n start: controller => {\n streamController = controller;\n },\n cancel: () => {\n // Stream was cancelled by client\n this._streamMapping.delete(streamId);\n }\n });\n const headers = {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive'\n };\n // After initialization, always include the session ID if we have one\n if (this.sessionId !== undefined) {\n headers['mcp-session-id'] = this.sessionId;\n }\n // Store the response for this request to send messages back through this connection\n // We need to track by request ID to maintain the connection\n for (const message of messages) {\n if (isJSONRPCRequest(message)) {\n this._streamMapping.set(streamId, {\n controller: streamController,\n encoder,\n cleanup: () => {\n this._streamMapping.delete(streamId);\n try {\n streamController.close();\n }\n catch {\n // Controller might already be closed\n }\n }\n });\n this._requestToStreamMapping.set(message.id, streamId);\n }\n }\n // Write priming event if event store is configured (after mapping is set up)\n await this.writePrimingEvent(streamController, encoder, streamId, clientProtocolVersion);\n // handle each message\n for (const message of messages) {\n // Build closeSSEStream callback for requests when eventStore is configured\n // AND client supports resumability (protocol version >= 2025-11-25).\n // Old clients can't resume if the stream is closed early because they\n // didn't receive a priming event with an event ID.\n let closeSSEStream;\n let closeStandaloneSSEStream;\n if (isJSONRPCRequest(message) && this._eventStore && clientProtocolVersion >= '2025-11-25') {\n closeSSEStream = () => {\n this.closeSSEStream(message.id);\n };\n closeStandaloneSSEStream = () => {\n this.closeStandaloneSSEStream();\n };\n }\n this.onmessage?.(message, { authInfo: options?.authInfo, requestInfo, closeSSEStream, closeStandaloneSSEStream });\n }\n // The server SHOULD NOT close the SSE stream before sending all JSON-RPC responses\n // This will be handled by the send() method when responses are ready\n return new Response(readable, { status: 200, headers });\n }\n catch (error) {\n // return JSON-RPC formatted error\n this.onerror?.(error);\n return this.createJsonErrorResponse(400, -32700, 'Parse error', { data: String(error) });\n }\n }\n /**\n * Handles DELETE requests to terminate sessions\n */\n async handleDeleteRequest(req) {\n const sessionError = this.validateSession(req);\n if (sessionError) {\n return sessionError;\n }\n const protocolError = this.validateProtocolVersion(req);\n if (protocolError) {\n return protocolError;\n }\n await Promise.resolve(this._onsessionclosed?.(this.sessionId));\n await this.close();\n return new Response(null, { status: 200 });\n }\n /**\n * Validates session ID for non-initialization requests.\n * Returns Response error if invalid, undefined otherwise\n */\n validateSession(req) {\n if (this.sessionIdGenerator === undefined) {\n // If the sessionIdGenerator ID is not set, the session management is disabled\n // and we don't need to validate the session ID\n return undefined;\n }\n if (!this._initialized) {\n // If the server has not been initialized yet, reject all requests\n this.onerror?.(new Error('Bad Request: Server not initialized'));\n return this.createJsonErrorResponse(400, -32000, 'Bad Request: Server not initialized');\n }\n const sessionId = req.headers.get('mcp-session-id');\n if (!sessionId) {\n // Non-initialization requests without a session ID should return 400 Bad Request\n this.onerror?.(new Error('Bad Request: Mcp-Session-Id header is required'));\n return this.createJsonErrorResponse(400, -32000, 'Bad Request: Mcp-Session-Id header is required');\n }\n if (sessionId !== this.sessionId) {\n // Reject requests with invalid session ID with 404 Not Found\n this.onerror?.(new Error('Session not found'));\n return this.createJsonErrorResponse(404, -32001, 'Session not found');\n }\n return undefined;\n }\n /**\n * Validates the MCP-Protocol-Version header on incoming requests.\n *\n * For initialization: Version negotiation handles unknown versions gracefully\n * (server responds with its supported version).\n *\n * For subsequent requests with MCP-Protocol-Version header:\n * - Accept if in supported list\n * - 400 if unsupported\n *\n * For HTTP requests without the MCP-Protocol-Version header:\n * - Accept and default to the version negotiated at initialization\n */\n validateProtocolVersion(req) {\n const protocolVersion = req.headers.get('mcp-protocol-version');\n if (protocolVersion !== null && !SUPPORTED_PROTOCOL_VERSIONS.includes(protocolVersion)) {\n this.onerror?.(new Error(`Bad Request: Unsupported protocol version: ${protocolVersion}` +\n ` (supported versions: ${SUPPORTED_PROTOCOL_VERSIONS.join(', ')})`));\n return this.createJsonErrorResponse(400, -32000, `Bad Request: Unsupported protocol version: ${protocolVersion} (supported versions: ${SUPPORTED_PROTOCOL_VERSIONS.join(', ')})`);\n }\n return undefined;\n }\n async close() {\n // Close all SSE connections\n this._streamMapping.forEach(({ cleanup }) => {\n cleanup();\n });\n this._streamMapping.clear();\n // Clear any pending responses\n this._requestResponseMap.clear();\n this.onclose?.();\n }\n /**\n * Close an SSE stream for a specific request, triggering client reconnection.\n * Use this to implement polling behavior during long-running operations -\n * client will reconnect after the retry interval specified in the priming event.\n */\n closeSSEStream(requestId) {\n const streamId = this._requestToStreamMapping.get(requestId);\n if (!streamId)\n return;\n const stream = this._streamMapping.get(streamId);\n if (stream) {\n stream.cleanup();\n }\n }\n /**\n * Close the standalone GET SSE stream, triggering client reconnection.\n * Use this to implement polling behavior for server-initiated notifications.\n */\n closeStandaloneSSEStream() {\n const stream = this._streamMapping.get(this._standaloneSseStreamId);\n if (stream) {\n stream.cleanup();\n }\n }\n async send(message, options) {\n let requestId = options?.relatedRequestId;\n if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) {\n // If the message is a response, use the request ID from the message\n requestId = message.id;\n }\n // Check if this message should be sent on the standalone SSE stream (no request ID)\n // Ignore notifications from tools (which have relatedRequestId set)\n // Those will be sent via dedicated response SSE streams\n if (requestId === undefined) {\n // For standalone SSE streams, we can only send requests and notifications\n if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) {\n throw new Error('Cannot send a response on a standalone SSE stream unless resuming a previous client request');\n }\n // Generate and store event ID if event store is provided\n // Store even if stream is disconnected so events can be replayed on reconnect\n let eventId;\n if (this._eventStore) {\n // Stores the event and gets the generated event ID\n eventId = await this._eventStore.storeEvent(this._standaloneSseStreamId, message);\n }\n const standaloneSse = this._streamMapping.get(this._standaloneSseStreamId);\n if (standaloneSse === undefined) {\n // Stream is disconnected - event is stored for replay, nothing more to do\n return;\n }\n // Send the message to the standalone SSE stream\n if (standaloneSse.controller && standaloneSse.encoder) {\n this.writeSSEEvent(standaloneSse.controller, standaloneSse.encoder, message, eventId);\n }\n return;\n }\n // Get the response for this request\n const streamId = this._requestToStreamMapping.get(requestId);\n if (!streamId) {\n throw new Error(`No connection established for request ID: ${String(requestId)}`);\n }\n const stream = this._streamMapping.get(streamId);\n if (!this._enableJsonResponse && stream?.controller && stream?.encoder) {\n // For SSE responses, generate event ID if event store is provided\n let eventId;\n if (this._eventStore) {\n eventId = await this._eventStore.storeEvent(streamId, message);\n }\n // Write the event to the response stream\n this.writeSSEEvent(stream.controller, stream.encoder, message, eventId);\n }\n if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) {\n this._requestResponseMap.set(requestId, message);\n const relatedIds = Array.from(this._requestToStreamMapping.entries())\n .filter(([_, sid]) => sid === streamId)\n .map(([id]) => id);\n // Check if we have responses for all requests using this connection\n const allResponsesReady = relatedIds.every(id => this._requestResponseMap.has(id));\n if (allResponsesReady) {\n if (!stream) {\n throw new Error(`No connection established for request ID: ${String(requestId)}`);\n }\n if (this._enableJsonResponse && stream.resolveJson) {\n // All responses ready, send as JSON\n const headers = {\n 'Content-Type': 'application/json'\n };\n if (this.sessionId !== undefined) {\n headers['mcp-session-id'] = this.sessionId;\n }\n const responses = relatedIds.map(id => this._requestResponseMap.get(id));\n if (responses.length === 1) {\n stream.resolveJson(new Response(JSON.stringify(responses[0]), { status: 200, headers }));\n }\n else {\n stream.resolveJson(new Response(JSON.stringify(responses), { status: 200, headers }));\n }\n }\n else {\n // End the SSE stream\n stream.cleanup();\n }\n // Clean up\n for (const id of relatedIds) {\n this._requestResponseMap.delete(id);\n this._requestToStreamMapping.delete(id);\n }\n }\n }\n }\n}\n//# sourceMappingURL=webStandardStreamableHttp.js.map","/**\n * Node.js HTTP Streamable HTTP Server Transport\n *\n * This is a thin wrapper around `WebStandardStreamableHTTPServerTransport` that provides\n * compatibility with Node.js HTTP server (IncomingMessage/ServerResponse).\n *\n * For web-standard environments (Cloudflare Workers, Deno, Bun), use `WebStandardStreamableHTTPServerTransport` directly.\n */\nimport { getRequestListener } from '@hono/node-server';\nimport { WebStandardStreamableHTTPServerTransport } from './webStandardStreamableHttp.js';\n/**\n * Server transport for Streamable HTTP: this implements the MCP Streamable HTTP transport specification.\n * It supports both SSE streaming and direct HTTP responses.\n *\n * This is a wrapper around `WebStandardStreamableHTTPServerTransport` that provides Node.js HTTP compatibility.\n * It uses the `@hono/node-server` library to convert between Node.js HTTP and Web Standard APIs.\n *\n * Usage example:\n *\n * ```typescript\n * // Stateful mode - server sets the session ID\n * const statefulTransport = new StreamableHTTPServerTransport({\n * sessionIdGenerator: () => randomUUID(),\n * });\n *\n * // Stateless mode - explicitly set session ID to undefined\n * const statelessTransport = new StreamableHTTPServerTransport({\n * sessionIdGenerator: undefined,\n * });\n *\n * // Using with pre-parsed request body\n * app.post('/mcp', (req, res) => {\n * transport.handleRequest(req, res, req.body);\n * });\n * ```\n *\n * In stateful mode:\n * - Session ID is generated and included in response headers\n * - Session ID is always included in initialization responses\n * - Requests with invalid session IDs are rejected with 404 Not Found\n * - Non-initialization requests without a session ID are rejected with 400 Bad Request\n * - State is maintained in-memory (connections, message history)\n *\n * In stateless mode:\n * - No Session ID is included in any responses\n * - No session validation is performed\n */\nexport class StreamableHTTPServerTransport {\n constructor(options = {}) {\n // Store auth and parsedBody per request for passing through to handleRequest\n this._requestContext = new WeakMap();\n this._webStandardTransport = new WebStandardStreamableHTTPServerTransport(options);\n // Create a request listener that wraps the web standard transport\n // getRequestListener converts Node.js HTTP to Web Standard and properly handles SSE streaming\n // overrideGlobalObjects: false prevents Hono from overwriting global Response, which would\n // break frameworks like Next.js whose response classes extend the native Response\n this._requestListener = getRequestListener(async (webRequest) => {\n // Get context if available (set during handleRequest)\n const context = this._requestContext.get(webRequest);\n return this._webStandardTransport.handleRequest(webRequest, {\n authInfo: context?.authInfo,\n parsedBody: context?.parsedBody\n });\n }, { overrideGlobalObjects: false });\n }\n /**\n * Gets the session ID for this transport instance.\n */\n get sessionId() {\n return this._webStandardTransport.sessionId;\n }\n /**\n * Sets callback for when the transport is closed.\n */\n set onclose(handler) {\n this._webStandardTransport.onclose = handler;\n }\n get onclose() {\n return this._webStandardTransport.onclose;\n }\n /**\n * Sets callback for transport errors.\n */\n set onerror(handler) {\n this._webStandardTransport.onerror = handler;\n }\n get onerror() {\n return this._webStandardTransport.onerror;\n }\n /**\n * Sets callback for incoming messages.\n */\n set onmessage(handler) {\n this._webStandardTransport.onmessage = handler;\n }\n get onmessage() {\n return this._webStandardTransport.onmessage;\n }\n /**\n * Starts the transport. This is required by the Transport interface but is a no-op\n * for the Streamable HTTP transport as connections are managed per-request.\n */\n async start() {\n return this._webStandardTransport.start();\n }\n /**\n * Closes the transport and all active connections.\n */\n async close() {\n return this._webStandardTransport.close();\n }\n /**\n * Sends a JSON-RPC message through the transport.\n */\n async send(message, options) {\n return this._webStandardTransport.send(message, options);\n }\n /**\n * Handles an incoming HTTP request, whether GET or POST.\n *\n * This method converts Node.js HTTP objects to Web Standard Request/Response\n * and delegates to the underlying WebStandardStreamableHTTPServerTransport.\n *\n * @param req - Node.js IncomingMessage, optionally with auth property from middleware\n * @param res - Node.js ServerResponse\n * @param parsedBody - Optional pre-parsed body from body-parser middleware\n */\n async handleRequest(req, res, parsedBody) {\n // Store context for this request to pass through auth and parsedBody\n // We need to intercept the request creation to attach this context\n const authInfo = req.auth;\n // Create a custom handler that includes our context\n // overrideGlobalObjects: false prevents Hono from overwriting global Response, which would\n // break frameworks like Next.js whose response classes extend the native Response\n const handler = getRequestListener(async (webRequest) => {\n return this._webStandardTransport.handleRequest(webRequest, {\n authInfo,\n parsedBody\n });\n }, { overrideGlobalObjects: false });\n // Delegate to the request listener which handles all the Node.js <-> Web Standard conversion\n // including proper SSE streaming support\n await handler(req, res);\n }\n /**\n * Close an SSE stream for a specific request, triggering client reconnection.\n * Use this to implement polling behavior during long-running operations -\n * client will reconnect after the retry interval specified in the priming event.\n */\n closeSSEStream(requestId) {\n this._webStandardTransport.closeSSEStream(requestId);\n }\n /**\n * Close the standalone GET SSE stream, triggering client reconnection.\n * Use this to implement polling behavior for server-initiated notifications.\n */\n closeStandaloneSSEStream() {\n this._webStandardTransport.closeStandaloneSSEStream();\n }\n}\n//# sourceMappingURL=streamableHttp.js.map","import{Protocol as WQ}from\"@modelcontextprotocol/sdk/shared/protocol.js\";import{CallToolRequestSchema as jQ,CallToolResultSchema as BQ,EmptyResultSchema as KQ,ListResourcesResultSchema as NQ,ListToolsRequestSchema as YQ,PingRequestSchema as FQ,ReadResourceResultSchema as zQ}from\"@modelcontextprotocol/sdk/types.js\";import{JSONRPCMessageSchema as m}from\"@modelcontextprotocol/sdk/types.js\";var F=\"2026-01-26\";var z=\"ui/notifications/tool-input-partial\";class j{eventTarget;eventSource;messageListener;constructor(Z=window.parent,$){this.eventTarget=Z;this.eventSource=$;this.messageListener=(J)=>{if($&&J.source!==this.eventSource){console.debug(\"Ignoring message from unknown source\",J);return}let X=m.safeParse(J.data);if(X.success)console.debug(\"Parsed message\",X.data),this.onmessage?.(X.data);else if(J.data?.jsonrpc!==\"2.0\")console.debug(\"Ignoring non-JSON-RPC message\",X.error.message,J);else console.error(\"Failed to parse message\",X.error.message,J),this.onerror?.(Error(\"Invalid JSON-RPC message received: \"+X.error.message))}}async start(){window.addEventListener(\"message\",this.messageListener)}async send(Z,$){if(Z.method!==z)console.debug(\"Sending message\",Z);this.eventTarget.postMessage(Z,\"*\")}async close(){window.removeEventListener(\"message\",this.messageListener),this.onclose?.()}onclose;onerror;onmessage;sessionId;setProtocolVersion}import{z as Q}from\"zod/v4\";import{ContentBlockSchema as x,CallToolResultSchema as c,EmbeddedResourceSchema as p,ImplementationSchema as S,RequestIdSchema as l,ResourceLinkSchema as r,ToolSchema as n}from\"@modelcontextprotocol/sdk/types.js\";var b=Q.union([Q.literal(\"light\"),Q.literal(\"dark\")]).describe(\"Color theme preference for the host environment.\"),L=Q.union([Q.literal(\"inline\"),Q.literal(\"fullscreen\"),Q.literal(\"pip\")]).describe(\"Display mode for UI presentation.\"),i=Q.union([Q.literal(\"--color-background-primary\"),Q.literal(\"--color-background-secondary\"),Q.literal(\"--color-background-tertiary\"),Q.literal(\"--color-background-inverse\"),Q.literal(\"--color-background-ghost\"),Q.literal(\"--color-background-info\"),Q.literal(\"--color-background-danger\"),Q.literal(\"--color-background-success\"),Q.literal(\"--color-background-warning\"),Q.literal(\"--color-background-disabled\"),Q.literal(\"--color-text-primary\"),Q.literal(\"--color-text-secondary\"),Q.literal(\"--color-text-tertiary\"),Q.literal(\"--color-text-inverse\"),Q.literal(\"--color-text-ghost\"),Q.literal(\"--color-text-info\"),Q.literal(\"--color-text-danger\"),Q.literal(\"--color-text-success\"),Q.literal(\"--color-text-warning\"),Q.literal(\"--color-text-disabled\"),Q.literal(\"--color-border-primary\"),Q.literal(\"--color-border-secondary\"),Q.literal(\"--color-border-tertiary\"),Q.literal(\"--color-border-inverse\"),Q.literal(\"--color-border-ghost\"),Q.literal(\"--color-border-info\"),Q.literal(\"--color-border-danger\"),Q.literal(\"--color-border-success\"),Q.literal(\"--color-border-warning\"),Q.literal(\"--color-border-disabled\"),Q.literal(\"--color-ring-primary\"),Q.literal(\"--color-ring-secondary\"),Q.literal(\"--color-ring-inverse\"),Q.literal(\"--color-ring-info\"),Q.literal(\"--color-ring-danger\"),Q.literal(\"--color-ring-success\"),Q.literal(\"--color-ring-warning\"),Q.literal(\"--font-sans\"),Q.literal(\"--font-mono\"),Q.literal(\"--font-weight-normal\"),Q.literal(\"--font-weight-medium\"),Q.literal(\"--font-weight-semibold\"),Q.literal(\"--font-weight-bold\"),Q.literal(\"--font-text-xs-size\"),Q.literal(\"--font-text-sm-size\"),Q.literal(\"--font-text-md-size\"),Q.literal(\"--font-text-lg-size\"),Q.literal(\"--font-heading-xs-size\"),Q.literal(\"--font-heading-sm-size\"),Q.literal(\"--font-heading-md-size\"),Q.literal(\"--font-heading-lg-size\"),Q.literal(\"--font-heading-xl-size\"),Q.literal(\"--font-heading-2xl-size\"),Q.literal(\"--font-heading-3xl-size\"),Q.literal(\"--font-text-xs-line-height\"),Q.literal(\"--font-text-sm-line-height\"),Q.literal(\"--font-text-md-line-height\"),Q.literal(\"--font-text-lg-line-height\"),Q.literal(\"--font-heading-xs-line-height\"),Q.literal(\"--font-heading-sm-line-height\"),Q.literal(\"--font-heading-md-line-height\"),Q.literal(\"--font-heading-lg-line-height\"),Q.literal(\"--font-heading-xl-line-height\"),Q.literal(\"--font-heading-2xl-line-height\"),Q.literal(\"--font-heading-3xl-line-height\"),Q.literal(\"--border-radius-xs\"),Q.literal(\"--border-radius-sm\"),Q.literal(\"--border-radius-md\"),Q.literal(\"--border-radius-lg\"),Q.literal(\"--border-radius-xl\"),Q.literal(\"--border-radius-full\"),Q.literal(\"--border-width-regular\"),Q.literal(\"--shadow-hairline\"),Q.literal(\"--shadow-sm\"),Q.literal(\"--shadow-md\"),Q.literal(\"--shadow-lg\")]).describe(\"CSS variable keys available to MCP apps for theming.\"),o=Q.record(i.describe(`Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses \\`Record<K, string | undefined>\\` rather than \\`Partial<Record<K, string>>\\`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation.`),Q.union([Q.string(),Q.undefined()]).describe(`Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses \\`Record<K, string | undefined>\\` rather than \\`Partial<Record<K, string>>\\`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation.`)).describe(`Style variables for theming MCP apps.\n\nIndividual style keys are optional - hosts may provide any subset of these values.\nValues are strings containing CSS values (colors, sizes, font stacks, etc.).\n\nNote: This type uses \\`Record<K, string | undefined>\\` rather than \\`Partial<Record<K, string>>\\`\nfor compatibility with Zod schema generation. Both are functionally equivalent for validation.`),a=Q.object({method:Q.literal(\"ui/open-link\"),params:Q.object({url:Q.string().describe(\"URL to open in the host's browser\")})}),O=Q.object({isError:Q.boolean().optional().describe(\"True if the host failed to open the URL (e.g., due to security policy).\")}).passthrough(),I=Q.object({isError:Q.boolean().optional().describe(\"True if the download failed (e.g., user cancelled or host denied).\")}).passthrough(),w=Q.object({isError:Q.boolean().optional().describe(\"True if the host rejected or failed to deliver the message.\")}).passthrough(),s=Q.object({method:Q.literal(\"ui/notifications/sandbox-proxy-ready\"),params:Q.object({})}),B=Q.object({connectDomains:Q.array(Q.string()).optional().describe(`Origins for network requests (fetch/XHR/WebSocket).\n\n- Maps to CSP \\`connect-src\\` directive\n- Empty or omitted → no network connections (secure default)`),resourceDomains:Q.array(Q.string()).optional().describe(\"Origins for static resources (images, scripts, stylesheets, fonts, media).\\n\\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\\n- Wildcard subdomains supported: `https://*.example.com`\\n- Empty or omitted → no network resources (secure default)\"),frameDomains:Q.array(Q.string()).optional().describe(\"Origins for nested iframes.\\n\\n- Maps to CSP `frame-src` directive\\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)\"),baseUriDomains:Q.array(Q.string()).optional().describe(\"Allowed base URIs for the document.\\n\\n- Maps to CSP `base-uri` directive\\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)\")}),K=Q.object({camera:Q.object({}).optional().describe(\"Request camera access.\\n\\nMaps to Permission Policy `camera` feature.\"),microphone:Q.object({}).optional().describe(\"Request microphone access.\\n\\nMaps to Permission Policy `microphone` feature.\"),geolocation:Q.object({}).optional().describe(\"Request geolocation access.\\n\\nMaps to Permission Policy `geolocation` feature.\"),clipboardWrite:Q.object({}).optional().describe(\"Request clipboard write access.\\n\\nMaps to Permission Policy `clipboard-write` feature.\")}),t=Q.object({method:Q.literal(\"ui/notifications/size-changed\"),params:Q.object({width:Q.number().optional().describe(\"New width in pixels.\"),height:Q.number().optional().describe(\"New height in pixels.\")})}),A=Q.object({method:Q.literal(\"ui/notifications/tool-input\"),params:Q.object({arguments:Q.record(Q.string(),Q.unknown().describe(\"Complete tool call arguments as key-value pairs.\")).optional().describe(\"Complete tool call arguments as key-value pairs.\")})}),P=Q.object({method:Q.literal(\"ui/notifications/tool-input-partial\"),params:Q.object({arguments:Q.record(Q.string(),Q.unknown().describe(\"Partial tool call arguments (incomplete, may change).\")).optional().describe(\"Partial tool call arguments (incomplete, may change).\")})}),H=Q.object({method:Q.literal(\"ui/notifications/tool-cancelled\"),params:Q.object({reason:Q.string().optional().describe('Optional reason for the cancellation (e.g., \"user action\", \"timeout\").')})}),g=Q.object({fonts:Q.string().optional()}),C=Q.object({variables:o.optional().describe(\"CSS variables for theming the app.\"),css:g.optional().describe(\"CSS blocks that apps can inject.\")}),_=Q.object({method:Q.literal(\"ui/resource-teardown\"),params:Q.object({})}),e=Q.record(Q.string(),Q.unknown()),q=Q.object({text:Q.object({}).optional().describe(\"Host supports text content blocks.\"),image:Q.object({}).optional().describe(\"Host supports image content blocks.\"),audio:Q.object({}).optional().describe(\"Host supports audio content blocks.\"),resource:Q.object({}).optional().describe(\"Host supports resource content blocks.\"),resourceLink:Q.object({}).optional().describe(\"Host supports resource link content blocks.\"),structuredContent:Q.object({}).optional().describe(\"Host supports structured content.\")}),y=Q.object({experimental:Q.object({}).optional().describe(\"Experimental features (structure TBD).\"),openLinks:Q.object({}).optional().describe(\"Host supports opening external URLs.\"),downloadFile:Q.object({}).optional().describe(\"Host supports file downloads via ui/download-file.\"),serverTools:Q.object({listChanged:Q.boolean().optional().describe(\"Host supports tools/list_changed notifications.\")}).optional().describe(\"Host can proxy tool calls to the MCP server.\"),serverResources:Q.object({listChanged:Q.boolean().optional().describe(\"Host supports resources/list_changed notifications.\")}).optional().describe(\"Host can proxy resource reads to the MCP server.\"),logging:Q.object({}).optional().describe(\"Host accepts log messages.\"),sandbox:Q.object({permissions:K.optional().describe(\"Permissions granted by the host (camera, microphone, geolocation).\"),csp:B.optional().describe(\"CSP domains approved by the host.\")}).optional().describe(\"Sandbox configuration applied by the host.\"),updateModelContext:q.optional().describe(\"Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns.\"),message:q.optional().describe(\"Host supports receiving content messages (ui/message) from the view.\")}),u=Q.object({experimental:Q.object({}).optional().describe(\"Experimental features (structure TBD).\"),tools:Q.object({listChanged:Q.boolean().optional().describe(\"App supports tools/list_changed notifications.\")}).optional().describe(\"App exposes MCP-style tools that the host can call.\"),availableDisplayModes:Q.array(L).optional().describe(\"Display modes the app supports.\")}),QQ=Q.object({method:Q.literal(\"ui/notifications/initialized\"),params:Q.object({}).optional()}),ZQ=Q.object({csp:B.optional().describe(\"Content Security Policy configuration for UI resources.\"),permissions:K.optional().describe(\"Sandbox permissions requested by the UI resource.\"),domain:Q.string().optional().describe(`Dedicated origin for view sandbox.\n\nUseful when views need stable, dedicated origins for OAuth callbacks, CORS policies, or API key allowlists.\n\n**Host-dependent:** The format and validation rules for this field are determined by each host. Servers MUST consult host-specific documentation for the expected domain format. Common patterns include:\n- Hash-based subdomains (e.g., \\`{hash}.claudemcpcontent.com\\`)\n- URL-derived subdomains (e.g., \\`www-example-com.oaiusercontent.com\\`)\n\nIf omitted, host uses default sandbox origin (typically per-conversation).`),prefersBorder:Q.boolean().optional().describe(`Visual boundary preference - true if view prefers a visible border.\n\nBoolean requesting whether a visible border and background is provided by the host. Specifying an explicit value for this is recommended because hosts' defaults may vary.\n\n- \\`true\\`: request visible border + background\n- \\`false\\`: request no visible border + background\n- omitted: host decides border`)}),$Q=Q.object({method:Q.literal(\"ui/request-display-mode\"),params:Q.object({mode:L.describe(\"The display mode being requested.\")})}),T=Q.object({mode:L.describe(\"The display mode that was actually set. May differ from requested if not supported.\")}).passthrough(),f=Q.union([Q.literal(\"model\"),Q.literal(\"app\")]).describe(\"Tool visibility scope - who can access the tool.\"),JQ=Q.object({resourceUri:Q.string().optional(),visibility:Q.array(f).optional().describe(`Who can access this tool. Default: [\"model\", \"app\"]\n- \"model\": Tool visible to and callable by the agent\n- \"app\": Tool callable by the app from this server only`)}),kQ=Q.object({mimeTypes:Q.array(Q.string()).optional().describe('Array of supported MIME types for UI resources.\\nMust include `\"text/html;profile=mcp-app\"` for MCP Apps support.')}),XQ=Q.object({method:Q.literal(\"ui/download-file\"),params:Q.object({contents:Q.array(Q.union([p,r])).describe(\"Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.\")})}),VQ=Q.object({method:Q.literal(\"ui/message\"),params:Q.object({role:Q.literal(\"user\").describe('Message role, currently only \"user\" is supported.'),content:Q.array(x).describe(\"Message content blocks (text, image, etc.).\")})}),DQ=Q.object({method:Q.literal(\"ui/notifications/sandbox-resource-ready\"),params:Q.object({html:Q.string().describe(\"HTML content to load into the inner iframe.\"),sandbox:Q.string().optional().describe(\"Optional override for the inner iframe's sandbox attribute.\"),csp:B.optional().describe(\"CSP configuration from resource metadata.\"),permissions:K.optional().describe(\"Sandbox permissions from resource metadata.\")})}),U=Q.object({method:Q.literal(\"ui/notifications/tool-result\"),params:c.describe(\"Standard MCP tool execution result.\")}),k=Q.object({toolInfo:Q.object({id:l.optional().describe(\"JSON-RPC id of the tools/call request.\"),tool:n.describe(\"Tool definition including name, inputSchema, etc.\")}).optional().describe(\"Metadata of the tool call that instantiated this App.\"),theme:b.optional().describe(\"Current color theme preference.\"),styles:C.optional().describe(\"Style configuration for theming the app.\"),displayMode:L.optional().describe(\"How the UI is currently displayed.\"),availableDisplayModes:Q.array(L).optional().describe(\"Display modes the host supports.\"),containerDimensions:Q.union([Q.object({height:Q.number().describe(\"Fixed container height in pixels.\")}),Q.object({maxHeight:Q.union([Q.number(),Q.undefined()]).optional().describe(\"Maximum container height in pixels.\")})]).and(Q.union([Q.object({width:Q.number().describe(\"Fixed container width in pixels.\")}),Q.object({maxWidth:Q.union([Q.number(),Q.undefined()]).optional().describe(\"Maximum container width in pixels.\")})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other\ncontainer holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:Q.string().optional().describe(\"User's language and region preference in BCP 47 format.\"),timeZone:Q.string().optional().describe(\"User's timezone in IANA format.\"),userAgent:Q.string().optional().describe(\"Host application identifier.\"),platform:Q.union([Q.literal(\"web\"),Q.literal(\"desktop\"),Q.literal(\"mobile\")]).optional().describe(\"Platform type for responsive design decisions.\"),deviceCapabilities:Q.object({touch:Q.boolean().optional().describe(\"Whether the device supports touch input.\"),hover:Q.boolean().optional().describe(\"Whether the device supports hover interactions.\")}).optional().describe(\"Device input capabilities.\"),safeAreaInsets:Q.object({top:Q.number().describe(\"Top safe area inset in pixels.\"),right:Q.number().describe(\"Right safe area inset in pixels.\"),bottom:Q.number().describe(\"Bottom safe area inset in pixels.\"),left:Q.number().describe(\"Left safe area inset in pixels.\")}).optional().describe(\"Mobile safe area boundaries in pixels.\")}).passthrough(),E=Q.object({method:Q.literal(\"ui/notifications/host-context-changed\"),params:k.describe(\"Partial context update containing only changed fields.\")}),LQ=Q.object({method:Q.literal(\"ui/update-model-context\"),params:Q.object({content:Q.array(x).optional().describe(\"Context content blocks (text, image, etc.).\"),structuredContent:Q.record(Q.string(),Q.unknown().describe(\"Structured content for machine-readable context data.\")).optional().describe(\"Structured content for machine-readable context data.\")})}),GQ=Q.object({method:Q.literal(\"ui/initialize\"),params:Q.object({appInfo:S.describe(\"App identification (name and version).\"),appCapabilities:u.describe(\"Features and capabilities this app provides.\"),protocolVersion:Q.string().describe(\"Protocol version this app supports.\")})}),R=Q.object({protocolVersion:Q.string().describe('Negotiated protocol version string (e.g., \"2025-11-21\").'),hostInfo:S.describe(\"Host application identification and version.\"),hostCapabilities:y.describe(\"Features and capabilities provided by the host.\"),hostContext:k.describe(\"Rich context about the host environment.\")}).passthrough();var v=\"ui/resourceUri\",d=\"text/html;profile=mcp-app\";class qQ extends WQ{_appInfo;_capabilities;options;_hostCapabilities;_hostInfo;_hostContext;constructor(Z,$={},J={autoResize:!0}){super(J);this._appInfo=Z;this._capabilities=$;this.options=J;this.setRequestHandler(FQ,(X)=>{return console.log(\"Received ping:\",X.params),{}}),this.onhostcontextchanged=()=>{}}getHostCapabilities(){return this._hostCapabilities}getHostVersion(){return this._hostInfo}getHostContext(){return this._hostContext}set ontoolinput(Z){this.setNotificationHandler(A,($)=>Z($.params))}set ontoolinputpartial(Z){this.setNotificationHandler(P,($)=>Z($.params))}set ontoolresult(Z){this.setNotificationHandler(U,($)=>Z($.params))}set ontoolcancelled(Z){this.setNotificationHandler(H,($)=>Z($.params))}set onhostcontextchanged(Z){this.setNotificationHandler(E,($)=>{this._hostContext={...this._hostContext,...$.params},Z($.params)})}set onteardown(Z){this.setRequestHandler(_,($,J)=>Z($.params,J))}set oncalltool(Z){this.setRequestHandler(jQ,($,J)=>Z($.params,J))}set onlisttools(Z){this.setRequestHandler(YQ,($,J)=>Z($.params,J))}assertCapabilityForMethod(Z){}assertRequestHandlerCapability(Z){switch(Z){case\"tools/call\":case\"tools/list\":if(!this._capabilities.tools)throw Error(`Client does not support tool capability (required for ${Z})`);return;case\"ping\":case\"ui/resource-teardown\":return;default:throw Error(`No handler for method ${Z} registered`)}}assertNotificationCapability(Z){}assertTaskCapability(Z){throw Error(\"Tasks are not supported in MCP Apps\")}assertTaskHandlerCapability(Z){throw Error(\"Task handlers are not supported in MCP Apps\")}async callServerTool(Z,$){if(typeof Z===\"string\")throw Error(`callServerTool() expects an object as its first argument, but received a string (\"${Z}\"). Did you mean: callServerTool({ name: \"${Z}\", arguments: { ... } })?`);return await this.request({method:\"tools/call\",params:Z},BQ,$)}async readServerResource(Z,$){return await this.request({method:\"resources/read\",params:Z},zQ,$)}async listServerResources(Z,$){return await this.request({method:\"resources/list\",params:Z},NQ,$)}sendMessage(Z,$){return this.request({method:\"ui/message\",params:Z},w,$)}sendLog(Z){return this.notification({method:\"notifications/message\",params:Z})}updateModelContext(Z,$){return this.request({method:\"ui/update-model-context\",params:Z},KQ,$)}openLink(Z,$){return this.request({method:\"ui/open-link\",params:Z},O,$)}sendOpenLink=this.openLink;downloadFile(Z,$){return this.request({method:\"ui/download-file\",params:Z},I,$)}requestDisplayMode(Z,$){return this.request({method:\"ui/request-display-mode\",params:Z},T,$)}sendSizeChanged(Z){return this.notification({method:\"ui/notifications/size-changed\",params:Z})}setupSizeChangedNotifications(){let Z=!1,$=0,J=0,X=()=>{if(Z)return;Z=!0,requestAnimationFrame(()=>{Z=!1;let V=document.documentElement,G=V.style.width,W=V.style.height;V.style.width=\"fit-content\",V.style.height=\"max-content\";let M=V.getBoundingClientRect();V.style.width=G,V.style.height=W;let h=window.innerWidth-V.clientWidth,N=Math.ceil(M.width+h),Y=Math.ceil(M.height);if(N!==$||Y!==J)$=N,J=Y,this.sendSizeChanged({width:N,height:Y})})};X();let D=new ResizeObserver(X);return D.observe(document.documentElement),D.observe(document.body),()=>D.disconnect()}async connect(Z=new j(window.parent,window.parent),$){if(this.transport)throw Error(\"App is already connected. Call close() before connecting again.\");await super.connect(Z);try{let J=await this.request({method:\"ui/initialize\",params:{appCapabilities:this._capabilities,appInfo:this._appInfo,protocolVersion:F}},R,$);if(J===void 0)throw Error(`Server sent invalid initialize result: ${J}`);if(this._hostCapabilities=J.hostCapabilities,this._hostInfo=J.hostInfo,this._hostContext=J.hostContext,await this.notification({method:\"ui/notifications/initialized\"}),this.options?.autoResize)this.setupSizeChangedNotifications()}catch(J){throw this.close(),J}}}function uZ(Z,$,J,X){let D=J._meta,V=D.ui,G=D[v],W=D;if(V?.resourceUri&&!G)W={...D,[v]:V.resourceUri};else if(G&&!V?.resourceUri)W={...D,ui:{...V,resourceUri:G}};return Z.registerTool($,{...J,_meta:W},X)}function fZ(Z,$,J,X,D){return Z.registerResource($,J,{mimeType:d,...X},D)}var OQ=\"io.modelcontextprotocol/ui\";function dZ(Z){if(!Z)return;return Z.extensions?.[OQ]}export{uZ as registerAppTool,fZ as registerAppResource,dZ as getUiCapability,v as RESOURCE_URI_META_KEY,d as RESOURCE_MIME_TYPE,OQ as EXTENSION_ID};\n","import { createServer, type IncomingMessage, type ServerResponse } from 'node:http';\nimport type { AddressInfo } from 'node:net';\nimport { URL } from 'node:url';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { FAVICON_BASE64, FAVICON_BUFFER } from './favicon.js';\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport { randomUUID } from 'node:crypto';\nimport { registerAppTool, RESOURCE_MIME_TYPE } from '@modelcontextprotocol/ext-apps/server';\nimport type { RegisteredResource, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nimport { z } from 'zod';\nimport { type MCPServerConfig, type MCPServerHandle, type SimulationWithDist } from './types.js';\n\nexport type { MCPServerConfig, MCPServerHandle, SimulationWithDist } from './types.js';\n\n// Dev server URLs for Vite HMR (localhost only — used for direct connections like ChatGPT).\n// Mutable: updated by runMCPServer once the actual port is known.\nlet localDevServerUrl = 'http://localhost:8000';\nlet localHmrWsUrl = 'ws://localhost:24678';\n\n/**\n * Detect whether this request needs pre-built HTML (no Vite HMR).\n *\n * Claude's iframe sandbox blocks HTTP script sources, so it can't load from the\n * local Vite dev server. We detect Claude by its user-agent and serve the\n * self-contained production build instead.\n *\n * ChatGPT also connects through tunnels but its browser can reach localhost via\n * the local-network-access permission, so it gets Vite HMR.\n */\nfunction needsProdBuild(headers: Record<string, string | string[] | undefined>): boolean {\n const ua = headers['user-agent'];\n const userAgent = typeof ua === 'string' ? ua : Array.isArray(ua) ? ua[0] : '';\n return /claude/i.test(userAgent ?? '');\n}\n\n/**\n * Read pre-built resource HTML (production mode).\n * The HTML file is generated by `sunpeak build` with JS and CSS inlined.\n */\nfunction readResourceHtmlProd(distPath: string): string {\n const htmlPath = path.resolve(distPath);\n\n if (!fs.existsSync(htmlPath)) {\n throw new Error(\n `Resource HTML file not found at ${htmlPath}. Run \"sunpeak build\" to generate the built app.`\n );\n }\n\n return fs.readFileSync(htmlPath, 'utf8');\n}\n\n/**\n * Generate HTML that loads from Vite dev server with HMR.\n * Used for direct connections (e.g. ChatGPT connecting to localhost).\n */\nfunction getViteResourceHtml(srcPath: string): string {\n // Extract component name from path:\n // /src/resources/albums/albums.tsx -> AlbumsResource\n const rawFileName = srcPath.split('/').pop() ?? '';\n const fileName = rawFileName.replace(/\\.tsx$/, '');\n const componentName =\n fileName\n .split('-')\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join('') + 'Resource';\n\n const devServerUrl = localDevServerUrl;\n\n // Encode srcPath and componentName for the virtual entry module\n const entryParams = new URLSearchParams({ src: srcPath, component: componentName });\n // Vite serves virtual modules via /@id/ prefix\n const virtualModuleUrl = `${devServerUrl}/@id/virtual:sunpeak-entry?${entryParams.toString()}`;\n\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</head>\n<body>\n <script type=\"module\">\n import { injectIntoGlobalHook } from \"${devServerUrl}/@react-refresh\";\n injectIntoGlobalHook(window);\n window.$RefreshReg$ = () => {};\n window.$RefreshSig$ = () => (type) => type;\n window.__vite_plugin_react_preamble_installed__ = true;\n </script>\n <script type=\"module\" src=\"${devServerUrl}/@vite/client\"></script>\n <script type=\"module\">\n (async () => {\n if (!navigator.permissions?.query) return;\n const protocol = window.location.protocol;\n if (protocol !== 'http:' && protocol !== 'https:') return;\n const host = window.location.hostname;\n const isLoopback = host === 'localhost' || /^127\\\\.(\\\\d{1,3})\\\\.(\\\\d{1,3})\\\\.(\\\\d{1,3})$/.test(host) || host === '::1';\n if (isLoopback) return;\n try {\n const status = await navigator.permissions.query({ name: \"local-network-access\" });\n if (status.state === \"denied\") {\n document.getElementById('root').innerHTML = '<div style=\"background:#fef2f2;border:2px solid #ef4444;border-radius:8px;padding:16px;text-align:center;font-family:system-ui,sans-serif;\"><div style=\"color:#ef4444;font-size:18px;font-weight:600;margin-bottom:8px;\">Local network access permission is denied</div><div style=\"color:#ef4444;font-size:14px;\">Please enable it in your browser settings. <a href=\"https://developer.chrome.com/blog/local-network-access\" target=\"_blank\" style=\"color:#ef4444;text-decoration:underline;\">Learn more</a></div></div>';\n }\n } catch (e) {}\n })();\n </script>\n <div id=\"root\"></div>\n <script type=\"module\" src=\"${virtualModuleUrl}\"></script>\n</body>\n</html>`;\n}\n\n/**\n * Get resource HTML content.\n *\n * - Direct connections (ChatGPT): Vite dev server HTML with HMR\n * - Tunnel connections (Claude via ngrok): Pre-built HTML with everything inlined\n */\nfunction getResourceHtml(\n simulation: SimulationWithDist,\n viteMode: boolean,\n prodBuild: boolean\n): string {\n if (viteMode && simulation.srcPath && !prodBuild) {\n return getViteResourceHtml(simulation.srcPath);\n }\n return readResourceHtmlProd(simulation.distPath!);\n}\n\n/**\n * Inject localhost Vite dev server URLs into CSP metadata.\n * Only needed for direct connections where the iframe loads scripts from localhost.\n */\nfunction injectViteCSP(existingMeta: Record<string, unknown> | undefined): Record<string, unknown> {\n const meta = existingMeta ?? {};\n const ui = (meta.ui as Record<string, unknown>) ?? {};\n const csp = (ui.csp as Record<string, unknown>) ?? {};\n\n const existingResourceDomains = (csp.resourceDomains as string[]) ?? [];\n const resourceDomains = existingResourceDomains.includes(localDevServerUrl)\n ? existingResourceDomains\n : [...existingResourceDomains, localDevServerUrl];\n\n const existingConnectDomains = (csp.connectDomains as string[]) ?? [];\n const connectDomains = [...existingConnectDomains];\n if (!connectDomains.includes(localDevServerUrl)) connectDomains.push(localDevServerUrl);\n if (!connectDomains.includes(localHmrWsUrl)) connectDomains.push(localHmrWsUrl);\n\n return {\n ...meta,\n ui: {\n ...ui,\n csp: { ...csp, resourceDomains, connectDomains },\n },\n };\n}\n\ntype AppServerResult = {\n server: McpServer;\n resourceHandles: Map<string, RegisteredResource>;\n toolHandles: {\n handle: RegisteredTool;\n resourceName: string;\n toolMeta: Record<string, unknown>;\n }[];\n};\n\n// Server-startup timestamp for cache-busting resource URIs.\n// Stable within a dev server session (so ChatGPT cross-session reads work)\n// but changes on restart so Claude picks up rebuilt resources.\nconst startupTimestamp = Date.now().toString(36);\n\nfunction createAppServer(\n config: MCPServerConfig,\n simulations: SimulationWithDist[],\n viteMode: boolean\n): AppServerResult {\n const { name = 'sunpeak-app', version = '0.1.0' } = config;\n\n const mcpServer = new McpServer(\n {\n name,\n version,\n icons: [\n {\n src: `data:image/png;base64,${FAVICON_BASE64}`,\n mimeType: 'image/png',\n sizes: ['128x128'],\n },\n ],\n },\n { capabilities: { resources: {}, tools: {} } }\n );\n\n // Track registered resource URIs and tool names to avoid duplicate registration\n // (multiple simulations can share the same resource or tool, e.g. review-diff and review-post)\n const registeredUriSet = new Set<string>();\n const registeredToolNames = new Set<string>();\n const resourceHandles = new Map<string, RegisteredResource>();\n const toolHandles: AppServerResult['toolHandles'] = [];\n\n // Register each simulation's tool and resource\n for (const simulation of simulations) {\n const resource = simulation.resource;\n const tool = simulation.tool;\n const toolResult = simulation.toolResult ?? { structuredContent: null };\n const toolMeta = (tool._meta as Record<string, unknown>) ?? {};\n\n if (resource) {\n // ── UI tool: register resource + tool via ext-apps helper ──\n\n // Derive a URI from the resource name with a startup timestamp for cache-busting.\n // Stable within a dev server session (ChatGPT reads URIs from tools/list in one\n // session and fetches content in another), but changes on restart so hosts like\n // Claude pick up rebuilt resources.\n const uri = (resource.uri as string) ?? `ui://${resource.name as string}-${startupTimestamp}`;\n const resourceName = resource.name as string;\n const resourceMeta = (resource._meta as Record<string, unknown>) ?? {};\n\n // Register the resource directly via SDK (not ext-apps wrapper) to capture the\n // RegisteredResource handle for URI updates on rebuild (cache-busting).\n if (!registeredUriSet.has(uri)) {\n registeredUriSet.add(uri);\n const listMeta = viteMode ? injectViteCSP(resourceMeta) : resourceMeta;\n const handle = mcpServer.registerResource(\n resourceName,\n uri,\n {\n mimeType: RESOURCE_MIME_TYPE,\n description: resource.description as string | undefined,\n _meta: listMeta,\n },\n async (\n readUri: URL,\n extra: { requestInfo?: { headers?: Record<string, string | string[] | undefined> } }\n ) => {\n // Claude's sandbox blocks HTTP script sources, so serve pre-built HTML.\n // ChatGPT can reach localhost, so it gets Vite HMR.\n const prodBuild = needsProdBuild(\n (extra?.requestInfo?.headers as Record<string, string | string[] | undefined>) ?? {}\n );\n const readMeta = viteMode && !prodBuild ? injectViteCSP(resourceMeta) : resourceMeta;\n\n let content: string;\n try {\n content = getResourceHtml(simulation, viteMode, prodBuild);\n } catch (error) {\n console.error(`[MCP] ReadResource error for ${readUri.href}:`, error);\n throw error;\n }\n const sizeKB = (content.length / 1024).toFixed(1);\n const servedVite = viteMode && simulation.srcPath && !prodBuild;\n console.log(\n `[MCP] ReadResource: ${readUri.href} → ${sizeKB}KB${servedVite ? ' (vite)' : ' (built)'}`\n );\n\n return {\n contents: [\n {\n // Use readUri (not closure variable) so the response URI matches after updates\n uri: readUri.href,\n mimeType: RESOURCE_MIME_TYPE,\n text: content,\n _meta: readMeta,\n },\n ],\n };\n }\n );\n resourceHandles.set(resourceName, handle);\n }\n\n // Register the tool using ext-apps helper (normalizes ui/resourceUri metadata).\n // Capture the returned RegisteredTool handle for metadata updates on rebuild.\n // Note: inputSchema from simulation is JSON Schema, not Zod, so we omit it here\n // (simulation mode doesn't validate inputs - just logs what was called)\n const fullToolMeta = {\n ...toolMeta,\n ui: {\n resourceUri: uri,\n // Preserve tool visibility from simulation metadata if declared\n ...((toolMeta.ui as Record<string, unknown>)?.visibility\n ? { visibility: (toolMeta.ui as Record<string, unknown>).visibility }\n : {}),\n },\n };\n const toolHandle = registerAppTool(\n mcpServer,\n tool.name as string,\n {\n description: tool.description as string | undefined,\n _meta: fullToolMeta,\n },\n async (extra) => {\n // Access arguments from request context (no inputSchema = no parsed args)\n const args =\n (extra as { request?: { params?: { arguments?: Record<string, unknown> } } }).request\n ?.params?.arguments ?? {};\n const argKeys = Object.keys(args);\n const argsStr = argKeys.length > 0 ? `{${argKeys.join(', ')}}` : '{}';\n\n // Use real handler when available (Prod Tools mode), fall back to simulation mock\n const realHandler = simulation.handler;\n if (realHandler) {\n console.log(`[MCP] CallTool: ${tool.name}${argsStr} → live handler`);\n try {\n const result = await (\n realHandler as (args: Record<string, unknown>, extra: unknown) => unknown\n )(args, extra);\n if (typeof result === 'string') {\n return { content: [{ type: 'text' as const, text: result }] };\n }\n return result as { content: { type: 'text'; text: string }[] };\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error(`[MCP] CallTool error (${tool.name}): ${msg}`);\n return {\n content: [{ type: 'text' as const, text: `Error: ${msg}` }],\n isError: true,\n };\n }\n }\n\n const hasStructuredContent = toolResult?.structuredContent != null;\n console.log(\n `[MCP] CallTool: ${tool.name}${argsStr} → ${hasStructuredContent ? 'structured' : 'text'}`\n );\n\n return {\n content: [\n {\n type: 'text' as const,\n text: `Rendered ${tool.description}!`,\n },\n ],\n structuredContent:\n (toolResult?.structuredContent as Record<string, unknown>) ?? undefined,\n };\n }\n );\n toolHandles.push({ handle: toolHandle, resourceName, toolMeta: fullToolMeta });\n } else if (!registeredToolNames.has(tool.name as string)) {\n registeredToolNames.add(tool.name as string);\n // ── Plain tool (no UI): register directly via mcpServer ──\n // Use the real handler if available (loaded via Vite SSR in dev mode),\n // otherwise fall back to mock response from simulation data.\n //\n // Use a passthrough Zod schema so the MCP SDK passes args to the handler.\n // We can't use the tool's own Zod schema because it's loaded via Vite SSR\n // from a different Zod module instance, causing isZodSchemaInstance checks\n // to fail. A passthrough schema from the same Zod instance as the SDK\n // accepts any arguments and forwards them to the handler.\n const realHandler = simulation.handler;\n mcpServer.registerTool(\n tool.name as string,\n {\n description: tool.description as string | undefined,\n // Use passthrough so the SDK passes all args to the handler without stripping.\n // We can't use the tool's own Zod schema because it's loaded via Vite SSR\n // from a different Zod module instance, causing isZodSchemaInstance checks to fail.\n inputSchema: z.object({}).passthrough(),\n annotations: tool.annotations as Record<string, unknown> | undefined,\n _meta: toolMeta,\n },\n async (args, extra) => {\n const argKeys = Object.keys(args);\n const argsStr = argKeys.length > 0 ? `{${argKeys.join(', ')}}` : '{}';\n console.log(`[MCP] CallTool: ${tool.name}${argsStr}`);\n\n if (realHandler) {\n try {\n const result = await realHandler(args, extra);\n if (typeof result === 'string') {\n return { content: [{ type: 'text' as const, text: result }] };\n }\n return result as { content: { type: 'text'; text: string }[] };\n } catch (error) {\n console.error(`[MCP] Handler error for ${tool.name}:`, error);\n return {\n isError: true,\n content: [\n {\n type: 'text' as const,\n text: `Error: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n };\n }\n }\n\n // Fallback: mock response from simulation data\n return {\n content: [\n {\n type: 'text' as const,\n text: `Called ${tool.description}!`,\n },\n ],\n structuredContent:\n (toolResult?.structuredContent as Record<string, unknown>) ?? undefined,\n };\n }\n );\n }\n }\n\n const uiToolCount = simulations.filter((s) => s.resource).length;\n const plainToolCount = simulations.length - uiToolCount;\n console.log(\n `[MCP] Registered ${simulations.length} tool(s) (${uiToolCount} UI, ${plainToolCount} plain), ${registeredUriSet.size} resource(s)`\n );\n\n return { server: mcpServer, resourceHandles, toolHandles };\n}\n\ntype SessionRecord = {\n server: McpServer;\n transport: StreamableHTTPServerTransport;\n /** True for localhost connections (ChatGPT, simulator) — they use Vite HMR. */\n isLocal: boolean;\n lastActivity: number;\n /** Resource handles for URI cache-busting on rebuild. Keyed by resource name. */\n resourceHandles: Map<string, RegisteredResource>;\n /** Tool handles for metadata cache-busting on rebuild. */\n toolHandles: AppServerResult['toolHandles'];\n};\n\n/** How long an idle session lives before being cleaned up (5 minutes). */\nconst SESSION_IDLE_TIMEOUT_MS = 5 * 60 * 1000;\n\n/**\n * Check if the request originates from localhost.\n * Local connections (ChatGPT, simulator) use Vite HMR for live content updates.\n */\nfunction isLocalConnection(req: IncomingMessage): boolean {\n const addr = req.socket.remoteAddress;\n return addr === '127.0.0.1' || addr === '::1' || addr === '::ffff:127.0.0.1';\n}\n\nconst sessions = new Map<string, SessionRecord>();\n\nconst MCP_PATH = '/mcp';\n\nconst CORS_HEADERS = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers':\n 'content-type, accept, authorization, mcp-session-id, ngrok-skip-browser-warning',\n 'Access-Control-Expose-Headers': 'mcp-session-id',\n} as const;\n\n// Periodically clean up idle sessions.\n// Closing the server triggers transport.onclose which handles session map cleanup.\nconst cleanupInterval = setInterval(() => {\n const now = Date.now();\n for (const [id, session] of sessions) {\n if (now - session.lastActivity > SESSION_IDLE_TIMEOUT_MS) {\n console.log(`[MCP] Session expired: ${id.substring(0, 8)}...`);\n void session.server.close();\n }\n }\n}, 60_000);\ncleanupInterval.unref();\n\nasync function handleMcpRequest(\n req: IncomingMessage,\n res: ServerResponse,\n config: MCPServerConfig,\n simulations: SimulationWithDist[],\n viteMode: boolean\n) {\n // Set CORS headers for all MCP responses\n for (const [key, value] of Object.entries(CORS_HEADERS)) {\n res.setHeader(key, value);\n }\n\n // Parse body for POST requests\n let parsedBody: unknown;\n if (req.method === 'POST') {\n const chunks: Buffer[] = [];\n await new Promise<void>((resolve, reject) => {\n req.on('data', (chunk: Buffer | string) => {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk as string));\n });\n req.on('end', resolve);\n req.on('error', reject);\n });\n const rawBody = Buffer.concat(chunks).toString('utf8');\n try {\n parsedBody = JSON.parse(rawBody);\n const parsed = parsedBody as { method?: string; params?: Record<string, unknown> };\n if (parsed.method) {\n const sid = req.headers['mcp-session-id'] as string | undefined;\n const sidStr = sid ? ` (${sid.substring(0, 8)}...)` : '';\n const extra =\n parsed.method === 'resources/read' ? ` uri=${JSON.stringify(parsed.params?.uri)}` : '';\n console.log(`[MCP] ← ${parsed.method}${extra}${sidStr}`);\n }\n } catch {\n res.writeHead(400).end('Invalid JSON');\n return;\n }\n }\n\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n // Route to existing session\n if (sessionId) {\n const session = sessions.get(sessionId);\n if (!session) {\n res.writeHead(404).end('Unknown session');\n return;\n }\n session.lastActivity = Date.now();\n await session.transport.handleRequest(req, res, parsedBody);\n return;\n }\n\n // New session (POST without session ID = initialization)\n if (req.method === 'POST') {\n const isLocal = isLocalConnection(req);\n const { server, resourceHandles, toolHandles } = createAppServer(config, simulations, viteMode);\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n onsessioninitialized: (id) => {\n sessions.set(id, {\n server,\n transport,\n isLocal,\n lastActivity: Date.now(),\n resourceHandles,\n toolHandles,\n });\n const origin = isLocal ? 'local' : 'tunnel';\n console.log(\n `[MCP] Session started: ${id.substring(0, 8)}... (${origin}, ${sessions.size} active)`\n );\n },\n onsessionclosed: (id) => {\n sessions.delete(id);\n console.log(`[MCP] Session closed: ${id.substring(0, 8)}... (${sessions.size} active)`);\n },\n });\n\n transport.onerror = (error: Error) => {\n // Claude's client probes with an Accept header that doesn't include text/event-stream,\n // then retries correctly. Downgrade this expected negotiation error to a warning.\n if (error.message?.includes('Not Acceptable')) {\n console.warn(`[MCP] Accept header negotiation (expected with some clients)`);\n return;\n }\n const id = transport.sessionId;\n console.error(`[MCP] Transport error${id ? ` (${id.substring(0, 8)}...)` : ''}:`, error);\n };\n\n transport.onclose = () => {\n const id = transport.sessionId;\n if (id && sessions.has(id)) {\n sessions.delete(id);\n console.log(`[MCP] Session closed: ${id.substring(0, 8)}... (${sessions.size} active)`);\n }\n };\n\n await server.connect(transport);\n await transport.handleRequest(req, res, parsedBody);\n return;\n }\n\n // No session ID and not POST → invalid\n res.writeHead(400).end('Bad Request: session ID required');\n}\n\n// Type for Vite dev server (minimal interface we need)\ninterface ViteDevServer {\n middlewares: {\n (req: IncomingMessage, res: ServerResponse, next?: () => void): void;\n };\n ws: {\n handleUpgrade: (\n request: IncomingMessage,\n socket: import('node:stream').Duplex,\n head: Buffer\n ) => void;\n };\n}\n\n/**\n * Run the MCP server with the specified configuration.\n *\n * @param config - Server configuration with simulations.\n * @returns Handle for controlling the running server (e.g. cache invalidation).\n */\nexport function runMCPServer(config: MCPServerConfig): MCPServerHandle {\n const portEnv = Number(process.env.PORT ?? 8000);\n const port = config.port ?? (Number.isFinite(portEnv) ? portEnv : 8000);\n const { simulations } = config;\n\n // Update module-level URLs so resource HTML and CSP point to the right ports.\n // These are read lazily (on request), so updating them before listen is fine.\n localDevServerUrl = `http://localhost:${port}`;\n if (config.hmrPort) {\n localHmrWsUrl = `ws://localhost:${config.hmrPort}`;\n }\n\n // Check if Vite dev server is provided\n const viteServer = config.viteServer as ViteDevServer | undefined;\n const viteMode = !!viteServer;\n\n const httpServer = createServer(async (req: IncomingMessage, res: ServerResponse) => {\n if (!req.url) {\n res.writeHead(400).end('Missing URL');\n return;\n }\n\n const url = new URL(req.url, `http://${req.headers.host ?? 'localhost'}`);\n\n // CORS preflight for all routes\n if (req.method === 'OPTIONS') {\n res.writeHead(204, CORS_HEADERS);\n res.end();\n return;\n }\n\n // Root path (ChatGPT checks this before fetching favicon)\n if (req.method === 'GET' && url.pathname === '/') {\n res.writeHead(200, {\n 'Content-Type': 'text/html',\n 'Access-Control-Allow-Origin': '*',\n });\n res.end(`<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\" />\n<link rel=\"icon\" type=\"image/png\" href=\"/favicon.ico\" />\n<title>Sunpeak MCP Server</title>\n</head>\n<body><h1>Sunpeak MCP Server</h1><p>Connect via <a href=\"/mcp\">/mcp</a></p></body>\n</html>`);\n return;\n }\n\n // Favicon endpoint\n if (req.method === 'GET' && url.pathname === '/favicon.ico') {\n res.writeHead(200, {\n 'Content-Type': 'image/png',\n 'Content-Length': FAVICON_BUFFER.length,\n 'Cache-Control': 'public, max-age=86400',\n 'Access-Control-Allow-Origin': '*',\n });\n res.end(FAVICON_BUFFER);\n return;\n }\n\n // MCP endpoint (Streamable HTTP transport)\n if (url.pathname === MCP_PATH) {\n await handleMcpRequest(req, res, config, simulations, viteMode);\n return;\n }\n\n // If Vite server is available, delegate all other requests to it\n if (viteServer) {\n // Add CORS headers for Vite-served content (needed for cross-origin widget loading)\n res.setHeader('Access-Control-Allow-Origin', '*');\n res.setHeader('Access-Control-Allow-Headers', 'content-type, ngrok-skip-browser-warning');\n viteServer.middlewares(req, res);\n return;\n }\n\n // No Vite server, return 404 for non-MCP routes\n console.log(`[HTTP] ${req.method} ${url.pathname} → 404`);\n res.writeHead(404).end('Not Found');\n });\n\n // Handle WebSocket upgrades for Vite HMR\n if (viteServer) {\n httpServer.on('upgrade', (request, socket, head) => {\n // Forward all WebSocket upgrades to Vite (it handles /@vite/ws)\n viteServer.ws.handleUpgrade(request, socket, head);\n });\n }\n\n httpServer.on('clientError', (err: Error, socket) => {\n console.error('HTTP client error', err);\n socket.end('HTTP/1.1 400 Bad Request\\r\\n\\r\\n');\n });\n\n const onListening = () => {\n const actualPort = (httpServer.address() as AddressInfo).port;\n // Update module-level URL in case the OS assigned a different port\n localDevServerUrl = `http://localhost:${actualPort}`;\n console.log(`Sunpeak MCP server listening on http://localhost:${actualPort}`);\n console.log(` MCP endpoint: http://localhost:${actualPort}${MCP_PATH}`);\n if (viteMode) {\n console.log(` Vite HMR: enabled (source files served with hot reload)`);\n }\n };\n\n httpServer.on('error', (err: NodeJS.ErrnoException) => {\n if (err.code === 'EADDRINUSE') {\n console.warn(`Port ${port} in use, finding an available port...`);\n // onListening is already registered as a .once('listening') from the first .listen() call\n httpServer.listen(0);\n } else {\n throw err;\n }\n });\n\n httpServer.listen(port, onListening);\n\n // Graceful shutdown handler\n const shutdown = async () => {\n console.log('\\nShutting down MCP server...');\n\n httpServer.close(() => {\n console.log('MCP server closed');\n process.exit(0);\n });\n\n // Force close after 5 seconds if graceful shutdown fails\n setTimeout(() => {\n console.error('Force closing MCP server');\n process.exit(1);\n }, 5000);\n };\n\n process.on('SIGTERM', () => void shutdown());\n process.on('SIGINT', () => void shutdown());\n\n return {\n invalidateResources() {\n if (sessions.size === 0) return;\n\n const timestamp = Date.now().toString(36);\n for (const [, session] of sessions) {\n // Update resource URIs with timestamp to force cache-busting.\n // .update() automatically sends resources/list_changed notification.\n for (const [name, handle] of session.resourceHandles) {\n handle.update({ uri: `ui://${name}-${timestamp}` });\n }\n // Update tool metadata to reference the new resource URIs.\n // .update() automatically sends tools/list_changed notification.\n for (const { handle, resourceName, toolMeta } of session.toolHandles) {\n const newUri = `ui://${resourceName}-${timestamp}`;\n handle.update({\n _meta: {\n ...toolMeta,\n ui: { ...(toolMeta.ui as Record<string, unknown>), resourceUri: newUri },\n 'ui/resourceUri': newUri,\n },\n });\n }\n }\n console.log(`[MCP] Cache-busted ${sessions.size} session(s) with timestamp ${timestamp}`);\n },\n };\n}\n","import { createServer, type IncomingMessage, type ServerResponse } from 'node:http';\nimport { URL } from 'node:url';\nimport { randomUUID } from 'node:crypto';\n\nimport { FAVICON_BASE64, FAVICON_BUFFER } from './favicon.js';\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport { WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js';\nimport {\n registerAppTool,\n registerAppResource,\n RESOURCE_MIME_TYPE,\n} from '@modelcontextprotocol/ext-apps/server';\n\nimport type { AuthInfo, CallToolResult, ToolHandlerExtra } from './types.js';\n\n// ============================================================================\n// Structured logging\n// ============================================================================\n\nlet jsonLogging = false;\n\n/**\n * Enable or disable structured JSON logging.\n *\n * When enabled, all server log messages are written as JSON lines to stdout/stderr,\n * making them easy to parse with log aggregation tools (Datadog, CloudWatch,\n * Loki, etc.).\n */\nexport function setJsonLogging(enabled: boolean): void {\n jsonLogging = enabled;\n}\n\nfunction log(level: 'info' | 'warn' | 'error', msg: string, extra?: Record<string, unknown>): void {\n if (jsonLogging) {\n const entry: Record<string, unknown> = {\n ts: new Date().toISOString(),\n level,\n msg,\n ...extra,\n };\n const line = JSON.stringify(entry) + '\\n';\n if (level === 'error') {\n process.stderr.write(line);\n } else {\n process.stdout.write(line);\n }\n } else {\n const prefix = '[MCP]';\n if (level === 'error') {\n console.error(extra ? `${prefix} ${msg} ${JSON.stringify(extra)}` : `${prefix} ${msg}`);\n } else if (level === 'warn') {\n console.warn(extra ? `${prefix} ${msg} ${JSON.stringify(extra)}` : `${prefix} ${msg}`);\n } else {\n console.log(extra ? `${prefix} ${msg} ${JSON.stringify(extra)}` : `${prefix} ${msg}`);\n }\n }\n}\n\n// ============================================================================\n// Public types\n// ============================================================================\n\n/**\n * A tool loaded from a compiled tool module (`dist/tools/*.js`).\n */\nexport interface ProductionTool {\n /** Tool name (derived from filename, e.g. 'show-albums') */\n name: string;\n /** Tool config from the `tool` export */\n tool: {\n resource?: string;\n title?: string;\n description?: string;\n annotations?: Record<string, unknown>;\n _meta?: Record<string, unknown>;\n };\n /** Zod shape from the `schema` export (passed to SDK as inputSchema) */\n schema?: Record<string, unknown>;\n /** Handler from the `default` export */\n handler: (\n args: Record<string, unknown>,\n extra: ToolHandlerExtra\n ) => CallToolResult | Promise<CallToolResult> | string | Promise<string>;\n}\n\n/**\n * A resource loaded from the build output (`dist/{name}/{name}.html` + `.json`).\n */\nexport interface ProductionResource {\n /** Resource name (from .json metadata) */\n name: string;\n /** Resource URI (from .json metadata, includes cache-bust timestamp) */\n uri: string;\n /** Pre-built HTML content (self-contained, JS+CSS inlined) */\n html: string;\n /** Resource _meta (CSP, permissions, domain, etc.) */\n _meta?: Record<string, unknown>;\n /** Resource description */\n description?: string;\n}\n\n/**\n * Auth function signature for `src/server.ts` (Node.js).\n * Called on every MCP request. Return AuthInfo to authenticate, null to reject (401).\n */\nexport type AuthFunction = (req: IncomingMessage) => Promise<AuthInfo | null> | AuthInfo | null;\n\n/**\n * Auth function signature for Web Standard handlers (Cloudflare Workers, Deno, Bun).\n */\nexport type WebAuthFunction = (req: Request) => Promise<AuthInfo | null> | AuthInfo | null;\n\n/**\n * Configuration for creating a production MCP server and Node.js handler.\n */\nexport interface ProductionServerConfig {\n /** Server name reported to hosts */\n name?: string;\n /** Server version reported to hosts */\n version?: string;\n /** Tool registrations with real handlers */\n tools: ProductionTool[];\n /** Resource registrations with pre-built HTML */\n resources: ProductionResource[];\n /** Auth function from server entry (populates extra.authInfo via req.auth) */\n auth?: AuthFunction;\n}\n\n/**\n * Configuration for creating a Web Standard MCP handler (serverless/edge).\n */\nexport interface WebHandlerConfig {\n /** Server name reported to hosts */\n name?: string;\n /** Server version reported to hosts */\n version?: string;\n /** Tool registrations with real handlers */\n tools: ProductionTool[];\n /** Resource registrations with pre-built HTML */\n resources: ProductionResource[];\n /** Auth function for Web Standard Request objects */\n auth?: WebAuthFunction;\n}\n\n// ============================================================================\n// MCP server creation\n// ============================================================================\n\n/**\n * Create an MCP server with production tool handlers and pre-built resources.\n *\n * Tools are registered with real Zod schemas (input validation) and handlers.\n * Resources serve pre-built HTML with their _meta preserved.\n */\nexport function createProductionMcpServer(config: ProductionServerConfig): McpServer {\n const { name = 'sunpeak-app', version = '0.1.0', tools, resources } = config;\n\n const mcpServer = new McpServer(\n {\n name,\n version,\n icons: [\n {\n src: `data:image/png;base64,${FAVICON_BASE64}`,\n mimeType: 'image/png',\n sizes: ['128x128'],\n },\n ],\n },\n { capabilities: { resources: {}, tools: {} } }\n );\n\n // Build resource lookup: resource name → ProductionResource\n const resourceByName = new Map<string, ProductionResource>();\n for (const res of resources) {\n resourceByName.set(res.name, res);\n }\n\n // Track registered resource URIs to avoid duplicates\n // (multiple tools can reference the same resource, e.g. review-diff and review-post)\n const registeredResources = new Set<string>();\n\n let toolCount = 0;\n\n for (const tool of tools) {\n // Build the handler callback (shared by UI and plain tools)\n const makeCallback = () => {\n return async (\n ...cbArgs: [Record<string, unknown>, ToolHandlerExtra] | [ToolHandlerExtra]\n ) => {\n const hasSchema = !!tool.schema;\n const args: Record<string, unknown> = hasSchema\n ? (cbArgs[0] as Record<string, unknown>)\n : {};\n const extra = (hasSchema ? cbArgs[1] : cbArgs[0]) as ToolHandlerExtra;\n\n const argKeys = Object.keys(args);\n const argsStr = argKeys.length > 0 ? `{${argKeys.join(', ')}}` : '{}';\n log('info', `CallTool: ${tool.name}${argsStr}`);\n\n const result = await tool.handler(args, extra);\n\n // Normalize string returns to CallToolResult\n if (typeof result === 'string') {\n return { content: [{ type: 'text' as const, text: result }] };\n }\n return result;\n };\n };\n\n const resourceName = tool.tool.resource;\n const res = resourceName ? resourceByName.get(resourceName) : undefined;\n\n if (resourceName && !res) {\n log('warn', `Resource \"${resourceName}\" not found for tool \"${tool.name}\". Skipping.`);\n continue;\n }\n\n if (res) {\n // ── UI tool: register resource + tool via ext-apps helper ──\n\n // Register resource (once per URI)\n if (!registeredResources.has(res.uri)) {\n registeredResources.add(res.uri);\n registerAppResource(\n mcpServer,\n res.name,\n res.uri,\n {\n description: res.description,\n _meta: res._meta,\n },\n async () => ({\n contents: [\n {\n uri: res.uri,\n mimeType: RESOURCE_MIME_TYPE,\n text: res.html,\n _meta: res._meta,\n },\n ],\n })\n );\n }\n\n // Register tool with UI metadata via registerAppTool\n const toolConfig: Record<string, unknown> = {\n title: tool.tool.title,\n description: tool.tool.description,\n annotations: tool.tool.annotations,\n ...(tool.schema ? { inputSchema: tool.schema } : {}),\n _meta: {\n ...tool.tool._meta,\n ui: {\n resourceUri: res.uri,\n ...((tool.tool._meta?.ui as Record<string, unknown>) ?? {}),\n },\n },\n };\n // Cast config and callback — tool modules are loaded dynamically at runtime,\n // so Zod shapes and callback generics can't be statically verified.\n registerAppTool(\n mcpServer,\n tool.name,\n toolConfig as Parameters<typeof registerAppTool>[2],\n makeCallback() as Parameters<typeof registerAppTool>[3]\n );\n } else {\n // ── Plain tool (no UI): register directly via mcpServer.tool() ──\n // Use the description + callback overload, with schema if available.\n // The mcpServer.tool() overloads are complex, so we call it dynamically.\n const cb = makeCallback();\n const toolArgs: unknown[] = [tool.name];\n if (tool.schema) {\n toolArgs.push(tool.schema);\n }\n toolArgs.push(async (...args: unknown[]) => {\n // Normalize to (args, extra) for the shared callback\n if (tool.schema) {\n return cb(args[0] as Record<string, unknown>, args[1] as ToolHandlerExtra);\n }\n return cb(args[0] as ToolHandlerExtra);\n });\n (mcpServer.tool as (...a: unknown[]) => unknown)(...toolArgs);\n }\n toolCount++;\n }\n\n const resourceCount = registeredResources.size;\n log('info', `Registered ${toolCount} tool(s) and ${resourceCount} resource(s)`);\n\n return mcpServer;\n}\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst MCP_PATH = '/mcp';\n\n/** How long an idle session lives before being cleaned up (5 minutes). */\nconst SESSION_IDLE_TIMEOUT_MS = 5 * 60 * 1000;\n\ninterface JsonRpcMessage {\n method: string;\n params?: Record<string, unknown>;\n}\n\nfunction isJsonRpcMessage(value: unknown): value is JsonRpcMessage {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as JsonRpcMessage).method === 'string'\n );\n}\n\nconst CORS_HEADERS = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers':\n 'content-type, accept, authorization, mcp-session-id, ngrok-skip-browser-warning',\n 'Access-Control-Expose-Headers': 'mcp-session-id',\n} as const;\n\n// ============================================================================\n// Composable Node.js MCP request handler (Streamable HTTP)\n// ============================================================================\n\n/**\n * Create a request handler that manages MCP sessions over Streamable HTTP.\n *\n * The returned handler responds to:\n * - `POST /mcp` — Initialize a session or send messages\n * - `GET /mcp` — Open an SSE stream for server-initiated notifications\n * - `DELETE /mcp` — Terminate a session\n * - `OPTIONS /mcp` — CORS preflight\n *\n * For any other request, the handler does nothing (doesn't write to `res`),\n * so callers can chain it with their own routing.\n *\n * @example\n * ```ts\n * import express from 'express';\n * import { createMcpHandler } from 'sunpeak/mcp';\n *\n * const app = express();\n * app.get('/health', (req, res) => res.json({ ok: true }));\n *\n * const mcpHandler = createMcpHandler({ tools, resources, auth });\n * app.use((req, res, next) => {\n * mcpHandler(req, res).then(() => {\n * if (!res.headersSent) next();\n * });\n * });\n *\n * app.listen(3000);\n * ```\n */\nexport function createMcpHandler(\n config: ProductionServerConfig\n): (req: IncomingMessage, res: ServerResponse) => Promise<void> {\n interface Session {\n server: McpServer;\n transport: StreamableHTTPServerTransport;\n lastActivity: number;\n }\n\n const sessions = new Map<string, Session>();\n const authFn = config.auth;\n\n // Periodically clean up idle sessions.\n // Closing the server triggers transport.onclose which handles session map cleanup.\n const cleanupInterval = setInterval(() => {\n const now = Date.now();\n for (const [id, session] of sessions) {\n if (now - session.lastActivity > SESSION_IDLE_TIMEOUT_MS) {\n log('info', `Session expired: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size - 1,\n });\n void session.server.close();\n }\n }\n }, 60_000);\n cleanupInterval.unref(); // Don't prevent process exit\n\n return async (req: IncomingMessage, res: ServerResponse): Promise<void> => {\n if (!req.url) return;\n\n const url = new URL(req.url, `http://${req.headers.host ?? 'localhost'}`);\n\n // Only handle /mcp path\n if (url.pathname !== MCP_PATH) return;\n\n // CORS preflight\n if (req.method === 'OPTIONS') {\n res.writeHead(204, CORS_HEADERS);\n res.end();\n return;\n }\n\n // Set CORS headers for all MCP responses\n for (const [key, value] of Object.entries(CORS_HEADERS)) {\n res.setHeader(key, value);\n }\n\n // Auth\n if (authFn) {\n const authInfo = await authFn(req);\n if (!authInfo) {\n res.writeHead(401, { 'WWW-Authenticate': 'Bearer' });\n res.end('Unauthorized');\n return;\n }\n (req as IncomingMessage & { auth?: AuthInfo }).auth = authInfo;\n }\n\n // Parse body for POST requests (needed for logging + transport)\n let parsedBody: unknown;\n if (req.method === 'POST') {\n const chunks: Buffer[] = [];\n await new Promise<void>((resolve, reject) => {\n req.on('data', (chunk: Buffer | string) => {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk as string));\n });\n req.on('end', resolve);\n req.on('error', reject);\n });\n const rawBody = Buffer.concat(chunks).toString('utf8');\n try {\n parsedBody = JSON.parse(rawBody);\n if (isJsonRpcMessage(parsedBody)) {\n const sid = req.headers['mcp-session-id'] as string | undefined;\n const sidStr = sid ? ` (${sid.substring(0, 8)}...)` : '';\n const extra =\n parsedBody.method === 'resources/read'\n ? ` uri=${JSON.stringify(parsedBody.params?.uri)}`\n : '';\n log('info', `← ${parsedBody.method}${extra}${sidStr}`);\n }\n } catch {\n res.writeHead(400).end('Invalid JSON');\n return;\n }\n }\n\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n // Route to existing session\n if (sessionId) {\n const session = sessions.get(sessionId);\n if (!session) {\n res.writeHead(404).end('Unknown session');\n return;\n }\n session.lastActivity = Date.now();\n await session.transport.handleRequest(req, res, parsedBody);\n return;\n }\n\n // New session (POST without session ID = initialization)\n if (req.method === 'POST') {\n const server = createProductionMcpServer(config);\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n onsessioninitialized: (id) => {\n sessions.set(id, { server, transport, lastActivity: Date.now() });\n log('info', `Session started: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size,\n });\n },\n onsessionclosed: (id) => {\n sessions.delete(id);\n log('info', `Session closed: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size,\n });\n },\n });\n\n transport.onerror = (error) => {\n const id = transport.sessionId;\n log('error', `Transport error${id ? ` (${id.substring(0, 8)}...)` : ''}`, {\n sessionId: id,\n error: String(error),\n });\n };\n\n // Clean up session map on disconnect (don't call server.close — it triggers\n // transport.close which calls onclose again, causing infinite recursion)\n transport.onclose = () => {\n const id = transport.sessionId;\n if (id && sessions.has(id)) {\n sessions.delete(id);\n log('info', `Session closed: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size,\n });\n }\n };\n\n await server.connect(transport);\n await transport.handleRequest(req, res, parsedBody);\n return;\n }\n\n // No session ID and not POST → invalid\n res.writeHead(400).end('Bad Request: session ID required');\n };\n}\n\n// ============================================================================\n// Composable Web Standard MCP handler (serverless / edge)\n// ============================================================================\n\n/**\n * Create a Web Standard request handler for MCP over Streamable HTTP.\n *\n * Returns a `(req: Request) => Promise<Response>` handler that works on any\n * Web Standard runtime: Cloudflare Workers, Deno, Bun, Vercel Edge, etc.\n *\n * Unlike `createMcpHandler`, this handler does NOT do path matching — it handles\n * every request it receives. Mount it behind your own router.\n *\n * @example\n * ```ts\n * // Cloudflare Worker\n * import { createHandler } from 'sunpeak/mcp';\n *\n * const handler = createHandler({ tools, resources, auth });\n * export default { fetch: handler };\n * ```\n *\n * @example\n * ```ts\n * // Hono\n * import { Hono } from 'hono';\n * import { createHandler } from 'sunpeak/mcp';\n *\n * const app = new Hono();\n * const handler = createHandler({ tools, resources });\n * app.all('/mcp', (c) => handler(c.req.raw));\n * export default app;\n * ```\n */\nexport function createHandler(config: WebHandlerConfig): (req: Request) => Promise<Response> {\n interface WebSession {\n server: McpServer;\n transport: WebStandardStreamableHTTPServerTransport;\n lastActivity: number;\n }\n\n const sessions = new Map<string, WebSession>();\n const authFn = config.auth;\n\n // Periodically clean up idle sessions.\n // Closing the server triggers transport.onclose which handles session map cleanup.\n const cleanupInterval = setInterval(() => {\n const now = Date.now();\n for (const [id, session] of sessions) {\n if (now - session.lastActivity > SESSION_IDLE_TIMEOUT_MS) {\n log('info', `Session expired: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size - 1,\n });\n void session.server.close();\n }\n }\n }, 60_000);\n cleanupInterval.unref();\n\n return async (req: Request): Promise<Response> => {\n // CORS preflight\n if (req.method === 'OPTIONS') {\n return new Response(null, { status: 204, headers: CORS_HEADERS });\n }\n\n // Auth\n let authInfo: AuthInfo | undefined;\n if (authFn) {\n const result = await authFn(req);\n if (!result) {\n return new Response('Unauthorized', {\n status: 401,\n headers: { 'WWW-Authenticate': 'Bearer', 'Access-Control-Allow-Origin': '*' },\n });\n }\n authInfo = result;\n }\n\n // Parse body for POST\n let parsedBody: unknown;\n if (req.method === 'POST') {\n try {\n parsedBody = await req.json();\n } catch {\n return new Response('Invalid JSON', { status: 400 });\n }\n }\n\n const sessionId = req.headers.get('mcp-session-id');\n\n // Route to existing session\n if (sessionId) {\n const session = sessions.get(sessionId);\n if (!session) {\n return new Response('Unknown session', { status: 404 });\n }\n session.lastActivity = Date.now();\n const response = await session.transport.handleRequest(req, { parsedBody, authInfo });\n return addCorsHeaders(response);\n }\n\n // New session (POST without session ID = initialization)\n if (req.method === 'POST') {\n const { name, version, tools, resources } = config;\n const server = createProductionMcpServer({ name, version, tools, resources });\n const transport = new WebStandardStreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n onsessioninitialized: (id) => {\n sessions.set(id, { server, transport, lastActivity: Date.now() });\n log('info', `Session started: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size,\n });\n },\n onsessionclosed: (id) => {\n sessions.delete(id);\n log('info', `Session closed: ${id.substring(0, 8)}...`, {\n sessionId: id,\n active: sessions.size,\n });\n },\n });\n\n transport.onerror = (error) => {\n log('error', 'Transport error', { error: String(error) });\n };\n\n transport.onclose = () => {\n const id = transport.sessionId;\n if (id && sessions.has(id)) {\n sessions.delete(id);\n }\n };\n\n await server.connect(transport);\n const response = await transport.handleRequest(req, { parsedBody, authInfo });\n return addCorsHeaders(response);\n }\n\n return new Response('Bad Request: session ID required', { status: 400 });\n };\n}\n\n/** Add CORS headers to a response (including streaming SSE responses). */\nfunction addCorsHeaders(response: Response): Response {\n const headers = new Headers(response.headers);\n headers.set('Access-Control-Allow-Origin', '*');\n headers.set('Access-Control-Expose-Headers', 'mcp-session-id');\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n}\n\n// ============================================================================\n// Built-in HTTP server (used by `sunpeak start`)\n// ============================================================================\n\n/**\n * Options for `startProductionHttpServer`.\n */\nexport interface HttpServerOptions {\n /** HTTP port to listen on (default: 8000) */\n port?: number;\n /** Host/interface to bind to (default: '0.0.0.0') */\n host?: string;\n}\n\n/**\n * Start a production HTTP server with Streamable HTTP transport.\n *\n * This is a convenience wrapper around `createMcpHandler` that adds\n * a health check endpoint, root HTML page, favicon, and graceful shutdown.\n * For custom HTTP servers (Express, Fastify, etc.), use `createMcpHandler` directly.\n *\n * @param config - Production server configuration (tools, resources, auth)\n * @param portOrOptions - HTTP port number, or an options object with port and host\n */\nexport function startProductionHttpServer(\n config: ProductionServerConfig,\n portOrOptions: number | HttpServerOptions\n): void {\n const options: HttpServerOptions =\n typeof portOrOptions === 'number' ? { port: portOrOptions } : portOrOptions;\n const port = options.port ?? 8000;\n const host = options.host ?? '0.0.0.0';\n\n const startTime = Date.now();\n const mcpHandler = createMcpHandler(config);\n\n const httpServer = createServer(async (req: IncomingMessage, res: ServerResponse) => {\n if (!req.url) {\n res.writeHead(400).end('Missing URL');\n return;\n }\n\n const url = new URL(req.url, `http://${req.headers.host ?? 'localhost'}`);\n\n // OPTIONS preflight for non-MCP paths\n if (req.method === 'OPTIONS') {\n res.writeHead(204, CORS_HEADERS);\n res.end();\n return;\n }\n\n // Health check endpoint — for load balancer probes, k8s liveness/readiness,\n // and uptime monitoring\n if (req.method === 'GET' && url.pathname === '/health') {\n const body = JSON.stringify({\n status: 'ok',\n uptime: Math.floor((Date.now() - startTime) / 1000),\n });\n res.writeHead(200, {\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache',\n 'Access-Control-Allow-Origin': '*',\n });\n res.end(body);\n return;\n }\n\n // Root path\n if (req.method === 'GET' && url.pathname === '/') {\n res.writeHead(200, {\n 'Content-Type': 'text/html',\n 'Access-Control-Allow-Origin': '*',\n });\n res.end(`<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\" />\n<link rel=\"icon\" type=\"image/png\" href=\"/favicon.ico\" />\n<title>Sunpeak MCP Server</title>\n</head>\n<body><h1>Sunpeak MCP Server</h1><p>Connect via <a href=\"/mcp\">/mcp</a></p></body>\n</html>`);\n return;\n }\n\n // Favicon\n if (req.method === 'GET' && url.pathname === '/favicon.ico') {\n res.writeHead(200, {\n 'Content-Type': 'image/png',\n 'Content-Length': FAVICON_BUFFER.length,\n 'Cache-Control': 'public, max-age=86400',\n 'Access-Control-Allow-Origin': '*',\n });\n res.end(FAVICON_BUFFER);\n return;\n }\n\n // MCP handler\n await mcpHandler(req, res);\n\n // 404 if handler didn't respond\n if (!res.headersSent) {\n log('info', `${req.method} ${url.pathname} → 404`);\n res.writeHead(404).end('Not Found');\n }\n });\n\n httpServer.on('clientError', (err: Error, socket) => {\n log('error', 'HTTP client error', { error: err.message });\n socket.end('HTTP/1.1 400 Bad Request\\r\\n\\r\\n');\n });\n\n const displayHost = host === '0.0.0.0' ? 'localhost' : host;\n\n const onListening = () => {\n const addr = httpServer.address() as { port: number };\n log('info', `Server listening on http://${displayHost}:${addr.port}`);\n log('info', `MCP endpoint: http://${displayHost}:${addr.port}${MCP_PATH}`);\n log('info', `Health check: http://${displayHost}:${addr.port}/health`);\n };\n\n httpServer.on('error', (err: NodeJS.ErrnoException) => {\n if (err.code === 'EADDRINUSE') {\n log('warn', `Port ${port} in use, finding an available port...`);\n // onListening is already registered as a .once('listening') from the first .listen() call\n httpServer.listen(0, host);\n } else {\n throw err;\n }\n });\n\n httpServer.listen(port, host, onListening);\n\n // Graceful shutdown\n const shutdown = async () => {\n log('info', 'Shutting down MCP server...');\n httpServer.close(() => {\n log('info', 'MCP server closed');\n process.exit(0);\n });\n setTimeout(() => {\n log('error', 'Force closing MCP server');\n process.exit(1);\n }, 5000);\n };\n\n process.on('SIGTERM', () => void shutdown());\n process.on('SIGINT', () => void shutdown());\n}\n"],"names":["exports","code","names","i","b","require$$0","UsedValueState","require$$1","not","items","y","rules","keyword","f","Type","names_1","require$$2","type","require$$3","require$$4","DataType","types","dataType","properties","pattern","u","validate","errors","_a","subschema","equal","jsonSchemaTraverseModule","limit","id","ref","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","resolve","path","uri","fastUri","fastUriModule","uri_1","o","Ajv","v","$schema","cacheKey","definitions","k","format","log","core_1","core","ucs2length_1","ucs2length","equal_1","validation_1","validation","prefixItems","require$$11","require$$12","require$$13","require$$14","require$$15","applicator","format_2","DiscrError","oneOf","required","module","ajv","formats","fs","CreateMessageResultSchema","ElicitResultSchema","Protocol","LoggingLevelSchema","InitializeRequestSchema","InitializedNotificationSchema","SetLevelRequestSchema","mergeCapabilities","getObjectShape","isZ4Schema","safeParse","CallToolRequestSchema","McpError","ErrorCode","CreateTaskResultSchema","CallToolResultSchema","SUPPORTED_PROTOCOL_VERSIONS","LATEST_PROTOCOL_VERSION","EmptyResultSchema","CreateMessageResultWithToolsSchema","ListRootsResultSchema","McpZodTypeKind","ListToolsRequestSchema","normalizeObjectSchema","toJsonSchemaCompat","safeParseAsync","getParseErrorMessage","CompleteRequestSchema","assertCompleteRequestPrompt","assertCompleteRequestResourceTemplate","ListResourcesRequestSchema","ListResourceTemplatesRequestSchema","ReadResourceRequestSchema","ListPromptsRequestSchema","GetPromptRequestSchema","metadata","title","description","objectFromShape","ZodOptional","getSchemaDescription","isSchemaOptional","getLiteralValue","Readable","Http2ServerRequest","stream","crypto","Http2ServerRequest2","JSONRPCMessageSchema","isInitializeRequest","isJSONRPCRequest","DEFAULT_NEGOTIATED_PROTOCOL_VERSION","isJSONRPCResultResponse","isJSONRPCErrorResponse","Q.union","Q.literal","Q.record","Q.string","Q.undefined","Q.object","Q.boolean","Q.array","Q.number","Q.unknown","p","r","x","c","l","n","S","RESOURCE_MIME_TYPE","registerAppTool","z","SESSION_IDLE_TIMEOUT_MS","MCP_PATH","CORS_HEADERS","randomUUID","createServer","URL","registerAppResource","sessions","cleanupInterval"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81]}