tnega 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +115 -189
  2. package/dist/agent.js +2907 -0
  3. package/dist/agent.js.map +7 -0
  4. package/dist/bin.js +32512 -4419
  5. package/dist/bin.js.map +4 -4
  6. package/dist/cli-runtime.js +33404 -0
  7. package/dist/cli-runtime.js.map +7 -0
  8. package/dist/coding-agent.js +19088 -0
  9. package/dist/coding-agent.js.map +7 -0
  10. package/dist/core.js +1398 -0
  11. package/dist/core.js.map +7 -0
  12. package/dist/eval.js +23905 -0
  13. package/dist/eval.js.map +7 -0
  14. package/dist/events.js +1215 -0
  15. package/dist/events.js.map +7 -0
  16. package/dist/evolve.js +18303 -0
  17. package/dist/evolve.js.map +7 -0
  18. package/dist/index.js +33087 -4450
  19. package/dist/index.js.map +4 -4
  20. package/dist/llm.js +1016 -0
  21. package/dist/llm.js.map +7 -0
  22. package/dist/services.js +1142 -0
  23. package/dist/services.js.map +7 -0
  24. package/dist/session.js +1045 -0
  25. package/dist/session.js.map +7 -0
  26. package/dist/tools.js +2577 -0
  27. package/dist/tools.js.map +7 -0
  28. package/dist/types/packages/agent/src/definition.d.ts +17 -0
  29. package/dist/types/packages/agent/src/inbox-durable.d.ts +54 -0
  30. package/dist/types/packages/agent/src/index.d.ts +7 -0
  31. package/dist/types/packages/agent/src/live.d.ts +115 -0
  32. package/dist/types/packages/agent/src/llm-service.d.ts +32 -0
  33. package/dist/types/packages/agent/src/prompt.d.ts +55 -0
  34. package/dist/types/packages/agent/src/service.d.ts +68 -0
  35. package/dist/types/packages/agent/src/types.d.ts +215 -0
  36. package/dist/types/packages/benchmark/src/bigcodebench.d.ts +6 -0
  37. package/dist/types/packages/benchmark/src/humaneval.d.ts +11 -0
  38. package/dist/types/packages/benchmark/src/index.d.ts +9 -0
  39. package/dist/types/packages/benchmark/src/manifest.d.ts +10 -0
  40. package/dist/types/packages/benchmark/src/mbpp.d.ts +10 -0
  41. package/dist/types/packages/benchmark/src/parquet.d.ts +2 -0
  42. package/dist/types/packages/benchmark/src/stdlib.d.ts +3 -0
  43. package/dist/types/packages/benchmark/src/swebench.d.ts +2 -0
  44. package/dist/types/packages/benchmark/src/types.d.ts +58 -0
  45. package/dist/types/packages/cli/src/bin.d.ts +2 -0
  46. package/dist/types/packages/cli/src/commands.d.ts +146 -0
  47. package/dist/types/packages/cli/src/config.d.ts +28 -0
  48. package/dist/types/packages/cli/src/index.d.ts +9 -0
  49. package/dist/types/packages/cli/src/profile-file.d.ts +26 -0
  50. package/dist/types/packages/cli/src/profile.d.ts +9 -0
  51. package/dist/types/packages/cli/src/server.d.ts +14 -0
  52. package/dist/types/packages/cli/src/store.d.ts +60 -0
  53. package/dist/types/packages/cli/src/yaml.d.ts +1 -0
  54. package/dist/types/packages/coding-agent/src/codingAgent.d.ts +25 -0
  55. package/dist/types/packages/coding-agent/src/index.d.ts +6 -0
  56. package/dist/types/packages/coding-agent/src/mcp.d.ts +24 -0
  57. package/dist/types/packages/coding-agent/src/plan.d.ts +13 -0
  58. package/dist/types/packages/coding-agent/src/skills.d.ts +12 -0
  59. package/dist/types/packages/coding-agent/src/slash.d.ts +28 -0
  60. package/dist/types/packages/coding-agent/src/types.d.ts +41 -0
  61. package/dist/types/packages/core/src/context.d.ts +28 -0
  62. package/dist/types/packages/core/src/events.d.ts +57 -0
  63. package/dist/types/packages/core/src/fiber.d.ts +79 -0
  64. package/dist/types/packages/core/src/index.d.ts +10 -0
  65. package/dist/types/packages/core/src/invariant.d.ts +45 -0
  66. package/dist/types/packages/core/src/logger.d.ts +48 -0
  67. package/dist/types/packages/core/src/reflect.d.ts +42 -0
  68. package/dist/types/packages/core/src/registry.d.ts +54 -0
  69. package/dist/types/packages/core/src/service.d.ts +19 -0
  70. package/dist/types/packages/core/src/utils.d.ts +54 -0
  71. package/dist/types/packages/eval/src/codingRuntime.d.ts +18 -0
  72. package/dist/types/packages/eval/src/index.d.ts +5 -0
  73. package/dist/types/packages/eval/src/policy.d.ts +8 -0
  74. package/dist/types/packages/eval/src/runner.d.ts +31 -0
  75. package/dist/types/packages/eval/src/service.d.ts +23 -0
  76. package/dist/types/packages/eval/src/strategies.d.ts +58 -0
  77. package/dist/types/packages/eval/src/trace.d.ts +7 -0
  78. package/dist/types/packages/eval/src/types.d.ts +281 -0
  79. package/dist/types/packages/eval/src/utils.d.ts +5 -0
  80. package/dist/types/packages/eval/src/workspace.d.ts +17 -0
  81. package/dist/types/packages/evolve/src/diagnose.d.ts +9 -0
  82. package/dist/types/packages/evolve/src/index.d.ts +7 -0
  83. package/dist/types/packages/evolve/src/llm.d.ts +39 -0
  84. package/dist/types/packages/evolve/src/log.d.ts +26 -0
  85. package/dist/types/packages/evolve/src/select.d.ts +3 -0
  86. package/dist/types/packages/evolve/src/service.d.ts +29 -0
  87. package/dist/types/packages/evolve/src/types.d.ts +176 -0
  88. package/dist/types/packages/llm/src/anthropic-messages.d.ts +4 -0
  89. package/dist/types/packages/llm/src/errors.d.ts +6 -0
  90. package/dist/types/packages/llm/src/index.d.ts +7 -0
  91. package/dist/types/packages/llm/src/models.d.ts +29 -0
  92. package/dist/types/packages/llm/src/openai.d.ts +4 -0
  93. package/dist/types/packages/llm/src/provider.d.ts +3 -0
  94. package/dist/types/packages/llm/src/shared.d.ts +15 -0
  95. package/dist/types/packages/llm/src/types.d.ts +13 -0
  96. package/dist/types/packages/session/src/index.d.ts +500 -0
  97. package/dist/types/packages/session/src/invariant.d.ts +33 -0
  98. package/dist/types/packages/tools/src/builtins.d.ts +25 -0
  99. package/dist/types/packages/tools/src/calc.d.ts +4 -0
  100. package/dist/types/packages/tools/src/execution.d.ts +31 -0
  101. package/dist/types/packages/tools/src/index.d.ts +107 -0
  102. package/dist/types/packages/tools/src/path.d.ts +4 -0
  103. package/dist/types/packages/tools/src/policy.d.ts +14 -0
  104. package/dist/types/src/events.d.ts +1 -0
  105. package/dist/types/src/index.d.ts +15 -0
  106. package/dist/types/src/services.d.ts +4 -0
  107. package/dist/web/assets/index-45pokiBH.js +270 -0
  108. package/dist/web/assets/index-DCLL69Kz.css +1 -0
  109. package/dist/web/index.html +13 -0
  110. package/package.json +92 -35
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/code.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/scope.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/index.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/util.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/names.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/errors.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/boolSchema.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/rules.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/applicability.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/dataType.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/defaults.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/code.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/keyword.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/subschema.ts", "../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.20.0/node_modules/ajv/lib/compile/resolve.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/index.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/validation_error.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/ref_error.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/index.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/data.json", "../node_modules/.pnpm/fast-uri@3.1.6/node_modules/fast-uri/lib/utils.js", "../node_modules/.pnpm/fast-uri@3.1.6/node_modules/fast-uri/lib/schemes.js", "../node_modules/.pnpm/fast-uri@3.1.6/node_modules/fast-uri/index.js", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/uri.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/core.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/id.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/ref.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/index.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/ucs2length.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitLength.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/pattern.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/required.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitItems.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/equal.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/const.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/enum.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/index.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/items.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/items2020.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/contains.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/properties.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/not.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/allOf.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/if.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/index.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/format/format.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/format/index.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/metadata.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/draft7.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/discriminator/types.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/discriminator/index.ts", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-draft-07.json", "../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/ajv.ts", "../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/formats.ts", "../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/limit.ts", "../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/index.ts", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js", "../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js", "../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js", "../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js", "../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js", "../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js", "../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js", "../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js", "../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js", "../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js", "../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js", "../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js", "../packages/eval/src/strategies.ts", "../packages/eval/src/runner.ts", "../packages/session/src/index.ts", "../packages/session/src/invariant.ts", "../packages/core/src/utils.ts", "../packages/core/src/events.ts", "../packages/core/src/fiber.ts", "../packages/core/src/logger.ts", "../packages/core/src/reflect.ts", "../packages/core/src/registry.ts", "../packages/core/src/context.ts", "../packages/core/src/service.ts", "../packages/tools/src/builtins.ts", "../packages/tools/src/calc.ts", "../packages/tools/src/execution.ts", "../packages/tools/src/path.ts", "../packages/tools/src/policy.ts", "../packages/tools/src/index.ts", "../packages/agent/src/service.ts", "../packages/agent/src/definition.ts", "../packages/coding-agent/src/plan.ts", "../packages/coding-agent/src/skills.ts", "../packages/coding-agent/src/mcp.ts", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/util.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/core.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/errors.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/parse.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/regexes.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/checks.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/doc.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/versions.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/schemas.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/memoizer.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/en.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/registries.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/api.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/to-json-schema.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/json-schema-processors.js", "../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/src/server/zod-compat.ts", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/errors.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/parse.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/schemas.js", "../node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/iso.js", "../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/src/types.ts", "../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/interfaces.ts", "../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@4.5.4/node_modules/zod-to-json-schema/dist/esm/parsers/string.js", "../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/src/server/zod-json-schema-compat.ts", "../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/src/shared/protocol.ts", "../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/src/validation/ajv-provider.ts", "../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/client.ts", "../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/helpers.ts", "../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/src/client/index.ts", "../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/src/client/stdio.ts", "../node_modules/.pnpm/@modelcontextprotocol+sdk@1.30.0_zod@4.5.4/node_modules/@modelcontextprotocol/sdk/src/shared/stdio.ts", "../packages/coding-agent/src/slash.ts", "../packages/coding-agent/src/codingAgent.ts", "../packages/eval/src/codingRuntime.ts", "../packages/eval/src/policy.ts", "../packages/eval/src/trace.ts", "../packages/eval/src/utils.ts", "../packages/eval/src/workspace.ts", "../packages/eval/src/service.ts", "../packages/eval/src/index.ts"],
4
+ "sourcesContent": ["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [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}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [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}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\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}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n", "import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.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}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\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\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n", "import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\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)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) 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 as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\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\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\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: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`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\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) 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\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) 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\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\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\n private _elseNode(node: If | Else): CodeGen {\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\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n", "import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${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) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n", "import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n", "import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\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, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n", "import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n", "import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\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}\n", "import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n", "import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\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) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 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) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${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\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = 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", "import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\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 } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n", "import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\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\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${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) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n", "import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\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) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$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(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n 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 )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\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\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n", "import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\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\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n", "'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", "import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\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])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\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)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n", "import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\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\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) 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}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && 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}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n 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 = 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\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) 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) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\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\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n", "import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n", "import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n", "import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = 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(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$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 Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = 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\n const id = 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?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) 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 = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = 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) return env\n return undefined\n}\n", "{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n", "'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/** @type {(value: string) => boolean} */\nconst isHexPair = RegExp.prototype.test.bind(/^[\\da-f]{2}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isUnreserved = RegExp.prototype.test.bind(/^[\\da-z\\-._~]$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isPathCharacter = RegExp.prototype.test.bind(/^[A-Za-z0-9\\-._~!$&'()*+,;=:@/]$/u)\n\n/** @type {(value: string) => boolean} */\nconst isQueryFragmentCharacter = RegExp.prototype.test.bind(/^[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]$/u)\n\n/** @type {(value: string) => boolean} */\nconst isUserinfoCharacter = RegExp.prototype.test.bind(/^[A-Za-z0-9\\-._~!$&'()*+,;=:]$/u)\n\nconst BYTE_HEX = new Array(256)\n{\n const HEX_DIGITS = '0123456789ABCDEF'\n for (let i = 0; i < 256; i++) {\n BYTE_HEX[i] = '%' + HEX_DIGITS[i >> 4] + HEX_DIGITS[i & 0xF]\n }\n}\nfunction percentEncodeNonAscii (cp) {\n if (cp < 0x800) {\n return BYTE_HEX[0xC0 | (cp >> 6)] +\n BYTE_HEX[0x80 | (cp & 0x3F)]\n }\n if (cp < 0x10000) {\n return BYTE_HEX[0xE0 | (cp >> 12)] +\n BYTE_HEX[0x80 | ((cp >> 6) & 0x3F)] +\n BYTE_HEX[0x80 | (cp & 0x3F)]\n }\n return BYTE_HEX[0xF0 | (cp >> 18)] +\n BYTE_HEX[0x80 | ((cp >> 12) & 0x3F)] +\n BYTE_HEX[0x80 | ((cp >> 6) & 0x3F)] +\n BYTE_HEX[0x80 | (cp & 0x3F)]\n}\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/** @type {(value: string) => boolean} */\nconst isHextet = RegExp.prototype.test.bind(/^[\\dA-Fa-f]{1,4}$/)\n\n/** @type {(value: string) => boolean} */\nconst isIPvFuture = RegExp.prototype.test.bind(/^[vV][\\dA-Fa-f]+\\.[A-Za-z\\d\\-._~!$&'()*+,;=:]+$/)\n\n/** @type {(value: string) => boolean} */\nconst isZoneCharacter = RegExp.prototype.test.bind(/^[A-Za-z\\d\\-._~]$/)\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {string} zone\n * @returns {boolean}\n */\nfunction isZoneIdentifier (zone) {\n if (zone.length === 0) return false\n\n for (let i = 0; i < zone.length; i++) {\n if (isZoneCharacter(zone[i])) continue\n if (zone[i] === '%' && i + 2 < zone.length && isHexPair(zone.slice(i + 1, i + 3))) {\n i += 2\n continue\n }\n return false\n }\n\n return true\n}\n\n/**\n * Compresses the longest run of zero hextets to \"::\" per RFC 5952. A run of a\n * single zero hextet is left uncompressed. On ties the leftmost run wins.\n *\n * @param {string[]} hextets\n * @returns {string}\n */\nfunction compressIPv6ZeroRun (hextets) {\n let bestStart = -1\n let bestLength = 0\n let runStart = -1\n let runLength = 0\n for (let i = 0; i < hextets.length; i++) {\n if (hextets[i] === '0') {\n if (runStart === -1) runStart = i\n runLength++\n if (runLength > bestLength) {\n bestLength = runLength\n bestStart = runStart\n }\n } else {\n runStart = -1\n runLength = 0\n }\n }\n\n if (bestLength < 2) return hextets.join(':')\n\n const head = hextets.slice(0, bestStart).join(':')\n const tail = hextets.slice(bestStart + bestLength).join(':')\n return head + '::' + tail\n}\n\n/**\n * Validates an IPv6 address against the alternatives in RFC 3986 section\n * 3.2.2 and returns the same address with leading hextet zeroes removed.\n * An embedded IPv4 address counts as two hextets and is only valid at the end.\n *\n * @param {string} input\n * @returns {string|undefined}\n */\nfunction normalizeIPv6Address (input) {\n const compression = input.indexOf('::')\n if (compression !== -1 && input.indexOf('::', compression + 1) !== -1) return undefined\n\n const left = compression === -1 ? input.split(':') : input.slice(0, compression).split(':')\n const right = compression === -1 ? [] : input.slice(compression + 2).split(':')\n if (compression !== -1) {\n if (left.length === 1 && left[0] === '') left.length = 0\n if (right.length === 1 && right[0] === '') right.length = 0\n }\n\n const parts = left.concat(right)\n let hextetCount = 0\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i]\n if (part === '') return undefined\n\n if (part.indexOf('.') !== -1) {\n if (i !== parts.length - 1 || (compression !== -1 && right.length === 0) || !isIPv4(part)) return undefined\n hextetCount += 2\n continue\n }\n\n if (!isHextet(part)) return undefined\n parts[i] = parseInt(part, 16).toString(16)\n hextetCount++\n }\n\n if (compression === -1) {\n if (hextetCount !== 8) return undefined\n return compressIPv6ZeroRun(parts)\n }\n if (hextetCount >= 8) return undefined\n\n // expand \"::\" then re-compress the longest run for a canonical result\n const expanded = parts.slice(0, left.length)\n for (let i = hextetCount; i < 8; i++) expanded.push('0')\n for (let i = left.length; i < parts.length; i++) expanded.push(parts[i])\n return compressIPv6ZeroRun(expanded)\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 * @property {boolean} [isIPVFuture] - Indicates if the host is an IPvFuture literal.\n * @property {boolean} [error] - Indicates if a bracketed IP literal is malformed.\n */\n\n/**\n * Validates and normalizes a bracketed IP literal. Raw zone separators remain\n * accepted for backwards compatibility, while encoded separators and zone\n * contents follow RFC 6874.\n *\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n const bracketed = host[0] === '[' && host[host.length - 1] === ']'\n const hasBracket = host[0] === '[' || host[host.length - 1] === ']'\n if (hasBracket && !bracketed) return { host, isIPV6: false, error: true }\n\n let input = bracketed ? host.slice(1, -1) : host\n if (bracketed && isIPvFuture(input)) {\n input = input.toLowerCase()\n return { host: `[${input}]`, escapedHost: input, isIPV6: false, isIPVFuture: true }\n }\n\n if (findToken(input, ':') < 2) {\n return { host, isIPV6: false, error: bracketed }\n }\n\n let zoneIdentifier = ''\n const zoneSeparator = input.indexOf('%')\n if (zoneSeparator !== -1) {\n const separatorLength = input.slice(zoneSeparator, zoneSeparator + 3).toLowerCase() === '%25' ? 3 : 1\n zoneIdentifier = input.slice(zoneSeparator + separatorLength)\n if (!isZoneIdentifier(zoneIdentifier)) return { host, isIPV6: false, error: true }\n input = input.slice(0, zoneSeparator)\n }\n\n const address = normalizeIPv6Address(input)\n if (address === undefined) return { host, isIPV6: false, error: true }\n\n return {\n host: address + (zoneIdentifier ? '%' + zoneIdentifier : ''),\n escapedHost: address + (zoneIdentifier ? '%25' + zoneIdentifier : ''),\n isIPV6: true\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 * Re-escape RFC 3986 gen-delims that must not appear literally in the host.\n * After the URI regex parses, these characters cannot be literal in the host\n * field, so any that appear after decoding came from percent-encoding and\n * must be restored to prevent authority structure changes.\n *\n * @param {string} host\n * @param {boolean} isIP - true for IPv4/IPv6 hosts (skip colon re-escaping)\n * @returns {string}\n */\nconst HOST_DELIMS = { '@': '%40', '/': '%2F', '?': '%3F', '#': '%23', ':': '%3A' }\nconst HOST_DELIM_RE = /[@/?#:]/g\nconst HOST_DELIM_NO_COLON_RE = /[@/?#]/g\n\nfunction reescapeHostDelimiters (host, isIP) {\n const re = isIP ? HOST_DELIM_NO_COLON_RE : HOST_DELIM_RE\n re.lastIndex = 0\n return host.replace(re, (ch) => HOST_DELIMS[ch])\n}\n\n/**\n * Normalizes percent escapes and optionally decodes only unreserved ASCII bytes.\n * Reserved delimiters such as `%2F` stay escaped; `%2E` is unreserved.\n *\n * @param {string} input\n * @param {boolean} [decodeUnreserved=false]\n * @returns {string}\n */\nfunction normalizePercentEncoding (input, decodeUnreserved = false) {\n if (input.indexOf('%') === -1) {\n return input\n }\n\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n const normalizedHex = hex.toUpperCase()\n const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n if (decodeUnreserved && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n output += input[i]\n }\n\n return output\n}\n\n/**\n * Normalizes path data without turning reserved escapes into live path syntax.\n * Valid escapes are uppercased, raw unsafe characters are escaped, and only\n * unreserved bytes that are not `.` are decoded.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizePathEncoding (input) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n const ch = input[i]\n if (ch === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n const normalizedHex = hex.toUpperCase()\n const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n if (decoded !== '.' && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n if (isPathCharacter(ch)) {\n output += ch\n } else {\n const code = input.charCodeAt(i)\n if (code < 0x80) {\n output += isEscapeSafe(code) ? ch : BYTE_HEX[code]\n } else if (code < 0xD800 || code > 0xDFFF) {\n output += percentEncodeNonAscii(code)\n } else if (code <= 0xDBFF && i + 1 < input.length) {\n const low = input.charCodeAt(i + 1)\n if (low >= 0xDC00 && low <= 0xDFFF) {\n output += percentEncodeNonAscii(0x10000 + ((code - 0xD800) << 10) + (low - 0xDC00))\n i++\n } else {\n output += percentEncodeNonAscii(0xFFFD)\n }\n } else {\n output += percentEncodeNonAscii(0xFFFD)\n }\n }\n }\n\n return output\n}\n\n/**\n * Serializes a path without rewriting reserved data. Raw RFC 3986 path\n * characters remain literal, valid escapes are preserved and uppercased, and\n * everything else is UTF-8 percent-encoded. In a path-noscheme, a colon in the\n * first segment must be escaped so the result cannot be parsed as a scheme.\n *\n * @param {string} input\n * @param {boolean} [pathNoScheme=false]\n * @returns {string}\n */\nfunction serializePathEncoding (input, pathNoScheme = false) {\n let output = ''\n let firstSegment = pathNoScheme && input[0] !== '/'\n\n for (let i = 0; i < input.length; i++) {\n const ch = input[i]\n if (ch === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n output += '%' + hex.toUpperCase()\n i += 2\n continue\n }\n }\n\n if (ch === '/') {\n firstSegment = false\n }\n\n if (isPathCharacter(ch) && (ch !== ':' || !firstSegment)) {\n output += ch\n } else {\n const code = input.charCodeAt(i)\n if (code < 0x80) {\n output += BYTE_HEX[code]\n } else if (code < 0xD800 || code > 0xDFFF) {\n output += percentEncodeNonAscii(code)\n } else if (code <= 0xDBFF && i + 1 < input.length) {\n const low = input.charCodeAt(i + 1)\n if (low >= 0xDC00 && low <= 0xDFFF) {\n output += percentEncodeNonAscii(0x10000 + ((code - 0xD800) << 10) + (low - 0xDC00))\n i++\n } else {\n output += percentEncodeNonAscii(0xFFFD)\n }\n } else {\n output += percentEncodeNonAscii(0xFFFD)\n }\n }\n }\n\n return output\n}\n\n/**\n * Percent-encodes a URI component using its RFC 3986 literal character set.\n * Existing valid escapes are preserved and normalized to uppercase hex.\n *\n * @param {string} input\n * @param {(value: string) => boolean} isAllowed\n * @returns {string}\n */\nfunction encodeComponent (input, isAllowed) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n const ch = input[i]\n if (ch === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n output += '%' + hex.toUpperCase()\n i += 2\n continue\n }\n }\n\n if (isAllowed(ch)) {\n output += ch\n } else {\n const code = input.charCodeAt(i)\n if (code < 0x80) {\n output += BYTE_HEX[code]\n } else if (code < 0xD800 || code > 0xDFFF) {\n output += percentEncodeNonAscii(code)\n } else if (code <= 0xDBFF && i + 1 < input.length) {\n const low = input.charCodeAt(i + 1)\n if (low >= 0xDC00 && low <= 0xDFFF) {\n output += percentEncodeNonAscii(0x10000 + ((code - 0xD800) << 10) + (low - 0xDC00))\n i++\n } else {\n output += percentEncodeNonAscii(0xFFFD)\n }\n } else {\n output += percentEncodeNonAscii(0xFFFD)\n }\n }\n }\n\n return output\n}\n\n/**\n * Encodes userinfo while preserving its RFC 3986 \u00A73.2.1 literal characters.\n * In particular, authority delimiters such as `@`, `/`, `?`, and `#` are data.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction encodeUserinfo (input) {\n return encodeComponent(input, isUserinfoCharacter)\n}\n\n/**\n * Encodes query data using the RFC 3986 \u00A73.4 grammar. A literal `#` must be\n * escaped because it would otherwise begin the fragment component.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction encodeQuery (input) {\n return encodeComponent(input, isQueryFragmentCharacter)\n}\n\n/**\n * Encodes fragment data using the RFC 3986 \u00A73.5 grammar.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction encodeFragment (input) {\n return encodeComponent(input, isQueryFragmentCharacter)\n}\n\nfunction isEscapeSafe (cp) {\n return (\n (cp >= 0x30 && cp <= 0x39) ||\n (cp >= 0x41 && cp <= 0x5A) ||\n (cp >= 0x61 && cp <= 0x7A) ||\n cp === 0x2A || cp === 0x2B || cp === 0x2D || cp === 0x2E ||\n cp === 0x2F || cp === 0x40 || cp === 0x5F\n )\n}\n\n/**\n * Normalizes the percent-encoding of a query or fragment component.\n *\n * Like `normalizePathEncoding`, but uses the query/fragment character set\n * (which additionally allows `?`) and decodes `.` since it has no dot-segment\n * meaning outside of a path.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizeQueryFragmentEncoding (input) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n const ch = input[i]\n if (ch === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n const normalizedHex = hex.toUpperCase()\n const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n if (isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n if (isQueryFragmentCharacter(ch)) {\n output += ch\n } else {\n const code = input.charCodeAt(i)\n if (code < 0x80) {\n output += isEscapeSafe(code) ? ch : BYTE_HEX[code]\n } else if (code < 0xD800 || code > 0xDFFF) {\n output += percentEncodeNonAscii(code)\n } else if (code <= 0xDBFF && i + 1 < input.length) {\n const low = input.charCodeAt(i + 1)\n if (low >= 0xDC00 && low <= 0xDFFF) {\n output += percentEncodeNonAscii(0x10000 + ((code - 0xD800) << 10) + (low - 0xDC00))\n i++\n } else {\n output += percentEncodeNonAscii(0xFFFD)\n }\n } else {\n output += percentEncodeNonAscii(0xFFFD)\n }\n }\n }\n\n return output\n}\n\n/**\n * Escapes a component while preserving existing valid percent escapes.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction escapePreservingEscapes (input) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n output += '%' + hex.toUpperCase()\n i += 2\n continue\n }\n }\n\n output += escape(input[i])\n }\n\n return output\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(encodeUserinfo(component.userinfo))\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = component.host\n if (!isIPv4(host)) {\n let ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 !== true && ipV6res.isIPVFuture !== true) {\n // Decode only unreserved bytes, once. In particular, keep %25 encoded\n // so it cannot introduce a second escape during recomposition.\n host = normalizePercentEncoding(host, true)\n ipV6res = normalizeIPv6(host)\n }\n if (ipV6res.isIPV6 === true || ipV6res.isIPVFuture === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = reescapeHostDelimiters(host, false)\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 reescapeHostDelimiters,\n normalizePercentEncoding,\n normalizePathEncoding,\n serializePathEncoding,\n normalizeQueryFragmentEncoding,\n encodeUserinfo,\n encodeQuery,\n encodeFragment,\n escapePreservingEscapes,\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 queryIndex = wsComponent.resourceName.indexOf('?')\n const path = queryIndex === -1\n ? wsComponent.resourceName\n : wsComponent.resourceName.slice(0, queryIndex)\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = queryIndex === -1\n ? undefined\n : wsComponent.resourceName.slice(queryIndex + 1)\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 && matches[0] === urnComponent.path) {\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, normalizePercentEncoding, normalizePathEncoding, serializePathEncoding, normalizeQueryFragmentEncoding, encodeQuery, encodeFragment, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\nconst VALID_SCHEME = /^[A-Za-z][A-Za-z0-9+.-]*$/u\nconst MALFORMED_SCHEME_ERROR = 'URI scheme is malformed.'\n\n/**\n * @param {string} scheme\n * @returns {string}\n */\nfunction decodeValidScheme (scheme) {\n const decodedScheme = unescape(String(scheme))\n if (!VALID_SCHEME.test(decodedScheme)) {\n throw new TypeError(MALFORMED_SCHEME_ERROR)\n }\n return decodedScheme\n}\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} */ (normalizeString(uri, 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 {\n parsed: baseParsed,\n malformedAuthorityOrPort: baseMalformed,\n malformedPercentEncoding: baseMalformedPercentEncoding,\n malformedSchemeSpecific: baseMalformedSchemeSpecific,\n malformedHost: baseMalformedHost,\n malformedScheme: baseMalformedScheme\n } = parseWithStatus(baseURI, schemelessOptions)\n const {\n parsed: relativeParsed,\n malformedAuthorityOrPort: relativeMalformed,\n malformedPercentEncoding: relativeMalformedPercentEncoding,\n malformedSchemeSpecific: relativeMalformedSchemeSpecific,\n malformedHost: relativeMalformedHost,\n malformedScheme: relativeMalformedScheme\n } = parseWithStatus(relativeURI, schemelessOptions)\n if (\n baseMalformed ||\n relativeMalformed ||\n baseMalformedPercentEncoding ||\n relativeMalformedPercentEncoding ||\n baseMalformedSchemeSpecific ||\n relativeMalformedSchemeSpecific ||\n baseMalformedHost ||\n relativeMalformedHost ||\n baseMalformedScheme ||\n relativeMalformedScheme\n ) {\n throw new Error(baseParsed.error || relativeParsed.error || 'URI is malformed.')\n }\n const resolved = resolveComponent(baseParsed, relativeParsed, schemelessOptions, true)\n const resolvedSchemeHandler = getSchemeHandler((options && options.scheme) || resolved.scheme)\n const resolvedHost = resolved.host\n const resolvedHostIsIP = resolvedHost !== undefined && resolvedHost !== '' &&\n (isIPv4(resolvedHost) || normalizeIPv6(resolvedHost).isIPV6)\n canonicalizeHost(resolved, options || {}, resolvedSchemeHandler, resolvedHostIsIP)\n // Percent escapes in an ASCII reg-name are encoded data. The WHATWG hostname\n // parser can reject them even though fast-uri preserves them safely as RFC\n // 3986 data. A raw non-ASCII host must still fail closed if conversion fails.\n const encodedASCIIHost = resolvedHost && resolvedHost.indexOf('%') !== -1 &&\n !/\\P{ASCII}/u.test(resolvedHost)\n if (resolved.error && !encodedASCIIHost) {\n throw new Error(resolved.error)\n }\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 const normalizedA = normalizeComparableURI(uriA, options)\n const normalizedB = normalizeComparableURI(uriB, options)\n\n return normalizedA !== undefined && normalizedB !== undefined && normalizedA === normalizedB\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 if (component.scheme) {\n component.scheme = decodeValidScheme(component.scheme)\n }\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 const hasAuthority = component.userinfo !== undefined || component.host !== undefined || component.port !== undefined\n const pathNoScheme = !options.skipEscape && component.scheme === undefined && !hasAuthority\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = serializePathEncoding(component.path, pathNoScheme)\n } else {\n component.path = normalizePercentEncoding(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n // Scheme handlers may replace the scheme during serialization.\n component.scheme = decodeValidScheme(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 // Dot-segment removal can expose a colon that was not originally in the\n // first segment (for example, \"./a:b\"). Reapply path-noscheme encoding so\n // the serialized relative reference cannot be reparsed as a URI scheme.\n if (pathNoScheme) {\n s = serializePathEncoding(s, true)\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('?', encodeQuery(component.query))\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', encodeFragment(component.fragment))\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n// Captures the authority component (between \"//\" and the next \"/\", \"?\" or \"#\"),\n// with or without a scheme prefix, for the literal-backslash rejection below.\nconst AUTHORITY_PREFIX = /^(?:[^#/:?]+:)?\\/\\/([^/?#]*)/\n\n// Captures the leading authority-introducer region after an optional scheme: a\n// run of forward slashes, backslashes, and the characters the WHATWG URL parser\n// removes before parsing (TAB U+0009, LF U+000A, CR U+000D). A valid introducer\n// is exactly \"//\". Node treats \"\\\" as \"/\" on special schemes and strips those\n// characters first, so forms like \"\\\\\", \"/\\\", \"\\/\", \"/<TAB>/\", or a leading\n// \"<TAB>//\" reach an authority in Node while fast-uri's URI_PARSE folds them into\n// the path group (host confusion / SSRF / redirect bypass).\nconst AUTHORITY_INTRODUCER_REGION = /^(?:[^#/:?]+:)?([/\\\\\\t\\n\\r]*)/\n\n/**\n * @param {import('./types/index').URIComponent} parsed\n * @param {RegExpMatchArray} matches\n * @returns {string|undefined}\n */\nfunction getParseError (parsed, matches) {\n if (matches[2] !== undefined && parsed.path && parsed.path[0] !== '/') {\n return 'URI path must start with \"/\" when authority is present.'\n }\n\n if (typeof parsed.port === 'number' && (parsed.port < 0 || parsed.port > 65535)) {\n return 'URI port is malformed.'\n }\n\n return undefined\n}\n\n/**\n * Checks percent syntax without decoding the represented octets. RFC 3986\n * percent-encoding is byte-oriented, so sequences such as `%FF` are valid even\n * though they are not independently valid UTF-8.\n *\n * @param {string|undefined} component\n * @returns {boolean}\n */\nfunction hasMalformedPercentEncoding (component) {\n if (component === undefined) return false\n\n let percent = component.indexOf('%')\n while (percent !== -1) {\n if (percent + 2 >= component.length || !/^[\\da-f]{2}$/iu.test(component.slice(percent + 1, percent + 3))) {\n return true\n }\n percent = component.indexOf('%', percent + 3)\n }\n\n return false\n}\n\n/**\n * @param {RegExpMatchArray} matches\n * @returns {boolean}\n */\nfunction hasMalformedComponentPercentEncoding (matches) {\n // Bracketed IP literals use a raw \"%\" as the zone separator for historical\n // compatibility. Their parsing is intentionally left to normalizeIPv6.\n const host = matches[4]\n return hasMalformedPercentEncoding(matches[3]) ||\n (host !== undefined && !(host[0] === '[' && host[host.length - 1] === ']') && hasMalformedPercentEncoding(host)) ||\n hasMalformedPercentEncoding(matches[6]) ||\n hasMalformedPercentEncoding(matches[7]) ||\n hasMalformedPercentEncoding(matches[8])\n}\n\n/**\n * @param {import('./types/index').URIComponent} parsed\n * @param {import('./types/index').Options} options\n * @param {{ domainHost?: boolean, unicodeSupport?: boolean }|undefined} schemeHandler\n * @param {boolean} isIP\n * @returns {boolean} whether host conversion failed\n */\nfunction canonicalizeHost (parsed, options, schemeHandler, isIP) {\n if (\n !options.unicodeSupport &&\n (!schemeHandler || !schemeHandler.unicodeSupport) &&\n parsed.host &&\n parsed.host[0] !== '[' &&\n (options.domainHost || (schemeHandler && schemeHandler.domainHost)) &&\n isIP === false &&\n nonSimpleDomain(parsed.host)\n ) {\n try {\n parsed.host = new URL('http://' + parsed.host).hostname\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n return true\n }\n }\n return false\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ parsed: import('./types/index').URIComponent, malformedAuthorityOrPort: boolean, malformedPercentEncoding: boolean, malformedSchemeSpecific: boolean, malformedHost: boolean, malformedScheme: boolean }}\n */\nfunction parseWithStatus (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 malformedAuthorityOrPort = false\n let malformedPercentEncoding = false\n let malformedSchemeSpecific = false\n let malformedHost = false\n let malformedIPLiteral = false\n let malformedScheme = false\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 // A literal backslash (U+005C) is not a valid RFC 3986 URI character and is\n // not an authority delimiter. Reject it in the authority rather than\n // rewriting it: normalizing \"\\\" -> \"/\" (WHATWG error recovery) could silently\n // change the resource identified by an otherwise-invalid input, and lets \"\\\"\n // act as a host delimiter here while Node's native URL parses a different\n // host (SSRF / redirect / origin-allowlist bypass). Percent-encoded %5C is\n // untouched and remains valid encoded data.\n const authorityMatch = uri.match(AUTHORITY_PREFIX)\n if (authorityMatch !== null && authorityMatch[1].indexOf('\\\\') !== -1) {\n parsed.error = 'URI authority must not contain a literal backslash.'\n malformedAuthorityOrPort = true\n }\n\n // Reject a malformed or whitespace-smuggled authority introducer. fast-uri\n // only recognizes a literal \"//\"; anything else in the leading separator run\n // (a backslash, or a \"//\" that appears only after removing the TAB/LF/CR that\n // Node strips) means the authority fast-uri parses differs from the one Node's\n // URL resolves. Reject rather than rewrite, mirroring the literal-backslash\n // guard above. Percent-encoded forms (%5C, %09) are untouched, valid data.\n const introducerMatch = uri.match(AUTHORITY_INTRODUCER_REGION)\n if (introducerMatch !== null) {\n const region = introducerMatch[1]\n const normalizedRegion = region.replace(/[\\t\\n\\r]/g, '')\n // Two or more leading separators introduce an authority.\n if (normalizedRegion.length >= 2) {\n if (normalizedRegion.slice(0, 2) !== '//') {\n parsed.error = parsed.error || 'URI authority must not contain a literal backslash.'\n malformedAuthorityOrPort = true\n } else if (region.length !== normalizedRegion.length) {\n parsed.error = parsed.error || 'URI authority introducer must not contain whitespace.'\n malformedAuthorityOrPort = true\n }\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 if (parsed.scheme !== undefined) {\n const decodedScheme = unescape(parsed.scheme)\n if (VALID_SCHEME.test(decodedScheme)) {\n parsed.scheme = decodedScheme.toLowerCase()\n } else {\n parsed.error = parsed.error || MALFORMED_SCHEME_ERROR\n malformedScheme = true\n }\n }\n\n malformedPercentEncoding = hasMalformedComponentPercentEncoding(matches)\n if (malformedPercentEncoding) {\n parsed.error = parsed.error || 'URI contains malformed percent-encoding.'\n }\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n\n const parseError = getParseError(parsed, matches)\n if (parseError !== undefined) {\n parsed.error = parsed.error || parseError\n malformedAuthorityOrPort = true\n }\n\n if (parsed.host) {\n const ipv4result = isIPv4(parsed.host)\n if (ipv4result === false) {\n const bracketedIPLiteral = parsed.host[0] === '[' && parsed.host[parsed.host.length - 1] === ']'\n const ipv6result = normalizeIPv6(parsed.host)\n isIP = ipv6result.isIPV6 || ipv6result.isIPVFuture === true\n malformedIPLiteral = bracketedIPLiteral && ipv6result.error === true\n parsed.host = isIP ? ipv6result.host : ipv6result.host.toLowerCase()\n\n if (malformedIPLiteral) {\n parsed.error = parsed.error || 'URI host is malformed.'\n malformedAuthorityOrPort = true\n }\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 // convert Unicode IDN -> ASCII IDN when the effective scheme uses domain hosts\n malformedHost = canonicalizeHost(parsed, options, schemeHandler, isIP)\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.host !== undefined && !malformedIPLiteral) {\n const host = isIP ? parsed.host : normalizePercentEncoding(parsed.host, true)\n parsed.host = reescapeHostDelimiters(host, isIP)\n }\n }\n if (parsed.path) {\n parsed.path = normalizePathEncoding(parsed.path)\n }\n if (parsed.query) {\n parsed.query = normalizeQueryFragmentEncoding(parsed.query)\n }\n if (parsed.fragment) {\n parsed.fragment = normalizeQueryFragmentEncoding(parsed.fragment)\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n if (schemeHandler === SCHEMES.urn && parsed.nid === undefined) {\n malformedSchemeSpecific = true\n }\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return { parsed, malformedAuthorityOrPort, malformedPercentEncoding, malformedSchemeSpecific, malformedHost, malformedScheme }\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n return parseWithStatus(uri, opts).parsed\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction normalizeString (uri, opts) {\n return normalizeStringWithStatus(uri, opts).normalized\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ normalized: string, malformedAuthorityOrPort: boolean, malformedPercentEncoding: boolean, malformedSchemeSpecific: boolean, malformedHost: boolean, malformedScheme: boolean }}\n */\nfunction normalizeStringWithStatus (uri, opts) {\n const { parsed, malformedAuthorityOrPort, malformedPercentEncoding, malformedSchemeSpecific, malformedHost, malformedScheme } = parseWithStatus(uri, opts)\n return {\n normalized: malformedAuthorityOrPort || malformedPercentEncoding || malformedSchemeSpecific || malformedHost || malformedScheme ? uri : serialize(parsed, opts),\n malformedAuthorityOrPort,\n malformedPercentEncoding,\n malformedSchemeSpecific,\n malformedHost,\n malformedScheme\n }\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {string|undefined}\n */\nfunction normalizeComparableURI (uri, opts) {\n if (typeof uri !== 'string' && typeof uri !== 'object') {\n return undefined\n }\n\n let value\n try {\n value = typeof uri === 'string' ? uri : serialize(uri, opts)\n } catch {\n return undefined\n }\n const { normalized, malformedAuthorityOrPort, malformedPercentEncoding, malformedSchemeSpecific, malformedHost, malformedScheme } = normalizeStringWithStatus(value, opts)\n return malformedAuthorityOrPort || malformedPercentEncoding || malformedSchemeSpecific || malformedHost || malformedScheme ? undefined : normalized\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", "import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n", "export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof 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])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n specialNumbers?: \"fast\" | \"null\" // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise<AnySchemaObject>\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<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}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = Object.create(null)\n readonly RULES: ValidationRules\n readonly _compilations: Set<SchemaEnv> = new Set()\n private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n data: unknown\n ): data is JTDDataType<T>\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n validate<T>(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise<T> {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema<T>(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile<T>(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n _meta?: boolean\n ): ValidateFunction<JTDDataType<T>>\n compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync<T = unknown>(\n schema: SchemaObject | JSONSchemaType<T>,\n _meta?: boolean\n ): Promise<ValidateFunction<T>>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>>\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>> {\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\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise<AnyValidateFunction> {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // 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?: boolean, // 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 ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\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 = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\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(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\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\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\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<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n }\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?: AnySchema | string | RegExp): Ajv {\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\") 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 = 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\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\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 } 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 } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\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) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\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) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\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 } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new 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) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\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] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) 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}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) 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) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n", "import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\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) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n {keyword: \"$comment\"},\n \"definitions\",\n idKeyword,\n refKeyword,\n]\n\nexport default core\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\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}\n\nexport type LimitNumberError = ErrorObject<\n Kwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\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 ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n", "// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\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) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {useFunc} from \"../../compile/util\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\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\" ? _`new RegExp` : useFunc(gen, regExp)\n const valid = gen.let(\"valid\")\n gen.try(\n () => gen.assign(valid, _`${regExpCode}(${schemaCode}, ${u}).test(${data})`),\n () => gen.assign(valid, false)\n )\n cxt.fail$data(_`!${valid}`)\n } else {\n const regExp = usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (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 checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\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 } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n", "// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n", "import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\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 checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\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 } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = 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 checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\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) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: 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}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = 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 = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\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(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = 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\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n", "import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n 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) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\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 } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n", "import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n", "import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator<string>\n | FormatValidator<number>\n | AsyncFormatValidator<string>\n | AsyncFormatValidator<number>\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${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, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n", "import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n]\n", "import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n]\n\nexport default draft7Vocabularies\n", "import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n", "import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\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\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\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?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\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}\n\nexport default def\n", "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n },\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$ref\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\"$ref\": \"#\"},\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": true\n },\n \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"contains\": {\"$ref\": \"#\"},\n \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"propertyNames\": {\"$ref\": \"#\"},\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true,\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentEncoding\": {\"type\": \"string\"},\n \"if\": {\"$ref\": \"#\"},\n \"then\": {\"$ref\": \"#\"},\n \"else\": {\"$ref\": \"#\"},\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"default\": true\n}\n", "import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n _addVocabularies(): void {\n super._addVocabularies()\n draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) 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\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n", "import type {Format, FormatDefinition} from \"ajv\"\nimport type {FormatValidator, FormatCompare} from \"ajv/dist/types\"\n\nexport type FormatMode = \"fast\" | \"full\"\n\nexport type FormatName =\n | \"date\"\n | \"time\"\n | \"date-time\"\n | \"iso-time\"\n | \"iso-date-time\"\n | \"duration\"\n | \"uri\"\n | \"uri-reference\"\n | \"uri-template\"\n | \"url\"\n | \"email\"\n | \"hostname\"\n | \"ipv4\"\n | \"ipv6\"\n | \"regex\"\n | \"uuid\"\n | \"json-pointer\"\n | \"json-pointer-uri-fragment\"\n | \"relative-json-pointer\"\n | \"byte\"\n | \"int32\"\n | \"int64\"\n | \"float\"\n | \"double\"\n | \"password\"\n | \"binary\"\n\nexport type DefinedFormats = {\n [key in FormatName]: Format\n}\n\nfunction fmtDef(\n validate: RegExp | FormatValidator<string>,\n compare: FormatCompare<string>\n): FormatDefinition<string> {\n return {validate, compare}\n}\n\nexport const fullFormats: DefinedFormats = {\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\":\n /^(?:[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\":\n /^(?:(?:[^\\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:\n /^[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:\n /^(?=.{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}\n\nexport const fastFormats: DefinedFormats = {\n ...fullFormats,\n date: fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/, compareDate),\n time: fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareTime\n ),\n \"date-time\": fmtDef(\n /^\\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,\n compareDateTime\n ),\n \"iso-time\": fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoTime\n ),\n \"iso-date-time\": fmtDef(\n /^\\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,\n compareIsoDateTime\n ),\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:\n /^[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}\n\nexport const formatNames = Object.keys(fullFormats) as FormatName[]\n\nfunction isLeapYear(year: number): boolean {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\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]\n\nfunction date(str: string): boolean {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n const matches: string[] | null = DATE.exec(str)\n if (!matches) return false\n const year: number = +matches[1]\n const month: number = +matches[2]\n const day: number = +matches[3]\n return (\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])\n )\n}\n\nfunction compareDate(d1: string, d2: string): number | undefined {\n if (!(d1 && d2)) return undefined\n if (d1 > d2) return 1\n if (d1 < d2) return -1\n return 0\n}\n\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d(?:\\.\\d+)?)(z|([+-])(\\d\\d)(?::?(\\d\\d))?)?$/i\n\nfunction getTime(strictTimeZone?: boolean): (str: string) => boolean {\n return function time(str: string): boolean {\n const matches: string[] | null = TIME.exec(str)\n if (!matches) return false\n const hr: number = +matches[1]\n const min: number = +matches[2]\n const sec: number = +matches[3]\n const tz: string | undefined = matches[4]\n const tzSign: number = matches[5] === \"-\" ? -1 : 1\n const tzH: number = +(matches[6] || 0)\n const tzM: number = +(matches[7] || 0)\n if (tzH > 23 || tzM > 59 || (strictTimeZone && !tz)) return false\n if (hr <= 23 && min <= 59 && sec < 60) 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}\n\nfunction compareTime(s1: string, s2: string): number | undefined {\n if (!(s1 && s2)) 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)) return undefined\n return t1 - t2\n}\n\nfunction compareIsoTime(t1: string, t2: string): number | undefined {\n if (!(t1 && t2)) return undefined\n const a1 = TIME.exec(t1)\n const a2 = TIME.exec(t2)\n if (!(a1 && a2)) return undefined\n t1 = a1[1] + a1[2] + a1[3]\n t2 = a2[1] + a2[2] + a2[3]\n if (t1 > t2) return 1\n if (t1 < t2) return -1\n return 0\n}\n\nconst DATE_TIME_SEPARATOR = /t|\\s/i\nfunction getDateTime(strictTimeZone?: boolean): (str: string) => boolean {\n const time = getTime(strictTimeZone)\n\n return function date_time(str: string): boolean {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n const dateTime: string[] = str.split(DATE_TIME_SEPARATOR)\n return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1])\n }\n}\n\nfunction compareDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const d1 = new Date(dt1).valueOf()\n const d2 = new Date(dt2).valueOf()\n if (!(d1 && d2)) return undefined\n return d1 - d2\n}\n\nfunction compareIsoDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) 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) return undefined\n return res || compareTime(t1, t2)\n}\n\nconst NOT_URI_FRAGMENT = /\\/|:/\nconst URI =\n /^(?:[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\nfunction uri(str: string): boolean {\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}\n\nconst BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm\n\nfunction byte(str: string): boolean {\n BYTE.lastIndex = 0\n return BYTE.test(str)\n}\n\nconst MIN_INT32 = -(2 ** 31)\nconst MAX_INT32 = 2 ** 31 - 1\n\nfunction validateInt32(value: number): boolean {\n return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32\n}\n\nfunction validateInt64(value: number): boolean {\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}\n\nfunction validateNumber(): boolean {\n return true\n}\n\nconst Z_ANCHOR = /[^\\\\]\\\\Z/\nfunction regex(str: string): boolean {\n if (Z_ANCHOR.test(str)) return false\n try {\n new RegExp(str)\n return true\n } catch (e) {\n return false\n }\n}\n", "import type Ajv from \"ajv\"\nimport type {\n Plugin,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n Code,\n Name,\n ErrorObject,\n} from \"ajv\"\nimport type {AddedFormat} from \"ajv/dist/types\"\nimport type {Rule} from \"ajv/dist/compile/rules\"\nimport {KeywordCxt} from \"ajv\"\nimport {_, str, or, getProperty, operators} from \"ajv/dist/compile/codegen\"\n\ntype Kwd = \"formatMaximum\" | \"formatMinimum\" | \"formatExclusiveMaximum\" | \"formatExclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst ops = operators\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\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}\n\nexport type LimitFormatError = ErrorObject<Kwd, {limit: string; comparison: Comparison}>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`should be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nexport const formatLimitDefinition: CodeKeywordDefinition = {\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) return\n\n const fCxt = new KeywordCxt(it, (self.RULES.all.format as Rule).definition, \"format\")\n if (fCxt.$data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fmt = gen.const(\"fmt\", _`${fmts}[${fCxt.schemaCode}]`)\n cxt.fail$data(\n or(\n _`typeof ${fmt} != \"object\"`,\n _`${fmt} instanceof RegExp`,\n _`typeof ${fmt}.compare != \"function\"`,\n compareCode(fmt)\n )\n )\n }\n\n function validateFormat(): void {\n const format = fCxt.schema as string\n const fmtDef: AddedFormat | undefined = self.formats[format]\n if (!fmtDef || fmtDef === true) return\n if (\n typeof fmtDef != \"object\" ||\n fmtDef instanceof RegExp ||\n typeof fmtDef.compare != \"function\"\n ) {\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 ? _`${opts.code.formats}${getProperty(format)}` : undefined,\n })\n\n cxt.fail$data(compareCode(fmt))\n }\n\n function compareCode(fmt: Name): Code {\n return _`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword as Kwd].fail} 0`\n }\n },\n dependencies: [\"format\"],\n}\n\nconst formatLimitPlugin: Plugin<undefined> = (ajv: Ajv): Ajv => {\n ajv.addKeyword(formatLimitDefinition)\n return ajv\n}\n\nexport default formatLimitPlugin\n", "import {\n DefinedFormats,\n FormatMode,\n FormatName,\n formatNames,\n fastFormats,\n fullFormats,\n} from \"./formats\"\nimport formatLimit from \"./limit\"\nimport type Ajv from \"ajv\"\nimport type {Plugin, Format} from \"ajv\"\nimport {_, Name} from \"ajv/dist/compile/codegen\"\n\nexport {FormatMode, FormatName} from \"./formats\"\nexport {LimitFormatError} from \"./limit\"\nexport interface FormatOptions {\n mode?: FormatMode\n formats?: FormatName[]\n keywords?: boolean\n}\n\nexport type FormatsPluginOptions = FormatName[] | FormatOptions\n\nexport interface FormatsPlugin extends Plugin<FormatsPluginOptions> {\n get: (format: FormatName, mode?: FormatMode) => Format\n}\n\nconst fullName = new Name(\"fullFormats\")\nconst fastName = new Name(\"fastFormats\")\n\nconst formatsPlugin: FormatsPlugin = (\n ajv: Ajv,\n opts: FormatsPluginOptions = {keywords: true}\n): Ajv => {\n if (Array.isArray(opts)) {\n addFormats(ajv, opts, fullFormats, fullName)\n return ajv\n }\n const [formats, exportName] =\n opts.mode === \"fast\" ? [fastFormats, fastName] : [fullFormats, fullName]\n const list = opts.formats || formatNames\n addFormats(ajv, list, formats, exportName)\n if (opts.keywords) formatLimit(ajv)\n return ajv\n}\n\nformatsPlugin.get = (name: FormatName, mode: FormatMode = \"full\"): Format => {\n const formats = mode === \"fast\" ? fastFormats : fullFormats\n const f = formats[name]\n if (!f) throw new Error(`Unknown format \"${name}\"`)\n return f\n}\n\nfunction addFormats(ajv: Ajv, list: FormatName[], fs: DefinedFormats, exportName: Name): void {\n ajv.opts.code.formats ??= _`require(\"ajv-formats/dist/formats\").${exportName}`\n for (const f of list) ajv.addFormat(f, fs[f])\n}\n\nmodule.exports = exports = formatsPlugin\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default formatsPlugin\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n", "var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n", "const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n", "'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n", "'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n // It's slightly altered to disable JS backtracking to avoid hanging on specially crafted input\n // Please see https://github.com/moxystudio/node-cross-spawn/pull/160 for more information\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(?=(\\\\+?)?)\\1\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(?=(\\\\+?)?)\\1$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n", "'use strict';\nmodule.exports = /^#!(.*)/;\n", "'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n", "'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n", "'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n", "'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed);\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n", "'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n", "import {\r\n type EvalStrategy,\r\n type EvalStrategyDefinition,\r\n type Evidence,\r\n type Task,\r\n type Verdict,\r\n} from './types.js'\r\n\r\nexport interface AssertStrategyOptions {\r\n /** Compare exact output when no task assertion is present. */\r\n expect?: string | string[]\r\n /** Treat a failing task as error instead of fail. */\r\n strictFiles?: boolean\r\n}\r\n\r\nexport interface JudgeStrategyOptions {\r\n judge?: (task: Task, evidence: Evidence) => number | Promise<number>\r\n /** Threshold above which the verdict passes (default 0.5). */\r\n passThreshold?: number\r\n}\r\n\r\nexport interface RegressionStrategyOptions {\r\n maxDegradation?: number\r\n requireBaseline?: boolean\r\n}\r\n\r\nexport interface AllStrategyOptions {\r\n strategies?: string[]\r\n}\r\n\r\nexport interface WeightedStrategyOptions {\r\n strategies?: Array<{ name: string; weight: number }>\r\n passThreshold?: number\r\n}\r\n\r\nexport interface GateStrategyOptions {\r\n required?: string[]\r\n thresholds?: Record<string, number>\r\n minScore?: number\r\n}\r\n\r\nexport interface CheckStrategyOptions {\r\n /** Minimum pass rate over trials, default 1. */\r\n passRate?: number\r\n}\r\n\r\nexport interface TraceStrategyOptions {\r\n /** Minimum aggregate trace score, default 0.7. */\r\n passThreshold?: number\r\n}\r\n\r\nfunction errorVerdict(taskId: string, strategy: string, message: string): Verdict {\r\n return {\r\n taskId,\r\n strategy,\r\n status: 'error',\r\n score: 0,\r\n reason: message,\r\n }\r\n}\r\n\r\nfunction cloneVerdict(verdict: Verdict): Verdict {\r\n return {\r\n ...verdict,\r\n ...(verdict.output !== undefined ? { output: structuredClone(verdict.output) } : {}),\r\n ...(verdict.meta !== undefined ? { meta: structuredClone(verdict.meta) } : {}),\r\n }\r\n}\r\n\r\nfunction stringifyOutput(output: unknown): string {\r\n if (typeof output === 'string') return output\r\n try {\r\n return JSON.stringify(output) ?? String(output)\r\n } catch {\r\n return String(output)\r\n }\r\n}\r\n\r\nexport function assertStrategy(options: AssertStrategyOptions = {}): EvalStrategy {\r\n return {\r\n name: 'assert',\r\n async evaluate(_ctx, task, evidence) {\r\n const assertion: Task['assertion'] = {\r\n ...(task.assertion ?? {}),\r\n ...(options.expect !== undefined ? { expect: options.expect } : {}),\r\n }\r\n const output = stringifyOutput(evidence.agentResult?.output ?? evidence.artifacts.output ?? '')\r\n\r\n if (assertion.check) {\r\n const ok = await assertion.check(evidence, task)\r\n return {\r\n taskId: task.id,\r\n strategy: 'assert',\r\n status: ok ? 'pass' : 'fail',\r\n score: ok ? 1 : 0,\r\n reason: ok ? 'predicate passed' : 'predicate failed',\r\n output,\r\n }\r\n }\r\n\r\n if (assertion.expect !== undefined) {\r\n const expected = Array.isArray(assertion.expect) ? assertion.expect : [assertion.expect]\r\n const missing = expected.filter(item => !output.includes(item))\r\n const ok = missing.length === 0\r\n return {\r\n taskId: task.id,\r\n strategy: 'assert',\r\n status: ok ? 'pass' : 'fail',\r\n score: ok ? 1 : 0,\r\n reason: ok ? 'output matched' : `missing: ${missing.join(', ')}`,\r\n output,\r\n }\r\n }\r\n\r\n if (assertion.files) {\r\n const ok = typeof assertion.files === 'function'\r\n ? await assertion.files(evidence)\r\n : assertion.files.every(file => evidence.artifacts[file] !== undefined)\r\n return {\r\n taskId: task.id,\r\n strategy: 'assert',\r\n status: ok ? 'pass' : 'fail',\r\n score: ok ? 1 : 0,\r\n reason: ok ? 'files present' : 'files missing',\r\n output,\r\n }\r\n }\r\n\r\n return {\r\n taskId: task.id,\r\n strategy: 'assert',\r\n status: output ? 'pass' : 'fail',\r\n score: output ? 1 : 0,\r\n reason: output ? 'non-empty output' : 'empty output',\r\n output,\r\n }\r\n },\r\n }\r\n}\r\n\r\nconst judgeScores = new Map<string, number>()\r\n\r\nexport function recordJudgeOutput(key: string, score: number): void {\r\n judgeScores.set(key, score)\r\n}\r\n\r\nexport function recordedJudgeOutput(key: string): number | undefined {\r\n return judgeScores.get(key)\r\n}\r\n\r\nexport function judgeStrategy(options: JudgeStrategyOptions = {}): EvalStrategy {\r\n return {\r\n name: 'llm-judge',\r\n async evaluate(ctx, task, evidence) {\r\n const replayKey = [\r\n ctx.run.candidate.name,\r\n ctx.run.candidate.version ?? '',\r\n task.id,\r\n 'llm-judge',\r\n String(evidence.artifacts.modelConfigHash ?? ''),\r\n ].join(':')\r\n const recorded = recordedJudgeOutput(replayKey)\r\n if (recorded !== undefined) {\r\n const threshold = options.passThreshold ?? 0.5\r\n return {\r\n taskId: task.id,\r\n strategy: 'llm-judge',\r\n status: recorded >= threshold ? 'pass' : 'fail',\r\n score: recorded,\r\n reason: 'replayed recorded judge score',\r\n meta: { replayed: true, hash: evidence.artifacts.modelConfigHash ?? '' },\r\n }\r\n }\r\n\r\n if (options.judge) {\r\n const score = Math.max(0, Math.min(1, Number(await options.judge(task, evidence)) || 0))\r\n const threshold = options.passThreshold ?? 0.5\r\n recordJudgeOutput(replayKey, score)\r\n return {\r\n taskId: task.id,\r\n strategy: 'llm-judge',\r\n status: score >= threshold ? 'pass' : 'fail',\r\n score,\r\n reason: `judge scored ${score.toFixed(3)}`,\r\n meta: { replayed: false },\r\n }\r\n }\r\n\r\n return errorVerdict(\r\n task.id,\r\n 'llm-judge',\r\n 'no judge function and no recorded score available',\r\n )\r\n },\r\n }\r\n}\r\n\r\nexport function regressionStrategy(options: RegressionStrategyOptions = {}): EvalStrategy {\r\n return {\r\n name: 'regression',\r\n async evaluate(ctx, task, evidence) {\r\n if (!ctx.baseline) {\r\n if (options.requireBaseline) {\r\n return errorVerdict(task.id, 'regression', 'baseline run required')\r\n }\r\n return {\r\n taskId: task.id,\r\n strategy: 'regression',\r\n status: 'skip',\r\n score: 0,\r\n reason: 'no baseline',\r\n meta: { skipped: true },\r\n }\r\n }\r\n\r\n const base = ctx.baseline.verdicts.find(verdict => verdict.taskId === task.id)\r\n const headScore = verdictScore(ctx, task, evidence)\r\n if (!base) {\r\n return {\r\n taskId: task.id,\r\n strategy: 'regression',\r\n status: 'skip',\r\n score: headScore,\r\n reason: 'task absent from baseline',\r\n meta: { skipped: true, headScore },\r\n }\r\n }\r\n\r\n const delta = headScore - base.score\r\n const degradation = Math.max(0, base.score - headScore)\r\n const limit = options.maxDegradation ?? 0\r\n const ok = degradation <= limit\r\n return {\r\n taskId: task.id,\r\n strategy: 'regression',\r\n status: ok ? 'pass' : 'fail',\r\n score: headScore,\r\n reason: ok\r\n ? `head ${headScore.toFixed(3)} vs base ${base.score.toFixed(3)}`\r\n : `degraded by ${degradation.toFixed(3)}, limit ${limit.toFixed(3)}`,\r\n meta: {\r\n baseScore: base.score,\r\n headScore,\r\n delta,\r\n degradation,\r\n limit,\r\n },\r\n }\r\n },\r\n }\r\n}\r\n\r\nfunction verdictScore(ctx: import('./types.js').StrategyContext, task: Task, evidence: Evidence): number {\r\n const recorded = evidence.strategyOutputs['score']\r\n if (typeof recorded === 'number') return recorded\r\n const output = stringifyOutput(evidence.agentResult?.output ?? evidence.artifacts.output ?? '')\r\n if (task.assertion?.expect !== undefined) {\r\n const expected = Array.isArray(task.assertion.expect)\r\n ? task.assertion.expect\r\n : [task.assertion.expect]\r\n return expected.every(item => output.includes(item)) ? 1 : 0\r\n }\r\n if (output) return 1\r\n return ctx.baseline?.verdicts.find(verdict => verdict.taskId === task.id)?.score ?? 0\r\n}\r\n\r\nexport function allStrategy(options: AllStrategyOptions = {}): EvalStrategy {\r\n return {\r\n name: 'all',\r\n async evaluate(ctx, task, evidence) {\r\n const names = options.strategies ?? ctx.ctx.get('evalStrategies') ?? []\r\n const strategies = (Array.isArray(names) ? names : []) as string[]\r\n const verdicts: Verdict[] = []\r\n for (const name of strategies) {\r\n const strategy = (ctx.ctx.get('eval') as { getStrategy(name: string): EvalStrategy | undefined })\r\n .getStrategy(name)\r\n if (!strategy) {\r\n verdicts.push(errorVerdict(task.id, 'all', `strategy not found: ${name}`))\r\n continue\r\n }\r\n verdicts.push(await strategy.evaluate(ctx, task, evidence))\r\n }\r\n const passed = verdicts.every(verdict => verdict.status === 'pass')\r\n return {\r\n taskId: task.id,\r\n strategy: 'all',\r\n status: passed ? 'pass' : 'fail',\r\n score: passed ? 1 : 0,\r\n reason: passed ? 'all sub-strategies passed' : 'one or more sub-strategies failed',\r\n meta: { verdicts: verdicts.map(cloneVerdict) },\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function weightedStrategy(options: WeightedStrategyOptions = {}): EvalStrategy {\r\n return {\r\n name: 'weighted',\r\n async evaluate(ctx, task, evidence) {\r\n const items = options.strategies ?? []\r\n if (!items.length) {\r\n return errorVerdict(task.id, 'weighted', 'no weighted strategies configured')\r\n }\r\n const service = ctx.ctx.get('eval') as { getStrategy(name: string): EvalStrategy | undefined }\r\n let total = 0\r\n let weightSum = 0\r\n for (const item of items) {\r\n const strategy = service.getStrategy(item.name)\r\n if (!strategy) {\r\n return errorVerdict(task.id, 'weighted', `strategy not found: ${item.name}`)\r\n }\r\n const verdict = await strategy.evaluate(ctx, task, evidence)\r\n total += verdict.score * item.weight\r\n weightSum += item.weight\r\n }\r\n const score = weightSum ? total / weightSum : 0\r\n const threshold = options.passThreshold ?? 0.5\r\n return {\r\n taskId: task.id,\r\n strategy: 'weighted',\r\n status: score >= threshold ? 'pass' : 'fail',\r\n score,\r\n reason: `weighted score ${score.toFixed(3)}, threshold ${threshold.toFixed(3)}`,\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function gateStrategy(options: GateStrategyOptions = {}): EvalStrategy {\r\n return {\r\n name: 'gate',\r\n async evaluate(ctx, task, evidence) {\r\n const service = ctx.ctx.get('eval') as { getStrategy(name: string): EvalStrategy | undefined }\r\n const required = options.required ?? []\r\n const verdicts: Verdict[] = []\r\n for (const name of required) {\r\n const strategy = service.getStrategy(name)\r\n if (!strategy) {\r\n verdicts.push(errorVerdict(task.id, 'gate', `required strategy not found: ${name}`))\r\n continue\r\n }\r\n verdicts.push(await strategy.evaluate(ctx, task, evidence))\r\n }\r\n const failed = verdicts.filter(verdict => verdict.status !== 'pass')\r\n const score = verdicts.length\r\n ? verdicts.reduce((sum, verdict) => sum + verdict.score, 0) / verdicts.length\r\n : 0\r\n const underThreshold = verdicts.some(verdict => {\r\n const threshold = options.thresholds?.[verdict.strategy]\r\n return threshold !== undefined && verdict.score < threshold\r\n })\r\n const minScoreOk = options.minScore === undefined || score >= options.minScore\r\n const ok = failed.length === 0 && !underThreshold && minScoreOk\r\n return {\r\n taskId: task.id,\r\n strategy: 'gate',\r\n status: ok ? 'pass' : 'fail',\r\n score,\r\n reason: ok\r\n ? 'gate passed'\r\n : failed.length\r\n ? `required verdicts failed: ${failed.map(v => v.strategy).join(', ')}`\r\n : 'gate threshold not met',\r\n meta: { verdicts: verdicts.map(cloneVerdict), score },\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function checkStrategy(options: CheckStrategyOptions = {}): EvalStrategy {\r\n return {\r\n name: 'check',\r\n async evaluate(_ctx, task, evidence) {\r\n if (!evidence.trials?.length) {\r\n return assertStrategy().evaluate(_ctx, task, evidence)\r\n }\r\n const trials = evidence.trials\r\n const passed = trials.filter(trial =>\r\n trial.verdicts.some(verdict => verdict.status === 'pass')).length\r\n const score = trials.length ? passed / trials.length : 0\r\n const threshold = options.passRate ?? 1\r\n return {\r\n taskId: task.id,\r\n strategy: 'check',\r\n status: score >= threshold ? 'pass' : 'fail',\r\n score,\r\n reason: `${passed}/${trials.length} trials passed`,\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function traceStrategy(options: TraceStrategyOptions = {}): EvalStrategy {\r\n return {\r\n name: 'trace',\r\n async evaluate(_ctx, task, evidence) {\r\n if (!evidence.trials?.length) {\r\n return {\r\n taskId: task.id,\r\n strategy: 'trace',\r\n status: 'skip',\r\n score: 1,\r\n reason: 'no trace',\r\n }\r\n }\r\n const scores = evidence.trials.map((trial) => {\r\n const metrics = trial.trace.metrics\r\n if (metrics.toolCalls === 0 && metrics.steps === 0) return 0\r\n const calls = Math.max(1, metrics.toolCalls)\r\n const penalty =\r\n (metrics.invalidToolCalls / calls) * 0.5\r\n + (metrics.toolErrors / calls) * 0.3\r\n + Math.min(1, metrics.retries / Math.max(1, metrics.steps)) * 0.2\r\n return Math.max(0, 1 - penalty)\r\n })\r\n const score = scores.reduce((sum, value) => sum + value, 0) / scores.length\r\n const threshold = options.passThreshold ?? 0.7\r\n return {\r\n taskId: task.id,\r\n strategy: 'trace',\r\n status: score >= threshold ? 'pass' : 'fail',\r\n score,\r\n reason: `trace score ${score.toFixed(3)}`,\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport interface StrategyRegistry {\r\n register(definition: EvalStrategyDefinition): () => void\r\n unregister(name: string): boolean\r\n get(name: string): EvalStrategy | undefined\r\n has(name: string): boolean\r\n names(): string[]\r\n}\r\n\r\nexport function createStrategyRegistry(initial: EvalStrategyDefinition[] = []): StrategyRegistry {\r\n const strategies = new Map<string, EvalStrategy>()\r\n for (const definition of initial) {\r\n const strategy: EvalStrategy = {\r\n name: definition.name,\r\n evaluate: definition.evaluate,\r\n }\r\n strategies.set(definition.name, strategy)\r\n }\r\n\r\n return {\r\n register(definition) {\r\n const strategy: EvalStrategy = {\r\n name: definition.name,\r\n evaluate: definition.evaluate,\r\n }\r\n if (strategies.has(definition.name)) {\r\n throw new Error(`strategy already registered: ${definition.name}`)\r\n }\r\n strategies.set(definition.name, strategy)\r\n return () => {\r\n if (strategies.get(definition.name) === strategy) {\r\n strategies.delete(definition.name)\r\n }\r\n }\r\n },\r\n unregister(name) {\r\n return strategies.delete(name)\r\n },\r\n get(name) {\r\n return strategies.get(name)\r\n },\r\n has(name) {\r\n return strategies.has(name)\r\n },\r\n names() {\r\n return [...strategies.keys()]\r\n },\r\n }\r\n}\r\n\r\nexport function defaultStrategyDefinitions(): EvalStrategyDefinition[] {\r\n return [\r\n assertStrategy(),\r\n judgeStrategy(),\r\n regressionStrategy(),\r\n allStrategy(),\r\n weightedStrategy(),\r\n gateStrategy(),\r\n checkStrategy(),\r\n traceStrategy(),\r\n ]\r\n}\r\n", "import { randomUUID } from 'node:crypto'\r\nimport { mkdir, mkdtemp } from 'node:fs/promises'\r\nimport { tmpdir } from 'node:os'\r\nimport { join, resolve } from 'node:path'\r\nimport type { Context } from '@tnega/core'\r\nimport type { AgentInput, AgentLoop, AgentRunResult } from '@tnega/agent'\r\nimport type { SessionLog } from '@tnega/session'\r\nimport { session } from '@tnega/session'\r\nimport { tools } from '@tnega/tools'\r\nimport { createCodingEvalRuntime, type CodingEvalRuntime } from './codingRuntime.js'\r\nimport { createEvalToolPolicy } from './policy.js'\r\nimport { deriveTraceMetrics } from './trace.js'\r\nimport {\r\n type BudgetUsage,\r\n type Evidence,\r\n type EvalRun,\r\n type EvalRunOptions,\r\n type RunBudget,\r\n type Task,\r\n type TaskPermissions,\r\n type TrialEvidence,\r\n type TrialSummary,\r\n type Verdict,\r\n} from './types.js'\r\nimport { clone, hashJson, loadJson, saveJson } from './utils.js'\r\nimport { createTaskWorkspace, runWorkspaceCommand } from './workspace.js'\r\nimport type { StrategyRegistry } from './strategies.js'\r\n\r\ninterface TaskRunState {\r\n task: Task\r\n scope: Context\r\n dispose(): Promise<void>\r\n}\r\n\r\nexport class EvalRunner {\r\n constructor(\r\n private ctx: Context,\r\n private strategies: StrategyRegistry,\r\n private defaultBudget: RunBudget = {},\r\n private outputDir = '.tnega/runs',\r\n ) {}\r\n\r\n async run(options: EvalRunOptions): Promise<EvalRun> {\r\n const id = randomUUID()\r\n const runScope = this.ctx\r\n .isolate('eval')\r\n .isolate('agentLoop')\r\n .isolate('session')\r\n .isolate('tools')\r\n let candidateFiber: { dispose(): Promise<void> } | undefined\r\n if (!options.coding) {\r\n candidateFiber = runScope.plugin(options.candidate.plugin, options.candidate.config)\r\n try {\r\n await candidateFiber\r\n } catch (error) {\r\n this._abort(runScope, id, `candidate failed to load: ${this._message(error)}`)\r\n throw error\r\n }\r\n }\r\n\r\n const candidate = {\r\n name: options.candidate.name,\r\n ...(options.candidate.version ? { version: options.candidate.version } : {}),\r\n ...(options.candidate.config ? { config: options.candidate.config } : {}),\r\n ...(options.candidate.model ? { model: options.candidate.model } : {}),\r\n }\r\n const modelConfigHash = options.candidate.model\r\n ? hashJson(options.candidate.model)\r\n : undefined\r\n const budget: RunBudget = {\r\n ...this.defaultBudget,\r\n ...(options.budget ?? {}),\r\n }\r\n const startedAt = Date.now()\r\n const usage: BudgetUsage = {\r\n turns: 0,\r\n tokens: 0,\r\n cost: 0,\r\n timeMs: 0,\r\n }\r\n const controller = new AbortController()\r\n let aborted = false\r\n let abortedReason: string | undefined\r\n const run: EvalRun = {\r\n id,\r\n createdAt: startedAt,\r\n candidate,\r\n taskIds: options.tasks.map(task => task.id),\r\n verdicts: [],\r\n summary: {\r\n total: options.tasks.length,\r\n passed: 0,\r\n failed: 0,\r\n skipped: 0,\r\n errors: 0,\r\n score: 0,\r\n budget: usage,\r\n },\r\n cacheHits: 0,\r\n aborted,\r\n ...(modelConfigHash ? { modelConfigHash } : {}),\r\n ...(options.baselineRunId ? { baselineRunId: options.baselineRunId } : {}),\r\n }\r\n\r\n const baseline = options.baselineRunId\r\n ? await this._loadRun(join(this.outputDir, `${options.baselineRunId}.json`))\r\n : undefined\r\n\r\n this.ctx.emit('eval/start', {\r\n runId: id,\r\n candidate,\r\n taskIds: run.taskIds,\r\n budget,\r\n })\r\n\r\n for (const task of options.tasks) {\r\n if (controller.signal.aborted || this._exceeded(budget, usage)) {\r\n aborted = true\r\n abortedReason = 'budget exceeded'\r\n this._abort(runScope, id, abortedReason)\r\n break\r\n }\r\n\r\n const taskStartedAt = Date.now()\r\n const cacheKey = options.cache\r\n ? this._cacheKey(task, options, modelConfigHash)\r\n : undefined\r\n const cachedEvidence = cacheKey ? await this._loadCachedEvidence(cacheKey) : undefined\r\n\r\n let evidence: Evidence\r\n let fromCache = false\r\n if (cachedEvidence) {\r\n evidence = cachedEvidence\r\n fromCache = true\r\n run.cacheHits += 1\r\n this.ctx.emit('eval/task-start', {\r\n runId: id,\r\n task,\r\n scope: runScope,\r\n })\r\n } else {\r\n if (options.coding) {\r\n this.ctx.emit('eval/task-start', {\r\n runId: id,\r\n task,\r\n scope: runScope,\r\n })\r\n this._armTimeout(task, controller)\r\n evidence = await this._runCodingTask(\r\n task,\r\n options,\r\n run,\r\n controller,\r\n usage,\r\n )\r\n } else {\r\n const state = await this._createTaskScope(runScope, task)\r\n try {\r\n this.ctx.emit('eval/task-start', {\r\n runId: id,\r\n task,\r\n scope: state.scope,\r\n })\r\n this._armTimeout(task, controller)\r\n evidence = await this._runTask(\r\n state.scope,\r\n task,\r\n options,\r\n run,\r\n controller,\r\n usage,\r\n )\r\n } finally {\r\n await state.dispose()\r\n }\r\n }\r\n usage.timeMs = Date.now() - startedAt\r\n if (cacheKey) {\r\n await this._saveCachedEvidence(cacheKey, evidence)\r\n }\r\n }\r\n\r\n const durationMs = Date.now() - taskStartedAt\r\n this.ctx.emit('eval/task-end', {\r\n runId: id,\r\n task,\r\n evidence,\r\n durationMs,\r\n fromCache,\r\n })\r\n\r\n const strategyNames = task.strategies?.length\r\n ? task.strategies\r\n : options.strategyNames?.length\r\n ? options.strategyNames\r\n : options.coding\r\n ? ['check', 'trace']\r\n : ['assert']\r\n for (const name of strategyNames) {\r\n const strategy = this.strategies.get(name)\r\n const verdict = strategy\r\n ? await strategy.evaluate(\r\n {\r\n ctx: this.ctx,\r\n run,\r\n ...(baseline ? { baseline } : {}),\r\n },\r\n task,\r\n evidence,\r\n )\r\n : {\r\n taskId: task.id,\r\n strategy: name,\r\n status: 'error' as const,\r\n score: 0,\r\n reason: `strategy not found: ${name}`,\r\n }\r\n run.verdicts.push(verdict)\r\n this.ctx.emit('eval/verdict', {\r\n runId: id,\r\n taskId: task.id,\r\n verdict,\r\n })\r\n }\r\n\r\n if (evidence.trials?.length) {\r\n run.trialSummaries = [\r\n ...(run.trialSummaries ?? []),\r\n this._aggregateTrials(task, evidence.trials),\r\n ]\r\n }\r\n\r\n if (this._exceeded(budget, usage)) {\r\n aborted = true\r\n abortedReason = 'budget exceeded'\r\n this._abort(runScope, id, abortedReason)\r\n break\r\n }\r\n }\r\n\r\n const summary = this._summarize(run.verdicts, usage)\r\n run.summary = summary\r\n run.aborted = aborted\r\n if (abortedReason) run.abortedReason = abortedReason\r\n\r\n await candidateFiber?.dispose()\r\n this.ctx.emit('eval/run-end', { run: clone(run) })\r\n if (options.outputFile) {\r\n await saveJson(options.outputFile, run)\r\n } else {\r\n await saveJson(join(this.outputDir, `${id}.json`), run)\r\n }\r\n return run\r\n }\r\n\r\n private async _createTaskScope(runScope: Context, task: Task): Promise<TaskRunState> {\r\n const scope = runScope.isolate(`task:${task.id}`)\r\n const sessionFile = await this._sessionFile(task.id)\r\n const sessionFiber = await scope.plugin(session, { file: sessionFile })\r\n const toolsFiber = await scope.plugin(tools)\r\n return {\r\n task,\r\n scope,\r\n dispose: async () => {\r\n await toolsFiber.dispose()\r\n await sessionFiber.dispose()\r\n },\r\n }\r\n }\r\n\r\n private _armTimeout(task: Task, controller: AbortController): void {\r\n if (task.budget?.maxTimeMs === undefined) return\r\n const timer = setTimeout(() => {\r\n controller.abort()\r\n }, task.budget.maxTimeMs)\r\n timer.unref()\r\n }\r\n\r\n private async _runTask(\r\n scope: Context,\r\n task: Task,\r\n options: EvalRunOptions,\r\n run: EvalRun,\r\n controller: AbortController,\r\n usage: BudgetUsage,\r\n ): Promise<Evidence> {\r\n const input: AgentInput = {\r\n ...(task.inputText !== undefined ? { text: task.inputText } : {}),\r\n ...(task.messages?.length ? { messages: clone(task.messages) } : {}),\r\n ...(task.input && typeof task.input === 'object'\r\n ? { context: clone(task.input) }\r\n : {}),\r\n }\r\n let agentResult: AgentRunResult | undefined\r\n let error: unknown\r\n const loop = options.runCandidate\r\n ? (agentInput: AgentInput) => options.runCandidate!(scope, {\r\n ...task,\r\n input: agentInput,\r\n })\r\n : this._loop(scope) ?? (this.ctx.root.get('agentLoop') as AgentLoop | undefined)\r\n if (!loop) {\r\n throw new Error('no agentLoop available; provide a candidate agentLoop or runCandidate')\r\n }\r\n\r\n try {\r\n agentResult = await loop(input)\r\n usage.turns += agentResult.steps.length\r\n usage.tokens += this._tokens(agentResult)\r\n usage.cost += this._cost(agentResult)\r\n usage.timeMs = Date.now() - run.createdAt\r\n if (controller.signal.aborted) {\r\n error = new Error('aborted: task time budget exceeded')\r\n agentResult = undefined\r\n this.ctx.emit('eval/abort', {\r\n runId: run.id,\r\n taskId: task.id,\r\n reason: 'task time budget exceeded',\r\n })\r\n }\r\n } catch (caught) {\r\n error = caught\r\n }\r\n\r\n const session = scope.get('session') as SessionLog | undefined\r\n const messages = session\r\n ? await session.deriveMessages()\r\n : agentResult?.messages\r\n ? clone([...agentResult.messages])\r\n : []\r\n const artifacts: Record<string, unknown> = {\r\n ...clone(task.artifacts ?? {}),\r\n ...(run.modelConfigHash ? { modelConfigHash: run.modelConfigHash } : {}),\r\n }\r\n if (error) {\r\n artifacts.error = this._errorPayload(error)\r\n }\r\n\r\n return {\r\n task,\r\n ...(agentResult ? { agentResult: clone(agentResult) } : {}),\r\n messages: clone(messages),\r\n artifacts,\r\n strategyOutputs: {},\r\n }\r\n }\r\n\r\n private async _runCodingTask(\r\n task: Task,\r\n options: EvalRunOptions,\r\n run: EvalRun,\r\n controller: AbortController,\r\n usage: BudgetUsage,\r\n ): Promise<Evidence> {\r\n const coding = options.coding\r\n if (!coding) throw new Error('coding config required')\r\n const trials = Math.max(1, task.trials ?? 3)\r\n const trialEvidence: TrialEvidence[] = []\r\n\r\n for (let trial = 1; trial <= trials; trial += 1) {\r\n if (controller.signal.aborted) break\r\n const workspace = await createTaskWorkspace(task, this._fixtureRoot(task))\r\n const tracesDir = join(this.outputDir, run.id, 'traces')\r\n const sessionFile = join(tracesDir, `${task.id}-${trial}.jsonl`)\r\n const toolPolicyOptions: { workspace: string; permissions?: TaskPermissions } = {\r\n workspace: workspace.dir,\r\n }\r\n if (task.permissions !== undefined) {\r\n toolPolicyOptions.permissions = task.permissions\r\n }\r\n const toolPolicy = createEvalToolPolicy(toolPolicyOptions)\r\n let runtime: CodingEvalRuntime | undefined\r\n const startedAt = Date.now()\r\n const artifacts: Record<string, unknown> = {}\r\n let agentResult: AgentRunResult | undefined\r\n let error: unknown\r\n try {\r\n await mkdir(tracesDir, { recursive: true })\r\n const agentConfig: {\r\n systemPrompt?: string\r\n maxTurns?: number\r\n maxSteps?: number\r\n } = {}\r\n if (coding.agent?.systemPrompt !== undefined) {\r\n agentConfig.systemPrompt = coding.agent.systemPrompt\r\n }\r\n const maxTurns = task.budget?.maxTurns ?? coding.agent?.maxTurns\r\n const maxSteps = task.budget?.maxSteps ?? coding.agent?.maxSteps\r\n if (maxTurns !== undefined) agentConfig.maxTurns = maxTurns\r\n if (maxSteps !== undefined) agentConfig.maxSteps = maxSteps\r\n const skills = task.permissions?.skills ?? coding.coding?.skills\r\n const codingConfig: {\r\n skills?: boolean\r\n planTools: boolean\r\n mcp: boolean\r\n planPrompt?: string\r\n } = {\r\n planTools: coding.coding?.planTools ?? true,\r\n mcp: false,\r\n }\r\n if (skills !== undefined) codingConfig.skills = skills\r\n if (coding.coding?.planPrompt !== undefined) {\r\n codingConfig.planPrompt = coding.coding.planPrompt\r\n }\r\n runtime = await createCodingEvalRuntime({\r\n cwd: workspace.dir,\r\n sessionFile,\r\n toolPolicy,\r\n allowShell: task.permissions?.shell?.enabled ?? false,\r\n allowNetwork: task.permissions?.network ?? false,\r\n config: {\r\n llm: coding.llm,\r\n agent: agentConfig,\r\n coding: codingConfig,\r\n },\r\n })\r\n const input: AgentInput = {\r\n ...(task.inputText !== undefined ? { text: task.inputText } : {}),\r\n ...(task.messages?.length ? { messages: clone(task.messages) } : {}),\r\n }\r\n agentResult = await runtime.loop(input, { signal: controller.signal })\r\n usage.turns += agentResult.steps.length\r\n usage.tokens += this._tokens(agentResult)\r\n usage.cost += this._cost(agentResult)\r\n } catch (caught) {\r\n error = caught\r\n artifacts.error = this._errorPayload(caught)\r\n }\r\n\r\n const check = error ? undefined : await this._runCheck(\r\n task,\r\n workspace.dir,\r\n agentResult,\r\n controller.signal,\r\n )\r\n const sessionLog = runtime?.root.get('session') as { flush(): Promise<number> } | undefined\r\n await sessionLog?.flush()\r\n const trace = await deriveTraceMetrics(\r\n sessionFile,\r\n startedAt,\r\n Date.now(),\r\n {\r\n ...(agentResult ? { tokens: this._tokens(agentResult) } : {}),\r\n ...(agentResult ? { cost: this._cost(agentResult) } : {}),\r\n },\r\n )\r\n trialEvidence.push({\r\n trial,\r\n verdicts: check\r\n ? [{\r\n taskId: task.id,\r\n strategy: 'check',\r\n status: check.ok ? 'pass' : 'fail',\r\n score: check.ok ? 1 : 0,\r\n ...(check.reason ? { reason: check.reason } : {}),\r\n ...(check.output !== undefined ? { output: check.output } : {}),\r\n }]\r\n : [],\r\n trace,\r\n ...(agentResult ? { agentResult: clone(agentResult) } : {}),\r\n artifacts,\r\n })\r\n\r\n await runtime?.dispose()\r\n await workspace.dispose()\r\n usage.timeMs = Date.now() - run.createdAt\r\n }\r\n\r\n return {\r\n task,\r\n messages: [],\r\n artifacts: {},\r\n strategyOutputs: {},\r\n trials: trialEvidence,\r\n }\r\n }\r\n\r\n private async _runCheck(\r\n task: Task,\r\n cwd: string,\r\n agentResult: AgentRunResult | undefined,\r\n signal: AbortSignal,\r\n ): Promise<{ ok: boolean; reason?: string; output?: string } | undefined> {\r\n if (typeof task.check === 'function') {\r\n const evidence: Evidence = {\r\n task,\r\n ...(agentResult ? { agentResult } : {}),\r\n messages: [],\r\n artifacts: {},\r\n strategyOutputs: {},\r\n }\r\n const ok = await task.check(evidence, cwd)\r\n return {\r\n ok,\r\n ...(ok ? { reason: 'check passed' } : { reason: 'check failed' }),\r\n }\r\n }\r\n if (typeof task.check === 'string') {\r\n const result = await runWorkspaceCommand(cwd, task.check, { signal })\r\n return {\r\n ok: result.exitCode === 0,\r\n ...(result.exitCode === 0\r\n ? { reason: 'command passed' }\r\n : { reason: `command exited ${result.exitCode}` }),\r\n output: `${result.stdout}\\n${result.stderr}`.trim().slice(0, 4000),\r\n }\r\n }\r\n return undefined\r\n }\r\n\r\n private _aggregateTrials(task: Task, trials: readonly TrialEvidence[]): TrialSummary {\r\n const passed = trials.filter(trial => trial.verdicts.some(verdict => verdict.status === 'pass')).length\r\n const scores = trials.map(trial => trial.verdicts.at(-1)?.score ?? 0)\r\n const count = scores.length\r\n const passRate = count ? passed / count : 0\r\n const scoreMean = count\r\n ? scores.reduce((sum, score) => sum + score, 0) / count\r\n : 0\r\n const sorted = [...scores].sort((a, b) => a - b)\r\n const scoreMedian = count\r\n ? count % 2\r\n ? sorted[Math.floor(count / 2)] ?? 0\r\n : ((sorted[count / 2 - 1] ?? 0) + (sorted[count / 2] ?? 0)) / 2\r\n : 0\r\n const scoreStddev = count\r\n ? Math.sqrt(scores.reduce((sum, score) => sum + (score - scoreMean) ** 2, 0) / count)\r\n : 0\r\n const costMean = count\r\n ? trials.reduce((sum, trial) => sum + trial.trace.metrics.cost, 0) / count\r\n : 0\r\n const stepsMean = count\r\n ? trials.reduce((sum, trial) => sum + trial.trace.metrics.steps, 0) / count\r\n : 0\r\n return {\r\n taskId: task.id,\r\n trials: count,\r\n passed,\r\n passRate,\r\n scoreMean,\r\n scoreMedian,\r\n scoreStddev,\r\n costMean,\r\n stepsMean,\r\n }\r\n }\r\n\r\n private _fixtureRoot(task: Task): string | undefined {\r\n if (!task.fixture?.root) return undefined\r\n return resolve(task.fixture.root)\r\n }\r\n\r\n private _loop(scope: Context): AgentLoop | undefined {\r\n return scope.get('agentLoop') as AgentLoop | undefined\r\n }\r\n\r\n private _cacheKey(\r\n task: Task,\r\n options: EvalRunOptions,\r\n modelConfigHash: string | undefined,\r\n ): string {\r\n return hashJson({\r\n task: {\r\n id: task.id,\r\n input: task.input,\r\n inputText: task.inputText,\r\n messages: task.messages,\r\n fixture: task.fixture,\r\n setup: task.setup,\r\n check: task.check,\r\n trials: task.trials,\r\n permissions: task.permissions,\r\n split: task.split,\r\n },\r\n candidate: {\r\n name: options.candidate.name,\r\n version: options.candidate.version,\r\n config: options.candidate.config,\r\n },\r\n coding: options.coding\r\n ? {\r\n agent: options.coding.agent,\r\n coding: options.coding.coding,\r\n }\r\n : undefined,\r\n model: modelConfigHash,\r\n })\r\n }\r\n\r\n private async _sessionFile(taskId: string): Promise<string> {\r\n const dir = await mkdtemp(join(tmpdir(), `tnega-eval-${taskId}-`))\r\n return join(dir, 'session.jsonl')\r\n }\r\n\r\n private _tokens(result: AgentRunResult): number {\r\n let tokens = 0\r\n for (const message of result.messages) {\r\n tokens += Math.ceil(message.content.length / 4)\r\n }\r\n return tokens\r\n }\r\n\r\n private _cost(result: AgentRunResult): number {\r\n const meta = result.messages.at(-1)\r\n const record = meta as unknown as { cost?: unknown } | undefined\r\n if (record && typeof record.cost === 'number') {\r\n return record.cost\r\n }\r\n return 0\r\n }\r\n\r\n private _exceeded(budget: RunBudget, usage: BudgetUsage): boolean {\r\n if (budget.maxTimeMs !== undefined && usage.timeMs >= budget.maxTimeMs) return true\r\n if (budget.maxTurns !== undefined && usage.turns >= budget.maxTurns) return true\r\n if (budget.maxTokens !== undefined && usage.tokens >= budget.maxTokens) return true\r\n if (budget.maxCost !== undefined && usage.cost >= budget.maxCost) return true\r\n return false\r\n }\r\n\r\n private _summarize(verdicts: readonly Verdict[], usage: BudgetUsage) {\r\n let passed = 0\r\n let failed = 0\r\n let skipped = 0\r\n let errors = 0\r\n let scoreSum = 0\r\n for (const verdict of verdicts) {\r\n if (verdict.status === 'pass') passed += 1\r\n else if (verdict.status === 'fail') failed += 1\r\n else if (verdict.status === 'skip') skipped += 1\r\n else errors += 1\r\n scoreSum += verdict.score\r\n }\r\n return {\r\n total: verdicts.length,\r\n passed,\r\n failed,\r\n skipped,\r\n errors,\r\n score: verdicts.length ? scoreSum / verdicts.length : 0,\r\n budget: { ...usage },\r\n }\r\n }\r\n\r\n private _abort(scope: Context, runId: string, reason: string): void {\r\n this.ctx.emit('eval/abort', { runId, reason })\r\n void scope\r\n }\r\n\r\n private async _loadRun(file: string): Promise<EvalRun | undefined> {\r\n try {\r\n return await loadJson<EvalRun>(file)\r\n } catch {\r\n return undefined\r\n }\r\n }\r\n\r\n private async _loadCachedEvidence(cacheKey: string): Promise<Evidence | undefined> {\r\n try {\r\n return await loadJson<Evidence>(join(this.outputDir, `${cacheKey}.cache.json`))\r\n } catch {\r\n return undefined\r\n }\r\n }\r\n\r\n private async _saveCachedEvidence(cacheKey: string, evidence: Evidence): Promise<void> {\r\n await saveJson(join(this.outputDir, `${cacheKey}.cache.json`), evidence)\r\n }\r\n\r\n private _message(error: unknown): string {\r\n if (error instanceof Error) return error.message\r\n return String(error)\r\n }\r\n\r\n private _errorPayload(error: unknown): { message: string; stack?: string } {\r\n if (error instanceof Error) {\r\n return {\r\n message: error.message,\r\n ...(error.stack ? { stack: error.stack } : {}),\r\n }\r\n }\r\n return { message: String(error) }\r\n }\r\n}\r\n", "import { randomUUID } from 'node:crypto'\r\nimport { appendFile, mkdir, readFile, writeFile } from 'node:fs/promises'\r\nimport { dirname, resolve } from 'node:path'\r\nimport type { Context } from '@tnega/core'\r\nimport { checkSessionInvariants, type SessionInvariantFailure } from './invariant.js'\r\n\r\n/**\r\n * v7 derives model-visible messages from the *folded surface* instead of from\r\n * raw file order, so compaction can stay strictly append-only.\r\n *\r\n * v6 rewrote the log on every real compaction: the kept tail was physically\r\n * reordered after the checkpoint (and every seq renumbered) purely so that a\r\n * file-order projection would equal the surface. v7 removes that coupling:\r\n * `deriveMessages()` walks the surface nodes in surface position order (a\r\n * replacement node may carry a *higher* seq than the nodes that follow it),\r\n * so compaction appends `compaction/start` \u2192 `checkpoint` (prefix +\r\n * `surfaceOp.replace` range) \u2192 `compaction/end` and never rewrites history.\r\n * To keep every surface node self-describing, `assistant/message` now carries\r\n * its own `toolCalls` (the assistant turn is not reassembled from separate\r\n * `tool/call` events at projection time).\r\n *\r\n * v6 logs are rejected (no migration in the pre-release window).\r\n */\r\nexport const SESSION_FORMAT_VERSION = 7\r\n\r\n/** Serialized tool schema, structurally compatible with @tnega/tools ToolSchema. */\r\nexport interface ToolSchemaSnapshot {\r\n name: string\r\n description: string\r\n parameters?: Record<string, unknown>\r\n}\r\n\r\n/** Call configuration recorded beside a request so it can be reconstructed. */\r\nexport interface LlmCallConfig {\r\n provider?: string\r\n model?: string\r\n maxTokens?: number\r\n temperature?: number\r\n reasoningEffort?: string\r\n}\r\n\r\nexport class SessionFormatError extends Error {\r\n override name = 'SessionFormatError'\r\n}\r\n\r\nconst liveSessions = new Map<string, SessionLog>()\r\n\r\nfunction sessionFileKey(file: string): string {\r\n return resolve(file)\r\n}\r\n\r\nexport type ModelRole = 'system' | 'user' | 'assistant' | 'tool'\r\n\r\nexport interface ModelToolCall {\r\n id: string\r\n name: string\r\n arguments: unknown\r\n}\r\n\r\nexport interface ModelMessage {\r\n role: ModelRole\r\n content: string\r\n name?: string\r\n tool_call_id?: string\r\n tool_calls?: ModelToolCall[]\r\n toolOk?: boolean\r\n toolError?: ToolResultErrorPayload\r\n}\r\n\r\nexport interface UserMessagePayload {\r\n content: string\r\n name?: string\r\n parentId?: string\r\n}\r\n\r\nexport interface AssistantMessagePayload {\r\n content: string\r\n name?: string\r\n parentId?: string\r\n interrupted?: boolean\r\n /**\r\n * The tool requests this assistant turn made, when it made any. The model\r\n * transcript is derived node-by-node from the surface, so an assistant turn\r\n * must carry its calls itself rather than being reassembled from the\r\n * separate (log-only) `tool/call` events that follow it.\r\n */\r\n toolCalls?: ModelToolCall[]\r\n}\r\n\r\nexport interface AssistantChunkPayload {\r\n id: string\r\n content: string\r\n index?: number\r\n}\r\n\r\nexport interface SystemMessagePayload {\r\n content: string\r\n name?: string\r\n parentId?: string\r\n}\r\n\r\nexport type MessageEventPayload =\r\n | UserMessagePayload\r\n | AssistantMessagePayload\r\n | SystemMessagePayload\r\n\r\nexport type MessageEventType = 'user/message' | 'assistant/message' | 'system/message'\r\n\r\nexport interface CompactionStartPayload {\r\n boundary?: number\r\n keep?: number\r\n tokensBefore?: number\r\n}\r\n\r\nexport interface CompactionEndPayload {\r\n checkpointId?: string\r\n keep?: number\r\n}\r\n\r\nexport interface ToolCallPayload {\r\n id: string\r\n name: string\r\n arguments: unknown\r\n /** Exact raw arguments JSON as produced by the model; preserves serialization. */\r\n argRaw?: string\r\n turn?: number\r\n step?: number\r\n}\r\n\r\nexport interface ToolResultErrorPayload {\r\n name?: string\r\n message: string\r\n stack?: string\r\n}\r\n\r\nexport interface ToolResultPayload {\r\n id: string\r\n toolCallId: string\r\n name: string\r\n ok: boolean\r\n durationMs?: number\r\n output?: unknown\r\n error?: ToolResultErrorPayload\r\n argRaw?: string\r\n turn?: number\r\n step?: number\r\n}\r\n\r\nexport type CancelCause =\r\n | { type: 'user' }\r\n | { type: 'parent' }\r\n | { type: 'disposed' }\r\n | { type: 'abort'; message?: string }\r\n | { type: 'timeout'; timeoutMs: number }\r\n\r\n/**\r\n * Why a turn ended \u2014 the durable machine outcome, distinct from the\r\n * per-step model `finishReason`. Written on `turn/end`.\r\n */\r\nexport type TurnEndReason =\r\n | { kind: 'completed' }\r\n | { kind: 'aborted'; cause: CancelCause }\r\n | { kind: 'blocked' }\r\n | { kind: 'error'; error: ToolResultErrorPayload }\r\n | { kind: 'max-tokens' }\r\n | { kind: 'max-steps' }\r\n | { kind: 'max-turns' }\r\n | { kind: 'interrupted' }\r\n\r\nexport interface TurnStartPayload {\r\n turn: number\r\n input?: unknown\r\n reason?: string\r\n}\r\n\r\nexport interface TurnEndPayload {\r\n turn: number\r\n finishReason?: string\r\n /** The typed durable reason this turn ended. Supersedes `finishReason`. */\r\n reason?: TurnEndReason\r\n output?: string\r\n steps?: number\r\n interrupted?: boolean\r\n cancelCause?: CancelCause\r\n error?: ToolResultErrorPayload\r\n}\r\n\r\nexport interface StepStartPayload {\r\n turn: number\r\n step: number\r\n}\r\n\r\nexport interface StepEndPayload {\r\n turn: number\r\n step: number\r\n finishReason?: string\r\n toolCalls?: number\r\n interrupted?: boolean\r\n cancelCause?: CancelCause\r\n error?: ToolResultErrorPayload\r\n}\r\n\r\nexport interface LLMRetryPayload {\r\n retryId: string\r\n retry: number\r\n delayMs?: number\r\n failure?: ToolResultErrorPayload\r\n}\r\n\r\nexport interface LLMRetryStartedPayload {\r\n retryId: string\r\n retry: number\r\n}\r\n\r\n/** How a `request/header` snapshot enters the log. */\r\nexport type RequestHeaderReason =\r\n | 'initial'\r\n | 'resume'\r\n | 'change'\r\n | 'series'\r\n | 'change-series'\r\n\r\nexport interface RequestHeaderPayload {\r\n reason: RequestHeaderReason\r\n config?: LlmCallConfig\r\n /** Rendered system prompt; absent for a system-less request. */\r\n system?: string\r\n /** Assembled tool schemas; absent for a tool-less request. */\r\n tools?: ToolSchemaSnapshot[]\r\n /** True when this snapshot also begins a new model-message series. */\r\n startsSeries?: boolean\r\n}\r\n\r\nexport interface RequestContextPayload {\r\n provider?: string\r\n model?: string\r\n contextWindow?: number\r\n}\r\n\r\nexport interface CheckpointPayload {\r\n /** The compacted prefix: messages the model keeps seeing after compaction. */\r\n messages: ModelMessage[]\r\n summary?: string\r\n tokensBefore?: number\r\n /**\r\n * The surface span this checkpoint shadows, when written by a v7\r\n * compaction: `start`/`end` are the seqs of the first and last *surface\r\n * nodes* being replaced (surface positions, so `start` may be numerically\r\n * greater than `end` after an earlier compaction). The fold removes every\r\n * live node between those two positions and inserts this checkpoint there;\r\n * the kept tail stays in place and the log is never rewritten.\r\n * `'replace'` (bare string) is the legacy v5 form and shadows nothing\r\n * structurally; projection treats it as a full-surface seed.\r\n */\r\n surfaceOp?: { op: 'replace'; start: number; end: number } | 'replace'\r\n /** @deprecated v0.2 keeps raw events in place; use messages instead. */\r\n snapshot?: SessionEvent[]\r\n}\r\n\r\nexport type PlanItemStatus = 'pending' | 'done' | 'failed'\r\n\r\nexport interface PlanItemPayload {\r\n id: string\r\n title: string\r\n status: PlanItemStatus\r\n detail?: string\r\n}\r\n\r\nexport interface PlanPayload {\r\n items: PlanItemPayload[]\r\n status?: 'pending' | 'running' | 'done' | 'failed'\r\n summary?: string\r\n}\r\n\r\nexport interface InboxSplicePayload {\r\n target: 'next-turn' | 'next-step'\r\n index?: number\r\n deleteCount?: number\r\n inserted?: Array<{\r\n id: string\r\n content: string\r\n /** Structured message payload preserved across restart when present. */\r\n payload?: unknown\r\n mode?: 'followup' | 'steer'\r\n }>\r\n}\r\n\r\n/** A durable change to session display metadata (title, mode, agentType). */\r\nexport interface MetaPatchPayload {\r\n /** Keys changed by this event; only present keys are touched. */\r\n fields: Array<'title' | 'agentType' | 'mode'>\r\n title?: string\r\n agentType?: AgentType\r\n mode?: SessionMode\r\n}\r\n\r\nexport type AgentType = 'general' | 'coding'\r\n\r\nexport type SessionMode = 'auto' | 'plan' | 'execute'\r\n\r\nexport type SessionEventType =\r\n | MessageEventType\r\n | 'assistant/chunk'\r\n | 'tool/call'\r\n | 'tool/result'\r\n | 'request/header'\r\n | 'request/context'\r\n | 'agent/inbox/spliced'\r\n | 'plan'\r\n | 'checkpoint'\r\n | 'compaction/start'\r\n | 'compaction/end'\r\n | 'meta'\r\n | 'meta/patch'\r\n | 'llm/retry'\r\n | 'llm/retry-started'\r\n | 'turn/start'\r\n | 'turn/end'\r\n | 'step/start'\r\n | 'step/end'\r\n\r\nexport interface SessionEventBase<T extends SessionEventType, P> {\r\n id: string\r\n seq: number\r\n ts: number\r\n type: T\r\n payload: P\r\n /** Surface placement; required on message-producing events. */\r\n surfaceOp?: SurfaceOp\r\n /** Seqs of earlier raw events this event derives from. */\r\n sourceEventSeqs?: number[]\r\n}\r\n\r\n/**\r\n * The message-producing subset of event types. Every variant is a surface\r\n * node that carries `surfaceOp` and participates in the ordered fold.\r\n * `system/message` is included because tnega keeps the system prompt on the\r\n * transcript (OpenAI-style), so it must be replaceable and derivable like any\r\n * other message rather than living only in `request/header`.\r\n */\r\nexport type SurfaceEventType =\r\n | 'user/message'\r\n | 'system/message'\r\n | 'assistant/message'\r\n | 'tool/result'\r\n\r\nexport type SurfaceOp = 'append' | { op: 'replace'; start: number; end: number }\r\n\r\nexport type SessionEvent =\r\n | SessionEventBase<'user/message', UserMessagePayload>\r\n | SessionEventBase<'assistant/message', AssistantMessagePayload>\r\n | SessionEventBase<'assistant/chunk', AssistantChunkPayload>\r\n | SessionEventBase<'system/message', SystemMessagePayload>\r\n | SessionEventBase<'tool/call', ToolCallPayload>\r\n | SessionEventBase<'tool/result', ToolResultPayload>\r\n | SessionEventBase<'request/header', RequestHeaderPayload>\r\n | SessionEventBase<'request/context', RequestContextPayload>\r\n | SessionEventBase<'agent/inbox/spliced', InboxSplicePayload>\r\n | SessionEventBase<'plan', PlanPayload>\r\n | SessionEventBase<'checkpoint', CheckpointPayload>\r\n | SessionEventBase<'compaction/start', CompactionStartPayload>\r\n | SessionEventBase<'compaction/end', CompactionEndPayload>\r\n | SessionEventBase<'meta', Record<string, unknown>>\r\n | SessionEventBase<'meta/patch', MetaPatchPayload>\r\n | SessionEventBase<'llm/retry', LLMRetryPayload>\r\n | SessionEventBase<'llm/retry-started', LLMRetryStartedPayload>\r\n | SessionEventBase<'turn/start', TurnStartPayload>\r\n | SessionEventBase<'turn/end', TurnEndPayload>\r\n | SessionEventBase<'step/start', StepStartPayload>\r\n | SessionEventBase<'step/end', StepEndPayload>\r\n\r\nfunction isMessageEventType(type: SessionEventType): type is MessageEventType {\r\n return type === 'user/message'\r\n || type === 'assistant/message'\r\n || type === 'system/message'\r\n}\r\n\r\nfunction isMessageEvent(\r\n event: SessionEvent,\r\n): event is Extract<SessionEvent, { type: MessageEventType }> {\r\n return isMessageEventType(event.type)\r\n}\r\n\r\nexport interface SessionConfig {\r\n file: string\r\n broadcast?: SessionBroadcast\r\n}\r\n\r\nexport interface CompactOptions {\r\n keep?: number\r\n keepTokens?: number\r\n summary?: string\r\n tokensBefore?: number\r\n messages?: ModelMessage[]\r\n}\r\n\r\nexport type ReplayReducer<T> = (state: T, event: SessionEvent) => T | Promise<T>\r\n\r\nexport type SessionBroadcast = (\r\n type: 'event' | 'flush',\r\n payload: unknown,\r\n) => void\r\n\r\nexport interface ContextUsage {\r\n tokens: number\r\n limit: number\r\n ratio: number\r\n}\r\n\r\nexport const DEFAULT_CONTEXT_LIMIT = 128_000\r\n\r\nfunction isSessionEvent(value: unknown): value is SessionEvent {\r\n if (typeof value !== 'object' || value === null) return false\r\n const record = value as Record<string, unknown>\r\n return typeof record.id === 'string'\r\n && typeof record.seq === 'number'\r\n && typeof record.ts === 'number'\r\n && typeof record.type === 'string'\r\n && 'payload' in record\r\n}\r\n\r\nfunction clone<T>(value: T): T {\r\n return structuredClone(value)\r\n}\r\n\r\nfunction previousSurfaceSeq(nodes: readonly number[]): number | undefined {\r\n return nodes.at(-1)\r\n}\r\n\r\n/**\r\n * Project an event list to model messages, in the list's own order. Each\r\n * surface event is mapped through {@link deriveEventMessage}; a `checkpoint`\r\n * splices its compacted prefix in at its position. This is the building block\r\n * both {@link deriveSurfaceMessages} (surface order) and callers holding a\r\n * compact slice (e.g. the events a summarizer will read) share.\r\n */\r\nexport function projectEvents(events: readonly SessionEvent[]): ModelMessage[] {\r\n const messages: ModelMessage[] = []\r\n for (const event of events) {\r\n if (event.type === 'checkpoint') {\r\n messages.splice(0, messages.length, ...clone(event.payload.messages))\r\n continue\r\n }\r\n const message = deriveEventMessage(event)\r\n if (message) messages.push(message)\r\n }\r\n return messages\r\n}\r\n\r\nexport function isAppendSurfaceEvent(event: SessionEvent): boolean {\r\n return isSurfaceEventType(event.type) && event.surfaceOp === 'append'\r\n}\r\n\r\nexport function isSurfaceEventType(type: SessionEventType): type is SurfaceEventType {\r\n return type === 'user/message'\r\n || type === 'system/message'\r\n || type === 'assistant/message'\r\n || type === 'tool/result'\r\n}\r\n\r\n/** A v7 checkpoint shadows a surface span; legacy ('replace') shadows nothing structurally. */\r\nexport function checkpointShadowRange(\r\n event: SessionEvent,\r\n): { start: number; end: number } | undefined {\r\n if (event.type !== 'checkpoint') return undefined\r\n const op = event.payload.surfaceOp\r\n if (typeof op === 'object' && op !== null && op.op === 'replace') {\r\n return { start: op.start, end: op.end }\r\n }\r\n return undefined\r\n}\r\n\r\n/** Detached current surface nodes plus every replacement's shadowed ranges. */\r\nexport interface SurfaceFoldReplacement {\r\n seq: number\r\n start: number\r\n end: number\r\n shadowedSeqs: number[]\r\n}\r\n\r\nexport interface SurfaceFoldResult {\r\n nodes: number[]\r\n replacements: SurfaceFoldReplacement[]\r\n}\r\n\r\n/**\r\n * Fold a log's surface operations into the current surface node order.\r\n *\r\n * The surface is *positional*: a replacement removes the live nodes between\r\n * the positions of `start`/`end` and inserts the replacing event's seq there,\r\n * so surface order is independent of raw seq order \u2014 after compaction the\r\n * checkpoint node may carry a higher seq than the kept tail that follows it.\r\n */\r\nexport function foldSurface(events: readonly SessionEvent[]): SurfaceFoldResult {\r\n const nodes: number[] = []\r\n const replacements: SurfaceFoldReplacement[] = []\r\n\r\n const applyReplace = (seq: number, start: number, end: number): void => {\r\n const startIndex = nodes.indexOf(start)\r\n if (startIndex < 0) {\r\n // The shadowed head is already gone (defensive; our writer always\r\n // shadows live nodes). Keep the prefix visible by anchoring at the tail.\r\n nodes.push(seq)\r\n return\r\n }\r\n const endIndex = nodes.indexOf(end, startIndex)\r\n if (endIndex < 0) {\r\n nodes.push(seq)\r\n return\r\n }\r\n const shadowed = nodes.splice(startIndex, endIndex - startIndex + 1)\r\n nodes.splice(startIndex, 0, seq)\r\n replacements.push({ seq, start, end, shadowedSeqs: shadowed })\r\n }\r\n\r\n for (const event of events) {\r\n if (event.type === 'checkpoint') {\r\n const range = checkpointShadowRange(event)\r\n if (!range) {\r\n // A range-less checkpoint is a prefix seed: it contributes its own\r\n // node at its surface position (used when compaction runs before any\r\n // durable history exists to shadow).\r\n nodes.push(event.seq)\r\n continue\r\n }\r\n applyReplace(event.seq, range.start, range.end)\r\n continue\r\n }\r\n if (!isSurfaceEventType(event.type)) continue\r\n const op = event.surfaceOp ?? 'append'\r\n if (op === 'append') {\r\n nodes.push(event.seq)\r\n continue\r\n }\r\n applyReplace(event.seq, op.start, op.end)\r\n }\r\n return { nodes, replacements }\r\n}\r\n\r\n/**\r\n * Derive one surface node's model-visible message. A content-less assistant\r\n * turn (e.g. a max-token cutoff with no output and no tool calls) is skipped\r\n * so it never enters a provider transcript; `tool/result` yields the `tool`\r\n * role message that pairs with the assistant's `toolCalls`.\r\n */\r\nexport function deriveEventMessage(event: SessionEvent): ModelMessage | null {\r\n switch (event.type) {\r\n case 'user/message': {\r\n const message: ModelMessage = { role: 'user', content: event.payload.content }\r\n if (event.payload.name) message.name = event.payload.name\r\n return message\r\n }\r\n case 'system/message': {\r\n const message: ModelMessage = { role: 'system', content: event.payload.content }\r\n if (event.payload.name) message.name = event.payload.name\r\n return message\r\n }\r\n case 'assistant/message': {\r\n const toolCalls = event.payload.toolCalls\r\n if (!event.payload.content && !(toolCalls && toolCalls.length)) return null\r\n const message: ModelMessage = { role: 'assistant', content: event.payload.content }\r\n if (event.payload.name) message.name = event.payload.name\r\n if (toolCalls?.length) message.tool_calls = clone(toolCalls)\r\n return message\r\n }\r\n case 'tool/result': {\r\n const failed = !event.payload.ok\r\n const message: ModelMessage = {\r\n role: 'tool',\r\n content: failed\r\n ? `error: ${event.payload.error?.message ?? 'unknown'}`\r\n : stringify(event.payload.output),\r\n tool_call_id: event.payload.toolCallId,\r\n }\r\n message.name = event.payload.name\r\n if (failed) {\r\n message.toolOk = false\r\n if (event.payload.error) message.toolError = event.payload.error\r\n }\r\n return message\r\n }\r\n default:\r\n return null\r\n }\r\n}\r\n\r\n/**\r\n * Derive the model transcript strictly from the folded surface: walk the\r\n * surface nodes in surface position order (so a checkpoint's prefix is placed\r\n * where it replaced history, whatever its raw seq), mapping each node through\r\n * {@link deriveEventMessage}. This is the single source of the model's view;\r\n * raw log order never influences it.\r\n */\r\nexport function deriveSurfaceMessages(events: readonly SessionEvent[]): ModelMessage[] {\r\n const { nodes } = foldSurface(events)\r\n const bySeq = new Map(events.map(event => [event.seq, event] as const))\r\n const messages: ModelMessage[] = []\r\n for (const seq of nodes) {\r\n const event = bySeq.get(seq)\r\n if (!event) continue\r\n if (event.type === 'checkpoint') {\r\n messages.splice(0, messages.length, ...clone(event.payload.messages))\r\n continue\r\n }\r\n const message = deriveEventMessage(event)\r\n if (message) messages.push(message)\r\n }\r\n return messages\r\n}\r\n\r\n/**\r\n * Project the log into a human-facing transcript (the web view). Unlike the\r\n * model surface, a compaction does **not** hide the history it summarized:\r\n * shadowed messages are kept in place, and each live checkpoint is retained\r\n * as a marker exactly where it replaced them (with nested checkpoints\r\n * expanded recursively). Readers see the full conversation; the model keeps\r\n * deriving from the folded surface via {@link deriveSurfaceMessages}.\r\n */\r\nexport function transcriptEvents(events: readonly SessionEvent[]): SessionEvent[] {\r\n const bySeq = new Map(events.map(event => [event.seq, event] as const))\r\n const { nodes, replacements } = foldSurface(events)\r\n\r\n const shadowedOf = new Map<number, SessionEvent[]>()\r\n for (const replacement of replacements) {\r\n shadowedOf.set(replacement.seq, replacement.shadowedSeqs\r\n .map(seq => bySeq.get(seq))\r\n .filter((event): event is SessionEvent => event !== undefined))\r\n }\r\n\r\n const isVisible = (event: SessionEvent): boolean => (\r\n event.type !== 'system/message' && isSurfaceEventType(event.type)\r\n )\r\n\r\n const skeleton: SessionEvent[] = []\r\n const appendHistory = (checkpointSeq: number): void => {\r\n for (const shadowed of shadowedOf.get(checkpointSeq) ?? []) {\r\n if (shadowed.type === 'checkpoint') appendHistory(shadowed.seq)\r\n else if (isVisible(shadowed)) skeleton.push(shadowed)\r\n }\r\n }\r\n for (const seq of nodes) {\r\n const event = bySeq.get(seq)\r\n if (!event) continue\r\n if (event.type === 'checkpoint') appendHistory(event.seq)\r\n skeleton.push(event)\r\n }\r\n\r\n // Declared tool calls travel on their assistant message, so the matching\r\n // log-only `tool/call` records would double-render: drop those, keep the\r\n // legacy ones that have no assistant declaration.\r\n const declaredCalls = new Set<string>()\r\n for (const event of events) {\r\n if (event.type === 'assistant/message') {\r\n for (const call of event.payload.toolCalls ?? []) declaredCalls.add(call.id)\r\n }\r\n }\r\n const inSkeleton = new Set(skeleton.map(event => event.id))\r\n const structure = events\r\n .filter(event => !inSkeleton.has(event.id))\r\n .filter(event => event.type !== 'compaction/start' && event.type !== 'compaction/end')\r\n .filter(event => event.type !== 'checkpoint') // superseded markers: history shown via the live chain\r\n .filter(event => !(event.type === 'tool/call' && declaredCalls.has(event.payload.id)))\r\n\r\n const ordered = [...skeleton]\r\n for (const event of structure) {\r\n let index = ordered.length\r\n for (let cursor = ordered.length - 1; cursor >= 0; cursor -= 1) {\r\n if (ordered[cursor]!.seq <= event.seq) {\r\n index = cursor + 1\r\n break\r\n }\r\n }\r\n ordered.splice(index, 0, event)\r\n }\r\n return ordered\r\n}\r\n\r\nexport function foldRequestHeader(events: readonly SessionEvent[]): RequestHeaderPayload | undefined {\r\n let header: RequestHeaderPayload | undefined\r\n for (const event of events) {\r\n if (event.type === 'request/header') header = clone(event.payload)\r\n }\r\n return header\r\n}\r\n\r\nexport function foldRequestContext(events: readonly SessionEvent[]): RequestContextPayload | undefined {\r\n let context: RequestContextPayload | undefined\r\n for (const event of events) {\r\n if (event.type === 'request/context') context = clone(event.payload)\r\n }\r\n return context\r\n}\r\n\r\n/**\r\n * Session display metadata, rebuilt from the immutable events: the head\r\n * `meta` base followed by every `meta/patch` in seq order. No mutable\r\n * side file or in-place rewrite is involved, so title/mode/agentType stay\r\n * replayable and fork-clean like every other durable fact.\r\n */\r\nexport function foldSessionMeta(events: readonly SessionEvent[]): {\r\n title?: string\r\n agentType?: AgentType\r\n mode?: SessionMode\r\n} {\r\n const meta: { title?: string; agentType?: AgentType; mode?: SessionMode } = {}\r\n for (const event of events) {\r\n if (event.type === 'meta') {\r\n const payload = event.payload as Record<string, unknown>\r\n if (typeof payload.title === 'string') meta.title = payload.title\r\n if (payload.agentType === 'general' || payload.agentType === 'coding') {\r\n meta.agentType = payload.agentType\r\n }\r\n if (payload.mode === 'auto' || payload.mode === 'plan' || payload.mode === 'execute') {\r\n meta.mode = payload.mode\r\n }\r\n continue\r\n }\r\n if (event.type === 'meta/patch') {\r\n const patch = event.payload\r\n if (patch.fields.includes('title') && typeof patch.title === 'string') {\r\n meta.title = patch.title\r\n }\r\n if (patch.fields.includes('agentType') && patch.agentType !== undefined) {\r\n meta.agentType = patch.agentType\r\n }\r\n if (patch.fields.includes('mode') && patch.mode !== undefined) {\r\n meta.mode = patch.mode\r\n }\r\n }\r\n }\r\n return meta\r\n}\r\n\r\n/** Convenience wrapper: fold session metadata from a `SessionLog`'s events. */\r\nexport function foldMetaFromLog(log: { read(): Promise<SessionEvent[]> }): Promise<{\r\n title?: string\r\n agentType?: AgentType\r\n mode?: SessionMode\r\n}> {\r\n return log.read().then(foldSessionMeta)\r\n}\r\n\r\nfunction stringify(value: unknown): string {\r\n if (typeof value === 'string') return value\r\n try {\r\n return JSON.stringify(value) ?? String(value)\r\n } catch {\r\n return String(value)\r\n }\r\n}\r\n\r\nexport function estimateMessageTokens(messages: readonly ModelMessage[]): number {\r\n let tokens = 0\r\n for (const message of messages) {\r\n tokens += Math.ceil(message.content.length / 4)\r\n for (const call of message.tool_calls ?? []) {\r\n const raw = JSON.stringify(call.arguments ?? {}) ?? ''\r\n tokens += Math.ceil(raw.length / 4)\r\n }\r\n }\r\n return tokens\r\n}\r\n\r\nexport function estimateEventTokens(event: SessionEvent): number {\r\n switch (event.type) {\r\n case 'user/message':\r\n case 'system/message':\r\n return Math.ceil(event.payload.content.length / 4)\r\n case 'assistant/message': {\r\n let tokens = Math.ceil(event.payload.content.length / 4)\r\n for (const call of event.payload.toolCalls ?? []) {\r\n const raw = JSON.stringify(call.arguments ?? {}) ?? ''\r\n tokens += Math.ceil(raw.length / 4)\r\n }\r\n return tokens\r\n }\r\n case 'assistant/chunk':\r\n return Math.ceil(event.payload.content.length / 4)\r\n case 'tool/call': {\r\n const raw = JSON.stringify(event.payload.arguments ?? {}) ?? ''\r\n return Math.ceil(raw.length / 4)\r\n }\r\n case 'tool/result': {\r\n const raw = event.payload.ok\r\n ? stringify(event.payload.output)\r\n : event.payload.error?.message ?? 'error'\r\n return Math.ceil(raw.length / 4)\r\n }\r\n case 'plan':\r\n return 0\r\n case 'checkpoint':\r\n return estimateMessageTokens(event.payload.messages)\r\n case 'compaction/start':\r\n case 'compaction/end':\r\n case 'meta':\r\n case 'meta/patch':\r\n return 0\r\n case 'llm/retry':\r\n case 'llm/retry-started':\r\n return 0\r\n case 'request/header':\r\n case 'request/context':\r\n case 'agent/inbox/spliced':\r\n return 0\r\n case 'turn/start':\r\n case 'turn/end':\r\n case 'step/start':\r\n case 'step/end':\r\n return 0\r\n }\r\n}\r\n\r\nexport function suffixStartIndexForTokens(\r\n events: readonly SessionEvent[],\r\n targetTokens: number,\r\n): number {\r\n if (!events.length || targetTokens <= 0) return 0\r\n let tokens = 0\r\n let candidate = events.length\r\n for (let index = events.length - 1; index >= 0; index -= 1) {\r\n tokens += estimateEventTokens(events[index]!)\r\n if (tokens >= targetTokens) {\r\n candidate = index\r\n break\r\n }\r\n }\r\n if (candidate === events.length) return 0\r\n let cut = candidate\r\n while (cut < events.length) {\r\n const event = events[cut]\r\n if (event?.type === 'user/message') return cut\r\n cut += 1\r\n }\r\n return candidate\r\n}\r\n\r\nexport function safeCompactSplit(\r\n events: readonly SessionEvent[],\r\n splitIndex: number,\r\n): number {\r\n const index = Math.max(0, Math.min(splitIndex, events.length))\r\n const first = events[index]\r\n if (first?.type === 'tool/result') {\r\n const callId = first.payload.toolCallId\r\n for (let cursor = index - 1; cursor >= 0; cursor -= 1) {\r\n const candidate = events[cursor]\r\n if (candidate?.type === 'tool/call' && candidate.payload.id === callId) {\r\n return cursor\r\n }\r\n }\r\n }\r\n\r\n let openCalls = 0\r\n for (let cursor = 0; cursor <= events.length; cursor += 1) {\r\n if (cursor >= index && openCalls === 0) return cursor\r\n const event = events[cursor]\r\n if (!event) continue\r\n if (event.type === 'tool/call') openCalls += 1\r\n if (event.type === 'tool/result') openCalls = Math.max(0, openCalls - 1)\r\n }\r\n return index\r\n}\r\n\r\nexport function repairUnclosed(\r\n events: readonly SessionEvent[],\r\n): SessionEvent[] {\r\n const openCalls: Extract<SessionEvent, { type: 'tool/call' }>[] = []\r\n const openSteps: Extract<SessionEvent, { type: 'step/start' }>[] = []\r\n const openTurns: Extract<SessionEvent, { type: 'turn/start' }>[] = []\r\n for (const event of events) {\r\n switch (event.type) {\r\n case 'tool/call':\r\n openCalls.push(event)\r\n break\r\n case 'tool/result': {\r\n const callIndex = openCalls.findIndex(\r\n call => call.payload.id === event.payload.toolCallId,\r\n )\r\n if (callIndex >= 0) openCalls.splice(callIndex, 1)\r\n else openCalls.pop()\r\n break\r\n }\r\n case 'step/start':\r\n openSteps.push(event)\r\n break\r\n case 'step/end':\r\n openSteps.pop()\r\n break\r\n case 'turn/start':\r\n openTurns.push(event)\r\n break\r\n case 'turn/end':\r\n openTurns.pop()\r\n break\r\n }\r\n }\r\n\r\n if (!openCalls.length && !openSteps.length && !openTurns.length) return []\r\n\r\n const synthetic: SessionEvent[] = []\r\n let nextSeq = (events.at(-1)?.seq ?? 0) + 1\r\n let nextTs = (events.at(-1)?.ts ?? Date.now()) + 1\r\n const push = (type: SessionEventType, payload: SessionEvent['payload']): void => {\r\n synthetic.push({\r\n id: randomUUID(),\r\n seq: nextSeq,\r\n ts: nextTs,\r\n type: type as SessionEvent['type'],\r\n payload: clone(payload),\r\n } as SessionEvent)\r\n nextSeq += 1\r\n nextTs += 1\r\n }\r\n\r\n for (const call of openCalls) {\r\n push('tool/result', {\r\n id: call.payload.id,\r\n toolCallId: call.payload.id,\r\n name: call.payload.name,\r\n ok: false,\r\n error: {\r\n name: 'SessionInterruptedError',\r\n message: 'session interrupted before tool result was recorded',\r\n },\r\n })\r\n }\r\n for (const step of openSteps) {\r\n push('step/end', {\r\n turn: step.payload.turn,\r\n step: step.payload.step,\r\n finishReason: 'interrupted',\r\n interrupted: true,\r\n })\r\n }\r\n for (let i = 0; i < openTurns.length; i++) {\r\n const turn = openTurns[i]!.payload.turn\r\n push('turn/end', {\r\n turn,\r\n finishReason: 'interrupted',\r\n interrupted: true,\r\n })\r\n }\r\n return synthetic\r\n}\r\n\r\nexport function resolveCompactKeep(\r\n events: readonly SessionEvent[],\r\n options: CompactOptions,\r\n): number {\r\n if (\r\n typeof options.keepTokens === 'number'\r\n && Number.isFinite(options.keepTokens)\r\n && options.keepTokens > 0\r\n ) {\r\n return events.length - suffixStartIndexForTokens(events, options.keepTokens)\r\n }\r\n const keep = typeof options.keep === 'number' && Number.isFinite(options.keep) && options.keep > 0\r\n ? Math.floor(options.keep)\r\n : 0\r\n return Math.min(keep, events.length)\r\n}\r\n\r\nexport function estimateContextUsage(\r\n messages: readonly ModelMessage[],\r\n limit = DEFAULT_CONTEXT_LIMIT,\r\n): ContextUsage {\r\n const tokens = estimateMessageTokens(messages)\r\n return {\r\n tokens,\r\n limit,\r\n ratio: limit > 0 ? tokens / limit : 0,\r\n }\r\n}\r\n\r\nexport class SessionLog {\r\n private _events: SessionEvent[] = []\r\n private _surface: ModelMessage[] = []\r\n private _surfaceNodes: number[] = []\r\n private _requestHeader: RequestHeaderPayload | undefined\r\n private _requestContext: RequestContextPayload | undefined\r\n private _loaded = false\r\n private _nextSeq = 1\r\n private _queue: Promise<unknown> = Promise.resolve()\r\n private _writeTail: Promise<void> = Promise.resolve()\r\n private _pending: SessionEvent[] = []\r\n private _drainScheduled = false\r\n private _writeError: unknown\r\n\r\n constructor(\r\n readonly file: string,\r\n private _broadcast?: SessionBroadcast,\r\n ) {}\r\n\r\n init(): Promise<void> {\r\n return this._run(async () => {\r\n const key = sessionFileKey(this.file)\r\n if (!liveSessions.has(key)) liveSessions.set(key, this)\r\n try {\r\n await this._ensureLoaded()\r\n await this._drainWrite()\r\n if (this._writeError) {\r\n const error = this._writeError\r\n this._writeError = undefined\r\n throw error\r\n }\r\n } catch (error) {\r\n if (liveSessions.get(key) === this) liveSessions.delete(key)\r\n throw error\r\n }\r\n })\r\n }\r\n\r\n append(type: 'user/message', payload: UserMessagePayload): Promise<SessionEvent>\r\n append(type: 'assistant/message', payload: AssistantMessagePayload): Promise<SessionEvent>\r\n append(type: 'assistant/chunk', payload: AssistantChunkPayload): Promise<SessionEvent>\r\n append(type: 'system/message', payload: SystemMessagePayload): Promise<SessionEvent>\r\n append(type: 'tool/call', payload: ToolCallPayload): Promise<SessionEvent>\r\n append(type: 'tool/result', payload: ToolResultPayload): Promise<SessionEvent>\r\n append(type: 'request/header', payload: RequestHeaderPayload): Promise<SessionEvent>\r\n append(type: 'request/context', payload: RequestContextPayload): Promise<SessionEvent>\r\n append(type: 'agent/inbox/spliced', payload: InboxSplicePayload): Promise<SessionEvent>\r\n append(type: 'plan', payload: PlanPayload): Promise<SessionEvent>\r\n append(type: 'checkpoint', payload: CheckpointPayload): Promise<SessionEvent>\r\n append(type: 'compaction/start', payload: CompactionStartPayload): Promise<SessionEvent>\r\n append(type: 'compaction/end', payload: CompactionEndPayload): Promise<SessionEvent>\r\n append(type: 'meta', payload: Record<string, unknown>): Promise<SessionEvent>\r\n append(type: 'meta/patch', payload: MetaPatchPayload): Promise<SessionEvent>\r\n append(type: 'llm/retry', payload: LLMRetryPayload): Promise<SessionEvent>\r\n append(type: 'llm/retry-started', payload: LLMRetryStartedPayload): Promise<SessionEvent>\r\n append(type: 'turn/start', payload: TurnStartPayload): Promise<SessionEvent>\r\n append(type: 'turn/end', payload: TurnEndPayload): Promise<SessionEvent>\r\n append(type: 'step/start', payload: StepStartPayload): Promise<SessionEvent>\r\n append(type: 'step/end', payload: StepEndPayload): Promise<SessionEvent>\r\n append(type: SessionEventType, payload: SessionEvent['payload']): Promise<SessionEvent> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n const event = this._buildEvent(type, payload)\r\n this._commitEvent(event)\r\n return event\r\n })\r\n }\r\n\r\n private _buildEvent(\r\n type: SessionEventType,\r\n payload: SessionEvent['payload'],\r\n ): SessionEvent {\r\n const eventPayload = clone(payload)\r\n const event = {\r\n id: randomUUID(),\r\n seq: this._nextSeq,\r\n ts: Date.now(),\r\n type: type as SessionEvent['type'],\r\n payload: eventPayload,\r\n } as SessionEvent\r\n if (isMessageEventType(type)) {\r\n for (let index = this._events.length - 1; index >= 0; index -= 1) {\r\n const previous = this._events[index]\r\n if (previous && isMessageEvent(previous)) {\r\n const messagePayload = eventPayload as MessageEventPayload\r\n messagePayload.parentId ??= previous.id\r\n break\r\n }\r\n }\r\n event.surfaceOp ??= 'append'\r\n const previous = previousSurfaceSeq(this._surfaceNodes)\r\n event.sourceEventSeqs ??= previous === undefined ? [] : [previous]\r\n } else if (type === 'request/header') {\r\n event.sourceEventSeqs ??= []\r\n } else if (type === 'request/context') {\r\n event.sourceEventSeqs ??= []\r\n } else if (type === 'agent/inbox/spliced') {\r\n event.sourceEventSeqs ??= []\r\n }\r\n this._nextSeq += 1\r\n return event\r\n }\r\n\r\n private _commitEvent(event: SessionEvent): void {\r\n this._events.push(event)\r\n this._refreshSurface()\r\n if (event.type === 'request/header') this._requestHeader = clone(event.payload)\r\n if (event.type === 'request/context') this._requestContext = clone(event.payload)\r\n this._broadcast?.('event', event)\r\n this._enqueue(event)\r\n }\r\n\r\n /**\r\n * Rebuild both surface views from the committed log. The nodes come from the\r\n * positional {@link foldSurface} fold; the messages come from\r\n * {@link deriveSurfaceMessages}, which walks those nodes in surface order \u2014\r\n * the model view is a pure function of the surface, never of raw file order.\r\n */\r\n private _refreshSurface(): void {\r\n this._surfaceNodes = foldSurface(this._events).nodes\r\n this._surface = deriveSurfaceMessages(this._events)\r\n }\r\n\r\n private _enqueue(event: SessionEvent): void {\r\n this._pending.push(event)\r\n if (this._drainScheduled) return\r\n this._drainScheduled = true\r\n setImmediate(() => {\r\n this._drainScheduled = false\r\n void this._drainWrite()\r\n })\r\n }\r\n\r\n private _drainWrite(): Promise<void> {\r\n const events = this._pending.splice(0)\r\n if (!events.length) return this._writeTail\r\n const write = this._writeTail.then(() => appendFile(\r\n this.file,\r\n `${events.map(event => JSON.stringify(event)).join('\\n')}\\n`,\r\n 'utf8',\r\n ))\r\n this._writeTail = write.catch((error) => {\r\n this._writeError ??= error\r\n })\r\n return write.then(() => undefined, () => undefined)\r\n }\r\n\r\n flush(): Promise<number> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n await this._drainWrite()\r\n if (this._writeError) {\r\n const error = this._writeError\r\n this._writeError = undefined\r\n throw error\r\n }\r\n const seq = this._nextSeq - 1\r\n this._broadcast?.('flush', { file: this.file, seq })\r\n return seq\r\n })\r\n }\r\n\r\n async lineage(messageId: string): Promise<SessionEvent[]> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n return this._resolveLineage(messageId)\r\n })\r\n }\r\n\r\n /** The next turn number: one more than the highest recorded `turn/start`. */\r\n async nextTurn(): Promise<number> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n let max = 0\r\n for (const event of this._events) {\r\n if (event.type === 'turn/start') max = Math.max(max, event.payload.turn)\r\n }\r\n return max + 1\r\n })\r\n }\r\n\r\n async forkAt(messageId: string): Promise<SessionEvent[]> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n const lineage = this._resolveLineage(messageId)\r\n const lineageIds = new Set(lineage.map(event => event.id))\r\n const targetIndex = this._events.findIndex(\r\n event => event.id === messageId && isMessageEvent(event),\r\n )\r\n if (targetIndex < 0) {\r\n throw new Error(`message not found: ${messageId}`)\r\n }\r\n const selected: SessionEvent[] = []\r\n let skippedMessage = false\r\n for (let index = 0; index <= targetIndex; index += 1) {\r\n const event = this._events[index]!\r\n if (isMessageEvent(event)) {\r\n if (!lineageIds.has(event.id)) {\r\n skippedMessage = true\r\n continue\r\n }\r\n skippedMessage = false\r\n selected.push(clone(event))\r\n continue\r\n }\r\n if (\r\n event.type === 'meta'\r\n || event.type === 'llm/retry'\r\n || event.type === 'llm/retry-started'\r\n || event.type.startsWith('turn/')\r\n || event.type.startsWith('step/')\r\n ) {\r\n continue\r\n }\r\n if (event.type === 'checkpoint') {\r\n selected.push(clone(event))\r\n continue\r\n }\r\n if (!skippedMessage) {\r\n selected.push(clone(event))\r\n }\r\n }\r\n return selected\r\n })\r\n }\r\n\r\n read(): Promise<SessionEvent[]> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n return this._events.map(event => clone(event))\r\n })\r\n }\r\n\r\n deriveMessages(): Promise<ModelMessage[]> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n return clone(this._surface)\r\n })\r\n }\r\n\r\n /** The ordered surface events, after compaction replacements are applied. */\r\n surfaceEvents(): Promise<SessionEvent[]> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n const bySeq = new Map(this._events.map(event => [event.seq, event] as const))\r\n return this._surfaceNodes\r\n .map(seq => bySeq.get(seq))\r\n .filter((event): event is SessionEvent => event !== undefined)\r\n .map(event => clone(event))\r\n })\r\n }\r\n\r\n /** The latest `request/header` snapshot, or undefined before the first one. */\r\n requestHeader(): RequestHeaderPayload | undefined {\r\n return this._requestHeader ? clone(this._requestHeader) : undefined\r\n }\r\n\r\n /** The latest resolved route metadata, or undefined before the first one. */\r\n requestContext(): RequestContextPayload | undefined {\r\n return this._requestContext ? clone(this._requestContext) : undefined\r\n }\r\n\r\n /** Display metadata folded from the durable `meta` + `meta/patch` events. */\r\n meta(): Promise<{ title?: string; agentType?: AgentType; mode?: SessionMode }> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n return foldSessionMeta(this._events)\r\n })\r\n }\r\n\r\n estimateContext(limit = DEFAULT_CONTEXT_LIMIT): Promise<ContextUsage> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n return estimateContextUsage(this._surface, limit)\r\n })\r\n }\r\n\r\n replay(): Promise<SessionEvent[]>\r\n replay<T>(reduce: ReplayReducer<T>, initial: T): Promise<T>\r\n replay<T>(reduce?: ReplayReducer<T>, initial?: T): Promise<SessionEvent[] | T> {\r\n return this.read().then((events) => {\r\n if (!reduce) return events\r\n let state = initial as T\r\n let pending: Promise<void> = Promise.resolve()\r\n for (const event of events) {\r\n pending = pending.then(async () => {\r\n state = await reduce(state, event)\r\n })\r\n }\r\n return pending.then(() => state)\r\n })\r\n }\r\n\r\n /** Structural violations in the loaded event stream (empty = balanced). */\r\n runInvariants(): Promise<SessionInvariantFailure[]> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n return checkSessionInvariants(this._events)\r\n })\r\n }\r\n\r\n /**\r\n * Compact the session without ever rewriting history.\r\n *\r\n * The surface (not the raw log) is the unit of compaction. A kept suffix \u2014\r\n * measured in tokens via `keepTokens`, or in nodes via `keep`, and always\r\n * snapped to start on a fresh `user/message` turn so a tool result never\r\n * outlives the assistant call it answers \u2014 stays visible; every earlier\r\n * surface node is shadowed by the checkpoint's `surfaceOp.replace` range.\r\n * The three compaction events are appended like any other event, so seqs\r\n * stay immutable, live observers see the transition, and a crash can only\r\n * leave an orphaned `compaction/start` rather than a torn rewrite.\r\n *\r\n * Returns the new event count, or the unchanged count when there is no\r\n * useful surface span to shadow.\r\n */\r\n compact(options: CompactOptions = {}): Promise<number> {\r\n return this._run(async () => {\r\n await this._ensureLoaded()\r\n const events = this._events\r\n const bySeq = new Map(events.map(event => [event.seq, event] as const))\r\n const surfaceEvents = foldSurface(events).nodes\r\n .map(seq => bySeq.get(seq))\r\n .filter((event): event is SessionEvent => event !== undefined)\r\n\r\n const keep = resolveCompactKeep(surfaceEvents, options)\r\n let split = Math.max(0, surfaceEvents.length - keep)\r\n // The retained tail must open on a fresh user turn: shadowing an\r\n // assistant step while keeping its tool results would leave an orphan\r\n // tool message at the head of the transcript. Prefer the next user\r\n // boundary; when the candidate sits inside the final turn, keep that\r\n // whole turn instead of cutting it.\r\n if (split < surfaceEvents.length && surfaceEvents[split]!.type !== 'user/message') {\r\n let next = split\r\n while (next < surfaceEvents.length && surfaceEvents[next]!.type !== 'user/message') next += 1\r\n if (next < surfaceEvents.length) {\r\n split = next\r\n } else {\r\n let lastUser = surfaceEvents.length - 1\r\n while (lastUser >= 0 && surfaceEvents[lastUser]!.type !== 'user/message') lastUser -= 1\r\n split = lastUser >= 0 ? lastUser : surfaceEvents.length\r\n }\r\n }\r\n const shadowed = surfaceEvents.slice(0, split)\r\n if (!options.messages?.length) return this._events.length\r\n\r\n // A compaction needs a summary to write. When there is history to\r\n // shadow the checkpoint replaces that head span; when there is none (a\r\n // budget trip before anything is durable) the checkpoint seeds the\r\n // surface with the compacted prefix instead.\r\n const range = shadowed.length\r\n ? { start: shadowed[0]!.seq, end: shadowed[shadowed.length - 1]!.seq }\r\n : undefined\r\n const boundary = split\r\n this._commitEvent(this._buildEvent('compaction/start', {\r\n ...(boundary > 0 ? { boundary } : {}),\r\n ...(options.keep !== undefined ? { keep: options.keep } : {}),\r\n ...(options.tokensBefore !== undefined ? { tokensBefore: options.tokensBefore } : {}),\r\n }))\r\n const checkpoint = this._buildEvent('checkpoint', {\r\n messages: clone(options.messages),\r\n ...(range ? { surfaceOp: { op: 'replace', start: range.start, end: range.end } } : {}),\r\n ...(options.summary ? { summary: options.summary } : {}),\r\n ...(options.tokensBefore !== undefined ? { tokensBefore: options.tokensBefore } : {}),\r\n })\r\n this._commitEvent(checkpoint)\r\n this._commitEvent(this._buildEvent('compaction/end', {\r\n checkpointId: checkpoint.id,\r\n ...(options.keep !== undefined ? { keep: options.keep } : {}),\r\n }))\r\n return this._events.length\r\n })\r\n }\r\n\r\n close(): Promise<void> {\r\n return this._queue.then(async () => {\r\n await this._drainWrite()\r\n if (this._writeError) {\r\n const error = this._writeError\r\n this._writeError = undefined\r\n throw error\r\n }\r\n const key = sessionFileKey(this.file)\r\n if (liveSessions.get(key) === this) liveSessions.delete(key)\r\n })\r\n }\r\n\r\n private _run<T>(task: () => Promise<T>): Promise<T> {\r\n const next = this._queue.then(task, task)\r\n this._queue = next.then(() => undefined, () => undefined)\r\n return next\r\n }\r\n\r\n private async _ensureLoaded(): Promise<void> {\r\n if (this._loaded) return\r\n const key = sessionFileKey(this.file)\r\n const owner = liveSessions.get(key)\r\n if (owner && owner !== this && owner._loaded) {\r\n this._events = owner._events.map(event => clone(event))\r\n this._surface = clone(owner._surface)\r\n this._surfaceNodes = [...owner._surfaceNodes]\r\n this._requestHeader = owner._requestHeader ? clone(owner._requestHeader) : undefined\r\n this._requestContext = owner._requestContext ? clone(owner._requestContext) : undefined\r\n this._nextSeq = owner._nextSeq\r\n this._loaded = true\r\n return\r\n }\r\n await mkdir(dirname(resolve(this.file)), { recursive: true })\r\n const read = await this._read()\r\n if (!read.existing) {\r\n const meta: SessionEvent = {\r\n id: randomUUID(),\r\n seq: 1,\r\n ts: Date.now(),\r\n type: 'meta',\r\n payload: { formatVersion: SESSION_FORMAT_VERSION },\r\n }\r\n await writeFile(this.file, `${JSON.stringify(meta)}\\n`, 'utf8')\r\n this._events = [meta]\r\n this._refreshSurface()\r\n this._nextSeq = 2\r\n this._loaded = true\r\n return\r\n }\r\n this._events = read.events\r\n this._refreshSurface()\r\n this._requestHeader = foldRequestHeader(this._events)\r\n this._requestContext = foldRequestContext(this._events)\r\n this._nextSeq = (this._events.at(-1)?.seq ?? 0) + 1\r\n this._loaded = true\r\n }\r\n\r\n private async _read(): Promise<{ existing: boolean; events: SessionEvent[] }> {\r\n let text: string\r\n try {\r\n text = await readFile(this.file, 'utf8')\r\n } catch (error) {\r\n if ((error as NodeJS.ErrnoException).code === 'ENOENT') {\r\n return { existing: false, events: [] }\r\n }\r\n throw error\r\n }\r\n if (!text.trim()) return { existing: false, events: [] }\r\n\r\n const lines = text.split('\\n')\r\n const events: SessionEvent[] = []\r\n let torn = false\r\n for (const line of lines) {\r\n if (!line.trim()) continue\r\n if (torn) continue\r\n let parsed: unknown\r\n try {\r\n parsed = JSON.parse(line)\r\n } catch {\r\n torn = true\r\n continue\r\n }\r\n if (!isSessionEvent(parsed)) {\r\n torn = true\r\n continue\r\n }\r\n events.push(parsed)\r\n }\r\n\r\n this._assertFormat(events)\r\n\r\n const key = sessionFileKey(this.file)\r\n const owner = liveSessions.get(key)\r\n if (owner && owner !== this) {\r\n // A live writer owns this log; never synthesize closures over its active turn.\r\n return { existing: true, events }\r\n }\r\n\r\n const synthetic = repairUnclosed(events)\r\n if (!torn && !synthetic.length) return { existing: true, events }\r\n\r\n const repaired = [...events, ...synthetic]\r\n await writeFile(\r\n this.file,\r\n `${repaired.map(event => JSON.stringify(event)).join('\\n')}\\n`,\r\n 'utf8',\r\n )\r\n return { existing: true, events: repaired }\r\n }\r\n\r\n private _assertFormat(events: readonly SessionEvent[]): void {\r\n let version: number | undefined\r\n for (const event of events) {\r\n if (event.type !== 'meta') continue\r\n const value = (event.payload as Record<string, unknown>).formatVersion\r\n if (typeof value === 'number') version = value\r\n }\r\n if (version === undefined) {\r\n throw new SessionFormatError(\r\n `session log is missing formatVersion; expected ${SESSION_FORMAT_VERSION}`,\r\n )\r\n }\r\n if (version !== SESSION_FORMAT_VERSION) {\r\n throw new SessionFormatError(\r\n `unsupported session format version ${version}; expected ${SESSION_FORMAT_VERSION}`,\r\n )\r\n }\r\n }\r\n\r\n private _resolveLineage(messageId: string): SessionEvent[] {\r\n const messages = this._events.filter(\r\n (event): event is Extract<SessionEvent, { type: MessageEventType }> => isMessageEvent(event),\r\n )\r\n const byId = new Map<string, Extract<SessionEvent, { type: MessageEventType }>>(\r\n messages.map(event => [event.id, event] as const),\r\n )\r\n if (!byId.has(messageId)) {\r\n throw new Error(`message not found: ${messageId}`)\r\n }\r\n const chain: SessionEvent[] = []\r\n const seen = new Set<string>()\r\n let cursorId: string | undefined = messageId\r\n while (cursorId && byId.has(cursorId) && !seen.has(cursorId)) {\r\n seen.add(cursorId)\r\n const event: Extract<SessionEvent, { type: MessageEventType }> = byId.get(cursorId)!\r\n chain.unshift(clone(event))\r\n const parentId: string | undefined = event.payload.parentId\r\n if (parentId && byId.has(parentId)) {\r\n cursorId = parentId\r\n continue\r\n }\r\n const index = messages.findIndex(message => message.id === cursorId)\r\n cursorId = index > 0 ? messages[index - 1]!.id : undefined\r\n }\r\n return chain\r\n }\r\n}\r\n\r\nexport const session = {\r\n name: 'session',\r\n apply: async (ctx: Context, config: SessionConfig) => {\r\n const log = new SessionLog(config.file, config.broadcast ?? ((type, payload) => {\r\n if (type === 'event') ctx.emit('session/event', payload)\r\n else ctx.emit('session/flush', payload)\r\n }))\r\n await log.init()\r\n ctx.provide('session', log)\r\n return () => log.close()\r\n },\r\n}\r\n\r\nexport * from './invariant.js'\r\n\r\nexport const name = '@tnega/session'\r\n", "/**\r\n * Session invariant companion.\r\n *\r\n * Pure structural checks over a session event stream, mirroring the DSH\r\n * \"each package ships a ./invariant\" discipline. They assert the relationships\r\n * the event-sourcing layer promises:\r\n *\r\n * - durable lifecycle structures (turn / step / tool call) stay balanced \u2014\r\n * every `turn/start` has a `turn/end`, every `tool/call` a `tool/result`;\r\n * - seq stays strictly monotonic;\r\n * - message events that reach the model surface stay append-only unless they\r\n * belong to a compaction replacement.\r\n *\r\n * The checks are pure over `SessionEvent[]`, so they run equally on a full\r\n * log, on a single newly-committed event, or in tests. Recovery (repairing an\r\n * interrupted log into a closed one) is `repairUnclosed`; these checks assert\r\n * that the result is actually legal.\r\n */\r\n\r\nimport type { SessionEvent, ToolResultPayload } from './index.js'\r\n\r\nexport interface SessionInvariantFailure {\r\n name: string\r\n detail: string\r\n}\r\n\r\n/** Balanced `turn/start` \u2194 `turn/end` per turn number. */\r\nexport function checkBalancedTurns(events: readonly SessionEvent[]): SessionInvariantFailure[] {\r\n const opens = new Map<number, number>()\r\n const failures: SessionInvariantFailure[] = []\r\n for (const event of events) {\r\n if (event.type === 'turn/start') {\r\n opens.set(event.payload.turn, (opens.get(event.payload.turn) ?? 0) + 1)\r\n } else if (event.type === 'turn/end') {\r\n const remaining = opens.get(event.payload.turn) ?? 0\r\n if (remaining <= 0) {\r\n failures.push({\r\n name: 'turn/end-without-start',\r\n detail: `turn/end for turn ${event.payload.turn} has no matching turn/start`,\r\n })\r\n } else {\r\n opens.set(event.payload.turn, remaining - 1)\r\n }\r\n }\r\n }\r\n for (const [turn, count] of opens) {\r\n for (let index = 0; index < count; index += 1) {\r\n failures.push({\r\n name: 'turn/start-without-end',\r\n detail: `turn/start ${turn} has no matching turn/end`,\r\n })\r\n }\r\n }\r\n return failures\r\n}\r\n\r\n/** Balanced `step/start` \u2194 `step/end` per (turn, step). */\r\nexport function checkBalancedSteps(events: readonly SessionEvent[]): SessionInvariantFailure[] {\r\n const open = new Set<string>()\r\n const failures: SessionInvariantFailure[] = []\r\n for (const event of events) {\r\n if (event.type === 'step/start') {\r\n const key = `${event.payload.turn}:${event.payload.step}`\r\n if (open.has(key)) {\r\n failures.push({\r\n name: 'duplicate-step-start',\r\n detail: `step/start for ${key} appears twice without a matching step/end`,\r\n })\r\n }\r\n open.add(key)\r\n } else if (event.type === 'step/end') {\r\n const key = `${event.payload.turn}:${event.payload.step}`\r\n if (!open.delete(key)) {\r\n failures.push({\r\n name: 'step/end-without-start',\r\n detail: `step/end for ${key} has no matching step/start`,\r\n })\r\n }\r\n }\r\n }\r\n for (const key of open) {\r\n failures.push({\r\n name: 'step/start-without-end',\r\n detail: `step/start ${key} has no matching step/end`,\r\n })\r\n }\r\n return failures\r\n}\r\n\r\n/** Balanced `tool/call` \u2194 `tool/result` per call id. */\r\nexport function checkBalancedToolCalls(events: readonly SessionEvent[]): SessionInvariantFailure[] {\r\n const open = new Set<string>()\r\n const failures: SessionInvariantFailure[] = []\r\n for (const event of events) {\r\n if (event.type === 'tool/call') {\r\n open.add(event.payload.id)\r\n } else if (event.type === 'tool/result') {\r\n const payload = event.payload as ToolResultPayload\r\n const id = payload.toolCallId\r\n if (!open.delete(id)) {\r\n failures.push({\r\n name: 'tool/result-without-call',\r\n detail: `tool/result for call ${id} has no matching tool/call`,\r\n })\r\n }\r\n }\r\n }\r\n for (const id of open) {\r\n failures.push({\r\n name: 'tool/call-without-result',\r\n detail: `tool/call ${id} has no matching tool/result`,\r\n })\r\n }\r\n return failures\r\n}\r\n\r\n/** seq is strictly monotonic (an append-only log never rewinds). */\r\nexport function checkMonotonicSeq(events: readonly SessionEvent[]): SessionInvariantFailure[] {\r\n const failures: SessionInvariantFailure[] = []\r\n for (let index = 1; index < events.length; index += 1) {\r\n const previous = events[index - 1]\r\n const current = events[index]\r\n if (current && previous && current.seq <= previous.seq) {\r\n failures.push({\r\n name: 'non-monotonic-seq',\r\n detail: `seq ${current.seq} follows ${previous.seq} out of order at index ${index}`,\r\n })\r\n }\r\n }\r\n return failures\r\n}\r\n\r\n/** Aggregate all structural session checks over an event stream. */\r\nexport function checkSessionInvariants(\r\n events: readonly SessionEvent[],\r\n): SessionInvariantFailure[] {\r\n return [\r\n ...checkBalancedTurns(events),\r\n ...checkBalancedSteps(events),\r\n ...checkBalancedToolCalls(events),\r\n ...checkMonotonicSeq(events),\r\n ]\r\n}\r\n", "/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\nexport type Any = any\nexport type AnyFunction = (...args: Any[]) => Any\nexport type Dict<T = Any, K extends PropertyKey = string> = Record<K, T>\n\nexport class DisposableList<T extends WeakKey> {\n private sn = 0\n private map = new Map<number, T>()\n private weak = new WeakMap<T, number>()\n\n get length() {\n return this.map.size\n }\n\n push(value: T) {\n const sn = ++this.sn\n this.map.set(sn, value)\n this.weak.set(value, sn)\n return () => this.map.delete(sn)\n }\n\n unshift(value: T) {\n const sn = ++this.sn\n const entries = [...this.map.entries()]\n this.map.clear()\n this.map.set(sn, value)\n this.weak.set(value, sn)\n for (const [oldSn, oldValue] of entries) {\n this.map.set(oldSn, oldValue)\n }\n return () => this.map.delete(sn)\n }\n\n delete(value: T) {\n const sn = this.weak.get(value)\n if (!sn) return false\n return this.map.delete(sn)\n }\n\n clear() {\n const values = [...this.map.values()]\n this.map.clear()\n return values.reverse()\n }\n\n [Symbol.iterator]() {\n return this.map.values()\n }\n\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return [...this]\n }\n}\n\nexport interface Tracker {\n associate?: string\n property?: string\n noShadow?: boolean\n}\n\nexport const symbols = {\n shadow: Symbol.for('tnega.shadow'),\n caller: Symbol.for('tnega.caller'),\n receiver: Symbol.for('tnega.receiver'),\n original: Symbol.for('tnega.original'),\n metadata: Symbol.for('tnega.metadata'),\n initHooks: Symbol.for('tnega.initHooks'),\n checkProto: Symbol.for('tnega.checkProto'),\n effect: Symbol.for('tnega.effect'),\n filter: Symbol.for('tnega.filter'),\n isolate: Symbol.for('tnega.isolate'),\n intercept: Symbol.for('tnega.intercept'),\n init: Symbol.for('tnega.init'),\n check: Symbol.for('tnega.check'),\n config: Symbol.for('tnega.config'),\n invoke: Symbol.for('tnega.invoke'),\n extend: Symbol.for('tnega.extend'),\n tracker: Symbol.for('tnega.tracker'),\n resolveConfig: Symbol.for('tnega.resolveConfig'),\n} as const\n\nconst GeneratorFunction = function* () {}.constructor\nconst AsyncGeneratorFunction = async function* () {}.constructor\n\nexport function isConstructor(func: Any): func is new (...args: Any[]) => Any {\n if (typeof func !== 'function') return false\n if (func instanceof GeneratorFunction) return false\n if (AsyncGeneratorFunction !== Function && func instanceof AsyncGeneratorFunction) return false\n return /^class\\s/.test(Function.prototype.toString.call(func))\n}\n\nexport function isObject(value: Any): value is object {\n return !!value && (typeof value === 'object' || typeof value === 'function')\n}\n\nexport function isNullable(value: Any) {\n return value == null\n}\n\nexport function joinPrototype(proto1: object, proto2: object): object {\n if (proto1 === Object.prototype) return proto2\n const result: object = Object.create(joinPrototype(Object.getPrototypeOf(proto1), proto2))\n for (const key of Reflect.ownKeys(proto1)) {\n Object.defineProperty(result, key, Reflect.getOwnPropertyDescriptor(proto1, key)!)\n }\n return result\n}\n\nexport function getPropertyDescriptor(target: Any, prop: string | symbol) {\n let proto = target\n while (proto) {\n const desc = Reflect.getOwnPropertyDescriptor(proto, prop)\n if (desc) return desc\n proto = Object.getPrototypeOf(proto)\n }\n}\n\nexport function getTraceable<T>(ctx: Any, value: T): T {\n if (!isObject(value)) return value\n if (Object.hasOwn(value, symbols.shadow)) {\n return Object.getPrototypeOf(value)\n }\n const tracker = (value as Any)[symbols.tracker]\n if (!tracker) return value\n return createTraceable(ctx, value, tracker)\n}\n\nexport function withProps(target: Any, props?: Any) {\n if (!props) return target\n return new Proxy(target, {\n get: (target, prop, receiver) => {\n if (prop in props && prop !== 'constructor') return Reflect.get(props, prop, receiver)\n return Reflect.get(target, prop, receiver)\n },\n set: (target, prop, value, receiver) => {\n if (prop in props && prop !== 'constructor') return Reflect.set(props, prop, value, receiver)\n return Reflect.set(target, prop, value, receiver)\n },\n })\n}\n\nfunction withProp(target: Any, prop: string | symbol, value: Any) {\n return withProps(target, Object.defineProperty(Object.create(null), prop, {\n value,\n writable: false,\n }))\n}\n\nfunction createShadow(ctx: Any, target: Any, property: string | undefined, receiver: Any) {\n if (!property) return receiver\n const origin = getPropertyDescriptor(target, property)?.value\n if (!origin) return receiver\n return withProp(receiver, property, ctx.extend({ [symbols.shadow]: origin }))\n}\n\nfunction createShadowMethod(ctx: Any, value: Any, outer: Any, shadow: Any) {\n const proxy = new Proxy(value, {\n apply: (target, thisArg, args) => {\n if (thisArg === outer) thisArg = shadow\n return getTraceable(ctx, Reflect.apply(target, thisArg, args))\n },\n })\n return proxy\n}\n\nfunction createTraceable(ctx: Any, value: Any, tracker: Tracker) {\n const caller = ctx[symbols.shadow] ?? ctx\n if (ctx[symbols.shadow]) {\n ctx = Object.getPrototypeOf(ctx)\n }\n const proxy = new Proxy(value, {\n get: (target, prop, receiver) => {\n if (prop === symbols.original) return target\n if (prop === symbols.caller) return caller\n if (prop === tracker.property) return ctx\n if (typeof prop === 'symbol') {\n return Reflect.get(target, prop, receiver)\n }\n if (tracker.associate && ctx.reflect.props[`${tracker.associate}.${prop}`]) {\n return Reflect.get(ctx, `${tracker.associate}.${prop}`, withProp(ctx, symbols.receiver, receiver))\n }\n let shadow: Any\n let innerValue: Any\n const desc = getPropertyDescriptor(target, prop)\n if (desc?.value !== undefined) {\n innerValue = desc.value\n } else {\n shadow = createShadow(ctx, target, tracker.property, receiver)\n innerValue = Reflect.get(target, prop, shadow)\n }\n const innerTracker = innerValue?.[symbols.tracker]\n if (innerTracker) {\n return createTraceable(ctx, innerValue, innerTracker)\n } else if (!tracker.noShadow && typeof innerValue === 'function') {\n shadow ??= createShadow(ctx, target, tracker.property, receiver)\n return createShadowMethod(ctx, innerValue, receiver, shadow)\n } else {\n return innerValue\n }\n },\n set: (target, prop, value, receiver) => {\n if (prop === symbols.original || prop === symbols.caller || prop === tracker.property) return false\n if (typeof prop === 'symbol') {\n return Reflect.set(target, prop, value, receiver)\n }\n if (tracker.associate && ctx.reflect.props[`${tracker.associate}.${prop}`]) {\n return Reflect.set(ctx, `${tracker.associate}.${prop}`, value, withProp(ctx, symbols.receiver, receiver))\n }\n const shadow = createShadow(ctx, target, tracker.property, receiver)\n return Reflect.set(target, prop, value, shadow)\n },\n apply: (target, thisArg, args) => {\n const receiver = tracker.noShadow\n ? proxy\n : createShadow(ctx, target, tracker.property, proxy)\n return applyTraceable(receiver, target, thisArg, args)\n },\n })\n return proxy\n}\n\nfunction applyTraceable(proxy: Any, value: Any, thisArg: Any, args: Any[]) {\n if (!value[symbols.invoke]) return Reflect.apply(value, thisArg, args)\n return value[symbols.invoke].apply(proxy, args)\n}\n\nexport function createCallable(name: string, proto: object, tracker: Tracker) {\n const self: Any = function (this: Any, ...args: Any[]) {\n const proxy = createTraceable(self.ctx, self, tracker)\n return Reflect.apply(proxy, this, args)\n }\n Object.defineProperty(self, 'name', { value: name, configurable: true, writable: true })\n return Object.setPrototypeOf(self, proto)\n}\n\ninterface StackInfo {\n offset: number\n error: Error\n}\n\nfunction handleError(info: StackInfo, reason: Any, getOuterStack: () => string[]): never {\n const innerLines = info.error.stack!.split('\\n')\n if (typeof reason?.stack !== 'string') {\n const outerError = new Error(reason)\n const lines = outerError.stack!.split('\\n')\n lines.splice(1, Infinity, ...getOuterStack())\n outerError.stack = lines.join('\\n')\n throw outerError\n }\n const lines: string[] = reason.stack.split('\\n')\n const index = lines.indexOf(innerLines[2]!)\n if (index === -1) throw reason\n lines.splice(index - info.offset, Infinity, ...getOuterStack())\n reason.stack = lines.join('\\n')\n throw reason\n}\n\nexport function composeError<T>(callback: (info: StackInfo) => T, getOuterStack = buildOuterStack()): T {\n const info: StackInfo = { offset: 1, error: new Error() }\n try {\n const result: Any = callback(info)\n if (isObject(result) && 'then' in result) {\n return (result as Any).then(undefined, (reason: Any) => handleError(info, reason, getOuterStack)) as T\n }\n return result\n } catch (reason: Any) {\n handleError(info, reason, getOuterStack)\n }\n}\n\nexport function buildOuterStack(offset = 0) {\n const outerError = new Error()\n return () => outerError.stack!.split('\\n').slice(3 + offset)\n}\n", "import { Context } from './context.js'\r\nimport { DisposableList, symbols, type Any, type AnyFunction } from './utils.js'\r\n\r\ndeclare module './context.js' {\r\n interface Context {\r\n on(name: string, listener: AnyFunction, options?: boolean | EventOptions): () => Any\r\n once(name: string, listener: AnyFunction, options?: boolean | EventOptions): () => Any\r\n emit(name: string, ...args: Any[]): void\r\n emit(thisArg: object, name: string, ...args: Any[]): void\r\n parallel(name: string, ...args: Any[]): Promise<void>\r\n parallel(thisArg: object, name: string, ...args: Any[]): Promise<void>\r\n serial(name: string, ...args: Any[]): Promise<void>\r\n serial(thisArg: object, name: string, ...args: Any[]): Promise<void>\r\n bail(name: string, ...args: Any[]): Any\r\n bail(thisArg: object, name: string, ...args: Any[]): Any\r\n waterfall(name: string, ...args: Any[]): Any\r\n waterfall(thisArg: object, name: string, ...args: Any[]): Any\r\n waterfallAsync(name: string, ...args: Any[]): Promise<Any>\r\n waterfallAsync(thisArg: object, name: string, ...args: Any[]): Promise<Any>\r\n }\r\n}\r\n\r\nexport function isBailed(value: Any) {\r\n return value !== null && value !== false && value !== undefined\r\n}\r\n\r\nexport type DispatchMode = 'emit' | 'parallel' | 'serial' | 'bail' | 'waterfall' | 'waterfallAsync'\r\n\r\nexport interface EventOptions {\r\n prepend?: boolean\r\n global?: boolean\r\n}\r\n\r\nexport interface Hook extends EventOptions {\r\n ctx: Context\r\n callback: AnyFunction\r\n}\r\n\r\nexport class EventsService {\r\n _hooks: Record<string, Hook[]> = Object.create(null)\r\n\r\n constructor(private ctx: Context) {\r\n Object.defineProperty(this, symbols.tracker, {\r\n value: { property: 'ctx', noShadow: true },\r\n })\r\n\r\n this.on('internal/listener', function (this: Context, name: string, listener: AnyFunction, options: EventOptions) {\r\n if (name === 'internal/update' && !options.global) {\r\n const hooks = (this.fiber._hooks['internal/update'] ??= new DisposableList<AnyFunction>())\r\n const method = options.prepend ? 'unshift' : 'push'\r\n return hooks[method](listener)\r\n }\r\n })\r\n\r\n this.on('internal/update', function (this: Context, config: Any, noSave: boolean, next: AnyFunction) {\r\n const cbs = [...(this.fiber._hooks['internal/update'] ?? [])]\r\n const _next = () => {\r\n const cb = cbs.shift() ?? next\r\n return cb.call(this, config, noSave, _next)\r\n }\r\n return _next()\r\n }, { global: true, prepend: true })\r\n }\r\n\r\n private _resolve(type: string, args: Any[]) {\r\n const thisArg = typeof args[0] === 'object' || typeof args[0] === 'function' ? args.shift() : null\r\n const name: string = args.shift()\r\n if (!name.startsWith('internal/') && this._hooks['internal/dispatch']?.length) {\r\n this.emit('internal/dispatch', type, name, args, thisArg)\r\n }\r\n const filter = thisArg?.[Context.filter]\r\n return [thisArg, (this._hooks[name] || [])\r\n .filter(hook => hook.global || !filter || filter.call(thisArg, hook.ctx))\r\n .map(hook => hook.callback)] as const\r\n }\r\n\r\n dispatch(type: string, args: Any[]) {\r\n const [thisArg, callbacks] = this._resolve(type, args)\r\n return callbacks.map(callback => callback.bind(thisArg))\r\n }\r\n\r\n async parallel(...args: Any[]) {\r\n const [thisArg, callbacks] = this._resolve('parallel', args)\r\n const results = await Promise.allSettled(callbacks.map(async callback => Reflect.apply(callback, thisArg, args)))\r\n const errors = results\r\n .filter((result): result is PromiseRejectedResult => result.status === 'rejected')\r\n .map(result => result.reason)\r\n if (errors.length) throw new AggregateError(errors)\r\n }\r\n\r\n emit(...args: Any[]) {\r\n const [thisArg, callbacks] = this._resolve('emit', args)\r\n for (const callback of callbacks) Reflect.apply(callback, thisArg, args)\r\n }\r\n\r\n async serial(...args: Any[]) {\r\n const [thisArg, callbacks] = this._resolve('serial', args)\r\n for (const callback of callbacks) {\r\n const result = await Reflect.apply(callback, thisArg, args)\r\n if (isBailed(result)) return result\r\n }\r\n }\r\n\r\n bail(...args: Any[]) {\r\n const [thisArg, callbacks] = this._resolve('bail', args)\r\n for (const callback of callbacks) {\r\n const result = Reflect.apply(callback, thisArg, args)\r\n if (isBailed(result)) return result\r\n }\r\n }\r\n\r\n waterfall(...args: Any[]) {\r\n const [thisArg, callbacks] = this._resolve('waterfall', args)\r\n const inner = args.pop()\r\n const next = () => {\r\n const callback = callbacks.shift()\r\n return callback ? Reflect.apply(callback, thisArg, args) : inner(...args)\r\n }\r\n args.push(next)\r\n return next()\r\n }\r\n\r\n async waterfallAsync(...args: Any[]) {\r\n const [thisArg, callbacks] = this._resolve('waterfallAsync', args)\r\n const inner = args.pop()\r\n const next = async () => {\r\n const callback = callbacks.shift()\r\n return callback\r\n ? await Reflect.apply(callback, thisArg, args)\r\n : inner(...args)\r\n }\r\n args.push(next)\r\n return next()\r\n }\r\n\r\n register(label: string, hooks: Hook[], callback: AnyFunction, options: EventOptions): Any {\r\n const method = options.prepend ? 'unshift' : 'push'\r\n return this.ctx.fiber.effect(() => {\r\n hooks[method]({ ctx: this.ctx, callback, ...options })\r\n return () => this.unregister(hooks, callback)\r\n }, label)\r\n }\r\n\r\n unregister(hooks: Hook[], callback: AnyFunction) {\r\n const index = hooks.findIndex(hook => hook.callback === callback)\r\n if (index >= 0) {\r\n hooks.splice(index, 1)\r\n return true\r\n }\r\n }\r\n\r\n on(name: string, listener: AnyFunction, options: boolean | EventOptions = {}): Any {\r\n if (typeof options !== 'object') {\r\n options = { prepend: options }\r\n }\r\n this.ctx.fiber.assertActive()\r\n listener = this.ctx.reflect.bind(listener)\r\n const result = this.bail(this.ctx, 'internal/listener', name, listener, options)\r\n if (result) return result\r\n\r\n const hooks = this._hooks[name] ??= []\r\n return this.register(`ctx.on(${JSON.stringify(name)})`, hooks, listener, options)\r\n }\r\n\r\n once(name: string, listener: AnyFunction, options: boolean | EventOptions = {}) {\r\n const dispose = this.on(name, function (this: Any, ...args: Any[]) {\r\n dispose()\r\n return listener.apply(this, args)\r\n }, options)\r\n return dispose\r\n }\r\n}\r\n\r\nexport interface Events {\r\n 'internal/plugin'(this: Any): void\r\n 'internal/status'(this: Any, oldValue: Any): void\r\n 'internal/service'(this: Context, name: string, value: Any): void\r\n 'internal/update'(this: Any, config: Any, noSave: boolean, next: AnyFunction): void\r\n 'internal/get'(this: Context, name: string, error: Error, next: AnyFunction): Any\r\n 'internal/set'(this: Context, name: string, value: Any, error: Error, next: AnyFunction): boolean\r\n 'internal/listener'(this: Context, name: string, listener: AnyFunction, options: EventOptions): Any\r\n 'internal/dispatch'(mode: DispatchMode, name: string, args: Any[], thisArg: Any): void\r\n}\r\n", "import type { Context } from './context.js'\nimport type { PluginRuntime } from './registry.js'\nimport type { Impl } from './reflect.js'\nimport {\n buildOuterStack,\n composeError,\n DisposableList,\n getTraceable,\n isConstructor,\n isNullable,\n isObject,\n symbols,\n type Any,\n type AnyFunction,\n type Dict,\n} from './utils.js'\n\ndeclare module './context.js' {\n interface Context extends Pick<Fiber, 'effect'> {\n fiber: Fiber\n }\n}\n\nconst INACTIVE = '__INACTIVE__'\n\nexport class ValidationError extends TypeError {\n override name = 'ValidationError'\n\n constructor(issues: readonly Any[]) {\n super('invalid config:\\n' + issues.map(issue => {\n if (issue.path) {\n return ` - ${issue.message} (at ${issue.path.join('.')})`\n }\n return ` - ${issue.message}`\n }).join('\\n'))\n }\n}\n\nexport function resolveConfig(runtime: PluginRuntime, config: Any) {\n if (!runtime.Config) return config\n const schema = runtime.Config\n if (typeof schema === 'function') return schema(config)\n const validate = schema?.['~standard']?.validate\n if (typeof validate === 'function') {\n const result = validate(config)\n if ('then' in result) {\n throw new TypeError('Async config validation is not supported')\n }\n if (result.issues) {\n throw new ValidationError(result.issues)\n }\n return result.value\n }\n return config\n}\n\nexport type Disposable = () => Any\nexport type SyncEffect = Disposable | Iterable<Disposable> | null | undefined\nexport type AsyncEffect = Promise<Disposable> | AsyncIterable<Disposable> | null | undefined\nexport type Effect = SyncEffect | AsyncEffect\n\ninterface AsyncDisposable extends PromiseLike<() => Promise<void>> {\n (): Any\n}\n\nexport interface EffectMeta {\n label: string\n children: EffectMeta[]\n}\n\ninterface EffectRunner<T> {\n epoch: T\n execute: () => Any\n collect: (dispose: Disposable) => void\n getOuterStack: () => string[]\n}\n\nexport const enum FiberState {\n PENDING,\n LOADING,\n ACTIVE,\n FAILED,\n DISPOSED,\n UNLOADING,\n}\n\nexport const CordisErrorCode = {\n INACTIVE_EFFECT: 'cannot create effect on inactive context',\n} as const\n\nexport type CordisErrorCode = keyof typeof CordisErrorCode\n\nexport class CordisError extends Error {\n constructor(public code: CordisErrorCode, message?: string) {\n super(message ?? CordisErrorCode[code])\n }\n}\n\nexport class Fiber {\n public uid: number | null\n public readonly ctx: Context\n public config: Any\n public state = FiberState.PENDING\n public readonly dispose: () => Promise<void>\n public store: Dict<Impl> | undefined\n public inertia: Promise<void> | undefined\n\n public readonly _hooks: Dict<DisposableList<AnyFunction>> = Object.create(null)\n public readonly _disposables = new DisposableList<Disposable>()\n\n protected context: Context\n\n private _error: Any = undefined\n private _runner: EffectRunner<string>\n private _store: Dict<Impl> = Object.create(null)\n private _restarting: Promise<void> | undefined\n\n constructor(\n public parent: Context,\n config: Any,\n public inject: Dict<Any>,\n public runtime: PluginRuntime | null,\n getOuterStack: () => string[],\n ) {\n const collect = (dispose: Disposable) => {\n this._disposables.push(dispose)\n }\n\n if (runtime) {\n this.uid = parent.registry.counter\n this.ctx = this.context = parent.extend({ fiber: this })\n\n const injectEntries = Object.entries(this.inject)\n if (injectEntries.length) {\n this.ctx[symbols.intercept] = Object.create(parent[symbols.intercept]!)\n for (const [name, config] of injectEntries) {\n if (isNullable(config)) continue\n this.ctx[symbols.intercept]![name] = config\n }\n }\n\n this._runner = {\n epoch: INACTIVE,\n getOuterStack,\n execute: () => {\n if (isConstructor(runtime.callback)) {\n const instance = new runtime.callback(this.ctx, this.config)\n for (const hook of instance?.[symbols.initHooks] ?? []) {\n hook()\n }\n return instance?.[symbols.init]?.()\n } else {\n return runtime.callback(this.ctx, this.config)\n }\n },\n collect,\n }\n\n this.context.emit(this, 'internal/plugin')\n\n for (const name of Object.keys(this.inject)) {\n this._checkImpl(name)\n }\n\n this.dispose = parent.fiber.effect(() => {\n const remove = runtime.fibers.push(this)\n try {\n this.config = resolveConfig(runtime, config)\n this._refresh()\n } catch (error) {\n this.ctx.logger.error(error)\n this._error = error\n }\n return async () => {\n this.uid = null\n this.context.emit(this, 'internal/plugin')\n if (this.ctx.registry.has(runtime.callback)) {\n remove()\n if (!runtime.fibers.length) {\n this.ctx.registry.delete(runtime.callback)\n }\n }\n this._setEpoch(INACTIVE)\n while (this.inertia) {\n await this.inertia\n }\n }\n }, 'ctx.plugin()')\n } else {\n this.uid = 0\n this.ctx = this.context = parent\n this.state = FiberState.ACTIVE\n this.store = Object.create(null)\n this._runner = {\n epoch: '',\n getOuterStack,\n execute: () => {},\n collect,\n }\n this.dispose = () => this.restart()\n }\n }\n\n get name() {\n if (this.runtime?.name) return this.runtime.name\n let fiber = this.parent.fiber\n while (fiber !== fiber.parent.fiber) {\n if (fiber.runtime?.name) return fiber.runtime.name\n fiber = fiber.parent.fiber\n }\n return 'root'\n }\n\n assertActive() {\n if (this.uid !== null) return\n throw new CordisError('INACTIVE_EFFECT')\n }\n\n private _execute<T>(runner: EffectRunner<T>) {\n const oldEpoch = runner.epoch\n return composeError((info: Any) => {\n const safeCollect = (dispose: Any) => {\n if (typeof dispose === 'function') {\n runner.collect(dispose)\n } else if (!isNullable(dispose)) {\n throw new TypeError('Invalid effect')\n }\n }\n const effect: Effect = runner.execute.call(this)\n if (typeof effect === 'function') {\n return runner.collect(effect)\n } else if (isNullable(effect)) {\n return\n } else if (!isObject(effect)) {\n throw new TypeError('Invalid effect')\n } else if ('then' in effect) {\n return (effect as Any).then(safeCollect)\n } else if (Symbol.iterator in effect) {\n info.error = new Error()\n const iter = (effect as Any)[Symbol.iterator]()\n while (true) {\n const result = iter.next()\n safeCollect(result.value)\n if (result.done) return\n }\n } else if (Symbol.asyncIterator in effect) {\n const iter = (effect as Any)[Symbol.asyncIterator]()\n return (async () => {\n await Promise.resolve()\n info.error = new Error()\n while (true) {\n if (runner.epoch !== oldEpoch) return\n const result = await iter.next()\n safeCollect(result.value)\n if (result.done) return\n }\n })()\n } else {\n throw new TypeError('Invalid effect')\n }\n }, runner.getOuterStack)\n }\n\n effect(execute: () => SyncEffect, label?: string): Disposable\n effect(execute: () => Effect, label?: string): AsyncDisposable\n effect(execute: () => Effect, label = 'anonymous'): Any {\n this.assertActive()\n\n const disposables: Disposable[] = []\n const dispose = () => {\n let task: Any\n for (const dispose of disposables.splice(0).reverse()) {\n if (task) {\n task = task.then(dispose)\n } else {\n const result = dispose()\n if (isObject(result) && 'then' in result) {\n task = result\n }\n }\n }\n return task\n }\n\n const meta: EffectMeta = { label, children: [] }\n const runner: EffectRunner<boolean> = {\n execute,\n epoch: true,\n collect: (dispose) => {\n disposables.push(dispose)\n this._disposables.delete(dispose)\n if ((dispose as Any)[symbols.effect]) {\n meta.children.push((dispose as Any)[symbols.effect])\n }\n },\n getOuterStack: buildOuterStack(),\n }\n\n let task: Any\n try {\n task = this._execute(runner)\n } catch (reason) {\n dispose()\n throw reason\n }\n\n task?.catch(dispose).catch((error: Any) => this.ctx.logger.error(error))\n\n const wrapper = Object.defineProperty(() => {\n if (!runner.epoch) return\n runner.epoch = false\n return task ? task.then(dispose) : dispose()\n }, symbols.effect, { value: meta }) as AsyncDisposable\n\n const disposeAsync = () => {\n if (!runner.epoch) return\n runner.epoch = false\n return dispose()\n }\n wrapper.then = async (onFulfilled, onRejected) => {\n return Promise.resolve(task)\n .then(() => disposeAsync)\n .then(onFulfilled, onRejected)\n }\n disposables.push(this._disposables.push(wrapper))\n return wrapper\n }\n\n getEffects() {\n return [...this._disposables]\n .map<EffectMeta>(dispose => (dispose as Any)[symbols.effect])\n .filter(Boolean)\n }\n\n private _getState() {\n if (this.uid === null) return FiberState.DISPOSED\n if (this._error) return FiberState.FAILED\n if (this._runner.epoch !== INACTIVE) return FiberState.ACTIVE\n return FiberState.PENDING\n }\n\n private _updateState(callback?: () => void | FiberState) {\n const oldState = this.state\n this.state = callback?.() ?? this._getState()\n if (oldState === this.state) return\n this.context.emit(this, 'internal/status', oldState)\n\n if (oldState !== FiberState.ACTIVE && this.state !== FiberState.ACTIVE) return\n for (const key of Reflect.ownKeys(this.ctx.reflect.store)) {\n const impl = this.ctx.reflect.store[key as symbol]\n if (!impl) continue\n if (impl.fiber !== this) continue\n this.ctx.reflect.notify([impl.name])\n }\n }\n\n _checkImpl(name: string) {\n const impl = this.ctx.reflect._getImpl(name, true)\n if (!impl) return delete this._store[name]\n try {\n if (impl.check && !impl.check.call(getTraceable(this.ctx, impl.value))) {\n return delete this._store[name]\n }\n } catch (error) {\n impl.fiber.ctx.logger.error(error)\n return delete this._store[name]\n }\n this._store[name] = impl\n }\n\n _refresh() {\n let epoch: string = ''\n for (const name of Object.keys(this.inject)) {\n const impl = this._store[name]\n if (!impl) {\n epoch = INACTIVE\n break\n }\n epoch += ':' + impl.fiber.uid\n }\n this._setEpoch(epoch)\n }\n\n private _setEpoch(epoch: string) {\n const oldEpoch = this._runner.epoch\n if (epoch === oldEpoch) return\n this._runner.epoch = epoch\n if (this.inertia) return\n this._updateState(() => {\n if (epoch !== INACTIVE && oldEpoch === INACTIVE) {\n this.inertia = this._reload()\n return FiberState.LOADING\n } else {\n this.inertia = this._unload()\n return FiberState.UNLOADING\n }\n })\n }\n\n private async _reload() {\n this.store = { ...this._store }\n const oldEpoch = this._runner.epoch\n try {\n await Promise.resolve()\n await this._execute(this._runner)\n } catch (reason) {\n this.ctx.logger.error(reason)\n this._error = reason\n this._runner.epoch = INACTIVE\n }\n this._updateState(() => {\n if (this._runner.epoch === oldEpoch) {\n this.inertia = undefined\n } else {\n this.inertia = this._unload()\n return FiberState.UNLOADING\n }\n })\n }\n\n private async _unload() {\n await Promise.all(this._disposables.clear().map(async (dispose: Disposable) => {\n try {\n await composeError(async (info: Any) => {\n await Promise.resolve()\n info.error = new Error()\n await dispose()\n }, this._runner.getOuterStack)\n } catch (reason) {\n this.ctx.logger.error(reason)\n }\n }))\n this.store = undefined\n this._updateState(() => {\n if (this._runner.epoch === INACTIVE) {\n this.inertia = undefined\n } else {\n this.inertia = this._reload()\n return FiberState.LOADING\n }\n })\n }\n\n async await() {\n while (this.inertia || this._restarting) {\n await Promise.all([this.inertia, this._restarting]\n .filter((task): task is Promise<void> => !!task))\n }\n if (this._error) throw this._error\n return this\n }\n\n async restart() {\n const fiber = this.ctx.fiber\n fiber.assertActive()\n if (fiber._restarting) return fiber._restarting.then(() => undefined)\n let resolve!: () => void\n const restarting = new Promise<void>((resolvePromise) => {\n resolve = resolvePromise\n })\n fiber._restarting = restarting\n try {\n await this._runRestart(fiber)\n } finally {\n fiber._restarting = undefined\n resolve()\n }\n }\n\n private async _runRestart(fiber: Fiber) {\n if (fiber.inertia) {\n fiber._setEpoch(INACTIVE)\n while (fiber.inertia) await fiber.inertia\n }\n fiber._setEpoch(INACTIVE)\n fiber._refresh()\n while (fiber.inertia) await fiber.inertia\n }\n\n update(config: Any, noSave = false) {\n const fiber = this.ctx.fiber\n fiber.assertActive()\n config = resolveConfig(fiber.runtime!, config)\n fiber.context.waterfall(fiber.context, 'internal/update', config, noSave, () => {\n fiber.config = config\n fiber._error = undefined\n return fiber.restart()\n })\n }\n}\n", "/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\nimport type { Context } from './context.js'\nimport { createCallable, joinPrototype, symbols, type Any } from './utils.js'\n\nexport type LoggerType = 'error' | 'info' | 'warn' | 'debug'\nexport type LoggerMethod = (format: Any, ...param: Any[]) => void\n\nexport interface Message {\n sn: number\n ts: number\n name: string\n type: LoggerType\n args: Any[]\n}\n\nexport interface Exporter {\n level?: number\n export(message: Message): void\n}\n\nexport interface LoggerOptions {\n name: string\n level?: number\n}\n\nexport interface LoggerService {\n (name?: string): Logger\n}\n\nexport class Logger {\n public name: string\n public level: number | undefined\n error!: LoggerMethod\n info!: LoggerMethod\n warn!: LoggerMethod\n debug!: LoggerMethod\n\n constructor(options: LoggerOptions, private service: LoggerService) {\n this.name = options.name\n this.level = options.level\n this.error = this._method('error')\n this.info = this._method('info')\n this.warn = this._method('warn')\n this.debug = this._method('debug')\n }\n\n private _method(type: LoggerType): LoggerMethod {\n return (...args: Any[]) => this.service._log({ name: this.name, type, args })\n }\n}\n\nexport class LoggerService {\n buffer: Message[] = []\n ctx!: Context\n _snMessage = 0\n _snExporter = 0\n exporters = new Map<number, Exporter>()\n\n constructor(ctx: Context) {\n const tracker = {\n property: 'ctx',\n noShadow: true,\n }\n const self = createCallable('logger', joinPrototype(Object.getPrototypeOf(this), Function.prototype), tracker) as unknown as LoggerService\n Object.assign(self, this)\n self.ctx = ctx\n Object.defineProperty(self, symbols.tracker, { value: tracker })\n self.exporter({\n export: (message) => {\n self.buffer.push(message)\n },\n })\n ctx.reflect.provide('logger', self)\n return self\n }\n\n exporter(exporter: Exporter) {\n return this.ctx.fiber.effect(() => {\n const id = ++this._snExporter\n this.exporters.set(id, exporter)\n return () => this.exporters.delete(id)\n }, 'ctx.logger.exporter()')\n }\n\n [symbols.invoke](name?: string): Logger {\n const caller = (this as Any)[symbols.caller] as Context | undefined\n const fiber = (caller ?? this.ctx).fiber\n return new Logger({\n name: name ?? fiber.name,\n }, this)\n }\n\n _log(message: Omit<Message, 'sn' | 'ts'>) {\n const sn = ++this._snMessage\n const ts = Date.now()\n for (const exporter of this.exporters.values()) {\n if (exporter.level != null && exporter.level < 0) continue\n exporter.export({ sn, ts, ...message })\n }\n }\n\n error(...args: Any[]) {\n return (this as Any)().error(...args)\n }\n\n info(...args: Any[]) {\n return (this as Any)().info(...args)\n }\n\n warn(...args: Any[]) {\n return (this as Any)().warn(...args)\n }\n\n debug(...args: Any[]) {\n return (this as Any)().debug(...args)\n }\n}\n", "import type { Context } from './context.js'\r\nimport { FiberState } from './fiber.js'\r\nimport { getTraceable, symbols, withProps, type Any, type AnyFunction, type Dict } from './utils.js'\r\n\r\ndeclare module './context.js' {\r\n interface Context {\r\n get(name: string, strict?: boolean): Any\r\n set(name: string, value: Any): void\r\n provide(name: string, value?: Any, check?: () => boolean): () => Any\r\n accessor(name: string, options: Omit<AccessorProperty, 'type'>): () => Any\r\n mixin(source: Any, mixins: string[] | Dict<string>): void\r\n }\r\n}\r\n\r\nfunction enhanceError(error: Error) {\r\n const lines = error.stack!.split('\\n')\r\n lines.splice(0, 2, `Error: ${error.message}`)\r\n error.stack = lines.join('\\n')\r\n return error\r\n}\r\n\r\nconst RESERVED_WORDS = ['prototype', 'then']\r\n\r\nfunction isSpecialProperty(prop: string | symbol) {\r\n return typeof prop === 'symbol'\r\n || RESERVED_WORDS.includes(prop as string)\r\n || parseInt(prop as string).toString() === prop\r\n || (prop as string).startsWith('_')\r\n}\r\n\r\nexport interface ServiceProperty {\r\n type: 'service'\r\n}\r\n\r\nexport interface AccessorProperty {\r\n type: 'accessor'\r\n get: (this: Context, receiver: Any, error: Error) => Any\r\n set?: (this: Context, value: Any, receiver: Any, error: Error) => boolean\r\n}\r\n\r\nexport type ReflectProperty = ServiceProperty | AccessorProperty\r\n\r\nexport interface Impl {\r\n name: string\r\n fiber: Any\r\n value?: Any\r\n check?: () => boolean\r\n}\r\n\r\nexport class ReflectService {\r\n static handler: ProxyHandler<Context> = {\r\n get: (target, prop, ctx: Context) => {\r\n if (isSpecialProperty(prop)) {\r\n return Reflect.get(target, prop, ctx)\r\n }\r\n if (Reflect.has(target, prop)) {\r\n return getTraceable(ctx, Reflect.get(target, prop, ctx))\r\n }\r\n\r\n const error = new Error(`cannot get property \"${String(prop)}\" without inject`)\r\n try {\r\n const def = target.reflect.props[prop as string]\r\n if (def?.type === 'accessor') {\r\n return def.get.call(ctx, ctx[symbols.receiver], error)\r\n }\r\n\r\n if (!ctx.fiber.runtime) return ctx.reflect.get(prop as string, false)\r\n return ctx.events.waterfall(ctx, 'internal/get', prop, error, () => {\r\n const key = target[symbols.isolate]![prop as string]\r\n let fiber = ((ctx[symbols.shadow] as Context) ?? ctx).fiber\r\n while (true) {\r\n const impl = fiber.store?.[prop as string]\r\n if (impl) return getTraceable(ctx, impl.value)\r\n if (prop in fiber.inject) {\r\n error.message = `cannot get required service \"${String(prop)}\" in inactive context`\r\n throw error\r\n }\r\n if (!fiber.runtime) throw error\r\n if (fiber.parent[symbols.isolate]![prop as string] !== key) throw error\r\n fiber = fiber.parent.fiber\r\n }\r\n })\r\n } catch (e: Any) {\r\n throw e === error ? enhanceError(e) : e\r\n }\r\n },\r\n\r\n set: (target, prop, value, ctx: Context) => {\r\n if (isSpecialProperty(prop)) {\r\n return Reflect.set(target, prop, value, ctx)\r\n }\r\n\r\n const error = new Error(`cannot set property \"${String(prop)}\" without provide`)\r\n const def = target.reflect.props[prop as string]\r\n\r\n try {\r\n if (def?.type === 'accessor') {\r\n if (!def.set) return false\r\n return def.set.call(ctx, value, ctx[symbols.receiver], error)\r\n }\r\n\r\n if (!def && !ctx.fiber.runtime) {\r\n return Reflect.set(target, prop, value, ctx)\r\n }\r\n\r\n return ctx.events.waterfall(ctx, 'internal/set', prop, value, error, () => {\r\n if (!def) throw error\r\n return ctx.reflect.set(prop as string, value)\r\n })\r\n } catch (e: Any) {\r\n throw e === error ? enhanceError(e) : e\r\n }\r\n },\r\n\r\n has: (target, prop) => {\r\n if (isSpecialProperty(prop)) {\r\n return Reflect.has(target, prop)\r\n }\r\n if (Reflect.has(target, prop)) return true\r\n return !!target.reflect.props[prop as string]\r\n },\r\n }\r\n\r\n public store: Dict<Impl, symbol> = Object.create(null)\r\n public props: Dict<ReflectProperty> = Object.create(null)\r\n\r\n constructor(public ctx: Context) {\r\n Object.defineProperty(this, symbols.tracker, {\r\n value: { property: 'ctx', noShadow: true },\r\n })\r\n\r\n this.mixin('reflect', ['get', 'set', 'provide', 'accessor', 'mixin'])\r\n this.mixin('fiber', ['runtime', 'effect'])\r\n this.mixin('registry', ['inject', 'plugin'])\r\n this.mixin('events', [\r\n 'on',\r\n 'once',\r\n 'parallel',\r\n 'emit',\r\n 'serial',\r\n 'bail',\r\n 'waterfall',\r\n 'waterfallAsync',\r\n ])\r\n }\r\n\r\n get(name: string, strict = true) {\r\n return getTraceable(this.ctx, this._getImpl(name, strict)?.value)\r\n }\r\n\r\n _getImpl(name: string, strict = true) {\r\n const key = this.ctx[symbols.isolate]![name]\r\n const impl = key && this.store[key as symbol]\r\n if (!impl) return\r\n if (strict && impl.fiber.state !== FiberState.ACTIVE) return\r\n return impl\r\n }\r\n\r\n set(name: string, value: Any) {\r\n const key = this.ctx[symbols.isolate]![name]\r\n const impl = key && this.store[key as symbol]\r\n if (!impl) {\r\n throw new Error(`cannot set property \"${name}\" without provide`)\r\n }\r\n if (impl.fiber !== this.ctx.fiber) {\r\n throw new Error(`cannot set property \"${name}\" in multiple fibers`)\r\n }\r\n impl.value = value\r\n return true\r\n }\r\n\r\n provide(name: string, value?: Any, check?: () => boolean) {\r\n return this.ctx.fiber.effect(() => {\r\n if (!this.props[name]) {\r\n this.props[name] = { type: 'service' }\r\n } else if (this.props[name].type !== 'service') {\r\n throw new Error(`property \"${name}\" is already declared as ${this.props[name].type}`)\r\n }\r\n this.props[name] = { type: 'service' }\r\n\r\n this.ctx.root[symbols.isolate]![name] ??= Symbol(name)\r\n const key = this.ctx[symbols.isolate]![name]\r\n const impl: Impl = {\r\n name,\r\n value,\r\n fiber: this.ctx.fiber,\r\n ...(check ? { check } : {}),\r\n }\r\n if (key && this.store[key]) {\r\n throw new Error(`service \"${name}\" has been registered at <${this.store[key].fiber.name}>`)\r\n }\r\n this.store[key as symbol] = impl\r\n this.ctx.fiber.store![name] = impl\r\n if (this.ctx.fiber.state === FiberState.ACTIVE) {\r\n this.notify([name])\r\n }\r\n return async () => {\r\n delete this.store[key as symbol]\r\n const fibers = this.notify([name])\r\n await Promise.allSettled(fibers.map(fiber => fiber.await()))\r\n delete this.ctx.fiber.store![name]\r\n }\r\n }, `ctx.provide(${JSON.stringify(name)})`)\r\n }\r\n\r\n notify(\r\n names: string[],\r\n filter = (ctx: Context, name: string) => ctx[symbols.isolate]![name] === this.ctx[symbols.isolate]![name],\r\n ) {\r\n const fibers: Any[] = []\r\n for (const runtime of this.ctx.registry.values()) {\r\n for (const fiber of runtime.fibers) {\r\n let hasUpdate = false\r\n for (const name of names) {\r\n if (!(name in fiber.inject)) continue\r\n if (!filter(fiber.ctx, name)) continue\r\n hasUpdate = true\r\n fiber._checkImpl(name)\r\n }\r\n if (!hasUpdate) continue\r\n fiber._refresh()\r\n fibers.push(fiber)\r\n }\r\n }\r\n for (const name of names) {\r\n const self: Any = Object.create(this.ctx)\r\n self[symbols.filter] = (target: Context) => filter(target, name)\r\n this.ctx.events.emit(self, 'internal/service', name, this._getImpl(name, false)?.value)\r\n }\r\n return fibers\r\n }\r\n\r\n accessor(name: string, options: Omit<AccessorProperty, 'type'>) {\r\n return this.ctx.fiber.effect(() => {\r\n if (name in this.props) {\r\n throw new Error(`property \"${name}\" is already declared as ${this.props[name]!.type}`)\r\n }\r\n this.props[name] = { type: 'accessor', ...options }\r\n return () => delete this.props[name]\r\n }, `ctx.accessor(${JSON.stringify(name)})`)\r\n }\r\n\r\n mixin(source: Any, mixins: string[] | Dict<string>) {\r\n return this.ctx.fiber.effect(() => {\r\n const entries: [string, string][] = Array.isArray(mixins)\r\n ? mixins.map(key => [key, key] as [string, string])\r\n : Object.entries(mixins)\r\n const getTarget = (target: Context): Any => target[source]\r\n return entries.map(([key, value]) => {\r\n return this.accessor(value, {\r\n get(receiver) {\r\n const service: Any = getTarget(this)\r\n if (service == null) return service\r\n const mixin = receiver ? withProps(receiver, service) : service\r\n const result = Reflect.get(service, key, mixin)\r\n if (typeof result !== 'function') return result\r\n return result.bind(mixin ?? service)\r\n },\r\n set(value, receiver) {\r\n const service: Any = getTarget(this)\r\n const mixin = receiver ? withProps(receiver, service) : service\r\n return Reflect.set(service, key, value, mixin)\r\n },\r\n })\r\n })\r\n }, `ctx.mixin(${JSON.stringify(source)})`)\r\n }\r\n\r\n trace<T>(value: T) {\r\n return getTraceable(this.ctx, value)\r\n }\r\n\r\n bind<T extends AnyFunction>(callback: T) {\r\n return new Proxy(callback, {\r\n apply: (target, thisArg, args) => {\r\n return Reflect.apply(target, this.trace(thisArg), args.map(arg => this.trace(arg)))\r\n },\r\n construct: (target, args, newTarget) => {\r\n return Reflect.construct(target, args.map(arg => this.trace(arg)), newTarget)\r\n },\r\n })\r\n }\r\n}\r\n", "import type { Context } from './context.js'\nimport { Fiber } from './fiber.js'\nimport { buildOuterStack, DisposableList, symbols, withProps, type Any, type AnyFunction, type Dict } from './utils.js'\n\ndeclare module './context.js' {\n interface Context {\n inject(deps: Inject, callback: FunctionPlugin): Fiber & PromiseLike<Fiber>\n plugin<P extends Plugin>(plugin: P, ...args: Any[]): Fiber & PromiseLike<Fiber>\n }\n}\n\nfunction isApplicable(object: Plugin) {\n return object && typeof object === 'object' && typeof object.apply === 'function'\n}\n\nexport type Inject = string[] | Dict<Any>\nexport type InjectKey = string & keyof Context\n\nexport function Inject(name: string, config?: Any) {\n return function (value: Any, decorator: Any) {\n if (decorator.kind === 'class') {\n if (!Object.hasOwn(value, 'inject')) {\n Object.defineProperty(value, 'inject', {\n value: Object.create(Object.getPrototypeOf(value).inject ?? null),\n })\n Object.defineProperty(value.inject, symbols.checkProto, { value: true })\n }\n value.inject[name] = config\n } else if (decorator.kind === 'method') {\n const inject = (value[symbols.metadata] ??= {}).inject ??= Object.create(null)\n inject[name] = config\n decorator.addInitializer(function (this: Any) {\n const property = this[symbols.tracker]?.property\n ;(this[symbols.initHooks] ??= []).push(() => {\n (this.ctx as Context).inject(inject, (ctx) => {\n return value.call(property ? withProps(this, { [property]: ctx }) : this)\n })\n })\n })\n } else {\n throw new Error('@Inject() can only be used on class or class methods')\n }\n }\n}\n\nexport function resolveInject(inject: Inject | null | undefined, result: Dict = Object.create(null)) {\n if (!inject) return result\n if (Array.isArray(inject)) {\n for (const name of inject) {\n result[name] = null\n }\n } else if (Reflect.has(inject, symbols.checkProto)) {\n Object.assign(result, resolveInject(Object.getPrototypeOf(inject)))\n for (const name of Object.keys(inject)) {\n result[name] = inject[name] ?? null\n }\n } else {\n for (const name of Object.keys(inject)) {\n result[name] = inject[name] ?? null\n }\n }\n return result\n}\n\nexport type Plugin = FunctionPlugin | ConstructorPlugin | ObjectPlugin\n\nexport interface PluginBase {\n name?: string\n Config?: Any\n inject?: Inject\n provide?: string | string[]\n intercept?: Dict<boolean>\n}\n\nexport interface FunctionPlugin extends PluginBase {\n (ctx: Context, config: Any): Any\n}\n\nexport interface ConstructorPlugin extends PluginBase {\n new (ctx: Context, config: Any): Any\n}\n\nexport interface ObjectPlugin extends PluginBase {\n apply(ctx: Context, config: Any): Any\n}\n\nexport interface PluginRuntime {\n name?: string\n fibers: DisposableList<Fiber>\n callback: Any\n Config?: Any\n}\n\nexport class RegistryService {\n private _counter = 0\n private _internal = new Map<AnyFunction, PluginRuntime>()\n\n constructor(public ctx: Context) {\n Object.defineProperty(this, symbols.tracker, {\n value: { property: 'ctx', noShadow: true },\n })\n }\n\n get counter() {\n return ++this._counter\n }\n\n get size() {\n return this._internal.size\n }\n\n resolve(plugin: Plugin): AnyFunction | undefined {\n try {\n if (typeof plugin === 'function') return plugin as AnyFunction\n if (isApplicable(plugin)) return plugin.apply\n } catch {\n // getters on plugin objects may throw during resolution\n }\n }\n\n get(plugin: Plugin) {\n const key = this.resolve(plugin)\n return key && this._internal.get(key)\n }\n\n has(plugin: Plugin) {\n const key = this.resolve(plugin)\n return !!key && this._internal.has(key)\n }\n\n delete(plugin: Plugin) {\n const key = this.resolve(plugin)\n const runtime = key && this._internal.get(key)\n if (!runtime) return\n this._internal.delete(key)\n for (const fiber of [...runtime.fibers]) {\n fiber.dispose()\n }\n return runtime\n }\n\n keys() {\n return this._internal.keys()\n }\n\n values() {\n return this._internal.values()\n }\n\n entries() {\n return this._internal.entries()\n }\n\n forEach(callback: (value: PluginRuntime, key: AnyFunction) => void) {\n return this._internal.forEach(callback)\n }\n\n inject(inject: Inject, callback: FunctionPlugin) {\n const name = callback.name || undefined\n return this.plugin(Object.assign(\n { inject, apply: callback },\n name ? { name } : {},\n ))\n }\n\n plugin(plugin: Plugin, config?: Any, getOuterStack = buildOuterStack()) {\n const callback = this.resolve(plugin)\n if (!callback) throw new Error('invalid plugin, expect function or object with an \"apply\" method, received ' + typeof plugin)\n this.ctx.fiber.assertActive()\n\n let runtime = this._internal.get(callback)\n if (!runtime) {\n let name = plugin.name\n if (name === 'apply') name = undefined\n runtime = {\n callback,\n fibers: new DisposableList(),\n ...(name ? { name } : {}),\n ...(plugin.Config ? { Config: plugin.Config } : {}),\n }\n this._internal.set(callback, runtime)\n }\n\n const fiber = new Fiber(this.ctx, config, resolveInject(plugin.inject), runtime, getOuterStack)\n const wrapped = Object.create(fiber) as Fiber & PromiseLike<Fiber>\n wrapped.then = (onFulfilled: Any, onRejected: Any) => {\n return fiber.await().then(onFulfilled, onRejected)\n }\n return wrapped\n }\n}\n", "/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\nimport { EventsService } from './events.js'\nimport { Fiber } from './fiber.js'\nimport { Logger, LoggerService } from './logger.js'\nimport { ReflectService } from './reflect.js'\nimport { RegistryService } from './registry.js'\nimport { getTraceable, symbols, type Any, type Dict } from './utils.js'\n\nexport interface Context {\n [symbols.isolate]: Dict<symbol | undefined>\n [symbols.intercept]: Dict<Any>\n root: this\n baseUrl?: string | undefined\n events: EventsService\n logger: LoggerService & ((name?: string) => Logger)\n reflect: ReflectService\n registry: RegistryService\n}\n\nexport class Context {\n static readonly effect: symbol = symbols.effect\n static readonly filter: symbol = symbols.filter\n static readonly isolate: symbol = symbols.isolate\n static readonly intercept: symbol = symbols.intercept\n static readonly marker = Symbol.for('tnega.is')\n\n static is(value: Any): value is Context {\n return !!value?.[Context.marker]\n }\n\n static {\n (Context.prototype as Any)[Context.marker] = true\n }\n\n constructor() {\n this[symbols.isolate] = Object.create(null)\n this[symbols.intercept] = Object.create(null)\n const self = new Proxy<this>(this, ReflectService.handler)\n this.root = self\n this.baseUrl = undefined\n this.fiber = new Fiber(self, {}, Object.create(null), null, () => [])\n this.reflect = new ReflectService(self)\n this.registry = new RegistryService(self)\n this.events = new EventsService(self)\n this.logger = new LoggerService(self)\n this.fiber._disposables.clear()\n return self\n }\n\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `Context <${this.fiber.name}>`\n }\n\n extend(meta: Dict = {}): this {\n const shadow = Reflect.getOwnPropertyDescriptor(this, symbols.shadow)?.value\n const self = Object.create(getTraceable(this, this))\n for (const prop of Reflect.ownKeys(meta)) {\n Object.defineProperty(self, prop, Reflect.getOwnPropertyDescriptor(meta, prop)!)\n }\n if (!shadow) return self\n return Object.assign(Object.create(self), { [symbols.shadow]: shadow })\n }\n\n isolate(name: string, label?: symbol) {\n const shadow = Object.create(this[symbols.isolate]!)\n shadow[name] = label ?? Symbol(name)\n return this.extend({ [symbols.isolate]: shadow })\n }\n\n intercept(name: string, config: Any) {\n const intercept = Object.create(this[symbols.intercept]!)\n intercept[name] = config\n return this.extend({ [symbols.intercept]: intercept })\n }\n}\n", "import type { Context } from './context.js'\nimport { createCallable, joinPrototype, symbols, type Any, type Tracker } from './utils.js'\n\nexport abstract class Service<out T = never> {\n static readonly init: symbol = symbols.init\n static readonly check: symbol = symbols.check\n static readonly config: symbol = symbols.config\n static readonly invoke: symbol = symbols.invoke\n static readonly extend: symbol = symbols.extend\n static readonly tracker: symbol = symbols.tracker\n static readonly resolveConfig: symbol = symbols.resolveConfig\n\n declare [symbols.config]: T\n\n public name!: string\n\n constructor(protected ctx: Context, name?: string) {\n name ??= (this.constructor as Any).provide as string\n\n const tracker: Tracker = {\n associate: name,\n property: 'ctx',\n }\n const self: Any = (this as Any)[symbols.invoke]\n ? createCallable(name, joinPrototype(Object.getPrototypeOf(this), Function.prototype), tracker)\n : this\n\n self.ctx = ctx\n self.name = name\n Object.defineProperty(self, symbols.tracker, { value: tracker })\n\n self.ctx.reflect.provide(name, self, (this as Any)[symbols.check])\n return self\n }\n\n protected [symbols.filter](ctx: Context) {\n return ctx[symbols.isolate]![this.name] === this.ctx[symbols.isolate]![this.name]\n }\n\n protected [symbols.extend](props?: Any) {\n let self: Any\n if ((this as Any)[Service.invoke]) {\n self = createCallable(this.name, this, (this as Any)[symbols.tracker])\n } else {\n self = Object.create(this)\n }\n return Object.assign(self, props)\n }\n\n [symbols.resolveConfig](base?: T, head?: T): T {\n let intercept: Any = this.ctx[symbols.intercept]!\n const configs: Any[] = []\n while (this.name in intercept) {\n if (Object.hasOwn(intercept, this.name)) {\n configs.unshift(intercept[this.name])\n }\n intercept = Object.getPrototypeOf(intercept)\n }\n if (base) configs.unshift(base)\n if (head) configs.push(head)\n if ((this as Any)['Config']?.merge) {\n return (this as Any)['Config'].merge(...configs)\n } else {\n return Object.assign({}, ...configs)\n }\n }\n\n static [Symbol.hasInstance](instance: Any) {\n if (!instance) return false\n let constructor = instance.constructor\n while (constructor) {\n constructor = constructor.prototype?.constructor\n if (constructor === this) return true\n constructor &&= Object.getPrototypeOf(constructor)\n }\n return false\n }\n}\n", "import {\r\n appendFile,\r\n mkdir,\r\n readFile,\r\n readdir,\r\n stat,\r\n writeFile,\r\n} from 'node:fs/promises'\r\nimport { dirname, join, relative, sep } from 'node:path'\r\nimport type { Context } from '@tnega/core'\r\nimport type {\r\n ToolDefinition,\r\n ToolExecuteOptions,\r\n ToolExecutor,\r\n ToolParameterSchema,\r\n ToolSchema,\r\n ToolsService,\r\n} from './index.js'\r\nimport { evaluateExpression } from './calc.js'\r\nimport { localExecutionProvider, type ExecutionProvider } from './execution.js'\r\nimport { resolveInside } from './path.js'\r\n\r\nexport interface BuiltinToolsConfig {\r\n cwd?: string\r\n allowNetwork?: boolean\r\n allowShell?: boolean\r\n disabled?: readonly string[]\r\n maxReadBytes?: number\r\n maxWriteBytes?: number\r\n maxSearchBytes?: number\r\n maxResults?: number\r\n timeoutMs?: number\r\n execution?: ExecutionProvider\r\n}\r\n\r\ninterface NormalizedBuiltinToolsConfig {\r\n cwd: string\r\n allowNetwork: boolean\r\n allowShell: boolean\r\n disabled: readonly string[]\r\n maxReadBytes: number\r\n maxWriteBytes: number\r\n maxSearchBytes: number\r\n maxResults: number\r\n timeoutMs: number\r\n execution: ExecutionProvider\r\n}\r\n\r\nexport class ToolInputError extends Error {\r\n override name = 'ToolInputError'\r\n}\r\n\r\nconst DEFAULT_TOOL_NAMES = [\r\n 'echo',\r\n 'now',\r\n 'calculator',\r\n 'json',\r\n 'read_file',\r\n 'write_file',\r\n 'list_dir',\r\n 'glob',\r\n 'grep',\r\n] as const\r\n\r\nfunction normalizeConfig(config: BuiltinToolsConfig = {}): NormalizedBuiltinToolsConfig {\r\n return {\r\n cwd: config.cwd ?? process.cwd(),\r\n allowNetwork: config.allowNetwork ?? false,\r\n allowShell: config.allowShell ?? false,\r\n disabled: [...(config.disabled ?? [])],\r\n maxReadBytes: config.maxReadBytes ?? 256 * 1024,\r\n maxWriteBytes: config.maxWriteBytes ?? 1024 * 1024,\r\n maxSearchBytes: config.maxSearchBytes ?? 1024 * 1024,\r\n maxResults: config.maxResults ?? 200,\r\n timeoutMs: config.timeoutMs ?? 15_000,\r\n execution: config.execution ?? localExecutionProvider,\r\n }\r\n}\r\n\r\nfunction definition(\r\n name: string,\r\n description: string,\r\n execute: ToolExecutor,\r\n parameters?: ToolParameterSchema,\r\n): ToolDefinition {\r\n const schema: ToolSchema = { name, description }\r\n if (parameters) schema.parameters = parameters\r\n return { schema, execute }\r\n}\r\n\r\nfunction record(value: unknown, label = 'input'): Record<string, unknown> {\r\n if (value && typeof value === 'object' && !Array.isArray(value)) {\r\n return value as Record<string, unknown>\r\n }\r\n throw new ToolInputError(`${label} must be an object`)\r\n}\r\n\r\nfunction stringField(value: unknown, name: string): string {\r\n if (typeof value === 'string') return value\r\n throw new ToolInputError(`${name} must be a string`)\r\n}\r\n\r\nfunction optionalString(value: unknown, name: string): string | undefined {\r\n if (value === undefined) return undefined\r\n return stringField(value, name)\r\n}\r\n\r\nfunction numberField(value: unknown, name: string): number {\r\n if (typeof value === 'number' && Number.isFinite(value)) return value\r\n throw new ToolInputError(`${name} must be a finite number`)\r\n}\r\n\r\nfunction optionalNumber(value: unknown, name: string): number | undefined {\r\n if (value === undefined) return undefined\r\n return numberField(value, name)\r\n}\r\n\r\nfunction booleanField(value: unknown, name: string): boolean {\r\n if (typeof value === 'boolean') return value\r\n throw new ToolInputError(`${name} must be a boolean`)\r\n}\r\n\r\nfunction optionalBoolean(value: unknown, name: string): boolean | undefined {\r\n if (value === undefined) return undefined\r\n return booleanField(value, name)\r\n}\r\n\r\nfunction optionalRecord(value: unknown, name: string): Record<string, string> | undefined {\r\n if (value === undefined) return undefined\r\n const source = record(value, name)\r\n const result: Record<string, string> = {}\r\n for (const [key, entry] of Object.entries(source)) {\r\n if (typeof entry !== 'string') throw new ToolInputError(`${name}.${key} must be a string`)\r\n result[key] = entry\r\n }\r\n return result\r\n}\r\n\r\nfunction displayPath(cwd: string, target: string): string {\r\n const rel = relative(cwd, target)\r\n return (rel === '' ? '.' : rel).split(sep).join('/')\r\n}\r\n\r\nfunction message(error: unknown): string {\r\n if (error instanceof Error) return error.message\r\n return String(error)\r\n}\r\n\r\nfunction echoTool(): ToolDefinition {\r\n return definition(\r\n 'echo',\r\n 'Return the input text unchanged. Useful for quick checks and debugging.',\r\n (input) => stringField(record(input).text, 'text'),\r\n {\r\n type: 'object',\r\n properties: {\r\n text: { type: 'string', description: 'text to return' },\r\n },\r\n required: ['text'],\r\n },\r\n )\r\n}\r\n\r\nfunction nowTool(): ToolDefinition {\r\n return definition(\r\n 'now',\r\n 'Return the current date and time as an ISO 8601 string in the local timezone.',\r\n () => new Date().toISOString(),\r\n { type: 'object', properties: {} },\r\n )\r\n}\r\n\r\nfunction calculatorTool(): ToolDefinition {\r\n return definition(\r\n 'calculator',\r\n 'Evaluate a safe arithmetic expression and return the numeric result. Supports + - * / % ^, parentheses, constants pi/e/tau and functions abs/round/floor/ceil/sqrt/pow/min/max/log/ln.',\r\n (input) => evaluateExpression(stringField(record(input).expression, 'expression')),\r\n {\r\n type: 'object',\r\n properties: {\r\n expression: {\r\n type: 'string',\r\n description: 'arithmetic expression, e.g. \"(2 + 3) * 4\"',\r\n },\r\n },\r\n required: ['expression'],\r\n },\r\n )\r\n}\r\n\r\nfunction jsonTool(): ToolDefinition {\r\n return definition(\r\n 'json',\r\n 'Parse a JSON string, stringify a value, or get a value by path. Operations: parse (value is a JSON string), stringify (value is any JSON value), get (value is a JSON value, path uses dot and bracket notation like a.b[0].c).',\r\n (input) => {\r\n const args = record(input)\r\n const operation = optionalString(args.operation, 'operation') ?? 'parse'\r\n if (operation === 'stringify') {\r\n const space = optionalNumber(args.space, 'space')\r\n try {\r\n return JSON.stringify(args.value, null, space)\r\n } catch (error) {\r\n throw new ToolInputError(`cannot stringify value: ${message(error)}`)\r\n }\r\n }\r\n if (operation === 'get') {\r\n return jsonGet(args.value, stringField(args.path, 'path'))\r\n }\r\n if (operation !== 'parse') {\r\n throw new ToolInputError(`unknown json operation: ${operation}`)\r\n }\r\n const text = stringField(args.value, 'value')\r\n try {\r\n return JSON.parse(text) as unknown\r\n } catch (error) {\r\n throw new ToolInputError(`invalid JSON: ${message(error)}`)\r\n }\r\n },\r\n {\r\n type: 'object',\r\n properties: {\r\n operation: {\r\n type: 'string',\r\n enum: ['parse', 'stringify', 'get'],\r\n description: 'operation to perform',\r\n },\r\n value: {\r\n description: 'input value for the operation',\r\n },\r\n path: {\r\n type: 'string',\r\n description: 'path to get, e.g. \"a.b[0]\"',\r\n },\r\n space: {\r\n type: 'number',\r\n description: 'indentation for stringify',\r\n },\r\n },\r\n required: ['operation'],\r\n },\r\n )\r\n}\r\n\r\nfunction jsonGet(value: unknown, path: string): unknown {\r\n const segments = parseJsonPath(path)\r\n let current: unknown = value\r\n for (const segment of segments) {\r\n if (current == null || (typeof current !== 'object' && typeof current !== 'string')) {\r\n throw new ToolInputError(`json path not found: ${path}`)\r\n }\r\n if (Array.isArray(current)) {\r\n current = current[Number(segment)]\r\n } else if (typeof current === 'string') {\r\n current = Number.isInteger(Number(segment)) ? current[Number(segment)] : undefined\r\n } else {\r\n current = (current as Record<string, unknown>)[segment]\r\n }\r\n if (current === undefined) throw new ToolInputError(`json path not found: ${path}`)\r\n }\r\n return current\r\n}\r\n\r\nfunction parseJsonPath(path: string): string[] {\r\n let text = path.trim()\r\n if (!text) throw new ToolInputError('json path must be a non-empty string')\r\n if (text.startsWith('$')) text = text.slice(1)\r\n if (text.startsWith('.')) text = text.slice(1)\r\n\r\n const segments: string[] = []\r\n let index = 0\r\n while (index < text.length) {\r\n const char = text[index]!\r\n if (char === '.') {\r\n index += 1\r\n continue\r\n }\r\n if (char === '[') {\r\n const close = text.indexOf(']', index + 1)\r\n if (close < 0) throw new ToolInputError(`invalid json path: ${path}`)\r\n const inner = text.slice(index + 1, close).trim()\r\n if (!inner) throw new ToolInputError(`invalid json path: ${path}`)\r\n segments.push(stripQuotes(inner))\r\n index = close + 1\r\n continue\r\n }\r\n const dot = text.indexOf('.', index)\r\n const bracket = text.indexOf('[', index)\r\n const end = Math.min(\r\n text.length,\r\n ...(dot >= 0 ? [dot] : []),\r\n ...(bracket >= 0 ? [bracket] : []),\r\n )\r\n const segment = text.slice(index, end).trim()\r\n if (!segment) throw new ToolInputError(`invalid json path: ${path}`)\r\n segments.push(segment)\r\n index = end\r\n }\r\n return segments\r\n}\r\n\r\nfunction stripQuotes(value: string): string {\r\n if (value.length >= 2) {\r\n const first = value[0]\r\n const last = value[value.length - 1]\r\n if ((first === '\"' && last === '\"') || (first === \"'\" && last === \"'\")) {\r\n return value.slice(1, -1)\r\n }\r\n }\r\n return value\r\n}\r\n\r\nfunction readFileTool(config: NormalizedBuiltinToolsConfig): ToolDefinition {\r\n return definition(\r\n 'read_file',\r\n 'Read a UTF-8 text file inside the workspace. Returns { path, bytes, content }.',\r\n async (input) => {\r\n const args = record(input)\r\n const target = await resolveInside(config.cwd, stringField(args.path, 'path'))\r\n const stats = await stat(target)\r\n if (stats.isDirectory()) throw new ToolInputError(`not a file: ${args.path}`)\r\n const maxBytes = optionalNumber(args.maxBytes, 'maxBytes') ?? config.maxReadBytes\r\n if (stats.size > maxBytes) {\r\n throw new ToolInputError(`file exceeds ${maxBytes} bytes: ${args.path}`)\r\n }\r\n const buffer = await readFile(target)\r\n if (buffer.includes(0)) throw new ToolInputError(`file is binary: ${args.path}`)\r\n return {\r\n path: displayPath(config.cwd, target),\r\n bytes: buffer.byteLength,\r\n content: buffer.toString('utf8'),\r\n }\r\n },\r\n {\r\n type: 'object',\r\n properties: {\r\n path: { type: 'string', description: 'file path relative to the workspace' },\r\n maxBytes: { type: 'number', description: 'optional byte limit' },\r\n },\r\n required: ['path'],\r\n },\r\n )\r\n}\r\n\r\nfunction writeFileTool(config: NormalizedBuiltinToolsConfig): ToolDefinition {\r\n return definition(\r\n 'write_file',\r\n 'Write UTF-8 text to a file inside the workspace, creating parent directories as needed. Returns { path, bytes, appended }.',\r\n async (input) => {\r\n const args = record(input)\r\n const target = await resolveInside(config.cwd, stringField(args.path, 'path'))\r\n const content = stringField(args.content, 'content')\r\n const append = optionalBoolean(args.append, 'append') ?? false\r\n const bytes = Buffer.byteLength(content, 'utf8')\r\n if (bytes > config.maxWriteBytes) {\r\n throw new ToolInputError(`content exceeds ${config.maxWriteBytes} bytes`)\r\n }\r\n await mkdir(dirname(target), { recursive: true })\r\n if (append) {\r\n await appendFile(target, content, 'utf8')\r\n } else {\r\n await writeFile(target, content, 'utf8')\r\n }\r\n return {\r\n path: displayPath(config.cwd, target),\r\n bytes,\r\n appended: append,\r\n }\r\n },\r\n {\r\n type: 'object',\r\n properties: {\r\n path: { type: 'string', description: 'file path relative to the workspace' },\r\n content: { type: 'string', description: 'text content to write' },\r\n append: { type: 'boolean', description: 'append instead of overwrite' },\r\n },\r\n required: ['path', 'content'],\r\n },\r\n )\r\n}\r\n\r\ninterface DirectoryEntry {\r\n name: string\r\n path: string\r\n type: 'file' | 'directory'\r\n}\r\n\r\nfunction toEntry(cwd: string, dir: string, entry: { name: string; isDirectory(): boolean }): DirectoryEntry {\r\n return {\r\n name: entry.name,\r\n path: displayPath(cwd, join(dir, entry.name)),\r\n type: entry.isDirectory() ? 'directory' : 'file',\r\n }\r\n}\r\n\r\nasync function collectEntries(\r\n cwd: string,\r\n root: string,\r\n dir: string,\r\n max: number,\r\n): Promise<DirectoryEntry[]> {\r\n const entries: DirectoryEntry[] = []\r\n const children = await readdir(dir, { withFileTypes: true })\r\n for (const entry of children) {\r\n if (entries.length >= max) break\r\n entries.push(toEntry(cwd, dir, entry))\r\n if (entry.isDirectory()) {\r\n entries.push(...await collectEntries(cwd, root, join(dir, entry.name), max))\r\n }\r\n }\r\n return entries\r\n}\r\n\r\nfunction listDirTool(config: NormalizedBuiltinToolsConfig): ToolDefinition {\r\n return definition(\r\n 'list_dir',\r\n 'List directory entries inside the workspace. Returns [{ name, path, type }].',\r\n async (input) => {\r\n const args = record(input)\r\n const base = await resolveInside(config.cwd, optionalString(args.path, 'path') ?? '.')\r\n const stats = await stat(base)\r\n if (!stats.isDirectory()) throw new ToolInputError(`not a directory: ${args.path ?? '.'}`)\r\n const recursive = optionalBoolean(args.recursive, 'recursive') ?? false\r\n const entries = recursive\r\n ? await collectEntries(config.cwd, base, base, config.maxResults)\r\n : (await readdir(base, { withFileTypes: true }))\r\n .map(entry => toEntry(config.cwd, base, entry))\r\n return entries.slice(0, config.maxResults)\r\n },\r\n {\r\n type: 'object',\r\n properties: {\r\n path: { type: 'string', description: 'directory path relative to the workspace' },\r\n recursive: { type: 'boolean', description: 'include nested entries' },\r\n },\r\n },\r\n )\r\n}\r\n\r\nfunction normalizeGlobPattern(pattern: string): string {\r\n return pattern.replaceAll('\\\\', '/').replace(/^\\.\\//, '')\r\n}\r\n\r\nfunction globToRegExp(pattern: string): RegExp {\r\n let source = ''\r\n let index = 0\r\n while (index < pattern.length) {\r\n const char = pattern[index]!\r\n if (char === '*') {\r\n if (pattern[index + 1] === '*') {\r\n source += '.*'\r\n index += 2\r\n if (pattern[index] === '/') {\r\n source += '/?'\r\n index += 1\r\n }\r\n } else {\r\n source += '[^/]*'\r\n index += 1\r\n }\r\n } else if (char === '?') {\r\n source += '[^/]'\r\n index += 1\r\n } else {\r\n source += char.replace(/[\\\\^$+?.()|{}[\\]]/g, '\\\\$&')\r\n index += 1\r\n }\r\n }\r\n return new RegExp(`^${source}$`)\r\n}\r\n\r\nasync function walkFiles(\r\n cwd: string,\r\n root: string,\r\n dir: string,\r\n regex: RegExp,\r\n matches: string[],\r\n max: number,\r\n): Promise<void> {\r\n if (matches.length >= max) return\r\n const children = await readdir(dir, { withFileTypes: true })\r\n for (const entry of children) {\r\n if (matches.length >= max) return\r\n const target = join(dir, entry.name)\r\n if (entry.isDirectory()) {\r\n await walkFiles(cwd, root, target, regex, matches, max)\r\n } else if (entry.isFile()) {\r\n const rel = relative(root, target).split(sep).join('/')\r\n if (regex.test(rel)) matches.push(displayPath(cwd, target))\r\n }\r\n }\r\n}\r\n\r\nfunction globTool(config: NormalizedBuiltinToolsConfig): ToolDefinition {\r\n return definition(\r\n 'glob',\r\n 'Find files by glob pattern inside the workspace. Supports ** (any depth), * (within a segment) and ? (single character). Returns relative paths.',\r\n async (input) => {\r\n const args = record(input)\r\n const pattern = normalizeGlobPattern(stringField(args.pattern, 'pattern'))\r\n const root = await resolveInside(config.cwd, optionalString(args.base, 'base') ?? '.')\r\n const regex = globToRegExp(pattern)\r\n const matches: string[] = []\r\n await walkFiles(config.cwd, root, root, regex, matches, config.maxResults)\r\n return matches.slice(0, config.maxResults)\r\n },\r\n {\r\n type: 'object',\r\n properties: {\r\n pattern: { type: 'string', description: 'glob pattern, e.g. \"**/*.ts\"' },\r\n base: { type: 'string', description: 'directory to search, defaults to workspace root' },\r\n },\r\n required: ['pattern'],\r\n },\r\n )\r\n}\r\n\r\ninterface GrepMatch {\r\n file: string\r\n line: number\r\n text: string\r\n}\r\n\r\nasync function grepWalk(\r\n config: NormalizedBuiltinToolsConfig,\r\n root: string,\r\n dir: string,\r\n regex: RegExp,\r\n globRegex: RegExp | undefined,\r\n matches: GrepMatch[],\r\n max: number,\r\n): Promise<void> {\r\n if (matches.length >= max) return\r\n const children = await readdir(dir, { withFileTypes: true })\r\n for (const entry of children) {\r\n if (matches.length >= max) return\r\n const target = join(dir, entry.name)\r\n if (entry.isDirectory()) {\r\n await grepWalk(config, root, target, regex, globRegex, matches, max)\r\n continue\r\n }\r\n if (!entry.isFile()) continue\r\n const rel = relative(root, target).split(sep).join('/')\r\n if (globRegex && !globRegex.test(rel)) continue\r\n const stats = await stat(target)\r\n if (stats.size > config.maxSearchBytes) continue\r\n const buffer = await readFile(target)\r\n if (buffer.includes(0)) continue\r\n const lines = buffer.toString('utf8').split('\\n')\r\n for (let index = 0; index < lines.length; index += 1) {\r\n if (matches.length >= max) return\r\n const line = lines[index]!\r\n if (regex.test(line)) {\r\n matches.push({\r\n file: displayPath(config.cwd, target),\r\n line: index + 1,\r\n text: line,\r\n })\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction grepTool(config: NormalizedBuiltinToolsConfig): ToolDefinition {\r\n return definition(\r\n 'grep',\r\n 'Search text files for a regular expression. Returns [{ file, line, text }].',\r\n async (input) => {\r\n const args = record(input)\r\n const pattern = stringField(args.pattern, 'pattern')\r\n let regex: RegExp\r\n try {\r\n regex = new RegExp(pattern)\r\n } catch (error) {\r\n throw new ToolInputError(`invalid regular expression: ${message(error)}`)\r\n }\r\n const root = await resolveInside(config.cwd, optionalString(args.path, 'path') ?? '.')\r\n const globPattern = optionalString(args.glob, 'glob')\r\n const globRegex = globPattern ? globToRegExp(normalizeGlobPattern(globPattern)) : undefined\r\n const max = optionalNumber(args.maxResults, 'maxResults') ?? config.maxResults\r\n const matches: GrepMatch[] = []\r\n await grepWalk(config, root, root, regex, globRegex, matches, max)\r\n return matches\r\n },\r\n {\r\n type: 'object',\r\n properties: {\r\n pattern: { type: 'string', description: 'regular expression to search for' },\r\n path: { type: 'string', description: 'directory to search, defaults to workspace root' },\r\n glob: { type: 'string', description: 'optional file glob filter, e.g. \"**/*.md\"' },\r\n maxResults: { type: 'number', description: 'optional result limit' },\r\n },\r\n required: ['pattern'],\r\n },\r\n )\r\n}\r\n\r\nfunction httpGetTool(config: NormalizedBuiltinToolsConfig): ToolDefinition {\r\n return definition(\r\n 'http_get',\r\n 'Fetch a URL over HTTP(S) and return { status, ok, headers, body, truncated }.',\r\n async (input, options: ToolExecuteOptions) => {\r\n const args = record(input)\r\n const rawUrl = stringField(args.url, 'url')\r\n let url: URL\r\n try {\r\n url = new URL(rawUrl)\r\n } catch {\r\n throw new ToolInputError(`invalid URL: ${rawUrl}`)\r\n }\r\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\r\n throw new ToolInputError(`unsupported protocol: ${url.protocol}`)\r\n }\r\n const headers = optionalRecord(args.headers, 'headers') ?? {}\r\n const maxBytes = optionalNumber(args.maxBytes, 'maxBytes') ?? config.maxReadBytes\r\n return config.execution.fetchHttp({\r\n url: url.href,\r\n ...(Object.keys(headers).length ? { headers } : {}),\r\n ...(maxBytes !== config.maxReadBytes ? { maxBytes } : {}),\r\n ...(options.signal ? { signal: options.signal } : {}),\r\n })\r\n },\r\n {\r\n type: 'object',\r\n properties: {\r\n url: { type: 'string', description: 'http or https URL' },\r\n headers: {\r\n type: 'object',\r\n description: 'optional request headers',\r\n },\r\n maxBytes: { type: 'number', description: 'optional response body byte limit' },\r\n },\r\n required: ['url'],\r\n },\r\n )\r\n}\r\n\r\nfunction shellTool(config: NormalizedBuiltinToolsConfig): ToolDefinition {\r\n return definition(\r\n 'shell',\r\n 'Run a shell command inside the workspace and return { exitCode, stdout, stderr }. Disabled by default; enable with allowShell.',\r\n async (input, options: ToolExecuteOptions) => {\r\n const args = record(input)\r\n const command = stringField(args.command, 'command')\r\n const cwd = await resolveInside(config.cwd, optionalString(args.cwd, 'cwd') ?? '.')\r\n const timeoutMs = optionalNumber(args.timeoutMs, 'timeoutMs') ?? config.timeoutMs\r\n const result = await config.execution.runShell({\r\n command,\r\n cwd,\r\n timeoutMs,\r\n maxBuffer: config.maxWriteBytes,\r\n ...(options.signal ? { signal: options.signal } : {}),\r\n })\r\n return {\r\n exitCode: result.exitCode,\r\n stdout: result.stdout,\r\n stderr: result.stderr,\r\n }\r\n },\r\n {\r\n type: 'object',\r\n properties: {\r\n command: { type: 'string', description: 'shell command to run' },\r\n cwd: { type: 'string', description: 'working directory relative to the workspace' },\r\n timeoutMs: { type: 'number', description: 'optional timeout in milliseconds' },\r\n },\r\n required: ['command'],\r\n },\r\n )\r\n}\r\n\r\nexport function createBuiltinToolDefinitions(\r\n config: BuiltinToolsConfig = {},\r\n): ToolDefinition[] {\r\n const normalized = normalizeConfig(config)\r\n const disabled = new Set(normalized.disabled)\r\n const definitions: ToolDefinition[] = []\r\n if (!disabled.has('echo')) definitions.push(echoTool())\r\n if (!disabled.has('now')) definitions.push(nowTool())\r\n if (!disabled.has('calculator')) definitions.push(calculatorTool())\r\n if (!disabled.has('json')) definitions.push(jsonTool())\r\n if (!disabled.has('read_file')) definitions.push(readFileTool(normalized))\r\n if (!disabled.has('write_file')) definitions.push(writeFileTool(normalized))\r\n if (!disabled.has('list_dir')) definitions.push(listDirTool(normalized))\r\n if (!disabled.has('glob')) definitions.push(globTool(normalized))\r\n if (!disabled.has('grep')) definitions.push(grepTool(normalized))\r\n if (normalized.allowNetwork && !disabled.has('http_get')) {\r\n definitions.push(httpGetTool(normalized))\r\n }\r\n if (normalized.allowShell && !disabled.has('shell')) {\r\n definitions.push(shellTool(normalized))\r\n }\r\n return definitions\r\n}\r\n\r\nexport const builtinTools = {\r\n name: 'builtinTools',\r\n inject: ['tools'],\r\n apply(ctx: Context, config: BuiltinToolsConfig = {}) {\r\n const service = ctx.get('tools') as ToolsService\r\n for (const definition of createBuiltinToolDefinitions(config)) {\r\n service.register(definition)\r\n }\r\n },\r\n}\r\n\r\nexport const DEFAULT_BUILTIN_TOOL_NAMES: readonly string[] = DEFAULT_TOOL_NAMES\r\n", "export class CalculatorError extends Error {\n override name = 'CalculatorError'\n}\n\ntype Token =\n | { type: 'number'; value: number }\n | { type: 'identifier'; value: string }\n | { type: 'operator'; value: string }\n | { type: 'left-paren' }\n | { type: 'right-paren' }\n | { type: 'comma' }\n\ninterface FunctionSpec {\n min: number\n max?: number\n apply(args: readonly number[]): number\n}\n\nconst CONSTANTS: Record<string, number> = {\n e: Math.E,\n pi: Math.PI,\n tau: Math.PI * 2,\n}\n\nconst FUNCTIONS: Record<string, FunctionSpec> = {\n abs: { min: 1, max: 1, apply: ([value]) => Math.abs(value!) },\n round: {\n min: 1,\n max: 2,\n apply: ([value, precision]) => precision === undefined\n ? Math.round(value!)\n : Number(value!.toFixed(precision)),\n },\n floor: { min: 1, max: 1, apply: ([value]) => Math.floor(value!) },\n ceil: { min: 1, max: 1, apply: ([value]) => Math.ceil(value!) },\n sqrt: { min: 1, max: 1, apply: ([value]) => Math.sqrt(value!) },\n pow: { min: 2, max: 2, apply: ([base, exponent]) => Math.pow(base!, exponent!) },\n min: { min: 1, apply: (args) => Math.min(...args) },\n max: { min: 1, apply: (args) => Math.max(...args) },\n log: { min: 1, max: 1, apply: ([value]) => Math.log10(value!) },\n ln: { min: 1, max: 1, apply: ([value]) => Math.log(value!) },\n}\n\nfunction fail(message: string): never {\n throw new CalculatorError(message)\n}\n\nfunction tokenize(source: string): Token[] {\n const tokens: Token[] = []\n let index = 0\n while (index < source.length) {\n const char = source[index]!\n if (/\\s/.test(char)) {\n index += 1\n continue\n }\n if (/[0-9.]/.test(char)) {\n const start = index\n while (index < source.length && /[0-9.]/.test(source[index]!)) {\n index += 1\n }\n let text = source.slice(start, index)\n if (index < source.length && /[eE]/.test(source[index]!)) {\n const exponentStart = index\n index += 1\n if (index < source.length && /[+-]/.test(source[index]!)) {\n index += 1\n }\n const digitsStart = index\n while (index < source.length && /[0-9]/.test(source[index]!)) {\n index += 1\n }\n if (index === digitsStart) {\n index = exponentStart\n } else {\n text = source.slice(start, index)\n }\n }\n const value = Number(text)\n if (!Number.isFinite(value)) fail(`invalid number: ${text}`)\n tokens.push({ type: 'number', value })\n continue\n }\n if (/[A-Za-z_]/.test(char)) {\n const start = index\n while (index < source.length && /[A-Za-z0-9_]/.test(source[index]!)) {\n index += 1\n }\n tokens.push({ type: 'identifier', value: source.slice(start, index) })\n continue\n }\n if ('+-*/%^'.includes(char)) {\n tokens.push({ type: 'operator', value: char })\n index += 1\n continue\n }\n if (char === '(') {\n tokens.push({ type: 'left-paren' })\n index += 1\n continue\n }\n if (char === ')') {\n tokens.push({ type: 'right-paren' })\n index += 1\n continue\n }\n if (char === ',') {\n tokens.push({ type: 'comma' })\n index += 1\n continue\n }\n fail(`unexpected character: ${char}`)\n }\n return tokens\n}\n\nclass Parser {\n private position = 0\n\n constructor(private readonly tokens: Token[]) {}\n\n parse(): number {\n if (!this.tokens.length) fail('empty expression')\n const value = this.expression()\n if (!this.atEnd()) fail(`unexpected token: ${this.peek()!.type}`)\n return value\n }\n\n private expression(): number {\n let value = this.term()\n while (this.matchOperator('+', '-')) {\n const operator = this.operatorValue(this.previous())\n const right = this.term()\n value = operator === '+' ? value + right : value - right\n }\n return value\n }\n\n private term(): number {\n let value = this.factor()\n while (this.matchOperator('*', '/', '%')) {\n const operator = this.operatorValue(this.previous())\n const right = this.factor()\n if (operator === '*') {\n value *= right\n } else if (operator === '/') {\n if (right === 0) fail('division by zero')\n value /= right\n } else {\n if (right === 0) fail('modulo by zero')\n value %= right\n }\n }\n return value\n }\n\n private factor(): number {\n return this.unary()\n }\n\n private unary(): number {\n if (this.matchOperator('+', '-')) {\n const operator = this.operatorValue(this.previous())\n const value = this.unary()\n return operator === '-' ? -value : value\n }\n return this.power()\n }\n\n private power(): number {\n const base = this.primary()\n if (this.matchOperator('^')) {\n return Math.pow(base, this.unary())\n }\n return base\n }\n\n private primary(): number {\n const token = this.advance()\n switch (token.type) {\n case 'number':\n return token.value\n case 'identifier':\n return this.callOrConstant(token.value)\n case 'left-paren': {\n const value = this.expression()\n if (!this.matchType('right-paren')) fail('missing closing parenthesis')\n return value\n }\n default:\n fail(`unexpected token: ${token.type}`)\n }\n }\n\n private callOrConstant(name: string): number {\n if (this.matchType('left-paren')) return this.call(name)\n const constant = CONSTANTS[name]\n if (constant === undefined) fail(`unknown identifier: ${name}`)\n return constant\n }\n\n private call(name: string): number {\n const args: number[] = []\n if (!this.matchType('right-paren')) {\n do {\n args.push(this.expression())\n } while (this.matchType('comma'))\n if (!this.matchType('right-paren')) {\n fail('missing closing parenthesis after arguments')\n }\n }\n const spec = FUNCTIONS[name]\n if (!spec) fail(`unknown function: ${name}`)\n if (args.length < spec.min || (spec.max !== undefined && args.length > spec.max)) {\n fail(`${name} expects ${spec.min}${spec.max === undefined ? ' or more' : ` to ${spec.max}`} arguments`)\n }\n return spec.apply(args)\n }\n\n private advance(): Token {\n if (this.atEnd()) fail('unexpected end of expression')\n const token = this.tokens[this.position]!\n this.position += 1\n return token\n }\n\n private peek(): Token | undefined {\n return this.tokens[this.position]\n }\n\n private previous(): Token {\n return this.tokens[this.position - 1]!\n }\n\n private operatorValue(token: Token): string {\n if (token.type !== 'operator') fail(`unexpected token: ${token.type}`)\n return token.value\n }\n\n private atEnd(): boolean {\n return this.position >= this.tokens.length\n }\n\n private matchOperator(...values: string[]): boolean {\n const token = this.peek()\n if (token?.type === 'operator' && values.includes(token.value)) {\n this.position += 1\n return true\n }\n return false\n }\n\n private matchType(type: Token['type']): boolean {\n if (this.peek()?.type === type) {\n this.position += 1\n return true\n }\n return false\n }\n}\n\nexport function evaluateExpression(source: string): number {\n const value = new Parser(tokenize(source)).parse()\n if (!Number.isFinite(value)) fail(`result is not a finite number: ${value}`)\n return value\n}\n", "import { spawn, type ChildProcess } from 'node:child_process'\r\n\r\nexport interface ShellRequest {\r\n command: string\r\n cwd: string\r\n timeoutMs?: number\r\n maxBuffer?: number\r\n signal?: AbortSignal\r\n}\r\n\r\nexport interface ShellResult {\r\n exitCode: number\r\n stdout: string\r\n stderr: string\r\n}\r\n\r\nexport interface HttpRequest {\r\n url: string\r\n headers?: Record<string, string>\r\n signal?: AbortSignal\r\n maxBytes?: number\r\n}\r\n\r\nexport interface HttpResponse {\r\n status: number\r\n ok: boolean\r\n headers: Record<string, string>\r\n body: string\r\n truncated: boolean\r\n}\r\n\r\n/** Replaceable execution boundary used by builtin network/shell tools. */\r\nexport interface ExecutionProvider {\r\n runShell(request: ShellRequest): Promise<ShellResult>\r\n fetchHttp(request: HttpRequest): Promise<HttpResponse>\r\n}\r\n\r\nfunction errorMessage(error: unknown): string {\r\n if (error instanceof Error) return error.message\r\n return String(error)\r\n}\r\n\r\nasync function killProcessTree(child: ChildProcess): Promise<void> {\r\n if (child.pid === undefined) return\r\n if (process.platform === 'win32') {\r\n await new Promise<void>((resolve) => {\r\n const killer = spawn('taskkill', ['/pid', String(child.pid), '/t', '/f'], {\r\n stdio: 'ignore',\r\n windowsHide: true,\r\n })\r\n killer.on('error', () => resolve())\r\n killer.on('exit', () => resolve())\r\n })\r\n } else {\r\n try {\r\n process.kill(-child.pid, 'SIGKILL')\r\n } catch {\r\n // Process group already gone.\r\n }\r\n child.kill('SIGKILL')\r\n }\r\n}\r\n\r\nfunction runLocalShell(request: ShellRequest): Promise<ShellResult> {\r\n const timeoutMs = request.timeoutMs ?? 15_000\r\n const maxBuffer = request.maxBuffer ?? 1024 * 1024\r\n return new Promise((resolve, reject) => {\r\n const child = spawn(request.command, {\r\n cwd: request.cwd,\r\n shell: true,\r\n windowsHide: true,\r\n ...(process.platform === 'win32' ? {} : { detached: true }),\r\n })\r\n let stdout = ''\r\n let stderr = ''\r\n let settled = false\r\n let timer: NodeJS.Timeout | undefined\r\n let onAbort: () => void = () => {}\r\n const append = (target: string, chunk: Buffer, limit: number): string => {\r\n if (target.length >= limit) return target\r\n return target + chunk.toString('utf8').slice(0, limit - target.length)\r\n }\r\n const cleanup = (): void => {\r\n if (timer) clearTimeout(timer)\r\n request.signal?.removeEventListener('abort', onAbort)\r\n }\r\n const finish = (action: () => void): void => {\r\n if (settled) return\r\n settled = true\r\n cleanup()\r\n action()\r\n }\r\n const fail = (message: string): void => {\r\n finish(() => {\r\n void killProcessTree(child).finally(() => reject(new Error(message)))\r\n })\r\n }\r\n onAbort = () => fail('shell command cancelled')\r\n if (request.signal) {\r\n if (request.signal.aborted) onAbort()\r\n else request.signal.addEventListener('abort', onAbort, { once: true })\r\n }\r\n if (timeoutMs > 0) {\r\n timer = setTimeout(() => fail(`shell command timed out after ${timeoutMs}ms`), timeoutMs)\r\n }\r\n child.stdout.on('data', (chunk: Buffer) => {\r\n stdout = append(stdout, chunk, maxBuffer)\r\n })\r\n child.stderr.on('data', (chunk: Buffer) => {\r\n stderr = append(stderr, chunk, maxBuffer)\r\n })\r\n child.on('error', (error) => {\r\n finish(() => resolve({ exitCode: 1, stdout, stderr: errorMessage(error) }))\r\n })\r\n child.on('close', (code, closeSignal) => {\r\n finish(() => resolve({\r\n exitCode: code ?? 1,\r\n stdout,\r\n stderr: closeSignal ? `killed by ${closeSignal}` : stderr,\r\n }))\r\n })\r\n })\r\n}\r\n\r\nexport const localExecutionProvider: ExecutionProvider = {\r\n runShell: runLocalShell,\r\n async fetchHttp(request) {\r\n const init: RequestInit = {}\r\n if (request.headers) init.headers = request.headers\r\n if (request.signal) init.signal = request.signal\r\n const response = await fetch(request.url, init)\r\n const buffer = Buffer.from(await response.arrayBuffer())\r\n const maxBytes = request.maxBytes ?? 256 * 1024\r\n const truncated = buffer.byteLength > maxBytes\r\n const headers: Record<string, string> = {}\r\n response.headers.forEach((value, key) => {\r\n headers[key] = value\r\n })\r\n return {\r\n status: response.status,\r\n ok: response.ok,\r\n headers,\r\n body: buffer.subarray(0, maxBytes).toString('utf8'),\r\n truncated,\r\n }\r\n },\r\n}\r\n", "import { realpath } from 'node:fs/promises'\nimport { dirname, isAbsolute, relative, resolve, sep } from 'node:path'\n\nexport class PathSandboxError extends Error {\n override name = 'PathSandboxError'\n}\n\nfunction inside(root: string, target: string): boolean {\n const rel = relative(root, target)\n return rel === ''\n || (rel !== '..' && !rel.startsWith(`..${sep}`) && !isAbsolute(rel))\n}\n\nfunction isMissing(error: unknown): boolean {\n const code = (error as NodeJS.ErrnoException | null)?.code\n return code === 'ENOENT' || code === 'ENOTDIR'\n}\n\nexport async function resolveInside(cwd: string, input: string): Promise<string> {\n if (typeof input !== 'string' || !input.trim()) {\n throw new PathSandboxError('path must be a non-empty string')\n }\n let root: string\n try {\n root = await realpath(cwd)\n } catch {\n throw new PathSandboxError(`workspace directory is not accessible: ${cwd}`)\n }\n const target = resolve(cwd, input)\n if (!inside(root, target)) {\n throw new PathSandboxError(`path escapes the workspace: ${input}`)\n }\n\n // Follow the deepest existing ancestor so a symlinked parent cannot escape.\n let current = target\n for (;;) {\n try {\n const real = await realpath(current)\n if (!inside(root, real)) {\n throw new PathSandboxError(`path escapes the workspace through a symlink: ${input}`)\n }\n return target\n } catch (error) {\n if (!isMissing(error)) throw error\n const parent = dirname(current)\n if (parent === current) {\n throw new PathSandboxError(`path escapes the workspace: ${input}`)\n }\n current = parent\n }\n }\n}\n", "import { ToolInputError } from './builtins.js'\nimport type {\n ToolDefinition,\n ToolParameterSchema,\n ToolRequest,\n ToolResult,\n} from './index.js'\n\nexport type ToolInputValidator = (\n input: unknown,\n tool: ToolDefinition,\n) => void | Promise<void>\n\nexport type ToolAuthorizer = (\n request: ToolRequest,\n) => boolean | Promise<boolean>\n\nexport type ToolResultTruncator = (\n result: ToolResult,\n request: ToolRequest,\n) => ToolResult | Promise<ToolResult>\n\nexport interface ToolPolicy {\n validator?: ToolInputValidator\n authorizer?: ToolAuthorizer\n truncator?: ToolResultTruncator\n}\n\nexport class ToolAuthorizationError extends Error {\n override name = 'ToolAuthorizationError'\n}\n\nfunction typeName(value: unknown): string {\n if (value === null) return 'null'\n if (Array.isArray(value)) return 'array'\n return typeof value\n}\n\nfunction matchesType(value: unknown, type: string): boolean {\n switch (type) {\n case 'string':\n return typeof value === 'string'\n case 'number':\n return typeof value === 'number' && Number.isFinite(value)\n case 'integer':\n return typeof value === 'number' && Number.isInteger(value)\n case 'boolean':\n return typeof value === 'boolean'\n case 'object':\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n case 'array':\n return Array.isArray(value)\n case 'null':\n return value === null\n default:\n return true\n }\n}\n\nexport function validateSchema(\n input: unknown,\n schema: ToolParameterSchema | undefined,\n): string[] {\n if (!schema) return []\n\n const issues: string[] = []\n if (schema.type && !matchesType(input, schema.type)) {\n issues.push(`expected ${schema.type}, received ${typeName(input)}`)\n return issues\n }\n\n const objectLike = schema.type === 'object'\n || Boolean(schema.properties)\n || (schema.required?.length ?? 0) > 0\n if (objectLike && (typeof input !== 'object' || input === null || Array.isArray(input))) {\n issues.push('expected object')\n return issues\n }\n if (!objectLike || typeof input !== 'object' || input === null || Array.isArray(input)) {\n return issues\n }\n\n const record = input as Record<string, unknown>\n for (const key of schema.required ?? []) {\n if (!(key in record)) issues.push(`missing required property: ${key}`)\n }\n\n for (const [key, raw] of Object.entries(schema.properties ?? {})) {\n const value = record[key]\n if (value === undefined) continue\n if (!raw || typeof raw !== 'object') continue\n const property = raw as ToolParameterSchema\n const nested = validateSchema(value, property)\n if (nested.length) issues.push(...nested.map(issue => `${key}.${issue}`))\n if (Array.isArray(property.enum) && !property.enum.includes(value)) {\n issues.push(`${key} must be one of ${property.enum.join(', ')}`)\n }\n }\n\n if (schema.type === 'array' && Array.isArray(input) && schema.items) {\n const itemSchema = schema.items as ToolParameterSchema\n for (let index = 0; index < input.length; index += 1) {\n const nested = validateSchema(input[index], itemSchema)\n if (nested.length) issues.push(...nested.map(issue => `[${index}].${issue}`))\n }\n }\n\n return issues\n}\n\nexport function validateToolInput(input: unknown, tool: ToolDefinition): void {\n const issues = validateSchema(input, tool.schema.parameters)\n if (issues.length) throw new ToolInputError(issues.join('; '))\n}\n", "import type { Context, Disposable } from '@tnega/core'\r\nimport { Service } from '@tnega/core'\r\nimport { ToolAuthorizationError, validateToolInput } from './policy.js'\r\nimport type {\r\n ToolAuthorizer,\r\n ToolInputValidator,\r\n ToolPolicy,\r\n ToolResultTruncator,\r\n} from './policy.js'\r\n\r\nexport * from './builtins.js'\r\nexport * from './calc.js'\r\nexport * from './path.js'\r\nexport * from './execution.js'\r\nexport {\r\n ToolAuthorizationError,\r\n validateSchema,\r\n validateToolInput,\r\n type ToolAuthorizer,\r\n type ToolInputValidator,\r\n type ToolPolicy,\r\n type ToolResultTruncator,\r\n} from './policy.js'\r\n\r\nexport interface ToolParameterSchema {\r\n type?: string\r\n properties?: Record<string, unknown>\r\n required?: string[]\r\n [key: string]: unknown\r\n}\r\n\r\nexport interface ToolSchema {\r\n name: string\r\n description: string\r\n parameters?: ToolParameterSchema\r\n}\r\n\r\nexport interface ToolExecuteOptions {\r\n callId?: string\r\n signal?: AbortSignal\r\n /** Runtime opt-in: mark a successful result as concluding the agent turn. */\r\n concludesTurn?: boolean\r\n [key: string]: unknown\r\n}\r\n\r\nexport type ToolExecutor = (\r\n input: unknown,\r\n options: ToolExecuteOptions,\r\n) => unknown | Promise<unknown>\r\n\r\nexport interface ToolDefinition {\r\n schema: ToolSchema\r\n execute: ToolExecutor\r\n metadata?: Record<string, unknown>\r\n policy?: ToolPolicy\r\n}\r\n\r\nexport interface ToolError {\r\n name: string\r\n message: string\r\n stack?: string\r\n}\r\n\r\nexport interface ToolResult {\r\n ok: boolean\r\n name: string\r\n callId?: string\r\n input: unknown\r\n output?: unknown\r\n error?: ToolError\r\n /** When true, the agent turn should stop after this tool result. */\r\n concludesTurn?: boolean\r\n startedAt: number\r\n durationMs: number\r\n}\r\n\r\nexport interface ToolRequest {\r\n tool: ToolDefinition\r\n name: string\r\n input: unknown\r\n options: ToolExecuteOptions\r\n startedAt: number\r\n}\r\n\r\nexport interface ToolStagePayload {\r\n request: ToolRequest\r\n result: ToolResult\r\n}\r\n\r\nexport interface ToolsConfig extends ToolPolicy {\r\n [key: string]: unknown\r\n}\r\n\r\n/**\r\n * Final pre-dispatch check evaluated after the `tools/pre-execute` waterfall.\r\n * A returned reason denies the call; `undefined` leaves it unchanged. Guards\r\n * are monotonic: no later listener can re-allow a denied call.\r\n */\r\nexport type ToolGuard = (\r\n request: ToolRequest,\r\n) => string | undefined | Promise<string | undefined>\r\n\r\nexport class ToolNotFoundError extends Error {\r\n override name = 'ToolNotFoundError'\r\n\r\n constructor(readonly toolName: string) {\r\n super(`tool not found: ${toolName}`)\r\n }\r\n}\r\n\r\nexport class ToolAlreadyRegisteredError extends Error {\r\n override name = 'ToolAlreadyRegisteredError'\r\n\r\n constructor(readonly toolName: string) {\r\n super(`tool already registered: ${toolName}`)\r\n }\r\n}\r\n\r\nfunction toToolError(error: unknown): ToolError {\r\n if (error instanceof Error) {\r\n const result: ToolError = {\r\n name: error.name,\r\n message: error.message,\r\n }\r\n if (error.stack) result.stack = error.stack\r\n return result\r\n }\r\n return {\r\n name: 'ToolExecutionError',\r\n message: String(error),\r\n }\r\n}\r\n\r\nexport class ToolsService extends Service<never> {\r\n static provide = 'tools'\r\n\r\n private _tools = new Map<string, ToolDefinition>()\r\n private _guards = new Set<ToolGuard>()\r\n private _policy: {\r\n validator: ToolInputValidator\r\n authorizer?: ToolAuthorizer\r\n truncator?: ToolResultTruncator\r\n }\r\n\r\n constructor(ctx: Context, config: ToolsConfig = {}) {\r\n super(ctx, 'tools')\r\n this._policy = {\r\n validator: config.validator ?? validateToolInput,\r\n }\r\n if (config.authorizer !== undefined) this._policy.authorizer = config.authorizer\r\n if (config.truncator !== undefined) this._policy.truncator = config.truncator\r\n }\r\n\r\n register(definition: ToolDefinition): Disposable {\r\n this._validate(definition)\r\n const name = definition.schema.name\r\n return this.ctx.fiber.effect(() => {\r\n if (this._tools.has(name)) {\r\n throw new ToolAlreadyRegisteredError(name)\r\n }\r\n this._tools.set(name, definition)\r\n this.ctx.emit('tools/change')\r\n return () => {\r\n this._tools.delete(name)\r\n this.ctx.emit('tools/change')\r\n }\r\n }, `ctx.tools.register(${JSON.stringify(name)})`)\r\n }\r\n\r\n unregister(name: string): boolean {\r\n const removed = this._tools.delete(name)\r\n if (removed) this.ctx.emit('tools/change')\r\n return removed\r\n }\r\n\r\n /** Register a monotonic guard evaluated after pre-execute policy. */\r\n guard(guard: ToolGuard): Disposable {\r\n if (typeof guard !== 'function') throw new TypeError('tool guard must be a function')\r\n return this.ctx.fiber.effect(() => {\r\n this._guards.add(guard)\r\n return () => {\r\n this._guards.delete(guard)\r\n }\r\n }, 'ctx.tools.guard()')\r\n }\r\n\r\n has(name: string): boolean {\r\n return this._tools.has(name)\r\n }\r\n\r\n list(): readonly ToolDefinition[] {\r\n return [...this._tools.values()]\r\n }\r\n\r\n toSpecs(): readonly ToolSchema[] {\r\n return this.list().map(tool => tool.schema)\r\n }\r\n\r\n async execute(\r\n name: string,\r\n input: unknown,\r\n options: ToolExecuteOptions = {},\r\n ): Promise<ToolResult> {\r\n const tool = this._tools.get(name)\r\n if (!tool) throw new ToolNotFoundError(name)\r\n\r\n let request: ToolRequest = {\r\n tool,\r\n name,\r\n input,\r\n options,\r\n startedAt: Date.now(),\r\n }\r\n\r\n let preError: unknown\r\n try {\r\n const resolved = await this.ctx.waterfallAsync(\r\n 'tools/pre-execute',\r\n request,\r\n async (payload: ToolRequest) => {\r\n await this._applyPolicy(payload)\r\n return payload\r\n },\r\n )\r\n if (!resolved) {\r\n throw new ToolAuthorizationError(`tool rejected by tools/pre-execute: ${name}`)\r\n }\r\n request = resolved\r\n const denial = await this._checkGuards(request)\r\n if (denial) throw new ToolAuthorizationError(denial)\r\n } catch (error) {\r\n preError = error\r\n }\r\n\r\n let result: ToolResult | undefined\r\n try {\r\n if (!preError) {\r\n result = await this.ctx.waterfallAsync(\r\n 'tools/execute',\r\n request,\r\n async (payload: ToolRequest) => {\r\n const output = await payload.tool.execute(payload.input, payload.options)\r\n return this._success(payload, output)\r\n },\r\n )\r\n }\r\n } catch (error) {\r\n result = this._failure(request, error)\r\n }\r\n if (preError) result = this._failure(request, preError)\r\n if (!result) {\r\n result = this._failure(\r\n request,\r\n new Error('tools/execute did not return a tool result'),\r\n )\r\n }\r\n\r\n try {\r\n const normalized = await this.ctx.waterfallAsync(\r\n 'tools/post-execute',\r\n { request, result },\r\n async (payload: ToolStagePayload) => {\r\n const policy = payload.request.tool.policy\r\n const truncator = policy?.truncator ?? this._policy.truncator\r\n return truncator\r\n ? await truncator(payload.result, payload.request)\r\n : payload.result\r\n },\r\n )\r\n if (normalized && typeof normalized.ok === 'boolean') result = normalized\r\n } catch (error) {\r\n result = this._failure(request, error)\r\n }\r\n\r\n return this._finish(\r\n request,\r\n result ?? this._failure(\r\n request,\r\n new Error('tools/execute did not return a tool result'),\r\n ),\r\n )\r\n }\r\n\r\n private async _finish(\r\n request: ToolRequest,\r\n result: ToolResult,\r\n ): Promise<ToolResult> {\r\n await this.ctx.parallel('tools/result', { request, result })\r\n return result\r\n }\r\n\r\n private async _applyPolicy(request: ToolRequest): Promise<void> {\r\n const policy = request.tool.policy\r\n const authorizer = policy?.authorizer ?? this._policy.authorizer\r\n if (authorizer) {\r\n const allowed = await authorizer(request)\r\n if (!allowed) {\r\n throw new ToolAuthorizationError(`tool authorization denied: ${request.name}`)\r\n }\r\n }\r\n const validator = policy?.validator ?? this._policy.validator\r\n if (validator) await validator(request.input, request.tool)\r\n }\r\n\r\n private async _checkGuards(request: ToolRequest): Promise<string | undefined> {\r\n for (const guard of this._guards) {\r\n const denial = await guard(request)\r\n if (denial) return denial\r\n }\r\n return undefined\r\n }\r\n\r\n private _validate(definition: ToolDefinition): void {\r\n if (!definition || typeof definition.schema?.name !== 'string' || !definition.schema.name) {\r\n throw new TypeError('tool definition requires a non-empty schema.name')\r\n }\r\n if (typeof definition.execute !== 'function') {\r\n throw new TypeError(`tool \"${definition.schema.name}\" requires an execute function`)\r\n }\r\n }\r\n\r\n private _success(request: ToolRequest, output: unknown): ToolResult {\r\n const result: ToolResult = {\r\n ok: true,\r\n name: request.name,\r\n input: request.input,\r\n output,\r\n startedAt: request.startedAt,\r\n durationMs: Date.now() - request.startedAt,\r\n }\r\n if (request.options.callId) result.callId = request.options.callId\r\n this._applyConcludesTurn(request, result)\r\n return result\r\n }\r\n\r\n private _failure(request: ToolRequest, error: unknown): ToolResult {\r\n const result: ToolResult = {\r\n ok: false,\r\n name: request.name,\r\n input: request.input,\r\n error: toToolError(error),\r\n startedAt: request.startedAt,\r\n durationMs: Date.now() - request.startedAt,\r\n }\r\n if (request.options.callId) result.callId = request.options.callId\r\n return result\r\n }\r\n\r\n private _applyConcludesTurn(request: ToolRequest, result: ToolResult): void {\r\n const staticDeclares = (request.tool.metadata as { concludesTurn?: unknown } | undefined)\r\n ?.concludesTurn\r\n if (staticDeclares === true || request.options.concludesTurn === true) {\r\n result.concludesTurn = true\r\n }\r\n }\r\n}\r\n\r\nexport const tools = {\r\n name: 'tools',\r\n apply(ctx: Context, config: ToolsConfig = {}) {\r\n new ToolsService(ctx, config)\r\n },\r\n}\r\n\r\nexport const name = '@tnega/tools'\r\n", "import type { Context } from '@tnega/core'\r\nimport { randomUUID } from 'node:crypto'\r\n\r\nimport {\r\n DEFAULT_CONTEXT_LIMIT,\r\n estimateContextUsage,\r\n type ModelMessage,\r\n type RequestContextPayload,\r\n type SessionLog,\r\n type ToolResultPayload,\r\n type TurnEndReason,\r\n} from '@tnega/session'\r\nimport type { ToolDefinition, ToolError, ToolResult } from '@tnega/tools'\r\nimport type { ToolSchemaSnapshot } from './prompt.js'\r\nimport type { ToolsService } from '@tnega/tools'\r\n\r\nimport type {\r\n AgentContextBudget,\r\n AgentCancelCause,\r\n AgentFinishReason,\r\n AgentHooks,\r\n AgentInput,\r\n AgentPreStepEvent,\r\n AgentRequestErrorEvent,\r\n AgentRequestEvent,\r\n AgentRequestRetryDecision,\r\n AgentRunOptions,\r\n AgentRunResult,\r\n AgentStep,\r\n AgentStreamEvent,\r\n LLMStreamRequestEvent,\r\n AgentTurnStoppingEvent,\r\n CompleteOptions,\r\n LLMAdapter,\r\n LLMCompletion,\r\n LLMStreamEvent,\r\n LLMToolCall,\r\n} from './types.js'\r\n\r\nexport class AgentError extends Error {\r\n override name = 'AgentError'\r\n}\r\n\r\nexport class AgentInbox {\r\n private _queue: AgentInput[] = []\r\n private _steerQueue: AgentInput[] = []\r\n private _injected = new Map<string, unknown>()\r\n\r\n get size(): number {\r\n return this._queue.length + this._steerQueue.length\r\n }\r\n\r\n get steerSize(): number {\r\n return this._steerQueue.length\r\n }\r\n\r\n push(input: AgentInput): AgentInput {\r\n this._queue.push(input)\r\n return input\r\n }\r\n\r\n followup(input: AgentInput): AgentInput {\r\n return this.push(input)\r\n }\r\n\r\n steer(input: AgentInput): AgentInput {\r\n this._steerQueue.push(input)\r\n return input\r\n }\r\n\r\n send(\r\n input: AgentInput,\r\n options: { mode?: 'followup' | 'steer'; wake?: boolean } = {},\r\n ): AgentInput {\r\n if (options.mode === 'steer') return this.steer(input)\r\n return this.followup(input)\r\n }\r\n\r\n claim(): AgentInput | undefined {\r\n return this._steerQueue.shift() ?? this._queue.shift()\r\n }\r\n\r\n peek(): AgentInput | undefined {\r\n return this._steerQueue[0] ?? this._queue[0]\r\n }\r\n\r\n inject(key: string, value: unknown): void {\r\n this._injected.set(key, value)\r\n }\r\n\r\n injected(): ReadonlyMap<string, unknown> {\r\n return new Map(this._injected)\r\n }\r\n}\r\n\r\nexport interface AgentConfig {\r\n llm?: LLMAdapter\r\n /** Bind the loop to a specific session instead of the ctx-provided singleton. */\r\n session?: SessionLog\r\n /** Fail fast when the actual request would not be reconstructable from the log. */\r\n assertReplayable?: boolean\r\n maxTurns?: number\r\n maxSteps?: number\r\n inbox?: AgentInbox\r\n hooks?: AgentHooks\r\n contextBudget?: AgentContextBudget\r\n}\r\n\r\nfunction copyMessages(messages: readonly ModelMessage[]): ModelMessage[] {\r\n return messages.map((message) => {\r\n const copy: ModelMessage = {\r\n role: message.role,\r\n content: message.content,\r\n }\r\n if (message.name) copy.name = message.name\r\n if (message.tool_call_id) copy.tool_call_id = message.tool_call_id\r\n if (message.toolOk !== undefined) copy.toolOk = message.toolOk\r\n if (message.toolError) copy.toolError = { ...message.toolError }\r\n if (message.tool_calls) {\r\n copy.tool_calls = message.tool_calls.map(call => ({\r\n id: call.id,\r\n name: call.name,\r\n arguments: call.arguments,\r\n }))\r\n }\r\n return copy\r\n })\r\n}\r\n\r\nfunction isUserOrSystemMessage(\r\n message: ModelMessage,\r\n): message is ModelMessage & { role: 'system' | 'user' } {\r\n return message.role === 'system' || message.role === 'user'\r\n}\r\n\r\nfunction stringify(value: unknown): string {\r\n if (typeof value === 'string') return value\r\n try {\r\n return JSON.stringify(value) ?? String(value)\r\n } catch {\r\n return String(value)\r\n }\r\n}\r\n\r\nfunction copyCompletion(completion: LLMCompletion): LLMCompletion {\r\n const copy: LLMCompletion = {\r\n finishReason: completion.finishReason,\r\n }\r\n if (completion.content !== undefined) copy.content = completion.content\r\n if (completion.toolCalls) {\r\n copy.toolCalls = completion.toolCalls.map(call => ({\r\n id: call.id,\r\n name: call.name,\r\n arguments: call.arguments,\r\n }))\r\n }\r\n return copy\r\n}\r\n\r\nfunction isCancelCause(value: unknown): value is AgentCancelCause {\r\n if (typeof value !== 'object' || value === null) return false\r\n const record = value as Record<string, unknown>\r\n if (record.type === 'user' || record.type === 'parent' || record.type === 'disposed') {\r\n return true\r\n }\r\n if (\r\n record.type === 'abort'\r\n && (record.message === undefined || typeof record.message === 'string')\r\n ) {\r\n return true\r\n }\r\n if (record.type === 'timeout' && typeof record.timeoutMs === 'number') {\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nfunction cancelCauseFromSignal(signal?: AbortSignal): AgentCancelCause | undefined {\r\n if (!signal?.aborted) return undefined\r\n const reason = signal.reason\r\n if (isCancelCause(reason)) return reason\r\n return { type: 'abort' }\r\n}\r\n\r\n/** Map a completed loop to the typed durable reason a `turn/end` records. */\r\nfunction toTurnEndReason(fields: {\r\n cancelled: boolean\r\n turnError: unknown\r\n finishReason: AgentFinishReason\r\n cancelCause?: AgentCancelCause\r\n}): TurnEndReason {\r\n const { cancelled, turnError, finishReason, cancelCause } = fields\r\n if (cancelled || finishReason === 'cancelled') {\r\n return { kind: 'aborted', cause: cancelCause ?? { type: 'user' } }\r\n }\r\n if (turnError || finishReason === 'error') {\r\n return {\r\n kind: 'error',\r\n error: turnError\r\n ? toToolError(turnError)\r\n : { name: 'TurnError', message: finishReason },\r\n }\r\n }\r\n switch (finishReason) {\r\n case 'length':\r\n return { kind: 'max-tokens' }\r\n case 'max_steps':\r\n return { kind: 'max-steps' }\r\n case 'max_turns':\r\n return { kind: 'max-turns' }\r\n default:\r\n return { kind: 'completed' }\r\n }\r\n}\r\n\r\nfunction partialStreamContent(events: readonly LLMStreamEvent[]): string {\r\n let content = ''\r\n for (const event of events) {\r\n if (event.type === 'message_delta') content += event.delta\r\n }\r\n return content\r\n}\r\n\r\nasync function cancellableDelay(ms: number, signal?: AbortSignal): Promise<boolean> {\r\n if (ms <= 0) return !signal?.aborted\r\n if (signal?.aborted) return false\r\n return new Promise(resolve => {\r\n const timer = setTimeout(() => {\r\n signal?.removeEventListener('abort', onAbort)\r\n resolve(true)\r\n }, ms)\r\n const onAbort = (): void => {\r\n clearTimeout(timer)\r\n resolve(false)\r\n }\r\n signal?.addEventListener('abort', onAbort, { once: true })\r\n })\r\n}\r\n\r\nexport class AgentService {\r\n readonly inbox: AgentInbox\r\n private _seriesStarted = false\r\n private _persistedRequest = false\r\n\r\n constructor(\r\n private ctx: Context,\r\n private config: AgentConfig = {},\r\n ) {\r\n this.inbox = config.inbox ?? new AgentInbox()\r\n }\r\n\r\n /** Call when a request begins an explicit new model-message series. */\r\n startSeries(): void {\r\n this._seriesStarted = true\r\n }\r\n\r\n /** Clear any pending series marker after a completed run. */\r\n endSeriesBoundary(): void {\r\n this._seriesStarted = false\r\n }\r\n\r\n /** True when this service instance has already persisted a model-visible step. */\r\n get hasPersistedRequest(): boolean {\r\n return this._persistedRequest\r\n }\r\n\r\n async run(input?: AgentInput, options: AgentRunOptions = {}): Promise<AgentRunResult> {\r\n return consumeAgentStream(this._stream(input, options, false))\r\n }\r\n\r\n async *runStream(\r\n input?: AgentInput,\r\n options: AgentRunOptions = {},\r\n ): AsyncGenerator<AgentStreamEvent, AgentRunResult, void> {\r\n const iterator = this._stream(input, options)[Symbol.asyncIterator]()\r\n while (true) {\r\n const next = await iterator.next()\r\n if (next.done) return next.value\r\n yield next.value\r\n }\r\n }\r\n\r\n private async *_stream(\r\n input?: AgentInput,\r\n options: AgentRunOptions = {},\r\n useStream = true,\r\n ): AsyncGenerator<AgentStreamEvent, AgentRunResult, void> {\r\n const claimed = input ?? this.inbox.claim()\r\n if (!claimed) throw new AgentError('no agent input available')\r\n await this.config.hooks?.beforeRun?.(claimed, options)\r\n\r\n const session = this._session()\r\n const tools = this._tools()\r\n const llm = this._llm()\r\n if (!llm) throw new AgentError('no LLM adapter available')\r\n\r\n const maxTurns = options.maxTurns ?? this.config.maxTurns ?? 64\r\n const maxSteps = options.maxSteps ?? this.config.maxSteps ?? 64\r\n const contextBudget = options.contextBudget ?? this.config.contextBudget\r\n const injected = this.inbox.injected()\r\n this.ctx.emit('agent/start', { input: claimed, options, injected })\r\n\r\n let messages = await this._initialMessages(claimed)\r\n const steps: AgentStep[] = []\r\n let output = ''\r\n let finishReason: AgentFinishReason = 'stop'\r\n\r\n this.ctx.emit('agent/turn-start', {\r\n input: claimed,\r\n messages: copyMessages(messages),\r\n injected,\r\n })\r\n\r\n const turn = await session.nextTurn()\r\n await session.append('turn/start', {\r\n turn,\r\n input: claimed.text ?? claimed,\r\n reason: 'user',\r\n })\r\n\r\n let index = 0\r\n let finalTurnGranted = false\r\n let currentStepIndex: number | undefined\r\n let turnError: unknown\r\n try {\r\n while (index < maxTurns + (finalTurnGranted ? 1 : 0)) {\r\n if (options.signal?.aborted) {\r\n finishReason = 'cancelled'\r\n break\r\n }\r\n if (steps.length >= maxSteps) {\r\n finishReason = 'max_steps'\r\n break\r\n }\r\n if (contextBudget) {\r\n messages = await this._enforceContextBudget(session, contextBudget, messages)\r\n }\r\n\r\n const stepInput = copyMessages(messages)\r\n const preStep = this.ctx.waterfall('agent/pre-step', {\r\n index,\r\n turn,\r\n step: index,\r\n messages: stepInput,\r\n ...(options.signal ? { signal: options.signal } : {}),\r\n }, (payload: AgentPreStepEvent) => payload)\r\n if (!preStep || !Array.isArray(preStep.messages) || !preStep.messages.length) {\r\n break\r\n }\r\n if (preStep.startsRequestSeries) this._seriesStarted = true\r\n\r\n await session.append('step/start', { turn, step: index })\r\n currentStepIndex = index\r\n\r\n const requestedInput = copyMessages(preStep.messages)\r\n this.ctx.emit('agent/step', {\r\n index,\r\n turn,\r\n step: index,\r\n input: copyMessages(requestedInput),\r\n })\r\n const availableTools = finalTurnGranted ? [] : await this._resolveAvailableTools()\r\n const completeOptions: CompleteOptions = {\r\n maxSteps: maxSteps - steps.length,\r\n }\r\n if (options.signal) completeOptions.signal = options.signal\r\n\r\n const request = this.ctx.waterfall('agent/request', {\r\n index,\r\n messages: requestedInput,\r\n tools: availableTools,\r\n options: completeOptions,\r\n }, (payload: AgentRequestEvent) => payload)\r\n if (!request || !request.options || !request.tools) {\r\n throw new AgentError('agent/request must return a request payload')\r\n }\r\n let llmMessages = copyMessages(requestedInput)\r\n\r\n let completion: LLMCompletion | undefined\r\n const streamMethod = useStream ? llm.stream : undefined\r\n let attempt = 0\r\n let persistedStepInput = false\r\n while (true) {\r\n if (options.signal?.aborted) {\r\n finishReason = 'cancelled'\r\n break\r\n }\r\n const streamEvents: LLMStreamEvent[] = []\r\n try {\r\n if (streamMethod) {\r\n const streamRequest: LLMStreamRequestEvent = {\r\n index,\r\n messages: llmMessages,\r\n tools: request.tools,\r\n options: request.options,\r\n }\r\n const stream = await this.ctx.waterfallAsync(\r\n 'llm/stream',\r\n streamRequest,\r\n async (payload: LLMStreamRequestEvent) => {\r\n if (!streamMethod) {\r\n throw new AgentError('llm.stream is required for streaming runs')\r\n }\r\n return streamMethod(payload.messages, payload.tools, payload.options)\r\n },\r\n )\r\n if (!stream || typeof stream[Symbol.asyncIterator] !== 'function') {\r\n throw new AgentError('llm/stream must return an async iterable stream')\r\n }\r\n llmMessages = copyMessages(streamRequest.messages)\r\n if (!persistedStepInput) {\r\n await this._persistStepInput(session, request, llmMessages)\r\n if (this.config.assertReplayable) {\r\n await this._assertReplayable(session, llmMessages)\r\n }\r\n persistedStepInput = true\r\n }\r\n let chunkIndex = 0\r\n for await (const event of stream) {\r\n streamEvents.push(event)\r\n if (event.type === 'message_delta') {\r\n await session.append('assistant/chunk', {\r\n id: event.id,\r\n content: event.delta,\r\n index: chunkIndex,\r\n })\r\n chunkIndex += 1\r\n }\r\n yield event\r\n }\r\n completion = completionFromStreamEvents(streamEvents)\r\n } else {\r\n if (!persistedStepInput) {\r\n await this._persistStepInput(session, request, llmMessages)\r\n if (this.config.assertReplayable) {\r\n await this._assertReplayable(session, llmMessages)\r\n }\r\n persistedStepInput = true\r\n }\r\n completion = await llm.complete(llmMessages, request.tools, request.options)\r\n }\r\n break\r\n } catch (error) {\r\n const content = partialStreamContent(streamEvents)\r\n if (content) {\r\n await session.append('assistant/message', {\r\n content,\r\n interrupted: true,\r\n })\r\n llmMessages = await session.deriveMessages()\r\n }\r\n if (options.signal?.aborted) {\r\n finishReason = 'cancelled'\r\n break\r\n }\r\n attempt += 1\r\n const failure = toToolError(error)\r\n const decision = await this.ctx.waterfallAsync(\r\n 'agent/request-error',\r\n {\r\n index,\r\n turn,\r\n step: index,\r\n messages: copyMessages(llmMessages),\r\n tools: request.tools,\r\n options: request.options,\r\n attempt,\r\n error,\r\n failure,\r\n ...(request.options.provider ? { provider: request.options.provider } : {}),\r\n ...(request.options.model ? { model: request.options.model } : {}),\r\n ...(options.signal ? { signal: options.signal } : {}),\r\n } satisfies AgentRequestErrorEvent,\r\n () => undefined,\r\n ) as AgentRequestRetryDecision\r\n if (options.signal?.aborted) {\r\n finishReason = 'cancelled'\r\n break\r\n }\r\n if (decision?.kind !== 'retry') throw error\r\n const retryId = randomUUID()\r\n const delayMs = decision.delayMs ?? 0\r\n await session.append('llm/retry', {\r\n retryId,\r\n retry: attempt,\r\n ...(delayMs > 0 ? { delayMs } : {}),\r\n failure: toToolError(error),\r\n })\r\n if (!await cancellableDelay(delayMs, options.signal)) {\r\n finishReason = 'cancelled'\r\n break\r\n }\r\n await session.append('llm/retry-started', { retryId, retry: attempt })\r\n }\r\n }\r\n if (options.signal?.aborted) break\r\n if (!completion) throw new AgentError('LLM adapter did not produce a completion')\r\n\r\n const toolCalls = completion.toolCalls ?? []\r\n if (finalTurnGranted && toolCalls.length) {\r\n finishReason = 'max_turns'\r\n break\r\n }\r\n const toolResults: ToolResult[] = []\r\n if (toolCalls.length) {\r\n await session.append('assistant/message', {\r\n content: completion.content ?? '',\r\n toolCalls: toolCalls.map(call => ({\r\n id: call.id,\r\n name: call.name,\r\n arguments: call.arguments,\r\n })),\r\n })\r\n }\r\n for (const call of toolCalls) {\r\n this.ctx.emit('agent/tool-call', { index, turn, step: index, call })\r\n yield { type: 'tool/start', index, turn, step: index, call }\r\n await session.append('tool/call', {\r\n id: call.id,\r\n name: call.name,\r\n arguments: call.arguments,\r\n })\r\n const toolOptions: { callId: string; signal?: AbortSignal } = { callId: call.id }\r\n if (options.signal) toolOptions.signal = options.signal\r\n const startedAt = Date.now()\r\n let result: ToolResult\r\n try {\r\n result = await tools.execute(call.name, call.arguments, toolOptions)\r\n } catch (error) {\r\n result = {\r\n ok: false,\r\n name: call.name,\r\n callId: call.id,\r\n input: call.arguments,\r\n error: toToolError(error),\r\n startedAt,\r\n durationMs: Date.now() - startedAt,\r\n }\r\n }\r\n toolResults.push(result)\r\n const toolResultPayload: ToolResultPayload = {\r\n id: call.id,\r\n toolCallId: call.id,\r\n name: call.name,\r\n ok: result.ok,\r\n durationMs: result.durationMs,\r\n }\r\n if (result.output !== undefined) toolResultPayload.output = result.output\r\n if (result.error) {\r\n toolResultPayload.error = {\r\n name: result.error.name,\r\n message: result.error.message,\r\n }\r\n if (result.error.stack) toolResultPayload.error.stack = result.error.stack\r\n }\r\n await session.append('tool/result', toolResultPayload)\r\n yield { type: 'tool/end', index, turn, step: index, call, result }\r\n this.ctx.emit('agent/tool-result', {\r\n index,\r\n turn,\r\n step: index,\r\n call,\r\n result,\r\n })\r\n }\r\n if (options.signal?.aborted) {\r\n finishReason = 'cancelled'\r\n break\r\n }\r\n\r\n steps.push({\r\n index,\r\n input: copyMessages(llmMessages),\r\n completion,\r\n toolResults,\r\n })\r\n\r\n if (completion.content) {\r\n output = completion.content\r\n }\r\n if (!toolCalls.length) {\r\n await session.append('assistant/message', { content: completion.content ?? '' })\r\n }\r\n\r\n await session.append('step/end', {\r\n turn,\r\n step: index,\r\n finishReason: completion.finishReason,\r\n toolCalls: toolCalls.length,\r\n })\r\n currentStepIndex = undefined\r\n\r\n const nextMessages = this._extendMessages(llmMessages, completion, toolResults)\r\n const concludesTurn = toolResults.some(result => result.concludesTurn === true)\r\n if (concludesTurn) {\r\n finishReason = 'stop'\r\n break\r\n }\r\n if (toolCalls.length === 0) {\r\n finishReason = completion.finishReason === 'length'\r\n ? 'length'\r\n : completion.finishReason === 'error'\r\n ? 'error'\r\n : 'stop'\r\n const keepGoing = await this.ctx.serial('agent/turn-stopping', {\r\n index,\r\n turn,\r\n steps: copySteps(steps),\r\n finishReason,\r\n } satisfies AgentTurnStoppingEvent) as unknown\r\n if (!keepGoing) break\r\n }\r\n if (index + 1 >= maxTurns && !finalTurnGranted) {\r\n finalTurnGranted = true\r\n } else if (index + 1 >= maxTurns + (finalTurnGranted ? 1 : 0)) {\r\n finishReason = 'max_turns'\r\n break\r\n }\r\n if (toolCalls.length) finishReason = 'tool_calls'\r\n index += 1\r\n messages = nextMessages\r\n }\r\n } catch (error) {\r\n turnError = error\r\n throw error\r\n } finally {\r\n const cancelCause = cancelCauseFromSignal(options.signal)\r\n if (currentStepIndex !== undefined) {\r\n const cancelled = options.signal?.aborted\r\n await session.append('step/end', {\r\n turn,\r\n step: currentStepIndex,\r\n finishReason: cancelled\r\n ? 'cancelled'\r\n : turnError\r\n ? 'error'\r\n : 'interrupted',\r\n interrupted: true,\r\n ...(cancelCause ? { cancelCause } : {}),\r\n ...(turnError ? { error: toToolError(turnError) } : {}),\r\n })\r\n }\r\n await session.append('turn/end', {\r\n turn,\r\n finishReason: turnError\r\n ? (options.signal?.aborted ? 'cancelled' : 'error')\r\n : finishReason,\r\n reason: toTurnEndReason({\r\n cancelled: options.signal?.aborted ?? false,\r\n turnError,\r\n finishReason: turnError\r\n ? (options.signal?.aborted ? 'cancelled' : 'error')\r\n : finishReason,\r\n ...(cancelCause ? { cancelCause } : {}),\r\n }),\r\n ...(cancelCause ? { cancelCause } : {}),\r\n ...(output ? { output } : {}),\r\n ...(steps.length ? { steps: steps.length } : {}),\r\n ...(turnError ? { interrupted: true, error: toToolError(turnError) } : {}),\r\n })\r\n }\r\n\r\n const runResult: AgentRunResult = {\r\n input: claimed,\r\n output,\r\n finishReason,\r\n turn,\r\n steps,\r\n messages: copyMessages(messages),\r\n }\r\n this.ctx.emit('agent/turn-end', {\r\n input: claimed,\r\n steps: copySteps(steps),\r\n messages: copyMessages(messages),\r\n output,\r\n finishReason,\r\n })\r\n this.ctx.emit('agent/end', {\r\n input: claimed,\r\n steps: copySteps(steps),\r\n messages: copyMessages(messages),\r\n output,\r\n finishReason,\r\n })\r\n await this.config.hooks?.afterRun?.(runResult, options)\r\n\r\n yield { type: 'run/end', run: runResult }\r\n return runResult\r\n }\r\n\r\n private async _enforceContextBudget(\r\n session: SessionLog,\r\n budget: AgentContextBudget,\r\n messages: readonly ModelMessage[],\r\n ): Promise<ModelMessage[]> {\r\n const limit = budget.limit ?? DEFAULT_CONTEXT_LIMIT\r\n const compactRatio = budget.compactRatio ?? 0.9\r\n if (limit <= 0 || compactRatio <= 0 || compactRatio > 1) {\r\n throw new AgentError('invalid context budget: limit must be positive and compactRatio must be in (0, 1]')\r\n }\r\n const usage = estimateContextUsage(messages, limit)\r\n if (usage.ratio < compactRatio) return copyMessages(messages)\r\n const keepTokens = budget.keepTokens ?? Math.max(1, Math.floor(limit * 0.5))\r\n const compactMessages = budget.summarize\r\n ? await budget.summarize(messages, usage)\r\n : [{ role: 'system' as const, content: defaultContextSummary(messages, usage) }]\r\n const summary = compactMessages\r\n .map(message => `${message.role}: ${message.content}`)\r\n .join('\\n')\r\n await session.compact({\r\n keepTokens,\r\n summary,\r\n tokensBefore: usage.tokens,\r\n messages: compactMessages.map(message => copyMessages([message])[0]!),\r\n })\r\n this.ctx.emit('agent/context-compact', {\r\n type: 'agent/context-compact',\r\n messagesBefore: messages.length,\r\n tokensBefore: usage.tokens,\r\n limit,\r\n keepTokens,\r\n messagesAfter: compactMessages.length,\r\n })\r\n return compactMessages.map(message => copyMessages([message])[0]!)\r\n }\r\n\r\n private async _persistStepInput(\r\n session: SessionLog,\r\n request: AgentRequestEvent,\r\n input: readonly ModelMessage[],\r\n ): Promise<void> {\r\n const system = input.find(message => message.role === 'system')?.content\r\n const tools = request.tools.map(tool => ({\r\n name: tool.schema.name,\r\n description: tool.schema.description,\r\n ...(tool.schema.parameters ? { parameters: tool.schema.parameters } : {}),\r\n }))\r\n const config = {\r\n ...(request.options.provider ? { provider: request.options.provider } : {}),\r\n ...(request.options.model ? { model: request.options.model } : {}),\r\n ...(request.options.temperature !== undefined\r\n ? { temperature: request.options.temperature }\r\n : {}),\r\n }\r\n const nextHeader = {\r\n ...(Object.keys(config).length ? { config } : {}),\r\n ...(system !== undefined ? { system } : {}),\r\n ...(tools.length ? { tools } : {}),\r\n }\r\n const previousHeader = session.requestHeader()\r\n const isFirstRequest = !this._persistedRequest\r\n const isResume = isFirstRequest && previousHeader !== undefined\r\n this._persistedRequest = true\r\n const changedHeader = previousHeader && (\r\n previousHeader.system !== nextHeader.system\r\n || JSON.stringify(previousHeader.tools ?? []) !== JSON.stringify(nextHeader.tools ?? [])\r\n || JSON.stringify(previousHeader.config ?? {}) !== JSON.stringify(nextHeader.config ?? {})\r\n )\r\n if (isFirstRequest) {\r\n await session.append('request/header', {\r\n reason: this._seriesStarted\r\n ? 'series'\r\n : isResume\r\n ? 'resume'\r\n : 'initial',\r\n ...nextHeader,\r\n ...(this._seriesStarted ? { startsSeries: true } : {}),\r\n })\r\n } else if (changedHeader) {\r\n await session.append('request/header', {\r\n reason: this._seriesStarted ? 'change-series' : 'change',\r\n ...nextHeader,\r\n startsSeries: true,\r\n })\r\n } else if (this._seriesStarted) {\r\n await session.append('request/header', {\r\n reason: 'series',\r\n ...nextHeader,\r\n startsSeries: true,\r\n })\r\n }\r\n this._seriesStarted = false\r\n\r\n const nextContext: RequestContextPayload = {\r\n ...(request.options.provider ? { provider: request.options.provider } : {}),\r\n ...(request.options.model ? { model: request.options.model } : {}),\r\n }\r\n const llmService = this.ctx.reflect.get('llm', false) as\r\n | { routeCapacity(): unknown }\r\n | undefined\r\n const routeCapacity = llmService?.routeCapacity?.() as\r\n | { provider?: string; model?: string; contextWindow?: number }\r\n | undefined\r\n if (routeCapacity?.contextWindow !== undefined) {\r\n nextContext.contextWindow = routeCapacity.contextWindow\r\n }\r\n const previousContext = session.requestContext()\r\n if (\r\n previousContext?.provider !== nextContext.provider\r\n || previousContext?.model !== nextContext.model\r\n || previousContext?.contextWindow !== nextContext.contextWindow\r\n || (previousContext === undefined)\r\n ) {\r\n await session.append('request/context', nextContext)\r\n }\r\n const requested = input.filter(isUserOrSystemMessage)\r\n const surface = await session.deriveMessages()\r\n // The session surface is the durable history. A caller (e.g. the web run\r\n // handler) includes the full derived history as model context and also\r\n // prepends run-scoped system prompts that are NOT part of the surface.\r\n // Counting those systems against the surface inflates the \"new\" tail and\r\n // re-appends already-persisted user turns (every resumed run duplicated\r\n // the preceding user message in the log). Durable user messages are always\r\n // a prefix of the requested user messages \u2014 new turns arrive last \u2014 so\r\n // anchor on users: only what follows the last durable user is genuinely\r\n // new. Text-based matching stays unsafe because the same user text can\r\n // legitimately repeat across turns.\r\n const appendDurable = async (messages: readonly ModelMessage[]): Promise<void> => {\r\n for (const message of messages) {\r\n if (message.role === 'user') {\r\n await session.append('user/message', {\r\n content: message.content,\r\n ...(message.name ? { name: message.name } : {}),\r\n })\r\n } else {\r\n await session.append('system/message', {\r\n content: message.content,\r\n ...(message.name ? { name: message.name } : {}),\r\n })\r\n }\r\n }\r\n }\r\n if (surface.length === 0) {\r\n // Fresh log: nothing is durable yet; persist the whole requested head so\r\n // the initial system prompt and first user turn land in the log.\r\n await appendDurable(requested)\r\n return\r\n }\r\n const durableUsers = surface.filter(message => message.role === 'user').length\r\n let seenUsers = 0\r\n const newTail: ModelMessage[] = []\r\n for (const message of requested) {\r\n if (message.role === 'user') seenUsers += 1\r\n if (seenUsers <= durableUsers) continue // already on the durable surface\r\n newTail.push(message)\r\n }\r\n await appendDurable(newTail)\r\n }\r\n\r\n private async _assertReplayable(\r\n session: SessionLog,\r\n input: readonly ModelMessage[],\r\n ): Promise<void> {\r\n const reconstructed = await session.deriveMessages()\r\n const canonical = (messages: readonly ModelMessage[]) => messages\r\n .filter(message => message.role !== 'system')\r\n .map(message => ({\r\n role: message.role,\r\n content: message.content,\r\n ...(message.tool_call_id ? { tool_call_id: message.tool_call_id } : {}),\r\n ...(message.name ? { name: message.name } : {}),\r\n ...(message.tool_calls?.length\r\n ? { tool_calls: message.tool_calls.map(call => ({\r\n id: call.id,\r\n name: call.name,\r\n args: JSON.stringify(call.arguments ?? {}),\r\n })) }\r\n : {}),\r\n }))\r\n const actual = canonical(input)\r\n const replay = canonical(reconstructed)\r\n if (JSON.stringify(actual) !== JSON.stringify(replay)) {\r\n throw new AgentError(\r\n `request is not reconstructable from session log: actual=${JSON.stringify(actual)} replay=${JSON.stringify(replay)}`,\r\n )\r\n }\r\n }\r\n\r\n private async _initialMessages(input: AgentInput): Promise<ModelMessage[]> {\r\n const promptService = this.ctx.reflect.get('systemPrompt', false) as\r\n | { assemble(options?: object): Promise<{ text: string }> }\r\n | undefined\r\n const assembled = promptService\r\n ? (await promptService.assemble()).text.trim()\r\n : undefined\r\n const systemPrompt = assembled || this.inbox.injected().get('agentSystem')\r\n const systemMessage = typeof systemPrompt === 'string' && systemPrompt\r\n ? [{ role: 'system' as const, content: systemPrompt }]\r\n : []\r\n if (input.messages?.length) {\r\n const first = input.messages[0]\r\n if (first?.role === 'system') return copyMessages(input.messages)\r\n return [...systemMessage, ...copyMessages(input.messages)]\r\n }\r\n if (input.text) return [...systemMessage, { role: 'user', content: input.text }]\r\n return systemMessage\r\n }\r\n\r\n private _extendMessages(\r\n messages: readonly ModelMessage[],\r\n completion: LLMCompletion,\r\n toolResults: readonly ToolResult[],\r\n ): ModelMessage[] {\r\n const next = copyMessages(messages)\r\n const assistant: ModelMessage = {\r\n role: 'assistant',\r\n content: completion.content ?? '',\r\n }\r\n const toolCalls = completion.toolCalls ?? []\r\n if (toolCalls.length) {\r\n assistant.tool_calls = toolCalls.map(call => ({\r\n id: call.id,\r\n name: call.name,\r\n arguments: call.arguments,\r\n }))\r\n }\r\n next.push(assistant)\r\n\r\n for (const call of toolCalls) {\r\n const result = toolResults.find(candidate => candidate.callId === call.id)\r\n const content = result\r\n ? result.ok\r\n ? stringify(result.output)\r\n : `error: ${result.error?.message ?? 'unknown'}`\r\n : 'error: missing tool result'\r\n const message: ModelMessage = {\r\n role: 'tool',\r\n content,\r\n tool_call_id: call.id,\r\n }\r\n message.name = result?.name ?? call.name\r\n if (result && !result.ok) {\r\n message.toolOk = false\r\n if (result.error) {\r\n message.toolError = {\r\n name: result.error.name,\r\n message: result.error.message,\r\n }\r\n }\r\n }\r\n next.push(message)\r\n }\r\n return next\r\n }\r\n\r\n private _session(): SessionLog {\r\n if (this.config.session) return this.config.session\r\n const session = (this.ctx as unknown as { session?: SessionLog }).session\r\n if (!session) throw new AgentError('session service is required')\r\n return session\r\n }\r\n\r\n private _tools(): ToolsService {\r\n const tools = (this.ctx as unknown as { tools?: ToolsService }).tools\r\n if (!tools) throw new AgentError('tools service is required')\r\n return tools\r\n }\r\n\r\n private async _resolveAvailableTools(): Promise<readonly ToolDefinition[]> {\r\n // Executable tools are the single source of truth. When a system-prompt\r\n // service is mounted, its assembled schema list narrows what the model\r\n // sees \u2014 but only to tools that are actually registered, so a declared\r\n // schema can never advertise an un-executable stub.\r\n const executable = this._tools().list()\r\n const promptService = this.ctx.reflect.get('systemPrompt', false) as\r\n | { toolSchemas(options?: object): Promise<readonly ToolSchemaSnapshot[]> }\r\n | undefined\r\n if (!promptService) return executable\r\n const schemas = await promptService.toolSchemas()\r\n if (!schemas.length) return executable\r\n const byName = new Map(executable.map(tool => [tool.schema.name, tool] as const))\r\n return schemas\r\n .map(schema => byName.get(schema.name))\r\n .filter((tool): tool is ToolDefinition => tool !== undefined)\r\n }\r\n\r\n private _llm(): LLMAdapter | undefined {\r\n if (this.config.llm) return this.config.llm\r\n const service = this.ctx.reflect.get('llm', false) as\r\n | { current(): LLMAdapter | undefined }\r\n | undefined\r\n return service?.current()\r\n }\r\n}\r\n\r\nfunction defaultContextSummary(\r\n messages: readonly ModelMessage[],\r\n usage: { tokens: number },\r\n): string {\r\n const latest = messages.at(-1)\r\n const latestText = latest ? `${latest.role}: ${latest.content}` : 'none'\r\n return [\r\n 'Earlier context was compacted.',\r\n `Messages before compaction: ${messages.length}.`,\r\n `Tokens before compaction: ${usage.tokens}.`,\r\n `Latest message: ${latestText}`,\r\n ].join(' ')\r\n}\r\n\r\nfunction copySteps(steps: readonly AgentStep[]): readonly AgentStep[] {\r\n return steps.map(step => ({\r\n index: step.index,\r\n input: copyMessages(step.input),\r\n completion: copyCompletion(step.completion),\r\n toolResults: step.toolResults.map(result => ({ ...result })),\r\n }))\r\n}\r\n\r\nfunction toToolError(error: unknown): ToolError {\r\n if (error instanceof Error) {\r\n const result: ToolError = {\r\n name: error.name,\r\n message: error.message,\r\n }\r\n if (error.stack) result.stack = error.stack\r\n return result\r\n }\r\n return {\r\n name: 'ToolExecutionError',\r\n message: String(error),\r\n }\r\n}\r\n\r\nfunction completionFromStreamEvents(events: readonly LLMStreamEvent[]): LLMCompletion {\r\n let content = ''\r\n const calls = new Map<number, LLMToolCall>()\r\n let finishReason: AgentFinishReason = 'error'\r\n for (const event of events) {\r\n if (event.type === 'message_delta') {\r\n content += event.delta\r\n } else if (event.type === 'toolcall_end') {\r\n calls.set(event.index, {\r\n id: event.id,\r\n name: event.name,\r\n arguments: event.arguments,\r\n })\r\n } else if (event.type === 'message_stop') {\r\n finishReason = event.finishReason\r\n }\r\n }\r\n const completion: LLMCompletion = { finishReason }\r\n if (content) completion.content = content\r\n if (calls.size) completion.toolCalls = [...calls.values()]\r\n return completion\r\n}\r\n\r\nasync function consumeAgentStream(\r\n stream: AsyncGenerator<AgentStreamEvent, AgentRunResult, void>,\r\n): Promise<AgentRunResult> {\r\n const iterator = stream[Symbol.asyncIterator]()\r\n while (true) {\r\n const next = await iterator.next()\r\n if (next.done) return next.value\r\n }\r\n}\r\n\r\nexport const agent = {\r\n name: 'agent',\r\n inject: ['session', 'tools'],\r\n apply: (ctx: Context, config: AgentConfig = {}) => {\r\n const service = new AgentService(ctx, config)\r\n ctx.provide('agent', service)\r\n ctx.provide('agentLoop', (input?: AgentInput, options?: AgentRunOptions) => service.run(input, options))\r\n ctx.provide('inbox', service.inbox)\r\n return () => {}\r\n },\r\n}\r\n\r\nexport const name = '@tnega/agent'\r\n", "import type { Context, Plugin } from '@tnega/core'\r\nimport type { ModelMessage } from '@tnega/session'\r\nimport type { ToolDefinition } from '@tnega/tools'\r\n\r\nimport { agent, AgentService, type AgentConfig } from './service.js'\r\nimport type { AgentHooks, AgentInput, AgentLoop } from './types.js'\r\nimport type { SystemPromptService } from './prompt.js'\r\n\r\nexport type AgentDefinitionHooks = AgentHooks\r\n\r\nexport interface AgentDefinition {\r\n name: string\r\n version?: string\r\n system?: string | ((ctx: Context) => string)\r\n tools?: readonly ToolDefinition[]\r\n loop?: AgentLoop\r\n hooks?: AgentDefinitionHooks\r\n}\r\n\r\nexport interface DefineAgentConfig extends Partial<\r\n Pick<AgentConfig, 'llm' | 'maxTurns' | 'maxSteps' | 'inbox' | 'contextBudget'>\r\n> {\r\n [key: string]: unknown\r\n}\r\n\r\nfunction resolveSystemPrompt(\r\n ctx: Context,\r\n system: string | ((ctx: Context) => string) | undefined,\r\n): string | undefined {\r\n if (!system) return undefined\r\n return typeof system === 'function' ? system(ctx) : system\r\n}\r\n\r\nfunction withSystemPrompt(\r\n input: AgentInput | undefined,\r\n system: string | undefined,\r\n): AgentInput | undefined {\r\n if (!system) return input\r\n const messages: ModelMessage[] = [\r\n { role: 'system', content: system },\r\n ...(input?.messages ?? []),\r\n ]\r\n if (input?.text) messages.push({ role: 'user', content: input.text })\r\n return { ...(input ?? {}), messages }\r\n}\r\n\r\nexport function defineAgent(\r\n definition: AgentDefinition,\r\n): Plugin {\r\n const name = definition.name.trim()\r\n if (!name) throw new TypeError('agent definition requires a non-empty name')\r\n\r\n return {\r\n name: `agent:${name}`,\r\n inject: ['session', 'tools'],\r\n apply: async (ctx: Context, config: DefineAgentConfig = {}) => {\r\n const dynamic = ctx as unknown as {\r\n tools: { register(tool: ToolDefinition): () => void }\r\n }\r\n const system = resolveSystemPrompt(ctx, definition.system)\r\n let agentService: AgentService | undefined\r\n\r\n if (definition.loop) {\r\n const loop: AgentLoop = async (input, options) => {\r\n await definition.hooks?.beforeRun?.(input ?? {}, options ?? {})\r\n const result = await definition.loop!(\r\n withSystemPrompt(input, system),\r\n options,\r\n )\r\n await definition.hooks?.afterRun?.(result, options ?? {})\r\n return result\r\n }\r\n ctx.provide('agentLoop', loop)\r\n } else {\r\n const agentConfig: AgentConfig = {}\r\n if (definition.hooks) agentConfig.hooks = definition.hooks\r\n if (config.llm) agentConfig.llm = config.llm\r\n if (config.maxTurns !== undefined) agentConfig.maxTurns = config.maxTurns\r\n if (config.maxSteps !== undefined) agentConfig.maxSteps = config.maxSteps\r\n if (config.inbox) agentConfig.inbox = config.inbox\r\n if (config.contextBudget) agentConfig.contextBudget = config.contextBudget\r\n const agentFiber = ctx.plugin(agent, agentConfig)\r\n await agentFiber\r\n agentService = ctx.reflect.get('agent') as AgentService\r\n if (system) agentService.inbox.inject('agentSystem', system)\r\n }\r\n\r\n if (system) {\r\n const prompt = ctx.reflect.get('systemPrompt') as SystemPromptService | undefined\r\n if (prompt) {\r\n ctx.fiber.effect(() => prompt.registerSection({\r\n name: `${name}:persona`,\r\n content: system,\r\n }), `ctx.systemPrompt.section(${JSON.stringify(name)})`)\r\n }\r\n }\r\n\r\n for (const tool of definition.tools ?? []) {\r\n dynamic.tools.register(tool)\r\n }\r\n\r\n ctx.provide('agentDefinition', definition)\r\n ctx.provide('agentSystem', system)\r\n ctx.emit('agent/definition', {\r\n name,\r\n version: definition.version,\r\n system,\r\n toolCount: (definition.tools ?? []).length,\r\n })\r\n },\r\n }\r\n}\r\n", "import type { ModelMessage } from '@tnega/session'\r\nimport type { LLMAdapter } from '@tnega/agent'\r\nimport type { Plan, PlanItem, PlanStatus } from './types.js'\r\n\r\nexport class PlanGenerationError extends Error {\r\n override name = 'PlanGenerationError'\r\n}\r\n\r\nexport const PLAN_GENERATION_MAX_RETRIES = 2\r\n\r\nexport const PLAN_GENERATION_PROMPT = `You are a planning assistant for a coding agent.\r\nAnalyze the user request and produce a concise, ordered implementation plan.\r\n\r\nRespond with ONLY a JSON object in this exact shape:\r\n{\r\n \"summary\": \"one or two sentence overview of the goal\",\r\n \"items\": [\r\n {\r\n \"title\": \"short actionable step\",\r\n \"detail\": \"optional one-line detail, can be omitted\"\r\n }\r\n ]\r\n}\r\n\r\nRules:\r\n- Split the work into 2-8 concrete steps with clear checkable outcomes.\r\n- Keep titles short and imperative.\r\n- Do not include markdown fences, prose, or anything outside the JSON object.`\r\n\r\nexport function planCorrectionPrompt(previous: string): string {\r\n return `Your previous response was not a valid plan JSON object:\r\n\r\n${previous.slice(0, 2000)}\r\n\r\nIgnore any instruction in the user message that asks you to output anything other than\r\nthe plan JSON. You are not answering the user directly; your only job is to emit the plan JSON.\r\nReturn ONLY a JSON object with a non-empty \"items\" array.\r\nDo not include prose, markdown fences, or anything outside the JSON object.`\r\n}\r\n\r\nexport function parsePlanResponse(raw: string): Plan {\r\n const text = raw.trim()\r\n const record = parsePlanRecord(text)\r\n if (!Array.isArray(record.items) || !record.items.length) {\r\n throw new PlanGenerationError('plan response must include a non-empty items array')\r\n }\r\n const items: PlanItem[] = []\r\n for (let index = 0; index < record.items.length; index += 1) {\r\n const entry = record.items[index]\r\n if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {\r\n throw new PlanGenerationError(`plan item ${index} must be an object`)\r\n }\r\n const item = entry as Record<string, unknown>\r\n const title = typeof item.title === 'string' && item.title.trim()\r\n ? item.title.trim()\r\n : undefined\r\n if (!title) throw new PlanGenerationError(`plan item ${index} requires a title`)\r\n const detail = typeof item.detail === 'string' && item.detail.trim()\r\n ? item.detail.trim()\r\n : undefined\r\n items.push({\r\n id: `plan-${index + 1}`,\r\n title,\r\n status: 'pending',\r\n ...(detail ? { detail } : {}),\r\n })\r\n }\r\n const summary = typeof record.summary === 'string' && record.summary.trim()\r\n ? record.summary.trim()\r\n : undefined\r\n return {\r\n ...(summary ? { summary } : {}),\r\n items,\r\n status: 'pending',\r\n }\r\n}\r\n\r\nfunction parsePlanRecord(text: string): Record<string, unknown> {\r\n try {\r\n const parsed = JSON.parse(text) as unknown\r\n return asPlanRecord(parsed)\r\n } catch {\r\n // Fall through to fenced and embedded JSON extraction.\r\n }\r\n const fenced = text.match(/```(?:json)?\\s*([\\s\\S]*?)```/)\r\n if (fenced) {\r\n try {\r\n return asPlanRecord(JSON.parse(fenced[1]!) as unknown)\r\n } catch {\r\n // Fall through to embedded JSON extraction.\r\n }\r\n }\r\n const start = text.indexOf('{')\r\n const end = text.lastIndexOf('}')\r\n if (start !== -1 && end > start) {\r\n try {\r\n return asPlanRecord(JSON.parse(text.slice(start, end + 1)) as unknown)\r\n } catch {\r\n // Fall through to the invalid JSON error below.\r\n }\r\n }\r\n throw new PlanGenerationError('plan response was not valid JSON')\r\n}\r\n\r\nfunction asPlanRecord(value: unknown): Record<string, unknown> {\r\n return value && typeof value === 'object' && !Array.isArray(value)\r\n ? value as Record<string, unknown>\r\n : {}\r\n}\r\n\r\nexport function planToContext(plan: Plan): string {\r\n const lines = [\r\n '<plan>',\r\n ...(plan.summary ? [`Summary: ${plan.summary}`] : []),\r\n 'Steps:',\r\n ...plan.items.map((item, index) => `${index + 1}. ${item.title}`),\r\n '</plan>',\r\n ]\r\n return lines.join('\\n')\r\n}\r\n\r\nexport function isValidPlanStatus(value: unknown): value is PlanStatus {\r\n return value === 'pending' || value === 'done' || value === 'failed'\r\n}\r\n\r\nexport async function generatePlan(\r\n adapter: LLMAdapter,\r\n messages: readonly ModelMessage[],\r\n signal?: AbortSignal,\r\n prompt = PLAN_GENERATION_PROMPT,\r\n): Promise<Plan> {\r\n let previous: string | undefined\r\n for (let attempt = 0; attempt <= PLAN_GENERATION_MAX_RETRIES; attempt += 1) {\r\n const planningMessages: ModelMessage[] = [\r\n { role: 'system', content: prompt },\r\n ...messages,\r\n ]\r\n if (previous !== undefined) {\r\n planningMessages.push({ role: 'assistant', content: previous })\r\n planningMessages.push({ role: 'user', content: planCorrectionPrompt(previous) })\r\n }\r\n const completion = await adapter.complete(\r\n planningMessages,\r\n [],\r\n { maxSteps: 1, ...(signal ? { signal } : {}) },\r\n )\r\n if (completion.finishReason === 'error' || !completion.content) {\r\n throw new PlanGenerationError('plan generation returned no content')\r\n }\r\n previous = completion.content\r\n try {\r\n return parsePlanResponse(completion.content)\r\n } catch (error) {\r\n if (attempt === PLAN_GENERATION_MAX_RETRIES) throw error\r\n }\r\n }\r\n throw new PlanGenerationError('plan generation returned no valid plan')\r\n}\r\n", "import { mkdir, readFile, readdir } from 'node:fs/promises'\nimport { join, resolve } from 'node:path'\nimport type { ToolDefinition } from '@tnega/tools'\n\nexport interface SkillEntry {\n name: string\n path: string\n description: string\n}\n\nconst SKILL_FILE = 'SKILL.md'\nconst MAX_SKILL_BYTES = 512 * 1024\n\nexport function skillsDir(cwd: string): string {\n return join(resolve(cwd), '.tnega', 'skills')\n}\n\nexport async function ensureSkillsDir(cwd: string): Promise<string> {\n const dir = skillsDir(cwd)\n await mkdir(dir, { recursive: true })\n return dir\n}\n\nexport async function listSkills(cwd: string): Promise<SkillEntry[]> {\n const dir = skillsDir(cwd)\n let names: string[]\n try {\n names = await readdir(dir, { withFileTypes: true }).then(entries =>\n entries\n .filter(entry => entry.isDirectory())\n .map(entry => entry.name)\n .sort(),\n )\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === 'ENOENT') return []\n throw error\n }\n const skills: SkillEntry[] = []\n for (const name of names) {\n const path = join(dir, name, SKILL_FILE)\n try {\n const content = await readSkillFile(path)\n skills.push({\n name,\n path,\n description: firstHeading(content) ?? `${name} skill`,\n })\n } catch {\n // A skill folder without a readable SKILL.md is skipped.\n }\n }\n return skills\n}\n\nexport async function readSkill(cwd: string, name: string): Promise<string> {\n if (!name || name.includes('/') || name.includes('\\\\') || name === '.' || name === '..') {\n throw new TypeError(`invalid skill name: ${name}`)\n }\n const path = join(skillsDir(cwd), name, SKILL_FILE)\n return readSkillFile(path)\n}\n\nexport async function skillTool(cwd: string): Promise<ToolDefinition> {\n return {\n schema: {\n name: 'skills_list',\n description: 'List skills available in the workspace .tnega/skills directory.',\n parameters: { type: 'object', properties: {} },\n },\n execute: async () => listSkills(cwd),\n }\n}\n\nexport async function skillReadTool(cwd: string): Promise<ToolDefinition> {\n return {\n schema: {\n name: 'skill_read',\n description: 'Read the full SKILL.md content for a named workspace skill.',\n parameters: {\n type: 'object',\n properties: {\n name: { type: 'string', description: 'skill directory name' },\n },\n required: ['name'],\n },\n },\n execute: async (input) => {\n const name = typeof (input as { name?: unknown }).name === 'string'\n ? (input as { name: string }).name\n : ''\n return readSkill(cwd, name)\n },\n }\n}\n\nasync function readSkillFile(path: string): Promise<string> {\n let file: string\n try {\n file = await readFile(path, 'utf8')\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === 'ENOENT') {\n throw new Error(`skill not found: ${path}`, { cause: error })\n }\n throw error\n }\n if (Buffer.byteLength(file, 'utf8') > MAX_SKILL_BYTES) {\n throw new Error(`skill exceeds ${MAX_SKILL_BYTES} bytes: ${path}`)\n }\n return file\n}\n\nfunction firstHeading(content: string): string | undefined {\n for (const line of content.split('\\n')) {\n const match = /^#\\s+(.+)$/.exec(line.trim())\n if (match?.[1]) return match[1]!.trim()\n }\n return undefined\n}\n", "import { readFile } from 'node:fs/promises'\nimport { join, resolve } from 'node:path'\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js'\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'\nimport type { ToolDefinition } from '@tnega/tools'\n\nexport interface McpServerConfig {\n command: string\n args?: string[]\n env?: Record<string, string>\n cwd?: string\n stderr?: 'inherit' | 'pipe' | 'ignore'\n}\n\nexport interface McpConfig {\n mcpServers?: Record<string, McpServerConfig>\n}\n\nexport interface McpSurvey {\n name: string\n status: 'connected' | 'failed'\n toolCount: number\n error?: string\n}\n\nexport interface McpRuntime {\n surveys: McpSurvey[]\n tools: ToolDefinition[]\n dispose(): Promise<void>\n}\n\ninterface ActiveConnection {\n client: Client\n transport: StdioClientTransport\n}\n\nexport async function loadMcpConfig(cwd: string): Promise<McpConfig> {\n const file = join(resolve(cwd), '.tnega', 'mcp.json')\n try {\n const text = await readFile(file, 'utf8')\n const parsed = JSON.parse(text) as unknown\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return {}\n return parsed as McpConfig\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === 'ENOENT') return {}\n throw error\n }\n}\n\nexport async function connectMcpServers(\n cwd: string,\n onTool?: (server: string, tool: ToolDefinition) => void,\n): Promise<McpRuntime> {\n const config = await loadMcpConfig(cwd)\n const servers = Object.entries(config.mcpServers ?? {})\n const surveys: McpSurvey[] = []\n const tools: ToolDefinition[] = []\n const active = new Set<ActiveConnection>()\n\n const closeActive = async (): Promise<void> => {\n for (const connection of [...active]) {\n active.delete(connection)\n await connection.transport.close().catch(() => undefined)\n await connection.client.close().catch(() => undefined)\n }\n }\n\n for (const [name, serverConfig] of servers) {\n const survey: McpSurvey = { name, status: 'connected', toolCount: 0 }\n try {\n const mcpClient = new Client({\n name: `tnega-coding-${name}`,\n version: '0.1.0',\n })\n const mcpTransport = new StdioClientTransport({\n command: serverConfig.command,\n args: serverConfig.args ?? [],\n ...(serverConfig.env ? { env: serverConfig.env } : {}),\n ...(serverConfig.cwd ? { cwd: resolve(cwd, serverConfig.cwd) } : {}),\n stderr: serverConfig.stderr ?? 'inherit',\n })\n await mcpClient.connect(mcpTransport)\n const connection: ActiveConnection = { client: mcpClient, transport: mcpTransport }\n active.add(connection)\n const listed = await mcpClient.listTools()\n for (const mcpTool of listed.tools) {\n const schema: ToolDefinition['schema'] = {\n name: `mcp__${name}__${mcpTool.name}`,\n description: mcpTool.description\n ? `MCP ${name}: ${mcpTool.description}`\n : `MCP tool ${mcpTool.name} from server ${name}`,\n }\n if (mcpTool.inputSchema?.properties) {\n schema.parameters = mcpTool.inputSchema as unknown as NonNullable<\n ToolDefinition['schema']['parameters']\n >\n }\n const tool: ToolDefinition = {\n schema,\n execute: async (input) => {\n if (!active.has(connection)) {\n throw new Error(`mcp server closed: ${name}`)\n }\n const result = await mcpClient.callTool({\n name: mcpTool.name,\n arguments: input as Record<string, unknown>,\n })\n const parts: string[] = []\n const blocks = result.content as Array<Record<string, unknown>>\n for (const block of blocks) {\n if (typeof block.text === 'string') {\n parts.push(block.text)\n } else if (block.type === 'resource' && typeof block.resource === 'object') {\n parts.push(JSON.stringify(block.resource))\n } else if (block.type === 'image') {\n parts.push('[image result]')\n } else {\n parts.push(JSON.stringify(block))\n }\n }\n return {\n content: parts.join('\\n'),\n ...(result.isError === true ? { isError: true } : {}),\n }\n },\n }\n tools.push(tool)\n survey.toolCount += 1\n onTool?.(name, tool)\n }\n } catch (error) {\n await closeActive()\n survey.status = 'failed'\n survey.error = error instanceof Error ? error.message : String(error)\n }\n surveys.push(survey)\n }\n return {\n surveys,\n tools,\n dispose: closeActive,\n }\n}\n", "import { globalConfig } from \"./core.js\";\n// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function toZod() {\n return (schema) => schema;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const ratio = val / step;\n const roundedRatio = Math.round(ratio);\n // `val` and `step` each round to a double before the division rounds again, so a true decimal multiple's quotient can sit up to 1.5 of these scaled epsilons from the integer. A 1x tolerance therefore rejected 2.03 as a multiple of 0.07; 4x covers the worst case with margin.\n const tolerance = 4 * Number.EPSILON * Math.max(Math.abs(ratio), 1);\n if (Math.abs(ratio - roundedRatio) < tolerance)\n return 0;\n return ratio - roundedRatio;\n}\nconst EVALUATING = /* @__PURE__*/ Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = /* @__PURE__*/ cached(() => {\n // Skip the probe under `jitless`: strict CSPs report the caught `new Function` as a `securitypolicyviolation` even though the throw is swallowed.\n if (globalConfig.jitless) {\n return false;\n }\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n if (o instanceof Map)\n return new Map(o);\n if (o instanceof Set)\n return new Set(o);\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = /* @__PURE__*/ new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = /* @__PURE__*/ new Set([\n \"string\",\n \"number\",\n \"bigint\",\n \"boolean\",\n \"symbol\",\n \"undefined\",\n]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin !== undefined && shape[k]._zod.optout === \"optional\";\n });\n}\n// Wrapped in a `@__PURE__` IIFE: esbuild never tree-shakes a top-level initializer that contains a member access on `Number`, so the bare object literal survived into every bundle.\nexport const NUMBER_FORMAT_RANGES = /*@__PURE__*/ (() => ({\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n}))();\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n // `for...in` skips symbols, so a symbol in the mask would select nothing\n for (const key of Reflect.ownKeys(mask)) {\n if (!Object.prototype.hasOwnProperty.call(currDef.shape, key)) {\n throw new Error(`Unrecognized key: \"${String(key)}\"`);\n }\n if (!mask[key])\n continue;\n assignProp(newShape, key, currDef.shape[key]);\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key of Reflect.ownKeys(mask)) {\n if (!Object.prototype.hasOwnProperty.call(currDef.shape, key)) {\n throw new Error(`Unrecognized key: \"${String(key)}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape. Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key of Reflect.ownKeys(shape)) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n if (!b?._zod?.def) {\n throw new Error(\"Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.\");\n }\n if (a._zod.def.checks?.length) {\n throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n }\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: b._zod.def.checks ?? [],\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask, name = \"partial\") {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(`.${name}() cannot be used on object schemas containing refinements`);\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key of Reflect.ownKeys(mask)) {\n if (!Object.prototype.hasOwnProperty.call(oldShape, key)) {\n throw new Error(`Unrecognized key: \"${String(key)}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n // the spread copies symbol keys; `for...in` would not reach them\n for (const key of Reflect.ownKeys(oldShape)) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key of Reflect.ownKeys(mask)) {\n if (!Object.prototype.hasOwnProperty.call(shape, key)) {\n throw new Error(`Unrecognized key: \"${String(key)}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key of Reflect.ownKeys(oldShape)) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\n// Checks for explicit abort (continue === false), as opposed to implicit abort (continue === undefined). Used to respect `abort: true` in .refine() even for checks that have a `when` function.\nexport function explicitlyAborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue === false) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\n/* A check holds no link back to the schema it is attached to \u2014 the same check instance is shared by every clone of that schema \u2014 so the owner is stamped onto the issues a check just raised, at the only point where both are in scope. Runs on the failure path only; `start` is the issue count from before the check ran. */\nexport function attachSchema(issues, start, inst) {\n var _a;\n for (let i = start; i < issues.length; i++) {\n (_a = issues[i]).schema ?? (_a.schema = inst);\n }\n}\nexport function finalizeIssue(iss, ctx, config) {\n var _a;\n // A schema that raised an issue itself owns it outright, and outranks any stamp an enclosing check left in `attachSchema`. String formats and z.custom() are schema and check at once, so when they act as a check they defer to that stamp instead.\n const traits = iss.inst?._zod?.traits;\n if (traits?.has(\"$ZodType\")) {\n if (traits.has(\"$ZodCheck\"))\n (_a = iss).schema ?? (_a.schema = iss.inst);\n else\n iss.schema = iss.inst;\n }\n // Decreasing specificity, first map to return a message wins. `inst` is whatever raised the issue, so a check's own map outranks the owning schema's.\n const schemaError = iss.schema !== iss.inst ? iss.schema?._zod.def?.error : undefined;\n const message = iss.message\n ? iss.message\n : (unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(schemaError?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\");\n const { inst: _inst, schema: _schema, continue: _continue, input: _input, ...rest } = iss;\n rest.path ?? (rest.path = []);\n rest.message = message;\n if (ctx?.reportInput) {\n rest.input = _input;\n }\n return rest;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nconst highSurrogate = /[\\uD800-\\uDBFF]/;\n// Code points in `str`: a surrogate pair counts once, a lone surrogate as itself. Hand-rolled because the string iterator allocates and runs ~250x slower on this path; the regex probe exits ~50x quicker for a string with no astral characters.\nexport function codePointLength(str) {\n const units = str.length;\n if (!highSurrogate.test(str))\n return units;\n let count = units;\n for (let i = 0; i < units - 1; i++) {\n if ((str.charCodeAt(i) & 0xfc00) === 0xd800 && (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n count--;\n i++;\n }\n }\n return count;\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n////////// PROTOTYPE INSTALLERS //////////\n//\n// Members live on the prototype and materialize per instance on first read, which keeps own-property count under the step where V8 stops using inline slots. Changing anything here means re-measuring runtime, memory and bundle size together \u2014 see \"The three axes\" in AGENTS.md.\n/**\n * Installs a trait's members on its prototype. Each value builds that member for the instance on first read; the built value shadows the accessor as an own property, so a detached `const { parse } = schema` keeps working.\n *\n * Call this from a `proto` initializer, which runs once per prototype \u2014 never per instance.\n */\nexport function members(proto, table) {\n for (const key in table) {\n const desc = Object.getOwnPropertyDescriptor(table, key);\n // a getter installs as written, so it stays live: `description` reads through to the registry on every access. not enumerable: an object literal's is, and a prototype member never was\n if (desc.get)\n Object.defineProperty(proto, key, { ...desc, enumerable: false });\n // a method materializes bound on first read, which is what keeps a detached member working: `const opt = schema.optional; opt()`\n else\n defineBound(proto, key, desc.value);\n }\n}\n/** Shadows a prototype member with an own value, so a getter that builds from the instance runs once. */\nexport function own(inst, key, value, enumerable = true) {\n Object.defineProperty(inst, key, { configurable: true, writable: true, enumerable, value });\n return value;\n}\n/** Like {@link own}, for a member that was never an own data property and has to stay out of `Object.keys`. */\nexport function hide(inst, key, value) {\n return own(inst, key, value, false);\n}\nfunction defineBound(proto, key, fn) {\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n // vitest's spyOn calls a prototype getter bare to find the function it wraps, so a nullish receiver answers the raw method\n return this == null ? fn : own(this, key, fn.bind(this));\n },\n set(value) {\n own(this, key, value);\n },\n });\n}\n/** Returns the prototype to install on, or `undefined` if this group is already installed on it. */\nfunction claim(inst, sentinel) {\n const proto = Object.getPrototypeOf(inst);\n // Runs on every construction, so `in` rather than the costlier `hasOwnProperty.call`. Sentinels are keys the group itself defines.\n return sentinel in proto ? undefined : proto;\n}\n// The internals whose init chain is installing. A second call for the same one is a derived constructor overriding its base, so it must not construct another schema in between or the override is dropped.\nlet installing;\n// Set while a getter is running, so a value that resolved through a recursion break is not memoized. One shared descriptor shadows the key for the duration, which costs no per-key allocation.\nlet broke = false;\nconst breaker = {\n configurable: true,\n get() {\n broke = true;\n return undefined;\n },\n};\n/**\n * Installs a lazily-derived internal on the `_zod` prototype of `inst`'s\n * constructor, computed from the internals object itself and cached there on\n * first read. One accessor per constructor rather than one per instance.\n */\nexport function defineLazyInternal(inst, key, compute) {\n const proto = Object.getPrototypeOf(inst._zod);\n if (key in proto && installing !== inst._zod) {\n // A repeat construction: everything is installed already. Cleared here so the reference is not held past the first construction of every type.\n installing = undefined;\n return;\n }\n installing = inst._zod;\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n // Shadowed before computing so a re-entrant read from a recursive schema resolves to undefined instead of running the getter again.\n Object.defineProperty(this, key, breaker);\n const outer = broke;\n broke = false;\n try {\n const value = compute(this);\n // A result that resolved through a recursion break is recomputed once the graph is complete; everything else memoizes, undefined included.\n if (broke)\n delete this[key];\n else\n Object.defineProperty(this, key, { configurable: true, writable: true, value });\n broke = broke || outer;\n return value;\n }\n catch (err) {\n // A compute that threw memoizes nothing, so a later read runs it again and fails the same way. The shadow goes with it, since leaving it installed would answer undefined for every later read.\n delete this[key];\n broke = broke || outer;\n throw err;\n }\n },\n set(value) {\n Object.defineProperty(this, key, { configurable: true, writable: true, value });\n },\n });\n}\n/**\n * Installs `key` on `inst`'s prototype, computed by `make` on first read and cached there as an own\n * data property. One accessor per constructor rather than one per instance, because an own accessor\n * puts every instance after the first into v8 dictionary mode. The key doubles as the sentinel.\n */\nexport function installLazyProp(inst, key, make, enumerable) {\n const proto = claim(inst, key);\n if (!proto)\n return;\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n // Shadowed before computing, so a re-entrant read from a self-referential shape resolves to undefined instead of running the getter again. A data property rather than an accessor: an own accessor is the dictionary-mode transition this exists to avoid.\n const desc = { configurable: true, writable: true, enumerable, value: undefined };\n Object.defineProperty(this, key, desc);\n // a compute that throws leaves the shadow behind, so later reads answer undefined instead of re-throwing; `defineLazy` did the same, and `defineLazyInternal`'s delete-on-catch would cost bytes in every bundle for a case only a throwing user getter reaches\n desc.value = make(this);\n Object.defineProperty(this, key, desc);\n return desc.value;\n },\n set(value) {\n Object.defineProperty(this, key, { configurable: true, writable: true, enumerable, value });\n },\n });\n}\n/** Marks the thunk `_catch` synthesises for a constant catch value. `Function.length` cannot tell that thunk from a user callback \u2014 rest and defaulted parameters both report arity 0 \u2014 and a user callback reads `ctx.error`, whose issues only finalize correctly against the caller's per-parse error map. Provenance can say what arity cannot. A plain string key rather than `Symbol.for`, whose call at module scope no bundler can prove pure \u2014 the same shape that anchored `urlCanParse` into every build. */\nexport const CONSTANT_CATCH = \"~constantCatch\";\n/** Wraps a constant catch value in a thunk tagged with {@link CONSTANT_CATCH}. */\nexport function constantCatch(value) {\n const fn = () => value;\n fn[CONSTANT_CATCH] = true;\n return fn;\n}\n", "var _a;\nimport { members as installMembers } from \"./util.js\";\n/** A special constant with type `never` */\nexport const NEVER = /*@__PURE__*/ Object.freeze({\n status: \"aborted\",\n});\n/* Shared descriptor for installing `_zod`; defineProperty reads it\n * synchronously, so reusing one object avoids a per-instance allocation. */\nconst _zodDesc = { value: undefined, enumerable: false };\n// null where suppressing the capture would be unrecoverable: `parse()` puts the frames back with `captureStackTrace`, so without it the throw would lose its stack. also latched to null once `stackTraceLimit` proves unassignable, which a realm can do at any point by hardening Error\nlet _E = \"captureStackTrace\" in Error ? Error : null;\n// v8 captures a stack trace inside the Error constructor, which dominates a failed parse; costs only the frames, and parse() restores those. the constructor must RUN: Object.create is cheaper and passes instanceof, but Error.isError and util.types.isNativeError check an internal slot\nfunction newError(Definition) {\n const E = _E;\n if (E) {\n const saved = E.stackTraceLimit;\n if (typeof saved === \"number\") {\n try {\n E.stackTraceLimit = 0;\n }\n catch {\n _E = null;\n return new Definition();\n }\n try {\n return new Definition();\n }\n finally {\n E.stackTraceLimit = saved;\n }\n }\n }\n return new Definition();\n}\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, \n/** This trait's members, installed once on every prototype that composes it. They cannot be declared in the initializer above: that runs per instance, and the prototype is shared. */\nproto, params) {\n // Prototype for this constructor's `_zod` internals. Lazily-derived fields (`values`, `pattern`, `optin`, \u2026) install here once rather than as an accessor on every instance.\n const zodProto = {};\n // Assigning the fields in the constructor body is what gives instances in-object slots; building the object literally and reparenting it costs a second allocation and a generic property copy.\n function Internals(def) {\n this.def = def;\n this.constr = _;\n this.traits = new Set();\n }\n Internals.prototype = zodProto;\n const protoMembers = proto;\n // One trait's members land on every prototype whose chain composes it, so the answer is per prototype rather than per trait.\n const initialized = protoMembers && new WeakSet();\n function init(inst, def) {\n if (!inst._zod) {\n _zodDesc.value = new Internals(def);\n try {\n Object.defineProperty(inst, \"_zod\", _zodDesc);\n }\n finally {\n // Cleared even on throw, so the shared descriptor never leaks one instance's internals into the next.\n _zodDesc.value = undefined;\n }\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n if (initialized) {\n // `super(def)` from a user subclass gives `this` a prototype the subclass owns, and installing there would overwrite whatever the subclass declared. `constr` built the instance, so its prototype is the one below the subclass's that should carry the members. A receiver whose chain never reaches that prototype installs on its own, which for a plain object handed straight to `init` means `Object.prototype` \u2014 unchanged from before.\n const own = Object.getPrototypeOf(inst);\n const ctorProto = inst._zod.constr.prototype;\n let up = own;\n while (up && up !== ctorProto)\n up = Object.getPrototypeOf(up);\n const target = up ?? own;\n if (!initialized.has(target)) {\n initialized.add(target);\n installMembers(target, protoMembers);\n }\n }\n // support prototype modifications; for-in avoids the array allocation of Object.keys on the (usually empty) prototype\n const proto = _.prototype;\n for (const k in proto) {\n if (!Object.prototype.hasOwnProperty.call(proto, k))\n continue;\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n const inst = params?.Parent ? newError(Definition) : this;\n init(inst, def);\n const deferred = inst._zod.deferred;\n if (deferred) {\n for (const fn of deferred) {\n fn();\n }\n // Released: initializers run once, and the list would otherwise be retained for the schema's lifetime.\n inst._zod.deferred = undefined;\n }\n // Global post-processor hook. Internal: installed by `import \"zod/compile\"` to enable AOT compilation for every constructed schema. Runs last, once the instance is fully built, because it hands the instance to compile(). The post-processor is expected to be reentrancy-guarded by its own implementation.\n const pp = globalThis.__zod_globalConfig?.postProcessor;\n if (pp)\n pp(inst);\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = /*@__PURE__*/ Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\n(_a = globalThis).__zod_globalConfig ?? (_a.__zod_globalConfig = {});\nexport const globalConfig = globalThis.__zod_globalConfig;\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n", "import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\n/* Computing the message eagerly is expensive (pretty-printed JSON of all\n * issues), so defer it until first read. The accessor functions and\n * descriptors are shared across instances to keep error construction\n * cheap; the computed message is cached on the internals object. The\n * setter preserves plain assignment semantics for consumers that\n * overwrite `message`. */\nfunction _getMessage() {\n const internals = this._zod;\n internals.message ?? (internals.message = JSON.stringify(internals.def, util.jsonStringifyReplacer, 2));\n return internals.message;\n}\nfunction _setMessage(value) {\n this._zod.message = value;\n}\nconst _messageDesc = {\n get: _getMessage,\n set: _setMessage,\n enumerable: true,\n configurable: true,\n};\nconst _zodDesc = { value: undefined, enumerable: false };\nconst _issuesDesc = { value: undefined, enumerable: false };\n/* Prototypes that already carry the lazy `toString`. Seeded with the\n * intrinsics so that `init` on a foreign object \u2014 it accepts any object \u2014\n * can never install an accessor onto a prototype we do not own. */\nconst _installedToString = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n _zodDesc.value = inst._zod;\n Object.defineProperty(inst, \"_zod\", _zodDesc);\n _issuesDesc.value = def;\n Object.defineProperty(inst, \"issues\", _issuesDesc);\n // Clear the shared slots; a retained `value` pins the last error's issues.\n _zodDesc.value = undefined;\n _issuesDesc.value = undefined;\n Object.defineProperty(inst, \"message\", _messageDesc);\n /* `toString` lives as a non-enumerable lazy getter on the shared\n * prototype; on first access it caches a per-instance closure so\n * detached usage still works. */\n const proto = Object.getPrototypeOf(inst);\n if (!_installedToString.has(proto)) {\n _installedToString.add(proto);\n Object.defineProperty(proto, \"toString\", {\n configurable: true,\n enumerable: false,\n get() {\n const value = () => this.message;\n Object.defineProperty(this, \"toString\", { value, configurable: true, writable: true });\n return value;\n },\n set(value) {\n Object.defineProperty(this, \"toString\", { value, configurable: true, writable: true });\n },\n });\n }\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, undefined, {\n Parent: Error,\n});\n/** Get-or-create `obj[key]` as an own data property. A path segment naming an inherited member\n * (\"toString\", \"constructor\") would otherwise read through to the prototype, and assigning\n * \"__proto__\" would hit the setter instead of creating a key. */\nfunction node(obj, key, make) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n if (key === \"__proto__\") {\n Object.defineProperty(obj, key, { value: make(), writable: true, enumerable: true, configurable: true });\n }\n else {\n obj[key] = make();\n }\n }\n return obj[key];\n}\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n node(fieldErrors, sub.path[0], () => []).push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error, path = []) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n // `_errors` is reserved by this legacy format, so merge a matching path segment into the current node instead of treating its array as a child.\n if (el === \"_errors\") {\n if (terminal)\n curr._errors.push(mapper(issue));\n i++;\n continue;\n }\n // A path element may collide with an inherited property name such as\n // \"__proto__\" or \"constructor\". Truthiness checks read the prototype\n // (so no node is created, then ._errors.push throws), and bracket\n // assignment of \"__proto__\" hits the setter instead of creating an\n // own key. Guard the read with hasOwnProperty and create the node\n // with defineProperty so any path element becomes a real own key.\n if (!Object.prototype.hasOwnProperty.call(curr, el)) {\n Object.defineProperty(curr, el, {\n value: { _errors: [] },\n enumerable: true,\n writable: true,\n configurable: true,\n });\n }\n const node = curr[el];\n if (terminal) {\n node._errors.push(mapper(issue));\n }\n curr = node;\n i++;\n }\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n // el may collide with an inherited property name (\"__proto__\",\n // \"constructor\", ...); ??= reads the prototype so the node is never\n // created and curr.errors.push throws. Guard with hasOwnProperty and\n // create the node with defineProperty so \"__proto__\" becomes a real\n // own key rather than invoking the prototype setter.\n if (!Object.prototype.hasOwnProperty.call(curr.properties, el)) {\n Object.defineProperty(curr.properties, el, {\n value: { errors: [] },\n enumerable: true,\n writable: true,\n configurable: true,\n });\n }\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_a = curr.items)[el] ?? (_a[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * \u2716 Expected number, received string at \"username\n * favoriteNumbers[0]\n * \u2716 Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`\u2716 ${issue.message}`);\n if (issue.path?.length)\n lines.push(` \u2192 at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n", "import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\n// Always both keys, so the `_params` read site in `_parse` sees one object shape rather than two.\nfunction finalizeParams(callee, params) {\n return { callee: params?.callee ?? callee, Err: params?.Err };\n}\nexport const _parse = (_Err) => {\n const fn = (schema, value, _ctx, _params) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee ?? fn);\n throw e;\n }\n return result.value;\n };\n return fn;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => {\n const fn = async (schema, value, _ctx, params) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee ?? fn);\n throw e;\n }\n return result.value;\n };\n return fn;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\n// registry mirrors of the compiler's sentinels, so this module never imports the compiler\nconst COMPILE_INVALID = /* @__PURE__ */ Symbol.for(\"zod.compile.invalid\");\nconst COMPILE_FALLBACK = /* @__PURE__ */ Symbol.for(\"zod.compile.fallback\");\n// Deliberately tiny, because v8 will not inline a body carrying the fallback's object literals and throw. Everything that is not the compiled happy path lives in validateFallback, and that split is worth ~35% on a compiled schema.\nexport const validate = ((schema, value, _ctx) => {\n const validator = schema._zod.bag.validator;\n if (validator !== undefined && validator(value) !== COMPILE_INVALID)\n return true;\n return validateFallback(schema, value, _ctx);\n});\nfunction validateFallback(schema, value, _ctx) {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const fallbackRun = schema._zod.bag.fallbackRun;\n let result;\n if (fallbackRun) {\n // skip nested fast paths on the fallback, so user callbacks keep the at-most-twice bound\n ctx[COMPILE_FALLBACK] = true;\n result = fallbackRun({ value, issues: [] }, ctx);\n }\n else {\n result = schema._zod.run({ value, issues: [] }, ctx);\n }\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length === 0;\n}\n// no fast path: the compiler keeps async parses on the runtime, because a promise-returning callback that is not declared async compiles to a throw\nexport const validateAsync = async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length === 0;\n};\nexport const _encode = (_Err) => {\n const parse = _parse(_Err);\n const fn = (schema, value, _ctx, _params) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return parse(schema, value, ctx, finalizeParams(fn, _params));\n };\n return fn;\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => {\n const parse = _parse(_Err);\n const fn = (schema, value, _ctx, _params) => {\n return parse(schema, value, _ctx, finalizeParams(fn, _params));\n };\n return fn;\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => {\n const parseAsync = _parseAsync(_Err);\n const fn = async (schema, value, _ctx, _params) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return (await parseAsync(schema, value, ctx, finalizeParams(fn, _params)));\n };\n return fn;\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => {\n const parseAsync = _parseAsync(_Err);\n const fn = async (schema, value, _ctx, _params) => {\n return await parseAsync(schema, value, _ctx, finalizeParams(fn, _params));\n };\n return fn;\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n", "import * as util from \"./util.js\";\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const cuid = /^[cC][0-9a-z]{6,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\nexport function nanoidOfLength(length) {\n return new RegExp(`^[a-zA-Z0-9_-]{${length}}$`);\n}\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\n// Single character class, not an alternation: the two properties overlap (U+1F9B0-U+1F9B3), so `(A|B)+` backtracks exponentially on a failed match.\nconst _emoji = `^[\\\\p{Extended_Pictographic}\\\\p{Emoji_Component}]+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^(?=.{1,253}$)([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,63}$/;\nexport const httpProtocol = /^https?$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces) E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// Credit card shape: 12\u201319 digits, optionally separated by single spaces or single hyphens. ISO/IEC 7812 caps the PAN at 19 digits; 12 is the shortest issued length (Maestro).\nexport const creditCard = /^\\d(?:[ -]?\\d){11,18}$/;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\n/** Anchors a pattern source. The interpolation lives here rather than at the call site because\n * esbuild will not drop a `@__PURE__` call whose own argument interpolates a variable, but it\n * will drop `anchor(dateSource)`. Keeping it inline pinned `date` into every bundle. */\nfunction anchor(source) {\n return new RegExp(`^${source}$`);\n}\nexport const date = /*@__PURE__*/ anchor(dateSource);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : args.seconds\n ? `${hhmm}:[0-5]\\\\d(?:\\\\.\\\\d+)?`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const opts = [\"Z\"];\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n // RFC 3339 mandates seconds wherever the time carries a `Z` or an offset, so only the unqualified form `local` adds may omit them\n const qualified = `${timeSource({ precision: args.precision, seconds: true })}(?:${opts.join(\"|\")})`;\n const timeRegex = args.local ? `${qualified}|${timeSource({ precision: args.precision })}` : qualified;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n", "// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\n/** Default `when` for size-based checks: run only on non-nullish values with a `size`. */\nconst _whenHasSize = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n};\n/** Default `when` for length-based checks: run only on non-nullish values with a `length`. */\nconst _whenHasLength = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n};\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin: numericOriginMap[typeof payload.value] ?? origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin: numericOriginMap[typeof payload.value] ?? origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? // `value % 0n` throws, and nothing is a multiple of zero \u2014 the number branch already fails this way via NaN\n def.value !== BigInt(0) && payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasSize);\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasSize);\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasSize);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const units = input.length;\n // Strings are measured in Unicode code points, not UTF-16 units. A code point is at most two units, so a string that already fits in units fits in code points; only an overflow has to be counted.\n const length = typeof input === \"string\" && units > def.maximum ? util.codePointLength(input) : units;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const units = input.length;\n // A code point is one or two UTF-16 units, so fewer units than the floor can never reach it and twice the floor always clears it. Only in between is the exact count in doubt.\n const length = typeof input === \"string\" && units >= def.minimum && units < def.minimum * 2\n ? util.codePointLength(input)\n : units;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const units = input.length;\n // A code point is one or two UTF-16 units, so outside `[length, length * 2]` units the target is missed either way \u2014 and missed in the same direction in both measures.\n const length = typeof input === \"string\" && units >= def.length && units <= def.length * 2\n ? util.codePointLength(input)\n : units;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n // `String.prototype.includes(sub, position)` matches `sub` at `position`\n // OR LATER, so the pattern must allow at least `position` leading chars\n // (`{N,}`), not exactly `position` chars (`{N}`).\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position},}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n", "export class Doc {\n constructor(args = [], closed = {}) {\n this.content = [];\n this.indent = 0;\n this.args = args;\n this.closed = closed;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const content = this?.content ?? [``];\n const factory = new F(...Object.keys(this.closed), `return function (${this.args.join(\", \")}) {\\n${content.join(\"\\n\")}\\n};`);\n return factory(...Object.values(this.closed));\n }\n}\n", "export const version = {\n major: 4,\n minor: 5,\n patch: 4,\n};\n", "import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const defChecks = inst._zod.def.checks;\n // if inst is itself a checks.$ZodCheck, run it as a check\n const checks = inst._zod.traits.has(\"$ZodCheck\")\n ? [inst, ...(defChecks ?? [])]\n : defChecks?.length\n ? [...defChecks]\n : [];\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n if (payload.memo)\n return payload;\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n if (util.explicitlyAborted(payload))\n continue;\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n util.attachSchema(payload.issues, currLen, inst);\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n util.attachSchema(payload.issues, currLen, inst);\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n}, {\n // Wrappers extend this by installing a richer factory over it; reading it eagerly would defeat the laziness.\n get \"~standard\"() {\n return util.hide(this, \"~standard\", standardProps(this));\n },\n set \"~standard\"(value) {\n util.own(this, \"~standard\", value);\n },\n});\n/** The Standard Schema surface for `inst`. Shared so wrappers can extend it without forcing it. */\nconst toStandardResult = (r) => r.success ? { value: r.data } : { issues: r.error?.issues };\nexport function standardProps(inst) {\n return {\n validate: (value) => {\n try {\n return toStandardResult(safeParse(inst, value));\n }\n catch (_) {\n return safeParseAsync(inst, value).then(toStandardResult);\n }\n },\n vendor: \"zod\",\n version: 1,\n };\n}\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\n/** The `://` guard rejected the input before the URL constructor saw it. */\nexport const URL_BAD_FORMAT = 1;\n/** The URL constructor rejected the input. */\nexport const URL_UNPARSEABLE = 2;\n/** Parses a URL for `$ZodURL`, applying the one guard the URL constructor cannot express. Returns the parsed URL, or a code naming the stage that rejected it \u2014 the runtime needs that distinction to pick an issue note, and compiled code only needs to know it is not a URL. */\nexport function parseURLObject(trimmed, def) {\n // When normalize is off, require :// for http/https URLs. This prevents strings like \"http:example.com\" or \"https:/path\" from being silently accepted\n if (!def.normalize && def.protocol?.source === regexes.httpProtocol.source && !/^https?:\\/\\//i.test(trimmed)) {\n return URL_BAD_FORMAT;\n }\n try {\n // @ts-ignore\n return new URL(trimmed);\n }\n catch {\n return URL_UNPARSEABLE;\n }\n}\nconst asciiTabOrNewline = /[\\t\\n\\r]/g;\n/** The URL parser deletes every ASCII tab, LF and CR from its input before it parses, so `new URL(\"https://exa\\nmple.com\")` reports on `example.com`. Applying the same deletion to the returned value closes the half of that divergence which can move the host; the parser's other rewrite, stripping C0 controls at the edges, cannot. */\nexport function stripTabAndNewline(value) {\n return value.replace(asciiTabOrNewline, \"\");\n}\nexport function urlHostnameOk(url, hostname) {\n hostname.lastIndex = 0;\n return hostname.test(url.hostname);\n}\nexport function urlProtocolOk(url, protocol) {\n protocol.lastIndex = 0;\n return protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol);\n}\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n const url = parseURLObject(trimmed, def);\n if (url === URL_BAD_FORMAT) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid URL format\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n return;\n }\n if (url === URL_UNPARSEABLE) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n return;\n }\n if (def.hostname && !urlHostnameOk(url, def.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n if (def.protocol && !urlProtocolOk(url, def.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n // Set the output value based on normalize flag\n payload.value = def.normalize ? url.href : stripTabAndNewline(trimmed);\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n if (def.length !== undefined && (!Number.isInteger(def.length) || def.length < 1))\n throw new Error(`Invalid nanoid length: ${def.length}`);\n def.pattern ?? (def.pattern = def.length === undefined ? regexes.nanoid : regexes.nanoidOfLength(def.length));\n $ZodStringFormat.init(inst, def);\n});\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link $ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n // these two drop the offset or seconds `date-time` requires \u2014 on the bag not the def, since `z.string().check(...)` lands the format on a different schema\n if (def.local || def.precision === -1) {\n inst._zod.bag.laxFormat = true;\n inst._zod.onattach.push((s) => {\n s._zod.bag.laxFormat = true;\n });\n }\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\n/** An IPv6 address is written with hex digits, colons and dots, and nothing else. The guard is what makes the check below an IPv6 check: `new URL(\"http://[...]\")` parses an authority, not an address, so `@` and `\\` re-delimit it and `\"::@1\\\\\"` validates against the host `0.0.0.1`. The URL parser also deletes ASCII tab, LF and CR rather than failing, which is how `\"::1\\n\"` validated as `::1`. */\nconst ipv6Alphabet = /^[0-9a-fA-F:.]+$/;\nexport function isValidIPv6(value) {\n if (!ipv6Alphabet.test(value))\n return false;\n try {\n // @ts-ignore\n new URL(`http://[${value}]`);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n if (!isValidIPv6(payload.value)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport function isValidCIDRv6(value) {\n const parts = value.split(\"/\");\n if (parts.length !== 2)\n return false;\n const [address, prefix] = parts;\n if (!prefix)\n return false;\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n return false;\n if (prefixNum < 0 || prefixNum > 128)\n return false;\n return isValidIPv6(address);\n}\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (!isValidCIDRv6(payload.value)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n // atob ignores whitespace, so reject it up front.\n if (/\\s/.test(data))\n return false;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodCreditCard //////////////////////////////\nconst CC_SANITIZE = /[- ]/g;\n/** Luhn checksum on a digit-only string. Adapted from valibot (MIT). */\nfunction isLuhnAlgo(digits) {\n let length = digits.length;\n let bit = 1;\n let sum = 0;\n while (length) {\n const value = +digits[--length];\n bit ^= 1;\n sum += bit ? [0, 2, 4, 6, 8, 1, 3, 5, 7, 9][value] : value;\n }\n return sum % 10 === 0;\n}\nexport function isValidCreditCard(input) {\n if (!regexes.creditCard.test(input))\n return false;\n return isLuhnAlgo(input.replace(CC_SANITIZE, \"\"));\n}\nexport const $ZodCreditCard = /*@__PURE__*/ core.$constructor(\"$ZodCreditCard\", (inst, def) => {\n // Shape only \u2014 the Luhn check below is not expressible as a pattern, so consumers of `pattern` (JSON Schema, template literals) get the length and separator rules alone.\n def.pattern ?? (def.pattern = regexes.creditCard);\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidCreditCard(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"credit_card\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? String(input)\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = memo ? memo.alloc(inst, payload, Array(input.length), ctx) : Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, optin, optout) {\n const isPresent = key in input;\n const isOptionalOut = optout === \"optional\";\n // The middle rung means \"absence permitted, nothing supplied in its place\", so an absent key contributes nothing \u2014 whatever the schema made of `undefined` is invented, not substituted. Only `optional` reaches this with a value: `defaulted` substitutes, and a schema that isn't optional-out has to keep the key.\n if (!isPresent && isOptionalOut && optin === \"optional\") {\n return;\n }\n if (result.issues.length) {\n // For optional-in/out schemas, ignore errors on absent keys.\n if (optin !== undefined && isOptionalOut && !isPresent) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (!isPresent && optin === undefined) {\n if (!result.issues.length) {\n final.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [key],\n });\n }\n return;\n }\n if (result.value === undefined) {\n if (isPresent) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\n// one shared instance; a fresh [] per schema cost 56 bytes retained\nconst NO_SYMBOL_KEYS = [];\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n const ownSymbols = Object.getOwnPropertySymbols(def.shape);\n const symbolKeys = ownSymbols.length ? ownSymbols : NO_SYMBOL_KEYS;\n // aliases `keys` when there are no symbols, so a string-only shape keeps one array\n const allKeys = symbolKeys.length ? [...keys, ...symbolKeys] : keys;\n for (const k of allKeys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${String(k)}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n allKeys,\n symbolKeys,\n // string-only: handleCatchall matches it against `for...in`, which never yields a symbol\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const optin = _catchall.optin;\n const optout = _catchall.optout;\n for (const key in input) {\n // Must precede the __proto__ branch: a declared key is not unrecognized, even though the shape loop deliberately strips __proto__ from the parsed output.\n if (keySet.has(key))\n continue;\n // Don't copy an undeclared __proto__ into the result; assignment to a plain {} would replace the result prototype. But in strict mode it is still an unknown key, so report it before skipping.\n if (key === \"__proto__\") {\n if (t === \"never\")\n unrecognized.push(key);\n continue;\n }\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, optin, optout)));\n }\n else {\n handlePropertyResult(r, payload, key, input, optin, optout);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n // Describes the shape of the input, not the validity of the parsed value, so it never aborts. The parse still fails; the schema's own checks just get to run first, and an enclosing intersection can reconcile the key against a sibling operand.\n continue: true,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\n// Whichever object a def's `shape` currently answers from: the one the caller passed until the first read, the frozen copy after it. Keyed by def, so a def rebuilt by a builder is simply absent rather than inheriting the source's. Read its keys with `Object.keys`, which does not invoke them \u2014 that is what lets a discriminated union check its discriminator without resolving an option whose getters reference the union being constructed.\nconst propShapes = new WeakMap();\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n propShapes.set(def, sh);\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n propShapes.set(def, newSh);\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazyInternal(inst, \"propValues\", (zod) => {\n const shape = zod.def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n if (!Object.prototype.hasOwnProperty.call(propValues, key)) {\n util.assignProp(propValues, key, new Set());\n }\n for (const v of field.values)\n propValues[key].add(v);\n // An omittable slot reads back as undefined at a discriminator lookup, so it has to claim undefined: two options that can both omit the key are not discriminable on it.\n if (field.optin !== undefined)\n propValues[key].add(undefined);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.allKeys) {\n if (key === \"__proto__\")\n continue;\n const el = shape[key];\n const optin = el._zod.optin;\n const optout = el._zod.optout;\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, optin, optout)));\n }\n else {\n handlePropertyResult(r, payload, key, input, optin, optout);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const memo = core.globalConfig.memoizer;\n const generateFastpass = (shape) => {\n const normalized = _normalized.value;\n const syms = normalized.symbolKeys;\n // a symbol has no source literal, so it is read as `syms[i]` off the closed-over scope\n const doc = new Doc([\"payload\", \"ctx\"], { shape, inst, memo, syms });\n const parseStr = (k) => `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n // Prefixes in place, like util.prefixIssues does for every interpreted path.\n const prefixStr = (id, k) => `\n for (let i = 0; i < ${id}.issues.length; i++) {\n const iss = ${id}.issues[i];\n iss.path = iss.path ? [${k}, ...iss.path] : [${k}];\n payload.issues.push(iss);\n }`;\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.allKeys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(memo ? `const newResult = memo.alloc(inst, payload, {}, ctx);` : `const newResult = {};`);\n for (const key of normalized.allKeys) {\n if (key === \"__proto__\")\n continue;\n const id = ids[key];\n const k = typeof key === \"symbol\" ? `syms[${syms.indexOf(key)}]` : util.esc(key);\n const isPresent = `${k} in input`;\n const schema = shape[key];\n const optin = schema?._zod?.optin;\n const isOptionalIn = optin !== undefined;\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(k)};`);\n if (isOptionalIn && isOptionalOut) {\n // For optional-in/out schemas, ignore errors on absent keys \u2014 and, like the interpreted path, drop the value produced alongside them. The middle rung goes further: it permits absence without supplying anything in its place, so an absent key contributes nothing at all.\n const assign = optin === \"optional\" ? `${id}_present` : `${id}.value !== undefined || ${id}_present`;\n doc.write(`\n const ${id}_present = ${isPresent};\n if (!${id}.issues.length || ${id}_present) {\n if (${id}.issues.length) {${prefixStr(id, k)}\n }\n\n if (${assign}) {\n newResult[${k}] = ${id}.value;\n }\n }\n\n `);\n }\n else if (!isOptionalIn) {\n doc.write(`\n const ${id}_present = ${isPresent};\n if (${id}.issues.length) {${prefixStr(id, k)}\n }\n if (!${id}_present && !${id}.issues.length) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [${k}]\n });\n }\n\n if (${id}_present) {\n newResult[${k}] = ${id}.value;\n }\n\n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {${prefixStr(id, k)}\n }\n \n if (${id}.value === undefined) {\n if (${isPresent}) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n\n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n // closing `shape` in is what pays: turbofan specializes the parser against that one shape object, so every `shape[k]._zod.run` folds to a known callee. as a parameter it stays a generic load and measures 13% slower even with the forwarding frame gone\n return doc.compile();\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.options.some((o) => o._zod.optin === \"defaulted\")\n ? \"defaulted\"\n : zod.def.options.some((o) => o._zod.optin !== undefined)\n ? \"optional\"\n : undefined);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazyInternal(inst, \"values\", (zod) => {\n if (zod.def.options.every((o) => o._zod.values)) {\n return new Set(zod.def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazyInternal(inst, \"pattern\", (zod) => {\n if (zod.def.options.every((o) => o._zod.pattern)) {\n const patterns = zod.def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const matches = [];\n for (let i = 0; i < results.length; i++) {\n if (results[i].issues.length === 0)\n matches.push(i);\n }\n if (matches.length === 1) {\n final.value = results[matches[0]].value;\n return final;\n }\n if (matches.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n matches,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\n/** Returns the option of `union` whose discriminator claims `value`. */\nexport function getDiscriminatedOption(union, value) {\n const internals = union._zod;\n let map = internals.bag.optionsMap;\n if (!map) {\n map = new Map();\n const { options, discriminator } = internals.def;\n for (const option of options) {\n // First declaration wins, matching the order the parse path resolves a duplicate in.\n for (const v of option._zod.propValues?.[discriminator] ?? [])\n if (!map.has(v))\n map.set(v, option);\n }\n internals.bag.optionsMap = map;\n }\n return map.get(value);\n}\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazyInternal(inst, \"propValues\", (zod) => {\n const propValues = {};\n for (const option of zod.def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${zod.def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!Object.prototype.hasOwnProperty.call(propValues, k)) {\n util.assignProp(propValues, k, new Set());\n }\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n // Checked now rather than in the lookup map below, so an option that lacks the discriminator fails at the `discriminatedUnion` call instead of on the first object parsed. Options whose shape cannot be enumerated without resolving it \u2014 pipes, lazies, and objects rebuilt by a builder such as `.extend()` \u2014 are left to the map.\n def.options.forEach((option, i) => {\n const propShape = propShapes.get(option._zod.def);\n if (propShape && !Object.prototype.hasOwnProperty.call(propShape, def.discriminator)) {\n throw new Error(`Invalid discriminated union option at index \"${i}\"`);\n }\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n // Fall back to union matching when the fast discriminator path fails:\n // - explicitly enabled via unionFallback, or\n // - during backward direction (encode), since codec-based discriminators have different values in forward vs backward directions\n if (def.unionFallback || ctx.direction === \"backward\") {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n options: Array.from(disc.value.keys()),\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nexport function mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n if (Object.prototype.hasOwnProperty.call(newObj, \"__proto__\"))\n delete newObj.__proto__;\n for (const key of sharedKeys) {\n if (key === \"__proto__\")\n continue;\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) reject each key. A key rejection is reported only when BOTH sides reject it, so a key owned by one branch survives the other's key schema. strictObject reports these as unrecognized_keys; a record with an open key schema reports one invalid_key per key.\n const unrecKeys = new Map();\n let unrecIssue;\n const keyIssues = new Map();\n const collect = (iss, side) => {\n let keys;\n if (iss.code === \"unrecognized_keys\" && !iss.path?.length) {\n unrecIssue ?? (unrecIssue = iss);\n keys = iss.keys;\n }\n else if (iss.code === \"invalid_key\" && iss.origin === \"record\" && iss.path?.length === 1) {\n const k = String(iss.path[0]);\n if (!keyIssues.has(k))\n keyIssues.set(k, iss);\n keys = [k];\n }\n else {\n return false;\n }\n for (const k of keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k)[side] = true;\n }\n return true;\n };\n for (const iss of left.issues) {\n if (!collect(iss, \"l\"))\n result.issues.push(iss);\n }\n for (const iss of right.issues) {\n if (!collect(iss, \"r\"))\n result.issues.push(iss);\n }\n // Report only keys rejected by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length) {\n const aggregated = unrecIssue ? bothKeys.filter((k) => unrecIssue.keys.includes(k)) : [];\n if (aggregated.length)\n result.issues.push({ ...unrecIssue, keys: aggregated });\n for (const k of bothKeys) {\n if (!aggregated.includes(k) && keyIssues.has(k))\n result.issues.push(keyIssues.get(k));\n }\n }\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n if (util.aborted(result))\n return result;\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = memo ? memo.alloc(inst, payload, [], ctx) : [];\n const proms = [];\n const optinStart = getTupleOptStart(items, \"optin\");\n const optoutStart = getTupleOptStart(items, \"optout\");\n if (!def.rest) {\n if (input.length < optinStart) {\n payload.issues.push({\n code: \"too_small\",\n minimum: optinStart,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n if (input.length > items.length) {\n payload.issues.push({\n code: \"too_big\",\n maximum: items.length,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n }\n }\n // Run every item in parallel, collecting results into an indexed array. The post-processing in `handleTupleResults` walks them in order so it can decide whether an absent optional-output error can truncate the tail or must be reported to preserve required output.\n const itemResults = new Array(items.length);\n for (let i = 0; i < items.length; i++) {\n const r = items[i]._zod.run({ value: input[i], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((rr) => {\n itemResults[i] = rr;\n }));\n }\n else {\n itemResults[i] = r;\n }\n }\n if (def.rest) {\n let i = items.length - 1;\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({ value: el, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((r) => handleTupleResult(r, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => handleTupleResults(itemResults, payload, items, input, optoutStart));\n }\n return handleTupleResults(itemResults, payload, items, input, optoutStart);\n };\n});\nfunction getTupleOptStart(items, key) {\n for (let i = items.length - 1; i >= 0; i--) {\n // optin is a three-rung ladder so any rung above `undefined` permits an absent slot; optout stays two-valued.\n const omittable = key === \"optin\" ? items[i]._zod.optin !== undefined : items[i]._zod.optout === \"optional\";\n if (!omittable)\n return i + 1;\n }\n return 0;\n}\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nfunction handleTupleResults(itemResults, final, items, input, optoutStart) {\n // Walk results in order. Mirror $ZodObject's swallow-on-absent-optional rule, but only after `optoutStart`: the first index where the output tuple tail can be absent.\n for (let i = 0; i < items.length; i++) {\n const r = itemResults[i];\n const isPresent = i < input.length;\n // The array analog of `handlePropertyResult`'s absent-key early return: the middle rung permits absence without supplying anything in its place, so the tail truncates here instead of materializing whatever the item made of `undefined`.\n if (!isPresent && i >= optoutStart && items[i]._zod.optin === \"optional\") {\n final.value.length = i;\n break;\n }\n if (r.issues.length) {\n if (!isPresent && i >= optoutStart) {\n final.value.length = i;\n break;\n }\n final.issues.push(...util.prefixIssues(i, r.issues));\n }\n final.value[i] = r.value;\n }\n // Drop trailing slots that produced `undefined` for absent input\n // (the array analog of an absent optional key on an object). The\n // `i >= input.length` floor is critical: an explicit `undefined`\n // *inside* the input must be preserved even when the schema is\n // optional-out (e.g. `z.string().or(z.undefined())` accepting an\n // explicit undefined value).\n for (let i = final.value.length - 1; i >= input.length; i--) {\n if (items[i]._zod.optout === \"optional\" && final.value[i] === undefined) {\n final.value.length = i;\n }\n else {\n break;\n }\n }\n return final;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values && !def.partial) {\n payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n // A declared __proto__ is stripped but is not an unrecognized key.\n if (key === \"__proto__\")\n continue;\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n continue;\n }\n const outKey = keyResult.value;\n if (outKey === \"__proto__\")\n continue;\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n if (def.mode === \"loose\") {\n // skip __proto__ so it can't replace the result prototype via the assignment setter on the plain {} we build into\n if (key === \"__proto__\")\n continue;\n payload.value[key] = input[key];\n }\n else {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n continue: true,\n });\n }\n }\n else {\n payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n // An enumerable key schema declares which keys the record owns, so a key outside the set is unrecognized. A non-enumerable one (regex, refine) is a constraint every key must satisfy, so a failing key is invalid. Only the former is reconcilable against the other side of an intersection.\n let unrecognized;\n // Reflect.ownKeys for Symbol-key support; filter non-enumerable to match z.object()\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n if (!Object.prototype.propertyIsEnumerable.call(input, key))\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key). This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else if (values) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n // the guard above tests the raw input key, but the key schema can normalize an ordinary key into __proto__; re-check the key we actually write under\n const outKey = keyResult.value;\n if (outKey === \"__proto__\")\n continue;\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n continue: true,\n });\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = memo ? memo.alloc(inst, payload, new Map(), ctx) : new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = memo ? memo.alloc(inst, payload, new Set(), ctx) : new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n const patternValues = values.filter((k) => util.propertyKeyTypes.has(typeof k));\n // unmatchable fallback, RE2-safe: an empty alternation would compile to /^()$/, which matches \"\"\n inst._zod.pattern = new RegExp(patternValues.length ? `^(${patternValues.map((o) => util.escapeRegex(o.toString())).join(\"|\")})$` : \"^[^\\\\s\\\\S]$\");\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = new Set(def.values);\n inst._zod.values = values;\n // unmatchable fallback, RE2-safe: an empty alternation would compile to /^()$/, which matches \"\"\n inst._zod.pattern = new RegExp(def.values.length\n ? `^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`\n : \"^[^\\\\s\\\\S]$\");\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n core.globalConfig.memoizer?.guard(inst);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(payload, result) {\n // A substituting schema that still failed has no usable answer; yield undefined. Its issues are simply dropped: it ran on a payload of its own, so there is no shared array to truncate and nothing of the caller's to lose with it.\n payload.value = result.issues.length ? undefined : result.value;\n return payload;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n // .optional() propagates absence rather than substituting for it, so a defaulted inner keeps its rung.\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin === \"defaulted\" ? \"defaulted\" : \"optional\");\n inst._zod.optout = \"optional\";\n util.defineLazyInternal(inst, \"values\", (zod) => {\n const values = zod.def.innerType._zod.values;\n return values ? new Set([...values, undefined]) : undefined;\n });\n util.defineLazyInternal(inst, \"pattern\", (zod) => {\n const pattern = zod.def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (payload.value === undefined) {\n // Only the top rung substitutes a value for absence; everything else leaves it intact, which is what .optional() means.\n if (def.innerType._zod.optin !== \"defaulted\")\n return payload;\n // Its own payload, for the same reason $ZodCatch gets one: a pipe forwards an unrecognized key through the caller's issues array, and this must not read that as the substituting schema failing and drop it.\n const result = def.innerType._zod.run({ value: payload.value, issues: [] }, ctx);\n if (result instanceof Promise)\n return result.then((result) => handleOptionalResult(payload, result));\n return handleOptionalResult(payload, result);\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n util.defineLazyInternal(inst, \"pattern\", (zod) => zod.def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType._zod.optout);\n util.defineLazyInternal(inst, \"pattern\", (zod) => {\n const pattern = zod.def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazyInternal(inst, \"values\", (zod) => {\n return zod.def.innerType._zod.values ? new Set([...zod.def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"defaulted\";\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"defaulted\";\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"values\", (zod) => {\n const v = zod.def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nfunction handleCatchResult(payload, result, def, ctx) {\n if (!result.issues.length) {\n payload.value = result.value;\n // The value carries up, so the flag describing it has to carry with it: a back-edge into a node still being parsed must not be frozen by an enclosing readonly, and its checks belong to the node itself. Guarded so the ordinary case adds no own property.\n if (result.memo)\n payload.memo = true;\n return payload;\n }\n // Spread the inner's own payload, not ours: `value` has to stay the input the catch was handed, and the inner ran on a payload of its own so its issues are already private to this call.\n payload.value = def.catchValue({\n ...result,\n value: payload.value,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n return payload;\n}\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin === \"defaulted\" ? \"defaulted\" : \"optional\");\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType._zod.optout);\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run({ value: payload.value, issues: [] }, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleCatchResult(payload, result, def, ctx));\n }\n return handleCatchResult(payload, result, def, ctx);\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.in._zod.values);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.in._zod.optin);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.out._zod.optout);\n util.defineLazyInternal(inst, \"propValues\", (zod) => zod.def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n // Any issue stops the pipe, so a failing refinement never feeds its transform. An unrecognized key is the exception: it describes the input's extra properties, not the value being piped, and an enclosing intersection may yet reconcile it.\n if (left.issues.some((iss) => iss.code !== \"unrecognized_keys\")) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.in._zod.values);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.in._zod.optin);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.out._zod.optout);\n util.defineLazyInternal(inst, \"propValues\", (zod) => zod.def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodPreprocess = /*@__PURE__*/ core.$constructor(\"$ZodPreprocess\", (inst, def) => {\n $ZodPipe.init(inst, def);\n});\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"propValues\", (zod) => zod.def.innerType._zod.propValues);\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType?._zod?.optin);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n // A repeat visit hands back a node that is still being built; freezing it here would make the rest of its keys fail to assign.\n if (!payload.memo)\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n // Defined, not assigned: the classic prototype exposes `_def` as a getter with no setter.\n Object.defineProperty(inst, \"_def\", { value: def });\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n // Defined inline so the closure stays anonymous: binding it to a `const` first names it, which costs 256 bytes per implemented function.\n return Object.defineProperty(function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n }, \"_zod\", { value: inst._zod, enumerable: false });\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return Object.defineProperty(async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n }, \"_zod\", { value: inst._zod, enumerable: false });\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // Cache the resolved inner type on the shared `def` so all clones of this lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance, preserving identity for cycle detection on recursive schemas.\n util.defineLazy(inst._zod, \"innerType\", () => {\n const d = def;\n if (!d._cachedInner)\n d._cachedInner = def.getter();\n return d._cachedInner;\n });\n util.defineLazyInternal(inst, \"pattern\", (zod) => zod.innerType?._zod?.pattern);\n util.defineLazyInternal(inst, \"propValues\", (zod) => zod.innerType?._zod?.propValues);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.innerType?._zod?.optin ?? undefined);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n", "export class $ZodCyclicError extends Error {\n constructor() {\n super(`Cannot parse a reference cycle that closes through a transform`);\n this.name = \"ZodCyclicError\";\n }\n}\n/** Keyed off the context object every schema in one parse call already shares. */\nconst STATE = \"~memo\";\nconst NO_ISSUES = [];\n// Receivers prefix paths in place, so the cache and every hand-out need their own copies.\nfunction cloneIssues(issues) {\n return issues.map((iss) => (iss.path ? { ...iss, path: iss.path.slice() } : { ...iss }));\n}\nconst recursive = /*@__PURE__*/ new WeakMap();\n/** Whether this schema's subtree contains a cycle, so one parse can re-enter it. */\nfunction isRecursive(inst, stack) {\n const cached = recursive.get(inst);\n if (cached !== undefined)\n return cached;\n // Relative to the walk in progress, so not cached.\n if (stack.has(inst))\n return true;\n stack.add(inst);\n let result = false;\n const check = (child) => {\n if (!result && child?._zod && isRecursive(child, stack))\n result = true;\n };\n const def = inst._zod.def;\n const kind = def.type;\n switch (kind) {\n case \"object\": {\n // `Reflect.ownKeys` rather than `Object.keys`, so a cycle through a declared symbol key is still seen\n for (const key of Reflect.ownKeys(def.shape))\n check(def.shape[key]);\n check(def.catchall);\n break;\n }\n case \"array\":\n check(def.element);\n break;\n case \"tuple\":\n for (const el of def.items)\n check(el);\n check(def.rest);\n break;\n case \"record\":\n case \"map\":\n check(def.keyType);\n check(def.valueType);\n break;\n case \"set\":\n check(def.valueType);\n break;\n case \"union\":\n for (const el of def.options)\n check(el);\n break;\n case \"intersection\":\n check(def.left);\n check(def.right);\n break;\n case \"optional\":\n case \"nullable\":\n case \"default\":\n case \"prefault\":\n case \"catch\":\n case \"readonly\":\n case \"nonoptional\":\n case \"promise\":\n case \"success\":\n check(def.innerType);\n break;\n case \"pipe\":\n check(def.in);\n check(def.out);\n break;\n case \"function\":\n check(def.input);\n check(def.output);\n break;\n // reading `_zod.innerType` resolves the getter once and caches it\n case \"lazy\":\n check(inst._zod.innerType);\n break;\n // a leaf by choice: `parts` are regex fragments, not data positions\n case \"template_literal\":\n // leaves\n case \"string\":\n case \"number\":\n case \"int\":\n case \"boolean\":\n case \"bigint\":\n case \"symbol\":\n case \"undefined\":\n case \"null\":\n case \"void\":\n case \"never\":\n case \"any\":\n case \"unknown\":\n case \"date\":\n case \"nan\":\n case \"enum\":\n case \"literal\":\n case \"file\":\n case \"transform\":\n case \"custom\":\n break;\n default: {\n // a new built-in kind becomes a compile error here\n kind;\n // a user-defined kind can still hold children, and only its author knows where, so fall back to scanning the def \u2014 skipping accessors, since reading one can run user code\n for (const key in def) {\n const desc = Object.getOwnPropertyDescriptor(def, key);\n if (!desc || desc.get)\n continue;\n const value = desc.value;\n if (!value || typeof value !== \"object\")\n continue;\n if (value._zod)\n check(value);\n else if (Array.isArray(value))\n for (const el of value)\n check(el);\n }\n }\n }\n stack.delete(inst);\n recursive.set(inst, result);\n return result;\n}\n/**\n * Whether one parse can re-enter this schema, i.e. its subtree contains a cycle.\n * Exported for `z.compile`, which refuses to compile such a schema: cycle\n * breaking is driven from here off state keyed on the parse context, and a\n * generated fast path has no context to key on.\n */\nexport function isRecursiveSchema(inst) {\n return isRecursive(inst, new Set());\n}\nfunction bucketFor(state, inst) {\n let bucket = state.buckets.get(inst);\n if (!bucket) {\n bucket = new Map();\n state.buckets.set(inst, bucket);\n }\n return bucket;\n}\n// Set immediately before delegating to core and cleared immediately after, so `alloc` registers only for a visit this module is driving.\nlet handoff;\n// Allocated but unfinished entries. `alloc` and the matching pop both happen in the synchronous part of a parse, so they nest even when children are async, and one stack serves every schema.\nconst open = [];\nconst memo = {\n alloc(_inst, payload, empty) {\n const bucket = handoff;\n if (!bucket)\n return empty;\n handoff = undefined;\n const entry = { value: empty, issues: null };\n bucket.set(payload.value, entry);\n open.push(entry);\n return empty;\n },\n guard(inst) {\n var _a;\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred.push(() => {\n const base = inst._zod.parse;\n const wrapped = (payload, ctx) => {\n // The value is a placeholder a back-edge is still waiting on, so the cycle closes through this transform. Its output can't exist in time to bind.\n if (ctx.direction !== \"backward\" && isBackEdge(ctx, payload.value))\n throw new $ZodCyclicError();\n return base(payload, ctx);\n };\n inst._zod.parse = wrapped;\n if (inst._zod.run === base)\n inst._zod.run = wrapped;\n });\n },\n attach(inst) {\n var _a;\n let isRecursiveInst;\n // `bucket` memoized for one parse; a recursive schema is re-entered many times and its bucket never changes\n let lastCtx;\n let lastBucket;\n // Wraps `parse` in a deferred so it sees the container's final parse. Core's own deferred copies `parse` into `run` when there are no checks, and it ran first, so `run` is patched to match; with checks, `run` reads `parse` dynamically.\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred.push(() => {\n const base = inst._zod.parse;\n const wrapped = (payload, ctx) => {\n if (isRecursiveInst === undefined) {\n isRecursiveInst = isRecursive(inst, new Set());\n if (!isRecursiveInst) {\n // Nothing here can ever fire, so take it back out.\n inst._zod.parse = base;\n if (inst._zod.run === wrapped)\n inst._zod.run = base;\n return base(payload, ctx);\n }\n }\n const input = payload.value;\n if (input === null || typeof input !== \"object\")\n return base(payload, ctx);\n let state = ctx[STATE];\n if (!state) {\n state = { buckets: new Map(), backEdges: undefined };\n ctx[STATE] = state;\n }\n let bucket;\n if (lastCtx === ctx) {\n bucket = lastBucket;\n }\n else {\n bucket = bucketFor(state, inst);\n lastCtx = ctx;\n lastBucket = bucket;\n }\n const hit = bucket.get(input);\n if (hit) {\n payload.value = hit.value;\n if (hit.issues) {\n if (hit.issues.length)\n payload.issues.push(...cloneIssues(hit.issues));\n }\n else {\n // Still being parsed: its own checks cover it, so skip them here.\n payload.memo = true;\n state.backEdges ?? (state.backEdges = new Set());\n state.backEdges.add(hit.value);\n }\n return payload;\n }\n handoff = bucket;\n const depth = open.length;\n const result = base(payload, ctx);\n handoff = undefined;\n // A container that rejected its input outright allocated nothing.\n const entry = open.length > depth ? open.pop() : undefined;\n // Both paths written out so the sync one allocates no closure. It runs once per node, and capturing here cost more than everything else combined.\n if (result instanceof Promise) {\n return result.then((r) => {\n if (entry)\n entry.issues = r.issues.length ? cloneIssues(r.issues) : NO_ISSUES;\n return r;\n });\n }\n if (entry)\n entry.issues = result.issues.length ? cloneIssues(result.issues) : NO_ISSUES;\n return result;\n };\n inst._zod.parse = wrapped;\n if (inst._zod.run === base)\n inst._zod.run = wrapped;\n });\n },\n};\n/** The memoizer that gives containers cycle support. `zod` installs it by default; `zod/mini` opts in with `config({ memoizer: memoizer() })`. */\nexport function memoizer() {\n return memo;\n}\n/** Whether this value is a node a back-edge resolved to before it finished. */\nexport function isBackEdge(ctx, value) {\n const backEdges = ctx[STATE]?.backEdges;\n return backEdges !== undefined && value !== null && typeof value === \"object\" && backEdges.has(value);\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n credit_card: \"credit card number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n function getTypeName(type, input) {\n if (type === \"number\" && typeof input === \"number\" && !Number.isFinite(input)) {\n return String(input);\n }\n return TypeDictionary[type] ?? type;\n }\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = getTypeName(issue.expected);\n const receivedType = util.parsedType(issue.input);\n const received = getTypeName(receivedType, issue.input);\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.exact ? \"exactly \" : issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.exact ? \"exactly \" : issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n if (issue.options && Array.isArray(issue.options) && issue.options.length > 0) {\n const opts = issue.options.map((o) => `'${o}'`).join(\" | \");\n return `Invalid discriminator value. Expected ${opts}`;\n }\n if (issue.inclusive === false) {\n return \"Invalid input: more than one option matched\";\n }\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "var _a;\nexport const $output = /*@__PURE__*/ Symbol(\"ZodOutput\");\nexport const $input = /*@__PURE__*/ Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n", "import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link _cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _creditCard(Class, params) {\n return new Class({\n type: \"string\",\n format: \"credit_card\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _properties(shape) {\n return Object.entries(shape).map(([property, schema]) => new checks.$ZodCheckProperty({ check: \"property\", property, schema }));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options: options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : util.constantCatch(catchValue)),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn, params) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n if (!(\"input\" in _issue))\n _issue.input = payload.value;\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n }, params);\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n codec._zod.bag.truthy = truthyArray;\n codec._zod.bag.falsy = falsyArray;\n codec._zod.bag.case = params.case ?? \"insensitive\";\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n", "import { globalRegistry } from \"./registries.js\";\nimport { assignProp } from \"./util.js\";\nfunction assignProps(target, ...sources) {\n for (const source of sources) {\n for (const key of Reflect.ownKeys(source)) {\n if (Object.prototype.propertyIsEnumerable.call(source, key)) {\n assignProp(target, key, source[key]);\n }\n }\n }\n return target;\n}\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n sharedDefsExtractedFor: undefined,\n sharedEmitDoneFor: undefined,\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n intersections: [],\n deferred: [],\n external: params?.external ?? undefined,\n };\n}\n/**\n * Applies the `unrepresentable` setting at a site that has no JSON Schema equivalent. Throws\n * `message` unless the setting (or the handler's return value) says otherwise. Returns `true` if a\n * custom JSON Schema was written into `json`, in which case the caller must not write its own.\n */\nexport function handleUnrepresentable(schema, ctx, json, params, message) {\n const result = typeof ctx.unrepresentable === \"function\"\n ? ctx.unrepresentable({ zodSchema: schema, path: params.path, message })\n : ctx.unrepresentable;\n if (result === \"any\")\n return false;\n if (result === undefined || result === \"throw\")\n throw new Error(message);\n Object.assign(json, result);\n return true;\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n ctx.sharedDefsExtractedFor = undefined;\n ctx.sharedEmitDoneFor = undefined;\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n assignProps(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && \"_prefault\" in result.schema)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\n// Escape a reference token for use in a JSON Pointer fragment (RFC 6901): `~` becomes `~0` and `/` becomes `~1`. The `~` replacement must run first.\nfunction encodeJSONPointerSegment(segment) {\n return segment.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // With `external` set, every registered schema resolves through the external branch of `makeURI`, so the root branch below produces the same ref the external branch would \u2014 this pass is identical whichever schema it is called with, and only needs to run once.\n if (ctx.external && ctx.sharedDefsExtractedFor === ctx.external)\n return;\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes multiple schemas map to the same seen object. e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${encodeJSONPointerSegment(id)}` };\n }\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n // an id-less root has nowhere to be extracted to, so it stays inline and self-references as `#`\n if (entry[1] === root && !entry[1].schema.id) {\n return { ref: uriPrefix };\n }\n // self-contained schema\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + encodeJSONPointerSegment(defId) };\n };\n // stored cached version in `def` property remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n if (ctx.external)\n ctx.sharedDefsExtractedFor = ctx.external;\n}\n/** Rewrites `anyOf: [{type: \"a\"}, {type: \"b\"}]` to `type: [\"a\", \"b\"]`, which every JSON Schema draft treats as equivalent and most consumers render far better for the nullable case. Only branches that are a bare type assertion qualify \u2014 anything carrying a constraint, `$ref`, `const` or metadata is left alone. Runs after `flattenRef`, so a branch an override decorated or `$defs` extraction turned into a `$ref` is no longer bare and correctly stays in `anyOf`. `oneOf` is excluded: `integer` and `number` overlap, so \"exactly one\" and \"at least one\" are not the same there. OpenAPI 3.0 is excluded: its `type` must be a single string. */\nfunction compactTypeUnion(schema) {\n const options = schema.anyOf;\n if (!Array.isArray(options) || options.length === 0 || schema.type !== undefined)\n return;\n const types = [];\n for (const option of options) {\n if (!option || typeof option !== \"object\")\n return;\n // A branch that is itself a compactible union folds into this one \u2014 nested `anyOf` and a flat `type` array say the same thing. Compacting it first also makes the result independent of the order this pass walks the seen map in.\n compactTypeUnion(option);\n const keys = Object.keys(option);\n if (keys.length !== 1 || keys[0] !== \"type\")\n return;\n const type = option.type;\n for (const member of Array.isArray(type) ? type : [type]) {\n if (typeof member !== \"string\")\n return;\n if (!types.includes(member))\n types.push(member);\n }\n }\n delete schema.anyOf;\n // A `type` array must be non-empty and unique (metaschema); a single member is spelled as a bare string.\n schema.type = types.length === 1 ? types[0] : types;\n}\n/** Keywords `foldIntersection` knows how to combine. Anything else \u2014 `$ref`, `patternProperties`,\n * an annotation like `description` \u2014 makes a member unfoldable, so a constraint this does not\n * understand leaves the `allOf` alone instead of being silently dropped or misattributed. */\nconst FOLDABLE_KEYS = new Set([\"type\", \"properties\", \"required\", \"additionalProperties\"]);\nconst UNION_KEYS = [\"oneOf\", \"anyOf\"];\n/** A member's constraint on a key it does not declare itself. A `catchall` states one; `false`, an absent `additionalProperties`, and the empty schema a loose object emits state nothing. */\nfunction undeclaredConstraint(member) {\n const extra = member.additionalProperties;\n if (extra === undefined || extra === false || typeof extra !== \"object\" || extra === null)\n return null;\n return Object.keys(extra).length ? extra : null;\n}\n/** Combines object members into the single object they describe together, or returns `null` if any of them carries a keyword outside {@link FOLDABLE_KEYS}. */\nfunction foldObjects(members) {\n const objects = [];\n for (const member of members) {\n // A boolean subschema is legal JSON Schema and carries no keywords to fold.\n if (typeof member !== \"object\" || member.type !== \"object\")\n return null;\n for (const key in member) {\n if (!FOLDABLE_KEYS.has(key))\n return null;\n }\n objects.push(member);\n }\n const properties = {};\n const required = new Set();\n for (const object of objects) {\n for (const key in object.properties) {\n // `in` would report a `__proto__` key as already present via the prototype chain and skip it.\n if (Object.prototype.hasOwnProperty.call(properties, key))\n continue;\n // Every member constrains this key: the ones that declare it say how, and a `catchall` member constrains it too even though it does not name it. The key has to satisfy all of them, which is the same intersection one level down.\n const parts = [];\n for (const other of objects) {\n const part = other.properties?.[key] ?? undeclaredConstraint(other);\n if (part === null || part === undefined)\n continue;\n if (!parts.some((seen) => JSON.stringify(seen) === JSON.stringify(part)))\n parts.push(part);\n }\n const merged = parts.length === 1\n ? parts[0]\n : (foldObjects(parts) ?? { allOf: parts });\n assignProp(properties, key, merged);\n }\n for (const key of object.required ?? [])\n required.add(key);\n }\n const folded = { type: \"object\", properties };\n if (required.size)\n folded.required = [...required];\n // A key no member declares is rejected only when every member rejects it, so the fold is closed only when every member is. Otherwise it carries whatever the `catchall` members demand of such a key.\n if (objects.every((object) => object.additionalProperties === false)) {\n folded.additionalProperties = false;\n }\n else {\n const constraints = [];\n for (const object of objects) {\n const constraint = undeclaredConstraint(object);\n if (constraint && !constraints.some((seen) => JSON.stringify(seen) === JSON.stringify(constraint)))\n constraints.push(constraint);\n }\n if (constraints.length === 1)\n folded.additionalProperties = constraints[0];\n else if (constraints.length > 1)\n folded.additionalProperties = { allOf: constraints };\n }\n return folded;\n}\n/** `additionalProperties` in an `allOf` member sees only that member's own `properties`, so two\n * closed object members reject each other's keys and the schema validates nothing. Zod's parser\n * pools the key sets instead \u2014 `handleIntersectionResults` reports a key as unrecognized only when\n * *every* side rejects it \u2014 so the emitted schema has to pool them too, and folding the members\n * into one object is the encoding that says so on every target.\n *\n * This runs from `finalize`, after `extractDefs`, which is what keeps it clear of the `$ref`\n * machinery: a member extracted into `$defs` is already a `$ref` by now and declines to fold, so it\n * keeps its reference and its own closedness rather than being inlined as a stale copy. */\nfunction foldIntersection(json) {\n const allOf = json.allOf;\n if (!Array.isArray(allOf) || allOf.length < 2)\n return;\n // An `override` runs before this pass and may have written object keywords onto the intersection itself. Those are deliberate, so decline rather than overwrite them.\n for (const key of FOLDABLE_KEYS)\n if (key in json)\n return;\n // An intersection distributes over a union: `A & (X | Y)` is `(A & X) | (A & Y)`. Only the first union is distributed over; a second one stays among the members every branch folds against, where it fails the object check and declines the whole intersection rather than multiplying out.\n const unions = allOf.filter((m) => UNION_KEYS.some((k) => Array.isArray(m[k])));\n let folded = null;\n if (!unions.length) {\n folded = foldObjects(allOf);\n }\n else {\n const union = unions[0];\n const keyword = UNION_KEYS.find((k) => Array.isArray(union[k]));\n if (Object.keys(union).length !== 1)\n return;\n const rest = allOf.filter((m) => m !== union);\n const branches = union[keyword].map((branch) => foldObjects([...rest, branch]));\n if (branches.some((b) => !b))\n return;\n folded = { [keyword]: branches };\n }\n if (!folded)\n return;\n delete json.allOf;\n assignProps(json, folded);\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n assignProps(schema, refSchema);\n }\n // restore child's own properties (child wins)\n assignProps(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema. This handles cases like: readonly().meta({id}).describe() where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n // Flattening walks the whole map and clears each `ref` as it goes, so a second call over the same map is a no-op scan. Skip it outright once it has run for a registry conversion.\n if (!ctx.external || ctx.sharedEmitDoneFor !== ctx.external) {\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n if (ctx.target !== \"openapi-3.0\") {\n for (const entry of ctx.seen.entries()) {\n compactTypeUnion(entry[1].def ?? entry[1].schema);\n }\n }\n for (const rewrite of ctx.deferred)\n rewrite();\n // After flattening, every member that was extracted is a `$ref`, so the fold sees the final shape. A schema that inherits an intersection \u2014 through `z.lazy`, or any `ref` chain \u2014 holds the same `allOf` array, so fold by array identity to catch every copy.\n if (ctx.intersections.length) {\n const carriers = new Map();\n for (const seen of ctx.seen.values()) {\n for (const json of [seen.schema, seen.def]) {\n const allOf = json?.allOf;\n if (!Array.isArray(allOf))\n continue;\n const existing = carriers.get(allOf);\n if (existing)\n existing.push(json);\n else\n carriers.set(allOf, [json]);\n }\n }\n for (const allOf of ctx.intersections) {\n for (const json of carriers.get(allOf) ?? [])\n foldIntersection(json);\n }\n }\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n // when the root was extracted into $defs, `root.schema` is the `$ref` wrapper and `root.def` is the body that now lives under $defs\n assignProps(result, root.defId ? root.schema : (root.def ?? root.schema));\n // The `id` in `.meta()` is a Zod-specific registration tag used to extract schemas into $defs \u2014 it is not user-facing JSON Schema metadata. Strip it from the output body where it would otherwise leak. The id is preserved implicitly via the $defs key (and via $ref paths).\n const rootMetaId = ctx.metadataRegistry.get(schema)?.id;\n if (rootMetaId !== undefined && result.id === rootMetaId)\n delete result.id;\n // build defs object. With `external`, `defs` is the shared object every schema writes into, so the same entries are reassigned on every call. Without it, `defs` is fresh per call and must be rebuilt.\n const defs = ctx.external?.defs ?? {};\n if (!ctx.external || ctx.sharedEmitDoneFor !== ctx.external) {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n if (seen.def.id === seen.defId)\n delete seen.def.id;\n assignProp(defs, seen.defId, seen.def);\n }\n }\n }\n if (ctx.external)\n ctx.sharedEmitDoneFor = ctx.external;\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed each call to finalize() is functionally independent though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\" ||\n def.type === \"catch\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n if (_schema._zod.traits.has(\"$ZodCodec\"))\n return true;\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n", "import * as regexes from \"./regexes.js\";\nimport { extractDefs, finalize, handleUnrepresentable, initializeContext, process, } from \"./to-json-schema.js\";\nimport { assignProp, getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding, laxFormat } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // `z.iso.time()` is never full-time, and `laxFormat` carries the datetime shapes that also accept what their keyword forbids\n if (format === \"time\" || laxFormat) {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const patternList = [...patterns];\n if (patternList.length === 1)\n json.pattern = patternList[0].source;\n else if (patternList.length > 1) {\n json.allOf = [\n ...patternList.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n // when both minimum and exclusiveMinimum exist, pick the more restrictive one\n const exMin = typeof exclusiveMinimum === \"number\" && exclusiveMinimum >= (minimum ?? Number.NEGATIVE_INFINITY);\n const exMax = typeof exclusiveMaximum === \"number\" && exclusiveMaximum <= (maximum ?? Number.POSITIVE_INFINITY);\n const legacy = ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\";\n if (exMin) {\n if (legacy) {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n else if (typeof minimum === \"number\") {\n json.minimum = minimum;\n }\n if (exMax) {\n if (legacy) {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n else if (typeof maximum === \"number\") {\n json.maximum = maximum;\n }\n if (typeof multipleOf === \"number\") {\n // JSON Schema requires a divisor strictly greater than zero, and a non-finite one does not survive JSON at all. A negative divisor accepts exactly what its absolute value accepts, so it still maps; zero, NaN and Infinity have no keyword form.\n if (Number.isFinite(multipleOf) && multipleOf !== 0)\n json.multipleOf = Math.abs(multipleOf);\n else\n handleUnrepresentable(schema, ctx, json, params, `A multipleOf divisor of ${multipleOf} cannot be represented in JSON Schema`);\n }\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"BigInt cannot be represented in JSON Schema\");\n};\nexport const symbolProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Symbols cannot be represented in JSON Schema\");\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Undefined cannot be represented in JSON Schema\");\n};\nexport const voidProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Void cannot be represented in JSON Schema\");\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Date cannot be represented in JSON Schema\");\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // an empty enum accepts nothing, same as z.never()\n if (values.length === 0) {\n json.not = {};\n return;\n }\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // a literal with no values accepts nothing, same as z.never()\n if (def.values.length === 0) {\n json.not = {};\n return;\n }\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n // a custom schema replaces the whole literal, so there is nothing left to accumulate\n if (handleUnrepresentable(schema, ctx, json, params, \"Literal `undefined` cannot be represented in JSON Schema\"))\n return;\n // otherwise do not add to vals\n }\n else if (typeof val === \"bigint\") {\n if (handleUnrepresentable(schema, ctx, json, params, \"BigInt literals cannot be represented in JSON Schema\"))\n return;\n vals.push(Number(val));\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"NaN cannot be represented in JSON Schema\");\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Custom types cannot be represented in JSON Schema\");\n};\nexport const functionProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Function types cannot be represented in JSON Schema\");\n};\nexport const transformProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Transforms cannot be represented in JSON Schema\");\n};\nexport const mapProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Map cannot be represented in JSON Schema\");\n};\nexport const setProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Set cannot be represented in JSON Schema\");\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, {\n ...params,\n path: [...params.path, \"items\"],\n });\n};\n// Transform and catch set `optin = \"optional\"` at runtime so the parser lets them observe an\n// absent key, but their declared input type stays required. An input JSON Schema describes the\n// declared type, so resolve past them to the schema that actually carries the optionality.\n// Used by both `objectProcessor` (for `required`) and `tupleProcessor` (for `minItems`); see\n// wiki/optionality.md, \"The JSON Schema emitter reads the *static* value\".\nfunction inputOptin(schema) {\n const def = schema._zod.def;\n if (def.type === \"pipe\" && def.in._zod.traits.has(\"$ZodTransform\")) {\n return inputOptin(def.out);\n }\n if (def.type === \"catch\") {\n return inputOptin(def.innerType);\n }\n return schema._zod.optin;\n}\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const shape = def.shape;\n // dropping it while still emitting `additionalProperties: false` would emit a schema that rejects data this one requires\n const symbolKeys = Object.getOwnPropertySymbols(shape);\n if (symbolKeys.length &&\n handleUnrepresentable(schema, ctx, json, params, \"Symbol keys cannot be represented in JSON Schema\")) {\n return;\n }\n json.type = \"object\";\n json.properties = {};\n for (const key in shape) {\n // assignProp so a __proto__ key becomes an own property instead of hitting the inherited setter on the plain {} we build into\n assignProp(json.properties, key, process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n }));\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const field = def.shape[key];\n if (ctx.io === \"input\") {\n return inputOptin(field) === undefined;\n }\n else {\n return field._zod.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches). This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n // Recorded innermost first, so a nested intersection has already folded by the time this one is considered. The array is the handle rather than the schema, because a wrapper that inherits this schema shares the same array; `finalize` folds every object holding it. See `foldIntersection`.\n ctx.intersections.push(allOf);\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n let minItems = def.items.length;\n while (minItems > 0) {\n const item = def.items[minItems - 1];\n const optional = ctx.io === \"input\" ? inputOptin(item) !== undefined : item._zod.optout === \"optional\";\n if (!optional)\n break;\n minItems--;\n }\n const maxItems = def.items.length;\n const isClosed = !def.rest;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (isClosed) {\n json.items = false;\n }\n else if (rest) {\n json.items = rest;\n }\n if (minItems > 0)\n json.minItems = minItems;\n if (isClosed)\n json.maxItems = maxItems;\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n if (minItems > 0)\n json.minItems = minItems;\n if (isClosed)\n json.maxItems = maxItems;\n }\n else {\n json.items = prefixItems;\n if (isClosed) {\n json.additionalItems = false;\n }\n else if (rest) {\n json.additionalItems = rest;\n }\n if (minItems > 0)\n json.minItems = minItems;\n if (isClosed)\n json.maxItems = maxItems;\n }\n // explicit user-defined length checks take precedence\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\n/** JSON object keys are always strings, so a numeric record key schema is re-expressed over the\n * numeric-string form the record parser matches. Deferred to `finalize`, after the flatten: a key\n * behind a wrapper only carries its own `type` before then, and a union key only has its branches.\n *\n * A numeric bound cannot apply to a property name, so `minimum` and its siblings are dropped rather\n * than carried over: keeping them beside `type: \"string\"` reproduces the match-nothing schema this\n * exists to fix. A key that carries one therefore emits wider than the record parses \u2014 `z.record(z.number().min(5), V)`\n * accepts `\"3\"` \u2014 which is the deliberate trade, since throwing on it would reject an ordinary schema\n * outright. */\nfunction stringifyKeyNames(bySchema, json, visited) {\n // an extracted key that rewrites cannot go on sharing its definition \u2014 the string form a key position needs is not the number form every other reference wants \u2014 so it inlines. One that does not rewrite keeps the `$ref`.\n if (json.$ref) {\n // a recursive key holds its own reference inside its definition, so a node already on the path is left alone rather than resolved again\n if (visited.has(json))\n return json;\n visited.add(json);\n const def = bySchema.get(json)?.def;\n if (!def)\n return json;\n const inlined = stringifyKeyNames(bySchema, def, visited);\n return inlined === def ? json : inlined;\n }\n for (const keyword of [\"anyOf\", \"oneOf\"]) {\n const branches = json[keyword];\n if (!Array.isArray(branches))\n continue;\n const mapped = branches.map((branch) => stringifyKeyNames(bySchema, branch, visited));\n // rebuilding regardless would detach a key that had nothing to re-express, dropping its `$ref` and leaking the internal `id`\n if (mapped.some((branch, i) => branch !== branches[i]))\n json = { ...json, [keyword]: mapped };\n }\n // a member that already admits a string leaves the key unconstrained, so the node's own type re-expresses only when every member is numeric\n const types = Array.isArray(json.type) ? json.type : [json.type];\n const numericType = !types.includes(\"string\") && types.some((t) => t === \"number\" || t === \"integer\");\n // a heterogeneous key carries no type at all, so its numeric members are caught here instead\n const values = json.enum ?? (json.const !== undefined ? [json.const] : undefined);\n if (!numericType && !values?.some((v) => typeof v === \"number\"))\n return json;\n const { minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf, format, id, ...rest } = json;\n if (rest.enum)\n rest.enum = rest.enum.map((v) => (typeof v === \"number\" ? String(v) : v));\n else if (typeof rest.const === \"number\")\n rest.const = String(rest.const);\n // a heterogeneous key keeps its absent type: the stringified members already say what a key may be\n if (!numericType)\n return rest;\n rest.type = \"string\";\n if (!values)\n rest.pattern = (types.includes(\"number\") ? regexes.number : regexes.integer).source;\n return rest;\n}\n/** Every record of one conversion, so the carriers are found in a single pass rather than once per record. */\nconst pendingRecords = new WeakMap();\nfunction rewriteKeyNames(ctx) {\n // an extracted key is resolved by the object `extractToDef` left in its place, so the map is built once rather than searched per reference. `_zod.toJSONSchema` can hand the same object to two schemas, so the first entry carrying a body wins, as a search would have found it.\n const bySchema = new Map();\n for (const entry of ctx.seen.values()) {\n if (entry.def && !bySchema.has(entry.schema))\n bySchema.set(entry.schema, entry);\n }\n const rewrites = new Map();\n for (const record of pendingRecords.get(ctx) ?? []) {\n const seen = ctx.seen.get(record);\n const names = (seen?.def ?? seen?.schema)?.propertyNames;\n if (!names || names === true || rewrites.has(names))\n continue;\n const rewritten = stringifyKeyNames(bySchema, names, new Set());\n if (rewritten !== names)\n rewrites.set(names, rewritten);\n }\n if (!rewrites.size)\n return;\n // the flatten has already copied each record's own properties onto every wrapper by reference, and an extracted body is another such copy, so every carrier holding a rewritten key is updated together\n for (const entry of ctx.seen.values()) {\n for (const carrier of [entry.schema, entry.def]) {\n const rewritten = carrier && rewrites.get(carrier.propertyNames);\n if (rewritten)\n carrier.propertyNames = rewritten;\n }\n }\n}\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties. This correctly represents \"only validate keys matching the pattern\" semantics and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n assignProp(json.patternProperties, pattern.source, valueSchema);\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n let pending = pendingRecords.get(ctx);\n if (!pending) {\n pending = [];\n pendingRecords.set(ctx, pending);\n ctx.deferred.push(() => rewriteKeyNames(ctx));\n }\n pending.push(schema);\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n // Every key shares one value schema, so an optional-in value makes the whole key set omittable on input. Output keeps them: the exhaustive branch assigns every key, even one whose value came back undefined.\n const omittableOnInput = ctx.io === \"input\" && inputOptin(def.valueType) !== undefined;\n if (keyValues && !def.partial && !omittableOnInput) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues.map(String);\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\n/** Round-trips a default value through JSON so the emitted schema is guaranteed to be valid JSON.\n * A BigInt has no reliable encoding, so it goes through `unrepresentable` like any other\n * unrepresentable value. Returns a sentinel when the caller must not write a default of its own. */\nconst UNREPRESENTABLE_DEFAULT = Symbol();\nfunction serializeDefaultValue(value, schema, ctx, json, params) {\n let unrepresentable = false;\n const serialized = JSON.stringify(value, (_, val) => {\n if (typeof val !== \"bigint\")\n return val;\n unrepresentable = true;\n return null;\n });\n if (!unrepresentable)\n return JSON.parse(serialized);\n handleUnrepresentable(schema, ctx, json, params, \"BigInt defaults cannot be represented in JSON Schema\");\n return UNREPRESENTABLE_DEFAULT;\n}\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n const value = serializeDefaultValue(def.defaultValue, schema, ctx, json, params);\n if (value !== UNREPRESENTABLE_DEFAULT)\n json.default = value;\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io !== \"input\")\n return;\n const value = serializeDefaultValue(def.defaultValue, schema, ctx, json, params);\n if (value !== UNREPRESENTABLE_DEFAULT)\n json._prefault = value;\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n handleUnrepresentable(schema, ctx, json, params, \"Dynamic catch values are not supported in JSON Schema\");\n return;\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const inIsTransform = def.in._zod.traits.has(\"$ZodTransform\");\n const innerType = ctx.io === \"input\" ? (inIsTransform ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n assignProp(schemas, key, finalize(ctx, schema));\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n", null, "import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\n/* Prototypes that already carry the lazy helper methods. Seeded with the\n * intrinsics so that `init` on a foreign object \u2014 it accepts any object \u2014\n * can never install an accessor onto a prototype we do not own. */\nconst _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);\n/* Helper methods live as non-enumerable lazy getters on the shared\n * prototype instead of own properties on every instance. On first\n * access the getter allocates the per-instance closure and caches it\n * as a non-enumerable own property, so detached usage still works and\n * the allocation only happens for methods actually touched. */\nfunction _lazyMethod(proto, key, make) {\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: false,\n get() {\n const value = make(this);\n Object.defineProperty(this, key, { value, configurable: true, writable: true });\n return value;\n },\n set(value) {\n Object.defineProperty(this, key, { value, configurable: true, writable: true });\n },\n });\n}\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n const proto = Object.getPrototypeOf(inst);\n if (_installedErrorProtos.has(proto))\n return;\n _installedErrorProtos.add(proto);\n _lazyMethod(proto, \"format\", (self) => (mapper) => core.formatError(self, mapper));\n _lazyMethod(proto, \"flatten\", (self) => (mapper) => core.flattenError(self, mapper));\n _lazyMethod(proto, \"addIssue\", (self) => (issue) => {\n self.issues.push(issue);\n self.message = JSON.stringify(self.issues, util.jsonStringifyReplacer, 2);\n });\n _lazyMethod(proto, \"addIssues\", (self) => (issues) => {\n self.issues.push(...issues);\n self.message = JSON.stringify(self.issues, util.jsonStringifyReplacer, 2);\n });\n Object.defineProperty(proto, \"isEmpty\", {\n configurable: true,\n enumerable: false,\n get() {\n return this.issues.length === 0;\n },\n });\n};\nexport const ZodError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer, undefined, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n", "import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\nexport { validate, validateAsync } from \"../core/index.js\";\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n", "import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport en from \"../locales/en.js\";\nimport * as checks from \"./checks.js\";\nimport * as parse from \"./parse.js\";\n// Register English as the default locale on first ZodType construction. Hooked into the `ZodType` `$constructor` (rather than a top-level `config(en())` in `external.ts`) so bundlers honoring `sideEffects: false` can't tree-shake it out \u2014 see #5953, #5725. An explicit `z.config(z.locales.xx())` call wins regardless of order, since this only sets the default when none is present.\nfunction _ensureDefaultLocale() {\n if (!core.globalConfig.localeError)\n core.config(en());\n}\n// the default memoizer is read by the core container init, which runs before `ZodType.init`, so each container calls this first\nfunction _ensureDefaultMemoizer() {\n if (!core.globalConfig.memoizer)\n core.config({ memoizer: core.memoizer() });\n}\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n _ensureDefaultLocale();\n core.$ZodType.init(inst, def);\n inst.def = def;\n inst.type = def.type;\n return inst;\n}, {\n check(...chks) {\n const def = this.def;\n return this.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...chks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), { parent: true });\n },\n with(...chks) {\n return this.check(...chks);\n },\n clone(def, params) {\n return core.clone(this, def, params);\n },\n brand() {\n return this;\n },\n register(reg, meta) {\n reg.add(this, meta);\n return this;\n },\n refine(check, params) {\n return this.check(refine(check, params));\n },\n superRefine(refinement, params) {\n return this.check(superRefine(refinement, params));\n },\n overwrite(fn) {\n return this.check(checks.overwrite(fn));\n },\n optional() {\n return optional(this);\n },\n exactOptional() {\n return exactOptional(this);\n },\n nullable() {\n return nullable(this);\n },\n nullish() {\n return optional(nullable(this));\n },\n nonoptional(params) {\n return nonoptional(this, params);\n },\n array() {\n return array(this);\n },\n or(arg) {\n return union([this, arg]);\n },\n and(arg) {\n return intersection(this, arg);\n },\n transform(tx) {\n return pipe(this, transform(tx));\n },\n default(d) {\n return _default(this, d);\n },\n prefault(d) {\n return prefault(this, d);\n },\n catch(params) {\n return _catch(this, params);\n },\n pipe(target) {\n return pipe(this, target);\n },\n readonly() {\n return readonly(this);\n },\n describe(description) {\n const cl = this.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n },\n meta(...args) {\n // overloaded: meta() returns the registered metadata, meta(data) returns a clone with `data` registered. The mapped type picks up the second overload, so we accept variadic any-args and return `any` to satisfy both at runtime.\n if (args.length === 0)\n return core.globalRegistry.get(this);\n const cl = this.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n },\n isOptional() {\n return this.safeParse(undefined).success;\n },\n isNullable() {\n return this.safeParse(null).success;\n },\n apply(fn, ...args) {\n return args.length === 0 ? fn(this) : fn(this, ...args);\n },\n // Overrides core's `~standard` to add `jsonSchema`. Must stay a prototype entry: redefining it per instance demotes instances to dictionary mode.\n get \"~standard\"() {\n return util.hide(this, \"~standard\", {\n ...core.standardProps(this),\n jsonSchema: {\n input: createStandardJSONSchemaMethod(this, \"input\"),\n output: createStandardJSONSchemaMethod(this, \"output\"),\n },\n });\n },\n set \"~standard\"(value) {\n util.own(this, \"~standard\", value);\n },\n parse: function _parse(data, params) {\n return parse.parse(this, data, params, { callee: _parse });\n },\n parseAsync: async function _parseAsync(data, params) {\n return await parse.parseAsync(this, data, params, { callee: _parseAsync });\n },\n safeParse(data, params) {\n return parse.safeParse(this, data, params);\n },\n async safeParseAsync(data, params) {\n return parse.safeParseAsync(this, data, params);\n },\n // `spa` is an alias: same function object as `safeParseAsync`, as before.\n get spa() {\n return this?.safeParseAsync;\n },\n set spa(value) {\n util.own(this, \"spa\", value);\n },\n encode: function _encode(data, params) {\n return parse.encode(this, data, params, { callee: _encode });\n },\n decode: function _decode(data, params) {\n return parse.decode(this, data, params, { callee: _decode });\n },\n encodeAsync: async function _encodeAsync(data, params) {\n return await parse.encodeAsync(this, data, params, { callee: _encodeAsync });\n },\n decodeAsync: async function _decodeAsync(data, params) {\n return await parse.decodeAsync(this, data, params, { callee: _decodeAsync });\n },\n safeEncode(data, params) {\n return parse.safeEncode(this, data, params);\n },\n safeDecode(data, params) {\n return parse.safeDecode(this, data, params);\n },\n async safeEncodeAsync(data, params) {\n return parse.safeEncodeAsync(this, data, params);\n },\n async safeDecodeAsync(data, params) {\n return parse.safeDecodeAsync(this, data, params);\n },\n toJSONSchema(params) {\n return createToJSONSchemaMethod(this, {})(params);\n },\n // Reads through to the registry on every access, so it must not cache.\n get description() {\n return core.globalRegistry.get(this)?.description;\n },\n // No setter: `schema._def = x` throws, as it did when `_def` was a non-writable own property.\n get _def() {\n return this._zod.def;\n },\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n}, {\n regex(...args) {\n return this.check(checks.regex(...args));\n },\n includes(...args) {\n return this.check(checks.includes(...args));\n },\n startsWith(...args) {\n return this.check(checks.startsWith(...args));\n },\n endsWith(...args) {\n return this.check(checks.endsWith(...args));\n },\n min(...args) {\n return this.check(checks.minLength(...args));\n },\n max(...args) {\n return this.check(checks.maxLength(...args));\n },\n length(...args) {\n return this.check(checks.length(...args));\n },\n nonempty(...args) {\n return this.check(checks.minLength(1, ...args));\n },\n lowercase(params) {\n return this.check(checks.lowercase(params));\n },\n uppercase(params) {\n return this.check(checks.uppercase(params));\n },\n trim() {\n return this.check(checks.trim());\n },\n normalize(...args) {\n return this.check(checks.normalize(...args));\n },\n toLowerCase() {\n return this.check(checks.toLowerCase());\n },\n toUpperCase() {\n return this.check(checks.toUpperCase());\n },\n slugify() {\n return this.check(checks.slugify());\n },\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n}, {\n email(params) {\n return this.check(core._email(ZodEmail, params));\n },\n url(params) {\n return this.check(core._url(ZodURL, params));\n },\n jwt(params) {\n return this.check(core._jwt(ZodJWT, params));\n },\n emoji(params) {\n return this.check(core._emoji(ZodEmoji, params));\n },\n guid(params) {\n return this.check(core._guid(ZodGUID, params));\n },\n uuid(params) {\n return this.check(core._uuid(ZodUUID, params));\n },\n uuidv4(params) {\n return this.check(core._uuidv4(ZodUUID, params));\n },\n uuidv6(params) {\n return this.check(core._uuidv6(ZodUUID, params));\n },\n uuidv7(params) {\n return this.check(core._uuidv7(ZodUUID, params));\n },\n nanoid(params) {\n return this.check(core._nanoid(ZodNanoID, params));\n },\n cuid(params) {\n return this.check(core._cuid(ZodCUID, params));\n },\n cuid2(params) {\n return this.check(core._cuid2(ZodCUID2, params));\n },\n ulid(params) {\n return this.check(core._ulid(ZodULID, params));\n },\n base64(params) {\n return this.check(core._base64(ZodBase64, params));\n },\n base64url(params) {\n return this.check(core._base64url(ZodBase64URL, params));\n },\n xid(params) {\n return this.check(core._xid(ZodXID, params));\n },\n ksuid(params) {\n return this.check(core._ksuid(ZodKSUID, params));\n },\n ipv4(params) {\n return this.check(core._ipv4(ZodIPv4, params));\n },\n ipv6(params) {\n return this.check(core._ipv6(ZodIPv6, params));\n },\n cidrv4(params) {\n return this.check(core._cidrv4(ZodCIDRv4, params));\n },\n cidrv6(params) {\n return this.check(core._cidrv6(ZodCIDRv6, params));\n },\n e164(params) {\n return this.check(core._e164(ZodE164, params));\n },\n datetime(params) {\n return this.check(core._isoDateTime(ZodISODateTime, params));\n },\n date(params) {\n return this.check(core._isoDate(ZodISODate, params));\n },\n time(params) {\n return this.check(core._isoTime(ZodISOTime, params));\n },\n duration(params) {\n return this.check(core._isoDuration(ZodISODuration, params));\n },\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: core.regexes.httpProtocol,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\n/**\n * Validates a CUID v1 string.\n *\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2 | `z.cuid2()`} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodCreditCard = /*@__PURE__*/ core.$constructor(\"ZodCreditCard\", (inst, def) => {\n core.$ZodCreditCard.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function creditCard(params) {\n return core._creditCard(ZodCreditCard, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n}, {\n gt(value, params) {\n return this.check(checks.gt(value, params));\n },\n gte(value, params) {\n return this.check(checks.gte(value, params));\n },\n min(value, params) {\n return this.check(checks.gte(value, params));\n },\n lt(value, params) {\n return this.check(checks.lt(value, params));\n },\n lte(value, params) {\n return this.check(checks.lte(value, params));\n },\n max(value, params) {\n return this.check(checks.lte(value, params));\n },\n int(params) {\n return this.check(int(params));\n },\n safe(params) {\n return this.check(int(params));\n },\n positive(params) {\n return this.check(checks.gt(0, params));\n },\n nonnegative(params) {\n return this.check(checks.gte(0, params));\n },\n negative(params) {\n return this.check(checks.lt(0, params));\n },\n nonpositive(params) {\n return this.check(checks.lte(0, params));\n },\n multipleOf(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n step(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n finite() {\n return this;\n },\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n}, {\n gte(value, params) {\n return this.check(checks.gte(value, params));\n },\n min(value, params) {\n return this.check(checks.gte(value, params));\n },\n gt(value, params) {\n return this.check(checks.gt(value, params));\n },\n lt(value, params) {\n return this.check(checks.lt(value, params));\n },\n lte(value, params) {\n return this.check(checks.lte(value, params));\n },\n max(value, params) {\n return this.check(checks.lte(value, params));\n },\n positive(params) {\n return this.check(checks.gt(BigInt(0), params));\n },\n negative(params) {\n return this.check(checks.lt(BigInt(0), params));\n },\n nonpositive(params) {\n return this.check(checks.lte(BigInt(0), params));\n },\n nonnegative(params) {\n return this.check(checks.gte(BigInt(0), params));\n },\n multipleOf(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n}, {\n min(n, params) {\n return this.check(checks.minLength(n, params));\n },\n nonempty(params) {\n return this.check(checks.minLength(1, params));\n },\n max(n, params) {\n return this.check(checks.maxLength(n, params));\n },\n length(n, params) {\n return this.check(checks.length(n, params));\n },\n unwrap() {\n return this.element;\n },\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.installLazyProp(inst, \"shape\", (self) => self._zod.def.shape, false);\n}, {\n keyof() {\n return _enum(Object.keys(this._zod.def.shape));\n },\n catchall(catchall) {\n return this.clone({ ...this._zod.def, catchall: catchall });\n },\n passthrough() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n loose() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n strict() {\n return this.clone({ ...this._zod.def, catchall: never() });\n },\n strip() {\n return this.clone({ ...this._zod.def, catchall: undefined });\n },\n extend(incoming) {\n return util.extend(this, incoming);\n },\n safeExtend(incoming) {\n return util.safeExtend(this, incoming);\n },\n merge(other) {\n return util.merge(this, other);\n },\n pick(mask) {\n return util.pick(this, mask);\n },\n omit(mask) {\n return util.omit(this, mask);\n },\n partial(...args) {\n return util.partial(ZodOptional, this, args[0]);\n },\n exactPartial(...args) {\n return util.partial(ZodExactOptional, this, args[0], \"exactPartial\");\n },\n required(...args) {\n return util.required(ZodNonOptional, this, args[0]);\n },\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options: options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n}, {\n rest(rest) {\n return this.clone({\n ...this._zod.def,\n rest: rest,\n });\n },\n partial() {\n const def = this._zod.def;\n // a refinement was authored against the full arity; partialing would run it on a shorter array\n if (def.checks?.length)\n throw new Error(\".partial() cannot be used on tuple schemas containing refinements\");\n return this.clone({\n ...def,\n items: def.items.map((item) => new ZodOptional({ type: \"optional\", innerType: item })),\n });\n },\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n // v3-compat: z.record(valueType, params?) \u2014 defaults keyType to z.string()\n if (!valueType || !valueType._zod) {\n return new ZodRecord({\n type: \"record\",\n keyType: string(),\n valueType: keyType,\n ...util.normalizeParams(valueType),\n });\n }\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n partial: true,\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n if (!(\"input\" in _issue))\n _issue.input = payload.value;\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : core.util.constantCatch(catchValue)),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport function invertCodec(codec) {\n const def = codec._zod.def;\n return new ZodCodec({\n type: \"pipe\",\n in: def.out,\n out: def.in,\n transform: def.reverseTransform,\n reverseTransform: def.transform,\n });\n}\nexport const ZodPreprocess = /*@__PURE__*/ core.$constructor(\"ZodPreprocess\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodPreprocess.init(inst, def);\n});\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn, params) {\n return core._superRefine(fn, params);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\nexport function preprocess(fn, schema) {\n return new ZodPreprocess({\n type: \"pipe\",\n in: transform(fn),\n out: schema,\n });\n}\n", "import * as core from \"../core/index.js\";\nimport { ZodISODate, ZodISODateTime, ZodISODuration, ZodISOTime } from \"./schemas.js\";\nexport { ZodISODate, ZodISODateTime, ZodISODuration, ZodISOTime } from \"./schemas.js\";\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n", null, null, "import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n};\nexport function parseStringDef(def, refs) {\n const res = {\n type: \"string\",\n };\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n break;\n case \"endsWith\":\n addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"includes\": {\n addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\", check.message, refs);\n break;\n }\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n break;\n }\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n ((_) => { })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n let result = \"\";\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n result += source[i];\n }\n return result;\n}\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(schema, value, message, refs) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(schema, regex, message, refs) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"),\n m: regex.flags.includes(\"m\"),\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n }\n else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n }\n else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n }\n else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n }\n else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\n}\n", null, null, null, null, null, null, null, null, "import type { ToolDefinition } from '@tnega/tools'\nimport type { SessionMode } from '@tnega/session'\nimport { listSkills, readSkill, type SkillEntry } from './skills.js'\nimport type { McpSurvey } from './mcp.js'\nimport type { SlashCommand, SlashCommandResult, SlashSuggestion } from './types.js'\nexport type { SlashCommandResult, SlashSuggestion } from './types.js'\n\nexport interface SlashContext {\n tools: readonly ToolDefinition[]\n cwd: string\n mode?: SessionMode\n setMode?: (mode: SessionMode) => void | Promise<void>\n skills?: SkillEntry[]\n mcp?: {\n surveys: McpSurvey[]\n tools: readonly ToolDefinition[]\n }\n}\n\nexport type SlashHandler = (\n args: string[],\n context: SlashContext,\n) => SlashCommandResult | Promise<SlashCommandResult>\n\nexport type SlashSuggester = (\n context: SlashContext,\n) => SlashSuggestion[] | Promise<SlashSuggestion[]>\n\nexport class SlashRegistry {\n private _commands = new Map<string, {\n description: string\n handler: SlashHandler\n suggest?: SlashSuggester\n }>()\n\n register(\n name: string,\n description: string,\n handler: SlashHandler,\n suggest?: SlashSuggester,\n ): void {\n const normalized = name.startsWith('/') ? name : `/${name}`\n if (this._commands.has(normalized)) {\n throw new Error(`slash command already registered: ${normalized}`)\n }\n this._commands.set(normalized, suggest\n ? { description, handler, suggest }\n : { description, handler })\n }\n\n list(): SlashCommand[] {\n return [...this._commands.entries()].map(([name, entry]) => ({\n name,\n description: entry.description,\n }))\n }\n\n async run(name: string, args: string[], context: SlashContext): Promise<SlashCommandResult> {\n const normalized = name.startsWith('/') ? name : `/${name}`\n const entry = this._commands.get(normalized)\n if (!entry) {\n return { kind: 'text', text: `unknown slash command: ${normalized}` }\n }\n return entry.handler(args, context)\n }\n\n async suggest(name: string, context: SlashContext): Promise<SlashSuggestion[]> {\n const normalized = name.startsWith('/') ? name : `/${name}`\n const entry = this._commands.get(normalized)\n return entry?.suggest ? entry.suggest(context) : []\n }\n\n has(name: string): boolean {\n return this._commands.has(name.startsWith('/') ? name : `/${name}`)\n }\n}\n\nexport function createSlashRegistry(): SlashRegistry {\n const registry = new SlashRegistry()\n registry.register(\n '/plan',\n 'Generate an implementation plan before executing. Used in plan and execute modes.',\n () => ({ kind: 'text', text: '/plan is handled by the session run pipeline.' }),\n )\n registry.register(\n '/mode',\n 'Show or switch the session mode: /mode, /mode plan, /mode execute, /mode auto.',\n async (args, context) => {\n const modes: SessionMode[] = ['auto', 'plan', 'execute']\n if (!args.length) {\n return {\n kind: 'json',\n value: {\n modes,\n current: context.mode ?? 'auto',\n },\n }\n }\n const requested = args[0]!.trim().toLowerCase()\n if (!modes.includes(requested as SessionMode)) {\n return {\n kind: 'text',\n text: `invalid mode: ${args[0]}; expected auto, plan or execute`,\n }\n }\n const next = requested as SessionMode\n if (!context.setMode) {\n return {\n kind: 'text',\n text: 'mode switching is not available in this context',\n }\n }\n await context.setMode(next)\n return {\n kind: 'json',\n value: {\n modes,\n current: next,\n switched: true,\n },\n }\n },\n )\n registry.register(\n '/skills',\n 'List workspace skills, or read one with /skills <name>.',\n async (args, context) => {\n const skills = context.skills ?? await listSkills(context.cwd)\n if (!args.length) {\n return {\n kind: 'json',\n value: {\n skills: skills.map(skill => ({\n name: skill.name,\n description: skill.description,\n })),\n },\n }\n }\n const name = args[0]!\n const known = skills.some(skill => skill.name === name)\n if (!known) {\n return {\n kind: 'text',\n text: `unknown skill: ${name}`,\n }\n }\n const content = await readSkill(context.cwd, name)\n return {\n kind: 'text',\n text: `# ${name}\\n\\n${content}`,\n }\n },\n async (context) => {\n const skills = context.skills ?? await listSkills(context.cwd)\n return skills.map(skill => ({\n command: '/skills',\n args: [skill.name],\n label: skill.name,\n detail: skill.description,\n }))\n },\n )\n registry.register(\n '/mcp',\n 'Show connected MCP servers and their tools.',\n async (args, context) => {\n const surveys = context.mcp?.surveys ?? []\n const tools = (context.mcp?.tools ?? context.tools)\n .filter(tool => tool.schema.name.startsWith('mcp__'))\n if (args.length === 0) {\n return {\n kind: 'json',\n value: {\n servers: surveys.map(survey => ({\n name: survey.name,\n status: survey.status,\n toolCount: survey.toolCount,\n ...(survey.error ? { error: survey.error } : {}),\n })),\n tools: tools.map(tool => tool.schema.name),\n },\n }\n }\n const serverName = args[0]!\n const survey = surveys.find(entry => entry.name === serverName)\n if (!survey) {\n return {\n kind: 'text',\n text: `unknown mcp server: ${serverName}`,\n }\n }\n const serverTools = tools.filter(tool =>\n tool.schema.name.startsWith(`mcp__${serverName}__`),\n )\n if (args.length === 1) {\n return {\n kind: 'json',\n value: {\n server: {\n name: survey.name,\n status: survey.status,\n toolCount: survey.toolCount,\n ...(survey.error ? { error: survey.error } : {}),\n },\n tools: serverTools.map(tool => tool.schema.name),\n },\n }\n }\n const toolName = args.slice(1).join('__')\n const tool = serverTools.find(entry =>\n entry.schema.name === `mcp__${serverName}__${toolName}`,\n )\n if (!tool) {\n return {\n kind: 'text',\n text: `unknown mcp tool: ${args.slice(1).join(' ')} on server ${serverName}`,\n }\n }\n return {\n kind: 'json',\n value: {\n server: survey.name,\n tool: tool.schema.name,\n description: tool.schema.description,\n schema: tool.schema.parameters ?? {},\n },\n }\n },\n async (context) => {\n const surveys = context.mcp?.surveys ?? []\n const tools = (context.mcp?.tools ?? context.tools)\n .filter(tool => tool.schema.name.startsWith('mcp__'))\n const suggestions: SlashSuggestion[] = []\n for (const survey of surveys) {\n suggestions.push({\n command: '/mcp',\n args: [survey.name],\n label: survey.name,\n detail: `${survey.status} / ${survey.toolCount} tools`,\n })\n }\n for (const tool of tools) {\n const parts = tool.schema.name.split('__')\n const server = parts[1]\n if (parts[0] === 'mcp' && server) {\n suggestions.push({\n command: '/mcp',\n args: [server, parts.slice(2).join('__')],\n label: tool.schema.name,\n detail: tool.schema.description,\n })\n }\n }\n return suggestions\n },\n )\n return registry\n}\n", "import type { Context, Plugin } from '@tnega/core'\r\nimport { defineAgent, type LLMAdapter } from '@tnega/agent'\r\nimport type { ModelMessage, SessionMode } from '@tnega/session'\r\nimport type { ToolDefinition } from '@tnega/tools'\r\nimport { connectMcpServers, type McpRuntime } from './mcp.js'\r\nimport { generatePlan } from './plan.js'\r\nimport { listSkills, skillReadTool, skillTool } from './skills.js'\r\nimport { createSlashRegistry, type SlashCommandResult } from './slash.js'\r\nimport type { CodingSurvey, Plan, SlashCommand, SlashSuggestion } from './types.js'\r\n\r\nexport interface CodingAgentOptions {\r\n cwd: string\r\n mode?: SessionMode\r\n setMode?: (mode: SessionMode) => void | Promise<void>\r\n skills?: boolean\r\n mcp?: boolean\r\n planTools?: boolean\r\n registerAgent?: boolean\r\n systemPrompt?: string\r\n planPrompt?: string\r\n}\r\n\r\nexport interface CodingService {\r\n generatePlan(adapter: LLMAdapter, messages: readonly ModelMessage[], signal?: AbortSignal): Promise<Plan>\r\n commands(): SlashCommand[]\r\n runCommand(name: string, args: string[]): Promise<SlashCommandResult>\r\n suggestCommand(name: string): Promise<SlashSuggestion[]>\r\n survey(): CodingSurvey\r\n}\r\n\r\ntype DynamicContext = Context & {\r\n tools: {\r\n register(tool: ToolDefinition): () => void\r\n list(): readonly ToolDefinition[]\r\n }\r\n}\r\n\r\nconst dynamic = (ctx: Context): DynamicContext => ctx as unknown as DynamicContext\r\n\r\nexport const CODING_SYSTEM_PROMPT = `You are Tnega, a coding agent running in a workspace session.\r\n\r\nYou work iteratively in the user's repository:\r\n- Inspect the workspace before editing when the task is unclear.\r\n- Make small, reviewable changes and verify them with tests or commands when appropriate.\r\n- Report exact file paths and command output in your final answer.\r\n- Keep the user's existing code conventions and do not rewrite unrelated code.\r\n\r\nWhen a plan is present, follow it and keep every item's status updated with the plan tools.`\r\n\r\nfunction planToolDefinitions(): ToolDefinition[] {\r\n return [\r\n {\r\n schema: {\r\n name: 'plan_execute_mark',\r\n description: 'Mark one plan item as pending, done, or failed while executing the plan.',\r\n parameters: {\r\n type: 'object',\r\n properties: {\r\n id: { type: 'string', description: 'plan item id, e.g. plan-1' },\r\n status: {\r\n type: 'string',\r\n enum: ['pending', 'done', 'failed'],\r\n description: 'new status for the item',\r\n },\r\n },\r\n required: ['id', 'status'],\r\n },\r\n },\r\n execute: (input) => {\r\n const record = input && typeof input === 'object' ? input as Record<string, unknown> : {}\r\n const id = typeof record.id === 'string' ? record.id : ''\r\n const status = typeof record.status === 'string' ? record.status : ''\r\n if (!id) throw new TypeError('id is required')\r\n if (status !== 'pending' && status !== 'done' && status !== 'failed') {\r\n throw new TypeError(`invalid status: ${status}`)\r\n }\r\n return { id, status }\r\n },\r\n },\r\n {\r\n schema: {\r\n name: 'plan_execute_result',\r\n description: 'Report the final result and status of the current plan execution.',\r\n parameters: {\r\n type: 'object',\r\n properties: {\r\n status: {\r\n type: 'string',\r\n enum: ['done', 'failed'],\r\n description: 'overall execution status',\r\n },\r\n summary: { type: 'string', description: 'what was completed or blocked' },\r\n },\r\n required: ['status'],\r\n },\r\n },\r\n execute: (input) => {\r\n const record = input && typeof input === 'object' ? input as Record<string, unknown> : {}\r\n const status = typeof record.status === 'string' ? record.status : ''\r\n const summary = typeof record.summary === 'string' ? record.summary : undefined\r\n if (status !== 'done' && status !== 'failed') {\r\n throw new TypeError(`invalid status: ${status}`)\r\n }\r\n return {\r\n status,\r\n ...(summary ? { summary } : {}),\r\n }\r\n },\r\n },\r\n ]\r\n}\r\n\r\nexport function createCodingAgentPlugin(\r\n options: CodingAgentOptions,\r\n): Plugin {\r\n const cwd = options.cwd\r\n const skillsEnabled = options.skills ?? true\r\n const mcpEnabled = options.mcp ?? true\r\n const planToolsEnabled = options.planTools ?? true\r\n const mode = options.mode\r\n const setMode = options.setMode\r\n const registerAgent = options.registerAgent ?? true\r\n\r\n return {\r\n name: 'coding-agent',\r\n inject: ['session', 'tools'],\r\n apply: async (ctx: Context) => {\r\n const service = dynamic(ctx)\r\n const tools: ToolDefinition[] = []\r\n const planTools = planToolsEnabled ? planToolDefinitions() : []\r\n const skillEntries = await listSkills(cwd)\r\n tools.push(...planTools)\r\n let skillCount = 0\r\n let mcpServers = 0\r\n let mcpTools = 0\r\n\r\n if (skillsEnabled) {\r\n tools.push(await skillTool(cwd))\r\n tools.push(await skillReadTool(cwd))\r\n skillCount = 2\r\n }\r\n let mcpRuntime: McpRuntime | undefined\r\n if (mcpEnabled) {\r\n mcpRuntime = await connectMcpServers(cwd, () => {\r\n mcpTools += 1\r\n })\r\n mcpServers = mcpRuntime.surveys.length\r\n for (const survey of mcpRuntime.surveys) {\r\n if (survey.status === 'failed') {\r\n throw new Error(`mcp server ${survey.name} failed: ${survey.error ?? 'unknown'}`)\r\n }\r\n }\r\n tools.push(...mcpRuntime.tools)\r\n ctx.fiber.effect(() => () => {\r\n void mcpRuntime?.dispose()\r\n }, 'coding:dispose-mcp')\r\n }\r\n for (const tool of tools) {\r\n service.tools.register(tool)\r\n }\r\n\r\n const slash = createSlashRegistry()\r\n const slashContext = (): Parameters<typeof slash.run>[2] => ({\r\n cwd,\r\n tools: service.tools.list(),\r\n ...(mode ? { mode } : {}),\r\n ...(setMode ? { setMode } : {}),\r\n ...(skillEntries.length ? { skills: skillEntries } : {}),\r\n ...(mcpRuntime ? {\r\n mcp: {\r\n surveys: mcpRuntime.surveys,\r\n tools: mcpRuntime.tools,\r\n },\r\n } : {}),\r\n })\r\n const survey = (): CodingSurvey => ({\r\n agentType: 'coding',\r\n mode: mode ?? 'auto',\r\n planTools: planTools.length,\r\n skillsEnabled,\r\n skills: skillCount,\r\n mcpEnabled,\r\n mcpServers,\r\n mcpTools,\r\n })\r\n\r\n ctx.provide('coding', {\r\n generatePlan: (adapter, messages, signal) =>\r\n generatePlan(adapter, messages, signal, options.planPrompt),\r\n commands: () => slash.list(),\r\n runCommand: async (name, args) => slash.run(name, args, slashContext()),\r\n suggestCommand: async (name) => slash.suggest(name, slashContext()),\r\n survey,\r\n } satisfies CodingService)\r\n\r\n if (registerAgent) {\r\n const systemPrompt = options.systemPrompt ?? CODING_SYSTEM_PROMPT\r\n await ctx.plugin(defineAgent({\r\n name: 'coding',\r\n version: '0.1.0',\r\n system: systemPrompt,\r\n tools: [],\r\n }))\r\n }\r\n },\r\n }\r\n}\r\n", "import { defineAgent, type AgentLoop, type LLMAdapter } from '@tnega/agent'\r\nimport { CODING_SYSTEM_PROMPT, createCodingAgentPlugin } from '@tnega/coding-agent'\r\nimport { Context } from '@tnega/core'\r\nimport { session } from '@tnega/session'\r\nimport { builtinTools, tools, type ToolPolicy } from '@tnega/tools'\r\n\r\nimport type { CodingEvalConfig } from './types.js'\r\n\r\nexport interface CodingEvalRuntimeOptions {\r\n cwd: string\r\n sessionFile: string\r\n config: CodingEvalConfig\r\n toolPolicy: ToolPolicy\r\n allowShell?: boolean\r\n allowNetwork?: boolean\r\n}\r\n\r\nexport interface CodingEvalRuntime {\r\n root: Context\r\n loop: AgentLoop\r\n dispose(): Promise<void>\r\n}\r\n\r\nexport async function createCodingEvalRuntime(\r\n options: CodingEvalRuntimeOptions,\r\n): Promise<CodingEvalRuntime> {\r\n const root = new Context()\r\n await root.plugin(session, { file: options.sessionFile })\r\n await root.plugin(tools, options.toolPolicy)\r\n await root.plugin(builtinTools, {\r\n cwd: options.cwd,\r\n allowNetwork: options.allowNetwork ?? false,\r\n allowShell: options.allowShell ?? false,\r\n disabled: [],\r\n })\r\n\r\n const agentConfig: {\r\n llm: LLMAdapter\r\n maxTurns?: number\r\n maxSteps?: number\r\n } = { llm: options.config.llm }\r\n if (options.config.agent?.maxTurns !== undefined) {\r\n agentConfig.maxTurns = options.config.agent.maxTurns\r\n }\r\n if (options.config.agent?.maxSteps !== undefined) {\r\n agentConfig.maxSteps = options.config.agent.maxSteps\r\n }\r\n await root.plugin(defineAgent({\r\n name: 'coding-eval',\r\n system: options.config.agent?.systemPrompt ?? CODING_SYSTEM_PROMPT,\r\n }), agentConfig)\r\n\r\n const codingOptions: {\r\n cwd: string\r\n skills: boolean\r\n planTools: boolean\r\n mcp: boolean\r\n registerAgent: boolean\r\n planPrompt?: string\r\n } = {\r\n cwd: options.cwd,\r\n skills: options.config.coding?.skills ?? false,\r\n planTools: options.config.coding?.planTools ?? true,\r\n mcp: false,\r\n registerAgent: false,\r\n }\r\n if (options.config.coding?.planPrompt !== undefined) {\r\n codingOptions.planPrompt = options.config.coding.planPrompt\r\n }\r\n await root.plugin(createCodingAgentPlugin(codingOptions))\r\n\r\n const loop = root.get('agentLoop') as AgentLoop\r\n return {\r\n root,\r\n loop,\r\n dispose: async () => {\r\n await root.fiber.dispose()\r\n },\r\n }\r\n}\r\n", "import type { ToolPolicy, ToolResult, ToolRequest } from '@tnega/tools'\r\n\r\nimport type { TaskPermissions } from './types.js'\r\n\r\nconst DEFAULT_TOOL_WHITELIST = [\r\n 'calculator',\r\n 'json',\r\n 'read_file',\r\n 'write_file',\r\n 'list_dir',\r\n 'glob',\r\n 'grep',\r\n] as const\r\n\r\nexport interface EvalToolPolicyOptions {\r\n workspace: string\r\n permissions?: TaskPermissions\r\n maxOutputBytes?: number\r\n}\r\n\r\nfunction commandMatches(prefixes: string[] | undefined, command: string): boolean {\r\n if (!prefixes?.length) return false\r\n return prefixes.some(\r\n prefix => command === prefix\r\n || command.startsWith(`${prefix} `)\r\n || command.startsWith(`${prefix}\\n`),\r\n )\r\n}\r\n\r\nfunction shellCommand(input: unknown): string {\r\n if (!input || typeof input !== 'object' || Array.isArray(input)) return ''\r\n const value = (input as Record<string, unknown>).command\r\n return typeof value === 'string' ? value : ''\r\n}\r\n\r\nexport function createEvalToolPolicy(options: EvalToolPolicyOptions): ToolPolicy {\r\n const permissions = options.permissions ?? {}\r\n const whitelist = permissions.tools ?? DEFAULT_TOOL_WHITELIST\r\n const shellPolicy = permissions.shell\r\n const maxOutputBytes = options.maxOutputBytes ?? 256 * 1024\r\n\r\n return {\r\n async authorizer(request: ToolRequest): Promise<boolean> {\r\n if (request.name === 'http_get') return permissions.network === true\r\n if (request.name === 'shell') {\r\n if (!shellPolicy?.enabled) return false\r\n const command = shellCommand(request.input)\r\n return commandMatches(shellPolicy.allow, command)\r\n && !commandMatches(shellPolicy.deny, command)\r\n }\r\n return (whitelist as readonly string[]).includes(request.name)\r\n },\r\n async truncator(result: ToolResult): Promise<ToolResult> {\r\n if (typeof result.output !== 'string' || result.output.length <= maxOutputBytes) {\r\n return result\r\n }\r\n return {\r\n ...result,\r\n output: result.output.slice(0, maxOutputBytes),\r\n }\r\n },\r\n }\r\n}\r\n", "import { readFile } from 'node:fs/promises'\r\nimport type { SessionEvent } from '@tnega/session'\r\n\r\nimport type { TrialTrace } from './types.js'\r\n\r\nexport async function readTrace(file: string): Promise<SessionEvent[]> {\r\n const text = await readFile(file, 'utf8')\r\n const events: SessionEvent[] = []\r\n for (const line of text.split('\\n')) {\r\n const trimmed = line.trim()\r\n if (!trimmed) continue\r\n events.push(JSON.parse(trimmed) as SessionEvent)\r\n }\r\n return events\r\n}\r\n\r\nexport async function deriveTraceMetrics(\r\n file: string,\r\n startedAt: number,\r\n endedAt: number,\r\n usage: { tokens?: number; cost?: number } = {},\r\n): Promise<TrialTrace> {\r\n const events = await readTrace(file)\r\n let steps = 0\r\n let turns = 0\r\n let toolCalls = 0\r\n let toolErrors = 0\r\n let invalidToolCalls = 0\r\n let retries = 0\r\n let sawError = false\r\n let recoveredAfterError = false\r\n\r\n for (const event of events) {\r\n switch (event.type) {\r\n case 'tool/call':\r\n toolCalls += 1\r\n break\r\n case 'tool/result':\r\n if (event.payload.ok) {\r\n if (sawError) {\r\n recoveredAfterError = true\r\n sawError = false\r\n }\r\n } else {\r\n toolErrors += 1\r\n const name = event.payload.error?.name ?? ''\r\n if (\r\n name === 'ToolInputError'\r\n || name === 'ToolNotFoundError'\r\n || name === 'ToolAuthorizationError'\r\n ) {\r\n invalidToolCalls += 1\r\n }\r\n sawError = true\r\n }\r\n break\r\n case 'llm/retry':\r\n case 'llm/retry-started':\r\n retries += 1\r\n break\r\n case 'step/end':\r\n steps += 1\r\n break\r\n case 'turn/end':\r\n turns += 1\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n return {\r\n file,\r\n startedAt,\r\n endedAt,\r\n durationMs: Math.max(0, endedAt - startedAt),\r\n metrics: {\r\n steps,\r\n turns,\r\n toolCalls,\r\n toolErrors,\r\n invalidToolCalls,\r\n retries,\r\n tokens: usage.tokens ?? 0,\r\n cost: usage.cost ?? 0,\r\n recoveredAfterError,\r\n },\r\n }\r\n}\r\n", "import { createHash } from 'node:crypto'\nimport { mkdir, readFile, writeFile } from 'node:fs/promises'\nimport { dirname, resolve } from 'node:path'\n\nexport function stableStringify(value: unknown): string {\n const seen = new Set<unknown>()\n return JSON.stringify(value, (_key, entry) => {\n if (typeof entry === 'function' || typeof entry === 'symbol') return undefined\n if (entry && typeof entry === 'object') {\n if (seen.has(entry)) return '[Circular]'\n seen.add(entry)\n if (Array.isArray(entry)) {\n return entry.map(item => item ?? null)\n }\n const sorted: Record<string, unknown> = {}\n for (const key of Object.keys(entry).sort()) {\n sorted[key] = entry[key]\n }\n return sorted\n }\n return entry\n })\n}\n\nexport function hashJson(value: unknown): string {\n return createHash('sha256').update(stableStringify(value) ?? '').digest('hex').slice(0, 16)\n}\n\nexport function clone<T>(value: T): T {\n if (value === undefined) return value\n return structuredClone(value)\n}\n\nexport async function saveJson(file: string, value: unknown): Promise<void> {\n const target = resolve(file)\n await mkdir(dirname(target), { recursive: true })\n await writeFile(target, `${JSON.stringify(value, null, 2)}\\n`, 'utf8')\n}\n\nexport async function loadJson<T>(file: string): Promise<T> {\n const text = await readFile(resolve(file), 'utf8')\n return JSON.parse(text) as T\n}\n", "import { spawn, type ChildProcess } from 'node:child_process'\r\nimport { cp, mkdtemp, mkdir, readFile, rm, writeFile } from 'node:fs/promises'\r\nimport { tmpdir } from 'node:os'\r\nimport { dirname, join } from 'node:path'\r\nimport { resolveInside } from '@tnega/tools'\r\n\r\nimport type { EvalWorkspaceFixture, Task } from './types.js'\r\n\r\nexport interface TaskWorkspace {\r\n dir: string\r\n dispose(): Promise<void>\r\n}\r\n\r\nexport interface WorkspaceCommandOptions {\r\n timeoutMs?: number\r\n maxBuffer?: number\r\n signal?: AbortSignal\r\n}\r\n\r\nexport interface WorkspaceCommandResult {\r\n exitCode: number\r\n stdout: string\r\n stderr: string\r\n}\r\n\r\nexport async function createTaskWorkspace(\r\n task: Task,\r\n fixtureRoot?: string,\r\n): Promise<TaskWorkspace> {\r\n const dir = await mkdtemp(join(tmpdir(), 'tnega-eval-ws-'))\r\n const fixture: EvalWorkspaceFixture | undefined = fixtureRoot\r\n ? { root: fixtureRoot, ...(task.fixture?.files ? { files: task.fixture.files } : {}) }\r\n : task.fixture\r\n try {\r\n if (fixture?.root) {\r\n await cp(fixture.root, dir, { recursive: true, force: true })\r\n }\r\n for (const entry of fixture?.files ?? []) {\r\n const target = await resolveInside(dir, entry.path)\r\n await mkdir(dirname(target), { recursive: true })\r\n if (entry.content !== undefined) {\r\n await writeFile(target, entry.content, 'utf8')\r\n } else if (entry.from !== undefined) {\r\n const source = await resolveInside(dir, entry.from)\r\n await writeFile(target, await readFile(source), 'utf8')\r\n }\r\n }\r\n return {\r\n dir,\r\n dispose: () => rmRecursive(dir),\r\n }\r\n } catch (error) {\r\n await rmRecursive(dir)\r\n throw error\r\n }\r\n}\r\n\r\nexport async function runWorkspaceCommand(\r\n cwd: string,\r\n command: string,\r\n options: WorkspaceCommandOptions = {},\r\n): Promise<WorkspaceCommandResult> {\r\n const timeoutMs = options.timeoutMs ?? 30_000\r\n const maxBuffer = options.maxBuffer ?? 256 * 1024\r\n return runCommand(cwd, command, timeoutMs, maxBuffer, options.signal)\r\n}\r\n\r\nasync function runCommand(\r\n cwd: string,\r\n command: string,\r\n timeoutMs: number,\r\n maxBuffer: number,\r\n signal?: AbortSignal,\r\n): Promise<WorkspaceCommandResult> {\r\n return new Promise((resolve) => {\r\n const child = spawn(command, {\r\n cwd,\r\n shell: true,\r\n windowsHide: true,\r\n ...(process.platform === 'win32' ? {} : { detached: true }),\r\n })\r\n let stdout = ''\r\n let stderr = ''\r\n let settled = false\r\n const timer: NodeJS.Timeout | undefined = setTimeout(() => {\r\n finish(() => {\r\n void kill().finally(() => resolve({ exitCode: 124, stdout, stderr: 'timed out' }))\r\n })\r\n }, timeoutMs)\r\n let onAbort: () => void = () => {}\r\n\r\n const append = (target: string, chunk: Buffer): string => {\r\n if (target.length >= maxBuffer) return target\r\n return target + chunk.toString('utf8').slice(0, maxBuffer - target.length)\r\n }\r\n\r\n const cleanup = (): void => {\r\n if (timer) clearTimeout(timer)\r\n signal?.removeEventListener('abort', onAbort)\r\n }\r\n\r\n const finish = (action: () => void): void => {\r\n if (settled) return\r\n settled = true\r\n cleanup()\r\n action()\r\n }\r\n\r\n const kill = (): Promise<void> => killProcessTree(child)\r\n\r\n onAbort = () => {\r\n finish(() => {\r\n void kill().finally(() => resolve({ exitCode: 124, stdout, stderr: 'cancelled' }))\r\n })\r\n }\r\n\r\n if (signal) {\r\n if (signal.aborted) onAbort()\r\n else signal.addEventListener('abort', onAbort, { once: true })\r\n }\r\n\r\n child.stdout.on('data', (chunk: Buffer) => {\r\n stdout = append(stdout, chunk)\r\n })\r\n child.stderr.on('data', (chunk: Buffer) => {\r\n stderr = append(stderr, chunk)\r\n })\r\n child.on('error', (error) => {\r\n finish(() => resolve({ exitCode: 1, stdout, stderr: error.message }))\r\n })\r\n child.on('close', (code, closeSignal) => {\r\n finish(() => resolve({\r\n exitCode: code ?? 1,\r\n stdout,\r\n stderr: closeSignal ? `killed by ${closeSignal}` : stderr,\r\n }))\r\n })\r\n })\r\n}\r\n\r\nasync function killProcessTree(child: ChildProcess): Promise<void> {\r\n if (child.pid === undefined) return\r\n if (process.platform === 'win32') {\r\n await new Promise<void>((resolve) => {\r\n const killer = spawn('taskkill', ['/pid', String(child.pid), '/t', '/f'], {\r\n stdio: 'ignore',\r\n windowsHide: true,\r\n })\r\n killer.on('error', () => resolve())\r\n killer.on('exit', () => resolve())\r\n })\r\n } else {\r\n try {\r\n process.kill(-child.pid, 'SIGKILL')\r\n } catch {\r\n // Process group is already gone.\r\n }\r\n child.kill('SIGKILL')\r\n }\r\n}\r\n\r\nasync function rmRecursive(dir: string): Promise<void> {\r\n await rm(dir, { recursive: true, force: true })\r\n}\r\n", "import type { Context } from '@tnega/core'\nimport {\n createStrategyRegistry,\n defaultStrategyDefinitions,\n gateStrategy,\n judgeStrategy,\n type StrategyRegistry,\n} from './strategies.js'\nimport { EvalRunner } from './runner.js'\nimport {\n type CompareResult,\n type EvalPluginConfig,\n type EvalRun,\n type EvalRunOptions,\n type EvalStrategyDefinition,\n type Verdict,\n} from './types.js'\nimport { loadJson, saveJson } from './utils.js'\n\nexport class EvalService {\n readonly strategies: StrategyRegistry\n\n constructor(\n private ctx: Context,\n private config: EvalPluginConfig = {},\n ) {\n this.strategies = createStrategyRegistry()\n for (const definition of defaultStrategyDefinitions()) {\n this.strategies.register(definition)\n }\n if (config.llmJudge) {\n this.strategies.unregister('llm-judge')\n this.strategies.register(judgeStrategy({ judge: config.llmJudge }))\n }\n if (config.gate) {\n this.strategies.unregister('gate')\n this.strategies.register(gateStrategy(config.gate))\n }\n }\n\n register(definition: EvalStrategyDefinition): () => void {\n return this.strategies.register(definition)\n }\n\n unregister(name: string): boolean {\n return this.strategies.unregister(name)\n }\n\n getStrategy(name: string) {\n return this.strategies.get(name)\n }\n\n listStrategies(): string[] {\n return this.strategies.names()\n }\n\n async run(options: EvalRunOptions): Promise<EvalRun> {\n const runner = new EvalRunner(\n this.ctx,\n this.strategies,\n this.config.defaultBudget,\n this.config.outputDir,\n )\n return runner.run(options)\n }\n\n async loadRun(input: string | EvalRun): Promise<EvalRun> {\n if (typeof input !== 'string') return input\n const candidates = [\n input,\n `${this.config.outputDir ?? '.tnega/runs'}/${input}.json`,\n `${this.config.outputDir ?? '.tnega/runs'}/${input}`,\n ]\n for (const file of candidates) {\n try {\n return await loadJson<EvalRun>(file)\n } catch {\n // try the next candidate path\n }\n }\n throw new Error(`eval run not found: ${input}`)\n }\n\n async saveRun(run: EvalRun, file?: string): Promise<string> {\n const target = file ?? `${this.config.outputDir ?? '.tnega/runs'}/${run.id}.json`\n await saveJson(target, run)\n return target\n }\n\n async compare(base: string | EvalRun, head: string | EvalRun): Promise<CompareResult> {\n const baseRun = await this.loadRun(base)\n const headRun = await this.loadRun(head)\n const taskIds = [...new Set([...baseRun.taskIds, ...headRun.taskIds])]\n const regressions: string[] = []\n const improvements: string[] = []\n let passed = 0\n let failed = 0\n\n const taskResults = taskIds.map((taskId) => {\n const baseVerdict = this._taskVerdict(baseRun, taskId)\n const headVerdict = this._taskVerdict(headRun, taskId)\n const baseScore = baseVerdict?.score ?? 0\n const headScore = headVerdict?.score ?? 0\n const delta = headScore - baseScore\n if (delta < 0) regressions.push(taskId)\n if (delta > 0) improvements.push(taskId)\n if (headVerdict?.status === 'pass') passed += 1\n else if (headVerdict) failed += 1\n return {\n taskId,\n base: baseVerdict,\n head: headVerdict,\n delta,\n changed: delta !== 0,\n }\n })\n\n return {\n base: baseRun,\n head: headRun,\n summary: {\n baseScore: this._score(baseRun),\n headScore: this._score(headRun),\n delta: this._score(headRun) - this._score(baseRun),\n passed,\n failed,\n regressions,\n improvements,\n },\n taskResults,\n }\n }\n\n private _taskVerdict(run: EvalRun, taskId: string): Verdict | undefined {\n const verdicts = run.verdicts.filter(verdict => verdict.taskId === taskId)\n return verdicts.at(-1)\n }\n\n private _score(run: EvalRun): number {\n if (!run.verdicts.length) return 0\n return run.verdicts.reduce((sum, verdict) => sum + verdict.score, 0) / run.verdicts.length\n }\n}\n\nexport const evalPlugin = {\n name: 'eval',\n apply: (ctx: Context, config: EvalPluginConfig = {}) => {\n const service = new EvalService(ctx, config)\n ctx.provide('eval', service)\n return () => {}\n },\n}\n", "export * from './strategies.js'\nexport * from './service.js'\nexport * from './types.js'\nexport * from './utils.js'\n\nexport const name = '@tnega/eval'\n"],
5
+ "mappings": "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",
6
+ "names": ["_a", "stringify", "name", "UsedValueState", "_a", "name", "error", "_a", "node", "mergeValues", "Type", "error", "message", "_a", "DataType", "validate", "_a", "validateAsync", "anchor", "ValidationError", "ValidationError", "_a", "validate", "resolve", "cp", "name", "parse", "resolve", "relative", "_a", "Ajv", "meta", "message", "definition", "name", "validateSchema", "_a", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "DiscrError", "error", "_a", "required", "Ajv", "validate", "date", "time", "error", "name", "_a", "stat", "stat", "resolve", "resolve", "string", "escape", "shellCommand", "parse", "cp", "name", "cp", "parse", "spawn", "message", "name", "required", "definition", "randomUUID", "mkdir", "mkdtemp", "tmpdir", "join", "resolve", "open", "record", "message", "meta", "message", "error", "previous", "meta", "version", "message", "config", "target", "value", "name", "lines", "name", "config", "issue", "config", "validate", "message", "config", "name", "error", "task", "dispose", "meta", "resolve", "message", "name", "error", "name", "value", "object", "name", "config", "meta", "name", "config", "name", "appendFile", "mkdir", "readFile", "writeFile", "dirname", "relative", "sep", "message", "name", "error", "resolve", "fail", "message", "dirname", "resolve", "error", "config", "name", "relative", "sep", "error", "readFile", "mkdir", "dirname", "appendFile", "writeFile", "recursive", "definition", "record", "issue", "error", "config", "definition", "name", "randomUUID", "message", "stringify", "record", "toToolError", "resolve", "config", "session", "tools", "error", "randomUUID", "definition", "name", "config", "dynamic", "record", "error", "mkdir", "readFile", "readdir", "join", "resolve", "readdir", "error", "name", "join", "readFile", "readFile", "join", "resolve", "clone", "isObject", "array", "object", "isObject", "clone", "Class", "name", "_a", "message", "config", "base64", "base64url", "name", "initializer", "own", "proto", "name", "_zodDesc", "error", "issue", "node", "parse", "parse", "parseAsync", "parseAsync", "version", "_a", "inst", "_a", "_a", "inst", "_a", "checks", "checkResult", "canary", "result", "_", "base64", "memo", "result", "r", "isObject", "allowsEval", "results", "isObject", "left", "right", "memo", "result", "output", "result", "result", "right", "left", "r", "cached", "_a", "issue", "_a", "meta", "_a", "Class", "Class", "_emoji", "Class", "Class", "Class", "Class", "Class", "_null", "Class", "Class", "Class", "Class", "issue", "message", "process", "_a", "meta", "id", "schema", "members", "required", "object", "union", "process", "record", "process", "process", "safeParse", "result", "def", "initializer", "issue", "issues", "initializer", "parse", "parseAsync", "safeParse", "safeParseAsync", "encode", "decode", "encodeAsync", "decodeAsync", "safeEncode", "safeDecode", "safeEncodeAsync", "safeDecodeAsync", "clone", "meta", "_parse", "parse", "_parseAsync", "parseAsync", "safeParse", "safeParseAsync", "_encode", "encode", "_decode", "decode", "_encodeAsync", "encodeAsync", "_decodeAsync", "decodeAsync", "safeEncode", "safeDecode", "safeEncodeAsync", "safeDecodeAsync", "_emoji", "string", "number", "boolean", "_null", "object", "record", "string", "issue", "output", "date", "datetime", "duration", "time", "datetime", "date", "time", "duration", "string", "number", "object", "ErrorCode", "object", "number", "string", "string", "object", "boolean", "record", "object", "record", "string", "boolean", "object", "number", "string", "_null", "record", "boolean", "object", "string", "record", "string", "number", "boolean", "object", "record", "message", "safeParse", "message", "errorMessage", "error", "task", "resolve", "safeParse", "jsonrpcNotification", "isPlainObject", "Ajv", "_addFormats", "message", "error", "config", "safeParse", "errorMessage", "error", "tools", "process", "message", "process", "resolve", "spawn", "error", "message", "join", "resolve", "readFile", "error", "config", "tools", "name", "name", "registry", "tools", "tool", "survey", "record", "tools", "survey", "name", "readFile", "name", "mkdir", "readFile", "writeFile", "dirname", "resolve", "clone", "spawn", "mkdir", "readFile", "writeFile", "dirname", "join", "join", "mkdir", "dirname", "writeFile", "readFile", "error", "resolve", "spawn", "killProcessTree", "randomUUID", "error", "aborted", "join", "name", "clone", "session", "mkdir", "resolve", "mkdtemp", "tmpdir", "message", "meta", "record", "config", "definition", "name"]
7
+ }