@cldmv/gh-broker 0.0.0-stage → 0.8.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.
- package/LICENSE +202 -0
- package/README.md +279 -2
- package/config.example.json +294 -0
- package/config.sample.json +45 -0
- package/deploy/README.md +150 -0
- package/deploy/gh-broker.service +57 -0
- package/deploy/install.mjs +409 -0
- package/deploy/install.sh +29 -0
- package/deploy/lib/config-merge.mjs +214 -0
- package/deploy/lib/credentials.mjs +143 -0
- package/deploy/lib/install-args.mjs +144 -0
- package/deploy/lib/npm-setup.mjs +164 -0
- package/deploy/lib/prompt.mjs +98 -0
- package/deploy/lib/secret-store.mjs +132 -0
- package/deploy/lib/smoke.mjs +137 -0
- package/deploy/lib/system.mjs +246 -0
- package/dist/index.mjs +24406 -0
- package/dist/index.mjs.map +7 -0
- package/docs/TOOLS.md +538 -0
- package/docs/agent-user-model.md +89 -0
- package/docs/changelog/v0/v0.2.0.md +26 -0
- package/docs/changelog/v0/v0.2.1.md +23 -0
- package/docs/changelog/v0/v0.2.2.md +23 -0
- package/docs/changelog/v0/v0.2.3.md +33 -0
- package/docs/changelog/v0/v0.2.4.md +25 -0
- package/docs/changelog/v0/v0.2.5.md +29 -0
- package/docs/changelog/v0/v0.3.0.md +84 -0
- package/docs/changelog/v0/v0.3.1.md +30 -0
- package/docs/changelog/v0/v0.3.2.md +24 -0
- package/docs/changelog/v0/v0.3.3.md +28 -0
- package/docs/changelog/v0/v0.4.0.md +58 -0
- package/docs/changelog/v0/v0.4.1.md +33 -0
- package/docs/changelog/v0/v0.4.2.md +45 -0
- package/docs/changelog/v0/v0.5.0.md +39 -0
- package/docs/changelog/v0/v0.5.1.md +28 -0
- package/docs/changelog/v0/v0.6.0.md +52 -0
- package/docs/changelog/v0/v0.6.1.md +48 -0
- package/docs/changelog/v0/v0.7.0.md +71 -0
- package/docs/changelog/v0/v0.8.0.md +115 -0
- package/docs/deploy-architecture.md +84 -0
- package/package.json +71 -5
- package/src/appauth.ts +56 -0
- package/src/audit.ts +34 -0
- package/src/availability.ts +42 -0
- package/src/catalog.ts +182 -0
- package/src/config.ts +157 -0
- package/src/index.ts +107 -0
- package/src/paths.ts +60 -0
- package/src/router.ts +299 -0
- package/src/secrets.ts +167 -0
- package/src/server.ts +91 -0
- package/src/types.ts +128 -0
- package/src/upstream.ts +85 -0
- package/src/verbs/ghcr/archive.ts +314 -0
- package/src/verbs/ghcr/config.ts +142 -0
- package/src/verbs/ghcr/jobs.ts +141 -0
- package/src/verbs/ghcr/push.ts +192 -0
- package/src/verbs/ghcr/registry.ts +275 -0
- package/src/verbs/ghcr/tar.ts +203 -0
- package/src/verbs/ghcr_push.ts +264 -0
- package/src/verbs/issue_labels.ts +329 -0
- package/src/verbs/link_issue.ts +84 -0
- package/src/verbs/npm-registry.ts +168 -0
- package/src/verbs/npm-tarball.ts +76 -0
- package/src/verbs/npm_scaffold.ts +325 -0
- package/src/verbs/release-analysis.ts +212 -0
- package/src/verbs/repo-tier.ts +90 -0
- package/src/verbs/report_ci_status.ts +358 -0
- package/src/verbs/report_release_prs.ts +238 -0
- package/src/verbs/report_security_alerts.ts +442 -0
- package/src/verbs/report_unlabeled.ts +194 -0
- package/src/verbs/rest-client.ts +181 -0
- package/src/verbs/review_thread.ts +138 -0
- package/tests/appauth.test.vitest.mts +76 -0
- package/tests/audit.test.vitest.mts +48 -0
- package/tests/catalog.test.vitest.mts +234 -0
- package/tests/config-merge.test.vitest.mts +325 -0
- package/tests/config.test.vitest.mts +388 -0
- package/tests/credentials.test.vitest.mts +127 -0
- package/tests/ghcr-archive.test.vitest.mts +439 -0
- package/tests/ghcr-config.test.vitest.mts +96 -0
- package/tests/ghcr-push.test.vitest.mts +526 -0
- package/tests/ghcr-registry.test.vitest.mts +206 -0
- package/tests/helpers/ghcr-fixtures.mts +373 -0
- package/tests/install-args.test.vitest.mts +152 -0
- package/tests/issue-labels.test.vitest.mts +362 -0
- package/tests/npm-scaffold.test.vitest.mts +479 -0
- package/tests/npm-setup.test.vitest.mts +196 -0
- package/tests/paths.test.vitest.mts +57 -0
- package/tests/prompt.test.vitest.mts +128 -0
- package/tests/release-prs.test.vitest.mts +247 -0
- package/tests/rest-client.test.vitest.mts +115 -0
- package/tests/router.test.vitest.mts +505 -0
- package/tests/run-vitest.mjs +51 -0
- package/tests/secret-store.test.vitest.mts +167 -0
- package/tests/secrets.test.vitest.mts +208 -0
- package/tests/security-alerts.test.vitest.mts +338 -0
- package/tests/server.test.vitest.mts +200 -0
- package/tests/smoke.test.vitest.mts +177 -0
- package/tests/system.test.vitest.mts +355 -0
- package/tests/upstream.test.vitest.mts +91 -0
- package/tests/verb-helpers.test.vitest.mts +377 -0
- package/tests/verbs.test.vitest.mts +624 -0
- package/tsconfig.json +21 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/paths.ts", "../node_modules/ajv/lib/compile/codegen/code.ts", "../node_modules/ajv/lib/compile/codegen/scope.ts", "../node_modules/ajv/lib/compile/codegen/index.ts", "../node_modules/ajv/lib/compile/util.ts", "../node_modules/ajv/lib/compile/names.ts", "../node_modules/ajv/lib/compile/errors.ts", "../node_modules/ajv/lib/compile/validate/boolSchema.ts", "../node_modules/ajv/lib/compile/rules.ts", "../node_modules/ajv/lib/compile/validate/applicability.ts", "../node_modules/ajv/lib/compile/validate/dataType.ts", "../node_modules/ajv/lib/compile/validate/defaults.ts", "../node_modules/ajv/lib/vocabularies/code.ts", "../node_modules/ajv/lib/compile/validate/keyword.ts", "../node_modules/ajv/lib/compile/validate/subschema.ts", "../node_modules/fast-deep-equal/index.js", "../node_modules/json-schema-traverse/index.js", "../node_modules/ajv/lib/compile/resolve.ts", "../node_modules/ajv/lib/compile/validate/index.ts", "../node_modules/ajv/lib/runtime/validation_error.ts", "../node_modules/ajv/lib/compile/ref_error.ts", "../node_modules/ajv/lib/compile/index.ts", "../node_modules/ajv/dist/refs/data.json", "../node_modules/fast-uri/lib/utils.js", "../node_modules/fast-uri/lib/schemes.js", "../node_modules/fast-uri/index.js", "../node_modules/ajv/lib/runtime/uri.ts", "../node_modules/ajv/lib/core.ts", "../node_modules/ajv/lib/vocabularies/core/id.ts", "../node_modules/ajv/lib/vocabularies/core/ref.ts", "../node_modules/ajv/lib/vocabularies/core/index.ts", "../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts", "../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts", "../node_modules/ajv/lib/runtime/ucs2length.ts", "../node_modules/ajv/lib/vocabularies/validation/limitLength.ts", "../node_modules/ajv/lib/vocabularies/validation/pattern.ts", "../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts", "../node_modules/ajv/lib/vocabularies/validation/required.ts", "../node_modules/ajv/lib/vocabularies/validation/limitItems.ts", "../node_modules/ajv/lib/runtime/equal.ts", "../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts", "../node_modules/ajv/lib/vocabularies/validation/const.ts", "../node_modules/ajv/lib/vocabularies/validation/enum.ts", "../node_modules/ajv/lib/vocabularies/validation/index.ts", "../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts", "../node_modules/ajv/lib/vocabularies/applicator/items.ts", "../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts", "../node_modules/ajv/lib/vocabularies/applicator/items2020.ts", "../node_modules/ajv/lib/vocabularies/applicator/contains.ts", "../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts", "../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts", "../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts", "../node_modules/ajv/lib/vocabularies/applicator/properties.ts", "../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts", "../node_modules/ajv/lib/vocabularies/applicator/not.ts", "../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/allOf.ts", "../node_modules/ajv/lib/vocabularies/applicator/if.ts", "../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts", "../node_modules/ajv/lib/vocabularies/applicator/index.ts", "../node_modules/ajv/lib/vocabularies/format/format.ts", "../node_modules/ajv/lib/vocabularies/format/index.ts", "../node_modules/ajv/lib/vocabularies/metadata.ts", "../node_modules/ajv/lib/vocabularies/draft7.ts", "../node_modules/ajv/lib/vocabularies/discriminator/types.ts", "../node_modules/ajv/lib/vocabularies/discriminator/index.ts", "../node_modules/ajv/dist/refs/json-schema-draft-07.json", "../node_modules/ajv/lib/ajv.ts", "../node_modules/ajv-formats/src/formats.ts", "../node_modules/ajv-formats/src/limit.ts", "../node_modules/ajv-formats/src/index.ts", "../node_modules/content-type/index.js", "../src/config.ts", "../src/verbs/ghcr/config.ts", "../src/secrets.ts", "../node_modules/zod/v4/core/core.js", "../node_modules/zod/v4/core/util.js", "../node_modules/zod/v4/core/errors.js", "../node_modules/zod/v4/core/parse.js", "../node_modules/zod/v4/core/regexes.js", "../node_modules/zod/v4/core/checks.js", "../node_modules/zod/v4/core/doc.js", "../node_modules/zod/v4/core/versions.js", "../node_modules/zod/v4/core/schemas.js", "../node_modules/zod/v4/locales/en.js", "../node_modules/zod/v4/core/registries.js", "../node_modules/zod/v4/core/api.js", "../node_modules/zod/v4/core/to-json-schema.js", "../node_modules/zod/v4/core/json-schema-processors.js", "../node_modules/@modelcontextprotocol/sdk/src/server/zod-compat.ts", "../node_modules/zod/v4/classic/iso.js", "../node_modules/zod/v4/classic/errors.js", "../node_modules/zod/v4/classic/parse.js", "../node_modules/zod/v4/classic/schemas.js", "../node_modules/zod/v4/classic/compat.js", "../node_modules/zod/v4/classic/coerce.js", "../node_modules/zod/v4/classic/external.js", "../node_modules/@modelcontextprotocol/sdk/src/types.ts", "../node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/interfaces.ts", "../node_modules/zod-to-json-schema/dist/esm/parsers/string.js", "../node_modules/@modelcontextprotocol/sdk/src/server/zod-json-schema-compat.ts", "../node_modules/@modelcontextprotocol/sdk/src/shared/protocol.ts", "../node_modules/@modelcontextprotocol/sdk/src/validation/ajv-provider.ts", "../node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/client.ts", "../node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/helpers.ts", "../node_modules/@modelcontextprotocol/sdk/src/client/index.ts", "../node_modules/@modelcontextprotocol/sdk/src/shared/mediaType.ts", "../node_modules/@modelcontextprotocol/sdk/src/shared/transport.ts", "../node_modules/pkce-challenge/dist/index.node.js", "../node_modules/@modelcontextprotocol/sdk/src/shared/auth.ts", "../node_modules/@modelcontextprotocol/sdk/src/shared/auth-utils.ts", "../node_modules/@modelcontextprotocol/sdk/src/server/auth/errors.ts", "../node_modules/@modelcontextprotocol/sdk/src/client/auth.ts", "../node_modules/eventsource-parser/src/errors.ts", "../node_modules/eventsource-parser/src/parse.ts", "../node_modules/eventsource-parser/src/stream.ts", "../node_modules/@modelcontextprotocol/sdk/src/client/streamableHttp.ts", "../src/upstream.ts", "../node_modules/universal-user-agent/index.js", "../node_modules/before-after-hook/lib/register.js", "../node_modules/before-after-hook/lib/add.js", "../node_modules/before-after-hook/lib/remove.js", "../node_modules/before-after-hook/index.js", "../node_modules/@octokit/endpoint/dist-bundle/index.js", "../node_modules/@octokit/request/node_modules/content-type/src/index.ts", "../node_modules/json-with-bigint/json-with-bigint.js", "../node_modules/@octokit/request-error/dist-src/index.js", "../node_modules/@octokit/request/dist-bundle/index.js", "../node_modules/@octokit/graphql/dist-bundle/index.js", "../node_modules/@octokit/auth-token/dist-bundle/index.js", "../node_modules/@octokit/core/dist-src/version.js", "../node_modules/@octokit/core/dist-src/index.js", "../src/audit.ts", "../src/availability.ts", "../src/verbs/review_thread.ts", "../src/verbs/rest-client.ts", "../src/verbs/report_unlabeled.ts", "../src/verbs/repo-tier.ts", "../src/verbs/report_security_alerts.ts", "../src/verbs/release-analysis.ts", "../src/verbs/report_release_prs.ts", "../src/verbs/issue_labels.ts", "../src/verbs/report_ci_status.ts", "../src/verbs/npm-registry.ts", "../src/verbs/npm-tarball.ts", "../src/verbs/npm_scaffold.ts", "../src/verbs/ghcr/archive.ts", "../src/verbs/ghcr/tar.ts", "../src/verbs/ghcr/registry.ts", "../src/verbs/ghcr/push.ts", "../src/verbs/ghcr/jobs.ts", "../src/verbs/ghcr_push.ts", "../src/router.ts", "../node_modules/@octokit/oauth-methods/dist-bundle/index.js", "../node_modules/@octokit/auth-oauth-device/dist-bundle/index.js", "../node_modules/@octokit/auth-oauth-user/dist-bundle/index.js", "../node_modules/@octokit/auth-oauth-app/dist-bundle/index.js", "../node_modules/universal-github-app-jwt/lib/utils.js", "../node_modules/universal-github-app-jwt/lib/crypto-node.js", "../node_modules/universal-github-app-jwt/lib/get-token.js", "../node_modules/universal-github-app-jwt/index.js", "../node_modules/toad-cache/dist/toad-cache.mjs", "../node_modules/@octokit/auth-app/dist-node/index.js", "../src/appauth.ts", "../src/catalog.ts", "../src/server.ts", "../node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/server.ts", "../node_modules/@modelcontextprotocol/sdk/src/server/index.ts", "../node_modules/@modelcontextprotocol/sdk/src/server/stdio.ts", "../node_modules/@modelcontextprotocol/sdk/src/shared/stdio.ts", "../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/paths.ts\n *\t@Date: 2026-09-06T10:05:35-07:00 (1788714335)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-02T11:30:58-07:00 (1790965858)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport { platform, env } from \"node:process\";\nimport { join } from \"node:path\";\n\n/**\n * Platform-neutral path resolution for the config and secrets files.\n *\n * Nothing is hardcoded to /etc. Both files resolve through the same order:\n * 1. an explicit path (a `--config` flag, or GH_BROKER_CONFIG / GH_BROKER_SECRETS),\n * 2. the platform's system config dir (below),\n * 3. the packaged default under that dir.\n *\n * Only the Linux defaults are exercised today; the macOS/Windows entries are\n * wired so a later port is a table entry, not surgery. See docs/deploy-architecture.md.\n */\n\n/** The system-wide config directory for the current platform (env-overridable). */\nexport function configDir(): string {\n\tconst override = env.GH_BROKER_CONFIG_DIR;\n\tif (override) return override;\n\tswitch (platform) {\n\t\tcase \"darwin\":\n\t\t\treturn \"/Library/Application Support/gh-broker\";\n\t\tcase \"win32\":\n\t\t\treturn join(env.ProgramData ?? \"C:\\\\ProgramData\", \"gh-broker\");\n\t\tdefault: // linux and other unixes\n\t\t\treturn \"/etc/gh-broker\";\n\t}\n}\n\n/**\n * Resolve the config file path: an explicit argument (from `--config`) wins,\n * then GH_BROKER_CONFIG, then `<configDir>/config.json`.\n */\nexport function resolveConfigPath(explicit?: string): string {\n\tif (explicit) return explicit;\n\tif (env.GH_BROKER_CONFIG) return env.GH_BROKER_CONFIG;\n\treturn join(configDir(), \"config.json\");\n}\n\n/** Resolve the secrets file path: an explicit argument wins, then GH_BROKER_SECRETS, then `<configDir>/secrets.json`. */\nexport function resolveSecretsPath(explicit?: string): string {\n\tif (explicit) return explicit;\n\tif (env.GH_BROKER_SECRETS) return env.GH_BROKER_SECRETS;\n\treturn join(configDir(), \"secrets.json\");\n}\n", "// 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 isPort = RegExp.prototype.test.bind(/^\\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 const port = String(component.port)\n if (!isPort(port)) {\n throw new TypeError('URI port is malformed.')\n }\n uriTokens.push(':')\n uriTokens.push(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 * Whether the host is a bracketed IP literal (RFC 3986 `IP-literal`).\n * An unterminated `[` is not a literal, so it must still be validated as a\n * reg-name instead of being waved through as an IP.\n *\n * @param {string} host\n * @returns {boolean}\n */\nfunction isIPLiteral (host) {\n return host[0] === '[' && host[host.length - 1] === ']'\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 && !isIPLiteral(host) && 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 !isIPLiteral(parsed.host) &&\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 = isIPLiteral(parsed.host)\n const hasIPLiteralBracket = parsed.host.indexOf('[') !== -1 || parsed.host.indexOf(']') !== -1\n const ipv6result = normalizeIPv6(parsed.host)\n isIP = ipv6result.isIPV6 || ipv6result.isIPVFuture === true\n malformedIPLiteral = hasIPLiteralBracket && (!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 if (!malformedIPLiteral) {\n malformedHost = canonicalizeHost(parsed, options, schemeHandler, isIP)\n }\n\n if (uri.indexOf('%') !== -1 && parsed.host !== undefined && !malformedIPLiteral) {\n let host = isIP ? parsed.host : normalizePercentEncoding(parsed.host, true)\n if (!isIP) {\n // Fold reg-name case after decoding unreserved octets. The second\n // pass only restores uppercase hex in escapes that remain encoded.\n host = normalizePercentEncoding(host.toLowerCase())\n }\n parsed.host = reescapeHostDelimiters(host, isIP)\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\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", "/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/ // eslint-disable-line no-control-regex\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || !TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n var string = type\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!TOKEN_REGEXP.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n var header = typeof string === 'object'\n ? getcontenttype(string)\n : string\n\n if (typeof header !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = header.indexOf(';')\n var type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (!TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid media type')\n }\n\n var obj = new ContentType(type.toLowerCase())\n\n // parse parameters\n if (index !== -1) {\n var key\n var match\n var value\n\n PARAM_REGEXP.lastIndex = index\n\n while ((match = PARAM_REGEXP.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value.charCodeAt(0) === 0x22 /* \" */) {\n // remove quotes\n value = value.slice(1, -1)\n\n // remove escapes\n if (value.indexOf('\\\\') !== -1) {\n value = value.replace(QESC_REGEXP, '$1')\n }\n }\n\n obj.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n }\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n var header\n\n if (typeof obj.getHeader === 'function') {\n // res-like\n header = obj.getHeader('content-type')\n } else if (typeof obj.headers === 'object') {\n // req-like\n header = obj.headers && obj.headers['content-type']\n }\n\n if (typeof header !== 'string') {\n throw new TypeError('content-type header is missing from object')\n }\n\n return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n // no need to quote tokens\n if (TOKEN_REGEXP.test(str)) {\n return str\n }\n\n if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n this.parameters = Object.create(null)\n this.type = type\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/config.ts\n *\t@Date: 2026-07-07T00:24:51-07:00 (1783409091)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T11:23:22-07:00 (1793471002)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport { readFileSync } from \"node:fs\";\nimport type { Config, Mode, ToolRule } from \"./types.ts\";\nimport { parseGhcrConfig } from \"./verbs/ghcr/config.ts\";\n\nconst MODES: readonly Mode[] = [\"read\", \"write\"];\n\n/** Load and validate the JSON config. Throws with a precise message on any problem. */\nexport function loadConfig(path: string): Config {\n\tlet raw: unknown;\n\ttry {\n\t\traw = JSON.parse(readFileSync(path, \"utf8\"));\n\t} catch (err) {\n\t\tthrow new Error(`config: cannot read/parse ${path}: ${(err as Error).message}`);\n\t}\n\tif (typeof raw !== \"object\" || raw === null) throw new Error(\"config: root must be an object\");\n\tconst c = raw as Record<string, unknown>;\n\n\tif (typeof c.listen !== \"string\" || !c.listen.startsWith(\"unix:\")) {\n\t\tthrow new Error('config.listen: must be a \"unix:<path>\" string');\n\t}\n\tif (typeof c.upstream !== \"string\" || !/^https?:\\/\\//.test(c.upstream)) {\n\t\tthrow new Error(\"config.upstream: must be an http(s) URL\");\n\t}\n\tif (!Array.isArray(c.tools) || c.tools.length === 0) {\n\t\tthrow new Error(\"config.tools: must be a non-empty array\");\n\t}\n\n\tconst seen = new Set<string>();\n\tconst tools: ToolRule[] = c.tools.map((t, i) => {\n\t\tconst o = t as Record<string, unknown>;\n\t\tif (typeof o.name !== \"string\" || !o.name) throw new Error(`config.tools[${i}].name: required`);\n\t\tif (!MODES.includes(o.mode as Mode)) throw new Error(`config.tools[${i}].mode: must be read|write`);\n\t\tif (seen.has(o.name)) throw new Error(`config.tools: duplicate tool \"${o.name}\"`);\n\t\tseen.add(o.name);\n\t\tconst custom = o.custom === true;\n\t\tconst augment = o.augment === true;\n\t\tif (custom && augment) throw new Error(`config.tools[${i}] (\"${o.name}\"): custom and augment are mutually exclusive`);\n\t\treturn { name: o.name, mode: o.mode as Mode, custom, augment };\n\t});\n\n\tif (typeof c.owners !== \"object\" || c.owners === null) throw new Error(\"config.owners: must be an object\");\n\tconst owners: Config[\"owners\"] = {};\n\tfor (const [owner, v] of Object.entries(c.owners as Record<string, unknown>)) {\n\t\tconst o = v as Record<string, unknown>;\n\t\tif (typeof o.read !== \"string\" || typeof o.write !== \"string\") {\n\t\t\tthrow new Error(`config.owners.${owner}: needs \"read\" and \"write\" credential refs`);\n\t\t}\n\t\tif (o.installationId !== undefined && typeof o.installationId !== \"number\") {\n\t\t\tthrow new Error(`config.owners.${owner}.installationId: must be a number`);\n\t\t}\n\t\towners[owner.toLowerCase()] = {\n\t\t\tread: o.read,\n\t\t\twrite: o.write,\n\t\t\t...(typeof o.installationId === \"number\" ? { installationId: o.installationId } : {})\n\t\t};\n\t}\n\tif (Object.keys(owners).length === 0) throw new Error(\"config.owners: at least one owner required\");\n\n\tlet defaultOwner: string | undefined;\n\tif (c.defaultOwner !== undefined) {\n\t\tif (typeof c.defaultOwner !== \"string\" || !c.defaultOwner) {\n\t\t\tthrow new Error(\"config.defaultOwner: must be a non-empty string naming a configured owner\");\n\t\t}\n\t\tdefaultOwner = c.defaultOwner.toLowerCase();\n\t\tif (!owners[defaultOwner]) {\n\t\t\tthrow new Error(`config.defaultOwner \"${c.defaultOwner}\" is not a key of config.owners`);\n\t\t}\n\t}\n\n\tlet app: Config[\"app\"];\n\tif (c.app !== undefined) {\n\t\tconst a = c.app as Record<string, unknown>;\n\t\tif (typeof a.appId !== \"number\") throw new Error(\"config.app.appId: must be a number\");\n\t\tif (typeof a.privateKey !== \"string\") throw new Error('config.app.privateKey: must be a \"cred:<name>\" ref');\n\t\tapp = { appId: a.appId, privateKey: a.privateKey };\n\t}\n\n\tlet secrets: Config[\"secrets\"];\n\tif (c.secrets !== undefined) {\n\t\tif (typeof c.secrets !== \"object\" || c.secrets === null || Array.isArray(c.secrets)) throw new Error(\"config.secrets: must be an object\");\n\t\tconst s = c.secrets as Record<string, unknown>;\n\t\tif (s.provider !== undefined && s.provider !== \"file\" && s.provider !== \"systemd-creds\") {\n\t\t\tthrow new Error('config.secrets.provider: must be \"systemd-creds\" or \"file\"');\n\t\t}\n\t\t// Reject an empty path: resolveSecretsPath treats a falsy explicit path as\n\t\t// \"not provided\" and falls back to env/default, so \"\" would be silently ignored.\n\t\tif (s.path !== undefined && (typeof s.path !== \"string\" || s.path.length === 0)) {\n\t\t\tthrow new Error(\"config.secrets.path: must be a non-empty string\");\n\t\t}\n\t\t// path only means anything to the file provider; the systemd-creds provider\n\t\t// (the default) reads $CREDENTIALS_DIRECTORY and would silently ignore it.\n\t\t// Reject the combination so an operator can't think a file path is in effect.\n\t\tif (s.path !== undefined && (s.provider ?? \"systemd-creds\") !== \"file\") {\n\t\t\tthrow new Error('config.secrets.path is only used by the \"file\" provider \u2014 set provider to \"file\" or remove path');\n\t\t}\n\t\tsecrets = {\n\t\t\t...(s.provider === \"file\" || s.provider === \"systemd-creds\" ? { provider: s.provider } : {}),\n\t\t\t...(typeof s.path === \"string\" ? { path: s.path } : {})\n\t\t};\n\t}\n\n\tlet npm: Config[\"npm\"];\n\tif (c.npm !== undefined) {\n\t\tif (typeof c.npm !== \"object\" || c.npm === null || Array.isArray(c.npm)) throw new Error(\"config.npm: must be an object\");\n\t\tconst n = c.npm as Record<string, unknown>;\n\t\tif (typeof n.token !== \"string\" || !n.token.startsWith(\"cred:\")) throw new Error('config.npm.token: must be a \"cred:<name>\" ref');\n\t\tif (!Array.isArray(n.scopes) || n.scopes.length === 0) throw new Error('config.npm.scopes: must be a non-empty array of scopes, e.g. [\"@cldmv\"]');\n\t\tconst scopes = n.scopes.map((s, i) => {\n\t\t\tif (typeof s !== \"string\" || !/^@[a-z0-9][a-z0-9._~-]*$/.test(s)) throw new Error(`config.npm.scopes[${i}]: must be a lowercase npm scope like \"@cldmv\"`);\n\t\t\treturn s;\n\t\t});\n\t\tif (n.registry !== undefined && (typeof n.registry !== \"string\" || !/^https:\\/\\//.test(n.registry))) {\n\t\t\tthrow new Error(\"config.npm.registry: must be an https URL\");\n\t\t}\n\t\tif (n.tokenOrgs !== undefined && (!Array.isArray(n.tokenOrgs) || !n.tokenOrgs.every((o) => typeof o === \"string\" && /^[a-z0-9][a-z0-9._~-]*$/.test(o)))) {\n\t\t\tthrow new Error('config.npm.tokenOrgs: must be an array of lowercase npm org names, e.g. [\"cldmv\"]');\n\t\t}\n\t\tnpm = {\n\t\t\ttoken: n.token,\n\t\t\tscopes,\n\t\t\t...(typeof n.registry === \"string\" ? { registry: n.registry } : {}),\n\t\t\t...(Array.isArray(n.tokenOrgs) ? { tokenOrgs: n.tokenOrgs as string[] } : {})\n\t\t};\n\t}\n\n\treturn {\n\t\tlisten: c.listen,\n\t\tupstream: c.upstream,\n\t\ttools,\n\t\towners,\n\t\t...(app ? { app } : {}),\n\t\t...(secrets ? { secrets } : {}),\n\t\t...(defaultOwner ? { defaultOwner } : {}),\n\t\t...(npm ? { npm } : {}),\n\t\t...(c.ghcr !== undefined ? { ghcr: parseGhcrConfig(c.ghcr) } : {})\n\t};\n}\n\n/** Build a name\u2192rule index for O(1) allowlist checks. */\nexport function indexTools(tools: ToolRule[]): Map<string, ToolRule> {\n\treturn new Map(tools.map((t) => [t.name, t]));\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/ghcr/config.ts\n *\t@Date: 2026-10-31T10:57:30-07:00 (1793469450)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-11-01T00:40:55-07:00 (1793518855)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Config block for the GHCR verbs (`ghcr_push`, `ghcr_push_status`, `ghcr_tags`).\n *\n * GHCR is a separate credential and a separate policy from the GitHub API routing in\n * `config.owners`: the registry does not accept fine-grained PATs, so it needs a classic\n * PAT with `write:packages`, and that token must only ever reach `ghcr.io`. Keeping it in\n * its own block (rather than a third ref on `owners.<o>`) keeps the existing owner\n * credentials untouched and lets the installer treat the whole block as operator data, set with\n * `--ghcr-*` flags or a `--config` file (see deploy/lib/config-merge.mjs).\n *\n * \"ghcr\": {\n * \"dropDir\": \"/srv/gh-broker/ghcr-drop\",\n * \"protectReleaseTags\": true,\n * \"owners\": {\n * \"your-org\": { \"username\": \"your-login\", \"credential\": \"cred:your-org-packages\", \"images\": [\"your-image\", \"your-image-worker-*\"] }\n * }\n * }\n *\n * Every key is checked strictly (unknown keys are refused) because this is a security\n * policy: a typo such as `image` for `images` must fail loudly, not silently allow nothing\n * or everything.\n */\n\nimport { isAbsolute, normalize } from \"node:path\";\n\nexport interface GhcrOwnerConfig {\n\t/** GitHub login the classic PAT belongs to; sent as the Basic-auth user to ghcr.io/token. */\n\tusername: string;\n\t/** \"cred:<name>\" ref for the classic PAT (write:packages). */\n\tcredential: string;\n\t/** Image names under ghcr.io/<owner>/ that may be pushed or listed. `*` matches within one path segment. */\n\timages: string[];\n}\n\nexport interface GhcrConfig {\n\t/** The only directory archives are read from. Absolute; the installer creates it. */\n\tdropDir: string;\n\t/** Refuse to overwrite an existing tag shaped like a release (`1.2.3` / `v1.2.3`). */\n\tprotectReleaseTags: boolean;\n\t/** Largest archive accepted, in bytes. */\n\tmaxArchiveBytes: number;\n\towners: Record<string, GhcrOwnerConfig>;\n}\n\nexport const DEFAULT_MAX_ARCHIVE_BYTES = 16 * 1024 ** 3;\nconst TOP_KEYS = new Set([\"dropDir\", \"protectReleaseTags\", \"maxArchiveBytes\", \"owners\"]);\nconst OWNER_KEYS = new Set([\"username\", \"credential\", \"images\"]);\n/** Directories that must never be a drop dir: system state, other users' homes, secrets. */\nconst FORBIDDEN_ROOTS = [\"/etc\", \"/proc\", \"/sys\", \"/dev\", \"/run\", \"/boot\", \"/root\", \"/home\", \"/tmp\", \"/usr\", \"/bin\", \"/sbin\", \"/lib\", \"/lib64\", \"/var/tmp\"];\n/** One image-name glob: lowercase OCI path components, `*` allowed, `/` separates segments. */\nconst IMAGE_GLOB = /^[a-z0-9*](?:[a-z0-9._*-]*[a-z0-9*])?(?:\\/[a-z0-9*](?:[a-z0-9._*-]*[a-z0-9*])?)*$/;\nconst OWNER_NAME = /^[a-z0-9](?:[a-z0-9-]{0,38})$/;\n\nconst fail = (msg: string): never => {\n\tthrow new Error(`config.ghcr${msg}`);\n};\n\nfunction strictKeys(o: Record<string, unknown>, allowed: Set<string>, where: string): void {\n\tconst extra = Object.keys(o).filter((k) => !allowed.has(k));\n\tif (extra.length) fail(`${where}: unknown key(s) ${extra.join(\", \")} \u2014 expected ${[...allowed].join(\", \")}`);\n}\n\nconst isObject = (v: unknown): v is Record<string, unknown> => typeof v === \"object\" && v !== null && !Array.isArray(v);\n\nexport function parseGhcrConfig(raw: unknown): GhcrConfig {\n\tif (!isObject(raw)) return fail(\": must be an object\");\n\tstrictKeys(raw, TOP_KEYS, \"\");\n\n\tconst dropDir = raw.dropDir;\n\tif (typeof dropDir !== \"string\" || !isAbsolute(dropDir)) fail('.dropDir: must be an absolute path, e.g. \"/srv/gh-broker/ghcr-drop\"');\n\tconst dir = normalize(dropDir as string).replace(/\\/+$/, \"\");\n\tif (!dir || dir !== (dropDir as string).replace(/\\/+$/, \"\")) fail(\".dropDir: must be a normalized path (no ., .. or doubled slashes)\");\n\tif (dir.split(\"/\").filter(Boolean).length < 2) fail(\".dropDir: must be at least two levels deep, e.g. /srv/gh-broker/ghcr-drop\");\n\tfor (const root of FORBIDDEN_ROOTS) {\n\t\tif (dir === root || dir.startsWith(`${root}/`)) fail(`.dropDir: may not be under ${root}`);\n\t}\n\n\tif (raw.protectReleaseTags !== undefined && typeof raw.protectReleaseTags !== \"boolean\") fail(\".protectReleaseTags: must be a boolean\");\n\tlet maxArchiveBytes = DEFAULT_MAX_ARCHIVE_BYTES;\n\tif (raw.maxArchiveBytes !== undefined) {\n\t\tconst m = raw.maxArchiveBytes;\n\t\tif (typeof m !== \"number\" || !Number.isSafeInteger(m) || m <= 0) fail(\".maxArchiveBytes: must be a positive integer\");\n\t\tmaxArchiveBytes = m as number;\n\t}\n\n\tif (!isObject(raw.owners) || Object.keys(raw.owners).length === 0) fail(\".owners: must be an object with at least one owner\");\n\tconst owners: Record<string, GhcrOwnerConfig> = {};\n\tfor (const [name, v] of Object.entries(raw.owners as Record<string, unknown>)) {\n\t\tconst owner = name.toLowerCase();\n\t\tif (!OWNER_NAME.test(owner)) fail(`.owners: \"${name}\" is not a valid GitHub owner name`);\n\t\tif (!isObject(v)) fail(`.owners.${name}: must be an object`);\n\t\tconst o = v as Record<string, unknown>;\n\t\tstrictKeys(o, OWNER_KEYS, `.owners.${name}`);\n\t\tif (typeof o.username !== \"string\" || !/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(o.username)) fail(`.owners.${name}.username: must be the GitHub login that owns the PAT`);\n\t\tif (typeof o.credential !== \"string\" || !/^cred:[A-Za-z0-9._-]+$/.test(o.credential) || /^cred:\\.\\.?$/.test(o.credential)) {\n\t\t\tfail(`.owners.${name}.credential: must be a \"cred:<name>\" ref`);\n\t\t}\n\t\tif (!Array.isArray(o.images) || o.images.length === 0) fail(`.owners.${name}.images: must be a non-empty list of image names or globs`);\n\t\tfor (const img of o.images as unknown[]) {\n\t\t\tif (typeof img !== \"string\" || img.length > 255 || !IMAGE_GLOB.test(img)) {\n\t\t\t\tfail(`.owners.${name}.images: \"${String(img)}\" is not a valid image name or glob (lowercase, [a-z0-9._-], \"/\" between segments, \"*\" within a segment)`);\n\t\t\t}\n\t\t}\n\t\towners[owner] = { username: o.username as string, credential: o.credential as string, images: [...(o.images as string[])] };\n\t}\n\n\treturn { dropDir: dir, protectReleaseTags: raw.protectReleaseTags !== false, maxArchiveBytes, owners };\n}\n\n/** Every \"cred:<name>\" ref the ghcr block references, for eager validation at startup. */\nexport function ghcrCredRefs(cfg: GhcrConfig | undefined): string[] {\n\treturn cfg ? Object.values(cfg.owners).map((o) => o.credential) : [];\n}\n\n/** Compile an image glob to an anchored regex: `*` matches `[a-z0-9._-]*` (never `/`). */\nexport function imageGlobToRegExp(glob: string): RegExp {\n\tconst body = glob\n\t\t.split(\"*\")\n\t\t.map((part) => part.replace(/[.\\\\^$+?()[\\]{}|-]/g, \"\\\\$&\"))\n\t\t.join(\"[a-z0-9._-]*\");\n\treturn new RegExp(`^${body}$`);\n}\n\n/** True when `image` (a name under the owner, e.g. \"hoot-worker-a\") is on the owner's allowlist. */\nexport function imageAllowed(owner: GhcrOwnerConfig, image: string): boolean {\n\treturn owner.images.some((g) => imageGlobToRegExp(g).test(image));\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/secrets.ts\n *\t@Date: 2026-07-07T00:24:51-07:00 (1783409091)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T12:12:11-07:00 (1793473931)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport { readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport type { Config, SecretStore } from \"./types.ts\";\nimport { resolveSecretsPath } from \"./paths.ts\";\nimport { ghcrCredRefs } from \"./verbs/ghcr/config.ts\";\n\nconst CRED_PREFIX = \"cred:\";\n\n/**\n * Loads PATs from the configured secret store and returns a resolver mapping\n * \"cred:<name>\" refs to token values. Never writes or logs a token.\n *\n * Provider seam (chosen at install time, recorded in config.secrets.provider):\n * - \"systemd-creds\" (default) \u2014 tokens are systemd-encrypted, host/TPM-bound\n * `.cred` files delivered via LoadCredentialEncrypted into $CREDENTIALS_DIRECTORY\n * (memory-only, service-user-readable). Encrypted at rest; not portable.\n * - \"file\" \u2014 a JSON `{ \"<name>\": \"<token>\" }` map at an agent-unreadable path.\n * Plaintext at rest (perms only); portable and platform-neutral.\n *\n * Both keep tokens off any agent-readable path \u2014 the agent boundary is filesystem\n * perms either way. See docs/deploy-architecture.md.\n */\nexport function loadSecretStore(config: Config): SecretStore {\n\tconst provider = config.secrets?.provider ?? \"systemd-creds\";\n\tswitch (provider) {\n\t\tcase \"systemd-creds\":\n\t\t\treturn systemdCredsStore(config);\n\t\tcase \"file\":\n\t\t\treturn fileStore(config);\n\t\tdefault:\n\t\t\tthrow new Error(`secrets: unknown provider \"${provider}\" (expected \"systemd-creds\" or \"file\")`);\n\t}\n}\n\nconst SAFE_CRED_NAME = /^[A-Za-z0-9._-]+$/;\n\n/** A store over a reader that throws for a missing/empty credential. */\nfunction storeFrom(read: (name: string) => string): SecretStore {\n\treturn {\n\t\tresolve: (ref) => read(credName(ref)),\n\t\thas: (ref) => {\n\t\t\tconst name = credName(ref);\n\t\t\ttry {\n\t\t\t\tread(name);\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * Credential names become filesystem path components (`join(dir, name)`) and are\n * interpolated into systemd drop-in lines, so constrain them to a safe charset \u2014\n * no path separators, \"..\", colons, or control characters \u2014 to prevent reads\n * outside $CREDENTIALS_DIRECTORY and malformed drop-ins.\n */\nfunction assertSafeName(name: string): string {\n\tif (name === \".\" || name === \"..\" || !SAFE_CRED_NAME.test(name)) {\n\t\tthrow new Error(`secrets: unsafe credential name \"${name}\" (allowed: letters, digits, \".\", \"_\", \"-\")`);\n\t}\n\treturn name;\n}\n\nfunction credName(ref: string): string {\n\tif (!ref.startsWith(CRED_PREFIX)) throw new Error(`secrets: bad credential ref \"${ref}\"`);\n\treturn assertSafeName(ref.slice(CRED_PREFIX.length));\n}\n\n/**\n * Eagerly read every REQUIRED credential (the owners' PATs, the App key) so a missing token\n * fails at startup, not on first request. Optional credentials (the npm token, the GHCR\n * credentials) are only\n * format-checked here: when one isn't stored, the tools that need it are hidden instead\n * (see availability.ts), and the rest of the broker runs normally.\n */\nfunction validateRefs(config: Config, read: (name: string) => string): void {\n\tfor (const [owner, creds] of Object.entries(config.owners)) {\n\t\tfor (const ref of [creds.read, creds.write]) {\n\t\t\tif (!ref.startsWith(CRED_PREFIX)) throw new Error(`secrets: owner \"${owner}\" ref must be \"cred:<name>\", got \"${ref}\"`);\n\t\t\tread(assertSafeName(ref.slice(CRED_PREFIX.length)));\n\t\t}\n\t}\n\tif (config.app) {\n\t\t// The App key is a secret too \u2014 it must be a cred: ref, never inlined in the\n\t\t// token-free config. Reject a non-cred ref rather than silently accepting it.\n\t\tif (!config.app.privateKey.startsWith(CRED_PREFIX)) {\n\t\t\tthrow new Error(`secrets: config.app.privateKey must be a \"cred:<name>\" ref, got \"${config.app.privateKey}\"`);\n\t\t}\n\t\tread(assertSafeName(config.app.privateKey.slice(CRED_PREFIX.length)));\n\t}\n\tif (config.npm) {\n\t\tif (!config.npm.token.startsWith(CRED_PREFIX)) throw new Error(`secrets: config.npm.token must be a \"cred:<name>\" ref, got \"${config.npm.token}\"`);\n\t\tassertSafeName(config.npm.token.slice(CRED_PREFIX.length));\n\t}\n\t// GHCR credentials are optional too: format-checked here, and the ghcr_* tools are hidden\n\t// while none is stored (availability.ts).\n\tfor (const ref of ghcrCredRefs(config.ghcr)) credName(ref);\n}\n\n/** systemd-creds provider: read decrypted creds from $CREDENTIALS_DIRECTORY. */\nfunction systemdCredsStore(config: Config): SecretStore {\n\tconst dir = process.env.CREDENTIALS_DIRECTORY;\n\tif (!dir) {\n\t\tthrow new Error(\"secrets: $CREDENTIALS_DIRECTORY unset \u2014 the systemd-creds provider needs LoadCredentialEncrypted= (run under systemd)\");\n\t}\n\tconst cache = new Map<string, string>();\n\tconst read = (name: string): string => {\n\t\tconst cached = cache.get(name);\n\t\tif (cached !== undefined) return cached;\n\t\tlet val: string;\n\t\ttry {\n\t\t\tval = readFileSync(join(dir, name), \"utf8\").replace(/\\r?\\n$/, \"\");\n\t\t} catch (err) {\n\t\t\tthrow new Error(`secrets: credential \"${name}\" not available: ${(err as Error).message}`);\n\t\t}\n\t\tif (!val) throw new Error(`secrets: credential \"${name}\" is empty`);\n\t\tcache.set(name, val);\n\t\treturn val;\n\t};\n\tvalidateRefs(config, read);\n\treturn storeFrom(read);\n}\n\n/** file provider: read tokens from a JSON `{ \"<name>\": \"<token>\" }` map. */\nfunction fileStore(config: Config): SecretStore {\n\tconst path = resolveSecretsPath(config.secrets?.path);\n\tlet raw: unknown;\n\ttry {\n\t\traw = JSON.parse(readFileSync(path, \"utf8\"));\n\t} catch (err) {\n\t\tthrow new Error(`secrets: cannot read/parse secrets file ${path}: ${(err as Error).message}`);\n\t}\n\tif (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) {\n\t\tthrow new Error(`secrets: ${path} must be a JSON object of { \"<name>\": \"<token>\" }`);\n\t}\n\tconst map = raw as Record<string, unknown>; // read once into memory; never re-read or write\n\n\tconst read = (name: string): string => {\n\t\tconst val = map[name];\n\t\tif (typeof val !== \"string\") throw new Error(`secrets: credential \"${name}\" missing or empty in ${path}`);\n\t\t// Normalize like the systemd-creds provider: strip a single trailing newline\n\t\t// (common when a token is copy/pasted into the JSON) so it isn't silently\n\t\t// mismatched at auth time. A value that is only a newline then reads as empty.\n\t\tconst token = val.replace(/\\r?\\n$/, \"\");\n\t\tif (token.length === 0) throw new Error(`secrets: credential \"${name}\" missing or empty in ${path}`);\n\t\treturn token;\n\t};\n\tvalidateRefs(config, read);\n\treturn storeFrom(read);\n}\n", "var _a;\n/** A special constant with type `never` */\nexport const NEVER = /*@__PURE__*/ Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\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 var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\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 = 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 { globalConfig } from \"./core.js\";\n// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\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 // Use a relative epsilon scaled to the magnitude of the result\n const tolerance = 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`\n // 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 === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\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 (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n 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 in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${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\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in 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 (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) {\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(\".partial() 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 in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${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 for (const key in 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 in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${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 in 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).\n// 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}\nexport function finalizeIssue(iss, ctx, config) {\n const message = iss.message\n ? iss.message\n : (unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\");\n const { inst: _inst, 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}\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", "import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\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 fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\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 if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n }\n };\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, _b;\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 (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[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\";\nexport const _parse = (_Err) => (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);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => 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);\n throw e;\n }\n return result.value;\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);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\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-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\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\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})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(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 = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\nexport const httpProtocol = /^https?$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const 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])))`;\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])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${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 : `${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 time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\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 const timeRegex = `${time}(?:${opts.join(\"|\")})`;\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});\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,\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,\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 ? 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 = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\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 = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\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 = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\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 = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\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 length = input.length;\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 = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\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 length = input.length;\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 = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\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 length = input.length;\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 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 = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\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 args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n", "export const version = {\n major: 4,\n minor: 4,\n patch: 3,\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 checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\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\n // 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 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 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 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\n // 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 // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\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});\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 // When normalize is off, require :// for http/https URLs\n // This prevents strings like \"http:example.com\" or \"https:/path\" from being silently accepted\n if (!def.normalize && def.protocol?.source === regexes.httpProtocol.source) {\n if (!/^https?:\\/\\//i.test(trimmed)) {\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 }\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.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 }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.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 }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\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 def.pattern ?? (def.pattern = regexes.nanoid);\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});\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});\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 try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\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 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 const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\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////////////////////////////// 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 ? \"Infinity\"\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 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 = 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, isOptionalIn, isOptionalOut) {\n const isPresent = key in input;\n if (result.issues.length) {\n // For optional-in/out schemas, ignore errors on absent keys.\n if (isOptionalIn && isOptionalOut && !isPresent) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (!isPresent && !isOptionalIn) {\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}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\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 isOptionalIn = _catchall.optin === \"optional\";\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n // skip __proto__ so it can't replace the result prototype via the\n // assignment setter on the plain {} we build into\n if (key === \"__proto__\")\n continue;\n if (keySet.has(key))\n continue;\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, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\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 Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\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 payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalIn = el._zod.optin === \"optional\";\n const isOptionalOut = el._zod.optout === \"optional\";\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, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\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 generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalIn = schema?._zod?.optin === \"optional\";\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalIn && isOptionalOut) {\n // For optional-in/out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else if (!isOptionalIn) {\n doc.write(`\n const ${id}_present = ${k} in input;\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\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 if (${id}.value === undefined) {\n newResult[${k}] = undefined;\n } else {\n newResult[${k}] = ${id}.value;\n }\n }\n\n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\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 const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\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.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = 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 successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.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 });\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});\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.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of 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 \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\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\n // 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});\nfunction 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 for (const key of sharedKeys) {\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) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\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 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 = [];\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\n // array. The post-processing in `handleTupleResults` walks them in\n // order so it can decide whether an absent optional-output error can\n // 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 if (items[i]._zod[key] !== \"optional\")\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\n // rule, but only after `optoutStart`: the first index where the output\n // 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 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 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) {\n payload.value = {};\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 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 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 unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\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)\n // 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 {\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 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[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\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 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 = 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 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 = 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 inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\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 if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\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 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 payload.fallback = true;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n payload.fallback = true;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (input === undefined && (result.issues.length || result.fallback)) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const input = payload.value;\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, input));\n return handleOptionalResult(result, input);\n }\n if (payload.value === undefined) {\n return payload;\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.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => 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.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...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 = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => 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 = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => 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.defineLazy(inst._zod, \"values\", () => {\n const v = 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});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => 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(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\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.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => 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 if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues, fallback: left.fallback }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => 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.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => 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 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 inst._def = 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 return 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 };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return 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 };\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\n // lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance,\n // 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.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._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", "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 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 return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\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.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.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 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 = Symbol(\"ZodOutput\");\nexport const $input = 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 _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 _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,\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 : () => 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 _issue.input ?? (_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 return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\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\";\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 cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\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 // 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 Object.assign(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}\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 // 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\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // 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}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // 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\n // 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}\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 Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(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\n // This handles cases like: readonly().meta({id}).describe()\n // 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 for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\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 Object.assign(result, root.def ?? root.schema);\n // The `id` in `.meta()` is a Zod-specific registration tag used to extract\n // schemas into $defs \u2014 it is not user-facing JSON Schema metadata. Strip it\n // from the output body where it would otherwise leak. The id is preserved\n // 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\n const defs = ctx.external?.defs ?? {};\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 defs[seen.defId] = seen.def;\n }\n }\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\n // each call to finalize() is functionally independent\n // 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 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 { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { 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 } = 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 // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.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.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\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 if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\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 if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\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 const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\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 if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\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 if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\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};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n 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 v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.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)\n // 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};\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 if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\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 json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\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};\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\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // 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 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 }\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 if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\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};\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 json.default = JSON.parse(JSON.stringify(def.defaultValue));\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 json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\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 throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\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 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 * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n", "import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer, {\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);\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 * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\n// Lazy-bind builder methods.\n//\n// Builder methods (`.optional`, `.array`, `.refine`, ...) live as\n// non-enumerable getters on each concrete schema constructor's\n// prototype. On first access from an instance the getter allocates\n// `fn.bind(this)` and caches it as an own property on that instance,\n// so detached usage (`const m = schema.optional; m()`) still works\n// and the per-instance allocation only happens for methods actually\n// touched.\n//\n// One install per (prototype, group), memoized by `_installedGroups`.\nconst _installedGroups = /* @__PURE__ */ new WeakMap();\nfunction _installLazyMethods(inst, group, methods) {\n const proto = Object.getPrototypeOf(inst);\n let installed = _installedGroups.get(proto);\n if (!installed) {\n installed = new Set();\n _installedGroups.set(proto, installed);\n }\n if (installed.has(group))\n return;\n installed.add(group);\n for (const key in methods) {\n const fn = methods[key];\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: false,\n get() {\n const bound = fn.bind(this);\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: bound,\n });\n return bound;\n },\n set(v) {\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: v,\n });\n },\n });\n }\n}\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // Parse-family is intentionally kept as per-instance closures: these are\n // the hot path AND the most-detached methods (`arr.map(schema.parse)`,\n // `const { parse } = schema`, etc.). Eager closures here mean callers pay\n // ~12 closure allocations per schema but get monomorphic call sites and\n // detached usage that \"just works\".\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // All builder methods are placed on the internal prototype as lazy-bind\n // getters. On first access per-instance, a bound thunk is allocated and\n // cached as an own property; subsequent accesses skip the getter. This\n // means: no per-instance allocation for unused methods, full\n // detachability preserved (`const m = schema.optional; m()` works), and\n // shared underlying function references across all instances.\n _installLazyMethods(inst, \"ZodType\", {\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)\n // returns a clone with `data` registered. The mapped type picks\n // up the second overload, so we accept variadic any-args and\n // 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) {\n return fn(this);\n },\n });\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n return inst;\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 _installLazyMethods(inst, \"_ZodString\", {\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 });\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\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 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 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 _installLazyMethods(inst, \"ZodNumber\", {\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 });\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});\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 inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, 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});\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});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\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 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 _installLazyMethods(inst, \"ZodArray\", {\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 });\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 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.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n _installLazyMethods(inst, \"ZodObject\", {\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 required(...args) {\n return util.required(ZodNonOptional, this, args[0]);\n },\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,\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 core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\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 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 const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\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 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 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 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 _issue.input ?? (_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 payload.fallback = true;\n return payload;\n });\n }\n payload.value = output;\n payload.fallback = true;\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 : () => 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", "// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n", "import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n", "export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\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, "let crypto;\ncrypto =\n globalThis.crypto?.webcrypto ?? // Node.js [18-16] REPL\n globalThis.crypto ?? // Node.js >18\n import(\"node:crypto\").then(m => m.webcrypto); // Node.js <18 Non-REPL\n/**\n * Creates an array of length `size` of random bytes\n * @param size\n * @returns Array of random ints (0 to 255)\n */\nasync function getRandomValues(size) {\n return (await crypto).getRandomValues(new Uint8Array(size));\n}\n/** Generate cryptographically strong random string\n * @param size The desired length of the string\n * @returns The random string\n */\nasync function random(size) {\n const mask = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~\";\n const evenDistCutoff = Math.pow(2, 8) - Math.pow(2, 8) % mask.length;\n let result = \"\";\n while (result.length < size) {\n const randomBytes = await getRandomValues(size - result.length);\n for (const randomByte of randomBytes) {\n if (randomByte < evenDistCutoff) {\n result += mask[randomByte % mask.length];\n }\n }\n }\n return result;\n}\n/** Generate a PKCE challenge verifier\n * @param length Length of the verifier\n * @returns A random verifier `length` characters long\n */\nasync function generateVerifier(length) {\n return await random(length);\n}\n/** Generate a PKCE code challenge from a code verifier\n * @param code_verifier\n * @returns The base64 url encoded code challenge\n */\nexport async function generateChallenge(code_verifier) {\n const buffer = await (await crypto).subtle.digest(\"SHA-256\", new TextEncoder().encode(code_verifier));\n // Generate base64url string\n // btoa is deprecated in Node.js but is used here for web browser compatibility\n // (which has no good replacement yet, see also https://github.com/whatwg/html/issues/6811)\n return btoa(String.fromCharCode(...new Uint8Array(buffer)))\n .replace(/\\//g, '_')\n .replace(/\\+/g, '-')\n .replace(/=/g, '');\n}\n/** Generate a PKCE challenge pair\n * @param length Length of the verifer (between 43-128). Defaults to 43.\n * @returns PKCE challenge pair\n */\nexport default async function pkceChallenge(length) {\n if (!length)\n length = 43;\n if (length < 43 || length > 128) {\n throw `Expected a length between 43 and 128. Received ${length}.`;\n }\n const verifier = await generateVerifier(length);\n const challenge = await generateChallenge(verifier);\n return {\n code_verifier: verifier,\n code_challenge: challenge,\n };\n}\n/** Verify that a code_verifier produces the expected code challenge\n * @param code_verifier\n * @param expectedChallenge The code challenge to verify\n * @returns True if challenges are equal. False otherwise.\n */\nexport async function verifyChallenge(code_verifier, expectedChallenge) {\n const actualChallenge = await generateChallenge(code_verifier);\n return actualChallenge === expectedChallenge;\n}\n", null, null, null, null, "/**\n * The type of error that occurred.\n * @public\n */\nexport type ErrorType = 'invalid-retry' | 'unknown-field' | 'max-buffer-size-exceeded'\n\n/**\n * Error thrown when encountering an issue during parsing.\n *\n * @public\n */\nexport class ParseError extends Error {\n /**\n * The type of error that occurred.\n */\n type: ErrorType\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the field name.\n */\n field?: string | undefined\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the value of the field.\n */\n value?: string | undefined\n\n /**\n * The line that caused the error, if available.\n */\n line?: string | undefined\n\n constructor(\n message: string,\n options: {type: ErrorType; field?: string; value?: string; line?: string},\n ) {\n super(message)\n this.name = 'ParseError'\n this.type = options.type\n this.field = options.field\n this.value = options.value\n this.line = options.line\n }\n}\n", "/**\n * EventSource/Server-Sent Events parser\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */\nimport {ParseError} from './errors.ts'\nimport type {EventSourceParser, ParserConfig} from './types.ts'\n\n// ASCII codes used in the hot parsing paths.\nconst LF = 10\nconst CR = 13\nconst SPACE = 32\n\n// oxlint-disable-next-line no-unused-vars\nfunction noop(_arg: unknown) {\n // intentional noop\n}\n\n/**\n * Creates a new EventSource parser.\n *\n * @param config - Parser configuration. Accepts callbacks (see {@link ParserCallbacks})\n * and options like `maxBufferSize` (see {@link ParserConfig}).\n *\n * @returns A new EventSource parser, with `feed` and `reset` methods.\n * @public\n */\nexport function createParser(config: ParserConfig): EventSourceParser {\n if (typeof config === 'function') {\n throw new TypeError(\n '`config` must be an object, got a function instead. Did you mean `createParser({onEvent: fn})`?',\n )\n }\n\n const {onEvent = noop, onError = noop, onRetry = noop, onComment, maxBufferSize} = config\n\n // Trailing bytes from prior `feed()` calls that did not yet form a complete line.\n // Stored as an array of fragments and only joined when a line terminator arrives.\n // Concatenating per-feed (`prefix + chunk`) is O(N²) when a single SSE line spans\n // many chunks (e.g. a large `data:` payload streamed in tiny slices, or an MCP-style\n // server that emits one giant content block). Buffering as fragments + joining once\n // makes the same workload linear.\n const pendingFragments: string[] = []\n\n // Running total of `pendingFragments` lengths, kept in sync with the array so the\n // `maxBufferSize` check doesn't have to walk the fragment list on every feed.\n let pendingFragmentsLength = 0\n\n let isFirstChunk = true\n let id: string | undefined\n let data = ''\n let dataLines = 0\n let eventType: string | undefined\n\n // Set after a `maxBufferSize` overflow. Once tripped, `feed()` throws until\n // `reset()` is called — see the comment on `maxBufferSize` in `ParserConfig`.\n let terminated = false\n\n /**\n * Feeds a chunk of the SSE stream to the parser. Any trailing bytes that do\n * not yet form a complete line are held back and prepended to the next chunk,\n * so callers can pass arbitrary slices of the stream without worrying about\n * line boundaries.\n *\n * Per the SSE spec, a UTF-8 BOM (0xEF 0xBB 0xBF) at the start of the very\n * first chunk is stripped before parsing.\n *\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream\n */\n function feed(chunk: string) {\n if (terminated) {\n throw new Error(\n 'Cannot feed parser: it was terminated after exceeding the configured max buffer size. Call `reset()` to resume parsing.',\n )\n }\n\n if (isFirstChunk) {\n isFirstChunk = false\n // Match and strip UTF-8 BOM from the start of the stream, if present.\n // (Per the spec, this is only valid at the very start of the stream)\n if (\n chunk.charCodeAt(0) === 0xef &&\n chunk.charCodeAt(1) === 0xbb &&\n chunk.charCodeAt(2) === 0xbf\n ) {\n chunk = chunk.slice(3)\n }\n }\n\n // Hot path: no buffered prefix from a prior partial line. Hand the chunk\n // straight to `processLines`, exactly like the original implementation.\n // Zero new work in the common case (every chunk ends with `\\n\\n`).\n if (pendingFragments.length === 0) {\n const trailing = processLines(chunk)\n if (trailing !== '') {\n pendingFragments.push(trailing)\n pendingFragmentsLength = trailing.length\n }\n checkBufferSize()\n return\n }\n\n // We have a buffered prefix. If this chunk also has no terminator, append\n // to the buffer without concatenating — that's the O(N²) trap we're\n // avoiding (large single `data:` payload split across many tiny chunks).\n if (chunk.indexOf('\\n') === -1 && chunk.indexOf('\\r') === -1) {\n pendingFragments.push(chunk)\n pendingFragmentsLength += chunk.length\n checkBufferSize()\n return\n }\n\n // Terminator arrived. Join the accumulated fragments + this chunk once,\n // process, and buffer any new trailing partial line.\n pendingFragments.push(chunk)\n const input = pendingFragments.join('')\n pendingFragments.length = 0\n pendingFragmentsLength = 0\n const trailing = processLines(input)\n if (trailing !== '') {\n pendingFragments.push(trailing)\n pendingFragmentsLength = trailing.length\n }\n checkBufferSize()\n }\n\n function checkBufferSize() {\n if (maxBufferSize === undefined) return\n if (pendingFragmentsLength + data.length <= maxBufferSize) return\n\n terminated = true\n pendingFragments.length = 0\n pendingFragmentsLength = 0\n id = undefined\n data = ''\n dataLines = 0\n eventType = undefined\n onError(\n new ParseError(`Buffered data exceeded max buffer size of ${maxBufferSize} characters`, {\n type: 'max-buffer-size-exceeded',\n }),\n )\n }\n\n /**\n * Splits `chunk` into SSE lines and dispatches each to the appropriate handler.\n * Returns any trailing bytes that did not terminate with a line break, so the\n * caller can prepend them to the next chunk.\n *\n * The SSE spec permits three line terminators: `\\n`, `\\r`, and `\\r\\n`. Real-world\n * streams almost always use plain `\\n`, so we take a fast path when no `\\r` is\n * present in the chunk. The slow path is spec-correct but does more work per line.\n */\n function processLines(chunk: string): string {\n let searchIndex = 0\n\n // Fast path: LF-only chunk (the common case for typical SSE servers).\n // We can scan forward with a single `indexOf('\\n')` per line and inline\n // the hot-path branches for `data:` and `event:` without the CR bookkeeping\n // the slow path needs.\n if (chunk.indexOf('\\r') === -1) {\n let lfIndex = chunk.indexOf('\\n', searchIndex)\n while (lfIndex !== -1) {\n // Blank line: end-of-event marker. Dispatch the accumulated event (if any)\n // and reset the buffered fields. This is hoisted out of `parseLine` because\n // it's the single most common line shape after `data:` lines.\n if (searchIndex === lfIndex) {\n if (dataLines > 0) {\n onEvent({id, event: eventType, data})\n }\n id = undefined\n data = ''\n dataLines = 0\n eventType = undefined\n searchIndex = lfIndex + 1\n lfIndex = chunk.indexOf('\\n', searchIndex)\n continue\n }\n const firstCharCode = chunk.charCodeAt(searchIndex)\n if (isDataPrefix(chunk, searchIndex, firstCharCode)) {\n // `data:` line — append the value to the event's data buffer.\n // 'data:'.length === 5, 'data: '.length === 6\n const valueStart =\n chunk.charCodeAt(searchIndex + 5) === SPACE ? searchIndex + 6 : searchIndex + 5\n const value = chunk.slice(valueStart, lfIndex)\n // Fast path within a fast path: if this is the first data line AND the\n // next char is another LF (i.e. `data:foo\\n\\n`), dispatch immediately\n // without ever writing to the `data` buffer. This is the shape of a\n // typical single-line SSE event (ChatGPT-style streams, etc.) and is\n // hot enough to be worth the duplication.\n if (dataLines === 0 && chunk.charCodeAt(lfIndex + 1) === LF) {\n onEvent({id, event: eventType, data: value})\n id = undefined\n data = ''\n eventType = undefined\n searchIndex = lfIndex + 2\n lfIndex = chunk.indexOf('\\n', searchIndex)\n continue\n }\n // Multi-line data: concatenate with newline separator per spec.\n data = dataLines === 0 ? value : `${data}\\n${value}`\n dataLines++\n } else if (isEventPrefix(chunk, searchIndex, firstCharCode)) {\n // `event:` line — set the event type for the next dispatch. Per spec,\n // an empty value resets `event type` to its default (undefined here).\n // 'event:'.length === 6, 'event: '.length === 7\n eventType =\n chunk.slice(\n chunk.charCodeAt(searchIndex + 6) === SPACE ? searchIndex + 7 : searchIndex + 6,\n lfIndex,\n ) || undefined\n } else {\n // Everything else: `id:`, `retry:`, comment lines (`:` prefix), unknown\n // fields, or malformed lines. These are rarer and go through the full\n // per-line parser, which handles the SSE field grammar in detail.\n parseLine(chunk, searchIndex, lfIndex)\n }\n searchIndex = lfIndex + 1\n lfIndex = chunk.indexOf('\\n', searchIndex)\n }\n return chunk.slice(searchIndex)\n }\n\n // Slow path: the chunk contains at least one `\\r`, so lines may be terminated\n // by `\\r`, `\\n`, or `\\r\\n`. We locate the next terminator by looking at both\n // the nearest `\\r` and `\\n` and picking whichever comes first.\n while (searchIndex < chunk.length) {\n const crIndex = chunk.indexOf('\\r', searchIndex)\n const lfIndex = chunk.indexOf('\\n', searchIndex)\n\n let lineEnd = -1\n if (crIndex !== -1 && lfIndex !== -1) {\n lineEnd = crIndex < lfIndex ? crIndex : lfIndex\n } else if (crIndex !== -1) {\n // A trailing `\\r` at the very end of the chunk is ambiguous: it could be\n // a bare-CR terminator, or the first half of a `\\r\\n` whose `\\n` arrives\n // in the next chunk. Defer until we see more input.\n if (crIndex === chunk.length - 1) {\n lineEnd = -1\n } else {\n lineEnd = crIndex\n }\n } else if (lfIndex !== -1) {\n lineEnd = lfIndex\n }\n\n if (lineEnd === -1) {\n break\n }\n\n parseLine(chunk, searchIndex, lineEnd)\n searchIndex = lineEnd + 1\n // If we just consumed a `\\r` and the next char is `\\n`, skip it so the\n // pair is treated as a single terminator rather than an empty line.\n if (chunk.charCodeAt(searchIndex - 1) === CR && chunk.charCodeAt(searchIndex) === LF) {\n searchIndex++\n }\n }\n\n return chunk.slice(searchIndex)\n }\n\n function parseLine(chunk: string, start: number, end: number) {\n if (start === end) {\n dispatchEvent()\n return\n }\n\n const firstCharCode = chunk.charCodeAt(start)\n\n if (isDataPrefix(chunk, start, firstCharCode)) {\n // 'data:'.length === 5, 'data: '.length === 6\n const valueStart = chunk.charCodeAt(start + 5) === SPACE ? start + 6 : start + 5\n const value = chunk.slice(valueStart, end)\n data = dataLines === 0 ? value : `${data}\\n${value}`\n dataLines++\n return\n }\n\n if (isEventPrefix(chunk, start, firstCharCode)) {\n // 'event:'.length === 6, 'event: '.length === 7\n eventType =\n chunk.slice(chunk.charCodeAt(start + 6) === SPACE ? start + 7 : start + 6, end) || undefined\n return\n }\n\n // Fast path for \"id:\" — 'i' = 105, 'd' = 100, ':' = 58\n if (\n firstCharCode === 105 &&\n chunk.charCodeAt(start + 1) === 100 &&\n chunk.charCodeAt(start + 2) === 58\n ) {\n // 'id:'.length === 3, 'id: '.length === 4\n const value = chunk.slice(chunk.charCodeAt(start + 3) === SPACE ? start + 4 : start + 3, end)\n id = value.includes('\\0') ? undefined : value\n return\n }\n\n // Comment line — ':' = 58\n if (firstCharCode === 58) {\n if (onComment) {\n const line = chunk.slice(start, end)\n // skip ':' (+1), or ': ' (+2) when a space follows\n onComment(line.slice(chunk.charCodeAt(start + 1) === SPACE ? 2 : 1))\n }\n return\n }\n\n const line = chunk.slice(start, end)\n const fieldSeparatorIndex = line.indexOf(':')\n if (fieldSeparatorIndex === -1) {\n processField(line, '', line)\n return\n }\n\n const field = line.slice(0, fieldSeparatorIndex)\n // skip ':' (+1), or ': ' (+2) when a space follows\n const offset = line.charCodeAt(fieldSeparatorIndex + 1) === SPACE ? 2 : 1\n const value = line.slice(fieldSeparatorIndex + offset)\n processField(field, value, line)\n }\n\n function processField(field: string, value: string, line: string) {\n // Field names must be compared literally, with no case folding performed.\n switch (field) {\n case 'event':\n // Set the `event type` buffer to field value\n eventType = value || undefined\n break\n case 'data':\n data = dataLines === 0 ? value : `${data}\\n${value}`\n dataLines++\n break\n case 'id':\n // If the field value does not contain U+0000 NULL, then set the `ID` buffer to\n // the field value. Otherwise, ignore the field.\n id = value.includes('\\0') ? undefined : value\n break\n case 'retry':\n // If the field value consists of only ASCII digits, then interpret the field value as an\n // integer in base ten, and set the event stream's reconnection time to that integer.\n // Otherwise, ignore the field.\n if (/^\\d+$/.test(value)) {\n onRetry(parseInt(value, 10))\n } else {\n onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: 'invalid-retry',\n value,\n line,\n }),\n )\n }\n break\n default:\n // Otherwise, the field is ignored.\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}…` : field}\"`,\n {type: 'unknown-field', field, value, line},\n ),\n )\n break\n }\n }\n\n function dispatchEvent() {\n if (dataLines > 0) {\n onEvent({\n id,\n event: eventType,\n data,\n })\n }\n\n id = undefined\n data = ''\n dataLines = 0\n eventType = undefined\n }\n\n function reset(options: {consume?: boolean} = {}) {\n if (options.consume && pendingFragments.length > 0) {\n const incompleteLine = pendingFragments.join('')\n parseLine(incompleteLine, 0, incompleteLine.length)\n }\n\n isFirstChunk = true\n id = undefined\n data = ''\n dataLines = 0\n eventType = undefined\n pendingFragments.length = 0\n pendingFragmentsLength = 0\n terminated = false\n }\n\n return {feed, reset}\n}\n\n/**\n * Checks if `chunk` starts with the literal `data:` at index `i`.\n *\n * Equivalent to `chunk.startsWith('data:', i)`, but benchmarks show this\n * hand-unrolled char-code comparison is ~20% faster on common event types.\n * The caller passes `firstCharCode` (the code at `i`) so it can be reused\n * across prefix checks.\n *\n * ASCII: 'd' = 100, 'a' = 97, 't' = 116, 'a' = 97, ':' = 58\n */\nfunction isDataPrefix(chunk: string, i: number, firstCharCode: number): boolean {\n return (\n firstCharCode === 100 &&\n chunk.charCodeAt(i + 1) === 97 &&\n chunk.charCodeAt(i + 2) === 116 &&\n chunk.charCodeAt(i + 3) === 97 &&\n chunk.charCodeAt(i + 4) === 58\n )\n}\n\n/**\n * Checks if `chunk` starts with the literal `event:` at index `i`.\n *\n * See {@link isDataPrefix} for why this is hand-unrolled rather than using\n * `String.prototype.startsWith`.\n *\n * ASCII: 'e' = 101, 'v' = 118, 'e' = 101, 'n' = 110, 't' = 116, ':' = 58\n */\nfunction isEventPrefix(chunk: string, i: number, firstCharCode: number): boolean {\n return (\n firstCharCode === 101 &&\n chunk.charCodeAt(i + 1) === 118 &&\n chunk.charCodeAt(i + 2) === 101 &&\n chunk.charCodeAt(i + 3) === 110 &&\n chunk.charCodeAt(i + 4) === 116 &&\n chunk.charCodeAt(i + 5) === 58\n )\n}\n", "import {createParser} from './parse.ts'\nimport type {EventSourceMessage, EventSourceParser} from './types.ts'\n\n/**\n * Options for the EventSourceParserStream.\n *\n * @public\n */\nexport interface StreamOptions {\n /**\n * Behavior when a parsing error occurs.\n *\n * - A custom function can be provided to handle the error.\n * - `'terminate'` will error the stream and stop parsing.\n * - Any other value will ignore the error and continue parsing.\n *\n * @defaultValue `undefined`\n */\n onError?: ('terminate' | ((error: Error) => void)) | undefined\n\n /**\n * Callback for when a reconnection interval is sent from the server.\n *\n * @param retry - The number of milliseconds to wait before reconnecting.\n */\n onRetry?: ((retry: number) => void) | undefined\n\n /**\n * Callback for when a comment is encountered in the stream.\n *\n * @param comment - The comment encountered in the stream.\n */\n onComment?: ((comment: string) => void) | undefined\n\n /**\n * Maximum number of characters the parser is allowed to buffer across calls to `feed()`.\n * See {@link ParserConfig.maxBufferSize} for details.\n *\n * When the limit is exceeded, the stream is always errored (regardless of the `onError`\n * setting) since the underlying parser is unrecoverable without a `reset()`.\n *\n * @defaultValue `undefined` (unbounded)\n */\n maxBufferSize?: number | undefined\n}\n\n/**\n * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`.\n *\n * @example Basic usage\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream())\n * ```\n *\n * @example Terminate stream on parsing errors\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream({onError: 'terminate'}))\n * ```\n *\n * @public\n */\nexport class EventSourceParserStream extends TransformStream<string, EventSourceMessage> {\n constructor({onError, onRetry, onComment, maxBufferSize}: StreamOptions = {}) {\n let parser!: EventSourceParser\n\n super({\n start(controller) {\n parser = createParser({\n onEvent: (event) => {\n controller.enqueue(event)\n },\n onError(error) {\n if (typeof onError === 'function') {\n onError(error)\n }\n\n // `max-buffer-size-exceeded` is fatal — the parser is unusable until\n // `reset()`, which the stream wrapper has no way to call. Always\n // terminate the stream in that case so consumers see the meaningful\n // `ParseError` instead of an opaque \"cannot feed terminated parser\"\n // throw from the next chunk.\n if (onError === 'terminate' || error.type === 'max-buffer-size-exceeded') {\n controller.error(error)\n }\n\n // Ignore by default\n },\n onRetry,\n onComment,\n maxBufferSize,\n })\n },\n transform(chunk) {\n parser.feed(chunk)\n },\n })\n }\n}\n\nexport {type ErrorType, ParseError} from './errors.ts'\nexport type {EventSourceMessage} from './types.ts'\n", null, "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/upstream.ts\n *\t@Date: 2026-07-07T00:24:51-07:00 (1783409091)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-02T11:30:58-07:00 (1790965858)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport type { CallToolResult, Tool } from \"@modelcontextprotocol/sdk/types.js\";\nimport type { Config } from \"./types.ts\";\nimport type { Upstream } from \"./router.ts\";\n\nconst CLIENT_INFO = { name: \"cldmv-gh-broker\", version: \"0.1.0\" };\n\n/**\n * Pool of MCP client connections to the hosted GitHub MCP \u2014 one per bearer token,\n * so each org's PAT drives its own upstream session. Connections are created lazily\n * and reused; the PAT is only ever set as an `Authorization: Bearer` header and is\n * never logged.\n */\nexport class UpstreamPool implements Upstream {\n\tprivate readonly url: URL;\n\tprivate readonly clients = new Map<string, Promise<Client>>();\n\n\tconstructor(config: Config) {\n\t\tthis.url = new URL(config.upstream);\n\t}\n\n\tprivate connect(token: string): Promise<Client> {\n\t\tconst existing = this.clients.get(token);\n\t\tif (existing) return existing;\n\t\tconst pending = (async (): Promise<Client> => {\n\t\t\tconst client = new Client(CLIENT_INFO);\n\t\t\tconst transport = new StreamableHTTPClientTransport(this.url, {\n\t\t\t\trequestInit: { headers: { Authorization: `Bearer ${token}` } }\n\t\t\t});\n\t\t\tawait client.connect(transport);\n\t\t\treturn client;\n\t\t})();\n\t\t// Don't cache a failed connect \u2014 let the next call retry.\n\t\tpending.catch(() => this.clients.delete(token));\n\t\tthis.clients.set(token, pending);\n\t\treturn pending;\n\t}\n\n\tasync forward(tool: string, args: Record<string, unknown>, token: string): Promise<CallToolResult> {\n\t\treturn this.withReconnect(token, (client) => client.callTool({ name: tool, arguments: args }) as Promise<CallToolResult>);\n\t}\n\n\t/** Fetch upstream tool schemas (owner-independent) to build the advertised catalog. */\n\tasync listToolsFor(token: string): Promise<Tool[]> {\n\t\treturn this.withReconnect(token, async (client) => (await client.listTools()).tools);\n\t}\n\n\t/**\n\t * Run an upstream op with a single transparent reconnect. The hosted MCP's\n\t * streamable-HTTP session can die server-side (idle-session expiry, upstream\n\t * restart) even though our cached client still looks connected \u2014 the next call\n\t * then fails with \"invalid session\". Rather than surface that first failure to\n\t * the agent (and leave it stuck until the whole broker restarts), evict the dead\n\t * client and retry ONCE with a fresh connection. A genuinely broken call (bad\n\t * token, real upstream error) fails the retry too and propagates.\n\t */\n\tprivate async withReconnect<T>(token: string, op: (client: Client) => Promise<T>): Promise<T> {\n\t\tfor (let attempt = 0; ; attempt++) {\n\t\t\tconst client = await this.connect(token);\n\t\t\ttry {\n\t\t\t\treturn await op(client);\n\t\t\t} catch (err) {\n\t\t\t\t// Evict the (possibly stale) session so this retry / the next call reconnects.\n\t\t\t\tthis.clients.delete(token);\n\t\t\t\tif (attempt >= 1) throw err;\n\t\t\t}\n\t\t}\n\t}\n}\n", "export function getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && process.version !== undefined) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${\n process.arch\n })`;\n }\n\n return \"<environment undetectable>\";\n}\n", "// @ts-check\n\nexport function register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce((callback, name) => {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(() => {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce((method, registered) => {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n", "// @ts-check\n\nexport function addHook(state, kind, name, hook) {\n const orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = (method, options) => {\n let result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then((result_) => {\n result = result_;\n return orig(result, options);\n })\n .then(() => {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch((error) => {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n", "// @ts-check\n\nexport function removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n const index = state.registry[name]\n .map((registered) => {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n", "// @ts-check\n\nimport { register } from \"./lib/register.js\";\nimport { addHook } from \"./lib/add.js\";\nimport { removeHook } from \"./lib/remove.js\";\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nconst bind = Function.bind;\nconst bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n const removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach((kind) => {\n const args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction Singular() {\n const singularHookName = Symbol(\"Singular\");\n const singularHookState = {\n registry: {},\n };\n const singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction Collection() {\n const state = {\n registry: {},\n };\n\n const hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nexport default { Singular, Collection };\n", "// pkg/dist-src/defaults.js\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/defaults.js\nvar userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\nvar DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\n\n// pkg/dist-src/util/lowercase-keys.js\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\n// pkg/dist-src/util/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/util/merge-deep.js\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults)) Object.assign(result, { [key]: options[key] });\n else result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n\n// pkg/dist-src/util/remove-undefined-properties.js\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\n\n// pkg/dist-src/merge.js\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\n\n// pkg/dist-src/util/add-query-parameters.js\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\n// pkg/dist-src/util/extract-url-variable-names.js\nvar urlVariableRegex = /\\{[^{}}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/(?:^\\W+)|(?:(?<!\\W)\\W+$)/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\n// pkg/dist-src/util/omit.js\nfunction omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\n\n// pkg/dist-src/util/url-template.js\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"bigint\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\n\n// pkg/dist-src/parse.js\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/(?<![\\w-])[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\n\n// pkg/dist-src/endpoint-with-defaults.js\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS2 = merge(oldDefaults, newDefaults);\n const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);\n return Object.assign(endpoint2, {\n DEFAULTS: DEFAULTS2,\n defaults: withDefaults.bind(null, DEFAULTS2),\n merge: merge.bind(null, DEFAULTS2),\n parse\n });\n}\n\n// pkg/dist-src/index.js\nvar endpoint = withDefaults(null, DEFAULTS);\nexport {\n endpoint\n};\n", "/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\nconst TEXT_REGEXP = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]*$/;\nconst TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 9110 sec 5.6.4\n */\nconst QUOTE_REGEXP = /[\\\\\"]/g;\n\n/**\n * RegExp to match type in RFC 9110 sec 8.3.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nconst TYPE_REGEXP =\n /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;\n\n/**\n * Null object perf optimization. Faster than `Object.create(null)` and `{ __proto__: null }`.\n */\nconst NullObject = /* @__PURE__ */ (() => {\n const C = function () {};\n C.prototype = Object.create(null);\n return C;\n})() as unknown as { new (): any };\n\n/**\n * The content type object contains a type string and optional parameters.\n */\nexport interface ContentType {\n type: string;\n index: number;\n parameters: Record<string, string>;\n}\n\n/**\n * Format an object into a `Content-Type` header.\n */\nexport function format(obj: Partial<ContentType>): string {\n const { type, parameters } = obj;\n\n if (!type || !TYPE_REGEXP.test(type)) {\n throw new TypeError(`Invalid type: ${type}`);\n }\n\n let result = type;\n\n if (parameters) {\n for (const param of Object.keys(parameters)) {\n if (!TOKEN_REGEXP.test(param)) {\n throw new TypeError(`Invalid parameter name: ${param}`);\n }\n\n result += `; ${param}=${qstring(parameters[param])}`;\n }\n }\n\n return result;\n}\n\n/**\n * Options for parsing a `Content-Type` header.\n */\nexport interface ParseOptions {\n /**\n * Exit early on the first semicolon, returning only the type.\n * This is useful for parsing the MIME from `Content-Type` headers.\n *\n * @default false\n */\n parameters?: boolean;\n /**\n * Exits early on a comma, returning the first value and parameters.\n * This is useful for parsing `Accept` headers.\n *\n * @default false\n */\n comma?: boolean;\n /**\n * The index to start parsing from.\n *\n * @default 0\n */\n start?: number;\n}\n\n/**\n * Parse a `Content-Type` header.\n */\nexport function parse(header: string, options?: ParseOptions): ContentType {\n const stopChar = options?.comma === true ? COMMA : 65_536; // Sentinel for \"no stop char\".\n const len = header.length;\n let index = skipOWS(header, options?.start ?? 0, len);\n\n const valueStart = index;\n index = skipValue(header, index, len, stopChar);\n const valueEnd = trailingOWS(header, valueStart, index);\n const type = header.slice(valueStart, valueEnd).toLowerCase();\n\n if (options?.parameters === false) {\n return { type, index, parameters: new NullObject() };\n }\n\n return parseParameters(header, type, index, len, stopChar);\n}\n\nconst SP = 32; // \" \"\nconst HTAB = 9; // \"\\t\"\nconst SEMI = 59; // \";\"\nconst EQ = 61; // \"=\"\nconst DQUOTE = 34; // '\"'\nconst BSLASH = 92; // \"\\\\\"\nconst COMMA = 44; // \",\"\n\n/**\n * Parses the parameters of a `Content-Type` header starting at the given index.\n */\nfunction parseParameters(\n header: string,\n type: string,\n index: number,\n len: number,\n stopChar: number,\n): ContentType {\n const parameters: Record<string, string> = new NullObject();\n\n parameter: while (index < len) {\n if (header.charCodeAt(index) === stopChar) break;\n\n index = skipOWS(header, index + 1 /* Skip over ; */, len);\n\n const keyStart = index;\n\n while (index < len) {\n const code = header.charCodeAt(index);\n if (code === stopChar) break parameter;\n\n if (code === SEMI) continue parameter;\n\n if (code === EQ) {\n const keyEnd = trailingOWS(header, keyStart, index);\n const key = header.slice(keyStart, keyEnd).toLowerCase();\n\n index = skipOWS(header, index + 1, len);\n\n if (index < len && header.charCodeAt(index) === DQUOTE) {\n index++;\n\n let value = \"\";\n while (index < len) {\n const code = header.charCodeAt(index++);\n if (code === DQUOTE) {\n index = skipValue(header, index, len, stopChar);\n if (parameters[key] === undefined) parameters[key] = value;\n break;\n }\n\n if (code === BSLASH && index < len) {\n value += header[index++];\n continue;\n }\n\n value += String.fromCharCode(code);\n }\n\n continue parameter;\n }\n\n const valueStart = index;\n index = skipValue(header, index, len, stopChar);\n\n if (parameters[key] === undefined) {\n const valueEnd = trailingOWS(header, valueStart, index);\n parameters[key] = header.slice(valueStart, valueEnd);\n }\n\n continue parameter;\n }\n\n index++;\n }\n }\n\n return { type, index, parameters };\n}\n\n/**\n * Skip over characters until a semicolon or other exit character.\n */\nfunction skipValue(\n str: string,\n index: number,\n len: number,\n stopChar: number,\n): number {\n while (index < len) {\n const code = str.charCodeAt(index);\n if (code === SEMI || code === stopChar) break;\n index++;\n }\n return index;\n}\n\n/**\n * Skip optional whitespace (OWS) in an HTTP header value.\n *\n * OWS is defined in RFC 9110 sec 5.6.3 as SP (\" \") or HTAB (\"\\t\").\n */\nfunction skipOWS(header: string, index: number, len: number): number {\n while (index < len) {\n const char = header.charCodeAt(index);\n if (char !== SP && char !== HTAB) break;\n index++;\n }\n return index;\n}\n\n/**\n * Trim optional whitespace (OWS) from the end of a substring.\n *\n * OWS is defined in RFC 9110 sec 5.6.3 as SP (\" \") or HTAB (\"\\t\").\n */\nfunction trailingOWS(header: string, start: number, end: number): number {\n while (end > start) {\n const char = header.charCodeAt(end - 1);\n if (char !== SP && char !== HTAB) break;\n end--;\n }\n return end;\n}\n\n/**\n * Serialize a parameter value.\n */\nfunction qstring(str: string): string {\n if (TOKEN_REGEXP.test(str)) return str;\n if (TEXT_REGEXP.test(str)) return `\"${str.replace(QUOTE_REGEXP, \"\\\\$&\")}\"`;\n\n throw new TypeError(`Invalid parameter value: ${str}`);\n}\n", "const intRegex = /^-?\\d+$/;\nconst noiseValue = /^-?\\d+n+$/; // Noise - strings that match the custom format before being converted to it\nconst originalStringify = JSON.stringify;\nconst originalParse = JSON.parse;\nconst customFormat = /^-?\\d+n$/;\n\nconst bigIntsStringify = /([\\[:])?\"(-?\\d+)n\"($|\\s*[,\\}\\]])/g;\nconst noiseStringify = /([\\[:])?(\"-?\\d+n+)n(\"$|\"\\s*[,\\}\\]])/g;\n\n/**\n * @typedef {(this: any, key: string | number | undefined, value: any) => any} Replacer\n * @typedef {(key: string | number | undefined, value: any, context?: { source: string }) => any} Reviver\n */\n\n/**\n * Checks if a value is unstringifiable according to native JSON.stringify rules.\n *\n * @param {any} val The value to check.\n * @returns {boolean} True if the value is undefined, a function, or a symbol.\n */\nconst isUnstringifiable = (val) =>\n val === undefined || typeof val === \"function\" || typeof val === \"symbol\";\n\n/**\n * Checks if a value is a native JSON.rawJSON object (Node.js 22+).\n *\n * @param {any} val The value to check.\n * @returns {boolean} True if the value is a RawJSON instance.\n */\nconst isRawJSON = (val) =>\n val !== null &&\n typeof val === \"object\" &&\n val.constructor &&\n val.constructor.name === \"RawJSON\";\n\n/**\n * Iteratively converts a JS value to a JSON string.\n * Used as a fallback when the native JSON.stringify hits the Maximum Call Stack size.\n * Fully compliant with JSON formatting (space), replacers, and toJSON behaviors.\n *\n * @param {any} rootValue The value to stringify.\n * @param {Replacer | Array<string | number> | null} [replacer] User's custom replacer function.\n * @param {string | number} [spaceParam] Indentation for pretty-printing.\n * @returns {string | undefined} The generated JSON string.\n */\nconst stringifyIteratively = (rootValue, replacer, spaceParam) => {\n let space = \"\";\n\n if (typeof spaceParam === \"number\") {\n space = \" \".repeat(Math.min(10, Math.max(0, Math.floor(spaceParam))));\n } else if (typeof spaceParam === \"string\") {\n space = spaceParam.slice(0, 10);\n }\n\n const isFunctionReplacer = typeof replacer === \"function\";\n const propertyList = Array.isArray(replacer)\n ? new Set(replacer.map(String))\n : null;\n\n /**\n * Prepares a value for stringification by resolving toJSON, handling BigInts,\n * applying custom replacers, and unwrapping primitive objects.\n *\n * @param {object|Array} parent The parent object or array holding the value.\n * @param {string} key The key associated with the value.\n * @param {any} val The raw value to process.\n * @returns {any} The processed value ready for stringification.\n */\n const prepareVal = (parent, key, val) => {\n const isObject = val !== null && typeof val === \"object\";\n const hasToJSON = isObject && typeof val.toJSON === \"function\";\n\n if (hasToJSON) {\n val = val.toJSON(key);\n }\n\n const isNoise = typeof val === \"string\" && noiseValue.test(val);\n\n if (isNoise) return val + \"n\";\n\n const isBigInt = typeof val === \"bigint\";\n\n if (isBigInt) {\n const supportsRawJSON = \"rawJSON\" in JSON;\n\n if (supportsRawJSON) return JSON.rawJSON(val.toString());\n\n return val.toString() + \"n\";\n }\n\n if (isFunctionReplacer) {\n val = replacer.call(parent, key, val);\n }\n\n const isPostReplacerObject = val !== null && typeof val === \"object\";\n\n if (isPostReplacerObject) {\n const isPrimitiveWrapper =\n val instanceof Number ||\n val instanceof String ||\n val instanceof Boolean;\n\n if (isPrimitiveWrapper) {\n val = val.valueOf();\n }\n }\n\n return val;\n };\n\n const rootProcessed = prepareVal({ \"\": rootValue }, \"\", rootValue);\n\n if (isUnstringifiable(rootProcessed)) {\n return undefined;\n }\n\n const isRootPrimitive =\n rootProcessed === null || typeof rootProcessed !== \"object\";\n const isRootNativeRawJSON = isRawJSON(rootProcessed);\n\n if (isRootPrimitive || isRootNativeRawJSON) {\n return originalStringify(rootProcessed);\n }\n\n const chunks = [];\n let level = 0;\n\n const stack = [\n {\n parent: { \"\": rootProcessed },\n key: \"\",\n val: rootProcessed,\n isArray: Array.isArray(rootProcessed),\n keys: Array.isArray(rootProcessed) ? null : Object.keys(rootProcessed),\n index: 0,\n first: true,\n },\n ];\n\n const visited = new WeakSet([rootProcessed]);\n\n while (stack.length > 0) {\n const node = stack[stack.length - 1];\n\n if (node.index === 0) {\n chunks.push(node.isArray ? \"[\" : \"{\");\n level++;\n }\n\n let isDone = false;\n\n if (node.isArray) {\n if (node.index < node.val.length) {\n if (!node.first) chunks.push(\",\");\n\n if (space) chunks.push(\"\\n\" + space.repeat(level));\n\n const childRaw = node.val[node.index];\n const childVal = prepareVal(node.val, String(node.index), childRaw);\n\n if (isUnstringifiable(childVal)) {\n chunks.push(\"null\");\n node.first = false;\n node.index++;\n } else {\n const isComplexObject =\n childVal !== null && typeof childVal === \"object\";\n const isNativeRaw = isRawJSON(childVal);\n\n if (isComplexObject && !isNativeRaw) {\n if (visited.has(childVal)) {\n throw new TypeError(\"Converting circular structure to JSON\");\n }\n\n visited.add(childVal);\n\n stack.push({\n parent: node.val,\n key: String(node.index),\n val: childVal,\n isArray: Array.isArray(childVal),\n keys: Array.isArray(childVal) ? null : Object.keys(childVal),\n index: 0,\n first: true,\n });\n\n node.first = false;\n node.index++;\n } else {\n chunks.push(originalStringify(childVal));\n node.first = false;\n node.index++;\n }\n }\n } else {\n isDone = true;\n }\n } else {\n while (node.index < node.keys.length) {\n const k = node.keys[node.index++];\n\n const isFilteredOutByArray = propertyList && !propertyList.has(k);\n\n if (isFilteredOutByArray) continue;\n\n const childRaw = node.val[k];\n const childVal = prepareVal(node.val, k, childRaw);\n\n if (isUnstringifiable(childVal)) continue;\n\n if (!node.first) chunks.push(\",\");\n\n if (space) {\n chunks.push(\"\\n\" + space.repeat(level) + originalStringify(k) + \": \");\n } else {\n chunks.push(originalStringify(k) + \":\");\n }\n\n const isComplexObject =\n childVal !== null && typeof childVal === \"object\";\n const isNativeRaw = isRawJSON(childVal);\n\n if (isComplexObject && !isNativeRaw) {\n if (visited.has(childVal)) {\n throw new TypeError(\"Converting circular structure to JSON\");\n }\n\n visited.add(childVal);\n\n stack.push({\n parent: node.val,\n key: k,\n val: childVal,\n isArray: Array.isArray(childVal),\n keys: Array.isArray(childVal) ? null : Object.keys(childVal),\n index: 0,\n first: true,\n });\n\n node.first = false;\n\n break; // Stop current loop level to process the newly pushed stack node\n } else {\n chunks.push(originalStringify(childVal));\n node.first = false;\n }\n }\n\n const isNodeFullyProcessed =\n node.index >= node.keys.length && stack[stack.length - 1] === node;\n\n if (isNodeFullyProcessed) {\n isDone = true;\n }\n }\n\n if (isDone) {\n level--;\n\n if (!node.first && space) chunks.push(\"\\n\" + space.repeat(level));\n\n chunks.push(node.isArray ? \"]\" : \"}\");\n visited.delete(node.val);\n stack.pop();\n }\n }\n\n return chunks.join(\"\");\n};\n\n/**\n * Converts a JavaScript value to a JSON string.\n *\n * Supports serialization of BigInt values using two strategies:\n * 1. Custom format \"123n\" \u2192 \"123\" (universal fallback)\n * 2. Native JSON.rawJSON() (Node.js 22+, fastest) when available\n *\n * All other values are serialized exactly like native JSON.stringify().\n *\n * @param {*} value The value to convert to a JSON string.\n * @param {Replacer | Array<string | number> | null} [replacer]\n * A function that alters the behavior of the stringification process,\n * or an array of strings/numbers to indicate properties to exclude.\n * @param {string | number} [space]\n * A string or number to specify indentation or pretty-printing.\n * @returns {string} The JSON string representation.\n */\nconst JSONStringify = (value, replacer, space) => {\n try {\n const supportsRawJSON = \"rawJSON\" in JSON;\n\n if (supportsRawJSON) {\n return originalStringify(\n value,\n (key, val) => {\n if (typeof val === \"bigint\") return JSON.rawJSON(val.toString());\n\n const hasFunctionReplacer = typeof replacer === \"function\";\n\n if (hasFunctionReplacer) return replacer(key, val);\n\n const isKeyInArrayReplacer =\n Array.isArray(replacer) && replacer.includes(key);\n\n if (isKeyInArrayReplacer) return val;\n\n return val;\n },\n space,\n );\n }\n\n if (!value) return originalStringify(value, replacer, space);\n\n const convertedToCustomJSON = originalStringify(\n value,\n (key, val) => {\n const isNoise = typeof val === \"string\" && noiseValue.test(val);\n\n if (isNoise) return val.toString() + \"n\"; // Mark noise values with additional \"n\" to offset the deletion of one \"n\" during the processing\n\n if (typeof val === \"bigint\") return val.toString() + \"n\";\n\n const hasFunctionReplacer = typeof replacer === \"function\";\n\n if (hasFunctionReplacer) return replacer(key, val);\n\n const isKeyInArrayReplacer =\n Array.isArray(replacer) && replacer.includes(key);\n\n if (isKeyInArrayReplacer) return val;\n\n return val;\n },\n space,\n );\n\n const processedJSON = convertedToCustomJSON.replace(\n bigIntsStringify,\n \"$1$2$3\",\n ); // Delete one \"n\" off the end of every BigInt value\n\n const denoisedJSON = processedJSON.replace(noiseStringify, \"$1$2$3\"); // Remove one \"n\" off the end of every noisy string\n\n return denoisedJSON;\n } catch (error) {\n if (error instanceof RangeError) {\n const convertedJSON = stringifyIteratively(value, replacer, space);\n\n if (convertedJSON === undefined) return undefined;\n\n const supportsRawJSON = \"rawJSON\" in JSON;\n\n if (supportsRawJSON) return convertedJSON;\n\n const processedJSON = convertedJSON.replace(bigIntsStringify, \"$1$2$3\");\n\n return processedJSON.replace(noiseStringify, \"$1$2$3\");\n }\n\n throw error;\n }\n};\n\nconst featureCache = new Map();\n\n/**\n * Detects if the current JSON.parse implementation supports the context.source feature.\n *\n * Uses toString() fingerprinting to cache results and automatically detect runtime\n * replacements of JSON.parse (polyfills, mocks, etc.).\n *\n * @returns {boolean} true if context.source is supported, false otherwise.\n */\nconst isContextSourceSupported = () => {\n const parseFingerprint = JSON.parse.toString();\n\n if (featureCache.has(parseFingerprint)) {\n return featureCache.get(parseFingerprint);\n }\n\n try {\n const result = JSON.parse(\n \"1\",\n (_, __, context) => !!context?.source && context.source === \"1\",\n );\n featureCache.set(parseFingerprint, result);\n\n return result;\n } catch {\n featureCache.set(parseFingerprint, false);\n\n return false;\n }\n};\n\n/**\n * Reviver function that converts custom-format BigInt strings back to BigInt values.\n * Also handles \"noise\" strings that accidentally match the BigInt format.\n *\n * @param {string | number | undefined} key The object key.\n * @param {*} value The value being parsed.\n * @param {object} [context] Parse context (if supported by JSON.parse).\n * @param {Reviver} [userReviver] User's custom reviver function.\n * @returns {any} The transformed value.\n */\nconst convertMarkedBigIntsReviver = (key, value, context, userReviver) => {\n const isCustomFormatBigInt =\n typeof value === \"string\" && customFormat.test(value);\n\n if (isCustomFormatBigInt) return BigInt(value.slice(0, -1));\n\n const isNoiseValue = typeof value === \"string\" && noiseValue.test(value);\n if (isNoiseValue) return value.slice(0, -1);\n\n const hasUserReviver = typeof userReviver === \"function\";\n\n if (!hasUserReviver) return value;\n\n return userReviver(key, value, context);\n};\n\n/**\n * Fast JSON.parse implementation (~2x faster than classic fallback).\n * Uses JSON.parse's context.source feature to detect integers and convert\n * large numbers directly to BigInt without string manipulation.\n *\n * Does not support legacy custom format from v1 of this library.\n *\n * @param {string} text JSON string to parse.\n * @param {Reviver} [reviver] Transform function to apply to each value.\n * @returns {any} Parsed JavaScript value.\n */\nconst JSONParseV2 = (text, reviver) => {\n return JSON.parse(text, (key, value, context) => {\n const isNumber = typeof value === \"number\";\n const isOutOfBounds =\n value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER;\n const isBigNumber = isNumber && isOutOfBounds;\n const isInt = context && intRegex.test(context.source);\n const isBigInt = isBigNumber && isInt;\n\n if (isBigInt) return BigInt(context.source);\n\n const hasCustomReviver = typeof reviver === \"function\";\n\n if (!hasCustomReviver) return value;\n\n return reviver(key, value, context);\n });\n};\n\nconst MAX_INT = Number.MAX_SAFE_INTEGER.toString();\nconst MAX_DIGITS = MAX_INT.length;\nconst stringsOrLargeNumbers =\n /\"(?:[^\"\\\\]|\\\\.)*\"|-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+-]?[0-9]+)?/g;\nconst noiseValueWithQuotes = /^\"-?\\d+n+\"$/; // Noise - strings that match the custom format before being converted to it\n\n/**\n * Iteratively traverses the parsed object bottom-up (post-order),\n * emulating the native JSON.parse reviver behavior.\n * This avoids Call Stack overflows (RangeError) on deeply nested structures.\n *\n * @param {any} parsed The natively parsed JSON object.\n * @param {Reviver} [userReviver] User's custom reviver function.\n * @returns {any} The fully processed object.\n */\nconst applyReviverIteratively = (parsed, userReviver) => {\n const rootHolder = { \"\": parsed };\n const stack = [{ parent: rootHolder, key: \"\", visited: false }];\n\n while (stack.length > 0) {\n const node = stack[stack.length - 1];\n\n if (!node.visited) {\n node.visited = true;\n\n const value = node.parent[node.key];\n const isComplexObject = value !== null && typeof value === \"object\";\n\n if (isComplexObject) {\n const keys = Object.keys(value);\n\n for (let i = keys.length - 1; i >= 0; i--) {\n stack.push({ parent: value, key: keys[i], visited: false });\n }\n }\n } else {\n const { parent, key } = node;\n let value = parent[key];\n\n if (typeof value === \"string\") {\n const isCustomFormatBigInt = customFormat.test(value);\n\n if (isCustomFormatBigInt) {\n value = BigInt(value.slice(0, -1));\n } else {\n const isNoise = noiseValue.test(value);\n\n if (isNoise) value = value.slice(0, -1);\n }\n }\n\n const hasUserReviver = typeof userReviver === \"function\";\n\n if (hasUserReviver) {\n value = userReviver.call(parent, key, value);\n }\n\n const isDeleted = value === undefined;\n\n if (isDeleted) {\n delete parent[key];\n } else {\n parent[key] = value;\n }\n\n stack.pop();\n }\n }\n\n return rootHolder[\"\"];\n};\n\n/**\n * Pre-processes the JSON string to mark large numbers with an 'n' suffix.\n *\n * @param {string} text The raw JSON string.\n * @returns {string} The serialized string with marked BigInts.\n */\nconst serializeBigInts = (text) => {\n return text.replace(\n stringsOrLargeNumbers,\n (match, digits, fractional, exponential) => {\n const isString = match[0] === '\"';\n const isNoise = isString && noiseValueWithQuotes.test(match);\n\n if (isNoise) return match.substring(0, match.length - 1) + 'n\"'; // Mark noise values with additional \"n\" to offset the deletion of one \"n\" during the processing\n\n const hasFractionalOrExponential = fractional || exponential;\n\n // With a fixed number of digits, we can correctly use lexicographical comparison to do a numeric comparison\n const isLessThanMaxSafeInt =\n digits &&\n (digits.length < MAX_DIGITS ||\n (digits.length === MAX_DIGITS && digits <= MAX_INT));\n\n const isStandardValue =\n isString || hasFractionalOrExponential || isLessThanMaxSafeInt;\n\n if (isStandardValue) return match;\n\n return '\"' + match + 'n\"';\n },\n );\n};\n\n/**\n * Converts a JSON string into a JavaScript value.\n *\n * Supports parsing of large integers using two strategies:\n * 1. Classic fallback: Marks large numbers with \"123n\" format, then converts to BigInt\n * 2. Fast path (JSONParseV2): Uses context.source feature (~2x faster) when available\n *\n * All other JSON values are parsed exactly like native JSON.parse().\n *\n * @param {string} text A valid JSON string.\n * @param {Reviver} [reviver]\n * A function that transforms the results. This function is called for each member\n * of the object. If a member contains nested objects, the nested objects are\n * transformed before the parent object is.\n * @returns {any} The parsed JavaScript value.\n * @throws {SyntaxError} If text is not valid JSON.\n */\nconst JSONParse = (text, reviver) => {\n if (!text) return originalParse(text, reviver);\n\n try {\n if (isContextSourceSupported()) return JSONParseV2(text, reviver); // Shortcut to a faster (2x) and simpler version\n\n // Find and mark big numbers with \"n\"\n const serializedData = serializeBigInts(text);\n\n return originalParse(serializedData, (key, value, context) =>\n convertMarkedBigIntsReviver(key, value, context, reviver),\n );\n } catch (error) {\n if (error instanceof RangeError) {\n const serializedData = serializeBigInts(text);\n const parsed = originalParse(serializedData);\n\n return applyReviverIteratively(parsed, reviver);\n }\n\n throw error;\n }\n};\n\nexport { JSONStringify, JSONParse };\n", "class RequestError extends Error {\n name;\n /**\n * http status code\n */\n status;\n /**\n * Request options that lead to the error.\n */\n request;\n /**\n * Response object if a response was received\n */\n response;\n constructor(message, statusCode, options) {\n super(message, { cause: options.cause });\n this.name = \"HttpError\";\n this.status = Number.parseInt(statusCode);\n if (Number.isNaN(this.status)) {\n this.status = 0;\n }\n /* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist */\n if (\"response\" in options) {\n this.response = options.response;\n }\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(\n /(?<! ) .*$/,\n \" [REDACTED]\"\n )\n });\n }\n requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n }\n}\nexport {\n RequestError\n};\n", "// pkg/dist-src/index.js\nimport { endpoint } from \"@octokit/endpoint\";\n\n// pkg/dist-src/defaults.js\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"10.0.16\";\n\n// pkg/dist-src/defaults.js\nvar defaults_default = {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`\n }\n};\n\n// pkg/dist-src/fetch-wrapper.js\nimport { parse } from \"content-type\";\nimport { JSONParse, JSONStringify } from \"json-with-bigint\";\n\n// pkg/dist-src/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\") return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/fetch-wrapper.js\nimport { RequestError } from \"@octokit/request-error\";\nvar noop = () => \"\";\nasync function fetchWrapper(requestOptions) {\n const fetch = requestOptions.request?.fetch || globalThis.fetch;\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n const log = requestOptions.request?.log || console;\n const parseSuccessResponseBody = requestOptions.request?.parseSuccessResponseBody !== false;\n const body = isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body) ? JSONStringify(requestOptions.body) : requestOptions.body;\n const requestHeaders = Object.fromEntries(\n Object.entries(requestOptions.headers).map(([name, value]) => [\n name,\n String(value)\n ])\n );\n let fetchResponse;\n try {\n fetchResponse = await fetch(requestOptions.url, {\n method: requestOptions.method,\n body,\n redirect: requestOptions.request?.redirect,\n headers: requestHeaders,\n signal: requestOptions.request?.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n });\n } catch (error) {\n let message = \"Unknown Error\";\n if (error instanceof Error) {\n if (error.name === \"AbortError\") {\n error.status = 500;\n throw error;\n }\n message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n }\n const requestError = new RequestError(message, 500, {\n request: requestOptions\n });\n requestError.cause = error;\n throw requestError;\n }\n const status = fetchResponse.status;\n const url = fetchResponse.url;\n const responseHeaders = {};\n for (const [key, value] of fetchResponse.headers) {\n responseHeaders[key] = value;\n }\n const octokitResponse = {\n url,\n status,\n headers: responseHeaders,\n data: \"\"\n };\n if (\"deprecation\" in responseHeaders) {\n const matches = responseHeaders.link && responseHeaders.link.match(/<([^<>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${responseHeaders.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return octokitResponse;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return octokitResponse;\n }\n throw new RequestError(fetchResponse.statusText, status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status === 304) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(\"Not modified\", status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n if (status >= 400) {\n octokitResponse.data = await getResponseData(fetchResponse);\n throw new RequestError(toErrorMessage(octokitResponse.data), status, {\n response: octokitResponse,\n request: requestOptions\n });\n }\n octokitResponse.data = parseSuccessResponseBody ? await getResponseData(fetchResponse) : fetchResponse.body;\n return octokitResponse;\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (!contentType) {\n return response.text().catch(noop);\n }\n const mimetype = parse(contentType);\n if (isJSONResponse(mimetype)) {\n let text = \"\";\n try {\n text = await response.text();\n return JSONParse(text);\n } catch (err) {\n return text;\n }\n } else if (mimetype.type.startsWith(\"text/\") || // `application/octet-stream` is the canonical \"arbitrary binary\" type\n // (RFC 2046) and must never be decoded as text, even when the response\n // carries a (misleading) `charset=utf-8` parameter \u2014 see #751.\n mimetype.parameters.charset?.toLowerCase() === \"utf-8\" && mimetype.type !== \"application/octet-stream\") {\n return response.text().catch(noop);\n } else {\n return response.arrayBuffer().catch(\n /* v8 ignore next -- @preserve */\n () => new ArrayBuffer(0)\n );\n }\n}\nfunction isJSONResponse(mimetype) {\n return mimetype.type === \"application/json\" || mimetype.type === \"application/scim+json\";\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\") {\n return data;\n }\n if (data instanceof ArrayBuffer) {\n return \"Unknown error\";\n }\n if (typeof data === \"object\" && data !== null && \"message\" in data) {\n const objectData = data;\n const suffix = \"documentation_url\" in objectData ? ` - ${objectData.documentation_url}` : \"\";\n return Array.isArray(objectData.errors) ? `${objectData.message}: ${objectData.errors.map((v) => JSON.stringify(v)).join(\", \")}${suffix}` : `${objectData.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint2 = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint2.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint2.parse(endpointOptions));\n }\n const request2 = (route2, parameters2) => {\n return fetchWrapper(\n endpoint2.parse(endpoint2.merge(route2, parameters2))\n );\n };\n Object.assign(request2, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n return endpointOptions.request.hook(request2, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n}\n\n// pkg/dist-src/index.js\nvar request = withDefaults(endpoint, defaults_default);\nexport {\n request\n};\n/* v8 ignore next -- @preserve */\n/* v8 ignore else -- @preserve */\n", "// pkg/dist-src/index.js\nimport { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/with-defaults.js\nimport { request as Request2 } from \"@octokit/request\";\n\n// pkg/dist-src/graphql.js\nimport { request as Request } from \"@octokit/request\";\n\n// pkg/dist-src/error.js\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nvar GraphqlResponseError = class extends Error {\n constructor(request2, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request2;\n this.headers = headers;\n this.response = response;\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n request;\n headers;\n response;\n name = \"GraphqlResponseError\";\n errors;\n data;\n};\n\n// pkg/dist-src/graphql.js\nvar NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\",\n \"operationName\"\n];\nvar FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nvar GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request2, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request2(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(request2, newDefaults) {\n const newRequest = request2.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\n\n// pkg/dist-src/index.js\nvar graphql2 = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\nexport {\n GraphqlResponseError,\n graphql2 as graphql,\n withCustomRequest\n};\n/* v8 ignore if -- @preserve */\n", "// pkg/dist-src/is-jwt.js\nvar b64url = \"(?:[a-zA-Z0-9_-]+)\";\nvar sep = \"\\\\.\";\nvar jwtRE = new RegExp(`^${b64url}${sep}${b64url}${sep}${b64url}$`);\nvar isJWT = jwtRE.test.bind(jwtRE);\n\n// pkg/dist-src/auth.js\nasync function auth(token) {\n const isApp = isJWT(token);\n const isInstallation = token.startsWith(\"v1.\") || token.startsWith(\"ghs_\");\n const isUserToServer = token.startsWith(\"ghu_\");\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\n\n// pkg/dist-src/with-authorization-prefix.js\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n\n// pkg/dist-src/hook.js\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\n// pkg/dist-src/index.js\nvar createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\nexport {\n createTokenAuth\n};\n", "const VERSION = \"7.0.8\";\nexport {\n VERSION\n};\n", "import { getUserAgent } from \"universal-user-agent\";\nimport Hook from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version.js\";\nconst noop = () => {\n};\nconst consoleWarn = console.warn.bind(console);\nconst consoleError = console.error.bind(console);\nfunction createLogger(logger = {}) {\n if (typeof logger.debug !== \"function\") {\n logger.debug = noop;\n }\n if (typeof logger.info !== \"function\") {\n logger.info = noop;\n }\n if (typeof logger.warn !== \"function\") {\n logger.warn = consoleWarn;\n }\n if (typeof logger.error !== \"function\") {\n logger.error = consoleError;\n }\n return logger;\n}\nconst userAgentTrail = `octokit-core.js/${VERSION} ${getUserAgent()}`;\nclass Octokit {\n static VERSION = VERSION;\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(\n Object.assign(\n {},\n defaults,\n options,\n options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null\n )\n );\n }\n };\n return OctokitWithDefaults;\n }\n static plugins = [];\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n const currentPlugins = this.plugins;\n const NewOctokit = class extends this {\n static plugins = currentPlugins.concat(\n newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n );\n };\n return NewOctokit;\n }\n constructor(options = {}) {\n const hook = new Hook.Collection();\n const requestDefaults = {\n baseUrl: request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n };\n requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = request.defaults(requestDefaults);\n this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n this.log = createLogger(options.log);\n this.hook = hook;\n if (!options.authStrategy) {\n if (!options.auth) {\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n const auth = createTokenAuth(options.auth);\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(\n Object.assign(\n {\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n },\n options.auth\n )\n );\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n const classConstructor = this.constructor;\n for (let i = 0; i < classConstructor.plugins.length; ++i) {\n Object.assign(this, classConstructor.plugins[i](this, options));\n }\n }\n // assigned during constructor\n request;\n graphql;\n log;\n hook;\n // TODO: type `octokit.auth` based on passed options.authStrategy\n auth;\n}\nexport {\n Octokit\n};\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/audit.ts\n *\t@Date: 2026-07-07T00:24:51-07:00 (1783409091)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-02T11:30:58-07:00 (1790965858)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Structured audit log. One JSON line per decision/call to stdout (journald\n * captures it). NEVER include token values \u2014 only tool, owner, mode, repo, result.\n */\n\nexport interface AuditEntry {\n\ttool: string;\n\towner?: string;\n\tmode?: \"read\" | \"write\";\n\trepo?: string;\n\tdecision: \"forward\" | \"custom\" | \"augment\" | \"deny\" | \"error\";\n\tok?: boolean;\n\tdetail?: string;\n}\n\nexport function audit(entry: AuditEntry): void {\n\t// eslint-disable-next-line no-console -- journald is the sink\n\tconsole.log(JSON.stringify({ ts: new Date().toISOString(), ...entry }));\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/availability.ts\n *\t@Date: 2026-10-31T12:09:43-07:00 (1793473783)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T13:14:38-07:00 (1793477678)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Tools that depend on an optional integration. An allowlisted tool whose integration isn't\n * configured, or whose credential isn't stored, is unavailable: the catalog doesn't advertise\n * it and the router refuses it like a tool that isn't allowed. Everything else keeps working.\n * Catalog and router both ask here, so they can never disagree.\n */\n\nimport type { Config, SecretStore, ToolRule } from \"./types.ts\";\nimport { ghcrCredRefs } from \"./verbs/ghcr/config.ts\";\n\nconst GHCR_TOOLS = new Set([\"ghcr_push\", \"ghcr_push_status\", \"ghcr_tags\"]);\n\n/** Why `rule` can't be used on this broker, or undefined when it can. */\nexport function unavailableReason(rule: ToolRule, config: Config, secrets: SecretStore): string | undefined {\n\tif (rule.name === \"npm_scaffold\") {\n\t\tif (!config.npm) return \"the npm integration is not configured (enable it with the installer's --npm)\";\n\t\tif (!secrets.has(config.npm.token)) return `its credential \"${config.npm.token.replace(/^cred:/, \"\")}\" is not stored (re-run the installer with --npm)`;\n\t}\n\tif (GHCR_TOOLS.has(rule.name)) {\n\t\tif (!config.ghcr) return \"GHCR pushes are not configured (config.ghcr)\";\n\t\tconst refs = ghcrCredRefs(config.ghcr);\n\t\tif (!refs.some((ref) => secrets.has(ref))) {\n\t\t\treturn `no GHCR credential is stored (${refs.map((r) => `\"${r.replace(/^cred:/, \"\")}\"`).join(\", \")}; re-run the installer to add one)`;\n\t\t}\n\t}\n\treturn undefined;\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/review_thread.ts\n *\t@Date: 2026-07-11T10:24:46-07:00 (1783790686)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-02T11:30:58-07:00 (1790965858)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport type { Octokit } from \"@octokit/core\";\n\n/**\n * Custom verbs: reply_review_thread + resolve_review_thread \u2014 respond to and resolve\n * pull-request review threads (e.g. Copilot's review comments).\n *\n * Why custom verbs:\n * - The hosted GitHub MCP can READ review threads (`pull_request_read` \u2192\n * `get_review_comments`, which returns each thread's node id + `isResolved`), but\n * exposes NO tool to reply inside a thread or to resolve/unresolve one. Those are\n * GraphQL mutations (`addPullRequestReviewThreadReply`, `resolveReviewThread`,\n * `unresolveReviewThread`) with no hosted-MCP wrapper, so they can't be proxied.\n * - Unlike `link_issue`'s App-token-only mutation, these ARE available to a\n * fine-grained PAT with **Pull requests: write** \u2014 the same permission the broker's\n * write cred already uses for `create_pull_request` / `update_pull_request` /\n * `add_issue_comment`. So they run on the resolved write PAT (least privilege), not\n * the App token.\n *\n * Uses Octokit (`octokit.graphql`) \u2014 GitHub's official SDK.\n *\n * The `threadId` is the review-thread NODE id (e.g. \"PRRT_kwDO\u2026\"), taken verbatim from\n * `pull_request_read` (`get_review_comments`) \u2014 each returned thread carries it as `id`.\n */\n\nexport interface ResolveReviewThreadInput {\n\towner: string;\n\trepo?: string;\n\t/** Review-thread node id (e.g. \"PRRT_\u2026\") from pull_request_read get_review_comments. */\n\tthreadId: string;\n\t/** true \u2192 resolve (default); false \u2192 unresolve. */\n\tresolve?: boolean;\n}\n\nexport interface ReplyReviewThreadInput {\n\towner: string;\n\trepo?: string;\n\t/** Review-thread node id (e.g. \"PRRT_\u2026\") to reply into. */\n\tthreadId: string;\n\t/** Reply body (Markdown). */\n\tbody: string;\n}\n\nconst RESOLVE_THREAD = `\n\tmutation($threadId: ID!) {\n\t\tresolveReviewThread(input: { threadId: $threadId }) {\n\t\t\tthread { id isResolved }\n\t\t}\n\t}`;\n\nconst UNRESOLVE_THREAD = `\n\tmutation($threadId: ID!) {\n\t\tunresolveReviewThread(input: { threadId: $threadId }) {\n\t\t\tthread { id isResolved }\n\t\t}\n\t}`;\n\nconst REPLY_THREAD = `\n\tmutation($threadId: ID!, $body: String!) {\n\t\taddPullRequestReviewThreadReply(input: { pullRequestReviewThreadId: $threadId, body: $body }) {\n\t\t\tcomment { id url }\n\t\t}\n\t}`;\n\n/** Resolve (or unresolve) a review thread. Returns the thread id and its new resolved state. */\nexport async function resolveReviewThread(\n\toctokit: Octokit,\n\tinput: ResolveReviewThreadInput\n): Promise<{ threadId: string; isResolved: boolean }> {\n\tconst unresolve = input.resolve === false;\n\tconst data = await octokit.graphql<{\n\t\tresolveReviewThread?: { thread: { id: string; isResolved: boolean } };\n\t\tunresolveReviewThread?: { thread: { id: string; isResolved: boolean } };\n\t}>(unresolve ? UNRESOLVE_THREAD : RESOLVE_THREAD, { threadId: input.threadId });\n\tconst thread = (data.resolveReviewThread ?? data.unresolveReviewThread)?.thread;\n\tif (!thread) throw new Error(`resolve_review_thread: no thread returned for \"${input.threadId}\"`);\n\treturn { threadId: thread.id, isResolved: thread.isResolved };\n}\n\n/** Post a reply inside a review thread. Returns the new comment's node id + html url. */\nexport async function replyReviewThread(\n\toctokit: Octokit,\n\tinput: ReplyReviewThreadInput\n): Promise<{ commentId: string; url: string }> {\n\tif (!input.body || !input.body.trim()) throw new Error(\"reply_review_thread: body is required\");\n\tconst data = await octokit.graphql<{\n\t\taddPullRequestReviewThreadReply: { comment: { id: string; url: string } };\n\t}>(REPLY_THREAD, { threadId: input.threadId, body: input.body });\n\tconst comment = data.addPullRequestReviewThreadReply?.comment;\n\tif (!comment) throw new Error(`reply_review_thread: reply failed for \"${input.threadId}\"`);\n\treturn { commentId: comment.id, url: comment.url };\n}\n\n/** JSON Schema advertised to the agent for resolve_review_thread. */\nexport const RESOLVE_REVIEW_THREAD_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\", \"threadId\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner: { type: \"string\", description: \"repository owner (org/user login) \u2014 selects the write credential\" },\n\t\trepo: { type: \"string\", description: \"repository name (optional; for the audit log only)\" },\n\t\tthreadId: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: 'review-thread node id (e.g. \"PRRT_\u2026\"), taken verbatim from pull_request_read get_review_comments'\n\t\t},\n\t\tresolve: { type: \"boolean\", description: \"true to resolve (default), false to unresolve\", default: true }\n\t}\n};\n\n/** JSON Schema advertised to the agent for reply_review_thread. */\nexport const REPLY_REVIEW_THREAD_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\", \"threadId\", \"body\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner: { type: \"string\", description: \"repository owner (org/user login) \u2014 selects the write credential\" },\n\t\trepo: { type: \"string\", description: \"repository name (optional; for the audit log only)\" },\n\t\tthreadId: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: 'review-thread node id (e.g. \"PRRT_\u2026\") to reply into, from pull_request_read get_review_comments'\n\t\t},\n\t\tbody: { type: \"string\", description: \"reply body (Markdown)\" }\n\t}\n};\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/rest-client.ts\n *\t@Date: 2026-09-29T02:39:40+00:00 (1790649580)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-02T11:30:58-07:00 (1790965858)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport type { Octokit } from \"@octokit/core\";\n\n/**\n * Shared REST-call machinery for custom verbs that compose plain `octokit.request()`\n * calls instead of proxying a hosted-MCP tool (currently `report_unlabeled` and\n * `report_ci_status`). Factored out once a second verb needed the identical\n * rate-limit/call-budget handling \u2014 see report_unlabeled.ts's original version for\n * the rationale (kept here, not duplicated).\n *\n * Rate-limit floor: proactively stops once remaining requests drop to 2% of the\n * token's OWN limit (read from `x-ratelimit-limit` on every response \u2014 never\n * hardcode GitHub's number, it can differ by token type/tier), floored at an\n * absolute minimum for low-limit tokens. Leaves headroom for other broker traffic\n * sharing the same PAT, rather than waiting to actually get a 403.\n */\n\nconst PAGE_SIZE = 100;\nconst RATE_LIMIT_FLOOR_RATIO = 0.02;\nconst RATE_LIMIT_FLOOR_MIN = 20;\n\nexport class RateLimited extends Error {\n\treadonly retryAfterSeconds?: number;\n\tconstructor(retryAfterSeconds?: number) {\n\t\tsuper(\"rate limited\");\n\t\tthis.retryAfterSeconds = retryAfterSeconds;\n\t}\n}\n\nexport class CallBudgetExhausted extends Error {\n\tconstructor() {\n\t\tsuper(\"call budget exhausted\");\n\t}\n}\n\nexport class CallBudget {\n\tprivate remaining: number;\n\tconstructor(max: number) {\n\t\tthis.remaining = max;\n\t}\n\t/** Throws CallBudgetExhausted once the budget is spent. */\n\tspend(): void {\n\t\tif (this.remaining <= 0) throw new CallBudgetExhausted();\n\t\tthis.remaining--;\n\t}\n}\n\n/**\n * A 403 is only a rate limit when GitHub says so \u2014 a Retry-After header, an exhausted\n * `x-ratelimit-remaining`, or a rate-limit/abuse message. Any other 403 is a permission\n * or feature-disabled answer (e.g. code scanning off for a repo) and must surface to the\n * caller with its status intact instead of being mistaken for throttling.\n */\nfunction looksRateLimited(err: Error, headers: Record<string, string> | undefined): boolean {\n\tif (headers?.[\"retry-after\"] !== undefined) return true;\n\tif (headers?.[\"x-ratelimit-remaining\"] === \"0\") return true;\n\treturn /rate limit|abuse|secondary/i.test(err.message);\n}\n\n/** Runs one octokit.request call, charging the budget and enforcing the rate-limit floor. */\nasync function doRequest(octokit: Octokit, budget: CallBudget, route: string, params: Record<string, unknown>): Promise<{ data: unknown }> {\n\tbudget.spend();\n\ttry {\n\t\tconst res = await octokit.request(route, params);\n\t\tconst headers = res.headers as Record<string, string> | undefined;\n\t\tconst remainingHeader = headers?.[\"x-ratelimit-remaining\"];\n\t\tif (remainingHeader !== undefined) {\n\t\t\tconst remaining = Number(remainingHeader);\n\t\t\tconst limit = Number(headers?.[\"x-ratelimit-limit\"]);\n\t\t\tconst floor = Number.isFinite(limit) ? Math.max(RATE_LIMIT_FLOOR_MIN, Math.ceil(limit * RATE_LIMIT_FLOOR_RATIO)) : RATE_LIMIT_FLOOR_MIN;\n\t\t\tif (remaining <= floor) throw new RateLimited();\n\t\t}\n\t\treturn res;\n\t} catch (err) {\n\t\tif (err instanceof RateLimited) throw err;\n\t\tconst status = (err as { status?: number }).status;\n\t\tconst headers = (err as { response?: { headers?: Record<string, string> } }).response?.headers;\n\t\tif (status === 429 || (status === 403 && looksRateLimited(err as Error, headers))) {\n\t\t\tconst retryAfter = headers?.[\"retry-after\"];\n\t\t\tthrow new RateLimited(retryAfter ? Number(retryAfter) : undefined);\n\t\t}\n\t\tthrow err;\n\t}\n}\n\n/**\n * Runs one octokit.request call expected to return a listing. `extract` pulls the\n * item array out of the response body \u2014 plain for bare-array endpoints\n * (issues/pulls/repos), overridden for endpoints that wrap the array in a named\n * field (e.g. Actions: `{ workflow_runs: [...] }`).\n */\nexport async function req<T>(\n\toctokit: Octokit,\n\tbudget: CallBudget,\n\troute: string,\n\tparams: Record<string, unknown>,\n\textract: (data: unknown) => T[] = (d) => d as T[]\n): Promise<T[]> {\n\tconst res = await doRequest(octokit, budget, route, params);\n\treturn extract(res.data);\n}\n\n/** Runs one octokit.request call expected to return a single resource (not a listing). */\nexport async function reqOne<T>(octokit: Octokit, budget: CallBudget, route: string, params: Record<string, unknown>): Promise<T> {\n\tconst res = await doRequest(octokit, budget, route, params);\n\treturn res.data as T;\n}\n\n/** Paginates a listing endpoint up to `limit` items, stopping at a short last page. */\nexport async function paginate<T>(\n\toctokit: Octokit,\n\tbudget: CallBudget,\n\troute: string,\n\tparams: Record<string, unknown>,\n\tlimit: number,\n\textract?: (data: unknown) => T[]\n): Promise<T[]> {\n\tconst out: T[] = [];\n\tlet page = 1;\n\twhile (out.length < limit) {\n\t\tconst batch = await req<T>(octokit, budget, route, { ...params, per_page: PAGE_SIZE, page }, extract);\n\t\tif (batch.length === 0) break;\n\t\tout.push(...batch);\n\t\tif (batch.length < PAGE_SIZE) break;\n\t\tpage++;\n\t}\n\treturn out.length > limit ? out.slice(0, limit) : out;\n}\n\n/**\n * Paginates a listing endpoint that uses cursor pagination (`after`) instead of `page` \u2014\n * Dependabot's alert endpoints. Follows the `rel=\"next\"` cursor in the Link header and\n * stops at the last page or once `limit` items are collected.\n */\nexport async function paginateAfter<T>(octokit: Octokit, budget: CallBudget, route: string, params: Record<string, unknown>, limit: number): Promise<T[]> {\n\tconst out: T[] = [];\n\tlet after: string | undefined;\n\twhile (out.length < limit) {\n\t\tconst res = await doRequest(octokit, budget, route, { ...params, per_page: PAGE_SIZE, ...(after ? { after } : {}) });\n\t\tconst batch = res.data;\n\t\tif (!Array.isArray(batch) || batch.length === 0) break;\n\t\tout.push(...(batch as T[]));\n\t\tconst link = (res as { headers?: Record<string, string> }).headers?.link;\n\t\tconst next = link ? /<[^>]*[?&]after=([^&>]+)[^>]*>;\\s*rel=\"next\"/.exec(link) : null;\n\t\tif (!next) break;\n\t\tafter = decodeURIComponent(next[1]!);\n\t}\n\treturn out.length > limit ? out.slice(0, limit) : out;\n}\n\ninterface RawRepo {\n\tname: string;\n\tarchived?: boolean;\n}\n\n/** Lists non-archived repo names for an owner \u2014 tries the org endpoint, falls back to user. */\nexport async function listOwnerRepos(octokit: Octokit, budget: CallBudget, owner: string, maxRepos: number): Promise<string[]> {\n\tlet raw: RawRepo[];\n\ttry {\n\t\traw = await paginate<RawRepo>(octokit, budget, \"GET /orgs/{owner}/repos\", { owner, type: \"all\" }, maxRepos);\n\t} catch (err) {\n\t\tif (err instanceof RateLimited || err instanceof CallBudgetExhausted) throw err;\n\t\tif ((err as { status?: number }).status !== 404) throw err;\n\t\traw = await paginate<RawRepo>(octokit, budget, \"GET /users/{username}/repos\", { username: owner, type: \"all\" }, maxRepos);\n\t}\n\treturn raw.filter((r) => !r.archived).map((r) => r.name);\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/report_unlabeled.ts\n *\t@Date: 2026-09-29T02:39:40+00:00 (1790649580)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-02T11:30:58-07:00 (1790965858)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport type { Octokit } from \"@octokit/core\";\nimport { CallBudget, CallBudgetExhausted, RateLimited, listOwnerRepos, paginate } from \"./rest-client.ts\";\n\n/**\n * Custom verb: report_unlabeled \u2014 issues/PRs with no labels, for one repo or every\n * repo an owner has.\n *\n * Why a custom verb: the hosted GitHub MCP has no \"no labels\" filter and no\n * cross-repo aggregation \u2014 `list_issues`/`list_pull_requests` are single-repo, and\n * finding the unlabeled subset means paging through everything and filtering\n * client-side. This composes plain REST reads (`octokit.request`) over the read PAT,\n * the same allowlist tier as everything it uses.\n *\n * Fan-out safety (see rest-client.ts for the shared rate-limit/budget mechanics):\n * scanning \"every repo\" can mean dozens of repos x hundreds of issues/PRs each.\n * - `maxRepos` caps how many repos get enumerated when `repo` is omitted.\n * - `perRepoLimit` caps items fetched per repo, per resource type (issues, pulls).\n * - `maxApiCalls` is a hard ceiling on total REST calls made by one invocation.\n * Hitting any cap \u2014 or GitHub's own rate limit \u2014 stops the scan and returns whatever\n * was found so far with `truncated: true`, rather than throwing partial work away.\n */\n\nexport type Target = \"issues\" | \"pulls\" | \"both\";\nexport type State = \"open\" | \"closed\" | \"all\";\n\nexport interface ReportUnlabeledInput {\n\towner: string;\n\t/** Repo name; omit to scan every non-archived repo visible to this owner's read PAT. */\n\trepo?: string;\n\ttarget?: Target;\n\tstate?: State;\n\t/** Include draft PRs in the report (default: excluded \u2014 a draft isn't triage-ready). */\n\tincludeDrafts?: boolean;\n\t/** Safety cap on repos scanned when `repo` is omitted. Default 50, hard-capped at 200. */\n\tmaxRepos?: number;\n\t/** Safety cap on items fetched per repo, per resource type. Default 200, hard-capped at 1000. */\n\tperRepoLimit?: number;\n\t/** Hard ceiling on total REST calls for this invocation. Default 250, hard-capped at 1000. */\n\tmaxApiCalls?: number;\n}\n\nexport interface UnlabeledItem {\n\trepo: string;\n\ttype: \"issue\" | \"pull\";\n\tnumber: number;\n\ttitle: string;\n\turl: string;\n\tcreatedAt: string;\n}\n\nexport type TruncatedReason = \"max-repos\" | \"max-api-calls\" | \"rate-limited\";\n\nexport interface ReportUnlabeledResult {\n\tscanned: { repos: number; issues: number; pulls: number };\n\tunlabeled: UnlabeledItem[];\n\ttruncated?: boolean;\n\ttruncatedReason?: TruncatedReason;\n\t/** Only set when truncatedReason is \"rate-limited\" and GitHub sent a Retry-After. */\n\tretryAfterSeconds?: number;\n}\n\nconst DEFAULT_MAX_REPOS = 50;\nconst HARD_MAX_REPOS = 200;\nconst DEFAULT_PER_REPO_LIMIT = 200;\nconst HARD_PER_REPO_LIMIT = 1000;\nconst DEFAULT_MAX_API_CALLS = 250;\nconst HARD_MAX_API_CALLS = 1000;\n\ninterface RawIssueOrPull {\n\tnumber: number;\n\ttitle: string;\n\thtml_url: string;\n\tcreated_at: string;\n\tlabels: unknown[];\n\t/** Present only on items returned by the /issues endpoint that are actually PRs. */\n\tpull_request?: unknown;\n\t/** Present only on items returned by the /pulls endpoint. */\n\tdraft?: boolean;\n}\n\nasync function listUnlabeledIssues(\n\toctokit: Octokit,\n\tbudget: CallBudget,\n\towner: string,\n\trepo: string,\n\tstate: State,\n\tlimit: number\n): Promise<{ scanned: number; unlabeled: UnlabeledItem[] }> {\n\tconst raw = await paginate<RawIssueOrPull>(octokit, budget, \"GET /repos/{owner}/{repo}/issues\", { owner, repo, state }, limit);\n\tconst issuesOnly = raw.filter((it) => !(\"pull_request\" in it));\n\tconst unlabeled = issuesOnly\n\t\t.filter((it) => it.labels.length === 0)\n\t\t.map((it) => toUnlabeledItem(owner, repo, \"issue\", it));\n\treturn { scanned: issuesOnly.length, unlabeled };\n}\n\nasync function listUnlabeledPulls(\n\toctokit: Octokit,\n\tbudget: CallBudget,\n\towner: string,\n\trepo: string,\n\tstate: State,\n\tlimit: number,\n\tincludeDrafts: boolean\n): Promise<{ scanned: number; unlabeled: UnlabeledItem[] }> {\n\tconst raw = await paginate<RawIssueOrPull>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls\", { owner, repo, state }, limit);\n\tconst unlabeled = raw\n\t\t.filter((it) => includeDrafts || !it.draft)\n\t\t.filter((it) => it.labels.length === 0)\n\t\t.map((it) => toUnlabeledItem(owner, repo, \"pull\", it));\n\treturn { scanned: raw.length, unlabeled };\n}\n\nfunction toUnlabeledItem(owner: string, repo: string, type: \"issue\" | \"pull\", it: RawIssueOrPull): UnlabeledItem {\n\treturn { repo: `${owner}/${repo}`, type, number: it.number, title: it.title, url: it.html_url, createdAt: it.created_at };\n}\n\nexport async function reportUnlabeled(octokit: Octokit, input: ReportUnlabeledInput): Promise<ReportUnlabeledResult> {\n\tconst target = input.target ?? \"both\";\n\tconst state = input.state ?? \"open\";\n\tconst includeDrafts = input.includeDrafts ?? false;\n\tconst maxRepos = Math.min(input.maxRepos ?? DEFAULT_MAX_REPOS, HARD_MAX_REPOS);\n\tconst perRepoLimit = Math.min(input.perRepoLimit ?? DEFAULT_PER_REPO_LIMIT, HARD_PER_REPO_LIMIT);\n\tconst maxApiCalls = Math.min(input.maxApiCalls ?? DEFAULT_MAX_API_CALLS, HARD_MAX_API_CALLS);\n\tconst budget = new CallBudget(maxApiCalls);\n\n\tconst unlabeled: UnlabeledItem[] = [];\n\tconst scanned = { repos: 0, issues: 0, pulls: 0 };\n\n\ttry {\n\t\tlet repos: string[];\n\t\tif (input.repo) {\n\t\t\trepos = [input.repo];\n\t\t} else {\n\t\t\trepos = await listOwnerRepos(octokit, budget, input.owner, maxRepos);\n\t\t}\n\t\tscanned.repos = repos.length;\n\n\t\tfor (const repo of repos) {\n\t\t\tif (target === \"issues\" || target === \"both\") {\n\t\t\t\tconst out = await listUnlabeledIssues(octokit, budget, input.owner, repo, state, perRepoLimit);\n\t\t\t\tscanned.issues += out.scanned;\n\t\t\t\tunlabeled.push(...out.unlabeled);\n\t\t\t}\n\t\t\tif (target === \"pulls\" || target === \"both\") {\n\t\t\t\tconst out = await listUnlabeledPulls(octokit, budget, input.owner, repo, state, perRepoLimit, includeDrafts);\n\t\t\t\tscanned.pulls += out.scanned;\n\t\t\t\tunlabeled.push(...out.unlabeled);\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\tif (err instanceof RateLimited) {\n\t\t\treturn { scanned, unlabeled, truncated: true, truncatedReason: \"rate-limited\", ...(err.retryAfterSeconds !== undefined ? { retryAfterSeconds: err.retryAfterSeconds } : {}) };\n\t\t}\n\t\tif (err instanceof CallBudgetExhausted) {\n\t\t\treturn { scanned, unlabeled, truncated: true, truncatedReason: \"max-api-calls\" };\n\t\t}\n\t\tthrow err;\n\t}\n\n\treturn { scanned, unlabeled };\n}\n\n/** JSON Schema advertised to the agent for report_unlabeled. */\nexport const REPORT_UNLABELED_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner: { type: \"string\", description: \"repository owner (org/user login) \u2014 selects the read credential\" },\n\t\trepo: { type: \"string\", description: \"repository name; omit to scan every non-archived repo visible to this owner's read PAT\" },\n\t\ttarget: { type: \"string\", enum: [\"issues\", \"pulls\", \"both\"], description: \"what to scan for missing labels\", default: \"both\" },\n\t\tstate: { type: \"string\", enum: [\"open\", \"closed\", \"all\"], description: \"issue/PR state to scan\", default: \"open\" },\n\t\tincludeDrafts: { type: \"boolean\", description: \"include draft PRs in the report (default: excluded)\", default: false },\n\t\tmaxRepos: { type: \"number\", description: `safety cap on repos scanned when repo is omitted (default ${DEFAULT_MAX_REPOS}, hard cap ${HARD_MAX_REPOS})` },\n\t\tperRepoLimit: { type: \"number\", description: `safety cap on items scanned per repo, per resource type (default ${DEFAULT_PER_REPO_LIMIT}, hard cap ${HARD_PER_REPO_LIMIT})` },\n\t\tmaxApiCalls: { type: \"number\", description: `hard ceiling on total REST calls this invocation makes (default ${DEFAULT_MAX_API_CALLS}, hard cap ${HARD_MAX_API_CALLS})` }\n\t}\n};\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/repo-tier.ts\n *\t@Date: 2026-10-04T15:40:09-07:00 (1791153609)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-04T16:41:24-07:00 (1791157284)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Classifies a repo into the CLDMV flow tiers the maintenance skills care about.\n *\n * - `v4` \u2014 carries the v4 release workflow and is a normal next \u2192 master staging-flow repo.\n * - `dev-trunk` \u2014 a v4 repo whose real code lives on a persistent `dev` branch while the default\n * branch / `next` hold only the scaffold.\n * - `non-v4` \u2014 no v4 release workflow on the default branch (even if `next`/`hotfixes` exist).\n *\n * Detection is structural, from three cheap reads, so a skill doesn't have to walk branches and\n * workflow folders itself. It is a signal, not a verdict: a stale `dev` branch on a repo whose\n * `next` happens to equal `master` right after a release looks like a dev-trunk repo, so the\n * raw `signals` are returned for the caller to cross-check.\n */\n\nimport type { Octokit } from \"@octokit/core\";\nimport { CallBudget, CallBudgetExhausted, RateLimited, reqOne } from \"./rest-client.ts\";\n\nexport type RepoTierName = \"v4\" | \"dev-trunk\" | \"non-v4\";\n\nexport interface RepoTier {\n\ttier: RepoTierName;\n\tsignals: {\n\t\t/** `.github/workflows/next-release.yml` exists on the default branch. */\n\t\tv4Workflow: boolean;\n\t\tdefaultBranch?: string;\n\t\t/** `next` branch exists. */\n\t\tnext?: boolean;\n\t\t/** `dev` branch exists. */\n\t\tdev?: boolean;\n\t\t/** `next` is at the same commit as the default branch (nothing queued; scaffold-only when dev exists). */\n\t\tnextEqualsDefault?: boolean;\n\t\t/** `dev` is at a different commit than the default branch. */\n\t\tdevDiffersFromDefault?: boolean;\n\t};\n}\n\nasync function getOrUndefined<T>(octokit: Octokit, budget: CallBudget, route: string, params: Record<string, unknown>): Promise<T | undefined> {\n\ttry {\n\t\treturn await reqOne<T>(octokit, budget, route, params);\n\t} catch (err) {\n\t\tif (err instanceof RateLimited || err instanceof CallBudgetExhausted) throw err;\n\t\tif ((err as { status?: number }).status === 404) return undefined;\n\t\tthrow err;\n\t}\n}\n\nexport async function classifyRepo(octokit: Octokit, budget: CallBudget, owner: string, repo: string): Promise<RepoTier> {\n\tconst info = await getOrUndefined<{ default_branch?: string }>(octokit, budget, \"GET /repos/{owner}/{repo}\", { owner, repo });\n\tconst defaultBranch = info?.default_branch;\n\tconst workflow = await getOrUndefined<unknown>(octokit, budget, \"GET /repos/{owner}/{repo}/contents/{path}\", {\n\t\towner,\n\t\trepo,\n\t\tpath: \".github/workflows/next-release.yml\",\n\t\t...(defaultBranch ? { ref: defaultBranch } : {})\n\t});\n\tconst v4Workflow = workflow !== undefined;\n\tif (!v4Workflow) return { tier: \"non-v4\", signals: { v4Workflow, ...(defaultBranch ? { defaultBranch } : {}) } };\n\n\tconst sha = async (branch: string): Promise<string | undefined> => {\n\t\tconst b = await getOrUndefined<{ commit?: { sha?: string } }>(octokit, budget, \"GET /repos/{owner}/{repo}/branches/{branch}\", { owner, repo, branch });\n\t\treturn b?.commit?.sha;\n\t};\n\tconst [defaultSha, nextSha, devSha] = await Promise.all([defaultBranch ? sha(defaultBranch) : undefined, sha(\"next\"), sha(\"dev\")]);\n\tconst signals: RepoTier[\"signals\"] = {\n\t\tv4Workflow,\n\t\t...(defaultBranch ? { defaultBranch } : {}),\n\t\tnext: nextSha !== undefined,\n\t\tdev: devSha !== undefined,\n\t\t...(nextSha && defaultSha ? { nextEqualsDefault: nextSha === defaultSha } : {}),\n\t\t...(devSha && defaultSha ? { devDiffersFromDefault: devSha !== defaultSha } : {})\n\t};\n\tconst scaffoldOnly = nextSha === undefined || nextSha === defaultSha;\n\tconst tier: RepoTierName = devSha !== undefined && signals.devDiffersFromDefault && scaffoldOnly ? \"dev-trunk\" : \"v4\";\n\treturn { tier, signals };\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/report_security_alerts.ts\n *\t@Date: 2026-10-03T05:10:00+00:00 (1791004200)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-03T05:10:00+00:00 (1791004200)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport type { Octokit } from \"@octokit/core\";\nimport { CallBudget, CallBudgetExhausted, RateLimited, listOwnerRepos, paginate, paginateAfter } from \"./rest-client.ts\";\nimport { classifyRepo, type RepoTier } from \"./repo-tier.ts\";\n\n/**\n * Custom verb: report_security_alerts \u2014 every OPEN Dependabot, code-scanning (CodeQL)\n * and secret-scanning alert, for one repo or across everything an owner has.\n *\n * Why a custom verb: the hosted GitHub MCP's alert tools are single-repo, so \"what is\n * open across the org\" means one call per repo per alert type. This verb asks the\n * org-level endpoints first (one paginated call per alert type for the whole org) and\n * only falls back to a per-repo sweep for an alert type when the org endpoint isn't\n * available to the token (a user-owned account, or a PAT without org alert access).\n *\n * Alert state caveat: an alert's state tracks the default branch, so \"open\" here is\n * the default-branch view. An alert already fixed on a staging branch (`next`) but not\n * yet released still reads as open until the release lands.\n *\n * Secrets: only metadata is reported (type, validity, location of the alert) \u2014 the\n * secret value GitHub returns is deliberately dropped and never leaves this module.\n *\n * Fan-out safety mirrors report_unlabeled (see rest-client.ts): `maxRepos`,\n * `alertLimit` and `maxApiCalls` cap the work; hitting a cap or GitHub's rate limit\n * returns whatever was found with `truncated: true` and a reason.\n */\n\nexport type AlertType = \"dependabot\" | \"codeql\" | \"secrets\";\n\nconst ALL_TYPES: AlertType[] = [\"dependabot\", \"codeql\", \"secrets\"];\n\nexport interface ReportSecurityAlertsInput {\n\towner: string;\n\t/** Repo name; omit to cover every non-archived repo the owner has. */\n\trepo?: string;\n\t/** Which alert types to read. Default: all three. */\n\ttypes?: AlertType[];\n\t/** Safety cap on repos swept per-repo when the org endpoint is unavailable. Default 200, hard-capped at 500. */\n\tmaxRepos?: number;\n\t/** Safety cap on alerts fetched per alert type (org mode) or per repo per type (per-repo mode). Default 500, hard-capped at 5000. */\n\talertLimit?: number;\n\t/** Hard ceiling on total REST calls for this invocation. Default 700, hard-capped at 3000. */\n\tmaxApiCalls?: number;\n\t/** Return only the per-repo roll-up (`byRepo`) and the counts, not the alert list. An org run is ~700 KB with the list; the roll-up is a few KB. */\n\tsummaryOnly?: boolean;\n\t/** Keep only alerts at or above this severity (secret-scanning alerts have no severity and are always kept). */\n\tminSeverity?: \"critical\" | \"high\" | \"medium\" | \"low\";\n\t/** Keep only these repos (names, with or without the owner prefix). */\n\trepos?: string[];\n\t/** Add each repo's flow tier (`v4` / `dev-trunk` / `non-v4`, plus the raw signals) to `byRepo`. Costs about 3 REST calls per repo that has alerts. */\n\tclassify?: boolean;\n}\n\nexport interface RepoRollup {\n\trepo: string;\n\ttotal: number;\n\tdependabot: number;\n\tcodeql: number;\n\tsecrets: number;\n\tcritical: number;\n\thigh: number;\n\tmedium: number;\n\tlow: number;\n\t/** Only with `classify: true`; absent for a repo that could not be classified before a cap was hit. */\n\ttier?: RepoTier[\"tier\"];\n\ttierSignals?: RepoTier[\"signals\"];\n}\n\nexport interface SecurityAlert {\n\trepo: string;\n\ttype: AlertType;\n\tnumber: number;\n\tseverity: string;\n\tsummary: string;\n\turl: string;\n\tcreatedAt: string;\n\t/** Dependabot only. */\n\tpackage?: string;\n\tecosystem?: string;\n\tmanifest?: string;\n\tscope?: string;\n\tghsa?: string;\n\tcve?: string;\n\tvulnerableRange?: string;\n\tpatchedVersion?: string;\n\t/** Code scanning only. */\n\trule?: string;\n\ttool?: string;\n\tlocation?: string;\n\t/** Secret scanning only. */\n\tsecretType?: string;\n\tvalidity?: string;\n}\n\nexport type SecurityTruncatedReason = \"max-repos\" | \"max-alerts\" | \"max-api-calls\" | \"rate-limited\";\n\nexport interface ReportSecurityAlertsResult {\n\t/** Set only when a per-repo sweep ran. */\n\tscanned: { repos?: number };\n\t/** How each requested type was read: one org-level call set, or a per-repo sweep. */\n\tscope: Partial<Record<AlertType, \"org\" | \"per-repo\">>;\n\t/** Open alerts per type, keyed by severity (secrets are keyed `open`). */\n\tcounts: Partial<Record<AlertType, Record<string, number>>>;\n\t/** One row per repo with at least one alert, worst first (criticals, then highs, then total). */\n\tbyRepo: RepoRollup[];\n\t/** Empty when `summaryOnly` is set; see `alertsOmitted`. */\n\talerts: SecurityAlert[];\n\t/** Set with `summaryOnly`: how many alerts were left out of `alerts`. */\n\talertsOmitted?: number;\n\t/** Per-repo sweep only: repos where an alert type is switched off or not readable, per type. Omitted when none. */\n\tdisabled?: Partial<Record<AlertType, number>>;\n\ttruncated?: boolean;\n\ttruncatedReason?: SecurityTruncatedReason;\n\t/** Only set when truncatedReason is \"rate-limited\" and GitHub sent a Retry-After. */\n\tretryAfterSeconds?: number;\n}\n\nconst DEFAULT_MAX_REPOS = 200;\nconst HARD_MAX_REPOS = 500;\nconst DEFAULT_ALERT_LIMIT = 500;\nconst HARD_ALERT_LIMIT = 5000;\nconst DEFAULT_MAX_API_CALLS = 700;\nconst HARD_MAX_API_CALLS = 3000;\n\nconst SEVERITY_RANK: Record<string, number> = { critical: 0, high: 1, error: 1, medium: 2, moderate: 2, warning: 3, low: 4, note: 5 };\n\ninterface RawRepository {\n\tname?: string;\n\tfull_name?: string;\n}\n\ninterface RawDependabot {\n\tnumber: number;\n\thtml_url: string;\n\tcreated_at: string;\n\trepository?: RawRepository;\n\tdependency?: { package?: { ecosystem?: string; name?: string }; manifest_path?: string; scope?: string };\n\tsecurity_advisory?: { ghsa_id?: string; cve_id?: string | null; summary?: string; severity?: string };\n\tsecurity_vulnerability?: { severity?: string; vulnerable_version_range?: string; first_patched_version?: { identifier?: string } | null };\n}\n\ninterface RawCodeql {\n\tnumber: number;\n\thtml_url: string;\n\tcreated_at: string;\n\trepository?: RawRepository;\n\trule?: { id?: string; severity?: string; security_severity_level?: string; description?: string };\n\ttool?: { name?: string };\n\tmost_recent_instance?: { location?: { path?: string; start_line?: number } };\n}\n\ninterface RawSecret {\n\tnumber: number;\n\thtml_url: string;\n\tcreated_at: string;\n\trepository?: RawRepository;\n\tsecret_type?: string;\n\tsecret_type_display_name?: string;\n\tvalidity?: string;\n\t// `secret` (the value) is intentionally not modelled \u2014 see the module doc.\n}\n\nfunction normalizeDependabot(owner: string, repo: string, a: RawDependabot): SecurityAlert {\n\tconst vuln = a.security_vulnerability;\n\tconst out: SecurityAlert = {\n\t\trepo: a.repository?.full_name ?? `${owner}/${repo}`,\n\t\ttype: \"dependabot\",\n\t\tnumber: a.number,\n\t\tseverity: vuln?.severity ?? a.security_advisory?.severity ?? \"unknown\",\n\t\tsummary: a.security_advisory?.summary ?? \"\",\n\t\turl: a.html_url,\n\t\tcreatedAt: a.created_at\n\t};\n\tif (a.dependency?.package?.name) out.package = a.dependency.package.name;\n\tif (a.dependency?.package?.ecosystem) out.ecosystem = a.dependency.package.ecosystem;\n\tif (a.dependency?.manifest_path) out.manifest = a.dependency.manifest_path;\n\tif (a.dependency?.scope) out.scope = a.dependency.scope;\n\tif (a.security_advisory?.ghsa_id) out.ghsa = a.security_advisory.ghsa_id;\n\tif (a.security_advisory?.cve_id) out.cve = a.security_advisory.cve_id;\n\tif (vuln?.vulnerable_version_range) out.vulnerableRange = vuln.vulnerable_version_range;\n\tif (vuln?.first_patched_version?.identifier) out.patchedVersion = vuln.first_patched_version.identifier;\n\treturn out;\n}\n\nfunction normalizeCodeql(owner: string, repo: string, a: RawCodeql): SecurityAlert {\n\tconst out: SecurityAlert = {\n\t\trepo: a.repository?.full_name ?? `${owner}/${repo}`,\n\t\ttype: \"codeql\",\n\t\tnumber: a.number,\n\t\tseverity: a.rule?.security_severity_level ?? a.rule?.severity ?? \"unknown\",\n\t\tsummary: a.rule?.description ?? \"\",\n\t\turl: a.html_url,\n\t\tcreatedAt: a.created_at\n\t};\n\tif (a.rule?.id) out.rule = a.rule.id;\n\tif (a.tool?.name) out.tool = a.tool.name;\n\tconst loc = a.most_recent_instance?.location;\n\tif (loc?.path) out.location = loc.start_line !== undefined ? `${loc.path}:${loc.start_line}` : loc.path;\n\treturn out;\n}\n\nfunction normalizeSecret(owner: string, repo: string, a: RawSecret): SecurityAlert {\n\tconst out: SecurityAlert = {\n\t\trepo: a.repository?.full_name ?? `${owner}/${repo}`,\n\t\ttype: \"secrets\",\n\t\tnumber: a.number,\n\t\tseverity: \"open\",\n\t\tsummary: a.secret_type_display_name ?? a.secret_type ?? \"\",\n\t\turl: a.html_url,\n\t\tcreatedAt: a.created_at\n\t};\n\tif (a.secret_type) out.secretType = a.secret_type;\n\tif (a.validity) out.validity = a.validity;\n\treturn out;\n}\n\ninterface TypeSpec {\n\torgRoute: string;\n\trepoRoute: string;\n\t/** Dependabot's endpoints are cursor-paginated; the other two take `page`. */\n\tcursor: boolean;\n\tnormalize: (owner: string, repo: string, raw: never) => SecurityAlert;\n}\n\nconst SPECS: Record<AlertType, TypeSpec> = {\n\tdependabot: {\n\t\torgRoute: \"GET /orgs/{owner}/dependabot/alerts\",\n\t\trepoRoute: \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n\t\tcursor: true,\n\t\tnormalize: normalizeDependabot as TypeSpec[\"normalize\"]\n\t},\n\tcodeql: {\n\t\torgRoute: \"GET /orgs/{owner}/code-scanning/alerts\",\n\t\trepoRoute: \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n\t\tcursor: false,\n\t\tnormalize: normalizeCodeql as TypeSpec[\"normalize\"]\n\t},\n\tsecrets: {\n\t\torgRoute: \"GET /orgs/{owner}/secret-scanning/alerts\",\n\t\trepoRoute: \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n\t\tcursor: false,\n\t\tnormalize: normalizeSecret as TypeSpec[\"normalize\"]\n\t}\n};\n\n/** A 403/404 from an alert endpoint means \"not available to this token / switched off here\", not a failure. */\nfunction isUnavailable(err: unknown): boolean {\n\tconst status = (err as { status?: number }).status;\n\treturn status === 403 || status === 404;\n}\n\nasync function fetchRaw(octokit: Octokit, budget: CallBudget, spec: TypeSpec, route: string, params: Record<string, unknown>, limit: number): Promise<unknown[]> {\n\tconst query = { ...params, state: \"open\" };\n\treturn spec.cursor ? paginateAfter<unknown>(octokit, budget, route, query, limit) : paginate<unknown>(octokit, budget, route, query, limit);\n}\n\nfunction severityRank(s: string): number {\n\treturn SEVERITY_RANK[s.toLowerCase()] ?? 6;\n}\n\nexport async function reportSecurityAlerts(octokit: Octokit, input: ReportSecurityAlertsInput): Promise<ReportSecurityAlertsResult> {\n\tconst types = input.types && input.types.length > 0 ? ALL_TYPES.filter((t) => input.types!.includes(t)) : ALL_TYPES;\n\tconst maxRepos = Math.min(input.maxRepos ?? DEFAULT_MAX_REPOS, HARD_MAX_REPOS);\n\tconst alertLimit = Math.min(input.alertLimit ?? DEFAULT_ALERT_LIMIT, HARD_ALERT_LIMIT);\n\tconst maxApiCalls = Math.min(input.maxApiCalls ?? DEFAULT_MAX_API_CALLS, HARD_MAX_API_CALLS);\n\tconst budget = new CallBudget(maxApiCalls);\n\n\tconst alerts: SecurityAlert[] = [];\n\tconst scope: ReportSecurityAlertsResult[\"scope\"] = {};\n\tconst scanned: ReportSecurityAlertsResult[\"scanned\"] = {};\n\tconst disabled: Partial<Record<AlertType, number>> = {};\n\tlet truncatedReason: SecurityTruncatedReason | undefined;\n\tlet retryAfterSeconds: number | undefined;\n\n\tconst addAll = (type: AlertType, owner: string, repo: string, raws: unknown[]) => {\n\t\tconst spec = SPECS[type];\n\t\tfor (const raw of raws) alerts.push(spec.normalize(owner, repo, raw as never));\n\t};\n\n\ttry {\n\t\t// Which types still need a per-repo sweep (org endpoint unavailable, or a single repo was asked for).\n\t\tlet sweep: AlertType[] = [];\n\t\tif (input.repo) {\n\t\t\tsweep = types;\n\t\t} else {\n\t\t\tfor (const type of types) {\n\t\t\t\ttry {\n\t\t\t\t\tconst raws = await fetchRaw(octokit, budget, SPECS[type], SPECS[type].orgRoute, { owner: input.owner }, alertLimit);\n\t\t\t\t\tscope[type] = \"org\";\n\t\t\t\t\tif (raws.length >= alertLimit) truncatedReason ??= \"max-alerts\";\n\t\t\t\t\taddAll(type, input.owner, \"\", raws);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (!isUnavailable(err)) throw err;\n\t\t\t\t\tsweep.push(type);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (sweep.length > 0) {\n\t\t\tlet repos: string[];\n\t\t\tif (input.repo) {\n\t\t\t\trepos = [input.repo];\n\t\t\t} else {\n\t\t\t\t// One past the cap, so \"exactly maxRepos repos\" can be told apart from \"more than maxRepos\".\n\t\t\t\tconst listed = await listOwnerRepos(octokit, budget, input.owner, maxRepos + 1);\n\t\t\t\tif (listed.length > maxRepos) truncatedReason ??= \"max-repos\";\n\t\t\t\trepos = listed.slice(0, maxRepos);\n\t\t\t}\n\t\t\tscanned.repos = repos.length;\n\t\t\tfor (const type of sweep) scope[type] = \"per-repo\";\n\n\t\t\tfor (const repo of repos) {\n\t\t\t\tfor (const type of sweep) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst raws = await fetchRaw(octokit, budget, SPECS[type], SPECS[type].repoRoute, { owner: input.owner, repo }, alertLimit);\n\t\t\t\t\t\tif (raws.length >= alertLimit) truncatedReason ??= \"max-alerts\";\n\t\t\t\t\t\taddAll(type, input.owner, repo, raws);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tif (!isUnavailable(err)) throw err;\n\t\t\t\t\t\tdisabled[type] = (disabled[type] ?? 0) + 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\tif (err instanceof RateLimited) {\n\t\t\ttruncatedReason = \"rate-limited\";\n\t\t\tretryAfterSeconds = err.retryAfterSeconds;\n\t\t} else if (err instanceof CallBudgetExhausted) {\n\t\t\ttruncatedReason = \"max-api-calls\";\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\t// Filters run after fetching: the API has no cross-type severity or repo-list filter.\n\tconst minRank = input.minSeverity ? { critical: 0, high: 1, medium: 2, low: 4 }[input.minSeverity] : undefined;\n\tconst wanted = input.repos?.length ? new Set(input.repos.map((r) => r.replace(/^[^/]+\\//, \"\").toLowerCase())) : undefined;\n\tfor (let i = alerts.length - 1; i >= 0; i--) {\n\t\tconst a = alerts[i]!;\n\t\tconst name = a.repo.replace(/^[^/]+\\//, \"\").toLowerCase();\n\t\tif (wanted && !wanted.has(name)) alerts.splice(i, 1);\n\t\telse if (minRank !== undefined && a.type !== \"secrets\" && severityRank(a.severity) > minRank) alerts.splice(i, 1);\n\t}\n\n\talerts.sort((a, b) => severityRank(a.severity) - severityRank(b.severity) || a.repo.localeCompare(b.repo) || a.number - b.number);\n\n\tconst counts: ReportSecurityAlertsResult[\"counts\"] = {};\n\tfor (const type of types) {\n\t\tif (scope[type] === undefined) continue; // never read (truncated before this type) \u2014 don't claim a zero count\n\t\tconst byType: Record<string, number> = {};\n\t\tfor (const a of alerts) if (a.type === type) byType[a.severity] = (byType[a.severity] ?? 0) + 1;\n\t\tcounts[type] = byType;\n\t}\n\n\tconst rollup = new Map<string, RepoRollup>();\n\tfor (const a of alerts) {\n\t\tlet row = rollup.get(a.repo);\n\t\tif (!row) {\n\t\t\trow = { repo: a.repo, total: 0, dependabot: 0, codeql: 0, secrets: 0, critical: 0, high: 0, medium: 0, low: 0 };\n\t\t\trollup.set(a.repo, row);\n\t\t}\n\t\trow.total++;\n\t\trow[a.type]++;\n\t\tconst r = severityRank(a.severity);\n\t\tif (r === 0) row.critical++;\n\t\telse if (r === 1) row.high++;\n\t\telse if (r === 2) row.medium++;\n\t\telse if (r >= 3 && r <= 5) row.low++;\n\t}\n\tconst byRepo = [...rollup.values()].sort((a, b) => b.critical - a.critical || b.high - a.high || b.total - a.total || a.repo.localeCompare(b.repo));\n\n\tif (input.classify) {\n\t\ttry {\n\t\t\tfor (const row of byRepo) {\n\t\t\t\tconst [owner, repo] = row.repo.includes(\"/\") ? row.repo.split(\"/\") : [input.owner, row.repo];\n\t\t\t\tconst t = await classifyRepo(octokit, budget, owner!, repo!);\n\t\t\t\trow.tier = t.tier;\n\t\t\t\trow.tierSignals = t.signals;\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tif (err instanceof RateLimited) {\n\t\t\t\ttruncatedReason = \"rate-limited\";\n\t\t\t\tretryAfterSeconds = err.retryAfterSeconds;\n\t\t\t} else if (err instanceof CallBudgetExhausted) {\n\t\t\t\ttruncatedReason = \"max-api-calls\";\n\t\t\t} else {\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst omitted = input.summaryOnly ? alerts.length : undefined;\n\treturn {\n\t\tscanned,\n\t\tscope,\n\t\tcounts,\n\t\tbyRepo,\n\t\talerts: input.summaryOnly ? [] : alerts,\n\t\t...(omitted !== undefined ? { alertsOmitted: omitted } : {}),\n\t\t...(Object.keys(disabled).length > 0 ? { disabled } : {}),\n\t\t...(truncatedReason ? { truncated: true, truncatedReason } : {}),\n\t\t...(retryAfterSeconds !== undefined ? { retryAfterSeconds } : {})\n\t};\n}\n\n/** JSON Schema advertised to the agent for report_security_alerts. */\nexport const REPORT_SECURITY_ALERTS_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner: { type: \"string\", description: \"repository owner (org/user login) \u2014 selects the read credential\" },\n\t\trepo: { type: \"string\", description: \"repository name; omit to cover every non-archived repo this owner has\" },\n\t\ttypes: {\n\t\t\ttype: \"array\",\n\t\t\titems: { type: \"string\", enum: [\"dependabot\", \"codeql\", \"secrets\"] },\n\t\t\tdescription: \"which alert types to read (default: all three)\"\n\t\t},\n\t\tmaxRepos: { type: \"number\", description: `safety cap on repos swept per-repo when the org-level endpoint is unavailable (default ${DEFAULT_MAX_REPOS}, hard cap ${HARD_MAX_REPOS})` },\n\t\talertLimit: { type: \"number\", description: `safety cap on alerts fetched per type (org mode) or per repo per type (default ${DEFAULT_ALERT_LIMIT}, hard cap ${HARD_ALERT_LIMIT})` },\n\t\tmaxApiCalls: { type: \"number\", description: `hard ceiling on total REST calls this invocation makes (default ${DEFAULT_MAX_API_CALLS}, hard cap ${HARD_MAX_API_CALLS})` },\n\t\tsummaryOnly: { type: \"boolean\", description: \"return only the per-repo roll-up (byRepo) and counts, not the alert list \u2014 a few KB instead of ~700 KB for a whole org\", default: false },\n\t\tminSeverity: { type: \"string\", enum: [\"critical\", \"high\", \"medium\", \"low\"], description: \"keep only alerts at or above this severity (secret-scanning alerts are always kept)\" },\n\t\trepos: { type: \"array\", items: { type: \"string\" }, description: \"keep only these repos (names, with or without the owner prefix)\" },\n\t\tclassify: { type: \"boolean\", description: \"add each repo's flow tier (v4 / dev-trunk / non-v4) and the raw signals to byRepo; about 3 REST calls per repo with alerts\", default: false }\n\t}\n};\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/release-analysis.ts\n *\t@Date: 2026-10-04T15:40:09-07:00 (1791153609)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T23:26:36-07:00 (1793514396)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Release-readiness analysis for report_release_prs `analyze: true`.\n *\n * This is the decision logic the release-docs skill used to walk by hand: what is still open against\n * the release's integration branch, whether an existing changelog actually covers what merged, and\n * the resulting verdict. The pure helpers (parsing, classification, coverage, verdict) are exported\n * for tests; `analyzeRelease` does the reads.\n */\n\nimport type { Octokit } from \"@octokit/core\";\nimport { CallBudget, CallBudgetExhausted, RateLimited, paginate, reqOne } from \"./rest-client.ts\";\n\nexport type OpenPrKind = \"doc\" | \"dependency\" | \"feature\" | \"draft\";\n\nexport interface OpenPr {\n\tnumber: number;\n\ttitle: string;\n\turl: string;\n\tkind: OpenPrKind;\n\t/** Version named in a doc PR's title (`v1.2.3`), when it has one. */\n\tversion?: string;\n}\n\nexport type FreshnessStatus = \"current\" | \"minor-gap\" | \"stale\" | \"version-drift\" | \"thin\";\n\nexport interface CoverageGap {\n\tnumber: number;\n\ttitle: string;\n}\n\nexport interface Freshness {\n\tstatus: FreshnessStatus;\n\t/** Non-doc PRs that shipped in this release (the expected coverage). */\n\texpectedPrs: number;\n\t/** User-facing PRs the changelog never mentions \u2014 these make it stale. */\n\tmissingUserFacing: CoverageGap[];\n\t/** CI / chore / style / test PRs it never mentions \u2014 reported, but not stale on their own. */\n\tmissingInternal: CoverageGap[];\n\t/** The changelog's own heading carries the release PR's current version. */\n\theadingMatchesVersion: boolean;\n\t/** The README What's New block names this version. */\n\treadmeMentionsVersion: boolean;\n}\n\nexport type ReleaseVerdict = \"done\" | \"in-flight\" | \"wait\" | \"gray\" | \"write\" | \"update\" | \"inspect\";\n\nexport interface ReleaseAnalysis {\n\topenPrs: OpenPr[];\n\t/** Set only when a changelog file exists. */\n\tfreshness?: Freshness;\n\t/** A doc PR's version differs from the release PR's current version. */\n\tdocVersionMismatch?: boolean;\n\tverdict: ReleaseVerdict;\n\t/** One line explaining the verdict. */\n\treason: string;\n}\n\nconst INTERNAL_TYPES = new Set([\"ci\", \"chore\", \"style\", \"test\"]);\n\n/** `feat(scope)!: x` -> `feat`. Returns \"\" when the subject is not conventional. */\nexport function commitType(subject: string): string {\n\tconst m = /^([a-z]+)(?:\\([^)]*\\))?!?:/i.exec(subject.trim());\n\treturn m ? m[1]!.toLowerCase() : \"\";\n}\n\nexport interface ReleaseCommitPr {\n\tnumber: number;\n\ttitle: string;\n\ttype: string;\n}\n\n/**\n * PR numbers shipped by a release, from the commits of its release PR. Only the first line of each\n * commit is read: squash bodies list other PR numbers and would fake coverage. Docs PRs (they describe\n * the release rather than being part of it) and the version bump are dropped.\n */\nexport function releaseCommitPrs(messages: string[]): ReleaseCommitPr[] {\n\tconst seen = new Map<number, ReleaseCommitPr>();\n\tfor (const message of messages) {\n\t\tconst subject = message.split(\"\\n\", 1)[0]!.trim();\n\t\tlet number: number | undefined;\n\t\tlet title = subject;\n\t\tconst squash = /\\(#(\\d+)\\)\\s*$/.exec(subject);\n\t\tconst merge = /^Merge pull request #(\\d+)\\b/.exec(subject);\n\t\tif (squash) {\n\t\t\tnumber = Number(squash[1]);\n\t\t\ttitle = subject.slice(0, squash.index).trim();\n\t\t} else if (merge) {\n\t\t\tnumber = Number(merge[1]);\n\t\t}\n\t\tif (number === undefined) continue;\n\t\tconst type = commitType(title);\n\t\tif (type === \"docs\" || /^chore: bump version/i.test(title)) continue;\n\t\tif (!seen.has(number)) seen.set(number, { number, title, type });\n\t}\n\treturn [...seen.values()];\n}\n\n/** Every PR number a changelog mentions, by `#N` or `/pull/N`. */\nexport function mentionedPrs(changelog: string): Set<number> {\n\tconst out = new Set<number>();\n\tfor (const m of changelog.matchAll(/(?:#|\\/pull\\/)(\\d+)\\b/g)) out.add(Number(m[1]));\n\treturn out;\n}\n\nexport function classifyOpenPr(pr: { number: number; title: string; html_url: string; draft?: boolean; head?: { ref?: string }; user?: { login?: string }; labels?: Array<{ name?: string }> }): OpenPr {\n\tconst title = pr.title;\n\tconst labels = (pr.labels ?? []).map((l) => l.name ?? \"\");\n\tlet kind: OpenPrKind;\n\tif (pr.draft) kind = \"draft\";\n\telse if (/^docs?(\\([^)]*\\))?!?:/i.test(title) || (pr.head?.ref ?? \"\").startsWith(\"docs/\")) kind = \"doc\";\n\telse if (labels.includes(\"type: dependencies\") || /^deps?(\\([^)]*\\))?!?:/i.test(title) || (pr.user?.login ?? \"\").toLowerCase().startsWith(\"dependabot\")) kind = \"dependency\";\n\telse kind = \"feature\";\n\tconst v = kind === \"doc\" ? /\\bv?(\\d+\\.\\d+\\.\\d+)\\b/.exec(title) : null;\n\treturn { number: pr.number, title, url: pr.html_url, kind, ...(v ? { version: v[1]! } : {}) };\n}\n\nexport function assessFreshness(version: string, changelog: string, commits: ReleaseCommitPr[], readme: string | undefined): Freshness {\n\tconst mentioned = mentionedPrs(changelog);\n\tconst missing = commits.filter((c) => !mentioned.has(c.number));\n\tconst missingUserFacing = missing.filter((c) => !INTERNAL_TYPES.has(c.type)).map(({ number, title }) => ({ number, title }));\n\tconst missingInternal = missing.filter((c) => INTERNAL_TYPES.has(c.type)).map(({ number, title }) => ({ number, title }));\n\t// String.prototype.split always returns at least one element, so the \"\" fallback is unreachable; it only satisfies noUncheckedIndexedAccess.\n\t/* v8 ignore next */\n\tconst firstLine = changelog.split(\"\\n\", 1)[0] ?? \"\";\n\tconst headingMatchesVersion = new RegExp(`v?${version.replace(/\\./g, \"\\\\.\")}\\\\b`).test(firstLine);\n\tconst readmeMentionsVersion = readme !== undefined && new RegExp(`Latest:\\\\s*v?${version.replace(/\\./g, \"\\\\.\")}\\\\b`).test(readme);\n\tconst thin = changelog.length < 400 || !/^##\\s+Overview/m.test(changelog);\n\tlet status: FreshnessStatus = \"current\";\n\tif (!headingMatchesVersion) status = \"version-drift\";\n\telse if (missingUserFacing.length > 0) status = \"stale\";\n\telse if (thin) status = \"thin\";\n\telse if (missingInternal.length > 0) status = \"minor-gap\";\n\treturn { status, expectedPrs: commits.length, missingUserFacing, missingInternal, headingMatchesVersion, readmeMentionsVersion };\n}\n\n/** The release-docs decision table. */\nexport function decideVerdict(args: { hasChangelog: boolean; unknownVersion: boolean; freshness?: Freshness; openPrs: OpenPr[]; version: string | null }): { verdict: ReleaseVerdict; reason: string; docVersionMismatch?: boolean } {\n\tif (args.unknownVersion) return { verdict: \"inspect\", reason: \"the release PR title has no `release: vX.Y.Z` version\" };\n\tconst f = args.freshness;\n\tif (args.hasChangelog && f && (f.status === \"current\" || f.status === \"minor-gap\")) {\n\t\treturn { verdict: \"done\", reason: f.status === \"minor-gap\" ? `changelog covers every user-facing change; ${f.missingInternal.length} internal PR(s) not mentioned` : \"changelog is current\" };\n\t}\n\tconst docs = args.openPrs.filter((p) => p.kind === \"doc\");\n\tconst features = args.openPrs.filter((p) => p.kind === \"feature\");\n\tconst others = args.openPrs.filter((p) => p.kind === \"dependency\" || p.kind === \"draft\");\n\tconst need = args.hasChangelog ? `changelog is ${f?.status ?? \"out of date\"}` : \"no changelog file\";\n\tif (docs.length > 0) {\n\t\tconst mismatch = args.version !== null && docs.some((d) => d.version !== undefined && d.version !== args.version);\n\t\treturn { verdict: \"in-flight\", reason: `${need}; doc PR #${docs[0]!.number} is open`, ...(mismatch ? { docVersionMismatch: true } : {}) };\n\t}\n\tif (features.length > 0) return { verdict: \"wait\", reason: `${need}; ${features.length} feature/fix PR(s) still open against the release branch` };\n\tif (others.length > 0) return { verdict: \"gray\", reason: `${need}; only dependency PR(s) or drafts are open (${others.length})` };\n\treturn { verdict: args.hasChangelog ? \"update\" : \"write\", reason: `${need}; nothing is open against the release branch` };\n}\n\nfunction decodeContent(data: unknown): string | undefined {\n\tconst d = data as { content?: string; encoding?: string } | undefined;\n\tif (!d || typeof d.content !== \"string\") return undefined;\n\treturn d.encoding === \"base64\" ? Buffer.from(d.content, \"base64\").toString(\"utf8\") : d.content;\n}\n\nasync function getText(octokit: Octokit, budget: CallBudget, owner: string, repo: string, path: string, ref: string): Promise<string | undefined> {\n\ttry {\n\t\treturn decodeContent(await reqOne(octokit, budget, \"GET /repos/{owner}/{repo}/contents/{path}\", { owner, repo, path, ref }));\n\t} catch (err) {\n\t\tif (err instanceof RateLimited || err instanceof CallBudgetExhausted) throw err;\n\t\tif ((err as { status?: number }).status === 404) return undefined;\n\t\tthrow err;\n\t}\n}\n\nexport async function analyzeRelease(\n\toctokit: Octokit,\n\tbudget: CallBudget,\n\targs: { owner: string; repo: string; pull: number; head: string; version: string | null; changelogPath?: string }\n): Promise<ReleaseAnalysis> {\n\tconst { owner, repo } = args;\n\tconst open = await paginate<Parameters<typeof classifyOpenPr>[0]>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls\", { owner, repo, state: \"open\", base: args.head }, 200);\n\tconst openPrs = open.map(classifyOpenPr);\n\n\tlet freshness: Freshness | undefined;\n\tif (args.changelogPath && args.version) {\n\t\tconst commits = await paginate<{ commit?: { message?: string } }>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\", { owner, repo, pull_number: args.pull }, 300);\n\t\tconst changelog = (await getText(octokit, budget, owner, repo, args.changelogPath, args.head)) ?? \"\";\n\t\tconst readme = await getText(octokit, budget, owner, repo, \"README.md\", args.head);\n\t\tfreshness = assessFreshness(args.version, changelog, releaseCommitPrs(commits.map((c) => c.commit?.message ?? \"\")), readme);\n\t}\n\tconst decision = decideVerdict({ hasChangelog: Boolean(args.changelogPath), unknownVersion: args.version === null, freshness, openPrs, version: args.version });\n\treturn {\n\t\topenPrs,\n\t\t...(freshness ? { freshness } : {}),\n\t\t...(decision.docVersionMismatch ? { docVersionMismatch: true } : {}),\n\t\tverdict: decision.verdict,\n\t\treason: decision.reason\n\t};\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/report_release_prs.ts\n *\t@Date: 2026-10-03T15:00:00+00:00 (1791039600)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-03T15:00:00+00:00 (1791039600)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport type { Octokit } from \"@octokit/core\";\nimport { CallBudget, CallBudgetExhausted, RateLimited, reqOne } from \"./rest-client.ts\";\nimport { analyzeRelease, type ReleaseAnalysis, type ReleaseVerdict } from \"./release-analysis.ts\";\n\n/**\n * Custom verb: report_release_prs \u2014 every open release PR for an owner (or one repo),\n * with whether its version's changelog file is already on the release branch.\n *\n * Built for mass updates: an agent sweeping a fleet needs to know which repos have a\n * release PR waiting and which of those still lack the curated per-version changelog\n * (`docs/changelog[s]/v<major>/vX.Y.Z.md`, the exact file the CLDMV release automation\n * injects as the release-PR body). Per-repo `list_pull_requests` over every repo would\n * be hundreds of calls; this uses ONE search call for the whole owner plus two cheap\n * calls per release PR actually found.\n *\n * A \"release PR\" is an open PR carrying the `release` label (applied by the v4 release\n * automation to both the `next \u2192 master` and `hotfixes \u2192 master` PRs). The version is\n * read from the `release: vX.Y.Z - \u2026` title.\n *\n * The changelog is looked up at the PR's head commit, not the default branch \u2014 the file\n * lands on `next` before the release PR merges, so that is where it must exist.\n */\n\nexport interface ReportReleasePrsInput {\n\towner: string;\n\t/** Repo name; omit to search every repo this owner has. */\n\trepo?: string;\n\t/** Return only release PRs that are not ready (missing changelog or unreadable version). Default false. */\n\tonlyMissing?: boolean;\n\t/**\n\t * Also work out, per release PR, what is still open against its release branch, whether an existing\n\t * changelog is actually up to date, and a verdict (done / in-flight / wait / gray / write / update / inspect).\n\t * Costs about 5 more REST calls per release PR, so raise `maxApiCalls` for a whole org. Default false.\n\t */\n\tanalyze?: boolean;\n\t/** Hard ceiling on total REST calls for this invocation. Default 300, hard-capped at 1000. */\n\tmaxApiCalls?: number;\n}\n\nexport type ReleasePrStatus = \"ready\" | \"needs-changelog\" | \"unknown-version\";\n\nexport interface ReleasePr {\n\trepo: string;\n\tpull: number;\n\turl: string;\n\ttitle: string;\n\t/** Parsed from the `release: vX.Y.Z` title; null when the title has no version. */\n\tversion: string | null;\n\thead: string;\n\tbase: string;\n\tdraft: boolean;\n\tstatus: ReleasePrStatus;\n\t/** The changelog path found, when `status` is \"ready\". */\n\tchangelogPath?: string;\n\t/** The paths that were looked up, when `status` is \"needs-changelog\". */\n\tcheckedPaths?: string[];\n\t/** Only with `analyze: true`. */\n\tanalysis?: ReleaseAnalysis;\n}\n\nexport type ReleaseTruncatedReason = \"max-results\" | \"incomplete-search\" | \"max-api-calls\" | \"rate-limited\";\n\nexport interface ReportReleasePrsResult {\n\tscanned: { releasePrs: number };\n\tsummary: { ready: number; needsChangelog: number; unknownVersion: number };\n\t/** Only with `analyze: true`: how many release PRs landed on each verdict. */\n\tverdicts?: Partial<Record<ReleaseVerdict, number>>;\n\treleasePrs: ReleasePr[];\n\ttruncated?: boolean;\n\ttruncatedReason?: ReleaseTruncatedReason;\n\t/** Only set when truncatedReason is \"rate-limited\" and GitHub sent a Retry-After. */\n\tretryAfterSeconds?: number;\n}\n\nconst DEFAULT_MAX_API_CALLS = 300;\nconst HARD_MAX_API_CALLS = 1000;\nconst SEARCH_PAGE_SIZE = 100;\n\ninterface SearchHit {\n\tnumber: number;\n\ttitle: string;\n\thtml_url: string;\n\tdraft?: boolean;\n\trepository_url: string;\n}\n\ninterface SearchResponse {\n\ttotal_count: number;\n\tincomplete_results: boolean;\n\titems: SearchHit[];\n}\n\ninterface RawPull {\n\thead: { ref: string };\n\tbase: { ref: string };\n\tdraft?: boolean;\n}\n\n/** Pulls `1.2.3` (or a prerelease form) out of a `release: v1.2.3 - \u2026` title. */\nexport function parseReleaseVersion(title: string): string | null {\n\tconst m = /\\brelease:\\s*v?(\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?)/i.exec(title);\n\treturn m ? m[1]! : null;\n}\n\n/** The places a version's changelog can live \u2014 `changelog` and `changelogs` are both in use. */\nexport function changelogPaths(version: string): string[] {\n\tconst major = version.split(\".\")[0]!;\n\treturn [`docs/changelog/v${major}/v${version}.md`, `docs/changelogs/v${major}/v${version}.md`];\n}\n\nfunction repoFromUrl(repositoryUrl: string): { owner: string; repo: string } {\n\tconst parts = repositoryUrl.split(\"/\");\n\treturn { owner: parts[parts.length - 2]!, repo: parts[parts.length - 1]! };\n}\n\n/** First of `paths` that exists at `ref`, or undefined. A 404 means \"not there\"; any other error propagates. */\nasync function findChangelog(octokit: Octokit, budget: CallBudget, owner: string, repo: string, ref: string, paths: string[]): Promise<string | undefined> {\n\tfor (const path of paths) {\n\t\ttry {\n\t\t\tawait reqOne(octokit, budget, \"GET /repos/{owner}/{repo}/contents/{path}\", { owner, repo, path, ref });\n\t\t\treturn path;\n\t\t} catch (err) {\n\t\t\tif (err instanceof RateLimited || err instanceof CallBudgetExhausted) throw err;\n\t\t\tif ((err as { status?: number }).status !== 404) throw err;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport async function reportReleasePrs(octokit: Octokit, input: ReportReleasePrsInput): Promise<ReportReleasePrsResult> {\n\tconst maxApiCalls = Math.min(input.maxApiCalls ?? DEFAULT_MAX_API_CALLS, HARD_MAX_API_CALLS);\n\tconst budget = new CallBudget(maxApiCalls);\n\tconst scope = input.repo ? `repo:${input.owner}/${input.repo}` : `org:${input.owner}`;\n\n\tconst releasePrs: ReleasePr[] = [];\n\tlet truncatedReason: ReleaseTruncatedReason | undefined;\n\tlet retryAfterSeconds: number | undefined;\n\tlet hits = 0;\n\n\ttry {\n\t\tconst search = await reqOne<SearchResponse>(octokit, budget, \"GET /search/issues\", {\n\t\t\tq: `${scope} is:pr is:open label:release`,\n\t\t\tper_page: SEARCH_PAGE_SIZE\n\t\t});\n\t\thits = search.items.length;\n\t\tif (search.total_count > search.items.length) truncatedReason = \"max-results\";\n\t\telse if (search.incomplete_results) truncatedReason = \"incomplete-search\";\n\n\t\tfor (const hit of search.items) {\n\t\t\tconst { owner, repo } = repoFromUrl(hit.repository_url);\n\t\t\tconst pull = await reqOne<RawPull>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls/{pull_number}\", { owner, repo, pull_number: hit.number });\n\t\t\tconst version = parseReleaseVersion(hit.title);\n\t\t\tconst base = {\n\t\t\t\trepo: `${owner}/${repo}`,\n\t\t\t\tpull: hit.number,\n\t\t\t\turl: hit.html_url,\n\t\t\t\ttitle: hit.title,\n\t\t\t\tversion,\n\t\t\t\thead: pull.head.ref,\n\t\t\t\tbase: pull.base.ref,\n\t\t\t\tdraft: pull.draft ?? hit.draft ?? false\n\t\t\t};\n\t\t\tlet entry: ReleasePr;\n\t\t\tif (version === null) {\n\t\t\t\tentry = { ...base, status: \"unknown-version\" };\n\t\t\t} else {\n\t\t\t\tconst paths = changelogPaths(version);\n\t\t\t\tconst found = await findChangelog(octokit, budget, owner, repo, pull.head.ref, paths);\n\t\t\t\tentry = found ? { ...base, status: \"ready\", changelogPath: found } : { ...base, status: \"needs-changelog\", checkedPaths: paths };\n\t\t\t}\n\t\t\t// Pushed before the analysis so a cap hit mid-analysis still reports this PR's status.\n\t\t\treleasePrs.push(entry);\n\t\t\tif (input.analyze) {\n\t\t\t\tentry.analysis = await analyzeRelease(octokit, budget, { owner, repo, pull: hit.number, head: pull.head.ref, version, ...(entry.changelogPath ? { changelogPath: entry.changelogPath } : {}) });\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\tif (err instanceof RateLimited) {\n\t\t\ttruncatedReason = \"rate-limited\";\n\t\t\tretryAfterSeconds = err.retryAfterSeconds;\n\t\t} else if (err instanceof CallBudgetExhausted) {\n\t\t\ttruncatedReason = \"max-api-calls\";\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tconst summary = {\n\t\tready: releasePrs.filter((p) => p.status === \"ready\").length,\n\t\tneedsChangelog: releasePrs.filter((p) => p.status === \"needs-changelog\").length,\n\t\tunknownVersion: releasePrs.filter((p) => p.status === \"unknown-version\").length\n\t};\n\tlet verdicts: Partial<Record<ReleaseVerdict, number>> | undefined;\n\tif (input.analyze) {\n\t\tverdicts = {};\n\t\tfor (const p of releasePrs) if (p.analysis) verdicts[p.analysis.verdict] = (verdicts[p.analysis.verdict] ?? 0) + 1;\n\t}\n\t// With analysis, \"missing\" means \"not done\": a ready-but-stale changelog still needs work.\n\tconst listed = input.onlyMissing ? releasePrs.filter((p) => (p.analysis ? p.analysis.verdict !== \"done\" : p.status !== \"ready\")) : releasePrs;\n\n\treturn {\n\t\tscanned: { releasePrs: hits },\n\t\tsummary,\n\t\t...(verdicts ? { verdicts } : {}),\n\t\treleasePrs: listed,\n\t\t...(truncatedReason ? { truncated: true, truncatedReason } : {}),\n\t\t...(retryAfterSeconds !== undefined ? { retryAfterSeconds } : {})\n\t};\n}\n\n/** JSON Schema advertised to the agent for report_release_prs. */\nexport const REPORT_RELEASE_PRS_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner: { type: \"string\", description: \"repository owner (org/user login) \u2014 selects the read credential\" },\n\t\trepo: { type: \"string\", description: \"repository name; omit to search every repo this owner has\" },\n\t\tonlyMissing: { type: \"boolean\", description: \"return only release PRs that still need work (no changelog, unreadable version, or \u2014 with analyze \u2014 a verdict other than done); summary counts still cover all\", default: false },\n\t\tanalyze: { type: \"boolean\", description: \"also compute, per release PR: open PRs against its release branch (doc / dependency / feature / draft), whether an existing changelog is up to date (missing PRs, version heading, README), and a verdict (done / in-flight / wait / gray / write / update / inspect). ~5 extra calls per release PR \u2014 raise maxApiCalls for a whole org\", default: false },\n\t\tmaxApiCalls: { type: \"number\", description: `hard ceiling on total REST calls this invocation makes (default ${DEFAULT_MAX_API_CALLS}, hard cap ${HARD_MAX_API_CALLS})` }\n\t}\n};\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/issue_labels.ts\n *\t@Date: 2026-10-16T17:14:34-07:00 (1792196074)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-16T17:25:33-07:00 (1792196733)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport type { Octokit } from \"@octokit/core\";\n\n/**\n * Custom verb: issue_labels \u2014 edit the labels on one issue or PR without replacing the\n * whole set.\n *\n * Why a custom verb: the hosted MCP's only label write path is `issue_write`, whose\n * `labels` argument REPLACES every label on the issue. Changing one status label that way\n * silently drops the rest (CLDMV/gh-broker#117), and reading the set then writing the\n * merged set back loses any label someone else adds in between. GitHub's REST API has\n * per-label endpoints that touch only the labels named, so this verb drives those:\n *\n * - `add` \u2192 POST /repos/{o}/{r}/issues/{n}/labels (server-side append)\n * - `remove` \u2192 DELETE /repos/{o}/{r}/issues/{n}/labels/{name} (one call per label)\n * - `swap` \u2192 a POST of `to`, then a DELETE for every current label starting with `prefix`\n * - `set` \u2192 PUT /repos/{o}/{r}/issues/{n}/labels (explicit full replace, never empty)\n *\n * Writes run create \u2192 add \u2192 remove, so a call that fails part-way never leaves the issue\n * with fewer labels than it should have (a swap whose add is rate-limited keeps its old\n * status label). The error then names exactly what was applied and what was not.\n *\n * Issues and PRs share these endpoints, so a PR number works the same way.\n *\n * Label names to ADD (via `add`, `swap.to` or `set`) must already exist in the repo \u2014\n * a typo would otherwise create a stray label silently. `create_missing: true` creates\n * them instead. Every add-side name is checked before any write, so a refused call\n * changes nothing.\n *\n * GitHub label names are case-insensitive; all matching here (existence, swap prefix,\n * add/remove overlap) is too, and the repo's own spelling is what gets written.\n */\n\nexport interface IssueLabelsSwap {\n\t/** Every current label starting with this (e.g. \"status: \") is removed. */\n\tprefix: string;\n\t/** Then these are added. One label or several. */\n\tto: string | string[];\n}\n\nexport interface IssueLabelsInput {\n\towner: string;\n\trepo: string;\n\t/** Issue or pull-request number. */\n\tissue_number: number;\n\tadd?: string | string[];\n\tremove?: string | string[];\n\tswap?: IssueLabelsSwap;\n\t/** Replace the whole set. Cannot be combined with add/remove/swap. */\n\tset?: string | string[];\n\t/** Create add-side labels that don't exist in the repo instead of refusing. */\n\tcreate_missing?: boolean;\n\t/** Hex color (no #) for labels created via create_missing. */\n\tcolor?: string;\n}\n\nexport interface IssueLabelsResult {\n\tissue: string;\n\t/** The issue's label set after the call. */\n\tlabels: string[];\n\tadded: string[];\n\tremoved: string[];\n\tcreated: string[];\n}\n\nconst DEFAULT_COLOR = \"ededed\";\n/** GitHub's own per-issue label limit; also bounds the requests one call can make. */\nexport const MAX_LABELS = 100;\nconst INPUT_KEYS = new Set([\"owner\", \"repo\", \"issue_number\", \"add\", \"remove\", \"swap\", \"set\", \"create_missing\", \"color\"]);\nconst SWAP_KEYS = new Set([\"prefix\", \"to\"]);\n\nconst fail = (msg: string): never => {\n\tthrow new Error(`issue_labels: ${msg}`);\n};\n\nfunction toList(v: unknown, field: string): string[] {\n\tif (v === undefined) return [];\n\tconst arr = Array.isArray(v) ? v : [v];\n\tif (arr.length === 0) fail(`\"${field}\" is empty \u2014 pass at least one label name`);\n\tfor (const x of arr) {\n\t\tif (typeof x !== \"string\" || !x.trim()) fail(`\"${field}\" must be a label name or a list of label names`);\n\t}\n\tconst list = dedupe((arr as string[]).map((x) => x.trim()));\n\tif (list.length > MAX_LABELS) fail(`\"${field}\" has ${list.length} labels \u2014 at most ${MAX_LABELS} per call`);\n\treturn list;\n}\n\nconst key = (s: string): string => s.toLowerCase();\n\nfunction dedupe(list: string[]): string[] {\n\tconst seen = new Set<string>();\n\treturn list.filter((x) => (seen.has(key(x)) ? false : (seen.add(key(x)), true)));\n}\n\nfunction statusOf(err: unknown): number | undefined {\n\treturn (err as { status?: number })?.status;\n}\n\nconst fmt = (list: string[]): string => `[${list.join(\", \")}]`;\n\ntype Label = { name: string };\nconst names = (data: unknown): string[] => (Array.isArray(data) ? (data as Label[]).map((l) => l.name) : []);\n\n/**\n * The handler is the real contract: the MCP server does not validate against the\n * advertised inputSchema, so every key and type is checked here, before any request.\n */\nfunction validate(input: unknown) {\n\tif (typeof input !== \"object\" || input === null || Array.isArray(input)) fail(\"arguments must be an object\");\n\tconst a = input as Record<string, unknown>;\n\tconst unknown = Object.keys(a).filter((k) => !INPUT_KEYS.has(k));\n\tif (unknown.length) fail(`unknown argument(s): ${unknown.join(\", \")} \u2014 expected ${[...INPUT_KEYS].join(\", \")}`);\n\tif (typeof a.owner !== \"string\" || !a.owner.trim()) fail('\"owner\" must be a non-empty string');\n\tif (typeof a.repo !== \"string\" || !a.repo.trim()) fail('\"repo\" must be a non-empty string');\n\tif (typeof a.issue_number !== \"number\" || !Number.isInteger(a.issue_number) || a.issue_number <= 0) fail('\"issue_number\" must be a positive integer');\n\tif (a.create_missing !== undefined && typeof a.create_missing !== \"boolean\") fail('\"create_missing\" must be a boolean');\n\tif (a.color !== undefined && (typeof a.color !== \"string\" || !/^#?[0-9a-f]{6}$/i.test(a.color))) fail('\"color\" must be a 6-digit hex color, e.g. \"ededed\"');\n\n\tconst add = toList(a.add, \"add\");\n\tconst remove = toList(a.remove, \"remove\");\n\tconst set = a.set === undefined ? undefined : toList(a.set, \"set\");\n\tlet swapTo: string[] = [];\n\tlet swapPrefix: string | undefined;\n\tif (a.swap !== undefined) {\n\t\tconst sw = a.swap as Record<string, unknown>;\n\t\tif (typeof sw !== \"object\" || sw === null || Array.isArray(sw)) fail('\"swap\" must be an object { prefix, to }');\n\t\tconst extra = Object.keys(sw).filter((k) => !SWAP_KEYS.has(k));\n\t\tif (extra.length) fail(`unknown \"swap\" key(s): ${extra.join(\", \")} \u2014 expected prefix, to`);\n\t\tif (typeof sw.prefix !== \"string\" || !sw.prefix) fail('\"swap.prefix\" is required');\n\t\tif (sw.to === undefined) fail('\"swap.to\" needs at least one label');\n\t\tswapPrefix = sw.prefix as string;\n\t\tswapTo = toList(sw.to, \"swap.to\");\n\t}\n\n\tif (set !== undefined && (add.length || remove.length || swapPrefix !== undefined)) {\n\t\tfail('\"set\" replaces the whole label set and cannot be combined with add/remove/swap');\n\t}\n\tif (set === undefined && !add.length && !remove.length && swapPrefix === undefined) fail(\"nothing to do \u2014 pass add, remove, swap or set\");\n\tconst addSide = dedupe([...add, ...swapTo]);\n\tif (addSide.length > MAX_LABELS) fail(`${addSide.length} labels to add \u2014 at most ${MAX_LABELS} per call`);\n\tconst removeKeys = new Set(remove.map(key));\n\tconst clash = addSide.filter((l) => removeKeys.has(key(l)));\n\tif (clash.length) fail(`label(s) both added and removed: ${clash.join(\", \")}`);\n\n\treturn {\n\t\towner: a.owner as string,\n\t\trepo: a.repo as string,\n\t\tissue_number: a.issue_number as number,\n\t\tremove,\n\t\tset,\n\t\tswapPrefix,\n\t\taddSide,\n\t\tcreateMissing: a.create_missing === true,\n\t\tcolor: ((a.color as string | undefined) ?? DEFAULT_COLOR).replace(/^#/, \"\")\n\t};\n}\n\nexport async function issueLabels(octokit: Octokit, input: IssueLabelsInput): Promise<IssueLabelsResult> {\n\tconst { owner, repo, issue_number, remove, set, swapPrefix, addSide, createMissing, color } = validate(input);\n\tconst issue = `${owner}/${repo}#${issue_number}`;\n\tconst base = { owner, repo, issue_number };\n\tconst readLabels = async (): Promise<string[]> =>\n\t\tnames((await octokit.request(\"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\", { ...base, per_page: MAX_LABELS })).data);\n\n\t// 0. The current set: needed for swap's prefix matches, for the spelling of removals and\n\t// for reporting what changed. It also fails a wrong issue number (404) before anything\n\t// is written or created.\n\tconst before = await readLabels();\n\tconst beforeKeys = new Set(before.map(key));\n\tconst onIssue = (n: string): string | undefined => before.find((l) => key(l) === key(n));\n\n\t// 1. Resolve every add-side label against the repo before writing anything.\n\tconst toResolve = set ?? addSide;\n\tconst resolved: string[] = [];\n\tconst missing: string[] = [];\n\tfor (const name of toResolve) {\n\t\ttry {\n\t\t\tconst res = await octokit.request(\"GET /repos/{owner}/{repo}/labels/{name}\", { owner, repo, name });\n\t\t\tresolved.push((res.data as Label).name);\n\t\t} catch (err) {\n\t\t\tif (statusOf(err) !== 404) throw err;\n\t\t\tmissing.push(name);\n\t\t}\n\t}\n\tif (missing.length && !createMissing) {\n\t\tfail(`label(s) not found in ${owner}/${repo}: ${missing.join(\", \")} \u2014 nothing was changed. Check the spelling (list_label), or pass create_missing: true to create them.`);\n\t}\n\n\t// 2. Plan the removals: only labels actually on the issue, in the issue's own spelling.\n\t// swap removes every prefix match except a label this call also adds \u2014 that one stays\n\t// put instead of being deleted and re-added.\n\tconst removals: string[] = [];\n\tif (set === undefined) {\n\t\tfor (const n of remove) {\n\t\t\tconst hit = onIssue(n);\n\t\t\tif (hit) removals.push(hit);\n\t\t}\n\t\tif (swapPrefix !== undefined) {\n\t\t\tconst keep = new Set(addSide.map(key));\n\t\t\tconst p = key(swapPrefix);\n\t\t\tfor (const l of before) if (key(l).startsWith(p) && !keep.has(key(l))) removals.push(l);\n\t\t}\n\t}\n\tconst plannedRemovals = dedupe(removals);\n\n\t// 3. Writes. Order is chosen so a failure part-way never leaves the issue with LESS than\n\t// it started with plus what was asked: create, then add (POST), and removals last.\n\t// Any failure is rethrown with exactly what was applied and what was not.\n\tconst created: string[] = [];\n\tlet addedDone = false;\n\tconst removed: string[] = [];\n\tlet latest: string[] | undefined;\n\tconst canonical = (): string[] => [...resolved, ...created];\n\tconst canon = (n: string): string => canonical().find((c) => key(c) === key(n)) ?? n;\n\ttry {\n\t\tfor (const name of missing) {\n\t\t\tconst res = await octokit.request(\"POST /repos/{owner}/{repo}/labels\", { owner, repo, name, color });\n\t\t\tcreated.push((res.data as Label).name);\n\t\t}\n\n\t\tif (set !== undefined) {\n\t\t\tconst res = await octokit.request(\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\", { ...base, labels: set.map(canon) });\n\t\t\tlatest = names(res.data);\n\t\t\taddedDone = true;\n\t\t\treturn result(latest, before);\n\t\t}\n\n\t\tif (addSide.length) {\n\t\t\tconst res = await octokit.request(\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\", { ...base, labels: addSide.map(canon) });\n\t\t\tlatest = names(res.data);\n\t\t\taddedDone = true;\n\t\t}\n\n\t\tfor (const name of plannedRemovals) {\n\t\t\ttry {\n\t\t\t\tconst res = await octokit.request(\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\", { ...base, name });\n\t\t\t\tlatest = names(res.data);\n\t\t\t\tremoved.push(name);\n\t\t\t} catch (err) {\n\t\t\t\t// Someone removed it since the read above: already the state asked for.\n\t\t\t\tif (statusOf(err) !== 404) throw err;\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\tconst applied: string[] = [];\n\t\tconst notApplied: string[] = [];\n\t\tconst part = (label: string, done: string[], all: string[]) => {\n\t\t\tconst doneKeys = new Set(done.map(key));\n\t\t\tif (done.length) applied.push(`${label} ${fmt(done)}`);\n\t\t\tconst rest = all.filter((l) => !doneKeys.has(key(l)));\n\t\t\tif (rest.length) notApplied.push(`${label} ${fmt(rest)}`);\n\t\t};\n\t\tpart(\"created\", created, missing);\n\t\tif (set !== undefined) part(\"set\", addedDone ? set : [], set);\n\t\telse part(\"added\", addedDone ? addSide.map(canon) : [], addSide.map(canon));\n\t\tpart(\"removed\", removed, plannedRemovals);\n\t\tconst e = new Error(\n\t\t\t`issue_labels: failed part-way on ${issue}: ${(err as Error).message}. Applied: ${applied.join(\"; \") || \"nothing\"}. Not applied: ${notApplied.join(\"; \") || \"nothing\"}.`,\n\t\t\t{ cause: err }\n\t\t);\n\t\t(e as Error & { status?: number }).status = statusOf(err);\n\t\tthrow e;\n\t}\n\n\treturn result(latest ?? (await readLabels()), removed);\n\n\tfunction result(labels: string[], removedFrom: string[]): IssueLabelsResult {\n\t\tconst afterKeys = new Set(labels.map(key));\n\t\t// Only what this call asked for \u2014 a label someone else added meanwhile isn't ours to report.\n\t\tconst requested = new Set(toResolve.map(key));\n\t\treturn {\n\t\t\tissue,\n\t\t\tlabels,\n\t\t\tadded: labels.filter((l) => requested.has(key(l)) && !beforeKeys.has(key(l))),\n\t\t\tremoved: removedFrom.filter((l) => !afterKeys.has(key(l))),\n\t\t\tcreated\n\t\t};\n\t}\n}\n\nconst labelList = (description: string) => ({\n\tdescription,\n\toneOf: [{ type: \"string\" }, { type: \"array\", items: { type: \"string\" }, minItems: 1, maxItems: MAX_LABELS }]\n});\n\n/** JSON Schema advertised to the agent for issue_labels. */\nexport const ISSUE_LABELS_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\", \"repo\", \"issue_number\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner: { type: \"string\", description: \"repository owner (org/user login) \u2014 selects the write credential\" },\n\t\trepo: { type: \"string\", description: \"repository name\" },\n\t\tissue_number: { type: \"number\", description: \"issue or pull-request number\" },\n\t\tadd: labelList(\"label(s) to add; ones already on the issue are a no-op\"),\n\t\tremove: labelList(\"label(s) to remove; ones the issue doesn't have are a no-op\"),\n\t\tswap: {\n\t\t\ttype: \"object\",\n\t\t\tadditionalProperties: false,\n\t\t\trequired: [\"prefix\", \"to\"],\n\t\t\tdescription: 'remove every current label starting with prefix, then add to \u2014 e.g. { \"prefix\": \"status: \", \"to\": \"status: verified\" }',\n\t\t\tproperties: {\n\t\t\t\tprefix: { type: \"string\", description: 'label-name prefix, e.g. \"status: \"' },\n\t\t\t\tto: labelList(\"label(s) to add after the prefix matches are removed\")\n\t\t\t}\n\t\t},\n\t\tset: labelList(\"replace the WHOLE label set with these (at least one); cannot be combined with add/remove/swap\"),\n\t\tcreate_missing: {\n\t\t\ttype: \"boolean\",\n\t\t\tdefault: false,\n\t\t\tdescription: \"create add-side labels that don't exist in the repo; without it an unknown name refuses the call and nothing changes\"\n\t\t},\n\t\tcolor: { type: \"string\", pattern: \"^#?[0-9a-fA-F]{6}$\", description: `6-digit hex color (with or without #) for labels created via create_missing; default ${DEFAULT_COLOR}` }\n\t}\n};\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/report_ci_status.ts\n *\t@Date: 2026-09-29T02:39:40+00:00 (1790649580)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-02T11:30:58-07:00 (1790965858)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport type { Octokit } from \"@octokit/core\";\nimport { CallBudget, CallBudgetExhausted, RateLimited, paginate, reqOne } from \"./rest-client.ts\";\n\n/**\n * Custom verb: report_ci_status \u2014 CI health for a PR (or every open PR in a repo),\n * at a verbosity the caller chooses: counts only by default, escalating to\n * run/job detail, failing-step detail, and finally a tail of the failing job's log.\n *\n * Run/job/step classification is built on the GitHub Actions REST API\n * (`/actions/runs`, `/actions/runs/{id}/jobs`), NOT the Checks API\n * (`get_check_runs`, already proxied via `pull_request_read`) \u2014 verified live that\n * the configured read PAT has Actions access but not Checks access (fine-grained\n * PAT permissions are separate scopes). Building on Actions avoids needing a PAT\n * permission change to ship this.\n *\n * Tier 3's log fetch instead goes through the hosted MCP's own `get_job_logs` tool\n * (`fetchFailedJobLogs`, injected by the caller \u2014 router.ts has the upstream/token\n * this verb doesn't) rather than a hand-rolled REST call: `get_job_logs` already\n * does exactly this (`run_id` + `failed_only: true` fetches every failing job in a\n * run in one call, with its own `tail_lines`), so there's no reason to duplicate\n * it. One call per failing RUN, not per failing job. This means tier-3 log fetches\n * are NOT counted by the CallBudget below (that only tracks direct `octokit.request`\n * calls and their rate-limit headers) \u2014 an accepted gap, not an oversight: an\n * upstream-forwarded MCP call exposes no rate-limit headers to inspect, and the\n * fan-out is already bounded (one call per ACTUALLY-failing run, not per PR).\n *\n * Classification (run/job/step all share this): `status !== \"completed\"` is\n * \"pending\"; a completed run/job/step is \"failed\" unless its conclusion is\n * success/neutral/skipped (those three are non-blocking outcomes, not failures).\n *\n * Fan-out: verbosity >= 1 detail (job/step calls, and >= 3's log fetch) is only\n * ever spent on runs/jobs that are ACTUALLY failing \u2014 a healthy PR costs exactly\n * one call regardless of verbosity. When `pull` is omitted, only PRs with at least\n * one failure are included in the result (see rest-client.ts for the shared\n * call-budget + rate-limit-floor mechanics, identical to report_unlabeled's).\n */\n\nexport type Verbosity = 0 | 1 | 2 | 3;\n\n/**\n * Fetches every failing job's log (already tailed to `tailLines`) for one workflow\n * run, keyed by job id \u2014 the shape `get_job_logs` returns with `failed_only: true`.\n * Injected by the caller (router.ts), which holds the upstream/token this verb\n * doesn't. Absent (or a lookup miss for a given job) just means no `logTail` on\n * that failure \u2014 best-effort, never a hard failure of the whole report.\n */\nexport type FailedJobLogsFetcher = (runId: number, tailLines: number) => Promise<Map<number, string>>;\n\nexport interface ReportCiStatusInput {\n\towner: string;\n\trepo: string;\n\t/** PR number; omit to scan every open PR in the repo. */\n\tpull?: number;\n\tverbosity?: Verbosity;\n\t/** Tier-3 only: tail lines of the failing job's log. Default 200, hard cap 2000. */\n\tlogLines?: number;\n\t/** Safety cap on open PRs scanned when `pull` is omitted. Default 50, hard cap 200. */\n\tmaxPulls?: number;\n\t/** Hard ceiling on total REST calls for this invocation. Default 250, hard cap 1000. */\n\tmaxApiCalls?: number;\n}\n\nexport interface CiSummary {\n\tpassed: number;\n\tfailed: number;\n\tpending: number;\n}\n\nexport interface CiStepFailure {\n\tname: string;\n\tnumber: number;\n\tconclusion: string;\n\tdurationMs: number;\n}\n\nexport interface CiFailure {\n\tworkflow: string;\n\tjob: string;\n\trunId: number;\n\trunUrl: string;\n\tconclusion: string;\n\t/** Tier >= 2: the job's failing steps. */\n\tsteps?: CiStepFailure[];\n\t/**\n\t * Tier 3: tail of the JOB's combined log (not per-step \u2014 GitHub's job log is one\n\t * concatenated stream across all steps; reliably slicing it per-step would need\n\t * parsing timestamp/group markers, which is fragile. The job-level tail almost\n\t * always contains the actual failure output anyway.\n\t */\n\tlogTail?: string;\n}\n\nexport type TruncatedReason = \"max-pulls\" | \"max-api-calls\" | \"rate-limited\";\n\ninterface Truncation {\n\ttruncated: true;\n\ttruncatedReason: TruncatedReason;\n\tretryAfterSeconds?: number;\n}\n\nexport interface CiStatusResult extends Partial<Truncation> {\n\tpull: number;\n\tsummary: CiSummary;\n\tfailures?: CiFailure[];\n}\n\nexport interface ReportCiStatusResult extends Partial<Truncation> {\n\tscanned: { pulls: number };\n\tresults: CiStatusResult[];\n}\n\nconst DEFAULT_LOG_LINES = 200;\nconst HARD_LOG_LINES = 2000;\nconst DEFAULT_MAX_PULLS = 50;\nconst HARD_MAX_PULLS = 200;\nconst DEFAULT_MAX_API_CALLS = 250;\nconst HARD_MAX_API_CALLS = 1000;\n\ninterface RawRun {\n\tid: number;\n\tname: string;\n\tstatus: string;\n\tconclusion: string | null;\n\thtml_url: string;\n}\n\ninterface RawStep {\n\tname: string;\n\tstatus: string;\n\tconclusion: string | null;\n\tnumber: number;\n\tstarted_at: string | null;\n\tcompleted_at: string | null;\n}\n\ninterface RawJob {\n\tid: number;\n\tname: string;\n\tstatus: string;\n\tconclusion: string | null;\n\thtml_url: string;\n\tsteps?: RawStep[];\n}\n\ntype Outcome = \"passed\" | \"failed\" | \"pending\";\n\n/** Non-blocking completed conclusions \u2014 everything else completed counts as failed. */\nconst NON_FAILING_CONCLUSIONS = new Set([\"success\", \"neutral\", \"skipped\"]);\n\nfunction classify(status: string, conclusion: string | null): Outcome {\n\tif (status !== \"completed\") return \"pending\";\n\treturn conclusion !== null && NON_FAILING_CONCLUSIONS.has(conclusion) ? \"passed\" : \"failed\";\n}\n\nfunction stepDurationMs(step: RawStep): number {\n\tif (!step.started_at || !step.completed_at) return 0;\n\treturn new Date(step.completed_at).getTime() - new Date(step.started_at).getTime();\n}\n\nfunction truncationFrom(err: unknown): Truncation | undefined {\n\tif (err instanceof RateLimited) {\n\t\treturn { truncated: true, truncatedReason: \"rate-limited\", ...(err.retryAfterSeconds !== undefined ? { retryAfterSeconds: err.retryAfterSeconds } : {}) };\n\t}\n\tif (err instanceof CallBudgetExhausted) return { truncated: true, truncatedReason: \"max-api-calls\" };\n\treturn undefined;\n}\n\nasync function computeForPull(\n\toctokit: Octokit,\n\tbudget: CallBudget,\n\towner: string,\n\trepo: string,\n\tpullNumber: number,\n\theadSha: string,\n\tverbosity: Verbosity,\n\tlogLines: number,\n\tfetchFailedJobLogs?: FailedJobLogsFetcher\n): Promise<CiStatusResult> {\n\tconst summary: CiSummary = { passed: 0, failed: 0, pending: 0 };\n\tconst failures: CiFailure[] = [];\n\ttry {\n\t\tconst runs = await paginate<RawRun>(\n\t\t\toctokit,\n\t\t\tbudget,\n\t\t\t\"GET /repos/{owner}/{repo}/actions/runs\",\n\t\t\t{ owner, repo, head_sha: headSha },\n\t\t\t100,\n\t\t\t(d) => (d as { workflow_runs: RawRun[] }).workflow_runs\n\t\t);\n\n\t\tconst failedRuns: RawRun[] = [];\n\t\tfor (const run of runs) {\n\t\t\tconst outcome = classify(run.status, run.conclusion);\n\t\t\tsummary[outcome]++;\n\t\t\tif (outcome === \"failed\") failedRuns.push(run);\n\t\t}\n\n\t\tif (verbosity >= 1) {\n\t\t\tfor (const run of failedRuns) {\n\t\t\t\tconst jobs = await paginate<RawJob>(\n\t\t\t\t\toctokit,\n\t\t\t\t\tbudget,\n\t\t\t\t\t\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n\t\t\t\t\t{ owner, repo, run_id: run.id },\n\t\t\t\t\t100,\n\t\t\t\t\t(d) => (d as { jobs: RawJob[] }).jobs\n\t\t\t\t);\n\t\t\t\t// One get_job_logs call per FAILING RUN (not per job) \u2014 failed_only:true\n\t\t\t\t// already returns every failing job's log in that run at once.\n\t\t\t\tconst logsByJobId = verbosity >= 3 && fetchFailedJobLogs ? await fetchFailedJobLogs(run.id, logLines) : undefined;\n\t\t\t\tfor (const job of jobs) {\n\t\t\t\t\tif (classify(job.status, job.conclusion) !== \"failed\") continue;\n\t\t\t\t\tconst failure: CiFailure = { workflow: run.name, job: job.name, runId: run.id, runUrl: run.html_url, conclusion: job.conclusion ?? \"unknown\" };\n\t\t\t\t\tif (verbosity >= 2) {\n\t\t\t\t\t\tfailure.steps = (job.steps ?? [])\n\t\t\t\t\t\t\t.filter((s) => classify(s.status, s.conclusion) === \"failed\")\n\t\t\t\t\t\t\t.map((s) => ({ name: s.name, number: s.number, conclusion: s.conclusion ?? \"unknown\", durationMs: stepDurationMs(s) }));\n\t\t\t\t\t}\n\t\t\t\t\tconst logTail = logsByJobId?.get(job.id);\n\t\t\t\t\tif (logTail !== undefined) failure.logTail = logTail;\n\t\t\t\t\tfailures.push(failure);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\tconst t = truncationFrom(err);\n\t\tif (t) return { pull: pullNumber, summary, ...(failures.length ? { failures } : {}), ...t };\n\t\tthrow err;\n\t}\n\n\tconst result: CiStatusResult = { pull: pullNumber, summary };\n\tif (verbosity >= 1) result.failures = failures;\n\treturn result;\n}\n\nfunction clampVerbosity(v: number | undefined): Verbosity {\n\treturn Math.min(Math.max(v ?? 0, 0), 3) as Verbosity;\n}\n\n/**\n * CI status for a PR whose head sha is already known \u2014 skips the PR lookup\n * `reportCiStatus` would otherwise make. Used by router.ts's `pull_request_read`\n * augmentation, which already has the PR (and its head sha) from the forwarded\n * upstream response.\n */\nexport async function ciStatusForHeadSha(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\tpullNumber: number,\n\theadSha: string,\n\topts: { verbosity?: number; logLines?: number; maxApiCalls?: number; fetchFailedJobLogs?: FailedJobLogsFetcher } = {}\n): Promise<CiStatusResult> {\n\tconst budget = new CallBudget(Math.min(opts.maxApiCalls ?? DEFAULT_MAX_API_CALLS, HARD_MAX_API_CALLS));\n\treturn computeForPull(\n\t\toctokit,\n\t\tbudget,\n\t\towner,\n\t\trepo,\n\t\tpullNumber,\n\t\theadSha,\n\t\tclampVerbosity(opts.verbosity),\n\t\tMath.min(opts.logLines ?? DEFAULT_LOG_LINES, HARD_LOG_LINES),\n\t\topts.fetchFailedJobLogs\n\t);\n}\n\nexport async function reportCiStatus(\n\toctokit: Octokit,\n\tinput: ReportCiStatusInput,\n\tfetchFailedJobLogs?: FailedJobLogsFetcher\n): Promise<CiStatusResult | ReportCiStatusResult> {\n\tconst verbosity = clampVerbosity(input.verbosity);\n\tconst logLines = Math.min(input.logLines ?? DEFAULT_LOG_LINES, HARD_LOG_LINES);\n\tconst maxApiCalls = Math.min(input.maxApiCalls ?? DEFAULT_MAX_API_CALLS, HARD_MAX_API_CALLS);\n\tconst budget = new CallBudget(maxApiCalls);\n\n\tif (input.pull !== undefined) {\n\t\tconst pullNumber = input.pull;\n\t\ttry {\n\t\t\tconst pr = await reqOne<{ head: { sha: string } }>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls/{pull_number}\", {\n\t\t\t\towner: input.owner,\n\t\t\t\trepo: input.repo,\n\t\t\t\tpull_number: pullNumber\n\t\t\t});\n\t\t\treturn await computeForPull(octokit, budget, input.owner, input.repo, pullNumber, pr.head.sha, verbosity, logLines, fetchFailedJobLogs);\n\t\t} catch (err) {\n\t\t\tconst t = truncationFrom(err);\n\t\t\tif (t) return { pull: pullNumber, summary: { passed: 0, failed: 0, pending: 0 }, ...t };\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tconst maxPulls = Math.min(input.maxPulls ?? DEFAULT_MAX_PULLS, HARD_MAX_PULLS);\n\tlet pulls: Array<{ number: number; head: { sha: string } }>;\n\ttry {\n\t\tpulls = await paginate(octokit, budget, \"GET /repos/{owner}/{repo}/pulls\", { owner: input.owner, repo: input.repo, state: \"open\" }, maxPulls);\n\t} catch (err) {\n\t\tconst t = truncationFrom(err);\n\t\tif (t) return { scanned: { pulls: 0 }, results: [], ...t };\n\t\tthrow err;\n\t}\n\n\tconst results: CiStatusResult[] = [];\n\tlet scanned = 0;\n\tlet aggregateTruncation: Truncation | undefined;\n\tfor (const p of pulls) {\n\t\tconst r = await computeForPull(octokit, budget, input.owner, input.repo, p.number, p.head.sha, verbosity, logLines, fetchFailedJobLogs);\n\t\tif (r.truncated) {\n\t\t\t// Didn't finish evaluating this PR \u2014 don't count it as scanned, but surface\n\t\t\t// it (and stop entirely: the budget/rate limit is gone for the next PR too).\n\t\t\tresults.push(r);\n\t\t\taggregateTruncation = { truncated: true, truncatedReason: r.truncatedReason as TruncatedReason, ...(r.retryAfterSeconds !== undefined ? { retryAfterSeconds: r.retryAfterSeconds } : {}) };\n\t\t\tbreak;\n\t\t}\n\t\tscanned++;\n\t\tif (r.summary.failed > 0) results.push(r);\n\t}\n\tif (!aggregateTruncation && pulls.length === maxPulls) aggregateTruncation = { truncated: true, truncatedReason: \"max-pulls\" };\n\n\treturn { scanned: { pulls: scanned }, results, ...aggregateTruncation };\n}\n\n/** JSON Schema advertised to the agent for report_ci_status. */\nexport const REPORT_CI_STATUS_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\", \"repo\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner: { type: \"string\", description: \"repository owner (org/user login) \u2014 selects the read credential\" },\n\t\trepo: { type: \"string\", description: \"repository name\" },\n\t\tpull: { type: \"number\", description: \"PR number; omit to scan every open PR in the repo (only PRs with a failure are included in the result)\" },\n\t\tverbosity: {\n\t\t\ttype: \"number\",\n\t\t\tenum: [0, 1, 2, 3],\n\t\t\tdefault: 0,\n\t\t\tdescription: \"0: pass/fail/pending counts only. 1: + which run/job failed (workflow, job, runId, runUrl). 2: + which step in that job failed. 3: + a tail of the failing job's log.\"\n\t\t},\n\t\tlogLines: { type: \"number\", description: `tier-3 only: tail lines of the failing job's log (default ${DEFAULT_LOG_LINES}, hard cap ${HARD_LOG_LINES})` },\n\t\tmaxPulls: { type: \"number\", description: `safety cap on open PRs scanned when pull is omitted (default ${DEFAULT_MAX_PULLS}, hard cap ${HARD_MAX_PULLS})` },\n\t\tmaxApiCalls: { type: \"number\", description: `hard ceiling on total REST calls this invocation makes (default ${DEFAULT_MAX_API_CALLS}, hard cap ${HARD_MAX_API_CALLS})` }\n\t}\n};\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/npm-registry.ts\n *\t@Date: 2026-10-31T10:56:47-07:00 (1793469407)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T12:58:18-07:00 (1793476698)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * The npm registry calls npm_scaffold makes, as plain HTTP requests (the same ones the npm CLI\n * sends; see its npm-registry-fetch, libnpmpublish and `npm trust` sources). The token and OTP\n * only ever travel in request headers: no error message, result or log line built here\n * contains either.\n */\n\nexport const DEFAULT_REGISTRY = \"https://registry.npmjs.org\";\n\nexport type FetchLike = (url: string, init: { method: string; headers: Record<string, string>; body?: string }) => Promise<{\n\tstatus: number;\n\theaders: { get(name: string): string | null };\n\ttext(): Promise<string>;\n}>;\n\n/** The registry wants a (fresh) one-time password for this request. */\nexport class NpmOtpRequired extends Error {\n\tconstructor(what: string) {\n\t\tsuper(`npm: ${what} needs a one-time password (missing, expired or already used)`);\n\t\tthis.name = \"NpmOtpRequired\";\n\t}\n}\n\nexport class NpmHttpError extends Error {\n\treadonly status: number;\n\tconstructor(what: string, status: number, detail: string) {\n\t\tsuper(`npm: ${what} failed (HTTP ${status})${detail ? `: ${detail}` : \"\"}`);\n\t\tthis.name = \"NpmHttpError\";\n\t\tthis.status = status;\n\t}\n}\n\n/** `@scope/name` \u2192 `@scope%2fname`, the form registry URLs use. */\nexport function escapePackageName(name: string): string {\n\treturn name.replace(\"/\", \"%2f\");\n}\n\n/** The registry's own message, kept short; never echoes request headers. */\nfunction errorDetail(body: string): string {\n\ttry {\n\t\tconst j = JSON.parse(body) as { error?: unknown; message?: unknown; reason?: unknown };\n\t\tconst msg = [j.error, j.message, j.reason].find((v) => typeof v === \"string\" && v);\n\t\tif (typeof msg === \"string\") return msg.slice(0, 300);\n\t} catch {\n\t\t/* not JSON */\n\t}\n\treturn body.trim().slice(0, 300);\n}\n\nexport interface PackumentVersion {\n\tscaffoldedBy?: unknown;\n\t[k: string]: unknown;\n}\n\nexport interface Packument {\n\tname?: string;\n\tversions?: Record<string, PackumentVersion>;\n\t\"dist-tags\"?: Record<string, string>;\n}\n\nexport interface TrustConfig {\n\tid?: string;\n\t[k: string]: unknown;\n}\n\nexport class NpmRegistry {\n\tprivate readonly base: string;\n\tprivate readonly token: string;\n\tprivate readonly fetchImpl: FetchLike;\n\n\tconstructor(opts: { registry?: string; token: string; fetch?: FetchLike }) {\n\t\tthis.base = (opts.registry ?? DEFAULT_REGISTRY).replace(/\\/+$/, \"\");\n\t\tthis.token = opts.token;\n\t\tthis.fetchImpl = opts.fetch ?? (globalThis.fetch as unknown as FetchLike);\n\t}\n\n\tget registry(): string {\n\t\treturn this.base;\n\t}\n\n\tprivate async send(what: string, method: string, path: string, opts: { otp?: string; body?: unknown } = {}): Promise<{ status: number; body: string }> {\n\t\tconst headers: Record<string, string> = {\n\t\t\tauthorization: `Bearer ${this.token}`,\n\t\t\taccept: \"application/json\",\n\t\t\t\"user-agent\": \"gh-broker (npm_scaffold)\"\n\t\t};\n\t\tif (opts.otp) headers[\"npm-otp\"] = opts.otp;\n\t\tif (opts.body !== undefined) headers[\"content-type\"] = \"application/json\";\n\t\tconst res = await this.fetchImpl(`${this.base}${path}`, {\n\t\t\tmethod,\n\t\t\theaders,\n\t\t\t...(opts.body !== undefined ? { body: JSON.stringify(opts.body) } : {})\n\t\t});\n\t\tconst body = await res.text();\n\t\tif (res.status === 401) {\n\t\t\tconst auth = (res.headers.get(\"www-authenticate\") ?? \"\").toLowerCase();\n\t\t\tif (auth.includes(\"otp\") || /one-time pass/i.test(body)) throw new NpmOtpRequired(what);\n\t\t}\n\t\treturn { status: res.status, body };\n\t}\n\n\t/**\n\t * The package's registry document, or undefined when it does not exist (or is not visible to\n\t * the token). `?write=true` reads from the primary rather than a cache, as npm itself does\n\t * before a write: a stale 404 here is the one thing that could let a placeholder land on a\n\t * package that already exists.\n\t */\n\tasync packument(name: string): Promise<Packument | undefined> {\n\t\tconst res = await this.send(\"package lookup\", \"GET\", `/${escapePackageName(name)}?write=true`);\n\t\tif (res.status === 404) return undefined;\n\t\tif (res.status !== 200) throw new NpmHttpError(\"package lookup\", res.status, errorDetail(res.body));\n\t\treturn JSON.parse(res.body) as Packument;\n\t}\n\n\t/** First publish of a package: PUT of the full document with the tarball attached. */\n\tasync publish(document: unknown, name: string, otp: string): Promise<void> {\n\t\tconst res = await this.send(\"publish\", \"PUT\", `/${escapePackageName(name)}`, { otp, body: document });\n\t\tif (res.status < 200 || res.status >= 300) throw new NpmHttpError(\"publish\", res.status, errorDetail(res.body));\n\t}\n\n\t/**\n\t * Adds a GitHub Actions trusted publisher. A 409 means the package already has a trusted\n\t * publisher, which may or may not be this one, so it is reported as `conflict` for the\n\t * caller to check against listGithubTrust rather than as success.\n\t */\n\tasync addGithubTrust(name: string, claims: { repository: string; file: string }, otp: string): Promise<{ config?: TrustConfig; conflict: boolean }> {\n\t\tconst body = [{ type: \"github\", claims: { repository: claims.repository, workflow_ref: { file: claims.file } }, permissions: [\"createPackage\"] }];\n\t\tconst res = await this.send(\"trusted publisher setup\", \"POST\", `/-/package/${escapePackageName(name)}/trust`, { otp, body });\n\t\tif (res.status === 409) return { conflict: true };\n\t\tif (res.status < 200 || res.status >= 300) throw new NpmHttpError(\"trusted publisher setup\", res.status, errorDetail(res.body));\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(res.body);\n\t\t} catch {\n\t\t\treturn { conflict: false };\n\t\t}\n\t\tconst first = Array.isArray(parsed) ? parsed[0] : parsed;\n\t\treturn { config: first && typeof first === \"object\" ? (first as TrustConfig) : undefined, conflict: false };\n\t}\n\n\t/** The package's trusted-publisher configurations (`npm trust list`). May need an OTP. */\n\tasync listTrust(name: string, otp?: string): Promise<TrustConfig[]> {\n\t\tconst res = await this.send(\"trusted publisher lookup\", \"GET\", `/-/package/${escapePackageName(name)}/trust`, otp ? { otp } : {});\n\t\tif (res.status !== 200) throw new NpmHttpError(\"trusted publisher lookup\", res.status, errorDetail(res.body));\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(res.body);\n\t\t} catch {\n\t\t\tthrow new NpmHttpError(\"trusted publisher lookup\", res.status, \"response is not JSON\");\n\t\t}\n\t\treturn (Array.isArray(parsed) ? parsed : [parsed]).filter((c): c is TrustConfig => Boolean(c) && typeof c === \"object\");\n\t}\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/npm-tarball.ts\n *\t@Date: 2026-10-31T10:56:28-07:00 (1793469388)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T11:04:31-07:00 (1793469871)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * A minimal npm package tarball: gzip over a POSIX ustar archive whose entries sit under\n * `package/`, the layout `npm pack` produces. It exists so npm_scaffold can publish a\n * placeholder built entirely by the broker (no agent-supplied files) without pulling in a\n * tar dependency. Only regular files, only short ASCII paths: exactly what a placeholder needs.\n */\n\nimport { createHash } from \"node:crypto\";\nimport { gzipSync } from \"node:zlib\";\n\n/** npm pack's fixed mtime (1985-10-26T08:15:00Z), so the tarball is reproducible. */\nconst MTIME = 499162500;\nconst BLOCK = 512;\n\nexport interface TarFile {\n\t/** Path inside `package/`, e.g. \"package.json\". */\n\tpath: string;\n\tcontent: string;\n}\n\nfunction header(name: string, size: number): Buffer {\n\tconst h = Buffer.alloc(BLOCK, 0);\n\tconst put = (value: string, offset: number, length: number): void => {\n\t\th.write(value, offset, length, \"ascii\");\n\t};\n\tconst octal = (n: number, length: number): string => n.toString(8).padStart(length - 1, \"0\") + \"\\0\";\n\tput(name, 0, 100);\n\tput(octal(0o644, 8), 100, 8);\n\tput(octal(0, 8), 108, 8);\n\tput(octal(0, 8), 116, 8);\n\tput(octal(size, 12), 124, 12);\n\tput(octal(MTIME, 12), 136, 12);\n\tput(\" \", 148, 8); // checksum field counts as spaces while summing\n\tput(\"0\", 156, 1); // regular file\n\tput(\"ustar\\0\", 257, 6);\n\tput(\"00\", 263, 2);\n\tlet sum = 0;\n\tfor (const byte of h) sum += byte;\n\tput(sum.toString(8).padStart(6, \"0\") + \"\\0 \", 148, 8);\n\treturn h;\n}\n\nexport function buildTarball(files: TarFile[]): Buffer {\n\tconst parts: Buffer[] = [];\n\tfor (const f of files) {\n\t\tconst name = `package/${f.path}`;\n\t\tif (!/^[\\x20-\\x7e]+$/.test(name) || name.length > 100) throw new Error(`npm-tarball: unsupported path \"${f.path}\"`);\n\t\tconst body = Buffer.from(f.content, \"utf8\");\n\t\tparts.push(header(name, body.length), body, Buffer.alloc((BLOCK - (body.length % BLOCK)) % BLOCK, 0));\n\t}\n\tparts.push(Buffer.alloc(BLOCK * 2, 0));\n\treturn gzipSync(Buffer.concat(parts), { level: 9 });\n}\n\n/** The `dist` integrity fields the registry expects for a tarball. */\nexport function tarballDigests(tarball: Buffer): { integrity: string; shasum: string } {\n\treturn {\n\t\tintegrity: `sha512-${createHash(\"sha512\").update(tarball).digest(\"base64\")}`,\n\t\tshasum: createHash(\"sha1\").update(tarball).digest(\"hex\")\n\t};\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/npm_scaffold.ts\n *\t@Date: 2026-10-31T10:57:49-07:00 (1793469469)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T12:58:19-07:00 (1793476699)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport type { Octokit } from \"@octokit/core\";\nimport { NpmOtpRequired, type NpmRegistry } from \"./npm-registry.ts\";\nimport { buildTarball, tarballDigests } from \"./npm-tarball.ts\";\n\n/**\n * Custom verb: npm_scaffold \u2014 create a new npm package and register its GitHub Actions\n * trusted publisher, so the repo's own publish workflow can release it from then on.\n *\n * Why it exists: npm only accepts a trusted publisher on a package that already exists, and\n * the first publish needs a human's 2FA. The broker holds a granular access token created\n * WITHOUT 2FA bypass (by the installer), and the user supplies a one-time password for each\n * call, which the agent passes through. The token alone can do nothing here.\n *\n * Guardrails, all checked before any npm write:\n * - the package is under a scope listed in config.npm.scopes;\n * - the repo belongs to the routed owner, is not archived, its package.json on the default\n * branch names this package, and the publish workflow file exists there;\n * - the package does not exist yet, or exists only as this verb's own placeholder (resume).\n * An existing real package is refused, so the verb can never publish a version of one.\n *\n * The placeholder is built here from fixed fields (no agent-supplied files): a package.json\n * marked `scaffoldedBy: \"gh-broker\"` and a README pointing at the repo. Access follows the\n * repo's visibility (public repo \u2192 public package), the rule the CI publish also uses.\n *\n * Every npm write needs its own one-time password, so each call makes exactly one write:\n * the first call publishes the placeholder and returns `needs_otp` for the trusted\n * publisher; the second call (with the next code) adds it. A refused or expired code is\n * not an error either: the result is `needs_otp` naming what is left.\n */\n\nexport const PLACEHOLDER_VERSION = \"0.0.0-stage\";\nexport const SCAFFOLD_MARKER = \"gh-broker\";\nconst DEFAULT_WORKFLOW = \"publish.yml\";\nconst INPUT_KEYS = new Set([\"owner\", \"repo\", \"package\", \"otp\", \"workflow\"]);\nconst PACKAGE_NAME = /^@[a-z0-9][a-z0-9._~-]*\\/[a-z0-9][a-z0-9._~-]*$/;\n\nexport interface NpmScaffoldInput {\n\towner: string;\n\trepo: string;\n\t/** Scoped package name, e.g. \"@cldmv/new-thing\". */\n\tpackage: string;\n\t/** One-time password from the user's authenticator. */\n\totp: string;\n\t/** The repo's publish workflow file name. Defaults to publish.yml. */\n\tworkflow?: string;\n}\n\nexport const NPM_SCAFFOLD_SCHEMA = {\n\ttype: \"object\" as const,\n\tproperties: {\n\t\towner: { type: \"string\", description: \"Repository owner (a configured owner).\" },\n\t\trepo: { type: \"string\", description: \"Repository whose package.json names the package.\" },\n\t\tpackage: { type: \"string\", description: 'Scoped package name, e.g. \"@cldmv/new-thing\". Must be under a scope in config.npm.scopes.' },\n\t\totp: { type: \"string\", description: \"One-time password the user read from their authenticator. Ask the user for it right before calling; codes expire in about 30 seconds.\" },\n\t\tworkflow: { type: \"string\", description: 'The repo\\'s publish workflow file in .github/workflows. Default \"publish.yml\".' }\n\t},\n\trequired: [\"owner\", \"repo\", \"package\", \"otp\"],\n\tadditionalProperties: false\n};\n\nexport type NpmScaffoldStep = \"publish\" | \"trust\";\n\nexport interface NpmScaffoldResult {\n\tstatus: \"done\" | \"needs_otp\";\n\tpackage: string;\n\trepository: string;\n\tworkflow: string;\n\taccess: \"public\" | \"restricted\";\n\t/** Steps this call completed. */\n\tdone: NpmScaffoldStep[];\n\t/** Steps still to do: only set with needs_otp. */\n\tremaining?: NpmScaffoldStep[];\n\t/** Steps skipped because an earlier call already completed them. */\n\tskipped?: NpmScaffoldStep[];\n\tversion: string;\n\turl: string;\n\ttrustId?: string;\n\tmessage: string;\n}\n\nexport interface NpmScaffoldDeps {\n\t/** Read access to the repo (contents + metadata). */\n\toctokit: Octokit;\n\tregistry: NpmRegistry;\n\tscopes: string[];\n}\n\nconst fail = (msg: string): never => {\n\tthrow new Error(`npm_scaffold: ${msg}`);\n};\n\nfunction validate(input: unknown): Required<NpmScaffoldInput> {\n\tif (typeof input !== \"object\" || input === null || Array.isArray(input)) fail(\"arguments must be an object\");\n\tconst a = input as Record<string, unknown>;\n\tconst unknown = Object.keys(a).filter((k) => !INPUT_KEYS.has(k));\n\tif (unknown.length) fail(`unknown argument(s): ${unknown.join(\", \")} \u2014 expected ${[...INPUT_KEYS].join(\", \")}`);\n\tif (typeof a.owner !== \"string\" || !/^[A-Za-z0-9-]+$/.test(a.owner)) fail('\"owner\" must be a GitHub owner name');\n\tif (typeof a.repo !== \"string\" || !/^[A-Za-z0-9._-]+$/.test(a.repo)) fail('\"repo\" must be a repository name');\n\tif (typeof a.package !== \"string\" || a.package.length > 214 || !PACKAGE_NAME.test(a.package)) fail('\"package\" must be a lowercase scoped npm package name, e.g. \"@cldmv/new-thing\"');\n\t// Never echo the value: it is a live credential.\n\tif (typeof a.otp !== \"string\" || !/^[0-9]{6,8}$/.test(a.otp)) fail('\"otp\" must be the 6-8 digit code from the authenticator');\n\tif (a.workflow !== undefined && (typeof a.workflow !== \"string\" || !/^[A-Za-z0-9._-]+\\.ya?ml$/.test(a.workflow))) {\n\t\tfail('\"workflow\" must be a workflow file name in .github/workflows, e.g. \"publish.yml\"');\n\t}\n\treturn {\n\t\towner: a.owner as string,\n\t\trepo: a.repo as string,\n\t\tpackage: a.package as string,\n\t\totp: a.otp as string,\n\t\tworkflow: (a.workflow as string | undefined) ?? DEFAULT_WORKFLOW\n\t};\n}\n\nfunction statusOf(err: unknown): number | undefined {\n\treturn (err as { status?: number })?.status;\n}\n\nasync function repoFile(octokit: Octokit, owner: string, repo: string, path: string, ref: string): Promise<string | undefined> {\n\ttry {\n\t\tconst res = await octokit.request(\"GET /repos/{owner}/{repo}/contents/{path}\", { owner, repo, path, ref });\n\t\tconst d = res.data as { content?: string; encoding?: string; type?: string };\n\t\tif (d.type !== \"file\" || typeof d.content !== \"string\") return undefined;\n\t\treturn d.encoding === \"base64\" ? Buffer.from(d.content, \"base64\").toString(\"utf8\") : d.content;\n\t} catch (err) {\n\t\tif (statusOf(err) === 404) return undefined;\n\t\tthrow err;\n\t}\n}\n\ninterface RepoFacts {\n\trepository: string;\n\tisPrivate: boolean;\n\tlicense?: string;\n\tdescription?: string;\n}\n\nasync function checkRepo(octokit: Octokit, args: Required<NpmScaffoldInput>): Promise<RepoFacts> {\n\tlet info: { full_name?: string; private?: boolean; archived?: boolean; default_branch?: string };\n\ttry {\n\t\tinfo = (await octokit.request(\"GET /repos/{owner}/{repo}\", { owner: args.owner, repo: args.repo })).data as typeof info;\n\t} catch (err) {\n\t\tif (statusOf(err) === 404) fail(`repository ${args.owner}/${args.repo} not found`);\n\t\tthrow err;\n\t}\n\tconst asked = `${args.owner}/${args.repo}`;\n\tconst repository = info.full_name ?? asked;\n\t// GitHub answers a renamed or transferred repo with a redirect, which the client follows.\n\t// The trusted publisher must name the repo that was routed and checked, so refuse that.\n\tif (repository.toLowerCase() !== asked.toLowerCase()) fail(`${asked} redirects to ${repository} (renamed or transferred) \u2014 call with the repository's current owner and name`);\n\tif (info.archived) fail(`repository ${repository} is archived`);\n\tconst ref = info.default_branch ?? \"HEAD\";\n\tconst raw = await repoFile(octokit, args.owner, args.repo, \"package.json\", ref);\n\tif (raw === undefined) fail(`${repository} has no package.json on ${ref}`);\n\tlet pkg: { name?: unknown; license?: unknown; description?: unknown; private?: unknown };\n\ttry {\n\t\tpkg = JSON.parse(raw as string) as typeof pkg;\n\t} catch {\n\t\treturn fail(`${repository}'s package.json on ${ref} is not valid JSON`);\n\t}\n\tif (pkg.name !== args.package) fail(`${repository}'s package.json on ${ref} names ${JSON.stringify(pkg.name)}, not \"${args.package}\"`);\n\tif (pkg.private === true) fail(`${repository}'s package.json is marked \"private\": true, so it is not meant to be published`);\n\tif ((await repoFile(octokit, args.owner, args.repo, `.github/workflows/${args.workflow}`, ref)) === undefined) {\n\t\tfail(`${repository} has no .github/workflows/${args.workflow} on ${ref} \u2014 the trusted publisher must name the workflow that publishes`);\n\t}\n\treturn {\n\t\trepository,\n\t\tisPrivate: info.private !== false,\n\t\t...(typeof pkg.license === \"string\" ? { license: pkg.license } : {}),\n\t\t...(typeof pkg.description === \"string\" ? { description: pkg.description } : {})\n\t};\n}\n\n/** The registry document for the placeholder's first publish (the shape libnpmpublish sends). */\nexport function placeholderDocument(name: string, facts: RepoFacts, access: \"public\" | \"restricted\", registry: string) {\n\tconst repoUrl = `https://github.com/${facts.repository}`;\n\tconst manifest = {\n\t\tname,\n\t\tversion: PLACEHOLDER_VERSION,\n\t\tdescription: `Placeholder for ${name}. Releases are published from ${repoUrl} by CI.`,\n\t\tlicense: facts.license ?? \"UNLICENSED\",\n\t\trepository: { type: \"git\", url: `git+${repoUrl}.git` },\n\t\thomepage: `${repoUrl}#readme`,\n\t\tscaffoldedBy: SCAFFOLD_MARKER\n\t};\n\tconst readme = `# ${name}\\n\\nThis version is a placeholder that reserves the package name so the repository's release workflow can publish it with npm trusted publishing.\\n\\n${facts.description ? `${facts.description}\\n\\n` : \"\"}Source and real releases: ${repoUrl}\\n`;\n\tconst tarball = buildTarball([\n\t\t{ path: \"package.json\", content: JSON.stringify(manifest, null, \"\\t\") + \"\\n\" },\n\t\t{ path: \"README.md\", content: readme }\n\t]);\n\tconst { integrity, shasum } = tarballDigests(tarball);\n\tconst tarballName = `${name}-${PLACEHOLDER_VERSION}.tgz`;\n\tconst unscoped = name.split(\"/\")[1]!;\n\treturn {\n\t\t_id: name,\n\t\tname,\n\t\tdescription: manifest.description,\n\t\t\"dist-tags\": { latest: PLACEHOLDER_VERSION },\n\t\taccess,\n\t\tversions: {\n\t\t\t[PLACEHOLDER_VERSION]: {\n\t\t\t\t...manifest,\n\t\t\t\treadme,\n\t\t\t\t_id: `${name}@${PLACEHOLDER_VERSION}`,\n\t\t\t\tdist: { integrity, shasum, tarball: `${registry}/${name}/-/${unscoped}-${PLACEHOLDER_VERSION}.tgz` }\n\t\t\t}\n\t\t},\n\t\t_attachments: { [tarballName]: { content_type: \"application/octet-stream\", data: tarball.toString(\"base64\"), length: tarball.length } }\n\t};\n}\n\nexport async function npmScaffold(input: unknown, deps: NpmScaffoldDeps): Promise<NpmScaffoldResult> {\n\tconst args = validate(input);\n\tconst scope = args.package.split(\"/\")[0]!;\n\tif (!deps.scopes.includes(scope)) fail(`scope ${scope} is not in config.npm.scopes (${deps.scopes.join(\", \")})`);\n\n\tconst facts = await checkRepo(deps.octokit, args);\n\tconst access = facts.isPrivate ? \"restricted\" : \"public\";\n\tconst base = {\n\t\tpackage: args.package,\n\t\trepository: facts.repository,\n\t\tworkflow: args.workflow,\n\t\taccess,\n\t\tversion: PLACEHOLDER_VERSION,\n\t\turl: `https://www.npmjs.com/package/${args.package}`\n\t} as const;\n\n\tconst existing = await deps.registry.packument(args.package);\n\tif (!existing) {\n\t\ttry {\n\t\t\tawait deps.registry.publish(placeholderDocument(args.package, facts, access, deps.registry.registry), args.package, args.otp);\n\t\t} catch (err) {\n\t\t\tif (err instanceof NpmOtpRequired) {\n\t\t\t\treturn { ...base, status: \"needs_otp\", done: [], remaining: [\"publish\", \"trust\"], message: \"npm refused the one-time password before publishing; nothing was written. Call again with a fresh code.\" };\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\t\t// That code is spent: every npm write needs its own one-time password, so don't\n\t\t// send it again (a guaranteed refusal that counts as a failed 2FA attempt).\n\t\treturn {\n\t\t\t...base,\n\t\t\tstatus: \"needs_otp\",\n\t\t\tdone: [\"publish\"],\n\t\t\tremaining: [\"trust\"],\n\t\t\tmessage: \"The placeholder is published. Each npm write needs its own one-time password: call again with the next code (wait for the authenticator to change) to add the trusted publisher.\"\n\t\t};\n\t}\n\n\t// The package exists: carry on only if it is this verb's own placeholder (a resumed call).\n\tconst versions = Object.keys(existing.versions ?? {});\n\tconst placeholder = existing.versions?.[PLACEHOLDER_VERSION];\n\tconst ours = versions.length === 1 && versions[0] === PLACEHOLDER_VERSION && placeholder?.scaffoldedBy === SCAFFOLD_MARKER;\n\tif (!ours) fail(`${args.package} already exists on the registry (${versions.length} version(s)) and was not created by npm_scaffold \u2014 set up its trusted publisher on npmjs.com instead`);\n\t// The placeholder records the repo it was made for; the trusted publisher may only go there.\n\tconst madeFor = (placeholder?.repository as { url?: unknown } | undefined)?.url;\n\tif (typeof madeFor !== \"string\" || madeFor.toLowerCase() !== `git+https://github.com/${facts.repository}.git`.toLowerCase()) {\n\t\tfail(`${args.package}'s placeholder was published for ${typeof madeFor === \"string\" ? madeFor : \"an unrecorded repository\"}, not ${facts.repository}`);\n\t}\n\n\tlet out: Awaited<ReturnType<NpmRegistry[\"addGithubTrust\"]>>;\n\ttry {\n\t\tout = await deps.registry.addGithubTrust(args.package, { repository: facts.repository, file: args.workflow }, args.otp);\n\t} catch (err) {\n\t\tif (err instanceof NpmOtpRequired) {\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tstatus: \"needs_otp\",\n\t\t\t\tdone: [],\n\t\t\t\tremaining: [\"trust\"],\n\t\t\t\tskipped: [\"publish\"],\n\t\t\t\tmessage: \"The placeholder is published, but npm refused the one-time password for the trusted publisher (expired or already used). Call again with a new code to finish.\"\n\t\t\t};\n\t\t}\n\t\tthrow err;\n\t}\n\n\tlet alreadyThere = false;\n\tif (out.conflict) {\n\t\t// npm already has a trusted publisher for this package. Only call it done if it is the\n\t\t// one asked for. The code was spent on the POST, so the list may need another one.\n\t\tconst access = `https://www.npmjs.com/package/${args.package}/access`;\n\t\tlet configs: Awaited<ReturnType<NpmRegistry[\"listTrust\"]>>;\n\t\ttry {\n\t\t\tconfigs = await deps.registry.listTrust(args.package);\n\t\t} catch (err) {\n\t\t\tif (err instanceof NpmOtpRequired) fail(`${args.package} already has a trusted publisher, and npm needs another one-time password to show which; check it at ${access}`);\n\t\t\tthrow err;\n\t\t}\n\t\tconst claimsOf = (c: Record<string, unknown>) => (c.claims ?? {}) as { repository?: unknown; workflow_ref?: { file?: unknown } };\n\t\tconst matches = configs.find((c) => {\n\t\t\tconst cl = claimsOf(c);\n\t\t\treturn c.type === \"github\" && typeof cl.repository === \"string\" && cl.repository.toLowerCase() === facts.repository.toLowerCase() && cl.workflow_ref?.file === args.workflow;\n\t\t});\n\t\tif (!matches) {\n\t\t\tconst existingList = configs.map((c) => `${String(c.type)} ${String(claimsOf(c).repository)} (${String(claimsOf(c).workflow_ref?.file)})`).join(\"; \") || \"unreadable\";\n\t\t\tfail(`${args.package} already has a different trusted publisher: ${existingList}. Change it at ${access}`);\n\t\t}\n\t\talreadyThere = true;\n\t\tout = { config: matches, conflict: true };\n\t}\n\n\tconst trustId = typeof out.config?.id === \"string\" ? out.config.id : undefined;\n\treturn {\n\t\t...base,\n\t\tstatus: \"done\",\n\t\tdone: alreadyThere ? [] : [\"trust\"],\n\t\tskipped: alreadyThere ? [\"publish\", \"trust\"] : [\"publish\"],\n\t\t...(trustId ? { trustId } : {}),\n\t\tmessage: `${args.package} exists with a trusted publisher for ${facts.repository} (.github/workflows/${args.workflow}); its next release can publish through OIDC.`\n\t};\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/ghcr/archive.ts\n *\t@Date: 2026-10-31T10:59:13-07:00 (1793469553)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T23:26:33-07:00 (1793514393)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Opens an image archive from the GHCR drop directory and works out what to push.\n *\n * The archive path comes from the agent, and the broker can read files the agent can't\n * (its own credentials among them). A path that resolves outside the drop directory would\n * let the agent have the broker upload a secret into a registry the agent can then pull\n * from. So the file is opened exactly once, by descriptor, and every check runs against\n * that descriptor rather than the path:\n *\n * 1. lexical: the normalized path must sit under `dropDir`;\n * 2. the real (symlink-resolved) parent directory must be the real `dropDir` or under it,\n * so a symlinked subdirectory pointing elsewhere is refused before anything is opened;\n * steps 1 and 2 give the same answer for every refusal, so a path elsewhere reveals\n * nothing about what exists there;\n * 3. `O_NOFOLLOW | O_NONBLOCK`: the last component can't be a symlink, and a FIFO can't\n * hang the open;\n * 4. `/proc/self/fd/<fd>`: the file actually opened lives under the real `dropDir`. This\n * runs before any check that describes the file, and catches a parent directory swapped\n * between step 2 and the open;\n * 5. `fstat`: a regular file, exactly one link (no hard link to a file elsewhere), not\n * empty, not over `maxArchiveBytes`.\n *\n * All later reads use positional reads on that descriptor; the path is never reopened.\n *\n * Two archive formats are read:\n * - OCI image layout (`index.json` + `blobs/sha256/\u2026`): `docker save` on Docker 25+,\n * `docker buildx build --output type=oci`, `skopeo copy \u2026 oci-archive:`.\n * - docker-archive (`manifest.json` only): `docker save` on older Docker.\n *\n * Layers that are already gzip/zstd-compressed are pushed byte-for-byte. Uncompressed\n * layers (what `docker save` writes for the classic image store) are gzipped on the fly at\n * push time, and the manifest is then rebuilt as an OCI image manifest.\n */\n\nimport { closeSync, constants, fstatSync, openSync, readlinkSync, realpathSync } from \"node:fs\";\nimport { createHash } from \"node:crypto\";\nimport { dirname, isAbsolute, join, normalize } from \"node:path\";\nimport { indexTar, peekMember, readMember, type TarIndex, type TarMember } from \"./tar.ts\";\n\nexport const MEDIA = {\n\tociIndex: \"application/vnd.oci.image.index.v1+json\",\n\tociManifest: \"application/vnd.oci.image.manifest.v1+json\",\n\tociConfig: \"application/vnd.oci.image.config.v1+json\",\n\tociLayer: \"application/vnd.oci.image.layer.v1.tar\",\n\tociLayerGzip: \"application/vnd.oci.image.layer.v1.tar+gzip\",\n\tociLayerZstd: \"application/vnd.oci.image.layer.v1.tar+zstd\",\n\tdockerList: \"application/vnd.docker.distribution.manifest.list.v2+json\",\n\tdockerManifest: \"application/vnd.docker.distribution.manifest.v2+json\",\n\tdockerConfig: \"application/vnd.docker.container.image.v1+json\",\n\tdockerLayer: \"application/vnd.docker.image.rootfs.diff.tar\",\n\tdockerLayerGzip: \"application/vnd.docker.image.rootfs.diff.tar.gzip\"\n} as const;\n\nconst MANIFEST_TYPES = new Set<string>([MEDIA.ociManifest, MEDIA.dockerManifest]);\nconst INDEX_TYPES = new Set<string>([MEDIA.ociIndex, MEDIA.dockerList]);\nconst LAYER_TYPES = new Set<string>([MEDIA.ociLayer, MEDIA.ociLayerGzip, MEDIA.ociLayerZstd, MEDIA.dockerLayer, MEDIA.dockerLayerGzip]);\nconst CONFIG_TYPES = new Set<string>([MEDIA.ociConfig, MEDIA.dockerConfig]);\nconst DIGEST = /^sha256:[a-f0-9]{64}$/;\nconst MAX_JSON = 4 * 1024 * 1024;\nexport const MAX_LAYERS = 256;\n\nexport class ArchiveError extends Error {}\n\nconst fail = (msg: string): never => {\n\tthrow new ArchiveError(`archive: ${msg}`);\n};\n\nexport interface OpenedArchive {\n\tfd: number;\n\t/** The real path of the opened file (inside dropDir). */\n\tpath: string;\n\tsize: number;\n\tclose(): void;\n}\n\n/** Securely open `input` (absolute, or relative to dropDir) \u2014 see the file comment for the checks. */\nexport function openArchive(input: unknown, dropDir: string, maxBytes: number): OpenedArchive {\n\tif (typeof input !== \"string\" || !input || input.length > 4096 || input.includes(\"\\0\")) fail('\"archive\" must be a file path inside the drop directory');\n\tconst candidate = normalize(isAbsolute(input as string) ? (input as string) : join(dropDir, input as string));\n\t// One answer for every path that can't be confirmed to be in the drop dir (outside it,\n\t// behind a symlinked or missing subdirectory), so none of them reveals anything.\n\tconst outside = `\"archive\" must be an existing file inside the drop directory ${dropDir}`;\n\tif (!candidate.startsWith(`${dropDir}/`)) fail(outside);\n\n\tlet realDrop: string;\n\ttry {\n\t\trealDrop = realpathSync(dropDir);\n\t} catch {\n\t\treturn fail(`drop directory ${dropDir} does not exist \u2014 the installer creates it`);\n\t}\n\t// A symlinked subdirectory would make the open below follow it out of the drop dir.\n\tlet realParent: string;\n\ttry {\n\t\trealParent = realpathSync(dirname(candidate));\n\t} catch {\n\t\treturn fail(outside);\n\t}\n\tif (realParent !== realDrop && !realParent.startsWith(`${realDrop}/`)) fail(outside);\n\n\tlet fd: number;\n\ttry {\n\t\tfd = openSync(candidate, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);\n\t} catch (err) {\n\t\tconst code = (err as NodeJS.ErrnoException).code;\n\t\tif (code === \"ELOOP\") return fail(`${candidate} is a symlink \u2014 put the archive file itself in the drop directory`);\n\t\tif (code === \"ENOENT\" || code === \"ENOTDIR\") return fail(`${candidate} not found`);\n\t\tif (code === \"EACCES\") return fail(`${candidate} is not readable by the broker \u2014 make it group-readable (chmod g+r)`);\n\t\t// openSync errors always carry an errno code, so the \"error\" fallback is unreachable; it only satisfies the type.\n\t\t/* v8 ignore next */\n\t\treturn fail(`cannot open ${candidate} (${code ?? \"error\"})`);\n\t}\n\ttry {\n\t\t// Containment first: nothing about a file outside the drop dir is described.\n\t\tconst real = readlinkSync(`/proc/self/fd/${fd}`);\n\t\t// Reachable when a parent directory is swapped for a symlink between the realpath check\n\t\t// above and the open (a race the suite cannot drive deterministically); guarded because\n\t\t// that race is exactly how a broker-only file could otherwise be read.\n\t\t/* v8 ignore next */\n\t\tif (!real.startsWith(`${realDrop}/`)) fail(outside);\n\t\tconst st = fstatSync(fd);\n\t\tif (!st.isFile()) fail(`${candidate} is not a regular file`);\n\t\tif (st.nlink !== 1) fail(`${candidate} has ${st.nlink} hard links \u2014 copy the archive instead of linking it`);\n\t\tif (st.size === 0) fail(`${candidate} is empty`);\n\t\tif (st.size > maxBytes) fail(`${candidate} is ${st.size} bytes \u2014 over the ${maxBytes}-byte limit (ghcr.maxArchiveBytes)`);\n\t\tlet closed = false;\n\t\treturn {\n\t\t\tfd,\n\t\t\tpath: real,\n\t\t\tsize: st.size,\n\t\t\tclose() {\n\t\t\t\tif (closed) return;\n\t\t\t\tclosed = true;\n\t\t\t\tcloseSync(fd);\n\t\t\t}\n\t\t};\n\t} catch (err) {\n\t\tcloseSync(fd);\n\t\tthrow err;\n\t}\n}\n\n/** One blob to push. `digest`/`size` are what the registry will hold (known up front unless `compress`). */\nexport interface BlobPlan {\n\tmember: TarMember;\n\tmediaType: string;\n\t/** Digest + size in the archive (for a compressed-on-push layer: of the uncompressed tar). */\n\tsourceDigest?: string;\n\tsourceSize: number;\n\t/** Gzip this layer while pushing it (archive holds it uncompressed). */\n\tcompress: boolean;\n}\n\nexport interface ImagePlan {\n\tformat: \"oci-layout\" | \"docker-archive\";\n\tconfig: BlobPlan & { digest: string };\n\tlayers: BlobPlan[];\n\t/** Set when the archive's own manifest can be pushed unchanged (nothing recompressed or retyped). */\n\tverbatimManifest?: { bytes: Buffer; mediaType: string; digest: string };\n\tannotations?: Record<string, string>;\n}\n\nconst sha256 = (b: Buffer): string => `sha256:${createHash(\"sha256\").update(b).digest(\"hex\")}`;\n\nfunction parseJson(buf: Buffer, what: string): unknown {\n\ttry {\n\t\treturn JSON.parse(buf.toString(\"utf8\"));\n\t} catch {\n\t\treturn fail(`${what} is not valid JSON`);\n\t}\n}\n\ninterface Descriptor {\n\tmediaType?: string;\n\tdigest?: string;\n\tsize?: number;\n\tannotations?: Record<string, string>;\n\tplatform?: { os?: string; architecture?: string };\n}\n\nfunction blobMember(index: TarIndex, digest: unknown, what: string): TarMember {\n\tif (typeof digest !== \"string\" || !DIGEST.test(digest)) fail(`${what} has an unsupported digest (only sha256 is accepted)`);\n\tconst m = index.files.get(`blobs/sha256/${(digest as string).slice(\"sha256:\".length)}`);\n\tif (!m) fail(`${what} ${digest} is missing from the archive`);\n\treturn m as TarMember;\n}\n\nfunction readBlobJson(fd: number, index: TarIndex, d: Descriptor, what: string): { bytes: Buffer; json: unknown } {\n\tconst m = blobMember(index, d.digest, what);\n\tconst bytes = readMember(fd, m, MAX_JSON, what);\n\tif (sha256(bytes) !== d.digest) fail(`${what} does not match its digest`);\n\treturn { bytes, json: parseJson(bytes, what) };\n}\n\n/**\n * The image entries of an index: buildx attestation manifests and unknown/unknown platform\n * entries are not images. When several remain, keep only those whose manifest blob is in\n * the archive: with the containerd image store, `docker save` writes the image's whole\n * multi-platform index but only the blobs of the platform that was pulled.\n */\nfunction images(manifests: unknown, index: TarIndex): Descriptor[] {\n\tif (!Array.isArray(manifests)) return fail(\"index has no manifests list\");\n\tconst list = (manifests as Descriptor[]).filter(\n\t\t(d) => d?.annotations?.[\"vnd.docker.reference.type\"] !== \"attestation-manifest\" && !(d?.platform?.os === \"unknown\" && d?.platform?.architecture === \"unknown\")\n\t);\n\tif (list.length <= 1) return list;\n\treturn list.filter((d) => typeof d?.digest === \"string\" && DIGEST.test(d.digest) && index.files.has(`blobs/sha256/${d.digest.slice(\"sha256:\".length)}`));\n}\n\nfunction sniff(fd: number, m: TarMember): \"gzip\" | \"zstd\" | \"none\" {\n\tconst head = peekMember(fd, m, 4);\n\tif (head.length >= 2 && head[0] === 0x1f && head[1] === 0x8b) return \"gzip\";\n\tif (head.length >= 4 && head.readUInt32LE(0) === 0xfd2fb528) return \"zstd\";\n\treturn \"none\";\n}\n\n/** Decide how a layer is pushed: verbatim when already compressed, gzipped on the fly otherwise. */\nfunction layerPlan(fd: number, m: TarMember, declared: string | undefined, sourceDigest: string | undefined): BlobPlan {\n\tif (declared !== undefined && !LAYER_TYPES.has(declared)) fail(`layer media type \"${declared}\" is not supported (non-distributable and foreign layers are refused)`);\n\tconst kind = sniff(fd, m);\n\tif (kind === \"gzip\") {\n\t\tconst mediaType = declared === MEDIA.ociLayerGzip || declared === MEDIA.dockerLayerGzip ? declared : MEDIA.ociLayerGzip;\n\t\treturn { member: m, mediaType, sourceDigest, sourceSize: m.size, compress: false };\n\t}\n\tif (kind === \"zstd\") return { member: m, mediaType: MEDIA.ociLayerZstd, sourceDigest, sourceSize: m.size, compress: false };\n\treturn { member: m, mediaType: MEDIA.ociLayerGzip, sourceDigest, sourceSize: m.size, compress: true };\n}\n\n/** Read the archive's index/manifest and plan the push. Reads only small JSON members and 4-byte layer heads. */\nexport function planImage(fd: number, size: number): ImagePlan {\n\tconst index = indexTar(fd, size);\n\tconst top = index.files.get(\"index.json\");\n\tif (top) return planOciLayout(fd, index, top);\n\tconst legacy = index.files.get(\"manifest.json\");\n\tif (legacy) return planDockerArchive(fd, index, legacy);\n\treturn fail(\"not an image archive (no index.json or manifest.json) \u2014 create it with `docker save <image> -o <file>`\");\n}\n\nfunction planOciLayout(fd: number, index: TarIndex, top: TarMember): ImagePlan {\n\tconst root = parseJson(readMember(fd, top, MAX_JSON, \"index.json\"), \"index.json\") as { manifests?: unknown };\n\tlet list = images(root.manifests, index);\n\tlet desc: Descriptor | undefined = list.length === 1 ? list[0] : undefined;\n\t// docker save / buildx often wrap the image manifest in one more index level.\n\tif (desc && INDEX_TYPES.has(desc.mediaType ?? \"\")) {\n\t\tconst nested = readBlobJson(fd, index, desc, \"nested index\").json as { manifests?: unknown };\n\t\tlist = images(nested.manifests, index);\n\t\tdesc = list.length === 1 ? list[0] : undefined;\n\t}\n\tif (!desc) fail(`archive holds ${list.length} images \u2014 save exactly one single-platform image per archive`);\n\tconst d = desc as Descriptor;\n\tif (!MANIFEST_TYPES.has(d.mediaType ?? \"\")) fail(`manifest media type \"${d.mediaType}\" is not supported`);\n\tconst { bytes, json } = readBlobJson(fd, index, d, \"image manifest\");\n\tconst man = json as { config?: Descriptor; layers?: Descriptor[]; annotations?: Record<string, string> };\n\tif (!man.config || !Array.isArray(man.layers)) fail(\"image manifest has no config or layers\");\n\tif (man.layers!.length > MAX_LAYERS) fail(`image has ${man.layers!.length} layers \u2014 at most ${MAX_LAYERS}`);\n\n\tconst cfg = man.config as Descriptor;\n\tif (!CONFIG_TYPES.has(cfg.mediaType ?? \"\")) fail(`config media type \"${cfg.mediaType}\" is not supported`);\n\tconst cfgMember = blobMember(index, cfg.digest, \"image config\");\n\tif (cfgMember.size !== cfg.size) fail(\"image config size does not match its descriptor\");\n\n\tlet changed = false;\n\tconst layers = man.layers!.map((l, i) => {\n\t\tconst m = blobMember(index, l.digest, `layer ${i + 1}`);\n\t\tif (m.size !== l.size) fail(`layer ${i + 1} size does not match its descriptor`);\n\t\tconst plan = layerPlan(fd, m, l.mediaType, l.digest);\n\t\tif (plan.compress || plan.mediaType !== l.mediaType) changed = true;\n\t\treturn plan;\n\t});\n\treturn {\n\t\tformat: \"oci-layout\",\n\t\tconfig: { member: cfgMember, mediaType: cfg.mediaType!, digest: cfg.digest!, sourceDigest: cfg.digest, sourceSize: cfgMember.size, compress: false },\n\t\tlayers,\n\t\t...(changed ? {} : { verbatimManifest: { bytes, mediaType: d.mediaType!, digest: d.digest! } }),\n\t\t...(man.annotations ? { annotations: man.annotations } : {})\n\t};\n}\n\nfunction planDockerArchive(fd: number, index: TarIndex, legacy: TarMember): ImagePlan {\n\tconst list = parseJson(readMember(fd, legacy, MAX_JSON, \"manifest.json\"), \"manifest.json\");\n\tif (!Array.isArray(list) || list.length !== 1) fail(`archive holds ${Array.isArray(list) ? list.length : 0} images \u2014 save exactly one image per archive`);\n\tconst entry = (list as Array<{ Config?: unknown; Layers?: unknown }>)[0]!;\n\tif (typeof entry.Config !== \"string\" || !Array.isArray(entry.Layers)) fail(\"manifest.json entry has no Config or Layers\");\n\tif ((entry.Layers as unknown[]).length > MAX_LAYERS) fail(`image has ${(entry.Layers as unknown[]).length} layers \u2014 at most ${MAX_LAYERS}`);\n\n\tconst member = (name: unknown, what: string): TarMember => {\n\t\tconst m = typeof name === \"string\" ? index.files.get(name.replace(/^\\.?\\//, \"\")) : undefined;\n\t\tif (!m) fail(`${what} \"${String(name)}\" is missing from the archive`);\n\t\treturn m as TarMember;\n\t};\n\tconst cfgMember = member(entry.Config, \"image config\");\n\tconst cfgBytes = readMember(fd, cfgMember, MAX_JSON, \"image config\");\n\tparseJson(cfgBytes, \"image config\");\n\tconst layers = (entry.Layers as unknown[]).map((name, i) => layerPlan(fd, member(name, `layer ${i + 1}`), undefined, undefined));\n\treturn {\n\t\tformat: \"docker-archive\",\n\t\tconfig: { member: cfgMember, mediaType: MEDIA.ociConfig, digest: sha256(cfgBytes), sourceSize: cfgMember.size, compress: false },\n\t\tlayers\n\t};\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/ghcr/tar.ts\n *\t@Date: 2026-10-31T10:58:00-07:00 (1793469480)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T11:13:30-07:00 (1793470410)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Minimal read-only tar index for `docker save` / OCI-layout archives.\n *\n * Only headers are read: the index records where each member's data lives in the file\n * (offset + size) so blobs can be streamed straight from the already-open descriptor\n * with positional reads. Nothing is extracted to disk, and links inside the archive are\n * resolved against the archive's own member names, never the filesystem.\n *\n * Supported: ustar/POSIX headers, PAX extended headers (`path`, `linkpath`, `size`), GNU\n * long names (`L`/`K`), base-256 sizes, regular files, hard links and symlinks. Global PAX\n * headers, directories and every other type are skipped.\n */\n\nimport { readSync } from \"node:fs\";\nimport { posix } from \"node:path\";\n\nexport interface TarMember {\n\t/** Byte offset of the member's data in the archive. */\n\toffset: number;\n\tsize: number;\n}\n\nexport interface TarIndex {\n\t/** Regular members by normalized name (links already resolved). */\n\tfiles: Map<string, TarMember>;\n}\n\nconst BLOCK = 512;\n/** Bounds the header scan so a hostile archive can't make the index unbounded. */\nexport const MAX_TAR_MEMBERS = 100_000;\nconst MAX_EXT_HEADER = 1024 * 1024;\nconst MAX_LINK_DEPTH = 16;\n\nexport class TarError extends Error {}\n\nconst fail = (msg: string): never => {\n\tthrow new TarError(`archive: ${msg}`);\n};\n\nfunction readAt(fd: number, position: number, length: number): Buffer {\n\tconst buf = Buffer.alloc(length);\n\tlet got = 0;\n\twhile (got < length) {\n\t\tconst n = readSync(fd, buf, got, length - got, position + got);\n\t\tif (n === 0) break;\n\t\tgot += n;\n\t}\n\tif (got !== length) fail(`truncated at byte ${position + got}`);\n\treturn buf;\n}\n\nfunction cstr(buf: Buffer, start: number, len: number): string {\n\tconst slice = buf.subarray(start, start + len);\n\tconst nul = slice.indexOf(0);\n\treturn slice.subarray(0, nul === -1 ? len : nul).toString(\"utf8\");\n}\n\nfunction parseSize(buf: Buffer): number {\n\tconst field = buf.subarray(124, 136);\n\tif (field[0]! & 0x80) {\n\t\t// base-256 (GNU) for members over 8 GiB\n\t\tlet n = 0;\n\t\tfor (let i = 1; i < field.length; i++) n = n * 256 + field[i]!;\n\t\tif (!Number.isSafeInteger(n)) fail(\"member size out of range\");\n\t\treturn n;\n\t}\n\tconst s = cstr(field, 0, 12).trim();\n\tif (!/^[0-7]*$/.test(s)) fail(\"bad size field in tar header\");\n\treturn s ? parseInt(s, 8) : 0;\n}\n\nfunction checksumOk(buf: Buffer): boolean {\n\tconst stored = cstr(buf, 148, 8).trim();\n\tif (!/^[0-7]+$/.test(stored)) return false;\n\tlet sum = 0;\n\tfor (let i = 0; i < BLOCK; i++) sum += i >= 148 && i < 156 ? 0x20 : buf[i]!;\n\treturn sum === parseInt(stored, 8);\n}\n\nfunction parsePax(data: Buffer): Record<string, string> {\n\tconst out: Record<string, string> = {};\n\tlet i = 0;\n\twhile (i < data.length) {\n\t\tconst sp = data.indexOf(0x20, i);\n\t\tif (sp === -1) break;\n\t\tconst len = parseInt(data.subarray(i, sp).toString(\"ascii\"), 10);\n\t\tif (!Number.isInteger(len) || len <= 0 || i + len > data.length) fail(\"bad PAX header record\");\n\t\tconst rec = data.subarray(sp + 1, i + len - 1).toString(\"utf8\");\n\t\tconst eq = rec.indexOf(\"=\");\n\t\tif (eq > 0) out[rec.slice(0, eq)] = rec.slice(eq + 1);\n\t\ti += len;\n\t}\n\treturn out;\n}\n\n/** Normalize a member name: strip leading \"./\" and \"/\", collapse \"..\". Returns \"\" for the root. */\nexport function normName(name: string): string {\n\tconst n = posix.normalize(`/${name}`).slice(1);\n\treturn n.replace(/\\/+$/, \"\");\n}\n\n/** Index every member of the tar archive open at `fd` (`size` bytes long). */\nexport function indexTar(fd: number, size: number): TarIndex {\n\tconst files = new Map<string, TarMember>();\n\tconst links = new Map<string, { target: string; hard: boolean }>();\n\tlet pos = 0;\n\tlet members = 0;\n\tlet pax: Record<string, string> = {};\n\tlet longName: string | undefined;\n\tlet longLink: string | undefined;\n\n\twhile (pos + BLOCK <= size) {\n\t\tconst hdr = readAt(fd, pos, BLOCK);\n\t\tif (hdr.every((b) => b === 0)) break; // end-of-archive marker\n\t\tif (!checksumOk(hdr)) fail(`bad tar header checksum at byte ${pos}`);\n\t\tif (++members > MAX_TAR_MEMBERS) fail(`more than ${MAX_TAR_MEMBERS} members`);\n\n\t\tconst type = String.fromCharCode(hdr[156]!);\n\t\tlet memberSize = parseSize(hdr);\n\t\tconst dataAt = pos + BLOCK;\n\t\tconst next = dataAt + Math.ceil(memberSize / BLOCK) * BLOCK;\n\n\t\tif (type === \"x\" || type === \"g\" || type === \"L\" || type === \"K\") {\n\t\t\tif (memberSize > MAX_EXT_HEADER) fail(\"extended header too large\");\n\t\t\tconst data = readAt(fd, dataAt, memberSize);\n\t\t\tif (type === \"x\") pax = parsePax(data);\n\t\t\telse if (type === \"L\") longName = cstr(data, 0, data.length);\n\t\t\telse if (type === \"K\") longLink = cstr(data, 0, data.length);\n\t\t\t// \"g\" (global PAX) carries nothing this reader needs.\n\t\t\tpos = next;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst prefix = cstr(hdr, 345, 155);\n\t\tconst rawName = pax.path ?? longName ?? (prefix ? `${prefix}/${cstr(hdr, 0, 100)}` : cstr(hdr, 0, 100));\n\t\tconst linkName = pax.linkpath ?? longLink ?? cstr(hdr, 157, 100);\n\t\tif (pax.size !== undefined) {\n\t\t\tif (!/^\\d+$/.test(pax.size)) fail(\"bad PAX size\");\n\t\t\tmemberSize = Number(pax.size);\n\t\t}\n\t\tconst dataEnd = dataAt + Math.ceil(memberSize / BLOCK) * BLOCK;\n\t\tpax = {};\n\t\tlongName = undefined;\n\t\tlongLink = undefined;\n\n\t\tconst name = normName(rawName);\n\t\tif (type === \"0\" || type === \"\\0\" || type === \"7\") {\n\t\t\tif (dataAt + memberSize > size) fail(`member \"${name}\" runs past the end of the file`);\n\t\t\tfiles.set(name, { offset: dataAt, size: memberSize });\n\t\t\tlinks.delete(name);\n\t\t} else if (type === \"1\") {\n\t\t\tlinks.set(name, { target: normName(linkName), hard: true });\n\t\t\tfiles.delete(name);\n\t\t} else if (type === \"2\") {\n\t\t\tlinks.set(name, { target: normName(posix.join(posix.dirname(name), linkName)), hard: false });\n\t\t\tfiles.delete(name);\n\t\t}\n\t\tpos = dataEnd;\n\t}\n\n\t// Resolve links to the regular member they finally point at, within the archive only.\n\tfor (const [name, link] of links) {\n\t\tlet target = link.target;\n\t\tfor (let depth = 0; ; depth++) {\n\t\t\tif (depth > MAX_LINK_DEPTH) fail(`link loop at \"${name}\"`);\n\t\t\tconst hit = files.get(target);\n\t\t\tif (hit) {\n\t\t\t\tfiles.set(name, hit);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst hop = links.get(target);\n\t\t\tif (!hop) break; // dangling link: simply not a readable member\n\t\t\ttarget = hop.target;\n\t\t}\n\t}\n\treturn { files };\n}\n\n/** Read one (small) member fully, refusing anything larger than `max`. */\nexport function readMember(fd: number, m: TarMember, max: number, what: string): Buffer {\n\tif (m.size > max) fail(`${what} is ${m.size} bytes \u2014 larger than the ${max}-byte limit`);\n\treturn readAt(fd, m.offset, m.size);\n}\n\n/** Read the first `n` bytes of a member (for magic-number sniffing). */\nexport function peekMember(fd: number, m: TarMember, n: number): Buffer {\n\treturn readAt(fd, m.offset, Math.min(n, m.size));\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/ghcr/registry.ts\n *\t@Date: 2026-10-31T11:00:07-07:00 (1793469607)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T23:26:34-07:00 (1793514394)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * OCI distribution API client for ghcr.io, driven with node:https (no new dependency, no\n * docker socket, no skopeo).\n *\n * Credential handling:\n * - The classic PAT is used for exactly one request: the Basic-auth exchange at\n * `<base>/token` for a short-lived registry token scoped to one repository.\n * - The registry token goes only to `<base>` itself. Every URL the registry hands back\n * (upload `Location`, pagination `Link`) is resolved and refused unless its origin is\n * `<base>`'s, and redirects are never followed, so neither secret can be carried to\n * another host.\n * - Every error message leaving this module goes through `clean()`, which replaces both\n * secret values and anything shaped like an auth header or a GitHub token. Registry\n * error bodies are reduced to their `code: message` pairs; response headers are never\n * included.\n *\n * Upload flow per blob (the one go-containerregistry uses against GHCR):\n * `POST /v2/<name>/blobs/uploads/` \u2192 `PATCH <location>` streaming the bytes with a known\n * Content-Length \u2192 `PUT <location>?digest=\u2026`. A 401 mid-flow (expired registry token)\n * re-runs the token exchange once and restarts that blob.\n */\n\nimport { request as httpRequest, type IncomingHttpHeaders } from \"node:http\";\nimport { request as httpsRequest } from \"node:https\";\nimport type { Readable } from \"node:stream\";\n\nexport const GHCR_BASE = \"https://ghcr.io\";\nconst MAX_BODY = 1024 * 1024;\nconst IDLE_TIMEOUT_MS = 10 * 60 * 1000;\nconst MAX_TAG_PAGES = 20;\nexport const MANIFEST_ACCEPT = [\n\t\"application/vnd.oci.image.manifest.v1+json\",\n\t\"application/vnd.oci.image.index.v1+json\",\n\t\"application/vnd.docker.distribution.manifest.v2+json\",\n\t\"application/vnd.docker.distribution.manifest.list.v2+json\"\n].join(\", \");\n\nexport class RegistryError extends Error {\n\treadonly status?: number;\n\tconstructor(message: string, status?: number) {\n\t\tsuper(message);\n\t\tthis.status = status;\n\t}\n}\n\ninterface Res {\n\tstatus: number;\n\theaders: IncomingHttpHeaders;\n\tbody: Buffer;\n}\n\ntype Body = Buffer | (() => Readable) | undefined;\n\nexport interface RegistryOptions {\n\t/** Registry origin. Always GHCR_BASE in production; tests point it at a local fake. */\n\tbase?: string;\n\tusername: string;\n\tpassword: string;\n\t/** \"<owner>/<image>\" */\n\trepository: string;\n}\n\nexport class Registry {\n\tprivate readonly base: URL;\n\tprivate readonly username: string;\n\tprivate readonly password: string;\n\treadonly repository: string;\n\tprivate token?: string;\n\tprivate scope?: string;\n\n\tconstructor(opts: RegistryOptions) {\n\t\tthis.base = new URL(opts.base ?? GHCR_BASE);\n\t\tthis.username = opts.username;\n\t\tthis.password = opts.password;\n\t\tthis.repository = opts.repository;\n\t}\n\n\t/** The registry host name as used in image references (e.g. \"ghcr.io\"). */\n\tget host(): string {\n\t\treturn this.base.host;\n\t}\n\n\t/** Replace every secret (and anything that looks like one) in a message. */\n\tclean(msg: string): string {\n\t\tlet out = msg;\n\t\tfor (const s of [this.password, this.token]) if (s && s.length >= 4) out = out.split(s).join(\"[redacted]\");\n\t\treturn out\n\t\t\t.replace(/\\b(Bearer|Basic)\\s+[A-Za-z0-9._~+/=-]+/gi, \"$1 [redacted]\")\n\t\t\t.replace(/\\bgh[pousr]_[A-Za-z0-9]{20,}\\b/g, \"[redacted]\")\n\t\t\t.replace(/\\bgithub_pat_[A-Za-z0-9_]{20,}\\b/g, \"[redacted]\");\n\t}\n\n\tprivate err(step: string, res: Res): RegistryError {\n\t\tlet detail = \"\";\n\t\ttry {\n\t\t\tconst j = JSON.parse(res.body.toString(\"utf8\")) as { errors?: Array<{ code?: unknown; message?: unknown }> };\n\t\t\tif (Array.isArray(j.errors)) detail = j.errors.map((e) => `${String(e.code ?? \"\")}: ${String(e.message ?? \"\")}`).join(\"; \");\n\t\t} catch {\n\t\t\tdetail = res.body.toString(\"utf8\").replace(/\\s+/g, \" \").trim();\n\t\t}\n\t\tconst hint = res.status === 401 || res.status === 403 ? \" \u2014 check the ghcr credential is a classic PAT with write:packages, not expired, and allowed for this package\" : \"\";\n\t\t// Scrub before truncating: a secret cut at the 300-character boundary would no longer\n\t\t// match the exact-value replacement.\n\t\tconst shown = this.clean(detail).slice(0, 300);\n\t\treturn new RegistryError(this.clean(`ghcr: ${step} failed: HTTP ${res.status}${shown ? ` (${shown})` : \"\"}${hint}`), res.status);\n\t}\n\n\t/** Resolve a registry-provided URL and refuse anything that would leave the registry's origin. */\n\tprivate sameOrigin(raw: string, step: string): URL {\n\t\tlet u: URL;\n\t\ttry {\n\t\t\tu = new URL(raw, this.base);\n\t\t} catch {\n\t\t\tthrow new RegistryError(`ghcr: ${step}: registry returned an unparseable URL`);\n\t\t}\n\t\tif (u.origin !== this.base.origin) throw new RegistryError(`ghcr: ${step}: registry pointed at another host (${u.host}) \u2014 refused`);\n\t\treturn u;\n\t}\n\n\tprivate url(path: string): URL {\n\t\treturn new URL(path, this.base);\n\t}\n\n\tprivate send(method: string, url: URL, headers: Record<string, string>, body: Body, onBytes?: (n: number) => void): Promise<Res> {\n\t\tconst fn = url.protocol === \"https:\" ? httpsRequest : httpRequest;\n\t\treturn new Promise<Res>((resolve, reject) => {\n\t\t\tconst req = fn(url, { method, headers }, (res) => {\n\t\t\t\tconst chunks: Buffer[] = [];\n\t\t\t\tlet len = 0;\n\t\t\t\tres.on(\"data\", (c: Buffer) => {\n\t\t\t\t\tif (len < MAX_BODY) chunks.push(c);\n\t\t\t\t\tlen += c.length;\n\t\t\t\t});\n\t\t\t\tres.on(\"end\", () => resolve({ status: res.statusCode ?? 0, headers: res.headers, body: Buffer.concat(chunks).subarray(0, MAX_BODY) }));\n\t\t\t\tres.on(\"error\", reject);\n\t\t\t});\n\t\t\treq.setTimeout(IDLE_TIMEOUT_MS, () => req.destroy(new Error(`${method} timed out`)));\n\t\t\treq.on(\"error\", (e) => reject(new RegistryError(this.clean(`ghcr: ${method} ${url.pathname} failed: ${e.message}`))));\n\t\t\tif (body === undefined) req.end();\n\t\t\telse if (Buffer.isBuffer(body)) req.end(body);\n\t\t\telse {\n\t\t\t\tconst src = body();\n\t\t\t\tsrc.on(\"error\", (e) => req.destroy(e));\n\t\t\t\tif (onBytes) src.on(\"data\", (c: Buffer) => onBytes(c.length));\n\t\t\t\tsrc.pipe(req);\n\t\t\t}\n\t\t});\n\t}\n\n\t/** Exchange the PAT for a registry token scoped to this repository. */\n\tasync login(actions: \"pull\" | \"push,pull\"): Promise<void> {\n\t\tconst u = this.url(\"/token\");\n\t\tu.searchParams.set(\"service\", this.base.host);\n\t\tu.searchParams.set(\"scope\", `repository:${this.repository}:${actions}`);\n\t\tconst basic = Buffer.from(`${this.username}:${this.password}`).toString(\"base64\");\n\t\tconst res = await this.send(\"GET\", u, { Authorization: `Basic ${basic}`, Accept: \"application/json\" }, undefined);\n\t\tif (res.status !== 200) throw this.err(\"token exchange\", res);\n\t\tlet token: unknown;\n\t\ttry {\n\t\t\tconst j = JSON.parse(res.body.toString(\"utf8\")) as { token?: unknown; access_token?: unknown };\n\t\t\ttoken = j.token ?? j.access_token;\n\t\t} catch {\n\t\t\t/* handled below */\n\t\t}\n\t\tif (typeof token !== \"string\" || !token) throw new RegistryError(\"ghcr: token exchange returned no token\");\n\t\tthis.token = token;\n\t\tthis.scope = actions;\n\t}\n\n\t/** One request with the registry token; on 401 re-login once and retry. */\n\tprivate async authed(method: string, url: URL, headers: Record<string, string>, body: Body, onBytes?: (n: number) => void): Promise<Res> {\n\t\tif (!this.token) await this.login(\"pull\");\n\t\tconst go = () => this.send(method, url, { ...headers, Authorization: `Bearer ${this.token}` }, body, onBytes);\n\t\tconst res = await go();\n\t\tif (res.status !== 401) return res;\n\t\t// login() sets scope together with token and a token is always present here, so the \"pull\" fallback is unreachable; it only satisfies the type.\n\t\t/* v8 ignore next */\n\t\tawait this.login((this.scope as \"pull\" | \"push,pull\") ?? \"pull\");\n\t\treturn go();\n\t}\n\n\tasync blobExists(digest: string): Promise<boolean> {\n\t\tconst res = await this.authed(\"HEAD\", this.url(`/v2/${this.repository}/blobs/${digest}`), {}, undefined);\n\t\tif (res.status >= 200 && res.status < 400) return true; // a redirect to storage still means \"present\"\n\t\tif (res.status === 404) return false;\n\t\tthrow this.err(`checking blob ${digest}`, res);\n\t}\n\n\t/**\n\t * Upload one blob whose digest and size are known. `body` must produce a fresh stream\n\t * each call (a retry after a 401 restarts the upload). `onBytes` reports progress.\n\t */\n\tasync uploadBlob(digest: string, size: number, body: () => Readable, onBytes?: (n: number) => void): Promise<void> {\n\t\tfor (let attempt = 0; ; attempt++) {\n\t\t\tlet sent = 0;\n\t\t\tconst count = (n: number) => {\n\t\t\t\tsent += n;\n\t\t\t\tonBytes?.(n);\n\t\t\t};\n\t\t\tconst res = await this.tryUpload(digest, size, body, count);\n\t\t\tif (res === \"ok\") return;\n\t\t\tif (attempt >= 1) throw this.err(`uploading blob ${digest}`, res);\n\t\t\tonBytes?.(-sent); // roll the progress counter back before the retry\n\t\t\tawait this.login(\"push,pull\");\n\t\t}\n\t}\n\n\tprivate async tryUpload(digest: string, size: number, body: () => Readable, onBytes: (n: number) => void): Promise<\"ok\" | Res> {\n\t\tconst start = await this.authed(\"POST\", this.url(`/v2/${this.repository}/blobs/uploads/`), { \"Content-Length\": \"0\" }, Buffer.alloc(0));\n\t\tif (start.status === 401) return start;\n\t\tif (start.status !== 202 || typeof start.headers.location !== \"string\") throw this.err(\"starting a blob upload\", start);\n\t\tconst patchUrl = this.sameOrigin(start.headers.location, \"blob upload\");\n\n\t\tconst auth = { Authorization: `Bearer ${this.token}` };\n\t\tconst patch = await this.send(\"PATCH\", patchUrl, { ...auth, \"Content-Type\": \"application/octet-stream\", \"Content-Length\": String(size) }, body, onBytes);\n\t\tif (patch.status === 401) return patch;\n\t\tif (patch.status !== 202 && patch.status !== 204) throw this.err(`uploading blob ${digest}`, patch);\n\t\tconst putUrl = this.sameOrigin(typeof patch.headers.location === \"string\" ? patch.headers.location : patchUrl.href, \"blob upload\");\n\t\tputUrl.searchParams.set(\"digest\", digest);\n\n\t\tconst done = await this.send(\"PUT\", putUrl, { ...auth, \"Content-Length\": \"0\" }, Buffer.alloc(0));\n\t\tif (done.status === 401) return done;\n\t\tif (done.status !== 201) throw this.err(`finishing blob ${digest}`, done);\n\t\treturn \"ok\";\n\t}\n\n\t/** True when `reference` (tag or digest) already names a manifest in this repository. */\n\tasync manifestExists(reference: string): Promise<boolean> {\n\t\tconst res = await this.authed(\"HEAD\", this.url(`/v2/${this.repository}/manifests/${reference}`), { Accept: MANIFEST_ACCEPT }, undefined);\n\t\tif (res.status === 200) return true;\n\t\tif (res.status === 404) return false;\n\t\tthrow this.err(`checking tag ${reference}`, res);\n\t}\n\n\tasync putManifest(tag: string, mediaType: string, bytes: Buffer): Promise<void> {\n\t\tconst res = await this.authed(\"PUT\", this.url(`/v2/${this.repository}/manifests/${tag}`), { \"Content-Type\": mediaType, \"Content-Length\": String(bytes.length) }, bytes);\n\t\tif (res.status !== 201 && res.status !== 200) throw this.err(`pushing manifest for tag ${tag}`, res);\n\t}\n\n\t/** Every tag in the repository; `undefined` when the repository doesn't exist yet. */\n\tasync listTags(): Promise<string[] | undefined> {\n\t\tconst tags: string[] = [];\n\t\tlet url: URL | undefined = this.url(`/v2/${this.repository}/tags/list?n=1000`);\n\t\tfor (let page = 0; url && page < MAX_TAG_PAGES; page++) {\n\t\t\tconst res = await this.authed(\"GET\", url, { Accept: \"application/json\" }, undefined);\n\t\t\tif (res.status === 404) return undefined;\n\t\t\tif (res.status !== 200) throw this.err(\"listing tags\", res);\n\t\t\tlet j: { tags?: unknown };\n\t\t\ttry {\n\t\t\t\tj = JSON.parse(res.body.toString(\"utf8\")) as { tags?: unknown };\n\t\t\t} catch {\n\t\t\t\tthrow new RegistryError(\"ghcr: listing tags returned invalid JSON\");\n\t\t\t}\n\t\t\tif (Array.isArray(j.tags)) for (const t of j.tags) if (typeof t === \"string\") tags.push(t);\n\t\t\tconst link = typeof res.headers.link === \"string\" ? /<([^>]+)>;\\s*rel=\"next\"/.exec(res.headers.link) : null;\n\t\t\turl = link ? this.sameOrigin(link[1]!, \"listing tags\") : undefined;\n\t\t}\n\t\treturn tags;\n\t}\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/ghcr/push.ts\n *\t@Date: 2026-10-31T11:00:50-07:00 (1793469650)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T11:13:29-07:00 (1793470409)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Pushes one planned image (see archive.ts) to a registry repository.\n *\n * Phases:\n * 1. preparing \u2014 for every layer the archive holds uncompressed, gzip it once just to\n * learn the compressed digest and size. This costs a second pass of CPU, but it means\n * the blob `HEAD` check works for those layers too (a re-push of an unchanged image\n * uploads nothing), and nothing has to be buffered or written to disk: the broker's\n * unit has no writable scratch space.\n * 2. uploading \u2014 config then layers: `HEAD` each blob and skip it when present,\n * otherwise stream it. Compressed-on-push layers are gzipped again with the same\n * settings; zlib is deterministic, and the registry rejects the upload if the bytes\n * don't match the digest computed in phase 1.\n * 3. manifest \u2014 re-check a protected release tag (another push may have landed it while\n * this one waited in the queue), then `PUT` the manifest under the tag.\n */\n\nimport { createReadStream } from \"node:fs\";\nimport { createHash } from \"node:crypto\";\nimport { createGzip } from \"node:zlib\";\nimport { PassThrough, Writable, type Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport { MEDIA, type BlobPlan, type ImagePlan } from \"./archive.ts\";\nimport type { Registry } from \"./registry.ts\";\n\nexport const RELEASE_TAG = /^v?\\d+\\.\\d+\\.\\d+$/;\nconst GZIP_LEVEL = 6;\n\nexport type Phase = \"queued\" | \"preparing\" | \"uploading\" | \"manifest\" | \"done\";\n\nexport interface PushProgress {\n\tphase: Phase;\n\tlayersTotal: number;\n\tblobsUploaded: number;\n\tblobsSkipped: number;\n\t/** Bytes of every blob the image references, as stored in the registry. Known once preparing ends. */\n\tbytesTotal: number;\n\tbytesSent: number;\n}\n\nexport interface PushResult {\n\tdigest: string;\n\tmediaType: string;\n\t/** Total size of config + layers in the registry. */\n\tsize: number;\n\tblobsUploaded: number;\n\tblobsSkipped: number;\n}\n\ninterface Descriptor {\n\tmediaType: string;\n\tdigest: string;\n\tsize: number;\n}\n\nexport class PushRefused extends Error {}\n\nfunction memberStream(fd: number, plan: BlobPlan): Readable {\n\tif (plan.member.size === 0) {\n\t\tconst empty = new PassThrough();\n\t\tempty.end();\n\t\treturn empty;\n\t}\n\treturn createReadStream(\"\", { fd, start: plan.member.offset, end: plan.member.offset + plan.member.size - 1, autoClose: false });\n}\n\nfunction gzipStream(fd: number, plan: BlobPlan): Readable {\n\tconst src = memberStream(fd, plan);\n\tconst gz = createGzip({ level: GZIP_LEVEL });\n\tsrc.on(\"error\", (e) => gz.destroy(e));\n\treturn src.pipe(gz);\n}\n\nasync function gzipDigest(fd: number, plan: BlobPlan): Promise<{ digest: string; size: number }> {\n\tconst hash = createHash(\"sha256\");\n\tlet size = 0;\n\tawait pipeline(\n\t\tgzipStream(fd, plan),\n\t\tnew Writable({\n\t\t\twrite(chunk: Buffer, _enc, cb) {\n\t\t\t\thash.update(chunk);\n\t\t\t\tsize += chunk.length;\n\t\t\t\tcb();\n\t\t\t}\n\t\t})\n\t);\n\treturn { digest: `sha256:${hash.digest(\"hex\")}`, size };\n}\n\nconst sha256 = (b: Buffer): string => `sha256:${createHash(\"sha256\").update(b).digest(\"hex\")}`;\n\nexport async function pushImage(\n\tregistry: Registry,\n\tfd: number,\n\tplan: ImagePlan,\n\ttag: string,\n\topts: { protectReleaseTags: boolean; onProgress?: (p: PushProgress) => void }\n): Promise<PushResult> {\n\tconst progress: PushProgress = { phase: \"preparing\", layersTotal: plan.layers.length, blobsUploaded: 0, blobsSkipped: 0, bytesTotal: 0, bytesSent: 0 };\n\tconst report = () => opts.onProgress?.({ ...progress });\n\treport();\n\n\tconst layers: Descriptor[] = [];\n\tfor (const l of plan.layers) {\n\t\tif (l.compress) {\n\t\t\tconst { digest, size } = await gzipDigest(fd, l);\n\t\t\tlayers.push({ mediaType: l.mediaType, digest, size });\n\t\t} else {\n\t\t\tlayers.push({ mediaType: l.mediaType, digest: l.sourceDigest ?? (await rawDigest(fd, l)), size: l.sourceSize });\n\t\t}\n\t}\n\tconst config: Descriptor = { mediaType: plan.config.mediaType, digest: plan.config.digest, size: plan.config.sourceSize };\n\tprogress.bytesTotal = config.size + layers.reduce((n, d) => n + d.size, 0);\n\tprogress.phase = \"uploading\";\n\treport();\n\n\tconst blobs: Array<{ desc: Descriptor; plan: BlobPlan }> = [{ desc: config, plan: plan.config }, ...layers.map((desc, i) => ({ desc, plan: plan.layers[i]! }))];\n\tconst seen = new Set<string>();\n\tfor (const { desc, plan: p } of blobs) {\n\t\tif (seen.has(desc.digest) || (await registry.blobExists(desc.digest))) {\n\t\t\tseen.add(desc.digest);\n\t\t\tprogress.blobsSkipped++;\n\t\t\treport();\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(desc.digest);\n\t\tawait registry.uploadBlob(desc.digest, desc.size, () => (p.compress ? gzipStream(fd, p) : memberStream(fd, p)), (n) => {\n\t\t\tprogress.bytesSent += n;\n\t\t\treport();\n\t\t});\n\t\tprogress.blobsUploaded++;\n\t\treport();\n\t}\n\n\tprogress.phase = \"manifest\";\n\treport();\n\tlet bytes: Buffer;\n\tlet mediaType: string;\n\tif (plan.verbatimManifest) {\n\t\tbytes = plan.verbatimManifest.bytes;\n\t\tmediaType = plan.verbatimManifest.mediaType;\n\t} else {\n\t\tmediaType = MEDIA.ociManifest;\n\t\tconst cfg = { ...config, mediaType: config.mediaType === MEDIA.dockerConfig ? MEDIA.ociConfig : config.mediaType };\n\t\tbytes = Buffer.from(\n\t\t\tJSON.stringify({\n\t\t\t\tschemaVersion: 2,\n\t\t\t\tmediaType,\n\t\t\t\tconfig: cfg,\n\t\t\t\tlayers: layers.map((l) => ({ ...l, mediaType: l.mediaType === MEDIA.dockerLayerGzip ? MEDIA.ociLayerGzip : l.mediaType })),\n\t\t\t\t...(plan.annotations ? { annotations: plan.annotations } : {})\n\t\t\t})\n\t\t);\n\t}\n\tif (opts.protectReleaseTags && RELEASE_TAG.test(tag) && (await registry.manifestExists(tag))) {\n\t\tthrow new PushRefused(`ghcr_push: tag ${tag} already exists on ${registry.repository} and release tags are protected \u2014 push a new version instead`);\n\t}\n\tawait registry.putManifest(tag, mediaType, bytes);\n\tprogress.phase = \"done\";\n\treport();\n\treturn { digest: sha256(bytes), mediaType, size: progress.bytesTotal, blobsUploaded: progress.blobsUploaded, blobsSkipped: progress.blobsSkipped };\n}\n\n/** sha256 of a member streamed from the archive (docker-archive layers that are already compressed). */\nasync function rawDigest(fd: number, plan: BlobPlan): Promise<string> {\n\tconst hash = createHash(\"sha256\");\n\tawait pipeline(\n\t\tmemberStream(fd, plan),\n\t\tnew Writable({\n\t\t\twrite(chunk: Buffer, _enc, cb) {\n\t\t\t\thash.update(chunk);\n\t\t\t\tcb();\n\t\t\t}\n\t\t})\n\t);\n\treturn `sha256:${hash.digest(\"hex\")}`;\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/ghcr/jobs.ts\n *\t@Date: 2026-10-31T11:08:29-07:00 (1793470109)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T11:13:29-07:00 (1793470409)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * In-memory queue for GHCR push jobs.\n *\n * Images are 1\u20133 GB, far longer than one MCP call should block, so `ghcr_push` enqueues a\n * job and returns its id; `ghcr_push_status` reads it back. Jobs run one at a time (a\n * push saturates the uplink; two at once only make both slower) in submission order.\n *\n * Bounded on purpose: at most `maxPending` queued-or-running jobs (each holds an open\n * archive descriptor), and only the newest `keepFinished` finished jobs are remembered.\n * State lives in memory only, so a broker restart forgets every job; a push that was\n * running is simply not completed (the registry discards an unfinished upload, and no\n * tag moves until the final manifest PUT).\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport type { PushProgress, PushResult } from \"./push.ts\";\n\nexport type JobState = \"queued\" | \"running\" | \"succeeded\" | \"failed\";\n\nexport interface JobMeta {\n\towner: string;\n\t/** e.g. \"ghcr.io/cldmv/hoot\" */\n\timage: string;\n\ttag: string;\n\tarchive: string;\n\tarchiveBytes: number;\n\tformat: string;\n}\n\nexport interface Job extends JobMeta {\n\tjob: string;\n\tstate: JobState;\n\tprogress?: PushProgress;\n\tresult?: PushResult;\n\terror?: string;\n\tcreatedAt: string;\n\tstartedAt?: string;\n\tfinishedAt?: string;\n}\n\nexport interface JobHooks {\n\t/** Does the work. Report progress through `progress`; resolve with the result or throw. */\n\trun(progress: (p: PushProgress) => void): Promise<PushResult>;\n\t/** Always called once the job ends (success, failure, or never started). */\n\tfinally?(job: Job): void;\n\t/** Turns a thrown error into the message stored on the job (must already be secret-free). */\n\tdescribeError?(err: unknown): string;\n}\n\nexport class QueueFull extends Error {}\n\nexport class JobQueue {\n\tprivate readonly jobs = new Map<string, Job>();\n\tprivate readonly pending: Array<{ job: Job; hooks: JobHooks }> = [];\n\tprivate running = false;\n\tprivate readonly maxPending: number;\n\tprivate readonly keepFinished: number;\n\n\tconstructor({ maxPending = 8, keepFinished = 50 }: { maxPending?: number; keepFinished?: number } = {}) {\n\t\tthis.maxPending = maxPending;\n\t\tthis.keepFinished = keepFinished;\n\t}\n\n\t/** Queued + running jobs. */\n\tactiveCount(): number {\n\t\treturn this.pending.length + (this.running ? 1 : 0);\n\t}\n\n\tsubmit(meta: JobMeta, hooks: JobHooks): Job {\n\t\tif (this.activeCount() >= this.maxPending) throw new QueueFull(`ghcr_push: ${this.activeCount()} pushes are already queued or running \u2014 wait for one to finish (ghcr_push_status)`);\n\t\tconst job: Job = { ...meta, job: randomUUID(), state: \"queued\", createdAt: new Date().toISOString() };\n\t\tthis.jobs.set(job.job, job);\n\t\tthis.pending.push({ job, hooks });\n\t\tconst snapshot = { ...job }; // as submitted, before pump() may flip it to running\n\t\tvoid this.pump();\n\t\treturn snapshot;\n\t}\n\n\tget(id: string): Job | undefined {\n\t\tconst j = this.jobs.get(id);\n\t\treturn j ? structuredClone(j) : undefined;\n\t}\n\n\tlist(owner: string): Job[] {\n\t\treturn [...this.jobs.values()].filter((j) => j.owner === owner).map((j) => structuredClone(j));\n\t}\n\n\t/** Resolves once nothing is queued or running (for tests and orderly shutdown). */\n\tasync idle(): Promise<void> {\n\t\twhile (this.activeCount() > 0) await new Promise((r) => setTimeout(r, 5));\n\t}\n\n\tprivate async pump(): Promise<void> {\n\t\tif (this.running) return;\n\t\tconst next = this.pending.shift();\n\t\tif (!next) return;\n\t\tthis.running = true;\n\t\tconst { job, hooks } = next;\n\t\tjob.state = \"running\";\n\t\tjob.startedAt = new Date().toISOString();\n\t\ttry {\n\t\t\tjob.result = await hooks.run((p) => {\n\t\t\t\tjob.progress = p;\n\t\t\t});\n\t\t\tjob.state = \"succeeded\";\n\t\t} catch (err) {\n\t\t\tjob.state = \"failed\";\n\t\t\tjob.error = hooks.describeError ? hooks.describeError(err) : \"push failed\";\n\t\t} finally {\n\t\t\tjob.finishedAt = new Date().toISOString();\n\t\t\ttry {\n\t\t\t\thooks.finally?.(structuredClone(job));\n\t\t\t} catch {\n\t\t\t\t/* a cleanup/audit hook must not wedge the queue */\n\t\t\t}\n\t\t\tthis.running = false;\n\t\t\tthis.prune();\n\t\t\tvoid this.pump();\n\t\t}\n\t}\n\n\tprivate prune(): void {\n\t\tconst finished = [...this.jobs.values()].filter((j) => j.state === \"succeeded\" || j.state === \"failed\");\n\t\tfor (const j of finished.slice(0, Math.max(0, finished.length - this.keepFinished))) this.jobs.delete(j.job);\n\t}\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/ghcr_push.ts\n *\t@Date: 2026-10-31T11:02:57-07:00 (1793469777)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T13:14:41-07:00 (1793477681)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Custom verbs: ghcr_push, ghcr_push_status, ghcr_tags \u2014 push container images to GHCR\n * (ghcr.io/<owner>/<image>) without the agent ever holding a registry credential.\n *\n * The agent writes a `docker save` archive into the drop directory and calls `ghcr_push`.\n * The broker checks the call against `config.ghcr` (owner configured, image on the owner's\n * allowlist, tag well-formed, archive really inside the drop directory, release tag not\n * already taken), exchanges the owner's classic PAT for a registry token, and pushes in a\n * background job. `ghcr_push_status` reports that job; `ghcr_tags` lists an allowlisted\n * image's tags so a push can be verified.\n *\n * What the verbs can't do, by construction: talk to any registry but ghcr.io, push outside\n * `ghcr.io/<owner>/<allowlisted image>`, delete anything, change visibility, or read a\n * file outside the drop directory. No result, error, audit line or log line carries the\n * PAT or the registry token (registry.ts `clean()`).\n *\n * The handlers are the real contract: the MCP server doesn't validate against the\n * advertised schemas, so every key and type is checked here before any network call.\n */\n\nimport type { SecretStore } from \"../types.ts\";\nimport { audit } from \"../audit.ts\";\nimport { imageAllowed, type GhcrConfig, type GhcrOwnerConfig } from \"./ghcr/config.ts\";\nimport { openArchive, planImage } from \"./ghcr/archive.ts\";\nimport { Registry, GHCR_BASE } from \"./ghcr/registry.ts\";\nimport { pushImage, RELEASE_TAG } from \"./ghcr/push.ts\";\nimport { JobQueue, type Job } from \"./ghcr/jobs.ts\";\n\n/** OCI repository path component; `/` separates components. */\nconst IMAGE = /^[a-z0-9]+(?:(?:\\.|_|__|-+)[a-z0-9]+)*(?:\\/[a-z0-9]+(?:(?:\\.|_|__|-+)[a-z0-9]+)*)*$/;\n/** OCI tag grammar. */\nconst TAG = /^[A-Za-z0-9_][A-Za-z0-9._-]{0,127}$/;\nconst JOB_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\n\nconst PUSH_KEYS = new Set([\"owner\", \"image\", \"tag\", \"archive\"]);\nconst STATUS_KEYS = new Set([\"owner\", \"job\"]);\nconst TAGS_KEYS = new Set([\"owner\", \"image\"]);\n\nexport interface GhcrPushInput {\n\towner: string;\n\timage: string;\n\ttag: string;\n\tarchive: string;\n}\nexport interface GhcrPushStatusInput {\n\towner: string;\n\tjob?: string;\n}\nexport interface GhcrTagsInput {\n\towner: string;\n\timage: string;\n}\n\nfunction strictArgs(verb: string, input: unknown, keys: Set<string>): Record<string, unknown> {\n\tif (typeof input !== \"object\" || input === null || Array.isArray(input)) throw new Error(`${verb}: arguments must be an object`);\n\tconst a = input as Record<string, unknown>;\n\tconst unknown = Object.keys(a).filter((k) => !keys.has(k));\n\tif (unknown.length) throw new Error(`${verb}: unknown argument(s): ${unknown.join(\", \")} \u2014 expected ${[...keys].join(\", \")}`);\n\tif (typeof a.owner !== \"string\" || !a.owner.trim()) throw new Error(`${verb}: \"owner\" must be a non-empty string`);\n\treturn a;\n}\n\nexport interface GhcrServiceOptions {\n\t/** Registry origin \u2014 tests only; production is always https://ghcr.io. */\n\tbase?: string;\n\tqueue?: JobQueue;\n}\n\nexport class GhcrService {\n\tprivate readonly cfg?: GhcrConfig;\n\tprivate readonly secrets: SecretStore;\n\tprivate readonly base: string;\n\treadonly queue: JobQueue;\n\n\tconstructor(cfg: GhcrConfig | undefined, secrets: SecretStore, opts: GhcrServiceOptions = {}) {\n\t\tthis.cfg = cfg;\n\t\tthis.secrets = secrets;\n\t\tthis.base = opts.base ?? GHCR_BASE;\n\t\tthis.queue = opts.queue ?? new JobQueue();\n\t}\n\n\tprivate config(verb: string): GhcrConfig {\n\t\tif (!this.cfg) throw new Error(`${verb}: GHCR is not configured \u2014 add a \"ghcr\" block to the config (see docs/TOOLS.md#ghcr_push)`);\n\t\treturn this.cfg;\n\t}\n\n\tprivate ownerConfig(verb: string, owner: string): GhcrOwnerConfig {\n\t\tconst o = this.config(verb).owners[owner.toLowerCase()];\n\t\tif (!o) throw new Error(`${verb}: owner \"${owner}\" has no GHCR configuration (config.ghcr.owners)`);\n\t\tif (!this.secrets.has(o.credential)) throw new Error(`${verb}: owner \"${owner}\"'s GHCR credential \"${o.credential.replace(/^cred:/, \"\")}\" is not stored (re-run the installer to add it)`);\n\t\treturn o;\n\t}\n\n\tprivate image(verb: string, owner: string, oc: GhcrOwnerConfig, raw: unknown): string {\n\t\tif (typeof raw !== \"string\" || !raw) throw new Error(`${verb}: \"image\" must be a non-empty string`);\n\t\tconst lower = raw.toLowerCase();\n\t\tif (lower.startsWith(\"ghcr.io/\") || lower.startsWith(`${owner}/`)) {\n\t\t\tthrow new Error(`${verb}: \"image\" is the name under ghcr.io/${owner}/ \u2014 pass e.g. \"hoot\", not \"${raw}\"`);\n\t\t}\n\t\tif (!IMAGE.test(raw) || raw.length + owner.length + 1 > 255) throw new Error(`${verb}: \"image\" \"${raw}\" is not a valid image name (lowercase [a-z0-9], separators . _ __ -, \"/\" between segments)`);\n\t\tif (!imageAllowed(oc, raw)) throw new Error(`${verb}: ghcr.io/${owner}/${raw} is not on the allowlist (config.ghcr.owners.${owner}.images: ${oc.images.join(\", \")})`);\n\t\treturn raw;\n\t}\n\n\tprivate registry(owner: string, oc: GhcrOwnerConfig, image: string): Registry {\n\t\treturn new Registry({ base: this.base, username: oc.username, password: this.secrets.resolve(oc.credential), repository: `${owner}/${image}` });\n\t}\n\n\tasync push(input: unknown): Promise<Omit<Job, \"progress\" | \"result\">> {\n\t\tconst verb = \"ghcr_push\";\n\t\tconst a = strictArgs(verb, input, PUSH_KEYS);\n\t\tconst owner = (a.owner as string).toLowerCase();\n\t\tconst cfg = this.config(verb);\n\t\tconst oc = this.ownerConfig(verb, owner);\n\t\tconst image = this.image(verb, owner, oc, a.image);\n\t\tif (typeof a.tag !== \"string\" || !TAG.test(a.tag)) throw new Error(`${verb}: \"tag\" must be a valid tag ([A-Za-z0-9_][A-Za-z0-9._-]{0,127})`);\n\t\tconst tag = a.tag;\n\n\t\tconst archive = openArchive(a.archive, cfg.dropDir, cfg.maxArchiveBytes);\n\t\tlet handedOff = false;\n\t\tlet registry: Registry | undefined;\n\t\ttry {\n\t\t\tconst plan = planImage(archive.fd, archive.size);\n\t\t\tregistry = this.registry(owner, oc, image);\n\t\t\tconst ref = `${registry.host}/${owner}/${image}`;\n\t\t\t// First network calls: proves the credential can push here, and refuses a taken release tag\n\t\t\t// before the job is queued (push.ts re-checks right before the manifest PUT).\n\t\t\tawait registry.login(\"push,pull\");\n\t\t\tif (cfg.protectReleaseTags && RELEASE_TAG.test(tag) && (await registry.manifestExists(tag))) {\n\t\t\t\tthrow new Error(`${verb}: tag ${tag} already exists on ${ref} and release tags are protected \u2014 push a new version instead`);\n\t\t\t}\n\n\t\t\tconst reg = registry;\n\t\t\tconst job = this.queue.submit(\n\t\t\t\t{ owner, image: ref, tag, archive: archive.path, archiveBytes: archive.size, format: plan.format },\n\t\t\t\t{\n\t\t\t\t\trun: (progress) => pushImage(reg, archive.fd, plan, tag, { protectReleaseTags: cfg.protectReleaseTags, onProgress: progress }),\n\t\t\t\t\tdescribeError: (err) => reg.clean((err as Error)?.message ?? String(err)),\n\t\t\t\t\tfinally: (done) => {\n\t\t\t\t\t\tarchive.close();\n\t\t\t\t\t\taudit({\n\t\t\t\t\t\t\ttool: verb,\n\t\t\t\t\t\t\towner,\n\t\t\t\t\t\t\tmode: \"write\",\n\t\t\t\t\t\t\trepo: ref,\n\t\t\t\t\t\t\tdecision: \"custom\",\n\t\t\t\t\t\t\tok: done.state === \"succeeded\",\n\t\t\t\t\t\t\tdetail:\n\t\t\t\t\t\t\t\tdone.state === \"succeeded\"\n\t\t\t\t\t\t\t\t\t? `job=${done.job} tag=${tag} digest=${done.result?.digest} size=${done.result?.size} uploaded=${done.result?.blobsUploaded} skipped=${done.result?.blobsSkipped} archive=${archive.path}`\n\t\t\t\t\t\t\t\t\t: `job=${done.job} tag=${tag} archive=${archive.path} error=${done.error}`\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\thandedOff = true;\n\t\t\taudit({ tool: verb, owner, mode: \"write\", repo: ref, decision: \"custom\", ok: true, detail: `job=${job.job} queued tag=${tag} archive=${archive.path} bytes=${archive.size} format=${plan.format} layers=${plan.layers.length}` });\n\t\t\treturn { ...job };\n\t\t} catch (err) {\n\t\t\t// Anything thrown before hand-off may come from the registry: scrub it like a job error.\n\t\t\tif (!registry) throw err; // archive/plan errors carry no secret\n\t\t\tthrow new Error(registry.clean((err as Error)?.message ?? String(err)));\n\t\t} finally {\n\t\t\tif (!handedOff) archive.close();\n\t\t}\n\t}\n\n\tstatus(input: unknown): Job | { jobs: Job[] } {\n\t\tconst verb = \"ghcr_push_status\";\n\t\tconst a = strictArgs(verb, input, STATUS_KEYS);\n\t\tconst owner = (a.owner as string).toLowerCase();\n\t\tthis.ownerConfig(verb, owner);\n\t\tif (a.job === undefined) return { jobs: this.queue.list(owner) };\n\t\tif (typeof a.job !== \"string\" || !JOB_ID.test(a.job)) throw new Error(`${verb}: \"job\" must be a job id returned by ghcr_push`);\n\t\tconst job = this.queue.get(a.job);\n\t\t// A job of another owner reads as unknown: status never crosses owners.\n\t\tif (!job || job.owner !== owner) throw new Error(`${verb}: no job ${a.job} for owner ${owner} (jobs are kept in memory; a broker restart forgets them)`);\n\t\treturn job;\n\t}\n\n\tasync tags(input: unknown): Promise<{ image: string; exists: boolean; tags: string[] }> {\n\t\tconst verb = \"ghcr_tags\";\n\t\tconst a = strictArgs(verb, input, TAGS_KEYS);\n\t\tconst owner = (a.owner as string).toLowerCase();\n\t\tconst oc = this.ownerConfig(verb, owner);\n\t\tconst image = this.image(verb, owner, oc, a.image);\n\t\tconst registry = this.registry(owner, oc, image);\n\t\ttry {\n\t\t\tawait registry.login(\"pull\");\n\t\t\tconst tags = await registry.listTags();\n\t\t\treturn { image: `${registry.host}/${owner}/${image}`, exists: tags !== undefined, tags: tags ?? [] };\n\t\t} catch (err) {\n\t\t\tthrow new Error(registry.clean((err as Error)?.message ?? String(err)));\n\t\t}\n\t}\n}\n\nconst owner = { type: \"string\", description: \"registry owner (org/user login) \u2014 must be configured in config.ghcr.owners\" };\nconst image = { type: \"string\", description: 'image name under ghcr.io/<owner>/, e.g. \"hoot\" \u2014 must match config.ghcr.owners.<owner>.images' };\n\nexport const GHCR_PUSH_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\", \"image\", \"tag\", \"archive\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner,\n\t\timage,\n\t\ttag: { type: \"string\", pattern: \"^[A-Za-z0-9_][A-Za-z0-9._-]{0,127}$\", description: \"tag to push, e.g. \\\"1.4.0\\\" or \\\"latest\\\"\" },\n\t\tarchive: {\n\t\t\ttype: \"string\",\n\t\t\tdescription: \"a `docker save` archive (docker-archive or OCI layout) inside the configured drop directory \u2014 absolute, or relative to it. Must be a regular, group-readable file; symlinks and hard links are refused.\"\n\t\t}\n\t}\n};\n\nexport const GHCR_PUSH_STATUS_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner,\n\t\tjob: { type: \"string\", description: \"job id returned by ghcr_push; omit to list this owner's recent jobs\" }\n\t}\n};\n\nexport const GHCR_TAGS_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\", \"image\"],\n\tadditionalProperties: false,\n\tproperties: { owner, image }\n};\n\n/** Advertised description + schema per GHCR verb, keyed by tool name (catalog.ts). */\nexport const GHCR_CATALOG: Record<string, { description: string; inputSchema: { type: \"object\"; [k: string]: unknown } }> = {\n\tghcr_push: {\n\t\tdescription:\n\t\t\t\"Push a container image to ghcr.io/<owner>/<image>:<tag> from a `docker save` archive in the broker's drop directory, without holding a registry token. The image must be on config.ghcr's allowlist; an existing release tag (1.2.3 / v1.2.3) is never overwritten while protectReleaseTags is on. Starts a background job and returns its id at once \u2014 poll ghcr_push_status. Runs on the owner's GHCR credential (classic PAT, write:packages).\",\n\t\tinputSchema: GHCR_PUSH_SCHEMA\n\t},\n\tghcr_push_status: {\n\t\tdescription:\n\t\t\t\"Progress of a ghcr_push job (phase, blobs uploaded/skipped, bytes sent), then its final manifest digest or error. Omit job to list this owner's recent jobs. Jobs are kept in memory; a broker restart forgets them.\",\n\t\tinputSchema: GHCR_PUSH_STATUS_SCHEMA\n\t},\n\tghcr_tags: {\n\t\tdescription: \"List the tags of an allowlisted image on ghcr.io/<owner>/<image>, e.g. to verify a push landed. Runs on the owner's GHCR credential (pull scope).\",\n\t\tinputSchema: GHCR_TAGS_SCHEMA\n\t}\n};\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/router.ts\n *\t@Date: 2026-07-07T00:24:51-07:00 (1783409091)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T12:12:11-07:00 (1793473931)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport type { CallToolResult } from \"@modelcontextprotocol/sdk/types.js\";\nimport type { Config, SecretStore, ToolRule } from \"./types.ts\";\nimport type { AppAuth } from \"./appauth.ts\";\nimport { Octokit } from \"@octokit/core\";\nimport { indexTools } from \"./config.ts\";\nimport { audit } from \"./audit.ts\";\nimport { unavailableReason } from \"./availability.ts\";\n// DEFERRED: link_issue is App-token-only and not wired in \u2014 see docs.\n// import { linkIssue, type LinkIssueInput } from \"./verbs/link_issue.ts\";\nimport {\n\tresolveReviewThread,\n\treplyReviewThread,\n\ttype ResolveReviewThreadInput,\n\ttype ReplyReviewThreadInput\n} from \"./verbs/review_thread.ts\";\nimport { reportUnlabeled, type ReportUnlabeledInput } from \"./verbs/report_unlabeled.ts\";\nimport { reportSecurityAlerts, type ReportSecurityAlertsInput } from \"./verbs/report_security_alerts.ts\";\nimport { reportReleasePrs, type ReportReleasePrsInput } from \"./verbs/report_release_prs.ts\";\nimport { issueLabels, type IssueLabelsInput } from \"./verbs/issue_labels.ts\";\nimport { reportCiStatus, ciStatusForHeadSha, type ReportCiStatusInput, type FailedJobLogsFetcher } from \"./verbs/report_ci_status.ts\";\nimport { npmScaffold } from \"./verbs/npm_scaffold.ts\";\nimport { NpmRegistry } from \"./verbs/npm-registry.ts\";\nimport { GhcrService } from \"./verbs/ghcr_push.ts\";\n\nconst GHCR_TOOLS = new Set([\"ghcr_push\", \"ghcr_push_status\", \"ghcr_tags\"]);\n\n/** What the router needs from the upstream (hosted-MCP) client pool. */\nexport interface Upstream {\n\tforward(tool: string, args: Record<string, unknown>, token: string): Promise<CallToolResult>;\n}\n\n/**\n * Enforces the default-deny allowlist, resolves the (owner, mode) \u2192 PAT, and either\n * forwards to the hosted MCP or dispatches a custom verb. The token never leaves here.\n */\nexport class Router {\n\tprivate readonly config: Config;\n\tprivate readonly secrets: SecretStore;\n\tprivate readonly upstream: Upstream;\n\tprivate readonly appAuth?: AppAuth;\n\tprivate readonly rules: Map<string, ToolRule>;\n\t/** GHCR verbs run on config.ghcr's own credential, not the owner's GitHub PAT (created on first use). */\n\tprivate ghcr?: GhcrService;\n\n\tconstructor(config: Config, secrets: SecretStore, upstream: Upstream, appAuth?: AppAuth) {\n\t\tthis.config = config;\n\t\tthis.secrets = secrets;\n\t\tthis.upstream = upstream;\n\t\tthis.appAuth = appAuth;\n\t\tthis.rules = indexTools(config.tools);\n\t}\n\n\t/** Tools advertised to the agent (used to build tools/list). */\n\tadvertisedTools(): ToolRule[] {\n\t\treturn this.config.tools.filter((rule) => !unavailableReason(rule, this.config, this.secrets));\n\t}\n\n\tasync call(tool: string, args: Record<string, unknown>): Promise<CallToolResult> {\n\t\tconst rule = this.rules.get(tool);\n\t\tif (!rule) {\n\t\t\taudit({ tool, decision: \"deny\", detail: \"not in allowlist\" });\n\t\t\tthrow new Error(`tool \"${tool}\" is not allowed`);\n\t\t}\n\t\t// An optional integration that isn't set up hides its tools: refuse them the same way.\n\t\tconst unavailable = unavailableReason(rule, this.config, this.secrets);\n\t\tif (unavailable) {\n\t\t\taudit({ tool, decision: \"deny\", detail: `unavailable: ${unavailable}` });\n\t\t\tthrow new Error(`tool \"${tool}\" is not available on this broker: ${unavailable}`);\n\t\t}\n\t\t// The GHCR verbs authenticate with config.ghcr's own credential, never an owner's GitHub\n\t\t// PAT, so they don't need (or touch) a config.owners entry.\n\t\tif (GHCR_TOOLS.has(tool)) return this.callGhcr(tool, args, rule);\n\t\t// Owner-less reads (global advisory DB, get_me, notifications) fall back to\n\t\t// the configured defaultOwner's READ PAT. Writes never fall back \u2014 a write\n\t\t// must always name the owner it targets.\n\t\tlet owner = extractOwner(args);\n\t\tif (!owner && rule.mode === \"read\" && this.config.defaultOwner && this.config.owners[this.config.defaultOwner]) {\n\t\t\towner = this.config.defaultOwner.toLowerCase();\n\t\t}\n\t\tif (!owner) {\n\t\t\taudit({ tool, decision: \"error\", detail: \"no owner in args\" });\n\t\t\tthrow new Error(`tool \"${tool}\": could not determine repo owner from arguments`);\n\t\t}\n\t\tconst creds = this.config.owners[owner];\n\t\tif (!creds) {\n\t\t\taudit({ tool, owner, decision: \"error\", detail: \"no creds for owner\" });\n\t\t\tthrow new Error(`no credentials configured for owner \"${owner}\" \u2014 add it to config.owners + creds`);\n\t\t}\n\t\tconst token = this.secrets.resolve(rule.mode === \"write\" ? creds.write : creds.read);\n\t\tconst repo = typeof args.repo === \"string\" ? `${owner}/${args.repo}` : owner;\n\n\t\tconst decision = rule.custom ? \"custom\" : rule.augment ? \"augment\" : \"forward\";\n\t\ttry {\n\t\t\tconst out = rule.custom\n\t\t\t\t? await this.dispatchCustom(tool, args, owner, token)\n\t\t\t\t: rule.augment\n\t\t\t\t\t? await this.dispatchAugmented(tool, args, owner, token)\n\t\t\t\t\t: await this.upstream.forward(tool, args, token);\n\t\t\taudit({ tool, owner, mode: rule.mode, repo, decision, ok: true });\n\t\t\treturn out;\n\t\t} catch (err) {\n\t\t\taudit({ tool, owner, mode: rule.mode, repo, decision, ok: false, detail: (err as Error).message });\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\t/** GHCR verbs: config.ghcr checks the owner and image itself; no GitHub PAT is resolved. */\n\tprivate async callGhcr(tool: string, args: Record<string, unknown>, rule: ToolRule): Promise<CallToolResult> {\n\t\tconst owner = extractOwner(args) ?? \"\";\n\t\tconst repo = typeof args.image === \"string\" ? `${owner}/${args.image}` : owner;\n\t\ttry {\n\t\t\tthis.ghcr ??= new GhcrService(this.config.ghcr, this.secrets);\n\t\t\tconst out = tool === \"ghcr_push\" ? await this.ghcr.push(args) : tool === \"ghcr_tags\" ? await this.ghcr.tags(args) : this.ghcr.status(args);\n\t\t\taudit({ tool, owner, mode: rule.mode, repo, decision: \"custom\", ok: true });\n\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(out) }] };\n\t\t} catch (err) {\n\t\t\taudit({ tool, owner, mode: rule.mode, repo, decision: \"custom\", ok: false, detail: (err as Error).message });\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tprivate async dispatchCustom(\n\t\ttool: string,\n\t\targs: Record<string, unknown>,\n\t\towner: string,\n\t\ttoken: string\n\t): Promise<CallToolResult> {\n\t\tswitch (tool) {\n\t\t\t// DEFERRED: link_issue (App-token-only addClosingIssueReference) is not wired in \u2014 see docs.\n\t\t\t// Re-enable by restoring this case + the import above + the catalog block, adding a\n\t\t\t// link_issue allowlist entry to config, and configuring config.app + owner installationId.\n\t\t\t// case \"link_issue\": {\n\t\t\t// \tconst octokit = this.appAuth?.octokitFor(owner);\n\t\t\t// \tif (!octokit) {\n\t\t\t// \t\tthrow new Error(`link_issue needs a GitHub App for \"${owner}\": set config.app + owners.${owner}.installationId + the app key cred (addClosingIssueReference is App-token-only \u2014 not available to fine-grained PATs)`);\n\t\t\t// \t}\n\t\t\t// \tconst out = await linkIssue(octokit, args as unknown as LinkIssueInput);\n\t\t\t// \treturn { content: [{ type: \"text\", text: `linked: PR ${out.pullRequestId} \u2192 issue ${out.issueId}` }] };\n\t\t\t// }\n\t\t\tcase \"resolve_review_thread\": {\n\t\t\t\t// PAT-usable (Pull requests: write) \u2014 run on the resolved write PAT, not the App token.\n\t\t\t\tconst octokit = new Octokit({ auth: token });\n\t\t\t\tconst out = await resolveReviewThread(octokit, args as unknown as ResolveReviewThreadInput);\n\t\t\t\treturn { content: [{ type: \"text\", text: `thread ${out.threadId}: isResolved=${out.isResolved}` }] };\n\t\t\t}\n\t\t\tcase \"reply_review_thread\": {\n\t\t\t\tconst octokit = new Octokit({ auth: token });\n\t\t\t\tconst out = await replyReviewThread(octokit, args as unknown as ReplyReviewThreadInput);\n\t\t\t\treturn { content: [{ type: \"text\", text: `replied: ${out.url}` }] };\n\t\t\t}\n\t\t\tcase \"issue_labels\": {\n\t\t\t\t// Per-label REST endpoints (Issues: write) on the resolved write PAT.\n\t\t\t\tconst octokit = new Octokit({ auth: token });\n\t\t\t\tconst out = await issueLabels(octokit, args as unknown as IssueLabelsInput);\n\t\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(out) }] };\n\t\t\t}\n\t\t\tcase \"report_unlabeled\": {\n\t\t\t\tconst octokit = new Octokit({ auth: token });\n\t\t\t\tconst out = await reportUnlabeled(octokit, args as unknown as ReportUnlabeledInput);\n\t\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(out) }] };\n\t\t\t}\n\t\t\tcase \"report_security_alerts\": {\n\t\t\t\tconst octokit = new Octokit({ auth: token });\n\t\t\t\tconst out = await reportSecurityAlerts(octokit, args as unknown as ReportSecurityAlertsInput);\n\t\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(out) }] };\n\t\t\t}\n\t\t\tcase \"report_release_prs\": {\n\t\t\t\tconst octokit = new Octokit({ auth: token });\n\t\t\t\tconst out = await reportReleasePrs(octokit, args as unknown as ReportReleasePrsInput);\n\t\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(out) }] };\n\t\t\t}\n\t\t\tcase \"report_ci_status\": {\n\t\t\t\tconst octokit = new Octokit({ auth: token });\n\t\t\t\tconst reportArgs = args as unknown as ReportCiStatusInput;\n\t\t\t\tconst out = await reportCiStatus(octokit, reportArgs, this.makeJobLogsFetcher(owner, reportArgs.repo, token));\n\t\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(out) }] };\n\t\t\t}\n\t\t\tcase \"npm_scaffold\": {\n\t\t\t\tconst npm = this.config.npm!; // availability already required it\n\t\t\t\t// The GitHub side only reads (repo metadata, package.json, workflow file), so it\n\t\t\t\t// runs on the read PAT even though the verb is a write.\n\t\t\t\tconst octokit = new Octokit({ auth: this.secrets.resolve(this.config.owners[owner]!.read) });\n\t\t\t\tconst registry = new NpmRegistry({ token: this.secrets.resolve(npm.token), ...(npm.registry ? { registry: npm.registry } : {}) });\n\t\t\t\tconst out = await npmScaffold(args, { octokit, registry, scopes: npm.scopes });\n\t\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(out) }] };\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`custom verb \"${tool}\" not implemented`);\n\t\t}\n\t}\n\n\t/**\n\t * A failing-run's job logs, via the hosted MCP's own `get_job_logs` tool\n\t * (`failed_only: true` fetches every failing job in the run in one call) rather\n\t * than a hand-rolled REST call \u2014 see report_ci_status.ts's FailedJobLogsFetcher\n\t * doc comment for why. Best-effort: any failure here (bad shape, upstream error)\n\t * just yields an empty map \u2014 report_ci_status treats a lookup miss as \"no\n\t * logTail for this job\", never a hard failure of the whole report.\n\t */\n\tprivate makeJobLogsFetcher(owner: string, repo: string, token: string): FailedJobLogsFetcher {\n\t\treturn async (runId, tailLines) => {\n\t\t\tconst map = new Map<number, string>();\n\t\t\ttry {\n\t\t\t\tconst result = await this.upstream.forward(\"get_job_logs\", { owner, repo, run_id: runId, failed_only: true, return_content: true, tail_lines: tailLines }, token);\n\t\t\t\tconst textBlock = result.content?.find((c) => (c as { type?: string }).type === \"text\") as { text?: string } | undefined;\n\t\t\t\tif (!textBlock?.text) return map;\n\t\t\t\tconst parsed = JSON.parse(textBlock.text) as { logs?: Array<{ job_id?: unknown; logs_content?: unknown }> };\n\t\t\t\tfor (const entry of parsed.logs ?? []) {\n\t\t\t\t\tif (typeof entry.job_id === \"number\" && typeof entry.logs_content === \"string\") map.set(entry.job_id, entry.logs_content);\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t/* best-effort \u2014 see doc comment */\n\t\t\t}\n\t\t\treturn map;\n\t\t};\n\t}\n\n\t/**\n\t * Forwards to the hosted MCP like a plain proxy, then post-processes the result.\n\t * gh-broker presents its own MCP contract \u2014 a proxied tool's response is not\n\t * required to match the hosted MCP's shape verbatim (see [[broker-owns-its-mcp-contract]]\n\t * in project memory). `ciVerbosity`/`logLines` are gh-broker's own extension\n\t * params, stripped before forwarding since the upstream schema doesn't know them.\n\t *\n\t * Opt-in only: with no `ciVerbosity`, this is byte-identical to a plain forward \u2014\n\t * augmenting every `pull_request_read` call by default would add an unrequested\n\t * API call (and cost) to every ordinary PR read.\n\t *\n\t * Best-effort: if the upstream response isn't the JSON-text shape expected (a\n\t * format this broker doesn't control), the original result is returned unmodified\n\t * rather than thrown \u2014 a shape mismatch should degrade to \"no CI data added,\" not\n\t * break an otherwise-successful PR read.\n\t */\n\tprivate async dispatchAugmented(tool: string, args: Record<string, unknown>, owner: string, token: string): Promise<CallToolResult> {\n\t\tswitch (tool) {\n\t\t\tcase \"pull_request_read\": {\n\t\t\t\tconst { ciVerbosity, logLines, ...upstreamArgs } = args as Record<string, unknown> & { ciVerbosity?: number; logLines?: number };\n\t\t\t\tconst result = await this.upstream.forward(tool, upstreamArgs, token);\n\t\t\t\tif (ciVerbosity === undefined) return result;\n\t\t\t\tif ((upstreamArgs.method ?? \"get\") !== \"get\") return result; // only the single-PR \"get\" shape is augmentable\n\n\t\t\t\tconst textBlock = result.content?.find((c) => (c as { type?: string }).type === \"text\") as { text?: string } | undefined;\n\t\t\t\tif (!textBlock?.text) return result;\n\t\t\t\tlet pr: unknown;\n\t\t\t\ttry {\n\t\t\t\t\tpr = JSON.parse(textBlock.text);\n\t\t\t\t} catch {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tconst p = pr as { number?: unknown; head?: { sha?: unknown } };\n\t\t\t\tif (typeof p.number !== \"number\" || typeof p.head?.sha !== \"string\") return result;\n\n\t\t\t\tconst repo = String(upstreamArgs.repo ?? \"\");\n\t\t\t\tconst octokit = new Octokit({ auth: token });\n\t\t\t\tconst ci = await ciStatusForHeadSha(octokit, owner, repo, p.number, p.head.sha, {\n\t\t\t\t\tverbosity: Number(ciVerbosity),\n\t\t\t\t\tlogLines: logLines !== undefined ? Number(logLines) : undefined,\n\t\t\t\t\tfetchFailedJobLogs: this.makeJobLogsFetcher(owner, repo, token)\n\t\t\t\t});\n\t\t\t\ttextBlock.text = JSON.stringify({ ...(pr as object), ci });\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn this.upstream.forward(tool, args, token);\n\t\t}\n\t}\n}\n\n/** Derive the repo owner from a tool call's arguments, so we pick the right PAT. */\nexport function extractOwner(args: Record<string, unknown>): string | undefined {\n\tif (typeof args.owner === \"string\" && args.owner) return args.owner.toLowerCase();\n\t// Many org-scoped tools (list_org_repository_security_advisories, get_team_members, \u2026)\n\t// name the org as `org` rather than `owner`; for routing, org === owner.\n\tif (typeof args.org === \"string\" && args.org) return args.org.toLowerCase();\n\tif (typeof args.query === \"string\") {\n\t\tconst m = args.query.match(/\\brepo:([^/\\s]+)\\/[^\\s]+|\\b(?:org|user):([^\\s]+)/i);\n\t\tconst hit = m?.[1] ?? m?.[2];\n\t\tif (hit) return hit.toLowerCase();\n\t}\n\tif (typeof args.repository === \"string\" && args.repository.includes(\"/\")) {\n\t\treturn args.repository.split(\"/\")[0]?.toLowerCase();\n\t}\n\treturn undefined;\n}\n", "// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/get-web-flow-authorization-url.js\nimport { oauthAuthorizationUrl } from \"@octokit/oauth-authorization-url\";\nimport { request as defaultRequest } from \"@octokit/request\";\n\n// pkg/dist-src/utils.js\nimport { RequestError } from \"@octokit/request-error\";\nfunction requestToOAuthBaseUrl(request) {\n const endpointDefaults = request.endpoint.DEFAULTS;\n if (/^https:\\/\\/(api\\.)?github\\.com$/.test(endpointDefaults.baseUrl)) {\n return \"https://github.com\";\n }\n if (/^https:\\/\\/api\\..*\\.ghe\\.com$/.test(endpointDefaults.baseUrl)) {\n return endpointDefaults.baseUrl.replace(\"api.\", \"\");\n }\n return endpointDefaults.baseUrl.replace(\"/api/v3\", \"\");\n}\nasync function oauthRequest(request, route, parameters) {\n const withOAuthParameters = {\n baseUrl: requestToOAuthBaseUrl(request),\n headers: {\n accept: \"application/json\"\n },\n ...parameters\n };\n const response = await request(route, withOAuthParameters);\n if (\"error\" in response.data) {\n const error = new RequestError(\n `${response.data.error_description} (${response.data.error}, ${response.data.error_uri})`,\n 400,\n {\n request: request.endpoint.merge(\n route,\n withOAuthParameters\n )\n }\n );\n error.response = response;\n throw error;\n }\n return response;\n}\n\n// pkg/dist-src/get-web-flow-authorization-url.js\nfunction getWebFlowAuthorizationUrl({\n request = defaultRequest,\n ...options\n}) {\n const baseUrl = requestToOAuthBaseUrl(request);\n return oauthAuthorizationUrl({\n ...options,\n baseUrl\n });\n}\n\n// pkg/dist-src/exchange-web-flow-code.js\nimport { request as defaultRequest2 } from \"@octokit/request\";\nasync function exchangeWebFlowCode(options) {\n const request = options.request || defaultRequest2;\n const response = await oauthRequest(\n request,\n \"POST /login/oauth/access_token\",\n {\n client_id: options.clientId,\n client_secret: options.clientSecret,\n code: options.code,\n redirect_uri: options.redirectUrl\n }\n );\n const authentication = {\n clientType: options.clientType,\n clientId: options.clientId,\n clientSecret: options.clientSecret,\n token: response.data.access_token,\n scopes: response.data.scope.split(/\\s+/).filter(Boolean)\n };\n if (options.clientType === \"github-app\") {\n if (\"refresh_token\" in response.data) {\n const apiTimeInMs = new Date(response.headers.date).getTime();\n authentication.refreshToken = response.data.refresh_token, authentication.expiresAt = toTimestamp(\n apiTimeInMs,\n response.data.expires_in\n ), authentication.refreshTokenExpiresAt = toTimestamp(\n apiTimeInMs,\n response.data.refresh_token_expires_in\n );\n }\n delete authentication.scopes;\n }\n return { ...response, authentication };\n}\nfunction toTimestamp(apiTimeInMs, expirationInSeconds) {\n return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();\n}\n\n// pkg/dist-src/create-device-code.js\nimport { request as defaultRequest3 } from \"@octokit/request\";\nasync function createDeviceCode(options) {\n const request = options.request || defaultRequest3;\n const parameters = {\n client_id: options.clientId\n };\n if (\"scopes\" in options && Array.isArray(options.scopes)) {\n parameters.scope = options.scopes.join(\" \");\n }\n return oauthRequest(request, \"POST /login/device/code\", parameters);\n}\n\n// pkg/dist-src/exchange-device-code.js\nimport { request as defaultRequest4 } from \"@octokit/request\";\nasync function exchangeDeviceCode(options) {\n const request = options.request || defaultRequest4;\n const response = await oauthRequest(\n request,\n \"POST /login/oauth/access_token\",\n {\n client_id: options.clientId,\n device_code: options.code,\n grant_type: \"urn:ietf:params:oauth:grant-type:device_code\"\n }\n );\n const authentication = {\n clientType: options.clientType,\n clientId: options.clientId,\n token: response.data.access_token,\n scopes: response.data.scope.split(/\\s+/).filter(Boolean)\n };\n if (\"clientSecret\" in options) {\n authentication.clientSecret = options.clientSecret;\n }\n if (options.clientType === \"github-app\") {\n if (\"refresh_token\" in response.data) {\n const apiTimeInMs = new Date(response.headers.date).getTime();\n authentication.refreshToken = response.data.refresh_token, authentication.expiresAt = toTimestamp2(\n apiTimeInMs,\n response.data.expires_in\n ), authentication.refreshTokenExpiresAt = toTimestamp2(\n apiTimeInMs,\n response.data.refresh_token_expires_in\n );\n }\n delete authentication.scopes;\n }\n return { ...response, authentication };\n}\nfunction toTimestamp2(apiTimeInMs, expirationInSeconds) {\n return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();\n}\n\n// pkg/dist-src/check-token.js\nimport { request as defaultRequest5 } from \"@octokit/request\";\nasync function checkToken(options) {\n const request = options.request || defaultRequest5;\n const response = await request(\"POST /applications/{client_id}/token\", {\n headers: {\n authorization: `basic ${btoa(\n `${options.clientId}:${options.clientSecret}`\n )}`\n },\n client_id: options.clientId,\n access_token: options.token\n });\n const authentication = {\n clientType: options.clientType,\n clientId: options.clientId,\n clientSecret: options.clientSecret,\n token: options.token,\n scopes: response.data.scopes\n };\n if (response.data.expires_at)\n authentication.expiresAt = response.data.expires_at;\n if (options.clientType === \"github-app\") {\n delete authentication.scopes;\n }\n return { ...response, authentication };\n}\n\n// pkg/dist-src/refresh-token.js\nimport { request as defaultRequest6 } from \"@octokit/request\";\nasync function refreshToken(options) {\n const request = options.request || defaultRequest6;\n const response = await oauthRequest(\n request,\n \"POST /login/oauth/access_token\",\n {\n client_id: options.clientId,\n client_secret: options.clientSecret,\n grant_type: \"refresh_token\",\n refresh_token: options.refreshToken\n }\n );\n const apiTimeInMs = new Date(response.headers.date).getTime();\n const authentication = {\n clientType: \"github-app\",\n clientId: options.clientId,\n clientSecret: options.clientSecret,\n token: response.data.access_token,\n refreshToken: response.data.refresh_token,\n expiresAt: toTimestamp3(apiTimeInMs, response.data.expires_in),\n refreshTokenExpiresAt: toTimestamp3(\n apiTimeInMs,\n response.data.refresh_token_expires_in\n )\n };\n return { ...response, authentication };\n}\nfunction toTimestamp3(apiTimeInMs, expirationInSeconds) {\n return new Date(apiTimeInMs + expirationInSeconds * 1e3).toISOString();\n}\n\n// pkg/dist-src/scope-token.js\nimport { request as defaultRequest7 } from \"@octokit/request\";\nasync function scopeToken(options) {\n const {\n request: optionsRequest,\n clientType,\n clientId,\n clientSecret,\n token,\n ...requestOptions\n } = options;\n const request = options.request || defaultRequest7;\n const response = await request(\n \"POST /applications/{client_id}/token/scoped\",\n {\n headers: {\n authorization: `basic ${btoa(`${clientId}:${clientSecret}`)}`\n },\n client_id: clientId,\n access_token: token,\n ...requestOptions\n }\n );\n const authentication = Object.assign(\n {\n clientType,\n clientId,\n clientSecret,\n token: response.data.token\n },\n response.data.expires_at ? { expiresAt: response.data.expires_at } : {}\n );\n return { ...response, authentication };\n}\n\n// pkg/dist-src/reset-token.js\nimport { request as defaultRequest8 } from \"@octokit/request\";\nasync function resetToken(options) {\n const request = options.request || defaultRequest8;\n const auth = btoa(`${options.clientId}:${options.clientSecret}`);\n const response = await request(\n \"PATCH /applications/{client_id}/token\",\n {\n headers: {\n authorization: `basic ${auth}`\n },\n client_id: options.clientId,\n access_token: options.token\n }\n );\n const authentication = {\n clientType: options.clientType,\n clientId: options.clientId,\n clientSecret: options.clientSecret,\n token: response.data.token,\n scopes: response.data.scopes\n };\n if (response.data.expires_at)\n authentication.expiresAt = response.data.expires_at;\n if (options.clientType === \"github-app\") {\n delete authentication.scopes;\n }\n return { ...response, authentication };\n}\n\n// pkg/dist-src/delete-token.js\nimport { request as defaultRequest9 } from \"@octokit/request\";\nasync function deleteToken(options) {\n const request = options.request || defaultRequest9;\n const auth = btoa(`${options.clientId}:${options.clientSecret}`);\n return request(\n \"DELETE /applications/{client_id}/token\",\n {\n headers: {\n authorization: `basic ${auth}`\n },\n client_id: options.clientId,\n access_token: options.token\n }\n );\n}\n\n// pkg/dist-src/delete-authorization.js\nimport { request as defaultRequest10 } from \"@octokit/request\";\nasync function deleteAuthorization(options) {\n const request = options.request || defaultRequest10;\n const auth = btoa(`${options.clientId}:${options.clientSecret}`);\n return request(\n \"DELETE /applications/{client_id}/grant\",\n {\n headers: {\n authorization: `basic ${auth}`\n },\n client_id: options.clientId,\n access_token: options.token\n }\n );\n}\nexport {\n VERSION,\n checkToken,\n createDeviceCode,\n deleteAuthorization,\n deleteToken,\n exchangeDeviceCode,\n exchangeWebFlowCode,\n getWebFlowAuthorizationUrl,\n refreshToken,\n resetToken,\n scopeToken\n};\n/* v8 ignore next: we always pass a custom request in tests -- @preserve */\n", "// pkg/dist-src/index.js\nimport { getUserAgent } from \"universal-user-agent\";\nimport { request as octokitRequest } from \"@octokit/request\";\n\n// pkg/dist-src/get-oauth-access-token.js\nimport { createDeviceCode, exchangeDeviceCode } from \"@octokit/oauth-methods\";\nasync function getOAuthAccessToken(state, options) {\n const cachedAuthentication = getCachedAuthentication(state, options.auth);\n if (cachedAuthentication) return cachedAuthentication;\n const { data: verification } = await createDeviceCode({\n clientType: state.clientType,\n clientId: state.clientId,\n request: options.request || state.request,\n // @ts-expect-error the extra code to make TS happy is not worth it\n scopes: options.auth.scopes || state.scopes\n });\n await state.onVerification(verification);\n const authentication = await waitForAccessToken(\n options.request || state.request,\n state.clientId,\n state.clientType,\n verification\n );\n state.authentication = authentication;\n return authentication;\n}\nfunction getCachedAuthentication(state, auth2) {\n if (auth2.refresh === true) return false;\n if (!state.authentication) return false;\n if (state.clientType === \"github-app\") {\n return state.authentication;\n }\n const authentication = state.authentication;\n const newScope = (\"scopes\" in auth2 && auth2.scopes || state.scopes).join(\n \" \"\n );\n const currentScope = authentication.scopes.join(\" \");\n return newScope === currentScope ? authentication : false;\n}\nasync function wait(seconds) {\n await new Promise((resolve) => setTimeout(resolve, seconds * 1e3));\n}\nasync function waitForAccessToken(request, clientId, clientType, verification) {\n try {\n const options = {\n clientId,\n request,\n code: verification.device_code\n };\n const { authentication } = clientType === \"oauth-app\" ? await exchangeDeviceCode({\n ...options,\n clientType: \"oauth-app\"\n }) : await exchangeDeviceCode({\n ...options,\n clientType: \"github-app\"\n });\n return {\n type: \"token\",\n tokenType: \"oauth\",\n ...authentication\n };\n } catch (error) {\n if (!error.response) throw error;\n const errorType = error.response.data.error;\n if (errorType === \"authorization_pending\") {\n await wait(verification.interval);\n return waitForAccessToken(request, clientId, clientType, verification);\n }\n if (errorType === \"slow_down\") {\n await wait(verification.interval + 7);\n return waitForAccessToken(request, clientId, clientType, verification);\n }\n throw error;\n }\n}\n\n// pkg/dist-src/auth.js\nasync function auth(state, authOptions) {\n return getOAuthAccessToken(state, {\n auth: authOptions\n });\n}\n\n// pkg/dist-src/hook.js\nasync function hook(state, request, route, parameters) {\n let endpoint = request.endpoint.merge(\n route,\n parameters\n );\n if (/\\/login\\/(oauth\\/access_token|device\\/code)$/.test(endpoint.url)) {\n return request(endpoint);\n }\n const { token } = await getOAuthAccessToken(state, {\n request,\n auth: { type: \"oauth\" }\n });\n endpoint.headers.authorization = `token ${token}`;\n return request(endpoint);\n}\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/index.js\nfunction createOAuthDeviceAuth(options) {\n const requestWithDefaults = options.request || octokitRequest.defaults({\n headers: {\n \"user-agent\": `octokit-auth-oauth-device.js/${VERSION} ${getUserAgent()}`\n }\n });\n const { request = requestWithDefaults, ...otherOptions } = options;\n const state = options.clientType === \"github-app\" ? {\n ...otherOptions,\n clientType: \"github-app\",\n request\n } : {\n ...otherOptions,\n clientType: \"oauth-app\",\n request,\n scopes: options.scopes || []\n };\n if (!options.clientId) {\n throw new Error(\n '[@octokit/auth-oauth-device] \"clientId\" option must be set (https://github.com/octokit/auth-oauth-device.js#usage)'\n );\n }\n if (!options.onVerification) {\n throw new Error(\n '[@octokit/auth-oauth-device] \"onVerification\" option must be a function (https://github.com/octokit/auth-oauth-device.js#usage)'\n );\n }\n return Object.assign(auth.bind(null, state), {\n hook: hook.bind(null, state)\n });\n}\nexport {\n createOAuthDeviceAuth\n};\n/* v8 ignore next 2 -- @preserve */\n", "// pkg/dist-src/index.js\nimport { getUserAgent } from \"universal-user-agent\";\nimport { request as octokitRequest } from \"@octokit/request\";\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/get-authentication.js\nimport { createOAuthDeviceAuth } from \"@octokit/auth-oauth-device\";\nimport { exchangeWebFlowCode } from \"@octokit/oauth-methods\";\nasync function getAuthentication(state) {\n if (\"code\" in state.strategyOptions) {\n const { authentication } = await exchangeWebFlowCode({\n clientId: state.clientId,\n clientSecret: state.clientSecret,\n clientType: state.clientType,\n onTokenCreated: state.onTokenCreated,\n ...state.strategyOptions,\n request: state.request\n });\n return {\n type: \"token\",\n tokenType: \"oauth\",\n ...authentication\n };\n }\n if (\"onVerification\" in state.strategyOptions) {\n const deviceAuth = createOAuthDeviceAuth({\n clientType: state.clientType,\n clientId: state.clientId,\n onTokenCreated: state.onTokenCreated,\n ...state.strategyOptions,\n request: state.request\n });\n const authentication = await deviceAuth({\n type: \"oauth\"\n });\n return {\n clientSecret: state.clientSecret,\n ...authentication\n };\n }\n if (\"token\" in state.strategyOptions) {\n return {\n type: \"token\",\n tokenType: \"oauth\",\n clientId: state.clientId,\n clientSecret: state.clientSecret,\n clientType: state.clientType,\n onTokenCreated: state.onTokenCreated,\n ...state.strategyOptions\n };\n }\n throw new Error(\"[@octokit/auth-oauth-user] Invalid strategy options\");\n}\n\n// pkg/dist-src/auth.js\nimport {\n checkToken,\n deleteAuthorization,\n deleteToken,\n refreshToken,\n resetToken\n} from \"@octokit/oauth-methods\";\nasync function auth(state, options = {}) {\n if (!state.authentication) {\n state.authentication = state.clientType === \"oauth-app\" ? await getAuthentication(state) : await getAuthentication(state);\n }\n if (state.authentication.invalid) {\n throw new Error(\"[@octokit/auth-oauth-user] Token is invalid\");\n }\n const currentAuthentication = state.authentication;\n if (\"expiresAt\" in currentAuthentication) {\n if (options.type === \"refresh\" || new Date(currentAuthentication.expiresAt) < /* @__PURE__ */ new Date()) {\n const { authentication } = await refreshToken({\n clientType: \"github-app\",\n clientId: state.clientId,\n clientSecret: state.clientSecret,\n refreshToken: currentAuthentication.refreshToken,\n request: state.request\n });\n state.authentication = {\n tokenType: \"oauth\",\n type: \"token\",\n ...authentication\n };\n }\n }\n if (options.type === \"refresh\") {\n if (state.clientType === \"oauth-app\") {\n throw new Error(\n \"[@octokit/auth-oauth-user] OAuth Apps do not support expiring tokens\"\n );\n }\n if (!currentAuthentication.hasOwnProperty(\"expiresAt\")) {\n throw new Error(\"[@octokit/auth-oauth-user] Refresh token missing\");\n }\n await state.onTokenCreated?.(state.authentication, {\n type: options.type\n });\n }\n if (options.type === \"check\" || options.type === \"reset\") {\n const method = options.type === \"check\" ? checkToken : resetToken;\n try {\n const { authentication } = await method({\n // @ts-expect-error making TS happy would require unnecessary code so no\n clientType: state.clientType,\n clientId: state.clientId,\n clientSecret: state.clientSecret,\n token: state.authentication.token,\n request: state.request\n });\n state.authentication = {\n tokenType: \"oauth\",\n type: \"token\",\n // @ts-expect-error TBD\n ...authentication\n };\n if (options.type === \"reset\") {\n await state.onTokenCreated?.(state.authentication, {\n type: options.type\n });\n }\n return state.authentication;\n } catch (error) {\n if (error.status === 404) {\n error.message = \"[@octokit/auth-oauth-user] Token is invalid\";\n state.authentication.invalid = true;\n }\n throw error;\n }\n }\n if (options.type === \"delete\" || options.type === \"deleteAuthorization\") {\n const method = options.type === \"delete\" ? deleteToken : deleteAuthorization;\n try {\n await method({\n // @ts-expect-error making TS happy would require unnecessary code so no\n clientType: state.clientType,\n clientId: state.clientId,\n clientSecret: state.clientSecret,\n token: state.authentication.token,\n request: state.request\n });\n } catch (error) {\n if (error.status !== 404) throw error;\n }\n state.authentication.invalid = true;\n return state.authentication;\n }\n return state.authentication;\n}\n\n// pkg/dist-src/requires-basic-auth.js\nvar ROUTES_REQUIRING_BASIC_AUTH = /\\/applications\\/[^/]+\\/(token|grant)s?/;\nfunction requiresBasicAuth(url) {\n return url && ROUTES_REQUIRING_BASIC_AUTH.test(url);\n}\n\n// pkg/dist-src/hook.js\nasync function hook(state, request, route, parameters = {}) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n if (/\\/login\\/(oauth\\/access_token|device\\/code)$/.test(endpoint.url)) {\n return request(endpoint);\n }\n if (requiresBasicAuth(endpoint.url)) {\n const credentials = btoa(`${state.clientId}:${state.clientSecret}`);\n endpoint.headers.authorization = `basic ${credentials}`;\n return request(endpoint);\n }\n const { token } = state.clientType === \"oauth-app\" ? await auth({ ...state, request }) : await auth({ ...state, request });\n endpoint.headers.authorization = \"token \" + token;\n return request(endpoint);\n}\n\n// pkg/dist-src/index.js\nfunction createOAuthUserAuth({\n clientId,\n clientSecret,\n clientType = \"oauth-app\",\n request = octokitRequest.defaults({\n headers: {\n \"user-agent\": `octokit-auth-oauth-app.js/${VERSION} ${getUserAgent()}`\n }\n }),\n onTokenCreated,\n ...strategyOptions\n}) {\n const state = Object.assign({\n clientType,\n clientId,\n clientSecret,\n onTokenCreated,\n strategyOptions,\n request\n });\n return Object.assign(auth.bind(null, state), {\n // @ts-expect-error not worth the extra code needed to appease TS\n hook: hook.bind(null, state)\n });\n}\ncreateOAuthUserAuth.VERSION = VERSION;\nexport {\n createOAuthUserAuth,\n requiresBasicAuth\n};\n/* v8 ignore if -- @preserve */\n/* v8 ignore next -- @preserve */\n", "// pkg/dist-src/index.js\nimport { getUserAgent } from \"universal-user-agent\";\nimport { request } from \"@octokit/request\";\n\n// pkg/dist-src/auth.js\nimport { createOAuthUserAuth } from \"@octokit/auth-oauth-user\";\nasync function auth(state, authOptions) {\n if (authOptions.type === \"oauth-app\") {\n return {\n type: \"oauth-app\",\n clientId: state.clientId,\n clientSecret: state.clientSecret,\n clientType: state.clientType,\n headers: {\n authorization: `basic ${btoa(\n `${state.clientId}:${state.clientSecret}`\n )}`\n }\n };\n }\n if (\"factory\" in authOptions) {\n const { type, ...options } = {\n ...authOptions,\n ...state\n };\n return authOptions.factory(options);\n }\n const common = {\n clientId: state.clientId,\n clientSecret: state.clientSecret,\n request: state.request,\n ...authOptions\n };\n const userAuth = state.clientType === \"oauth-app\" ? await createOAuthUserAuth({\n ...common,\n clientType: state.clientType\n }) : await createOAuthUserAuth({\n ...common,\n clientType: state.clientType\n });\n return userAuth();\n}\n\n// pkg/dist-src/hook.js\nimport { requiresBasicAuth } from \"@octokit/auth-oauth-user\";\nasync function hook(state, request2, route, parameters) {\n let endpoint = request2.endpoint.merge(\n route,\n parameters\n );\n if (/\\/login\\/(oauth\\/access_token|device\\/code)$/.test(endpoint.url)) {\n return request2(endpoint);\n }\n if (state.clientType === \"github-app\" && !requiresBasicAuth(endpoint.url)) {\n throw new Error(\n `[@octokit/auth-oauth-app] GitHub Apps cannot use their client ID/secret for basic authentication for endpoints other than \"/applications/{client_id}/**\". \"${endpoint.method} ${endpoint.url}\" is not supported.`\n );\n }\n const credentials = btoa(`${state.clientId}:${state.clientSecret}`);\n endpoint.headers.authorization = `basic ${credentials}`;\n try {\n return await request2(endpoint);\n } catch (error) {\n if (error.status !== 401) throw error;\n error.message = `[@octokit/auth-oauth-app] \"${endpoint.method} ${endpoint.url}\" does not support clientId/clientSecret basic authentication.`;\n throw error;\n }\n}\n\n// pkg/dist-src/version.js\nvar VERSION = \"0.0.0-development\";\n\n// pkg/dist-src/index.js\nimport { createOAuthUserAuth as createOAuthUserAuth2 } from \"@octokit/auth-oauth-user\";\nfunction createOAuthAppAuth(options) {\n const state = Object.assign(\n {\n request: request.defaults({\n headers: {\n \"user-agent\": `octokit-auth-oauth-app.js/${VERSION} ${getUserAgent()}`\n }\n }),\n clientType: \"oauth-app\"\n },\n options\n );\n return Object.assign(auth.bind(null, state), {\n hook: hook.bind(null, state)\n });\n}\nexport {\n createOAuthAppAuth,\n createOAuthUserAuth2 as createOAuthUserAuth\n};\n/* v8 ignore next -- @preserve */\n", "// we don't @ts-check here because it chokes on atob and btoa which are available in all modern JS runtime environments\n\n/**\n * @param {string} privateKey\n * @returns {boolean}\n */\nexport function isPkcs1(privateKey) {\n return privateKey.includes(\"-----BEGIN RSA PRIVATE KEY-----\");\n}\n\n/**\n * @param {string} privateKey\n * @returns {boolean}\n */\nexport function isOpenSsh(privateKey) {\n return privateKey.includes(\"-----BEGIN OPENSSH PRIVATE KEY-----\");\n}\n\n/**\n * @param {string} str\n * @returns {ArrayBuffer}\n */\nexport function string2ArrayBuffer(str) {\n const buf = new ArrayBuffer(str.length);\n const bufView = new Uint8Array(buf);\n for (let i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return buf;\n}\n\n/**\n * @param {string} pem\n * @returns {ArrayBuffer}\n */\nexport function getDERfromPEM(pem) {\n const pemB64 = pem\n .trim()\n .split(\"\\n\")\n .slice(1, -1) // Remove the --- BEGIN / END PRIVATE KEY ---\n .join(\"\");\n\n const decoded = atob(pemB64);\n return string2ArrayBuffer(decoded);\n}\n\n/**\n * @param {import('../internals').Header} header\n * @param {import('../internals').Payload} payload\n * @returns {string}\n */\nexport function getEncodedMessage(header, payload) {\n return `${base64encodeJSON(header)}.${base64encodeJSON(payload)}`;\n}\n\n/**\n * @param {ArrayBuffer} buffer\n * @returns {string}\n */\nexport function base64encode(buffer) {\n var binary = \"\";\n var bytes = new Uint8Array(buffer);\n var len = bytes.byteLength;\n for (var i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n\n return fromBase64(btoa(binary));\n}\n\n/**\n * @param {string} base64\n * @returns {string}\n */\nfunction fromBase64(base64) {\n return base64.replace(/=/g, \"\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\n\n/**\n * @param {Record<string,unknown>} obj\n * @returns {string}\n */\nfunction base64encodeJSON(obj) {\n return fromBase64(btoa(JSON.stringify(obj)));\n}\n", "// this can be removed once we only support Node 20+\nexport { subtle } from \"node:crypto\";\nimport { createPrivateKey } from \"node:crypto\";\n\nimport { isPkcs1 } from \"./utils.js\";\n\n// no-op, unfortunately there is no way to transform from PKCS8 or OpenSSH to PKCS1 with WebCrypto\nexport function convertPrivateKey(privateKey) {\n if (!isPkcs1(privateKey)) return privateKey;\n\n return createPrivateKey(privateKey).export({\n type: \"pkcs8\",\n format: \"pem\",\n });\n}\n", "// we don't @ts-check here because it chokes crypto which is a global API in modern JS runtime environments\n\nimport {\n isPkcs1,\n isOpenSsh,\n getEncodedMessage,\n getDERfromPEM,\n string2ArrayBuffer,\n base64encode,\n} from \"./utils.js\";\n\nimport { subtle, convertPrivateKey } from \"#crypto\";\n\n/**\n * @param {import('../internals').GetTokenOptions} options\n * @returns {Promise<string>}\n */\nexport async function getToken({ privateKey, payload }) {\n const convertedPrivateKey = convertPrivateKey(privateKey);\n\n // WebCrypto only supports PKCS#8, unfortunately\n /* c8 ignore start */\n if (isPkcs1(convertedPrivateKey)) {\n throw new Error(\n \"[universal-github-app-jwt] Private Key is in PKCS#1 format, but only PKCS#8 is supported. See https://github.com/gr2m/universal-github-app-jwt#private-key-formats\"\n );\n }\n /* c8 ignore stop */\n\n // WebCrypto does not support OpenSSH, unfortunately\n if (isOpenSsh(convertedPrivateKey)) {\n throw new Error(\n \"[universal-github-app-jwt] Private Key is in OpenSSH format, but only PKCS#8 is supported. See https://github.com/gr2m/universal-github-app-jwt#private-key-formats\"\n );\n }\n\n const algorithm = {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: { name: \"SHA-256\" },\n };\n\n /** @type {import('../internals').Header} */\n const header = { alg: \"RS256\", typ: \"JWT\" };\n\n const privateKeyDER = getDERfromPEM(convertedPrivateKey);\n const importedKey = await subtle.importKey(\n \"pkcs8\",\n privateKeyDER,\n algorithm,\n false,\n [\"sign\"]\n );\n\n const encodedMessage = getEncodedMessage(header, payload);\n const encodedMessageArrBuf = string2ArrayBuffer(encodedMessage);\n\n const signatureArrBuf = await subtle.sign(\n algorithm.name,\n importedKey,\n encodedMessageArrBuf\n );\n\n const encodedSignature = base64encode(signatureArrBuf);\n\n return `${encodedMessage}.${encodedSignature}`;\n}\n", "// @ts-check\n\n// @ts-ignore - #get-token is defined in \"imports\" in package.json\nimport { getToken } from \"./lib/get-token.js\";\n\n/**\n * @param {import(\".\").Options} options\n * @returns {Promise<import(\".\").Result>}\n */\nexport default async function githubAppJwt({\n id,\n privateKey,\n now = Math.floor(Date.now() / 1000),\n}) {\n // Private keys are often times configured as environment variables, in which case line breaks are escaped using `\\\\n`.\n // Replace these here for convenience.\n const privateKeyWithNewlines = privateKey.replace(/\\\\n/g, '\\n');\n\n // When creating a JSON Web Token, it sets the \"issued at time\" (iat) to 30s\n // in the past as we have seen people running situations where the GitHub API\n // claimed the iat would be in future. It turned out the clocks on the\n // different machine were not in sync.\n const nowWithSafetyMargin = now - 30;\n const expiration = nowWithSafetyMargin + 60 * 10; // JWT expiration time (10 minute maximum)\n\n const payload = {\n iat: nowWithSafetyMargin, // Issued at time\n exp: expiration,\n iss: id,\n };\n\n const token = await getToken({\n privateKey: privateKeyWithNewlines,\n payload,\n });\n\n return {\n appId: id,\n expiration,\n token,\n };\n}\n", "/**\n * toad-cache\n *\n * @copyright 2026 Igor Savin <kibertoad@gmail.com>\n * @license MIT\n * @version 3.7.3\n */\n/**\n * Validates the shared cache constructor parameters.\n * Both values must be non-negative integers.\n *\n * @param {number} max\n * @param {number} ttlInMsecs\n */\nfunction validateCacheParams(max, ttlInMsecs) {\n if (typeof max !== 'number' || !Number.isInteger(max) || max < 0) {\n throw new Error('Invalid max value')\n }\n\n if (typeof ttlInMsecs !== 'number' || !Number.isInteger(ttlInMsecs) || ttlInMsecs < 0) {\n throw new Error('Invalid ttl value')\n }\n}class FifoMap {\n constructor(max = 1000, ttlInMsecs = 0) {\n validateCacheParams(max, ttlInMsecs);\n\n this.first = null;\n this.items = new Map();\n this.last = null;\n this.max = max;\n this.ttl = ttlInMsecs;\n }\n\n get size() {\n return this.items.size\n }\n\n clear() {\n this.items.clear();\n this.first = null;\n this.last = null;\n }\n\n delete(key) {\n const deletedItem = this.items.get(key);\n\n if (deletedItem !== undefined) {\n this.items.delete(key);\n\n if (deletedItem.prev !== null) {\n deletedItem.prev.next = deletedItem.next;\n }\n\n if (deletedItem.next !== null) {\n deletedItem.next.prev = deletedItem.prev;\n }\n\n if (this.first === deletedItem) {\n this.first = deletedItem.next;\n }\n\n if (this.last === deletedItem) {\n this.last = deletedItem.prev;\n }\n }\n }\n\n deleteMany(keys) {\n for (var i = 0; i < keys.length; i++) {\n this.delete(keys[i]);\n }\n }\n\n evict() {\n if (this.size > 0) {\n const item = this.first;\n\n this.items.delete(item.key);\n\n if (this.size === 0) {\n this.first = null;\n this.last = null;\n } else {\n this.first = item.next;\n this.first.prev = null;\n }\n }\n }\n\n expiresAt(key) {\n const item = this.items.get(key);\n\n if (item !== undefined) {\n return item.expiry\n }\n }\n\n get(key) {\n const item = this.items.get(key);\n\n if (item !== undefined) {\n if (this.ttl > 0 && item.expiry <= Date.now()) {\n this.delete(key);\n return\n }\n\n return item.value\n }\n }\n\n getMany(keys) {\n const result = new Array(keys.length);\n\n for (var i = 0; i < keys.length; i++) {\n result[i] = this.get(keys[i]);\n }\n\n return result\n }\n\n keys() {\n return this.items.keys()\n }\n\n set(key, value) {\n // Replace existing item\n const existing = this.items.get(key);\n\n if (existing !== undefined) {\n existing.value = value;\n existing.expiry = this.ttl > 0 ? Date.now() + this.ttl : this.ttl;\n\n return\n }\n\n // Add new item\n if (this.max > 0 && this.size >= this.max) {\n this.evict();\n }\n\n const item = {\n expiry: this.ttl > 0 ? Date.now() + this.ttl : this.ttl,\n key: key,\n prev: this.last,\n next: null,\n value,\n };\n this.items.set(key, item);\n\n if (this.size === 1) {\n this.first = item;\n } else {\n this.last.next = item;\n }\n\n this.last = item;\n }\n}class FifoObject {\n constructor(max = 1000, ttlInMsecs = 0) {\n validateCacheParams(max, ttlInMsecs);\n\n this.first = null;\n this.items = Object.create(null);\n this.last = null;\n this.size = 0;\n this.max = max;\n this.ttl = ttlInMsecs;\n }\n\n clear() {\n this.items = Object.create(null);\n this.first = null;\n this.last = null;\n this.size = 0;\n }\n\n delete(key) {\n const deletedItem = this.items[key];\n\n if (deletedItem !== undefined) {\n delete this.items[key];\n this.size--;\n\n if (deletedItem.prev !== null) {\n deletedItem.prev.next = deletedItem.next;\n }\n\n if (deletedItem.next !== null) {\n deletedItem.next.prev = deletedItem.prev;\n }\n\n if (this.first === deletedItem) {\n this.first = deletedItem.next;\n }\n\n if (this.last === deletedItem) {\n this.last = deletedItem.prev;\n }\n }\n }\n\n deleteMany(keys) {\n for (var i = 0; i < keys.length; i++) {\n this.delete(keys[i]);\n }\n }\n\n evict() {\n if (this.size > 0) {\n const item = this.first;\n\n delete this.items[item.key];\n\n if (--this.size === 0) {\n this.first = null;\n this.last = null;\n } else {\n this.first = item.next;\n this.first.prev = null;\n }\n }\n }\n\n expiresAt(key) {\n const item = this.items[key];\n\n if (item !== undefined) {\n return item.expiry\n }\n }\n\n get(key) {\n const item = this.items[key];\n\n if (item !== undefined) {\n if (this.ttl > 0 && item.expiry <= Date.now()) {\n this.delete(key);\n return\n }\n\n return item.value\n }\n }\n\n getMany(keys) {\n const result = new Array(keys.length);\n\n for (var i = 0; i < keys.length; i++) {\n result[i] = this.get(keys[i]);\n }\n\n return result\n }\n\n keys() {\n return Object.keys(this.items)\n }\n\n set(key, value) {\n // Replace existing item\n const existing = this.items[key];\n\n if (existing !== undefined) {\n existing.value = value;\n existing.expiry = this.ttl > 0 ? Date.now() + this.ttl : this.ttl;\n\n return\n }\n\n // Add new item\n if (this.max > 0 && this.size >= this.max) {\n this.evict();\n }\n\n const item = {\n expiry: this.ttl > 0 ? Date.now() + this.ttl : this.ttl,\n key: key,\n prev: this.last,\n next: null,\n value,\n };\n this.items[key] = item;\n\n if (++this.size === 1) {\n this.first = item;\n } else {\n this.last.next = item;\n }\n\n this.last = item;\n }\n}/**\n * Creates a zeroed statistics record for a single collection window.\n *\n * @returns {object}\n */\nfunction createEmptyStatisticsRecord() {\n return {\n cacheSize: 0,\n hits: 0,\n falsyHits: 0,\n emptyHits: 0,\n misses: 0,\n expirations: 0,\n evictions: 0,\n invalidateOne: 0,\n invalidateAll: 0,\n sets: 0,\n }\n}class HitStatisticsRecord {\n constructor() {\n this.records = {};\n }\n\n initForCache(cacheId, currentTimeStamp) {\n this.records[cacheId] = {\n [currentTimeStamp]: createEmptyStatisticsRecord(),\n };\n }\n\n resetForCache(cacheId) {\n if (!this.records[cacheId]) {\n return\n }\n\n for (let key of Object.keys(this.records[cacheId])) {\n this.records[cacheId][key] = createEmptyStatisticsRecord();\n }\n }\n\n getStatistics() {\n return this.records\n }\n}class LruMap {\n constructor(max = 1000, ttlInMsecs = 0) {\n validateCacheParams(max, ttlInMsecs);\n\n this.first = null;\n this.items = new Map();\n this.last = null;\n this.max = max;\n this.ttl = ttlInMsecs;\n }\n\n get size() {\n return this.items.size\n }\n\n bumpLru(item) {\n if (this.last === item) {\n return // Item is already the last one, no need to bump\n }\n\n const last = this.last;\n const next = item.next;\n const prev = item.prev;\n\n if (this.first === item) {\n this.first = next;\n }\n\n item.next = null;\n item.prev = last;\n last.next = item;\n\n if (prev !== null) {\n prev.next = next;\n }\n\n /* v8 ignore next 3 -- next is always non-null here: the early return above guarantees item !== this.last in a well-formed list */\n if (next !== null) {\n next.prev = prev;\n }\n\n this.last = item;\n }\n\n clear() {\n this.items.clear();\n this.first = null;\n this.last = null;\n }\n\n delete(key) {\n const item = this.items.get(key);\n\n if (item !== undefined) {\n this.items.delete(key);\n\n if (item.prev !== null) {\n item.prev.next = item.next;\n }\n\n if (item.next !== null) {\n item.next.prev = item.prev;\n }\n\n if (this.first === item) {\n this.first = item.next;\n }\n\n if (this.last === item) {\n this.last = item.prev;\n }\n }\n }\n\n deleteMany(keys) {\n for (var i = 0; i < keys.length; i++) {\n this.delete(keys[i]);\n }\n }\n\n evict() {\n if (this.size > 0) {\n const item = this.first;\n\n this.items.delete(item.key);\n\n if (this.size === 0) {\n this.first = null;\n this.last = null;\n } else {\n this.first = item.next;\n this.first.prev = null;\n }\n }\n }\n\n expiresAt(key) {\n const item = this.items.get(key);\n\n if (item !== undefined) {\n return item.expiry\n }\n }\n\n get(key) {\n const item = this.items.get(key);\n\n if (item !== undefined) {\n // Item has already expired\n if (this.ttl > 0 && item.expiry <= Date.now()) {\n this.delete(key);\n return\n }\n\n // Item is still fresh\n this.bumpLru(item);\n return item.value\n }\n }\n\n getMany(keys) {\n const result = new Array(keys.length);\n\n for (var i = 0; i < keys.length; i++) {\n result[i] = this.get(keys[i]);\n }\n\n return result\n }\n\n keys() {\n return this.items.keys()\n }\n\n set(key, value) {\n // Replace existing item\n const existing = this.items.get(key);\n\n if (existing !== undefined) {\n existing.value = value;\n existing.expiry = this.ttl > 0 ? Date.now() + this.ttl : this.ttl;\n this.bumpLru(existing);\n\n return\n }\n\n // Add new item\n if (this.max > 0 && this.size >= this.max) {\n this.evict();\n }\n\n const item = {\n expiry: this.ttl > 0 ? Date.now() + this.ttl : this.ttl,\n key: key,\n prev: this.last,\n next: null,\n value,\n };\n this.items.set(key, item);\n\n if (this.size === 1) {\n this.first = item;\n } else {\n this.last.next = item;\n }\n\n this.last = item;\n }\n}class LruObject {\n constructor(max = 1000, ttlInMsecs = 0) {\n validateCacheParams(max, ttlInMsecs);\n\n this.first = null;\n this.items = Object.create(null);\n this.last = null;\n this.size = 0;\n this.max = max;\n this.ttl = ttlInMsecs;\n }\n\n bumpLru(item) {\n if (this.last === item) {\n return // Item is already the last one, no need to bump\n }\n\n const last = this.last;\n const next = item.next;\n const prev = item.prev;\n\n if (this.first === item) {\n this.first = next;\n }\n\n item.next = null;\n item.prev = last;\n last.next = item;\n\n if (prev !== null) {\n prev.next = next;\n }\n\n /* v8 ignore next 3 -- next is always non-null here: the early return above guarantees item !== this.last in a well-formed list */\n if (next !== null) {\n next.prev = prev;\n }\n\n this.last = item;\n }\n\n clear() {\n this.items = Object.create(null);\n this.first = null;\n this.last = null;\n this.size = 0;\n }\n\n delete(key) {\n const item = this.items[key];\n\n if (item !== undefined) {\n delete this.items[key];\n this.size--;\n\n if (item.prev !== null) {\n item.prev.next = item.next;\n }\n\n if (item.next !== null) {\n item.next.prev = item.prev;\n }\n\n if (this.first === item) {\n this.first = item.next;\n }\n\n if (this.last === item) {\n this.last = item.prev;\n }\n }\n }\n\n deleteMany(keys) {\n for (var i = 0; i < keys.length; i++) {\n this.delete(keys[i]);\n }\n }\n\n evict() {\n if (this.size > 0) {\n const item = this.first;\n\n delete this.items[item.key];\n\n if (--this.size === 0) {\n this.first = null;\n this.last = null;\n } else {\n this.first = item.next;\n this.first.prev = null;\n }\n }\n }\n\n expiresAt(key) {\n const item = this.items[key];\n\n if (item !== undefined) {\n return item.expiry\n }\n }\n\n get(key) {\n const item = this.items[key];\n\n if (item !== undefined) {\n // Item has already expired\n if (this.ttl > 0 && item.expiry <= Date.now()) {\n this.delete(key);\n return\n }\n\n // Item is still fresh\n this.bumpLru(item);\n return item.value\n }\n }\n\n getMany(keys) {\n const result = new Array(keys.length);\n\n for (var i = 0; i < keys.length; i++) {\n result[i] = this.get(keys[i]);\n }\n\n return result\n }\n\n keys() {\n return Object.keys(this.items)\n }\n\n set(key, value) {\n // Replace existing item\n const existing = this.items[key];\n\n if (existing !== undefined) {\n existing.value = value;\n existing.expiry = this.ttl > 0 ? Date.now() + this.ttl : this.ttl;\n this.bumpLru(existing);\n\n return\n }\n\n // Add new item\n if (this.max > 0 && this.size >= this.max) {\n this.evict();\n }\n\n const item = {\n expiry: this.ttl > 0 ? Date.now() + this.ttl : this.ttl,\n key: key,\n prev: this.last,\n next: null,\n value,\n };\n this.items[key] = item;\n\n if (++this.size === 1) {\n this.first = item;\n } else {\n this.last.next = item;\n }\n\n this.last = item;\n }\n}/**\n *\n * @param {Date} date\n * @returns {string}\n */\nfunction getTimestamp(date) {\n return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date\n .getDate()\n .toString()\n .padStart(2, '0')}`\n}class HitStatistics {\n constructor(cacheId, statisticTtlInHours, globalStatisticsRecord) {\n this.cacheId = cacheId;\n this.statisticTtlInHours = statisticTtlInHours;\n\n this.collectionStart = new Date();\n this.currentTimeStamp = getTimestamp(this.collectionStart);\n this.archiveAfter = this.collectionStart.getTime() + this.statisticTtlInHours * 3_600_000;\n\n this.records = globalStatisticsRecord || new HitStatisticsRecord();\n this.records.initForCache(this.cacheId, this.currentTimeStamp);\n }\n\n get currentRecord() {\n const cacheRecords = this.records.records[this.cacheId];\n // safety net\n /* c8 ignore next 3 */\n if (!cacheRecords[this.currentTimeStamp]) {\n cacheRecords[this.currentTimeStamp] = createEmptyStatisticsRecord();\n }\n\n return cacheRecords[this.currentTimeStamp]\n }\n\n /* v8 ignore next 3 -- kept for compatibility, no longer used internally */\n hoursPassed() {\n return (Date.now() - this.collectionStart) / 1000 / 60 / 60\n }\n\n addHit() {\n this.archiveIfNeeded();\n this.currentRecord.hits++;\n }\n addFalsyHit() {\n this.archiveIfNeeded();\n this.currentRecord.falsyHits++;\n }\n\n addEmptyHit() {\n this.archiveIfNeeded();\n this.currentRecord.emptyHits++;\n }\n\n addMiss() {\n this.archiveIfNeeded();\n this.currentRecord.misses++;\n }\n\n addEviction() {\n this.archiveIfNeeded();\n this.currentRecord.evictions++;\n }\n\n setCacheSize(currentSize) {\n this.archiveIfNeeded();\n this.currentRecord.cacheSize = currentSize;\n }\n\n addExpiration() {\n this.archiveIfNeeded();\n this.currentRecord.expirations++;\n }\n\n addSet() {\n this.archiveIfNeeded();\n this.currentRecord.sets++;\n }\n\n addInvalidateOne() {\n this.archiveIfNeeded();\n this.currentRecord.invalidateOne++;\n }\n\n addInvalidateAll() {\n this.archiveIfNeeded();\n this.currentRecord.invalidateAll++;\n }\n\n getStatistics() {\n return this.records.getStatistics()\n }\n\n archiveIfNeeded() {\n if (Date.now() >= this.archiveAfter) {\n this.collectionStart = new Date();\n this.currentTimeStamp = getTimestamp(this.collectionStart);\n this.archiveAfter = this.collectionStart.getTime() + this.statisticTtlInHours * 3_600_000;\n this.records.initForCache(this.cacheId, this.currentTimeStamp);\n }\n }\n}class LruObjectHitStatistics extends LruObject {\n constructor(max, ttlInMsecs, cacheId, globalStatisticsRecord, statisticTtlInHours) {\n // Pass through as-is: the base constructor applies the 1000/0 defaults for\n // omitted (undefined) values and validates everything else, so explicit 0\n // stays unlimited and null/NaN are rejected the same way as the base class.\n super(max, ttlInMsecs);\n\n if (!cacheId) {\n throw new Error('Cache id is mandatory')\n }\n\n this.hitStatistics = new HitStatistics(\n cacheId,\n statisticTtlInHours !== undefined ? statisticTtlInHours : 24,\n globalStatisticsRecord,\n );\n }\n\n getStatistics() {\n return this.hitStatistics.getStatistics()\n }\n\n set(key, value) {\n super.set(key, value);\n this.hitStatistics.addSet();\n this.hitStatistics.setCacheSize(this.size);\n }\n\n evict() {\n const hadItems = this.size > 0;\n super.evict();\n if (hadItems) {\n this.hitStatistics.addEviction();\n }\n this.hitStatistics.setCacheSize(this.size);\n }\n\n delete(key, isExpiration = false) {\n const existed = this.items[key] !== undefined;\n super.delete(key);\n\n if (existed && !isExpiration) {\n this.hitStatistics.addInvalidateOne();\n }\n this.hitStatistics.setCacheSize(this.size);\n }\n\n clear() {\n super.clear();\n\n this.hitStatistics.addInvalidateAll();\n this.hitStatistics.setCacheSize(this.size);\n }\n\n get(key) {\n const item = this.items[key];\n\n if (item !== undefined) {\n // Item has already expired\n if (this.ttl > 0 && item.expiry <= Date.now()) {\n this.delete(key, true);\n this.hitStatistics.addExpiration();\n return\n }\n\n // Item is still fresh\n this.bumpLru(item);\n if (!item.value) {\n this.hitStatistics.addFalsyHit();\n // Empty values are a subset of falsy values\n if (item.value === undefined || item.value === null || item.value === '') {\n this.hitStatistics.addEmptyHit();\n }\n }\n this.hitStatistics.addHit();\n return item.value\n }\n this.hitStatistics.addMiss();\n }\n}export{FifoObject as Fifo,FifoMap,FifoObject,HitStatisticsRecord,LruObject as Lru,LruObjectHitStatistics as LruHitStatistics,LruMap,LruObject,LruObjectHitStatistics};", "// pkg/dist-src/index.js\nimport { getUserAgent } from \"universal-user-agent\";\nimport { request as defaultRequest } from \"@octokit/request\";\nimport { createOAuthAppAuth } from \"@octokit/auth-oauth-app\";\n\n// pkg/dist-src/get-app-authentication.js\nimport githubAppJwt from \"universal-github-app-jwt\";\nasync function getAppAuthentication({\n appId,\n privateKey,\n timeDifference,\n createJwt\n}) {\n try {\n if (createJwt) {\n const { jwt, expiresAt } = await createJwt(appId, timeDifference);\n return {\n type: \"app\",\n token: jwt,\n appId,\n expiresAt\n };\n }\n const authOptions = {\n id: appId,\n privateKey\n };\n if (timeDifference) {\n Object.assign(authOptions, {\n now: Math.floor(Date.now() / 1e3) + timeDifference\n });\n }\n const appAuthentication = await githubAppJwt(authOptions);\n return {\n type: \"app\",\n token: appAuthentication.token,\n appId: appAuthentication.appId,\n expiresAt: new Date(appAuthentication.expiration * 1e3).toISOString()\n };\n } catch (error) {\n if (privateKey === \"-----BEGIN RSA PRIVATE KEY-----\") {\n throw new Error(\n \"The 'privateKey` option contains only the first line '-----BEGIN RSA PRIVATE KEY-----'. If you are setting it using a `.env` file, make sure it is set on a single line with newlines replaced by '\\n'\"\n );\n } else {\n throw error;\n }\n }\n}\n\n// pkg/dist-src/cache.js\nimport { Lru } from \"toad-cache\";\nfunction getCache() {\n return new Lru(\n // cache max. 15000 tokens, that will use less than 10mb memory\n 15e3,\n // Cache for 1 minute less than GitHub expiry\n 1e3 * 60 * 59\n );\n}\nasync function get(cache, options) {\n const cacheKey = optionsToCacheKey(options);\n const result = await cache.get(cacheKey);\n if (!result) {\n return;\n }\n const [\n token,\n createdAt,\n expiresAt,\n repositorySelection,\n permissionsString,\n singleFileName\n ] = result.split(\"|\");\n const permissions = options.permissions || permissionsString.split(/,/).reduce((permissions2, string) => {\n if (/!$/.test(string)) {\n permissions2[string.slice(0, -1)] = \"write\";\n } else {\n permissions2[string] = \"read\";\n }\n return permissions2;\n }, {});\n return {\n token,\n createdAt,\n expiresAt,\n permissions,\n repositoryIds: options.repositoryIds,\n repositoryNames: options.repositoryNames,\n singleFileName,\n repositorySelection\n };\n}\nasync function set(cache, options, data) {\n const key = optionsToCacheKey(options);\n const permissionsString = options.permissions ? \"\" : Object.keys(data.permissions).map(\n (name) => `${name}${data.permissions[name] === \"write\" ? \"!\" : \"\"}`\n ).join(\",\");\n const value = [\n data.token,\n data.createdAt,\n data.expiresAt,\n data.repositorySelection,\n permissionsString,\n data.singleFileName\n ].join(\"|\");\n await cache.set(key, value);\n}\nfunction optionsToCacheKey({\n installationId,\n permissions = {},\n repositoryIds = [],\n repositoryNames = []\n}) {\n const permissionsString = Object.keys(permissions).sort().map((name) => permissions[name] === \"read\" ? name : `${name}!`).join(\",\");\n const repositoryIdsString = repositoryIds.sort().join(\",\");\n const repositoryNamesString = repositoryNames.join(\",\");\n return [\n installationId,\n repositoryIdsString,\n repositoryNamesString,\n permissionsString\n ].filter(Boolean).join(\"|\");\n}\n\n// pkg/dist-src/to-token-authentication.js\nfunction toTokenAuthentication({\n installationId,\n token,\n createdAt,\n expiresAt,\n repositorySelection,\n permissions,\n repositoryIds,\n repositoryNames,\n singleFileName\n}) {\n return Object.assign(\n {\n type: \"token\",\n tokenType: \"installation\",\n token,\n installationId,\n permissions,\n createdAt,\n expiresAt,\n repositorySelection\n },\n repositoryIds ? { repositoryIds } : null,\n repositoryNames ? { repositoryNames } : null,\n singleFileName ? { singleFileName } : null\n );\n}\n\n// pkg/dist-src/get-installation-authentication.js\nasync function getInstallationAuthentication(state, options, customRequest) {\n const installationId = Number(options.installationId || state.installationId);\n if (!installationId) {\n throw new Error(\n \"[@octokit/auth-app] installationId option is required for installation authentication.\"\n );\n }\n if (options.factory) {\n const { type, factory, oauthApp, ...factoryAuthOptions } = {\n ...state,\n ...options\n };\n return factory(factoryAuthOptions);\n }\n const request = customRequest || state.request;\n return getInstallationAuthenticationConcurrently(\n state,\n { ...options, installationId },\n request\n );\n}\nvar pendingPromises = /* @__PURE__ */ new Map();\nfunction getInstallationAuthenticationConcurrently(state, options, request) {\n const cacheKey = optionsToCacheKey(options);\n if (pendingPromises.has(cacheKey)) {\n return pendingPromises.get(cacheKey);\n }\n const promise = getInstallationAuthenticationImpl(\n state,\n options,\n request\n ).finally(() => pendingPromises.delete(cacheKey));\n pendingPromises.set(cacheKey, promise);\n return promise;\n}\nasync function getInstallationAuthenticationImpl(state, options, request) {\n if (!options.refresh) {\n const result = await get(state.cache, options);\n if (result) {\n const {\n token: token2,\n createdAt: createdAt2,\n expiresAt: expiresAt2,\n permissions: permissions2,\n repositoryIds: repositoryIds2,\n repositoryNames: repositoryNames2,\n singleFileName: singleFileName2,\n repositorySelection: repositorySelection2\n } = result;\n return toTokenAuthentication({\n installationId: options.installationId,\n token: token2,\n createdAt: createdAt2,\n expiresAt: expiresAt2,\n permissions: permissions2,\n repositorySelection: repositorySelection2,\n repositoryIds: repositoryIds2,\n repositoryNames: repositoryNames2,\n singleFileName: singleFileName2\n });\n }\n }\n const appAuthentication = await getAppAuthentication(state);\n const payload = {\n installation_id: options.installationId,\n mediaType: {\n previews: [\"machine-man\"]\n },\n headers: {\n authorization: `bearer ${appAuthentication.token}`\n }\n };\n if (options.repositoryIds) {\n Object.assign(payload, { repository_ids: options.repositoryIds });\n }\n if (options.repositoryNames) {\n Object.assign(payload, {\n repositories: options.repositoryNames\n });\n }\n if (options.permissions) {\n Object.assign(payload, { permissions: options.permissions });\n }\n const {\n data: {\n token,\n expires_at: expiresAt,\n repositories,\n permissions: permissionsOptional,\n repository_selection: repositorySelectionOptional,\n single_file: singleFileName\n }\n } = await request(\n \"POST /app/installations/{installation_id}/access_tokens\",\n payload\n );\n const permissions = permissionsOptional || {};\n const repositorySelection = repositorySelectionOptional || \"all\";\n const repositoryIds = repositories ? repositories.map((r) => r.id) : void 0;\n const repositoryNames = repositories ? repositories.map((repo) => repo.name) : void 0;\n const createdAt = (/* @__PURE__ */ new Date()).toISOString();\n const cacheOptions = {\n token,\n createdAt,\n expiresAt,\n repositorySelection,\n permissions,\n repositoryIds,\n repositoryNames\n };\n if (singleFileName) {\n Object.assign(payload, { singleFileName });\n }\n await set(state.cache, options, cacheOptions);\n const cacheData = {\n installationId: options.installationId,\n token,\n createdAt,\n expiresAt,\n repositorySelection,\n permissions,\n repositoryIds,\n repositoryNames\n };\n if (singleFileName) {\n Object.assign(cacheData, { singleFileName });\n }\n return toTokenAuthentication(cacheData);\n}\n\n// pkg/dist-src/auth.js\nasync function auth(state, authOptions) {\n switch (authOptions.type) {\n case \"app\":\n return getAppAuthentication(state);\n case \"oauth-app\":\n return state.oauthApp({ type: \"oauth-app\" });\n case \"installation\":\n authOptions;\n return getInstallationAuthentication(state, {\n ...authOptions,\n type: \"installation\"\n });\n case \"oauth-user\":\n return state.oauthApp(authOptions);\n default:\n throw new Error(`Invalid auth type: ${authOptions.type}`);\n }\n}\n\n// pkg/dist-src/hook.js\nimport { requiresBasicAuth } from \"@octokit/auth-oauth-user\";\nimport { RequestError } from \"@octokit/request-error\";\n\n// pkg/dist-src/requires-app-auth.js\nvar PATHS = [\n \"/app\",\n \"/app/hook/config\",\n \"/app/hook/deliveries\",\n \"/app/hook/deliveries/{delivery_id}\",\n \"/app/hook/deliveries/{delivery_id}/attempts\",\n \"/app/installations\",\n \"/app/installations/{installation_id}\",\n \"/app/installations/{installation_id}/access_tokens\",\n \"/app/installations/{installation_id}/suspended\",\n \"/app/installation-requests\",\n \"/marketplace_listing/accounts/{account_id}\",\n \"/marketplace_listing/plan\",\n \"/marketplace_listing/plans\",\n \"/marketplace_listing/plans/{plan_id}/accounts\",\n \"/marketplace_listing/stubbed/accounts/{account_id}\",\n \"/marketplace_listing/stubbed/plan\",\n \"/marketplace_listing/stubbed/plans\",\n \"/marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"/orgs/{org}/installation\",\n \"/repos/{owner}/{repo}/installation\",\n \"/users/{username}/installation\",\n \"/enterprises/{enterprise}/installation\"\n];\nfunction routeMatcher(paths) {\n const regexes = paths.map(\n (p) => p.split(\"/\").map((c) => c.startsWith(\"{\") ? \"(?:.+?)\" : c).join(\"/\")\n );\n const regex = `^(?:${regexes.map((r) => `(?:${r})`).join(\"|\")})$`;\n return new RegExp(regex, \"i\");\n}\nvar REGEX = routeMatcher(PATHS);\nfunction requiresAppAuth(url) {\n return !!url && REGEX.test(url.split(\"?\")[0]);\n}\n\n// pkg/dist-src/hook.js\nvar FIVE_SECONDS_IN_MS = 5 * 1e3;\nfunction isNotTimeSkewError(error) {\n return !(error.message.match(\n /'Expiration time' claim \\('exp'\\) is too far in the future/\n ) || error.message.match(\n /'Expiration time' claim \\('exp'\\) must be a numeric value representing the future time at which the assertion expires/\n ) || error.message.match(\n /'Issued at' claim \\('iat'\\) must be an Integer representing the time that the assertion was issued/\n ));\n}\nasync function hook(state, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n const url = endpoint.url;\n if (/\\/login\\/oauth\\/access_token$/.test(url)) {\n return request(endpoint);\n }\n if (requiresAppAuth(url.replace(request.endpoint.DEFAULTS.baseUrl, \"\"))) {\n const { token: token2 } = await getAppAuthentication(state);\n endpoint.headers.authorization = `bearer ${token2}`;\n let response;\n try {\n response = await request(endpoint);\n } catch (error) {\n if (isNotTimeSkewError(error)) {\n throw error;\n }\n if (typeof error.response.headers.date === \"undefined\") {\n throw error;\n }\n const diff = Math.floor(\n (Date.parse(error.response.headers.date) - Date.parse((/* @__PURE__ */ new Date()).toString())) / 1e3\n );\n state.log.warn(error.message);\n state.log.warn(\n `[@octokit/auth-app] GitHub API time and system time are different by ${diff} seconds. Retrying request with the difference accounted for.`\n );\n const { token: token3 } = await getAppAuthentication({\n ...state,\n timeDifference: diff\n });\n endpoint.headers.authorization = `bearer ${token3}`;\n return request(endpoint);\n }\n return response;\n }\n if (requiresBasicAuth(url)) {\n const authentication = await state.oauthApp({ type: \"oauth-app\" });\n endpoint.headers.authorization = authentication.headers.authorization;\n return request(endpoint);\n }\n const { token, createdAt } = await getInstallationAuthentication(\n state,\n // @ts-expect-error TBD\n {},\n request.defaults({ baseUrl: endpoint.baseUrl })\n );\n endpoint.headers.authorization = `token ${token}`;\n return sendRequestWithRetries(\n state,\n request,\n endpoint,\n createdAt\n );\n}\nasync function sendRequestWithRetries(state, request, options, createdAt, retries = 0) {\n const timeSinceTokenCreationInMs = +/* @__PURE__ */ new Date() - +new Date(createdAt);\n try {\n return await request(options);\n } catch (error) {\n if (error.status !== 401) {\n throw error;\n }\n if (timeSinceTokenCreationInMs >= FIVE_SECONDS_IN_MS) {\n if (retries > 0) {\n error.message = `After ${retries} retries within ${timeSinceTokenCreationInMs / 1e3}s of creating the installation access token, the response remains 401. At this point, the cause may be an authentication problem or a system outage. Please check https://www.githubstatus.com for status information`;\n }\n throw error;\n }\n ++retries;\n const awaitTime = retries * 1e3;\n state.log.warn(\n `[@octokit/auth-app] Retrying after 401 response to account for token replication delay (retry: ${retries}, wait: ${awaitTime / 1e3}s)`\n );\n await new Promise((resolve) => setTimeout(resolve, awaitTime));\n return sendRequestWithRetries(state, request, options, createdAt, retries);\n }\n}\n\n// pkg/dist-src/version.js\nvar VERSION = \"8.3.1\";\n\n// pkg/dist-src/index.js\nimport { createOAuthUserAuth } from \"@octokit/auth-oauth-user\";\nfunction createAppAuth(options) {\n if (!options.appId) {\n throw new Error(\"[@octokit/auth-app] appId option is required\");\n }\n if (!options.privateKey && !options.createJwt) {\n throw new Error(\"[@octokit/auth-app] privateKey option is required\");\n } else if (options.privateKey && options.createJwt) {\n throw new Error(\n \"[@octokit/auth-app] privateKey and createJwt options are mutually exclusive\"\n );\n }\n if (\"installationId\" in options && !options.installationId) {\n throw new Error(\n \"[@octokit/auth-app] installationId is set to a falsy value\"\n );\n }\n const log = options.log || {};\n if (typeof log.warn !== \"function\") {\n log.warn = console.warn.bind(console);\n }\n const request = options.request || defaultRequest.defaults({\n headers: {\n \"user-agent\": `octokit-auth-app.js/${VERSION} ${getUserAgent()}`\n }\n });\n const state = Object.assign(\n {\n request,\n cache: getCache()\n },\n options,\n options.installationId ? { installationId: Number(options.installationId) } : {},\n {\n log,\n oauthApp: createOAuthAppAuth({\n clientType: \"github-app\",\n clientId: options.clientId || \"\",\n clientSecret: options.clientSecret || \"\",\n request\n })\n }\n );\n return Object.assign(auth.bind(null, state), {\n hook: hook.bind(null, state)\n });\n}\nexport {\n createAppAuth,\n createOAuthUserAuth\n};\n/* v8 ignore next - permissions are optional per OpenAPI spec, but we think that is incorrect -- @preserve */\n/* v8 ignore next - repositorySelection are optional per OpenAPI spec, but we think that is incorrect -- @preserve */\n/* v8 ignore start - due to skipped tests, see https://github.com/octokit/auth-app.js/pull/580 -- @preserve */\n/* v8 ignore end -- @preserve */\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/appauth.ts\n *\t@Date: 2026-07-07T18:39:48-07:00 (1783474788)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-02T11:30:58-07:00 (1790965858)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport { Octokit } from \"@octokit/core\";\nimport { createAppAuth } from \"@octokit/auth-app\";\nimport type { Config, SecretStore } from \"./types.ts\";\n\n/**\n * Provides per-owner GitHub App\u2013authenticated Octokit clients for the operations\n * that fine-grained PATs can't do (`link_issue` \u2192 addClosingIssueReference, which\n * is not in the fine-grained-PAT GraphQL schema \u2014 only App/classic tokens see it).\n *\n * `@octokit/auth-app` handles the JWT signing + installation-token minting/refresh\n * internally, so there's no hand-rolled token machinery here. The App private key\n * lives only in the broker (systemd-creds), never in the agent.\n */\nexport class AppAuth {\n\tprivate readonly config: Config;\n\tprivate readonly appId: number;\n\tprivate readonly privateKey: string;\n\tprivate readonly cache = new Map<number, Octokit>();\n\n\tconstructor(config: Config, secrets: SecretStore) {\n\t\tif (!config.app) throw new Error(\"AppAuth: no app config\");\n\t\tthis.config = config;\n\t\tthis.appId = config.app.appId;\n\t\tthis.privateKey = secrets.resolve(config.app.privateKey);\n\t}\n\n\t/** App-authed Octokit for this owner's installation, or null if none configured. */\n\toctokitFor(owner: string): Octokit | null {\n\t\tconst installationId = this.config.owners[owner]?.installationId;\n\t\tif (installationId === undefined) return null;\n\t\tlet ok = this.cache.get(installationId);\n\t\tif (!ok) {\n\t\t\tok = new Octokit({\n\t\t\t\tauthStrategy: createAppAuth,\n\t\t\t\tauth: { appId: this.appId, privateKey: this.privateKey, installationId }\n\t\t\t});\n\t\t\tthis.cache.set(installationId, ok);\n\t\t}\n\t\treturn ok;\n\t}\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/catalog.ts\n *\t@Date: 2026-07-07T00:24:51-07:00 (1783409091)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-31T12:12:11-07:00 (1793473931)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport type { Tool } from \"@modelcontextprotocol/sdk/types.js\";\nimport type { Config, SecretStore } from \"./types.ts\";\nimport type { UpstreamPool } from \"./upstream.ts\";\n// DEFERRED: link_issue (addClosingIssueReference) is App-token-only and not wired in \u2014 see docs.\n// import { LINK_ISSUE_SCHEMA } from \"./verbs/link_issue.ts\";\nimport { RESOLVE_REVIEW_THREAD_SCHEMA, REPLY_REVIEW_THREAD_SCHEMA } from \"./verbs/review_thread.ts\";\nimport { REPORT_UNLABELED_SCHEMA } from \"./verbs/report_unlabeled.ts\";\nimport { REPORT_SECURITY_ALERTS_SCHEMA } from \"./verbs/report_security_alerts.ts\";\nimport { REPORT_RELEASE_PRS_SCHEMA } from \"./verbs/report_release_prs.ts\";\nimport { ISSUE_LABELS_SCHEMA } from \"./verbs/issue_labels.ts\";\nimport { REPORT_CI_STATUS_SCHEMA } from \"./verbs/report_ci_status.ts\";\nimport { NPM_SCAFFOLD_SCHEMA } from \"./verbs/npm_scaffold.ts\";\nimport { unavailableReason } from \"./availability.ts\";\nimport { GHCR_CATALOG } from \"./verbs/ghcr_push.ts\";\n\n/**\n * Build the advertised tool list ONCE at startup. Proxied tools carry their real\n * schemas fetched from the hosted MCP (tool schemas are owner-independent, so any\n * valid read token works \u2014 we use the first configured owner's read PAT). Custom\n * verbs carry local schemas. Only allowlisted tools appear; nothing else is\n * advertised (and, per the router, nothing else is executable either).\n *\n * If the upstream fetch fails (network/token), we advertise minimal schemas rather\n * than fail startup \u2014 the daemon still serves and calls still route correctly.\n */\nexport async function buildCatalog(config: Config, secrets: SecretStore, upstream: UpstreamPool): Promise<Tool[]> {\n\tconst upstreamByName = new Map<string, Tool>();\n\t// Whether the upstream tool list was actually fetched. If it wasn't (network/token), we must NOT drop\n\t// allowlisted tools \u2014 we fall back to minimal schemas so the daemon still serves + routes. But if the\n\t// fetch DID succeed, a tool missing from it genuinely isn't served by this upstream (wrong toolset /\n\t// renamed), so advertising a minimal-schema stub only defers the failure to call time (the confusing\n\t// \"could not determine repo owner\" \u2192 \"unknown tool\" pair) \u2014 better to skip it and say why at startup.\n\tlet upstreamFetched = false;\n\tconst firstOwner = Object.values(config.owners)[0];\n\tif (firstOwner) {\n\t\ttry {\n\t\t\tconst token = secrets.resolve(firstOwner.read);\n\t\t\t// Never let a slow/unreachable upstream hang startup \u2014 fall back to minimal schemas.\n\t\t\tconst timeoutMs = Number(process.env.GH_BROKER_CATALOG_TIMEOUT_MS ?? 10000);\n\t\t\tconst tools = await Promise.race([\n\t\t\t\tupstream.listToolsFor(token),\n\t\t\t\tnew Promise<never>((_, rej) => setTimeout(() => rej(new Error(`timed out after ${timeoutMs}ms`)), timeoutMs).unref())\n\t\t\t]);\n\t\t\tfor (const t of tools) upstreamByName.set(t.name, t);\n\t\t\tupstreamFetched = true;\n\t\t} catch (err) {\n\t\t\tconsole.error(`catalog: could not fetch upstream tool schemas (${(err as Error).message}) \u2014 advertising minimal schemas`);\n\t\t}\n\t}\n\n\tconst tools: Tool[] = [];\n\tfor (const rule of config.tools) {\n\t\tconst unavailable = unavailableReason(rule, config, secrets);\n\t\tif (unavailable) {\n\t\t\tconsole.error(`catalog: \"${rule.name}\" is not exposed: ${unavailable}`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (rule.custom) {\n\t\t\t// DEFERRED: link_issue (App-token-only addClosingIssueReference) is not wired in \u2014 see docs.\n\t\t\t// Intentionally not advertised even if an allowlist entry is added; re-enable by restoring\n\t\t\t// this branch + the import above + the router dispatch case, then config.app + installationId.\n\t\t\tif (rule.name === \"resolve_review_thread\") {\n\t\t\t\ttools.push({\n\t\t\t\t\tname: \"resolve_review_thread\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Resolve (or unresolve) a pull-request review thread \u2014 e.g. mark a Copilot review comment resolved once addressed. Takes the thread node id from pull_request_read get_review_comments. Runs on the write PAT (Pull requests: write).\",\n\t\t\t\t\tinputSchema: RESOLVE_REVIEW_THREAD_SCHEMA\n\t\t\t\t});\n\t\t\t} else if (rule.name === \"reply_review_thread\") {\n\t\t\t\ttools.push({\n\t\t\t\t\tname: \"reply_review_thread\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Post a reply inside a pull-request review thread \u2014 e.g. respond to a Copilot review comment. Takes the thread node id from pull_request_read get_review_comments. Runs on the write PAT (Pull requests: write).\",\n\t\t\t\t\tinputSchema: REPLY_REVIEW_THREAD_SCHEMA\n\t\t\t\t});\n\t\t\t} else if (rule.name === \"issue_labels\") {\n\t\t\t\ttools.push({\n\t\t\t\t\tname: \"issue_labels\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'Edit the labels on one issue or PR without touching any other label on it. add / remove take one label or several (combinable in one call); swap { prefix, to } removes every label starting with prefix and adds to (e.g. prefix \"status: \", to \"status: verified\"); set replaces the whole set and only as an explicit choice. Labels already present (add) or absent (remove) are no-ops. A label name to add that does not exist in the repo refuses the call and changes nothing, unless create_missing is true. Returns the resulting label set plus what was added, removed and created. Runs on the write PAT (Issues: write).',\n\t\t\t\t\tinputSchema: ISSUE_LABELS_SCHEMA\n\t\t\t\t});\n\t\t\t} else if (rule.name === \"npm_scaffold\") {\n\t\t\t\ttools.push({\n\t\t\t\t\tname: \"npm_scaffold\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Create a new npm package and register its GitHub Actions trusted publisher, so the repo's publish workflow can release it through OIDC from then on. Publishes a broker-built placeholder (0.0.0-stage, no code) and never publishes a version of an existing package. Every npm write needs its own one-time password from the user, so it takes two calls: the first publishes the placeholder and returns status needs_otp; ask the user for the next code and call again to add the trusted publisher. Ask for each code right before the call. A refused or expired code also returns needs_otp with the remaining steps. Checks first that the repo's package.json names the package and that the workflow file exists. Uses the broker's npm token (no 2FA bypass) and the read PAT.\",\n\t\t\t\t\tinputSchema: NPM_SCAFFOLD_SCHEMA\n\t\t\t\t});\n\t\t\t} else if (rule.name === \"report_unlabeled\") {\n\t\t\t\ttools.push({\n\t\t\t\t\tname: \"report_unlabeled\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Report issues and/or PRs with no labels, for one repo or every non-archived repo an owner has. Bounded by maxRepos/perRepoLimit/maxApiCalls; returns truncated:true (with a reason) instead of failing outright if a cap or GitHub's rate limit is hit mid-scan. Runs on the read PAT.\",\n\t\t\t\t\tinputSchema: REPORT_UNLABELED_SCHEMA\n\t\t\t\t});\n\t\t\t} else if (rule.name === \"report_security_alerts\") {\n\t\t\t\ttools.push({\n\t\t\t\t\tname: \"report_security_alerts\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Report every open Dependabot, code-scanning (CodeQL) and secret-scanning alert, for one repo or across every repo an owner has. Reads the org-level endpoints in a handful of calls and falls back to a per-repo sweep for any alert type the token can't read org-wide. Alert state tracks the default branch. Secret values are never returned. Bounded by maxRepos/alertLimit/maxApiCalls; returns truncated:true (with a reason) instead of failing outright if a cap or GitHub's rate limit is hit. Runs on the read PAT.\",\n\t\t\t\t\tinputSchema: REPORT_SECURITY_ALERTS_SCHEMA\n\t\t\t\t});\n\t\t\t} else if (rule.name === \"report_release_prs\") {\n\t\t\t\ttools.push({\n\t\t\t\t\tname: \"report_release_prs\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Report every open release PR (label `release`: next\u2192master and hotfixes\u2192master) for one repo or across every repo an owner has, and whether each one's per-version changelog file (docs/changelog[s]/v<major>/vX.Y.Z.md) is already on the release branch. Status per PR: ready, needs-changelog, or unknown-version (title has no `release: vX.Y.Z`). Use during mass updates to find which repos need a changelog. One search call plus two calls per release PR found; returns truncated:true with a reason if a cap or GitHub's rate limit is hit. Runs on the read PAT.\",\n\t\t\t\t\tinputSchema: REPORT_RELEASE_PRS_SCHEMA\n\t\t\t\t});\n\t\t\t} else if (rule.name === \"report_ci_status\") {\n\t\t\t\ttools.push({\n\t\t\t\t\tname: \"report_ci_status\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Report CI health for a PR, or every open PR in a repo, at a chosen verbosity: 0 counts only, 1 adds which run/job failed, 2 adds which step failed, 3 adds a tail of the failing job's log. Detail beyond tier 0 is only fetched for runs that are actually failing. Runs on the read PAT.\",\n\t\t\t\t\tinputSchema: REPORT_CI_STATUS_SCHEMA\n\t\t\t\t});\n\t\t\t} else if (GHCR_CATALOG[rule.name]) {\n\t\t\t\ttools.push({ name: rule.name, ...GHCR_CATALOG[rule.name]! });\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst up = upstreamByName.get(rule.name);\n\t\tif (!up && upstreamFetched) {\n\t\t\t// Reachable upstream that doesn't expose this tool \u2192 it would 32602 at call time. Skip + warn.\n\t\t\tconsole.error(`catalog: allowlisted tool \"${rule.name}\" is NOT exposed by the upstream (${config.upstream}) \u2014 skipping it. Check the tool name or the upstream toolset (e.g. use /mcp/x/all for non-default toolsets like labels).`);\n\t\t\tcontinue;\n\t\t}\n\t\tconst base = up ?? { name: rule.name, description: `(${rule.mode}) proxied to the GitHub MCP`, inputSchema: { type: \"object\" } };\n\t\tif (rule.augment && rule.name === \"pull_request_read\") {\n\t\t\t// Layer gh-broker's own extension params onto the real upstream schema \u2014 the\n\t\t\t// forwarded call still needs pull_request_read's actual params (method,\n\t\t\t// pullNumber, ...); this ADDS to that, it doesn't replace it. See router.ts's\n\t\t\t// dispatchAugmented for why gh-broker can extend a proxied tool's contract.\n\t\t\tconst baseSchema = base.inputSchema as { properties?: Record<string, unknown>; [k: string]: unknown };\n\t\t\ttools.push({\n\t\t\t\t...base,\n\t\t\t\tdescription: `${base.description} gh-broker extension: with method \"get\", pass \"ciVerbosity\" (0-3) to also compute CI status for the PR's current head \u2014 0 counts only, 1 adds which run/job failed, 2 adds which step failed, 3 adds a tail of the failing job's log; \"logLines\" tunes tier 3's tail length.`,\n\t\t\t\tinputSchema: {\n\t\t\t\t\t...baseSchema,\n\t\t\t\t\ttype: \"object\",\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\t...(baseSchema.properties ?? {}),\n\t\t\t\t\t\tciVerbosity: { type: \"number\", enum: [0, 1, 2, 3], description: 'gh-broker extension: also compute CI status at this verbosity (method \"get\" only)' },\n\t\t\t\t\t\tlogLines: { type: \"number\", description: \"gh-broker extension: tier-3 log tail length\" }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (rule.name === \"issue_write\") {\n\t\t\t// issue_write's `labels` REPLACES the issue's whole label set \u2014 the trap behind\n\t\t\t// CLDMV/gh-broker#117. Say so where the agent reads the tool, and point at the verb\n\t\t\t// that edits labels one at a time when it is allowlisted.\n\t\t\tconst pointer = config.tools.some((t) => t.name === \"issue_labels\" && t.custom)\n\t\t\t\t? \" To add, remove or swap individual labels, use issue_labels instead.\"\n\t\t\t\t: \" Read the current labels first and pass the full set you want to keep.\";\n\t\t\ttools.push({\n\t\t\t\t...base,\n\t\t\t\tdescription: `${base.description ?? \"\"} WARNING (gh-broker): \"labels\" REPLACES the issue's whole label set \u2014 every label not listed is removed.${pointer}`.trim()\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\ttools.push(base);\n\t}\n\treturn tools;\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/server.ts\n *\t@Date: 2026-07-07T00:24:51-07:00 (1783409091)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-02T11:30:58-07:00 (1790965858)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport { createServer, type Socket } from \"node:net\";\nimport { chmodSync, chownSync, existsSync, readFileSync, unlinkSync } from \"node:fs\";\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { CallToolRequestSchema, ListToolsRequestSchema, type Tool } from \"@modelcontextprotocol/sdk/types.js\";\nimport type { Config } from \"./types.ts\";\nimport type { Router } from \"./router.ts\";\n\nconst SERVER_INFO = { name: \"gh-broker\", version: \"0.1.0\" };\n\nfunction socketPath(listen: string): string {\n\tif (!listen.startsWith(\"unix:\")) throw new Error(`server: unsupported listen \"${listen}\"`);\n\treturn listen.slice(\"unix:\".length);\n}\n\n/** Resolve a group name \u2192 gid via /etc/group (no native Node API for this). */\nfunction groupGid(name: string): number | undefined {\n\ttry {\n\t\tfor (const line of readFileSync(\"/etc/group\", \"utf8\").split(\"\\n\")) {\n\t\t\tconst parts = line.split(\":\");\n\t\t\tif (parts[0] === name && parts[2]) return Number(parts[2]);\n\t\t}\n\t} catch {\n\t\t/* ignore \u2014 fall back to RuntimeDirectory perms */\n\t}\n\treturn undefined;\n}\n\n/**\n * Each agent connection (a socat stdio bridge to our Unix socket) gets its own MCP\n * Server over a StdioServerTransport bound to that socket. `tools/list` returns the\n * pre-built catalog; `tools/call` delegates to the router (allowlist + owner/mode \u2192\n * PAT + forward/dispatch). The token never crosses to this side.\n */\nfunction handleConnection(socket: Socket, router: Router, catalog: Tool[]): void {\n\tconst server = new Server(SERVER_INFO, { capabilities: { tools: {} } });\n\n\tserver.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: catalog }));\n\tserver.setRequestHandler(CallToolRequestSchema, async (req) => {\n\t\tconst args = (req.params.arguments ?? {}) as Record<string, unknown>;\n\t\treturn router.call(req.params.name, args);\n\t});\n\n\tconst transport = new StdioServerTransport(socket, socket);\n\tserver.connect(transport).catch((err: unknown) => {\n\t\tconsole.error(`gh-broker: connection error: ${(err as Error).message}`);\n\t\tsocket.destroy();\n\t});\n\tsocket.on(\"close\", () => void server.close().catch(() => {}));\n\tsocket.on(\"error\", () => {\n\t\t/* client hangup \u2014 ignore */\n\t});\n}\n\nexport function startServer(config: Config, router: Router, catalog: Tool[]): Promise<void> {\n\tconst path = socketPath(config.listen);\n\tif (existsSync(path)) unlinkSync(path); // clear a stale socket from a prior run\n\n\treturn new Promise((resolve, reject) => {\n\t\tconst server = createServer((sock: Socket) => handleConnection(sock, router, catalog));\n\t\tserver.on(\"error\", reject);\n\t\tserver.listen(path, () => {\n\t\t\t// Restrict the socket to the agent-clients group: chgrp to gh-broker-clients,\n\t\t\t// mode 0660 (owner+group rw). The agent user is a member of that group.\n\t\t\tconst group = process.env.GH_BROKER_SOCKET_GROUP ?? \"gh-broker-clients\";\n\t\t\tconst gid = groupGid(group);\n\t\t\ttry {\n\t\t\t\tif (gid !== undefined) chownSync(path, process.getuid?.() ?? -1, gid);\n\t\t\t\tchmodSync(path, 0o660);\n\t\t\t} catch {\n\t\t\t\t/* best-effort; RuntimeDirectory perms already restrict access */\n\t\t\t}\n\t\t\tresolve();\n\t\t});\n\t});\n}\n", null, null, null, null, "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/index.ts\n *\t@Date: 2026-07-07T00:24:51-07:00 (1783409091)\n *\t@Author: Nate Corcoran <CLDMV>\n *\t@Email: <Shinrai@users.noreply.github.com>\n *\t-----\n *\t@Last modified by: Nate Corcoran <CLDMV> (Shinrai@users.noreply.github.com)\n *\t@Last modified time: 2026-10-02T11:30:58-07:00 (1790965858)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport { loadConfig } from \"./config.ts\";\nimport { loadSecretStore } from \"./secrets.ts\";\nimport { UpstreamPool } from \"./upstream.ts\";\nimport { Router } from \"./router.ts\";\nimport { AppAuth } from \"./appauth.ts\";\nimport { buildCatalog } from \"./catalog.ts\";\nimport { startServer } from \"./server.ts\";\nimport { resolveConfigPath } from \"./paths.ts\";\n\nfunction argConfig(): string {\n\tconst i = process.argv.indexOf(\"--config\");\n\tif (i >= 0) {\n\t\t// Fail fast on `--config` with no value (or a flag as the \"value\") rather than\n\t\t// silently falling back to env/default and hiding the operator's mistake.\n\t\tconst explicit = process.argv[i + 1];\n\t\tif (!explicit || explicit.startsWith(\"-\")) throw new Error(\"--config requires a path argument\");\n\t\treturn resolveConfigPath(explicit);\n\t}\n\treturn resolveConfigPath(undefined);\n}\n\nasync function main(): Promise<void> {\n\tconst configPath = argConfig();\n\n\t// --print-paths: emit the resolved config + secrets paths and exit. The\n\t// installer uses this so there is one path resolver (src/paths.ts), no drift.\n\t// Honor a deployed config's secrets.path override when the config already exists\n\t// (upgrades); fall back to the default when it doesn't (first install) or is\n\t// unparseable \u2014 this must not require a valid config to run.\n\tif (process.argv.includes(\"--print-paths\")) {\n\t\tconst { resolveSecretsPath } = await import(\"./paths.ts\");\n\t\tlet secretsOverride: string | undefined;\n\t\ttry {\n\t\t\tsecretsOverride = loadConfig(configPath).secrets?.path;\n\t\t} catch {\n\t\t\tsecretsOverride = undefined;\n\t\t}\n\t\tconsole.log(JSON.stringify({ config: configPath, secrets: resolveSecretsPath(secretsOverride) }));\n\t\treturn;\n\t}\n\n\tconst config = loadConfig(configPath);\n\n\t// --check: validate the config parses (and, where possible, that credentials\n\t// resolve), then exit WITHOUT starting the server. The installer runs this to\n\t// fail an install/upgrade early. The file provider validates here; the\n\t// systemd-creds provider can only resolve under systemd (needs\n\t// $CREDENTIALS_DIRECTORY), so it's checked at service start / by the smoke test.\n\tif (process.argv.includes(\"--check\")) {\n\t\tconst provider = config.secrets?.provider ?? \"systemd-creds\";\n\t\t// Truthy, not just \"defined\": the systemd-creds store treats an empty\n\t\t// $CREDENTIALS_DIRECTORY as unset (if (!dir)), so --check must too \u2014 otherwise\n\t\t// it would attempt secret resolution and fail where it should report unchecked.\n\t\tconst secretsChecked = provider === \"file\" || Boolean(process.env.CREDENTIALS_DIRECTORY);\n\t\tif (secretsChecked) loadSecretStore(config);\n\t\tconsole.log(JSON.stringify({ event: \"config-ok\", config: configPath, provider, secretsChecked, owners: Object.keys(config.owners), tools: config.tools.length }));\n\t\treturn;\n\t}\n\n\tconst secrets = loadSecretStore(config); // eagerly validates every referenced credential\n\tconst upstream = new UpstreamPool(config);\n\n\t// Optional GitHub App (for link_issue). Non-fatal: a misconfigured App disables\n\t// link_issue but never takes down the read/write path.\n\tlet appAuth: AppAuth | undefined;\n\tif (config.app) {\n\t\ttry {\n\t\t\tappAuth = new AppAuth(config, secrets);\n\t\t} catch (err) {\n\t\t\tconsole.error(`gh-broker: app-auth disabled (link_issue unavailable): ${(err as Error).message}`);\n\t\t}\n\t}\n\n\tconst router = new Router(config, secrets, upstream, appAuth);\n\tconst catalog = await buildCatalog(config, secrets, upstream);\n\tawait startServer(config, router, catalog);\n\tconsole.log(\n\t\tJSON.stringify({\n\t\t\tts: new Date().toISOString(),\n\t\t\tevent: \"listening\",\n\t\t\tlisten: config.listen,\n\t\t\towners: Object.keys(config.owners),\n\t\t\tapp: appAuth ? \"enabled\" : \"none\",\n\t\t\ttools: catalog.map((t) => t.name)\n\t\t})\n\t);\n}\n\nmain().catch((err: unknown) => {\n\tconsole.error(`gh-broker: fatal: ${(err as Error).message}`);\n\tprocess.exit(1);\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["_a", "names", "key", "UsedValueState", "_a", "names", "constants", "error", "_a", "key", "key", "mergeValues", "Type", "names", "error", "_a", "DataType", "EQ", "key", "validate", "_a", "key", "key", "key", "normalize", "key", "env", "_a", "validate", "normalize", "parse", "_a", "Ajv", "meta", "key", "env", "_a", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "error", "key", "error", "key", "error", "key", "key", "error", "error", "error", "fmt", "DiscrError", "error", "_a", "required", "Ajv", "validate", "date", "time", "error", "fmt", "_a", "parse", "string", "header", "key", "owner", "image", "custom", "owner", "readFileSync", "join", "config", "owner", "cached", "readFileSync", "join", "initializer", "_a", "isObject", "array", "set", "object", "key", "isObject", "Class", "_a", "config", "base64", "base64url", "error", "issue", "version", "time", "_a", "inst", "_a", "inst", "_a", "checks", "checkResult", "canary", "result", "_", "url", "base64", "header", "result", "key", "r", "isObject", "allowsEval", "results", "isObject", "left", "right", "key", "key", "result", "output", "result", "result", "right", "left", "r", "issue", "_a", "meta", "_a", "Class", "_emoji", "Class", "Class", "Class", "Class", "_null", "Class", "Class", "Class", "Class", "issue", "process", "_a", "meta", "id", "schema", "key", "process", "key", "process", "process", "safeParse", "result", "def", "date", "datetime", "duration", "time", "datetime", "date", "time", "duration", "initializer", "issue", "issues", "initializer", "parse", "parseAsync", "safeParse", "safeParseAsync", "encode", "decode", "encodeAsync", "decodeAsync", "safeEncode", "safeDecode", "safeEncodeAsync", "safeDecodeAsync", "key", "parse", "safeParse", "parseAsync", "safeParseAsync", "encode", "decode", "encodeAsync", "decodeAsync", "safeEncode", "safeDecode", "safeEncodeAsync", "safeDecodeAsync", "def", "meta", "_emoji", "datetime", "date", "time", "duration", "string", "number", "boolean", "_null", "object", "string", "issue", "output", "ZodFirstPartyTypeKind", "bigint", "boolean", "date", "number", "string", "string", "number", "boolean", "bigint", "date", "string", "number", "object", "ErrorCode", "object", "number", "string", "string", "object", "boolean", "object", "string", "boolean", "number", "_null", "object", "string", "string", "number", "boolean", "object", "safeParse", "request", "error", "task", "safeParse", "jsonrpcNotification", "isPlainObject", "key", "Ajv", "_addFormats", "error", "request", "key", "config", "request", "safeParse", "error", "header", "contentType", "url", "url", "string", "boolean", "object", "number", "url", "error", "tokens", "url", "url", "error", "url", "refreshToken", "config", "trailing", "value", "line", "error", "url", "error", "contentType", "version", "config", "name", "method", "hook", "error", "hook", "object", "key", "isPlainObject", "merge", "url", "names", "omit", "literal", "parse", "parse", "header", "key", "code", "key", "isObject", "error", "VERSION", "isPlainObject", "noop", "fetch", "error", "url", "key", "contentType", "parse", "withDefaults", "VERSION", "key", "withDefaults", "auth", "request", "endpoint", "VERSION", "noop", "VERSION", "hook", "auth", "config", "owner", "owner", "owner", "DEFAULT_MAX_REPOS", "HARD_MAX_REPOS", "DEFAULT_MAX_API_CALLS", "HARD_MAX_API_CALLS", "owner", "number", "merge", "version", "owner", "DEFAULT_MAX_API_CALLS", "HARD_MAX_API_CALLS", "version", "owner", "fail", "unknown", "set", "owner", "issue", "DEFAULT_MAX_API_CALLS", "HARD_MAX_API_CALLS", "owner", "auth", "INPUT_KEYS", "fail", "validate", "unknown", "statusOf", "owner", "registry", "access", "createHash", "isAbsolute", "join", "normalize", "BLOCK", "fail", "fail", "normalize", "isAbsolute", "join", "createHash", "url", "req", "auth", "createHash", "createHash", "sha256", "registry", "config", "meta", "owner", "unknown", "owner", "image", "registry", "GHCR_TOOLS", "config", "owner", "registry", "request", "error", "request", "request", "auth", "auth2", "request", "error", "auth", "hook", "endpoint", "VERSION", "VERSION", "auth", "error", "url", "hook", "request", "endpoint", "auth", "hook", "endpoint", "error", "VERSION", "header", "base64", "header", "key", "error", "string", "key", "request", "auth", "url", "hook", "endpoint", "VERSION", "config", "owner", "config", "tools", "readFileSync", "request", "request", "safeParse", "error", "process", "process", "error", "readFileSync", "req", "config", "resolveSecretsPath", "config"]
|
|
7
|
+
}
|