@cldmv/gh-broker 0.10.0 → 0.10.2

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.
@@ -1,7 +0,0 @@
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/otp/totp.ts", "../src/otp/policy.ts", "../src/agents.ts", "../src/denylist.ts", "../src/secrets.ts", "../node_modules/zod/v4/core/util.js", "../node_modules/zod/v4/core/core.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/core/memoizer.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/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/iso.js", "../node_modules/zod/v4/classic/coerce.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/npm-registry.ts", "../src/verbs/report_dependents.ts", "../src/verbs/report_security_alerts.ts", "../src/verbs/release-analysis.ts", "../src/verbs/report_release_prs.ts", "../src/verbs/report_release_changes.ts", "../src/verbs/lockfile.ts", "../src/verbs/report_alert_status.ts", "../src/verbs/issue_labels.ts", "../src/verbs/report_ci_status.ts", "../src/verbs/npm-tarball.ts", "../src/verbs/npm_scaffold.ts", "../src/verbs/minimize_comment.ts", "../src/verbs/delete_branch.ts", "../src/verbs/dismiss_alert.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/otp/gate.ts", "../src/otp/state.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/verbs/otp_status.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 * Removes dot segments from the path of a relative reference (a path that does\n * not start with \"/\") without changing what it resolves to against any base.\n * Unlike `removeDotSegments`, leading \"..\" segments that cannot be collapsed\n * are kept, the result never becomes root-relative, and a result that would be\n * empty or start with an empty segment is prefixed with \".\" (an empty path\n * means \"same document\" and a leading \"//\" would introduce an authority).\n *\n * @param {string} path\n * @returns {string}\n */\nfunction removeDotSegmentsRelative (path) {\n if (path === '' || path[0] === '/') {\n return removeDotSegments(path)\n }\n\n const segments = path.split('/')\n const last = segments.length - 1\n /** @type {string[]} */\n const output = []\n let trailingDirectory = false\n\n for (let i = 0; i <= last; i++) {\n const segment = segments[i]\n if (segment === '.' || segment === '..') {\n if (segment === '..') {\n if (output.length !== 0 && output[output.length - 1] !== '..') {\n output.pop()\n } else {\n output.push('..')\n }\n }\n trailingDirectory = i === last\n } else {\n output.push(segment)\n }\n }\n\n if (trailingDirectory && output[output.length - 1] !== '..') {\n output.push('')\n }\n if (output.length === 0 || output[0] === '' || output[0].includes(':')) {\n // An empty path, a leading empty segment (\"//\"), or a first segment\n // containing \":\" (which would be mistaken for a scheme, RFC 3986 section\n // 4.2) must stay behind a \".\" segment so the reference keeps its meaning.\n output.unshift('.')\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 removeDotSegmentsRelative,\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, removeDotSegmentsRelative, 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.'\nconst MALFORMED_HOST_ERROR = 'URI host is malformed.'\n// ASCII characters outside the RFC 3986 reg-name set (unreserved, sub-delims\n// and \"%\" for pct-encoded): C0 controls, space, DEL, and \"#/:<>?@[\\]^`{|}.\nconst FORBIDDEN_DOMAIN_HOST_CHARACTER = /[\\0-\\x20\"#/:<>?@[\\\\\\]^`{|}\\x7F]/u\n\n/**\n * RFC 3986 section 3.1 does not allow percent-encoding in a scheme, so the\n * scheme is validated as-is and never decoded. Decoding would let inert input\n * such as `%6Aavascript:` become a live `javascript:` scheme.\n *\n * @param {string} scheme\n * @returns {string}\n */\nfunction validateScheme (scheme) {\n const stringScheme = String(scheme)\n if (!VALID_SCHEME.test(stringScheme)) {\n throw new TypeError(MALFORMED_SCHEME_ERROR)\n }\n return stringScheme\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 // Inputs are parsed scheme-neutrally, so delimiters and controls in a domain\n // host are only detected here, once the final scheme is known. They always\n // fail closed, including in percent-encoded hosts.\n if (hasForbiddenDomainHost(resolved, options || {}, resolvedSchemeHandler, resolvedHostIsIP)) {\n throw new Error(MALFORMED_HOST_ERROR)\n }\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 const baseHasAuthority = base.userinfo !== undefined || base.host !== undefined || base.port !== undefined\n if (baseHasAuthority && !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 = base.scheme === undefined && !baseHasAuthority && target.path[0] !== '/'\n ? removeDotSegmentsRelative(target.path)\n : 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 = validateScheme(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 // A reference with no emitted scheme is path-noscheme: a bare ':' in its\n // first path segment would reparse as a scheme (RFC 3986 3.3/4.2). Enforced\n // under skipEscape too (resolve()), so the reapply below gates on this flag.\n const schemelessReference = (component.scheme === undefined || options.reference === 'suffix') && !hasAuthority\n const pathNoScheme = !options.skipEscape && schemelessReference\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 = validateScheme(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 // A relative-path reference keeps its unresolvable leading \"..\" segments\n // and must never become root-relative (RFC 3986 section 5.2.4 applies to\n // merged target paths, not to the reference itself).\n s = schemelessReference && s[0] !== '/'\n ? removeDotSegmentsRelative(s)\n : 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 (schemelessReference) {\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 (hasForbiddenDomainHost(parsed, options, schemeHandler, isIP)) {\n parsed.error = parsed.error || MALFORMED_HOST_ERROR\n return true\n }\n\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 let url\n try {\n url = new URL('http://' + parsed.host)\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n return true\n }\n // The WHATWG parser must have read the whole input as a host. Anything\n // else means it found a delimiter fast-uri did not, so its hostname would\n // describe a different authority.\n if (!isHostOnlyURL(url)) {\n parsed.error = parsed.error || MALFORMED_HOST_ERROR\n return true\n }\n parsed.host = url.hostname\n }\n return false\n}\n\n/**\n * Whether a domain host contains an ASCII character that RFC 3986 does not\n * allow in a reg-name (unreserved, sub-delims, or pct-encoded). Such a host is\n * rejected instead of being handed to the WHATWG URL parser, which would treat\n * \"@\" as a userinfo delimiter (silently dropping the data before it) and strip\n * TAB, LF, and CR. Non-ASCII characters remain allowed for IDNs.\n *\n * @param {import('./types/index').URIComponent} parsed\n * @param {import('./types/index').Options} options\n * @param {{ domainHost?: boolean }|undefined} schemeHandler\n * @param {boolean} isIP\n * @returns {boolean}\n */\nfunction hasForbiddenDomainHost (parsed, options, schemeHandler, isIP) {\n return Boolean(\n parsed.host &&\n isIP === false &&\n !isIPLiteral(parsed.host) &&\n (options.domainHost || (schemeHandler && schemeHandler.domainHost)) &&\n FORBIDDEN_DOMAIN_HOST_CHARACTER.test(parsed.host)\n )\n}\n\n/**\n * @param {URL} url\n * @returns {boolean}\n */\nfunction isHostOnlyURL (url) {\n return url.username === '' &&\n url.password === '' &&\n url.port === '' &&\n url.pathname === '/' &&\n url.search === '' &&\n url.hash === '' &&\n url.hostname !== ''\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 if (VALID_SCHEME.test(parsed.scheme)) {\n parsed.scheme = parsed.scheme.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 || MALFORMED_HOST_ERROR\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 // Resolution parses both inputs with the internal `null` scheme before\n // the effective scheme is known. Keep raw host delimiters for that step\n // so resolve() can reject them for domain-host schemes; the resolved\n // authority is encoded when it is serialized.\n parsed.host = isIP || options.scheme !== 'null' ? reescapeHostDelimiters(host, isIP) : host\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-11-02T21:27:13-08:00 (1793683633)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\nimport { readFileSync } from \"node:fs\";\nimport { isAbsolute } from \"node:path\";\nimport type { Config, Mode, OtpConfig, ToolRule } from \"./types.ts\";\nimport { parseGhcrConfig } from \"./verbs/ghcr/config.ts\";\nimport { OTP_STATUS } from \"./otp/policy.ts\";\nimport { agentsDir } from \"./agents.ts\";\nimport { deniedReason } from \"./denylist.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: the shared \"unix:\" socket was replaced by one socket per agent; re-run the installer (sudo gh-broker install) to set listen to \"agents:/run/gh-broker/agents\"');\n\t}\n\tif (typeof c.listen !== \"string\" || !agentsDir(c.listen)) {\n\t\tthrow new Error('config.listen: must be \"agents:<absolute directory>\", e.g. \"agents:/run/gh-broker/agents\"');\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\tconst denied = deniedReason(o.name);\n\t\tif (denied) throw new Error(`config.tools[${i}] (\"${o.name}\"): never allowed in gh-broker (${denied}); remove it from config.tools`);\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\tif (o.otp !== undefined && typeof o.otp !== \"boolean\") throw new Error(`config.tools[${i}].otp: must be true or false`);\n\t\tif (o.enabled !== undefined && typeof o.enabled !== \"boolean\") throw new Error(`config.tools[${i}].enabled: must be true or false`);\n\t\tif (o.name === OTP_STATUS) {\n\t\t\t// otp_status has to keep working while everything else is locked, so it can't be gated.\n\t\t\tif (o.otp === true) throw new Error(`config.tools[${i}] (\"${OTP_STATUS}\"): can't be gated (otp: true)`);\n\t\t\tif (o.enabled === false) throw new Error(`config.tools[${i}] (\"${OTP_STATUS}\"): can't be disabled (enabled: false)`);\n\t\t\tif (!custom) throw new Error(`config.tools[${i}] (\"${OTP_STATUS}\"): must be custom: true`);\n\t\t}\n\t\treturn { name: o.name, mode: o.mode as Mode, custom, augment, ...(typeof o.otp === \"boolean\" ? { otp: o.otp } : {}), ...(typeof o.enabled === \"boolean\" ? { enabled: o.enabled } : {}) };\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\tconst otp = c.otp !== undefined ? parseOtpConfig(c.otp) : undefined;\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\t...(otp ? { otp } : {})\n\t};\n}\n\n/** Validate config.otp. Every limit is a positive integer; omitted ones take the defaults. */\nfunction parseOtpConfig(raw: unknown): OtpConfig {\n\tif (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) throw new Error(\"config.otp: must be an object\");\n\tconst o = raw as Record<string, unknown>;\n\tif (typeof o.seed !== \"string\" || !o.seed.startsWith(\"cred:\")) throw new Error('config.otp.seed: must be a \"cred:<name>\" ref');\n\tconst out: OtpConfig = { seed: o.seed };\n\tfor (const key of [\"windowSeconds\", \"maxFailures\", \"lockoutSeconds\", \"maxLockouts\"] as const) {\n\t\tconst v = o[key];\n\t\tif (v === undefined) continue;\n\t\tif (typeof v !== \"number\" || !Number.isSafeInteger(v) || v <= 0) throw new Error(`config.otp.${key}: must be a positive integer`);\n\t\tout[key] = v;\n\t}\n\tif (o.statePath !== undefined) {\n\t\tif (typeof o.statePath !== \"string\" || !isAbsolute(o.statePath)) throw new Error(\"config.otp.statePath: must be an absolute path\");\n\t\tout.statePath = o.statePath;\n\t}\n\treturn out;\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/otp/totp.ts\n *\t@Date: 2026-11-01T20:43:25-08:00 (1793594605)\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-01T20:43:25-08:00 (1793594605)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * RFC 6238 TOTP (HMAC-SHA1, 30 s step) and RFC 4648 base32, on node:crypto only.\n * The broker's codes are 6 digits; the digit count is a parameter so the RFC's own\n * 8-digit test vectors can check the implementation.\n */\n\nimport { createHmac, timingSafeEqual } from \"node:crypto\";\n\nconst BASE32_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\n\n/** TOTP time step, in seconds. */\nexport const STEP_SECONDS = 30;\n\n/** Encode bytes as unpadded RFC 4648 base32. */\nexport function base32Encode(bytes: Uint8Array): string {\n\tlet out = \"\";\n\tlet bits = 0;\n\tlet value = 0;\n\tfor (const byte of bytes) {\n\t\tvalue = (value << 8) | byte;\n\t\tbits += 8;\n\t\twhile (bits >= 5) {\n\t\t\tout += BASE32_ALPHABET[(value >>> (bits - 5)) & 31];\n\t\t\tbits -= 5;\n\t\t}\n\t}\n\tif (bits > 0) out += BASE32_ALPHABET[(value << (5 - bits)) & 31];\n\treturn out;\n}\n\n/**\n * Decode RFC 4648 base32. Case-insensitive; trailing \"=\" padding is tolerated. Throws on\n * any other character, so a damaged seed is reported instead of silently producing\n * codes nobody's authenticator can match.\n */\nexport function base32Decode(text: string): Buffer {\n\tconst clean = text.toUpperCase().replace(/=+$/, \"\");\n\tconst out: number[] = [];\n\tlet bits = 0;\n\tlet value = 0;\n\tfor (const ch of clean) {\n\t\tconst idx = BASE32_ALPHABET.indexOf(ch);\n\t\tif (idx < 0) throw new Error(\"base32: invalid character\");\n\t\tvalue = (value << 5) | idx;\n\t\tbits += 5;\n\t\tif (bits >= 8) {\n\t\t\tout.push((value >>> (bits - 8)) & 255);\n\t\t\tbits -= 8;\n\t\t}\n\t}\n\treturn Buffer.from(out);\n}\n\n/** RFC 4226 HOTP for one counter value, zero-padded to `digits`. */\nexport function hotp(key: Buffer, counter: number, digits = 6): string {\n\tconst msg = Buffer.alloc(8);\n\tmsg.writeBigUInt64BE(BigInt(counter));\n\tconst mac = createHmac(\"sha1\", key).update(msg).digest();\n\tconst offset = mac[mac.length - 1]! & 0x0f;\n\tconst bin = ((mac[offset]! & 0x7f) << 24) | (mac[offset + 1]! << 16) | (mac[offset + 2]! << 8) | mac[offset + 3]!;\n\treturn String(bin % 10 ** digits).padStart(digits, \"0\");\n}\n\n/** The TOTP time step that contains `nowMs`. */\nexport function stepAt(nowMs: number): number {\n\treturn Math.floor(nowMs / 1000 / STEP_SECONDS);\n}\n\n/** The TOTP code for the step containing `nowMs`. */\nexport function totpAt(key: Buffer, nowMs: number, digits = 6): string {\n\treturn hotp(key, stepAt(nowMs), digits);\n}\n\n/** Constant-time string comparison; strings of different lengths never match. */\nexport function safeEqual(a: string, b: string): boolean {\n\tconst x = Buffer.from(a);\n\tconst y = Buffer.from(b);\n\treturn x.length === y.length && timingSafeEqual(x, y);\n}\n\n/**\n * The step a code is valid for at `nowMs`, accepting `skew` steps either side, or\n * undefined when it matches none. Every candidate step is compared (no early exit), and\n * each comparison is constant-time. A malformed code (not exactly `digits` digits) never\n * matches.\n */\nexport function matchStep(key: Buffer, code: string, nowMs: number, skew = 1, digits = 6): number | undefined {\n\tif (!new RegExp(`^\\\\d{${digits}}$`).test(code)) return undefined;\n\tconst now = stepAt(nowMs);\n\tlet matched: number | undefined;\n\tfor (let step = now - skew; step <= now + skew; step++) {\n\t\tif (safeEqual(hotp(key, step, digits), code)) matched = step;\n\t}\n\treturn matched;\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/otp/policy.ts\n *\t@Date: 2026-11-01T20:43:25-08:00 (1793594605)\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-02T21:27:13-08:00 (1793683633)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Which tools need a broker OTP, and whether OTP is set up at all. Catalog, router and\n * availability all ask here, so the advertised schema, the availability check and the\n * gate itself can never disagree about a tool.\n */\n\nimport type { Config, OtpConfig, SecretStore, ToolRule } from \"../types.ts\";\nimport { base32Decode } from \"./totp.ts\";\n\n/** The status verb. Never gated and never blocked by a lock, so a locked agent can still report. */\nexport const OTP_STATUS = \"otp_status\";\n\n/** The argument a gated call carries its code in (npm_scaffold's own npm code is `npm_otp`). */\nexport const OTP_ARG = \"otp\";\n\n/**\n * Tools gated when config.tools[i].otp doesn't say otherwise (#146): each one can publish,\n * merge, release or undo something under the user's name. Every other tool defaults to ungated.\n */\nexport const DEFAULT_GATED: ReadonlySet<string> = new Set<string>([\n\t\"create_repository\",\n\t\"fork_repository\",\n\t\"merge_pull_request\",\n\t\"pull_request_review_write\",\n\t\"actions_run_trigger\",\n\t\"label_write\",\n\t\"delete_branch\",\n\t\"dismiss_alert\",\n\t// Disabled by default too (src/availability.ts); gated once enabled.\n\t\"create_pull_request_with_copilot\",\n\t\"assign_copilot_to_issue\",\n\t\"assign_copilot_to_issue_with_intent\"\n]);\n\nexport const OTP_DEFAULTS = {\n\twindowSeconds: 300,\n\tmaxFailures: 5,\n\tlockoutSeconds: 600,\n\tmaxLockouts: 3,\n\tstatePath: \"/var/lib/gh-broker/otp-state.json\"\n} as const;\n\nexport type OtpSettings = Required<Omit<OtpConfig, \"seed\">>;\n\n/** config.otp with every default filled in (defaults alone when there is no config.otp). */\nexport function otpSettings(config: Config): OtpSettings {\n\tconst o = config.otp;\n\treturn {\n\t\twindowSeconds: o?.windowSeconds ?? OTP_DEFAULTS.windowSeconds,\n\t\tmaxFailures: o?.maxFailures ?? OTP_DEFAULTS.maxFailures,\n\t\tlockoutSeconds: o?.lockoutSeconds ?? OTP_DEFAULTS.lockoutSeconds,\n\t\tmaxLockouts: o?.maxLockouts ?? OTP_DEFAULTS.maxLockouts,\n\t\tstatePath: o?.statePath ?? OTP_DEFAULTS.statePath\n\t};\n}\n\n/** Whether `rule` needs a broker OTP: its own `otp` flag, else the built-in default. */\nexport function isGated(rule: ToolRule): boolean {\n\tif (rule.name === OTP_STATUS) return false;\n\treturn rule.otp ?? DEFAULT_GATED.has(rule.name);\n}\n\n/** The decoded TOTP key, or why OTP isn't usable on this broker. */\nexport function readSeed(config: Config, secrets: SecretStore): { key: Buffer } | { problem: string } {\n\tif (!config.otp) return { problem: \"OTP is not set up on this broker (no config.otp); re-run the installer to set it up\" };\n\tconst name = config.otp.seed.replace(/^cred:/, \"\");\n\tif (!secrets.has(config.otp.seed)) return { problem: `OTP is not set up on this broker: its seed credential \"${name}\" is not stored (re-run the installer to generate it)` };\n\tlet key: Buffer;\n\ttry {\n\t\tkey = base32Decode(secrets.resolve(config.otp.seed).trim());\n\t} catch {\n\t\tkey = Buffer.alloc(0);\n\t}\n\tif (key.length === 0) return { problem: `OTP is not set up on this broker: the stored seed \"${name}\" is not valid base32 (re-run the installer to replace it)` };\n\treturn { key };\n}\n\n/** Why gated tools can't run on this broker, or undefined when OTP is ready. */\nexport function otpSetupProblem(config: Config, secrets: SecretStore): string | undefined {\n\tconst seed = readSeed(config, secrets);\n\treturn \"problem\" in seed ? seed.problem : undefined;\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/agents.ts\n *\t@Date: 2026-11-01T21:30:00-08:00 (1793597400)\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-01T21:30:00-08:00 (1793597400)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * The agent registry. An agent user `<u>` is registered when the group `gh-broker-agent-<u>`\n * exists with exactly the members `gh-broker` and `<u>`. The broker gives each one its own\n * socket, `<dir>/<u>.sock`, owned by that group with mode 0660, so the socket a call arrives\n * on says who made it (Node can't read SO_PEERCRED).\n */\n\nimport { isAbsolute } from \"node:path\";\n\n/** Agent user names: a Linux login name short enough that the group name fits in 32 characters. */\nexport const AGENT_USER = /^[a-z_][a-z0-9_-]{0,15}$/;\n\n/**\n * Names that fit the pattern but are refused: \"__proto__\" is a special key in JS objects, and\n * root and the service user itself are never agents.\n */\nexport const RESERVED_AGENT_USERS: readonly string[] = [\"__proto__\", \"root\", \"gh-broker\"];\n\n/** Whether `name` can be an agent user. */\nexport function isAgentUser(name: string): boolean {\n\treturn AGENT_USER.test(name) && !RESERVED_AGENT_USERS.includes(name);\n}\n\nexport const AGENT_GROUP_PREFIX = \"gh-broker-agent-\";\n\n/** The broker's own service user, the other required member of every agent group. */\nexport const SERVICE_USER = \"gh-broker\";\n\nexport interface Agent {\n\tuser: string;\n\tgroup: string;\n\tgid: number;\n}\n\n/** The directory of `listen: \"agents:<abs dir>\"`, or undefined when the value isn't that form. */\nexport function agentsDir(listen: string): string | undefined {\n\tif (!listen.startsWith(\"agents:\")) return undefined;\n\tconst dir = listen.slice(\"agents:\".length);\n\treturn isAbsolute(dir) ? dir : undefined;\n}\n\n/**\n * Registered agents from the text of /etc/group. A `gh-broker-agent-*` group whose name doesn't\n * hold a valid user name, or whose members aren't exactly gh-broker and that user, is skipped and\n * reported in `skipped` with the reason.\n */\nexport function parseAgentGroups(groupFile: string): { agents: Agent[]; skipped: string[] } {\n\tconst agents: Agent[] = [];\n\tconst skipped: string[] = [];\n\tfor (const line of groupFile.split(\"\\n\")) {\n\t\tconst [group, , gidText, memberText] = line.split(\":\");\n\t\tif (!group?.startsWith(AGENT_GROUP_PREFIX)) continue;\n\t\tconst user = group.slice(AGENT_GROUP_PREFIX.length);\n\t\tconst gid = Number(gidText);\n\t\tif (!isAgentUser(user)) {\n\t\t\tskipped.push(`${group}: \"${user}\" is not a valid agent user name`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!gidText || !Number.isSafeInteger(gid)) {\n\t\t\tskipped.push(`${group}: bad gid`);\n\t\t\tcontinue;\n\t\t}\n\t\tconst members = new Set((memberText ?? \"\").split(\",\").map((m) => m.trim()).filter(Boolean));\n\t\tif (members.size !== 2 || !members.has(SERVICE_USER) || !members.has(user)) {\n\t\t\tskipped.push(`${group}: members must be exactly ${SERVICE_USER} and ${user}`);\n\t\t\tcontinue;\n\t\t}\n\t\tagents.push({ user, group, gid });\n\t}\n\treturn { agents, skipped };\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/denylist.ts\n *\t@Date: 2026-11-02T19:55:08-08:00 (1793678108)\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-02T20:26:20-08:00 (1793679980)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Tools the broker never serves, gated or not (#146). The default-deny allowlist is what keeps\n * them out: none is written as a verb or listed in the shipped config. This list is the backup,\n * so a hand-edited `tools` entry (or a new upstream tool that does the same thing) is refused\n * when the config loads instead of being forwarded. Config can't override it.\n */\n\n/** Exact tool names, with why each is out. */\nexport const DENIED_TOOLS: ReadonlyMap<string, string> = new Map([\n\t[\"create_or_update_file\", \"file writes go through git\"],\n\t[\"push_files\", \"file writes go through git\"],\n\t[\"delete_file\", \"file writes go through git\"],\n\t[\"delete_repository\", \"deleting a repo stays a manual step in GitHub\"],\n\t[\"create_repository_ruleset\", \"rulesets are managed by org bootstrap\"],\n\t[\"custom_properties_write\", \"repo configuration is managed by org bootstrap\"]\n]);\n\nconst WRITE_VERBS = \"create|update|delete|write|set|add|remove|edit|manage|change\";\n\n/**\n * A write to `subjects`, in either name order upstream uses: verb first (`update_repository_ruleset`,\n * `create_or_update_file`) or noun first (`repository_rulesets_write`). A tool whose name has no\n * write verb (`get_branch_protection`, `list_repository_collaborators`) never matches.\n */\nconst writeTo = (subjects: string, verbs = WRITE_VERBS): RegExp => new RegExp(`(^|_)(${verbs})_(.*_)?(${subjects})$|(^|_)(${subjects})_(${verbs})$`);\n\n/** Name shapes for the same classes of tool, should upstream add or rename one. */\nconst DENIED_PATTERNS: ReadonlyArray<readonly [RegExp, string]> = [\n\t[writeTo(\"files?|contents?|commits?|trees?|blobs?|refs?|git_refs?|changes\", \"create|update|delete|write|push\"), \"file writes go through git\"],\n\t[writeTo(\"repos?|repositor(y|ies)\", \"delete\"), \"deleting a repo stays a manual step in GitHub\"],\n\t// Not `create`: create_repository is a gated tool, not repo configuration.\n\t[writeTo(\"repos?|repositor(y|ies)|repo_settings|repository_settings|settings|visibility|default_branch|topics\", \"update|edit|write|set|change|manage|replace|transfer|archive|unarchive|rename\"), \"repo configuration is managed by org bootstrap\"],\n\t[writeTo(\"custom_property|custom_properties|custom_property_values?\"), \"repo configuration is managed by org bootstrap\"],\n\t[writeTo(\"security_and_analysis|vulnerability_alerts|automated_security_fixes\", `${WRITE_VERBS}|enable|disable`), \"repo configuration is managed by org bootstrap\"],\n\t[writeTo(\"workflows?\", \"enable|disable|write|update|delete\"), \"turning workflows on or off changes how CI behaves; org bootstrap manages it\"],\n\t[writeTo(\"rulesets?\"), \"rulesets are managed by org bootstrap\"],\n\t[writeTo(\"branch_protections?|branch_protection_rules?\"), \"branch protection is managed by org bootstrap\"],\n\t[writeTo(\"variables?|secrets?\"), \"Actions variables and secrets are managed by org bootstrap\"],\n\t[writeTo(\"workflow_permissions|actions_permissions\"), \"workflow permissions are managed by org bootstrap\"],\n\t[writeTo(\"webhooks?|hooks?|deploy_keys?|collaborators?|environments?\"), \"repo access and configuration are managed by org bootstrap\"],\n\t[/^(bulk|batch)_(close|lock|unlock|delete|update|write|edit|label|set|add|remove)|^close_((all|bulk)_)?(issues|pull_requests|prs)$|_(issues|pull_requests)_close$/, \"bulk writes aren't offered; loop over the single-item tool\"],\n\t[writeTo(\"issues?|conversations?|pull_requests?|discussions?\", \"lock|unlock\"), \"locking conversations isn't offered\"],\n\t[/^lock_write$/, \"locking conversations isn't offered\"]\n];\n\n/** Why `name` can never be allowlisted, or undefined when it can. */\nexport function deniedReason(name: string): string | undefined {\n\tconst exact = DENIED_TOOLS.get(name);\n\tif (exact) return exact;\n\tfor (const [pattern, why] of DENIED_PATTERNS) if (pattern.test(name)) return why;\n\treturn undefined;\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, the OTP seed) 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\t// The OTP seed is optional as well: without it the gated tools are hidden (availability.ts).\n\tif (config.otp) credName(config.otp.seed);\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", "import { globalConfig } from \"./core.js\";\n// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function toZod() {\n return (schema) => schema;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\n// the accessor lives on a shared prototype: an own accessor makes every box a dictionary-mode object (~360 B and a slow load per read against ~100 B and an inlined getter here)\nclass Cached {\n constructor(getter) {\n this._getter = getter;\n this._value = undefined;\n }\n get value() {\n const getter = this._getter;\n if (getter !== undefined) {\n this._value = getter();\n this._getter = undefined;\n }\n return this._value;\n }\n}\nexport function cached(getter) {\n return new Cached(getter);\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const ratio = val / step;\n const roundedRatio = Math.round(ratio);\n // `val` and `step` each round to a double before the division rounds again, so a true decimal multiple's quotient can sit up to 1.5 of these scaled epsilons from the integer. A 1x tolerance therefore rejected 2.03 as a multiple of 0.07; 4x covers the worst case with margin.\n const tolerance = 4 * Number.EPSILON * Math.max(Math.abs(ratio), 1);\n if (Math.abs(ratio - roundedRatio) < tolerance)\n return 0;\n return ratio - roundedRatio;\n}\nconst EVALUATING = /* @__PURE__*/ Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\n/**\n * Whichever object a def's `shape` currently answers from: the one the caller passed until the first read, the frozen copy after it.\n *\n * Its keys and descriptors read without invoking anything, which is what lets a discriminated union check its discriminator, and the cycle walk read a shape, without resolving a getter that references the schema being constructed. A def that answers `shape` from an accessor of its own has none.\n */\nexport function rawShape(def) {\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n return desc?.get ? desc.get.raw : desc?.value;\n}\n// where a builder reads its source's keys and descriptors, resolving only a shape a def answers for itself. A shape resolves by object spread, so only its enumerable keys are ever part of it.\nfunction sourceShape(schema) {\n return rawShape(schema._zod.def) ?? schema._zod.def.shape;\n}\n// a key whose value is not settled yet, self-caching so every read after the first gets the same one\nfunction deferProp(target, key, getter) {\n Object.defineProperty(target, key, {\n get() {\n const value = getter();\n assignProp(this, key, value);\n return value;\n },\n enumerable: true,\n configurable: true,\n });\n}\n// Writes a settled key. A plain assignment is much cheaper than `defineProperty` and produces the same descriptor, but it runs whatever setter already answers to the key \u2014 an accessor this shape deferred, or an inherited one, which `__proto__` has on every object and prototype pollution can add for any name.\nfunction putProp(target, key, value) {\n if (key in target)\n assignProp(target, key, value);\n else\n target[key] = value;\n}\n/**\n * Copies `keys` of `source`'s shape onto `target`, each value passed through `wrap`.\n *\n * A key the source has resolved is copied through now, so the derived shape states it outright and nothing has to resolve it to learn what it holds. A key the source still defers stays deferred, and reads back through the source's own `shape`, so it resolves once and both shapes get that one schema.\n */\nfunction mirrorShape(target, source, keys, wrap) {\n const raw = sourceShape(source);\n for (const key of keys) {\n const desc = Object.getOwnPropertyDescriptor(raw, key);\n if (!desc.enumerable)\n continue;\n if (desc.get) {\n deferProp(target, key, () => {\n const value = source._zod.def.shape[key];\n return wrap ? wrap(value, key) : value;\n });\n }\n else\n putProp(target, key, wrap ? wrap(desc.value, key) : desc.value);\n }\n}\n// same, for a plain shape a caller passed rather than a schema's\nfunction mirrorProps(target, source) {\n for (const key of Reflect.ownKeys(source)) {\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!desc.enumerable)\n continue;\n if (desc.get)\n deferProp(target, key, () => source[key]);\n else\n putProp(target, key, desc.value);\n }\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = /* @__PURE__*/ cached(() => {\n // Skip the probe under `jitless`: strict CSPs report the caught `new Function` as a `securitypolicyviolation` even though the throw is swallowed.\n if (globalConfig.jitless) {\n return false;\n }\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n if (o instanceof Map)\n return new Map(o);\n if (o instanceof Set)\n return new Set(o);\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = /* @__PURE__*/ new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = /* @__PURE__*/ new Set([\n \"string\",\n \"number\",\n \"bigint\",\n \"boolean\",\n \"symbol\",\n \"undefined\",\n]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin !== undefined && shape[k]._zod.optout === \"optional\";\n });\n}\n// Wrapped in a `@__PURE__` IIFE: esbuild never tree-shakes a top-level initializer that contains a member access on `Number`, so the bare object literal survived into every bundle.\nexport const NUMBER_FORMAT_RANGES = /*@__PURE__*/ (() => ({\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n}))();\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const newShape = {};\n mirrorShape(newShape, schema, maskedKeys(schema, mask));\n return clone(schema, mergeDefs(currDef, { shape: newShape, checks: [] }));\n}\n// the mask keys that select something, checked against the source's shape without resolving it\nfunction maskedKeys(schema, mask) {\n const raw = sourceShape(schema);\n const keys = [];\n // `for...in` skips symbols, so a symbol in the mask would select nothing\n for (const key of Reflect.ownKeys(mask)) {\n if (!Object.getOwnPropertyDescriptor(raw, key)?.enumerable) {\n throw new Error(`Unrecognized key: \"${String(key)}\"`);\n }\n if (mask[key])\n keys.push(key);\n }\n return keys;\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 omitted = new Set(maskedKeys(schema, mask));\n const newShape = {};\n mirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)).filter((key) => !omitted.has(key)));\n return clone(schema, mergeDefs(currDef, { shape: newShape, checks: [] }));\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape. Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = sourceShape(schema);\n for (const key of Reflect.ownKeys(shape)) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n return clone(schema, mergeDefs(schema._zod.def, { shape: extended(schema, shape) }));\n}\n// the source's keys, then the caller's overlaid on top\nfunction extended(schema, shape) {\n const newShape = {};\n mirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)));\n mirrorProps(newShape, shape);\n return newShape;\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n return clone(schema, mergeDefs(schema._zod.def, { shape: extended(schema, shape) }));\n}\nexport function merge(a, b) {\n if (!b?._zod?.def) {\n throw new Error(\"Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.\");\n }\n if (a._zod.def.checks?.length) {\n throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n }\n const newShape = {};\n mirrorShape(newShape, a, Reflect.ownKeys(sourceShape(a)));\n mirrorShape(newShape, b, Reflect.ownKeys(sourceShape(b)));\n const def = mergeDefs(a._zod.def, {\n shape: newShape,\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: b._zod.def.checks ?? [],\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask, name = \"partial\") {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(`.${name}() cannot be used on object schemas containing refinements`);\n }\n const selected = mask ? new Set(maskedKeys(schema, mask)) : undefined;\n const newShape = {};\n mirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)), Class &&\n ((value, key) => (selected && !selected.has(key) ? value : new Class({ type: \"optional\", innerType: value }))));\n return clone(schema, mergeDefs(schema._zod.def, { shape: newShape, checks: [] }));\n}\nexport function required(Class, schema, mask) {\n const selected = mask ? new Set(maskedKeys(schema, mask)) : undefined;\n const newShape = {};\n mirrorShape(newShape, schema, Reflect.ownKeys(sourceShape(schema)), (value, key) => \n // overwrite with non-optional\n selected && !selected.has(key) ? value : new Class({ type: \"nonoptional\", innerType: value }));\n return clone(schema, mergeDefs(schema._zod.def, { shape: newShape }));\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\n// Checks for explicit abort (continue === false), as opposed to implicit abort (continue === undefined). Used to respect `abort: true` in .refine() even for checks that have a `when` function.\nexport function explicitlyAborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue === false) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\n/* A check holds no link back to the schema it is attached to \u2014 the same check instance is shared by every clone of that schema \u2014 so the owner is stamped onto the issues a check just raised, at the only point where both are in scope. Runs on the failure path only; `start` is the issue count from before the check ran. */\n/** The leading size checks of `defChecks` that set an upper bound, each paired with it. */\nexport function sizeCaps(defChecks) {\n const caps = [];\n for (const ch of defChecks ?? []) {\n const d = ch._zod.def;\n // a later check may rewrite the value\n if (!/_(length|size)$|_equals$/.test(d.check))\n break;\n const max = d.maximum ?? d.length ?? d.size;\n if (max >= 0)\n caps.push([max, ch]);\n }\n return caps;\n}\nexport function attachSchema(issues, start, inst) {\n var _a;\n for (let i = start; i < issues.length; i++) {\n (_a = issues[i]).schema ?? (_a.schema = inst);\n }\n}\nexport function finalizeIssue(iss, ctx, config) {\n var _a;\n // A schema that raised an issue itself owns it outright, and outranks any stamp an enclosing check left in `attachSchema`. String formats and z.custom() are schema and check at once, so when they act as a check they defer to that stamp instead.\n const traits = iss.inst?._zod?.traits;\n if (traits?.has(\"$ZodType\")) {\n if (traits.has(\"$ZodCheck\"))\n (_a = iss).schema ?? (_a.schema = iss.inst);\n else\n iss.schema = iss.inst;\n }\n // Decreasing specificity, first map to return a message wins. `inst` is whatever raised the issue, so a check's own map outranks the owning schema's.\n const schemaError = iss.schema !== iss.inst ? iss.schema?._zod.def?.error : undefined;\n const message = iss.message\n ? iss.message\n : (unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(schemaError?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\");\n // an explicit own-key copy beats object rest with excluded keys, which v8 routes through a generic runtime call; Object.keys rather than for-in so an issue pushed with a prototype does not leak inherited keys, and an own __proto__ key is dropped rather than assigned through the setter\n const full = {};\n for (const k of Object.keys(iss)) {\n if (k === \"inst\" || k === \"schema\" || k === \"continue\" || k === \"input\" || k === \"__proto__\")\n continue;\n full[k] = iss[k];\n }\n full.path ?? (full.path = []);\n full.message = message;\n if (ctx?.reportInput) {\n full.input = iss.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nconst highSurrogate = /[\\uD800-\\uDBFF]/;\n// Code points in `str`: a surrogate pair counts once, a lone surrogate as itself. Hand-rolled because the string iterator allocates and runs ~250x slower on this path; the regex probe exits ~50x quicker for a string with no astral characters.\nexport function codePointLength(str) {\n const units = str.length;\n if (!highSurrogate.test(str))\n return units;\n let count = units;\n for (let i = 0; i < units - 1; i++) {\n if ((str.charCodeAt(i) & 0xfc00) === 0xd800 && (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n count--;\n i++;\n }\n }\n return count;\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n////////// PROTOTYPE INSTALLERS //////////\n//\n// Members live on the prototype and materialize per instance on first read, which keeps own-property count under the step where V8 stops using inline slots. Changing anything here means re-measuring runtime, memory and bundle size together \u2014 see \"The three axes\" in AGENTS.md.\n/**\n * Installs a trait's members on its prototype. Each value builds that member for the instance on first read; the built value shadows the accessor as an own property, so a detached `const { parse } = schema` keeps working.\n *\n * Call this from a `proto` initializer, which runs once per prototype \u2014 never per instance.\n */\nexport function members(proto, table) {\n for (const key in table) {\n const desc = Object.getOwnPropertyDescriptor(table, key);\n // a getter installs as written, so it stays live: `description` reads through to the registry on every access. not enumerable: an object literal's is, and a prototype member never was\n if (desc.get)\n Object.defineProperty(proto, key, { ...desc, enumerable: false });\n // a method materializes bound on first read, which is what keeps a detached member working: `const opt = schema.optional; opt()`\n else\n defineBound(proto, key, desc.value);\n }\n}\n/** Shadows a prototype member with an own value, so a getter that builds from the instance runs once. */\nexport function own(inst, key, value, enumerable = true) {\n Object.defineProperty(inst, key, { configurable: true, writable: true, enumerable, value });\n return value;\n}\n/** Like {@link own}, for a member that was never an own data property and has to stay out of `Object.keys`. */\nexport function hide(inst, key, value) {\n return own(inst, key, value, false);\n}\n/** Adds members a table derives from the instance: each builds on first read and shadows as own data, and assignment shadows the same way, as when these were own properties. */\nexport /*@__NO_SIDE_EFFECTS__*/ function derived(computes, table) {\n for (const key in computes) {\n const compute = computes[key];\n // an object literal's accessor is configurable and enumerable, and `members` copies the descriptor as written\n Object.defineProperty(table, key, {\n configurable: true,\n enumerable: true,\n get() {\n return own(this, key, compute(this));\n },\n set(value) {\n own(this, key, value);\n },\n });\n }\n return table;\n}\nfunction defineBound(proto, key, fn) {\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n // vitest's spyOn calls a prototype getter bare to find the function it wraps, so a nullish receiver answers the raw method\n return this == null ? fn : own(this, key, fn.bind(this));\n },\n set(value) {\n own(this, key, value);\n },\n });\n}\n/** Returns the prototype to install on, or `undefined` if this group is already installed on it. */\nfunction claim(inst, sentinel) {\n const proto = Object.getPrototypeOf(inst);\n // Runs on every construction, so `in` rather than the costlier `hasOwnProperty.call`. Sentinels are keys the group itself defines.\n return sentinel in proto ? undefined : proto;\n}\n// The internals whose init chain is installing. A second call for the same one is a derived constructor overriding its base, so it must not construct another schema in between or the override is dropped.\nlet installing;\n// Set while a getter is running, so a value that resolved through a recursion break is not memoized. One shared descriptor shadows the key for the duration, which costs no per-key allocation.\nlet broke = false;\nconst breaker = {\n configurable: true,\n get() {\n broke = true;\n return undefined;\n },\n};\n/**\n * Installs a lazily-derived internal on the `_zod` prototype of `inst`'s\n * constructor, computed from the internals object itself and cached there on\n * first read. One accessor per constructor rather than one per instance.\n */\nexport function defineLazyInternal(inst, key, compute) {\n const proto = Object.getPrototypeOf(inst._zod);\n if (key in proto && installing !== inst._zod) {\n // A repeat construction: everything is installed already. Cleared here so the reference is not held past the first construction of every type.\n installing = undefined;\n return;\n }\n installing = inst._zod;\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n // Shadowed before computing so a re-entrant read from a recursive schema resolves to undefined instead of running the getter again.\n Object.defineProperty(this, key, breaker);\n const outer = broke;\n broke = false;\n try {\n const value = compute(this);\n // A result that resolved through a recursion break is recomputed once the graph is complete; everything else memoizes, undefined included.\n if (broke)\n delete this[key];\n else\n Object.defineProperty(this, key, { configurable: true, writable: true, value });\n broke = broke || outer;\n return value;\n }\n catch (err) {\n // A compute that threw memoizes nothing, so a later read runs it again and fails the same way. The shadow goes with it, since leaving it installed would answer undefined for every later read.\n delete this[key];\n broke = broke || outer;\n throw err;\n }\n },\n set(value) {\n Object.defineProperty(this, key, { configurable: true, writable: true, value });\n },\n });\n}\n/**\n * Installs `key` on `inst`'s prototype, computed by `make` on first read and cached there as an own\n * data property. One accessor per constructor rather than one per instance, because an own accessor\n * puts every instance after the first into v8 dictionary mode. The key doubles as the sentinel.\n */\nexport function installLazyProp(inst, key, make, enumerable) {\n const proto = claim(inst, key);\n if (!proto)\n return;\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n // Shadowed before computing, so a re-entrant read from a self-referential shape resolves to undefined instead of running the getter again. A data property rather than an accessor: an own accessor is the dictionary-mode transition this exists to avoid.\n const desc = { configurable: true, writable: true, enumerable, value: undefined };\n Object.defineProperty(this, key, desc);\n // a compute that throws leaves the shadow behind, so later reads answer undefined instead of re-throwing; `defineLazy` did the same, and `defineLazyInternal`'s delete-on-catch would cost bytes in every bundle for a case only a throwing user getter reaches\n desc.value = make(this);\n Object.defineProperty(this, key, desc);\n return desc.value;\n },\n set(value) {\n Object.defineProperty(this, key, { configurable: true, writable: true, enumerable, value });\n },\n });\n}\n/** Marks the thunk `_catch` synthesises for a constant catch value. `Function.length` cannot tell that thunk from a user callback \u2014 rest and defaulted parameters both report arity 0 \u2014 and a user callback reads `ctx.error`, whose issues only finalize correctly against the caller's per-parse error map. Provenance can say what arity cannot. A plain string key rather than `Symbol.for`, whose call at module scope no bundler can prove pure \u2014 the same shape that anchored `urlCanParse` into every build. */\nexport const CONSTANT_CATCH = \"~constantCatch\";\n/** Wraps a constant catch value in a thunk tagged with {@link CONSTANT_CATCH}. */\nexport function constantCatch(value) {\n const fn = () => value;\n fn[CONSTANT_CATCH] = true;\n return fn;\n}\n", "var _a;\nimport { members as installMembers } from \"./util.js\";\n/** A special constant with type `never` */\nexport const NEVER = /*@__PURE__*/ Object.freeze({\n status: \"aborted\",\n});\n/* Shared descriptor for installing `_zod`; defineProperty reads it\n * synchronously, so reusing one object avoids a per-instance allocation. */\nconst _zodDesc = { value: undefined, enumerable: false };\n// null where suppressing the capture would be unrecoverable: `parse()` puts the frames back with `captureStackTrace`, so without it the throw would lose its stack. also latched to null once `stackTraceLimit` proves unassignable, which a realm can do at any point by hardening Error\nlet _E = \"captureStackTrace\" in Error ? Error : null;\n// v8 captures a stack trace inside the Error constructor, which dominates a failed parse; costs only the frames, and parse() restores those. the constructor must RUN: Object.create is cheaper and passes instanceof, but Error.isError and util.types.isNativeError check an internal slot\nfunction newError(Definition) {\n const E = _E;\n if (E) {\n const saved = E.stackTraceLimit;\n if (typeof saved === \"number\") {\n try {\n E.stackTraceLimit = 0;\n }\n catch {\n _E = null;\n return new Definition();\n }\n try {\n return new Definition();\n }\n finally {\n E.stackTraceLimit = saved;\n }\n }\n }\n return new Definition();\n}\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, \n/** This trait's members, installed once on every prototype that composes it. They cannot be declared in the initializer above: that runs per instance, and the prototype is shared. */\nproto, params) {\n // Prototype for this constructor's `_zod` internals. Lazily-derived fields (`values`, `pattern`, `optin`, \u2026) install here once rather than as an accessor on every instance.\n const zodProto = {};\n // Assigning the fields in the constructor body is what gives instances in-object slots; building the object literally and reparenting it costs a second allocation and a generic property copy.\n function Internals(def) {\n this.def = def;\n this.constr = _;\n this.traits = new Set();\n }\n Internals.prototype = zodProto;\n const protoMembers = proto;\n // One trait's members land on every prototype whose chain composes it, so the answer is per prototype rather than per trait.\n const initialized = protoMembers && new WeakSet();\n function init(inst, def) {\n if (!inst._zod) {\n _zodDesc.value = new Internals(def);\n try {\n Object.defineProperty(inst, \"_zod\", _zodDesc);\n }\n finally {\n // Cleared even on throw, so the shared descriptor never leaks one instance's internals into the next.\n _zodDesc.value = undefined;\n }\n }\n else if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n if (initialized) {\n // `super(def)` from a user subclass gives `this` a prototype the subclass owns, and installing there would overwrite whatever the subclass declared. `constr` built the instance, so its prototype is the one below the subclass's that should carry the members. A receiver whose chain never reaches that prototype installs on its own, which for a plain object handed straight to `init` means `Object.prototype` \u2014 unchanged from before.\n const own = Object.getPrototypeOf(inst);\n const ctorProto = inst._zod.constr.prototype;\n let up = own;\n while (up && up !== ctorProto)\n up = Object.getPrototypeOf(up);\n const target = up ?? own;\n if (!initialized.has(target)) {\n initialized.add(target);\n installMembers(target, protoMembers);\n }\n }\n // support prototype modifications; for-in avoids the array allocation of Object.keys on the (usually empty) prototype\n const proto = _.prototype;\n for (const k in proto) {\n if (!Object.prototype.hasOwnProperty.call(proto, k))\n continue;\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n const inst = params?.Parent ? newError(Definition) : this;\n init(inst, def);\n const deferred = inst._zod.deferred;\n if (deferred) {\n for (const fn of deferred) {\n fn();\n }\n // Released: initializers run once, and the list would otherwise be retained for the schema's lifetime.\n inst._zod.deferred = undefined;\n }\n // Global post-processor hook. Internal: installed by `import \"zod/compile\"` to enable AOT compilation for every constructed schema. Runs last, once the instance is fully built, because it hands the instance to compile(). The post-processor is expected to be reentrancy-guarded by its own implementation.\n const pp = globalThis.__zod_globalConfig?.postProcessor;\n if (pp)\n pp(inst);\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = /*@__PURE__*/ Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\n(_a = globalThis).__zod_globalConfig ?? (_a.__zod_globalConfig = {});\nexport const globalConfig = globalThis.__zod_globalConfig;\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n", "import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\n/* Computing the message eagerly is expensive (pretty-printed JSON of all\n * issues), so defer it until first read. The accessor functions and\n * descriptors are shared across instances to keep error construction\n * cheap; the computed message is cached on the internals object. The\n * setter preserves plain assignment semantics for consumers that\n * overwrite `message`. */\nfunction _getMessage() {\n const internals = this._zod;\n internals.message ?? (internals.message = JSON.stringify(internals.def, util.jsonStringifyReplacer, 2));\n return internals.message;\n}\nfunction _setMessage(value) {\n this._zod.message = value;\n}\nconst _messageDesc = {\n get: _getMessage,\n set: _setMessage,\n enumerable: true,\n configurable: true,\n};\nconst _issuesDesc = { value: undefined, enumerable: false };\n/* Prototypes that already carry the lazy `toString`. Seeded with the\n * intrinsics so that `init` on a foreign object \u2014 it accepts any object \u2014\n * can never install an accessor onto a prototype we do not own. */\nconst _installedToString = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n // `_zod` is already non-enumerable: $constructor's init defined it with this same descriptor\n _issuesDesc.value = def;\n Object.defineProperty(inst, \"issues\", _issuesDesc);\n // Clear the shared slot; a retained `value` pins the last error's issues.\n _issuesDesc.value = undefined;\n Object.defineProperty(inst, \"message\", _messageDesc);\n /* `toString` lives as a non-enumerable lazy getter on the shared\n * prototype; on first access it caches a per-instance closure so\n * detached usage still works. */\n const proto = Object.getPrototypeOf(inst);\n if (!_installedToString.has(proto)) {\n _installedToString.add(proto);\n Object.defineProperty(proto, \"toString\", {\n configurable: true,\n enumerable: false,\n get() {\n const value = () => this.message;\n Object.defineProperty(this, \"toString\", { value, configurable: true, writable: true });\n return value;\n },\n set(value) {\n Object.defineProperty(this, \"toString\", { value, configurable: true, writable: true });\n },\n });\n }\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, undefined, {\n Parent: Error,\n});\n/** Get-or-create `obj[key]` as an own data property. A path segment naming an inherited member\n * (\"toString\", \"constructor\") would otherwise read through to the prototype, and assigning\n * \"__proto__\" would hit the setter instead of creating a key. */\nfunction node(obj, key, make) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n if (key === \"__proto__\") {\n Object.defineProperty(obj, key, { value: make(), writable: true, enumerable: true, configurable: true });\n }\n else {\n obj[key] = make();\n }\n }\n return obj[key];\n}\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n node(fieldErrors, sub.path[0], () => []).push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error, path = []) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n // `_errors` is reserved by this legacy format, so merge a matching path segment into the current node instead of treating its array as a child.\n if (el === \"_errors\") {\n if (terminal)\n curr._errors.push(mapper(issue));\n i++;\n continue;\n }\n // A path element may collide with an inherited property name such as\n // \"__proto__\" or \"constructor\". Truthiness checks read the prototype\n // (so no node is created, then ._errors.push throws), and bracket\n // assignment of \"__proto__\" hits the setter instead of creating an\n // own key. Guard the read with hasOwnProperty and create the node\n // with defineProperty so any path element becomes a real own key.\n if (!Object.prototype.hasOwnProperty.call(curr, el)) {\n Object.defineProperty(curr, el, {\n value: { _errors: [] },\n enumerable: true,\n writable: true,\n configurable: true,\n });\n }\n const node = curr[el];\n if (terminal) {\n node._errors.push(mapper(issue));\n }\n curr = node;\n i++;\n }\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n // el may collide with an inherited property name (\"__proto__\",\n // \"constructor\", ...); ??= reads the prototype so the node is never\n // created and curr.errors.push throws. Guard with hasOwnProperty and\n // create the node with defineProperty so \"__proto__\" becomes a real\n // own key rather than invoking the prototype setter.\n if (!Object.prototype.hasOwnProperty.call(curr.properties, el)) {\n Object.defineProperty(curr.properties, el, {\n value: { errors: [] },\n enumerable: true,\n writable: true,\n configurable: true,\n });\n }\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_a = curr.items)[el] ?? (_a[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * \u2716 Expected number, received string at \"username\n * favoriteNumbers[0]\n * \u2716 Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`\u2716 ${issue.message}`);\n if (issue.path?.length)\n lines.push(` \u2192 at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n", "import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\n// Always both keys, so the `_params` read site in `_parse` sees one object shape rather than two.\nfunction finalizeParams(callee, params) {\n return { callee: params?.callee ?? callee, Err: params?.Err };\n}\nexport const _parse = (_Err) => {\n const fn = (schema, value, _ctx, _params) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee ?? fn);\n throw e;\n }\n return result.value;\n };\n return fn;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => {\n const fn = async (schema, value, _ctx, params) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee ?? fn);\n throw e;\n }\n return result.value;\n };\n return fn;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length ? failure(_Err, result.issues, ctx) : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\n// the error is built on the first read of `error`: finalizing the issues and constructing the instance is most of a failing parse, and a caller that only branches on `success` never pays it. a getter in the literal keeps this small; the alternative, one shared accessor descriptor plus a hidden state slot, reads ~15% faster but costs ~75 B gzipped in every bundle\nfunction failure(Err, issues, ctx) {\n let error;\n return {\n success: false,\n get error() {\n if (!error) {\n error = new Err(issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n // finalizeIssue drops `input`, so the built error holds nothing; keeping the raw issues past this point pins the parsed value for the life of the result\n issues = undefined;\n ctx = undefined;\n }\n return error;\n },\n set error(e) {\n error = e;\n // a replacement makes the getter's branch unreachable, so the captures have to go here too\n issues = undefined;\n ctx = undefined;\n },\n };\n}\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 ? failure(_Err, result.issues, ctx) : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\n// registry mirrors of the compiler's sentinels, so this module never imports the compiler\nconst COMPILE_INVALID = /* @__PURE__ */ Symbol.for(\"zod.compile.invalid\");\nconst COMPILE_FALLBACK = /* @__PURE__ */ Symbol.for(\"zod.compile.fallback\");\n// Deliberately tiny, because v8 will not inline a body carrying the fallback's object literals and throw. Everything that is not the compiled happy path lives in validateFallback, and that split is worth ~35% on a compiled schema.\nexport const validate = ((schema, value, _ctx) => {\n const validator = schema._zod.bag.validator;\n if (validator !== undefined) {\n if (validator(value) !== COMPILE_INVALID)\n return true;\n // a definite sentinel means the runtime would reject, so skip the re-parse; a ctx can still change the answer\n if (validator.definite === true && _ctx === undefined)\n return false;\n }\n return validateFallback(schema, value, _ctx);\n});\nfunction validateFallback(schema, value, _ctx) {\n const ctx = _ctx\n ? { ..._ctx, async: false, abortEarly: true }\n : { async: false, abortEarly: true };\n const fallbackRun = schema._zod.bag.fallbackRun;\n let result;\n if (fallbackRun) {\n // skip nested fast paths on the fallback, so user callbacks keep the at-most-twice bound\n ctx[COMPILE_FALLBACK] = true;\n result = fallbackRun({ value, issues: [] }, ctx);\n }\n else {\n result = schema._zod.run({ value, issues: [] }, ctx);\n }\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length === 0;\n}\n// no fast path: the compiler keeps async parses on the runtime, because a promise-returning callback that is not declared async compiles to a throw\nexport const validateAsync = async (schema, value, _ctx) => {\n const ctx = _ctx\n ? { ..._ctx, async: true, abortEarly: true }\n : { async: true, abortEarly: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length === 0;\n};\nexport const _encode = (_Err) => {\n const parse = _parse(_Err);\n const fn = (schema, value, _ctx, _params) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return parse(schema, value, ctx, finalizeParams(fn, _params));\n };\n return fn;\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => {\n const parse = _parse(_Err);\n const fn = (schema, value, _ctx, _params) => {\n return parse(schema, value, _ctx, finalizeParams(fn, _params));\n };\n return fn;\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => {\n const parseAsync = _parseAsync(_Err);\n const fn = async (schema, value, _ctx, _params) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return (await parseAsync(schema, value, ctx, finalizeParams(fn, _params)));\n };\n return fn;\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => {\n const parseAsync = _parseAsync(_Err);\n const fn = async (schema, value, _ctx, _params) => {\n return await parseAsync(schema, value, _ctx, finalizeParams(fn, _params));\n };\n return fn;\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n", "import * as util from \"./util.js\";\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const cuid = /^[cC][0-9a-z]{6,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\nexport function nanoidOfLength(length) {\n return new RegExp(`^[a-zA-Z0-9_-]{${length}}$`);\n}\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\n// Single character class, not an alternation: the two properties overlap (U+1F9B0-U+1F9B3), so `(A|B)+` backtracks exponentially on a failed match. The leading lookahead then demands one anchor \u2014 a pictograph, a regional indicator, or the enclosing keycap \u2014 because `\\p{Emoji_Component}` on its own covers ASCII digits, `#`, `*`, ZWJ, variation selectors and skin tone modifiers, none of which is an emoji without a base.\nconst _emoji = `^(?=[\\\\s\\\\S]*[\\\\p{Extended_Pictographic}\\\\p{Regional_Indicator}\\\\u20E3])[\\\\p{Extended_Pictographic}\\\\p{Emoji_Component}]+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^(?=.{1,253}$)([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,63}$/;\nexport const httpProtocol = /^https?$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces) E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// Credit card shape: 12\u201319 digits, optionally separated by single spaces or single hyphens. ISO/IEC 7812 caps the PAN at 19 digits; 12 is the shortest issued length (Maestro).\nexport const creditCard = /^\\d(?:[ -]?\\d){11,18}$/;\n// ISO 4217 alpha codes from the SIX list, regenerated by scripts/update-iso-4217.ts\nexport const currencyCode = /^(?:AED|AFN|ALL|AMD|AOA|ARS|AUD|AWG|AZN|BAM|BBD|BDT|BHD|BIF|BMD|BND|BOB|BOV|BRL|BSD|BTN|BWP|BYN|BZD|CAD|CDF|CHE|CHF|CHW|CLF|CLP|CNY|COP|COU|CRC|CUP|CVE|CZK|DJF|DKK|DOP|DZD|EGP|ERN|ETB|EUR|FJD|FKP|GBP|GEL|GHS|GIP|GMD|GNF|GTQ|GYD|HKD|HNL|HTG|HUF|IDR|ILS|INR|IQD|IRR|ISK|JMD|JOD|JPY|KES|KGS|KHR|KMF|KPW|KRW|KWD|KYD|KZT|LAK|LBP|LKR|LRD|LSL|LYD|MAD|MDL|MGA|MKD|MMK|MNT|MOP|MRU|MUR|MVR|MWK|MXN|MXV|MYR|MZN|NAD|NGN|NIO|NOK|NPR|NZD|OMR|PAB|PEN|PGK|PHP|PKR|PLN|PYG|QAR|RON|RSD|RUB|RWF|SAR|SBD|SCR|SDG|SEK|SGD|SHP|SLE|SOS|SRD|SSP|STN|SVC|SYP|SZL|THB|TJS|TMT|TND|TOP|TRY|TTD|TWD|TZS|UAH|UGX|USD|USN|UYI|UYU|UYW|UZS|VED|VES|VND|VUV|WST|XAD|XAF|XAG|XAU|XBA|XBB|XBC|XBD|XCD|XCG|XDR|XOF|XPD|XPF|XPT|XSU|XTS|XUA|XXX|YER|ZAR|ZMW|ZWG)$/;\n// iban electronic format: 2-letter country, check digits 02-98 (the only values `98 - remainder` can produce), 11-30 bban characters\nexport const iban = /^[A-Z]{2}(?!00|01|99)\\d{2}[A-Z0-9]{11,30}$/;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\n/** Anchors a pattern source. The interpolation lives here rather than at the call site because\n * esbuild will not drop a `@__PURE__` call whose own argument interpolates a variable, but it\n * will drop `anchor(dateSource)`. Keeping it inline pinned `date` into every bundle. */\nfunction anchor(source) {\n return new RegExp(`^${source}$`);\n}\nexport const date = /*@__PURE__*/ anchor(dateSource);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : args.seconds\n ? `${hhmm}:[0-5]\\\\d(?:\\\\.\\\\d+)?`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const opts = [\"Z\"];\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n // RFC 3339 mandates seconds wherever the time carries a `Z` or an offset, so only the unqualified form `local` adds may omit them\n const qualified = `${timeSource({ precision: args.precision, seconds: true })}(?:${opts.join(\"|\")})`;\n const timeRegex = args.local ? `${qualified}|${timeSource({ precision: args.precision })}` : qualified;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\n// the unbounded form of `string()` as a literal, so every plain string shares one instance instead of building its own\nexport const anyString = /^[\\s\\S]{0,}$/;\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n", "// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\n/** Default `when` for size-based checks: run only on non-nullish values with a `size`. */\nconst _whenHasSize = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n};\n/** Default `when` for length-based checks: run only on non-nullish values with a `length`. */\nconst _whenHasLength = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n};\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin: numericOriginMap[typeof payload.value] ?? origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin: numericOriginMap[typeof payload.value] ?? origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? // `value % 0n` throws, and nothing is a multiple of zero \u2014 the number branch already fails this way via NaN\n def.value !== BigInt(0) && payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.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.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasSize);\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasSize);\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasSize);\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n inst._zod.check = (payload) => {\n const input = payload.value;\n const units = input.length;\n // Strings are measured in Unicode code points, not UTF-16 units. A code point is at most two units, so a string that already fits in units fits in code points; only an overflow has to be counted.\n const length = typeof input === \"string\" && units > def.maximum ? util.codePointLength(input) : units;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n inst._zod.check = (payload) => {\n const input = payload.value;\n const units = input.length;\n // A code point is one or two UTF-16 units, so fewer units than the floor can never reach it and twice the floor always clears it. Only in between is the exact count in doubt.\n const length = typeof input === \"string\" && units >= def.minimum && units < def.minimum * 2\n ? util.codePointLength(input)\n : units;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = _whenHasLength);\n inst._zod.check = (payload) => {\n const input = payload.value;\n const units = input.length;\n // A code point is one or two UTF-16 units, so outside `[length, length * 2]` units the target is missed either way \u2014 and missed in the same direction in both measures.\n const length = typeof input === \"string\" && units >= def.length && units <= def.length * 2\n ? util.codePointLength(input)\n : units;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n // `String.prototype.includes(sub, position)` matches `sub` at `position`\n // OR LATER, so the pattern must allow at least `position` leading chars\n // (`{N,}`), not exactly `position` chars (`{N}`).\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position},}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.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.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.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 $ZodCheckProperties = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperties\", (inst, def) => {\n $ZodCheck.init(inst, def);\n util.hide(inst, Symbol.iterator, function* () {\n yield inst;\n });\n // key and schema snapshotted together: reading one live and the other cached lets a later mutation of the caller's shape object pair a stale key with a missing schema\n let entries;\n inst._zod.check = (payload) => {\n // the base schema already typed the value, so only a nullish one is rejected here: the properties read on a primitive too, matching z.property() on a string's length\n if (payload.value == null) {\n payload.issues.push({ expected: \"object\", code: \"invalid_type\", input: payload.value, inst });\n return undefined;\n }\n entries ?? (entries = Reflect.ownKeys(def.shape).map((key) => [key, def.shape[key]]));\n const input = payload.value;\n let proms;\n for (const [key, schema] of entries) {\n const result = schema._zod.run({ value: input[key], issues: [] }, {});\n if (result instanceof Promise) {\n proms ?? (proms = []);\n proms.push(result.then((result) => handleCheckPropertyResult(result, payload, key)));\n }\n else {\n handleCheckPropertyResult(result, payload, key);\n }\n }\n if (proms)\n return Promise.all(proms).then(() => undefined);\n return undefined;\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.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n", "export class Doc {\n constructor(args = [], closed = {}) {\n this.content = [];\n this.indent = 0;\n this.args = args;\n this.closed = closed;\n }\n // the compiler catches a child's throw and keeps writing into this doc, so the indent has to unwind with it\n indented(fn) {\n this.indent += 1;\n try {\n fn(this);\n }\n finally {\n this.indent -= 1;\n }\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const content = this?.content ?? [``];\n const factory = new F(...Object.keys(this.closed), `return function (${this.args.join(\", \")}) {\\n${content.join(\"\\n\")}\\n};`);\n return factory(...Object.values(this.closed));\n }\n}\n", "export const version = {\n major: 4,\n minor: 6,\n patch: 7,\n};\n", "import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const defChecks = inst._zod.def.checks;\n // if inst is itself a checks.$ZodCheck, run it as a check\n const checks = inst._zod.traits.has(\"$ZodCheck\")\n ? [inst, ...(defChecks ?? [])]\n : defChecks?.length\n ? [...defChecks]\n : [];\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n if (payload.memo)\n return payload;\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n if (util.explicitlyAborted(payload))\n continue;\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n util.attachSchema(payload.issues, currLen, inst);\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n util.attachSchema(payload.issues, currLen, inst);\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n}, {\n // Wrappers extend this by installing a richer factory over it; reading it eagerly would defeat the laziness.\n get \"~standard\"() {\n return util.hide(this, \"~standard\", standardProps(this));\n },\n set \"~standard\"(value) {\n util.own(this, \"~standard\", value);\n },\n});\n/** The Standard Schema surface for `inst`. Shared so wrappers can extend it without forcing it. */\n// a Standard Schema result only reports issues, so a failure finalizes them straight off the raw payload: no ZodError, and no lazy result to read through\nconst toStandardResult = (r, ctx) => r.issues.length ? { issues: r.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())) } : { value: r.value };\nasync function validateAsync(inst, value) {\n const ctx = { async: true };\n return toStandardResult((await inst._zod.run({ value, issues: [] }, ctx)), ctx);\n}\nexport function standardProps(inst) {\n return {\n validate: (value) => {\n const ctx = { async: false };\n try {\n const r = inst._zod.run({ value, issues: [] }, ctx);\n if (!(r instanceof Promise))\n return toStandardResult(r, ctx);\n }\n catch (_) { }\n // async function so a synchronously throwing check rejects instead of escaping validate\n return validateAsync(inst, value);\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 // a format's own pattern, else unbounded; a template literal derives the check-aware form itself\n inst._zod.pattern = def.pattern ?? regexes.anyString;\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\n/** The `://` guard rejected the input before the URL constructor saw it. */\nexport const URL_BAD_FORMAT = 1;\n/** The URL parser rejected the input. */\nexport const URL_UNPARSEABLE = 2;\nexport function canParseURL(input) {\n try {\n if (typeof URL !== \"undefined\" && typeof URL.canParse === \"function\")\n return URL.canParse(input);\n new URL(input);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function validateURL(trimmed, def) {\n if (!(\"normalize\" in def) && !(\"hostname\" in def) && !(\"protocol\" in def)) {\n return canParseURL(trimmed) || URL_UNPARSEABLE;\n }\n return parseURLObject(trimmed, def);\n}\n/** Parses a URL while preserving the non-normalizing HTTP guard. */\nexport function parseURLObject(trimmed, def) {\n // When normalize is off, require :// for http/https URLs. This prevents strings like \"http:example.com\" or \"https:/path\" from being silently accepted\n if (!def.normalize && def.protocol?.source === regexes.httpProtocol.source && !/^https?:\\/\\//i.test(trimmed)) {\n return URL_BAD_FORMAT;\n }\n try {\n if (typeof URL !== \"undefined\") {\n const URLStatic = URL;\n if (typeof URLStatic.parse === \"function\")\n return URLStatic.parse(trimmed) ?? URL_UNPARSEABLE;\n }\n // @ts-ignore\n return new URL(trimmed);\n }\n catch {\n return URL_UNPARSEABLE;\n }\n}\nconst asciiTabOrNewline = /[\\t\\n\\r]/g;\n/** The URL parser deletes every ASCII tab, LF and CR from its input before it parses, so `new URL(\"https://exa\\nmple.com\")` reports on `example.com`. Applying the same deletion to the returned value closes the half of that divergence which can move the host; the parser's other rewrite, stripping C0 controls at the edges, cannot. */\nexport function stripTabAndNewline(value) {\n return value.replace(asciiTabOrNewline, \"\");\n}\nexport function urlHostnameOk(url, hostname) {\n hostname.lastIndex = 0;\n return hostname.test(url.hostname);\n}\nexport function urlProtocolOk(url, protocol) {\n protocol.lastIndex = 0;\n return protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol);\n}\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n const url = validateURL(trimmed, def);\n if (url === URL_BAD_FORMAT) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid URL format\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n return;\n }\n if (url === URL_UNPARSEABLE) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n return;\n }\n if (url === true) {\n payload.value = stripTabAndNewline(trimmed);\n return;\n }\n if (def.hostname && !urlHostnameOk(url, def.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n if (def.protocol && !urlProtocolOk(url, def.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n // Set the output value based on normalize flag\n payload.value = def.normalize ? url.href : stripTabAndNewline(trimmed);\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n if (def.length !== undefined && (!Number.isInteger(def.length) || def.length < 1))\n throw new Error(`Invalid nanoid length: ${def.length}`);\n def.pattern ?? (def.pattern = def.length === undefined ? regexes.nanoid : regexes.nanoidOfLength(def.length));\n $ZodStringFormat.init(inst, def);\n});\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link $ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\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});\n/** An IPv6 address is written with hex digits, colons and dots, and nothing else. The guard is what makes the check below an IPv6 check: `new URL(\"http://[...]\")` parses an authority, not an address, so `@` and `\\` re-delimit it and `\"::@1\\\\\"` validates against the host `0.0.0.1`. The URL parser also deletes ASCII tab, LF and CR rather than failing, which is how `\"::1\\n\"` validated as `::1`. */\nconst ipv6Alphabet = /^[0-9a-fA-F:.]+$/;\nexport function isValidIPv6(value) {\n if (!ipv6Alphabet.test(value))\n return false;\n return canParseURL(`http://[${value}]`);\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.check = (payload) => {\n if (!isValidIPv6(payload.value)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport function isValidCIDRv6(value) {\n const parts = value.split(\"/\");\n if (parts.length !== 2)\n return false;\n const [address, prefix] = parts;\n if (!prefix)\n return false;\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n return false;\n if (prefixNum < 0 || prefixNum > 128)\n return false;\n return isValidIPv6(address);\n}\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (!isValidCIDRv6(payload.value)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n // atob ignores whitespace, so reject it up front.\n if (/\\s/.test(data))\n return false;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\n// lax on purpose: the quantified regexes.base64 overflows the regex stack on multi-MB input and its leading ^$| alternation leaks through template-literal composition; isValidBase64 enforces length and padding\nexport const base64Charset = /^[0-9a-zA-Z+/]*={0,2}$/;\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = base64Charset);\n $ZodStringFormat.init(inst, def);\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////////////////////////////// ZodBase64URL //////////////////////////////\n// lax on purpose: the quantified regexes.base64url overflows the regex stack on multi-MB input; isValidBase64 enforces length on the padded string\nexport const base64urlCharset = /^[A-Za-z0-9_-]*$/;\nexport function isValidBase64URL(data) {\n if (!base64urlCharset.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 = base64urlCharset);\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodCreditCard //////////////////////////////\nconst CC_SANITIZE = /[- ]/g;\n/** Luhn checksum on a digit-only string. Adapted from valibot (MIT). */\nfunction isLuhnAlgo(digits) {\n let length = digits.length;\n let bit = 1;\n let sum = 0;\n while (length) {\n const value = digits.charCodeAt(--length) - 48;\n bit ^= 1;\n sum += bit ? [0, 2, 4, 6, 8, 1, 3, 5, 7, 9][value] : value;\n }\n return sum % 10 === 0;\n}\nexport function isValidCreditCard(input) {\n if (!regexes.creditCard.test(input))\n return false;\n return isLuhnAlgo(input.replace(CC_SANITIZE, \"\"));\n}\nexport const $ZodCreditCard = /*@__PURE__*/ core.$constructor(\"$ZodCreditCard\", (inst, def) => {\n // Shape only \u2014 the Luhn check below is not expressible as a pattern, so consumers of `pattern` (JSON Schema, template literals) get the length and separator rules alone.\n def.pattern ?? (def.pattern = regexes.creditCard);\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidCreditCard(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"credit_card\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodIBAN //////////////////////////////\n// iso 7064 mod 97-10 checksum without BigInt\nfunction isIso7064Mod97(iban) {\n let remainder = 0;\n const len = iban.length;\n for (let i = 4; i < len; i++) {\n const code = iban.charCodeAt(i);\n remainder = (code >= 65 ? remainder * 100 + (code - 55) : remainder * 10 + (code - 48)) % 97;\n }\n for (let i = 0; i < 4; i++) {\n const code = iban.charCodeAt(i);\n remainder = (code >= 65 ? remainder * 100 + (code - 55) : remainder * 10 + (code - 48)) % 97;\n }\n return remainder === 1;\n}\nexport function isValidIBAN(input) {\n if (!regexes.iban.test(input))\n return false;\n return isIso7064Mod97(input);\n}\nexport const $ZodIBAN = /*@__PURE__*/ core.$constructor(\"$ZodIBAN\", (inst, def) => {\n // shape only \u2014 checksum is not expressible as a pattern\n def.pattern ?? (def.pattern = regexes.iban);\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidIBAN(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"iban\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? String(input)\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\n// an oversized container fails its leading size checks before any element is parsed\nfunction capSize(inst, size) {\n const caps = util.sizeCaps(inst._zod.def.checks);\n if (!caps.length)\n return;\n const cap = Math.min(...caps.map((c) => c[0]));\n const parse = inst._zod.parse;\n inst._zod.parse = (payload, ctx) => {\n const n = size(payload.value);\n if (n > cap && !ctx?.skipChecks && ctx?.direction !== \"backward\") {\n for (const [max, ch] of util.sizeCaps(inst._zod.def.checks)) {\n if (n > max && ch._zod.def.when(payload)) {\n const start = payload.issues.length;\n ch._zod.check(payload);\n // the value is still the raw input, so no later check may read it\n payload.issues[start].continue = false;\n util.attachSchema(payload.issues, start, inst);\n return payload;\n }\n }\n }\n return parse(payload, ctx);\n };\n}\nconst arraySize = (input) => (Array.isArray(input) ? input.length : -1);\nconst mapSize = (input) => (input instanceof Map ? input.size : -1);\nconst setSize = (input) => (input instanceof Set ? input.size : -1);\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = memo ? memo.alloc(inst, payload, Array(input.length), ctx) : Array(input.length);\n const proms = [];\n const abortEarly = ctx?.abortEarly;\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 // the element's payload is authoritative here, since handleArrayResult forwards every issue; an object's is not, because it drops a failed absent optional\n if (abortEarly && result.issues.length !== 0 && util.aborted(result))\n break;\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n capSize(inst, arraySize);\n});\nfunction handlePropertyResult(result, final, key, input, optin, optout) {\n const isPresent = key in input;\n const isOptionalOut = optout === \"optional\";\n // The middle rung means \"absence permitted, nothing supplied in its place\", so an absent key contributes nothing \u2014 whatever the schema made of `undefined` is invented, not substituted. Only `optional` reaches this with a value: `defaulted` substitutes, and a schema that isn't optional-out has to keep the key.\n if (!isPresent && isOptionalOut && optin === \"optional\") {\n return;\n }\n if (result.issues.length) {\n // For optional-in/out schemas, ignore errors on absent keys.\n if (optin !== undefined && isOptionalOut && !isPresent) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (!isPresent && optin === undefined) {\n if (!result.issues.length) {\n final.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [key],\n });\n }\n return;\n }\n if (result.value === undefined) {\n if (isPresent || (optin === \"defaulted\" && !isOptionalOut)) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\n// one shared instance; a fresh [] per schema cost 56 bytes retained\nconst NO_SYMBOL_KEYS = [];\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n const ownSymbols = Object.getOwnPropertySymbols(def.shape);\n const symbolKeys = ownSymbols.length ? ownSymbols : NO_SYMBOL_KEYS;\n // aliases `keys` when there are no symbols, so a string-only shape keeps one array\n const allKeys = symbolKeys.length ? [...keys, ...symbolKeys] : keys;\n for (const k of allKeys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${String(k)}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n allKeys,\n symbolKeys,\n // string-only: handleCatchall matches it against `for...in`, which never yields a symbol\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst, abortEarly) {\n const unrecognized = [];\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const optin = _catchall.optin;\n const optout = _catchall.optout;\n // starts at 0, not the current length: the shape phase already ran and may have aborted\n let seen = 0;\n for (const key in input) {\n if (abortEarly && payload.issues.length !== seen) {\n if (util.aborted(payload, seen))\n break;\n seen = payload.issues.length;\n }\n // Must precede the __proto__ branch: a declared key is not unrecognized, even though the shape loop deliberately strips __proto__ from the parsed output.\n if (keySet.has(key))\n continue;\n // Don't copy an undeclared __proto__ into the result; assignment to a plain {} would replace the result prototype. But in strict mode it is still an unknown key, so report it before skipping.\n if (key === \"__proto__\") {\n if (t === \"never\")\n unrecognized.push(key);\n continue;\n }\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, optin, optout)));\n }\n else {\n handlePropertyResult(r, payload, key, input, optin, optout);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n // Describes the shape of the input, not the validity of the parsed value, so it never aborts. The parse still fails; the schema's own checks just get to run first, and an enclosing intersection can reconcile the key against a sibling operand.\n continue: true,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\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 desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n // a cloned def carries its source's accessor, which knows the shape it answers from; adopting that keeps the clone's keys readable without running it\n const sh = desc?.get ? desc.get.raw : (def.shape ?? {});\n if (sh) {\n // Freezes the shape on first read, so its getters resolve once and every later read sees the same schemas.\n const get = () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", { value: newSh });\n get.raw = newSh;\n return newSh;\n };\n get.raw = sh;\n Object.defineProperty(def, \"shape\", { get });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazyInternal(inst, \"propValues\", (zod) => {\n const shape = zod.def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n if (!Object.prototype.hasOwnProperty.call(propValues, key)) {\n util.assignProp(propValues, key, new Set());\n }\n for (const v of field.values)\n propValues[key].add(v);\n // An omittable slot reads back as undefined at a discriminator lookup, so it has to claim undefined: two options that can both omit the key are not discriminable on it.\n if (field.optin !== undefined)\n propValues[key].add(undefined);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n const proms = [];\n const shape = value.shape;\n const abortEarly = ctx?.abortEarly;\n let seen = payload.issues.length;\n for (const key of value.allKeys) {\n if (abortEarly && payload.issues.length !== seen) {\n if (util.aborted(payload, seen))\n break;\n seen = payload.issues.length;\n }\n if (key === \"__proto__\")\n continue;\n const el = shape[key];\n const optin = el._zod.optin;\n const optout = el._zod.optout;\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, optin, optout)));\n }\n else {\n handlePropertyResult(r, payload, key, input, optin, optout);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst, abortEarly === true);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const memo = core.globalConfig.memoizer;\n const generateFastpass = (shape) => {\n const normalized = _normalized.value;\n const syms = normalized.symbolKeys;\n // a symbol has no source literal, so it is read as `syms[i]` off the closed-over scope\n const doc = new Doc([\"payload\", \"ctx\"], { shape, inst, memo, syms });\n const parseStr = (k) => `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n // prefixes in place, like util.prefixIssues. newResult must land before the early return: a catchall runs after this and would otherwise write onto the caller's input\n const prefixStr = (id, k) => `\n let ${id}_ab = false;\n for (let i = 0; i < ${id}.issues.length; i++) {\n const iss = ${id}.issues[i];\n iss.path = iss.path ? [${k}, ...iss.path] : [${k}];\n payload.issues.push(iss);\n if (iss.continue !== true) ${id}_ab = true;\n }\n if (${id}_ab && ctx && ctx.abortEarly) {\n payload.value = newResult;\n return payload;\n }`;\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.allKeys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(memo ? `const newResult = memo.alloc(inst, payload, {}, ctx);` : `const newResult = {};`);\n for (const key of normalized.allKeys) {\n if (key === \"__proto__\")\n continue;\n const id = ids[key];\n const k = typeof key === \"symbol\" ? `syms[${syms.indexOf(key)}]` : util.esc(key);\n const isPresent = `${k} in input`;\n const schema = shape[key];\n const optin = schema?._zod?.optin;\n const isOptionalIn = optin !== undefined;\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(k)};`);\n if (isOptionalIn && isOptionalOut) {\n // For optional-in/out schemas, ignore errors on absent keys \u2014 and, like the interpreted path, drop the value produced alongside them. The middle rung goes further: it permits absence without supplying anything in its place, so an absent key contributes nothing at all.\n const assign = optin === \"optional\" ? `${id}_present` : `${id}.value !== undefined || ${id}_present`;\n doc.write(`\n const ${id}_present = ${isPresent};\n if (!${id}.issues.length || ${id}_present) {\n if (${id}.issues.length) {${prefixStr(id, k)}\n }\n\n if (${assign}) {\n newResult[${k}] = ${id}.value;\n }\n }\n\n `);\n }\n else if (!isOptionalIn) {\n doc.write(`\n const ${id}_present = ${isPresent};\n if (${id}.issues.length) {${prefixStr(id, k)}\n }\n if (!${id}_present && !${id}.issues.length) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [${k}]\n });\n if (ctx && ctx.abortEarly) {\n payload.value = newResult;\n return payload;\n }\n }\n\n if (${id}_present) {\n newResult[${k}] = ${id}.value;\n }\n\n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {${prefixStr(id, k)}\n }\n `);\n if (optin === \"defaulted\") {\n doc.write(`newResult[${k}] = ${id}.value;`);\n }\n else {\n doc.write(`\n if (${id}.value !== undefined || ${isPresent}) {\n newResult[${k}] = ${id}.value;\n }\n `);\n }\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n // closing `shape` in is what pays: turbofan specializes the parser against that one shape object, so every `shape[k]._zod.run` folds to a known callee. as a parameter it stays a generic load and measures 13% slower even with the forwarding frame gone\n return doc.compile();\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst, ctx?.abortEarly === true);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.options.some((o) => o._zod.optin === \"defaulted\")\n ? \"defaulted\"\n : zod.def.options.some((o) => o._zod.optin !== undefined)\n ? \"optional\"\n : undefined);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazyInternal(inst, \"values\", (zod) => {\n if (zod.def.options.every((o) => o._zod.values)) {\n return new Set(zod.def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazyInternal(inst, \"pattern\", (zod) => {\n if (zod.def.options.every((o) => o._zod.pattern)) {\n const patterns = zod.def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const matches = [];\n for (let i = 0; i < results.length; i++) {\n if (results[i].issues.length === 0)\n matches.push(i);\n }\n if (matches.length === 1) {\n final.value = results[matches[0]].value;\n return final;\n }\n if (matches.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n matches,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\n/** Returns the option whose discriminator claims `value`, or throws if ambiguous. */\nexport function getDiscriminatedOption(union, value) {\n const internals = union._zod;\n let map = internals.bag.optionsMap;\n if (!map) {\n map = discriminatorMap(internals.def);\n internals.bag.optionsMap = map;\n }\n const option = map.get(value);\n if (option === null)\n throw new Error(`Ambiguous discriminator value \"${String(value)}\"`);\n return option;\n}\nfunction discriminatorMap(def) {\n const map = new Map();\n for (const option of def.options) {\n const values = option._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const value of values) {\n if (map.has(value)) {\n if (value !== undefined)\n throw new Error(`Duplicate discriminator value \"${String(value)}\"`);\n // keep the collision marked so a later member cannot reclaim it\n map.set(value, null);\n }\n else {\n map.set(value, option);\n }\n }\n }\n return map;\n}\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazyInternal(inst, \"propValues\", (zod) => {\n const propValues = {};\n let undefinedCount = 0;\n for (const option of zod.def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${zod.def.options.indexOf(option)}\"`);\n if (pv[zod.def.discriminator]?.has(undefined))\n undefinedCount++;\n for (const [k, v] of Object.entries(pv)) {\n if (!Object.prototype.hasOwnProperty.call(propValues, k)) {\n util.assignProp(propValues, k, new Set());\n }\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n if (!zod.def.unionFallback && undefinedCount > 1)\n propValues[zod.def.discriminator]?.delete(undefined);\n return propValues;\n });\n // Checked now rather than in the lookup map below, so an option that lacks the discriminator fails at the `discriminatedUnion` call instead of on the first object parsed. Options whose shape cannot be enumerated without resolving it \u2014 pipes and lazies \u2014 are left to the map.\n def.options.forEach((option, i) => {\n const propShape = util.rawShape(option._zod.def);\n if (propShape && !Object.prototype.hasOwnProperty.call(propShape, def.discriminator)) {\n throw new Error(`Invalid discriminated union option at index \"${i}\"`);\n }\n });\n const disc = util.cached(() => discriminatorMap(def));\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 value = input?.[def.discriminator];\n const opt = disc.value.get(value);\n // forward metadata cannot choose an encoder for an absent tag\n if (opt && (value !== undefined || ctx.direction !== \"backward\")) {\n return opt._zod.run(payload, ctx);\n }\n // Fall back to union matching when the fast discriminator path fails:\n // - explicitly enabled via unionFallback, or\n // - during backward direction (encode), since codec-based discriminators have different values in forward vs backward directions\n if (def.unionFallback || ctx.direction === \"backward\") {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n options: Array.from(disc.value.keys()).filter((value) => disc.value.get(value) !== null),\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nexport function mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n if (Object.prototype.hasOwnProperty.call(newObj, \"__proto__\"))\n delete newObj.__proto__;\n for (const key of sharedKeys) {\n if (key === \"__proto__\")\n continue;\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) reject each key. A key rejection is reported only when BOTH sides reject it, so a key owned by one branch survives the other's key schema. strictObject reports these as unrecognized_keys; a record with an open key schema reports one invalid_key per key.\n const unrecKeys = new Map();\n let unrecIssue;\n const keyIssues = new Map();\n const collect = (iss, side) => {\n let keys;\n if (iss.code === \"unrecognized_keys\" && !iss.path?.length) {\n unrecIssue ?? (unrecIssue = iss);\n keys = iss.keys;\n }\n else if (iss.code === \"invalid_key\" && iss.origin === \"record\" && iss.path?.length === 1) {\n const k = String(iss.path[0]);\n if (!keyIssues.has(k))\n keyIssues.set(k, iss);\n keys = [k];\n }\n else {\n return false;\n }\n for (const k of keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k)[side] = true;\n }\n return true;\n };\n for (const iss of left.issues) {\n if (!collect(iss, \"l\"))\n result.issues.push(iss);\n }\n for (const iss of right.issues) {\n if (!collect(iss, \"r\"))\n result.issues.push(iss);\n }\n // Report only keys rejected by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length) {\n const aggregated = unrecIssue ? bothKeys.filter((k) => unrecIssue.keys.includes(k)) : [];\n if (aggregated.length)\n result.issues.push({ ...unrecIssue, keys: aggregated });\n for (const k of bothKeys) {\n if (!aggregated.includes(k) && keyIssues.has(k))\n result.issues.push(keyIssues.get(k));\n }\n }\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n if (util.aborted(result))\n return result;\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = memo ? memo.alloc(inst, payload, [], ctx) : [];\n const proms = [];\n const optinStart = getTupleOptStart(items, \"optin\");\n const optoutStart = getTupleOptStart(items, \"optout\");\n if (!def.rest) {\n if (input.length < optinStart) {\n payload.issues.push({\n code: \"too_small\",\n minimum: optinStart,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n if (input.length > items.length) {\n payload.issues.push({\n code: \"too_big\",\n maximum: items.length,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n }\n }\n // Run every item in parallel, collecting results into an indexed array. The post-processing in `handleTupleResults` walks them in order so it can decide whether an absent optional-output error can truncate the tail or must be reported to preserve required output.\n const itemResults = new Array(items.length);\n // only tracked when there is a rest loop to skip\n const abortEarly = def.rest ? ctx?.abortEarly : undefined;\n let itemAborted = false;\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 if (abortEarly && !itemAborted && r.issues.length)\n itemAborted = util.aborted(r);\n }\n }\n // sound because rest is non-empty exactly when every fixed index is present, the one case handleTupleResults cannot discard an item's issues\n if (def.rest && !itemAborted) {\n let i = items.length - 1;\n const rest = input.slice(items.length);\n let seen = payload.issues.length;\n for (const el of rest) {\n if (abortEarly && payload.issues.length !== seen) {\n if (util.aborted(payload, seen))\n break;\n seen = payload.issues.length;\n }\n i++;\n const result = def.rest._zod.run({ value: el, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((r) => handleTupleResult(r, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => handleTupleResults(itemResults, payload, items, input, optoutStart));\n }\n return handleTupleResults(itemResults, payload, items, input, optoutStart);\n };\n});\nfunction getTupleOptStart(items, key) {\n for (let i = items.length - 1; i >= 0; i--) {\n // optin is a three-rung ladder so any rung above `undefined` permits an absent slot; optout stays two-valued.\n const omittable = key === \"optin\" ? items[i]._zod.optin !== undefined : items[i]._zod.optout === \"optional\";\n if (!omittable)\n return i + 1;\n }\n return 0;\n}\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nfunction handleTupleResults(itemResults, final, items, input, optoutStart) {\n // Walk results in order. Mirror $ZodObject's swallow-on-absent-optional rule, but only after `optoutStart`: the first index where the output tuple tail can be absent.\n for (let i = 0; i < items.length; i++) {\n const r = itemResults[i];\n const isPresent = i < input.length;\n // The array analog of `handlePropertyResult`'s absent-key early return: the middle rung permits absence without supplying anything in its place, so the tail truncates here instead of materializing whatever the item made of `undefined`.\n if (!isPresent && i >= optoutStart && items[i]._zod.optin === \"optional\") {\n final.value.length = i;\n break;\n }\n if (r.issues.length) {\n if (!isPresent && i >= optoutStart) {\n final.value.length = i;\n break;\n }\n final.issues.push(...util.prefixIssues(i, r.issues));\n }\n final.value[i] = r.value;\n }\n // Drop trailing slots that produced `undefined` for absent input\n // (the array analog of an absent optional key on an object). The\n // `i >= input.length` floor is critical: an explicit `undefined`\n // *inside* the input must be preserved even when the schema is\n // optional-out (e.g. `z.string().or(z.undefined())` accepting an\n // explicit undefined value).\n for (let i = final.value.length - 1; i >= input.length; i--) {\n if (items[i]._zod.optout === \"optional\" && final.value[i] === undefined) {\n final.value.length = i;\n }\n else {\n break;\n }\n }\n return final;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n // no guard in either loop below: a record's invalid_key aborts but an enclosing intersection can reconcile it, so a stopped loop hides keys the sibling does not own and the intersection then rejects nothing\n const proms = [];\n const values = def.keyType._zod.values;\n if (values && !def.partial) {\n payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n // A declared __proto__ is stripped but is not an unrecognized key.\n if (key === \"__proto__\")\n continue;\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n continue;\n }\n const outKey = keyResult.value;\n if (outKey === \"__proto__\")\n continue;\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n if (def.mode === \"loose\") {\n // skip __proto__ so it can't replace the result prototype via the assignment setter on the plain {} we build into\n if (key === \"__proto__\")\n continue;\n payload.value[key] = input[key];\n }\n else {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n continue: true,\n });\n }\n }\n else {\n payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};\n // An enumerable key schema declares which keys the record owns, so a key outside the set is unrecognized. A non-enumerable one (regex, refine) is a constraint every key must satisfy, so a failing key is invalid. Only the former is reconcilable against the other side of an intersection.\n let unrecognized;\n // Reflect.ownKeys for Symbol-key support; filter non-enumerable to match z.object()\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n if (!Object.prototype.propertyIsEnumerable.call(input, key))\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key). This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else if (values) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n // the guard above tests the raw input key, but the key schema can normalize an ordinary key into __proto__; re-check the key we actually write under\n const outKey = keyResult.value;\n if (outKey === \"__proto__\")\n continue;\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n continue: true,\n });\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = memo ? memo.alloc(inst, payload, new Map(), ctx) : new Map();\n const abortEarly = ctx?.abortEarly;\n let seen = payload.issues.length;\n for (const [key, value] of input) {\n if (abortEarly && payload.issues.length !== seen) {\n if (util.aborted(payload, seen))\n break;\n seen = payload.issues.length;\n }\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 capSize(inst, mapSize);\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n const memo = core.globalConfig.memoizer;\n memo?.attach(inst);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = memo ? memo.alloc(inst, payload, new Set(), ctx) : new Set();\n const abortEarly = ctx?.abortEarly;\n let seen = payload.issues.length;\n for (const item of input) {\n if (abortEarly && payload.issues.length !== seen) {\n if (util.aborted(payload, seen))\n break;\n seen = payload.issues.length;\n }\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 capSize(inst, setSize);\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 util.defineLazyInternal(inst, \"pattern\", (zod) => {\n const patternValues = util.getEnumValues(zod.def.entries).filter((k) => util.propertyKeyTypes.has(typeof k));\n // unmatchable fallback, RE2-safe: an empty alternation would compile to /^()$/, which matches \"\"\n return new RegExp(patternValues.length ? `^(${patternValues.map((o) => util.escapeRegex(o.toString())).join(\"|\")})$` : \"^[^\\\\s\\\\S]$\");\n });\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = new Set(def.values);\n inst._zod.values = values;\n util.defineLazyInternal(inst, \"pattern\", (zod) => {\n const vals = zod.def.values;\n // unmatchable fallback, RE2-safe: an empty alternation would compile to /^()$/, which matches \"\"\n return new RegExp(vals.length\n ? `^(${vals\n .map((o) => typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o))\n .join(\"|\")})$`\n : \"^[^\\\\s\\\\S]$\");\n });\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n core.globalConfig.memoizer?.guard(inst);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(payload, result) {\n // A substituting schema that still failed has no usable answer; yield undefined. Its issues are simply dropped: it ran on a payload of its own, so there is no shared array to truncate and nothing of the caller's to lose with it.\n payload.value = result.issues.length ? undefined : result.value;\n return payload;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n // .optional() propagates absence rather than substituting for it, so a defaulted inner keeps its rung.\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin === \"defaulted\" ? \"defaulted\" : \"optional\");\n inst._zod.optout = \"optional\";\n util.defineLazyInternal(inst, \"values\", (zod) => {\n const values = zod.def.innerType._zod.values;\n return values ? new Set([...values, undefined]) : undefined;\n });\n util.defineLazyInternal(inst, \"pattern\", (zod) => {\n const pattern = zod.def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (payload.value === undefined) {\n // Only the top rung substitutes a value for absence; everything else leaves it intact, which is what .optional() means.\n if (def.innerType._zod.optin !== \"defaulted\")\n return payload;\n // Its own payload, for the same reason $ZodCatch gets one: a pipe forwards an unrecognized key through the caller's issues array, and this must not read that as the substituting schema failing and drop it.\n const result = def.innerType._zod.run({ value: payload.value, issues: [] }, ctx);\n if (result instanceof Promise)\n return result.then((result) => handleOptionalResult(payload, result));\n return handleOptionalResult(payload, result);\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n util.defineLazyInternal(inst, \"pattern\", (zod) => zod.def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType._zod.optout);\n util.defineLazyInternal(inst, \"pattern\", (zod) => {\n const pattern = zod.def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazyInternal(inst, \"values\", (zod) => {\n return zod.def.innerType._zod.values ? new Set([...zod.def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"defaulted\";\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"defaulted\";\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"values\", (zod) => {\n const v = zod.def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nfunction handleCatchResult(payload, result, def, ctx) {\n if (!result.issues.length) {\n payload.value = result.value;\n // The value carries up, so the flag describing it has to carry with it: a back-edge into a node still being parsed must not be frozen by an enclosing readonly, and its checks belong to the node itself. Guarded so the ordinary case adds no own property.\n if (result.memo)\n payload.memo = true;\n return payload;\n }\n // Spread the inner's own payload, not ours: `value` has to stay the input the catch was handed, and the inner ran on a payload of its own so its issues are already private to this call.\n payload.value = def.catchValue({\n ...result,\n value: payload.value,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n return payload;\n}\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType._zod.optin === \"defaulted\" ? \"defaulted\" : \"optional\");\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType._zod.optout);\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run({ value: payload.value, issues: [] }, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleCatchResult(payload, result, def, ctx));\n }\n return handleCatchResult(payload, result, def, ctx);\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.in._zod.values);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.in._zod.optin);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.out._zod.optout);\n util.defineLazyInternal(inst, \"propValues\", (zod) => zod.def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n // Any issue stops the pipe, so a failing refinement never feeds its transform. An unrecognized key is the exception: it describes the input's extra properties, not the value being piped, and an enclosing intersection may yet reconcile it.\n if (left.issues.some((iss) => iss.code !== \"unrecognized_keys\")) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.in._zod.values);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.in._zod.optin);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.out._zod.optout);\n util.defineLazyInternal(inst, \"propValues\", (zod) => zod.def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodPreprocess = /*@__PURE__*/ core.$constructor(\"$ZodPreprocess\", (inst, def) => {\n $ZodPipe.init(inst, def);\n});\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazyInternal(inst, \"propValues\", (zod) => zod.def.innerType._zod.propValues);\n util.defineLazyInternal(inst, \"values\", (zod) => zod.def.innerType._zod.values);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.def.innerType?._zod?.optin);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n // A repeat visit hands back a node that is still being built; freezing it here would make the rest of its keys fail to assign.\n if (!payload.memo)\n payload.value = Object.freeze(payload.value);\n return payload;\n}\n// a leaf's pattern source with its own checks folded in: the last pattern-carrying check wins, else length bounds narrow the catch-all, else an integer format narrows the number form. the fold lives here instead of on `_zod.pattern` so a bundle without template literals never pays for it\nfunction leafPattern(schema) {\n const def = schema._zod.def;\n let pattern = def.pattern;\n let isInt = !!def.format?.includes(\"int\");\n let minimum;\n let maximum;\n for (const ch of def.checks ?? []) {\n const d = ch._zod.def;\n if (d.pattern)\n pattern = d.pattern;\n isInt || (isInt = !!d.format?.includes(\"int\"));\n const lo = d.minimum ?? d.length;\n const hi = d.maximum ?? d.length;\n if (lo !== undefined && (minimum === undefined || lo > minimum))\n minimum = lo;\n if (hi !== undefined && (maximum === undefined || hi < maximum))\n maximum = hi;\n }\n if (pattern)\n return pattern.source;\n // an empty range matches nothing at runtime, and `{8,5}` is not a legal quantifier\n if (minimum !== undefined && maximum !== undefined && minimum > maximum)\n return \"(?!)\";\n if (minimum !== undefined || maximum !== undefined)\n return regexes.string({ minimum, maximum }).source;\n const own = schema._zod.pattern;\n return (isInt && own === regexes.number ? regexes.integer : own)?.source;\n}\n// a part's pattern source. a wrapper's pattern embeds its inner pattern's source verbatim, so the folded form is substituted in place without knowing the wrapper's own composition; a union's options are joined the way the union builds its own pattern\nfunction partPattern(schema) {\n const def = schema._zod.def;\n const own = schema._zod.pattern?.source;\n // lazy resolves its inner on the internals, not the def\n const inner = def.innerType ?? schema._zod.innerType;\n if (inner) {\n const before = inner._zod.pattern?.source;\n const after = partPattern(inner);\n if (own && before && after && after !== before) {\n return own.replace(util.cleanRegex(before), () => util.cleanRegex(after));\n }\n return own;\n }\n if (def.options) {\n const sources = def.options.map(partPattern);\n if (sources.every(Boolean))\n return `^(${sources.map((s) => util.cleanRegex(s)).join(\"|\")})$`;\n }\n return leafPattern(schema);\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 const source = partPattern(part);\n if (!source) {\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n regexParts.push(util.cleanRegex(source));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n // Defined, not assigned: the classic prototype exposes `_def` as a getter with no setter.\n Object.defineProperty(inst, \"_def\", { value: def });\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n // Defined inline so the closure stays anonymous: binding it to a `const` first names it, which costs 256 bytes per implemented function.\n return Object.defineProperty(function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n }, \"_zod\", { value: inst._zod, enumerable: false });\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return Object.defineProperty(async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n }, \"_zod\", { value: inst._zod, enumerable: false });\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // Cache the resolved inner type on the shared `def` so all clones of this lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance, preserving identity for cycle detection on recursive schemas.\n util.defineLazy(inst._zod, \"innerType\", () => {\n const d = def;\n if (!d._cachedInner)\n d._cachedInner = def.getter();\n return d._cachedInner;\n });\n util.defineLazyInternal(inst, \"pattern\", (zod) => zod.innerType?._zod?.pattern);\n util.defineLazyInternal(inst, \"propValues\", (zod) => zod.innerType?._zod?.propValues);\n util.defineLazyInternal(inst, \"optin\", (zod) => zod.innerType?._zod?.optin ?? undefined);\n util.defineLazyInternal(inst, \"optout\", (zod) => zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n", "import * as util from \"./util.js\";\nexport class $ZodCyclicError extends Error {\n constructor() {\n super(`Cannot parse a reference cycle that closes through a transform`);\n this.name = \"ZodCyclicError\";\n }\n}\n/** Keyed off the context object every schema in one parse call already shares. */\nconst STATE = \"~memo\";\nconst NO_ISSUES = [];\n// a value a cycle can close through\nfunction isRef(value) {\n return value !== null && typeof value === \"object\";\n}\n// Receivers prefix paths in place, so the cache and every hand-out need their own copies.\nfunction cloneIssues(issues) {\n return issues.map((iss) => (iss.path ? { ...iss, path: iss.path.slice() } : { ...iss }));\n}\nconst recursive = /*@__PURE__*/ new WeakMap();\n/** What the walk established, in order of certainty: ordered so the strongest answer among children wins. */\nconst NONE = 0;\nconst ASSUMED = 1;\nconst PROVEN = 2;\n/** Whether this schema's subtree contains a cycle, so one parse can re-enter it. */\nfunction isRecursive(inst, stack, resolve) {\n const cached = recursive.get(inst);\n if (cached !== undefined)\n return cached ? PROVEN : NONE;\n // Relative to the walk in progress, so not cached.\n if (stack.has(inst))\n return PROVEN;\n stack.add(inst);\n let result = NONE;\n const check = (child) => {\n if (result !== PROVEN && child?._zod) {\n const answer = isRecursive(child, stack, resolve);\n if (answer > result)\n result = answer;\n }\n };\n // `Reflect.ownKeys` rather than `Object.keys`, so a cycle through a declared symbol key is still seen\n const shape = (sh, spread) => {\n let answer = NONE;\n for (const key of Reflect.ownKeys(sh)) {\n const desc = Object.getOwnPropertyDescriptor(sh, key);\n // an object resolves its shape by spread, so a key it does not enumerate is never parsed; `z.properties` reads every own key and so keeps them all\n if (spread && !desc.enumerable)\n continue;\n // resolving runs user code, and a factory mints a fresh subtree per read, so an edge the walk can't follow counts as a cycle\n const child = desc.get ? ASSUMED : desc.value?._zod ? isRecursive(desc.value, stack, resolve) : NONE;\n if (child > answer)\n answer = child;\n }\n return answer;\n };\n const merge = (answer) => {\n if (answer > result)\n result = answer;\n };\n const def = inst._zod.def;\n const kind = def.type;\n switch (kind) {\n case \"object\": {\n const raw = util.rawShape(def);\n // a def with no raw shape answers `shape` from an accessor of its own, and running that can mint a whole fresh subtree\n merge(raw ? shape(raw, true) : ASSUMED);\n check(def.catchall);\n break;\n }\n case \"array\":\n check(def.element);\n break;\n case \"tuple\":\n for (const el of def.items)\n check(el);\n check(def.rest);\n break;\n case \"record\":\n case \"map\":\n check(def.keyType);\n check(def.valueType);\n break;\n case \"set\":\n check(def.valueType);\n break;\n case \"union\":\n for (const el of def.options)\n check(el);\n break;\n case \"intersection\":\n check(def.left);\n check(def.right);\n break;\n case \"optional\":\n case \"nullable\":\n case \"default\":\n case \"prefault\":\n case \"catch\":\n case \"readonly\":\n case \"nonoptional\":\n case \"promise\":\n case \"success\":\n check(def.innerType);\n break;\n case \"pipe\":\n check(def.in);\n check(def.out);\n break;\n case \"function\":\n check(def.input);\n check(def.output);\n break;\n // `$ZodLazy` caches its inner on the def, so a resolved edge is followed exactly\n case \"lazy\": {\n const inner = def._cachedInner ?? (resolve ? inst._zod.innerType : undefined);\n // walked with resolution off: one hop sees past the deferral, and a lazy that yields only another unresolved lazy is generative, so it stops there\n merge(inner ? isRecursive(inner, stack, false) : ASSUMED);\n break;\n }\n // a leaf by choice: `parts` are regex fragments, not data positions\n case \"template_literal\":\n // leaves\n case \"string\":\n case \"number\":\n case \"int\":\n case \"boolean\":\n case \"bigint\":\n case \"symbol\":\n case \"undefined\":\n case \"null\":\n case \"void\":\n case \"never\":\n case \"any\":\n case \"unknown\":\n case \"date\":\n case \"nan\":\n case \"enum\":\n case \"literal\":\n case \"file\":\n case \"transform\":\n case \"custom\":\n break;\n default: {\n // a new built-in kind becomes a compile error here\n kind;\n // a user-defined kind can still hold children, and only its author knows where, so fall back to scanning the def \u2014 skipping accessors, since reading one can run user code\n for (const key in def) {\n const desc = Object.getOwnPropertyDescriptor(def, key);\n if (!desc || desc.get)\n continue;\n const value = desc.value;\n if (!value || typeof value !== \"object\")\n continue;\n if (value._zod)\n check(value);\n else if (Array.isArray(value))\n for (const el of value)\n check(el);\n }\n }\n }\n stack.delete(inst);\n return settle(inst, result);\n}\n/** An assumed answer must not outlive the resolution that settles it, so only a certain one is cached. */\nfunction settle(inst, answer) {\n if (answer !== ASSUMED)\n recursive.set(inst, answer === PROVEN);\n return answer;\n}\n/**\n * Whether one parse can re-enter this schema, i.e. its subtree contains a cycle.\n * Exported for `z.compile`, which refuses to compile such a schema: cycle\n * breaking is driven from here off state keyed on the parse context, and a\n * generated fast path has no context to key on.\n */\nexport function isRecursiveSchema(inst) {\n // z.compile never parses, so nothing would ever resolve a lazy for it; it runs once and already treats a throw here as recursive\n return isRecursive(inst, new Set(), true) !== NONE;\n}\nfunction bucketFor(state, inst) {\n let bucket = state.buckets.get(inst);\n if (!bucket) {\n bucket = new WeakMap();\n state.buckets.set(inst, bucket);\n }\n return bucket;\n}\n// Set immediately before delegating to core and cleared immediately after, so `alloc` registers only for a visit this module is driving.\nlet handoff;\n// Allocated but unfinished entries. `alloc` and the matching pop both happen in the synchronous part of a parse, so they nest even when children are async, and one stack serves every schema.\nconst open = [];\nconst memo = {\n alloc(_inst, payload, empty) {\n const bucket = handoff;\n if (!bucket)\n return empty;\n handoff = undefined;\n const entry = { value: empty, issues: null };\n bucket.set(payload.value, entry);\n open.push(entry);\n return empty;\n },\n guard(inst) {\n var _a;\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred.push(() => {\n const base = inst._zod.parse;\n const wrapped = (payload, ctx) => {\n // The value is a placeholder a back-edge is still waiting on, so the cycle closes through this transform. Its output can't exist in time to bind.\n if (ctx.direction !== \"backward\" && isBackEdge(ctx, payload.value))\n throw new $ZodCyclicError();\n return base(payload, ctx);\n };\n inst._zod.parse = wrapped;\n if (inst._zod.run === base)\n inst._zod.run = wrapped;\n });\n },\n attach(inst) {\n var _a;\n let isRecursiveInst;\n let rechecked = false;\n // a recursive schema is re-entered many times per parse and its bucket never changes\n let lastCtx;\n let lastBucket;\n // Wraps `parse` in a deferred so it sees the container's final parse. Core's own deferred copies `parse` into `run` when there are no checks, and it ran first, so `run` is patched to match; with checks, `run` reads `parse` dynamically.\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred.push(() => {\n const base = inst._zod.parse;\n const wrapped = (payload, ctx) => {\n if (isRecursiveInst === undefined) {\n const walked = isRecursive(inst, new Set(), false);\n if (walked === NONE) {\n // Nothing here can ever fire, so take it back out.\n inst._zod.parse = base;\n if (inst._zod.run === wrapped)\n inst._zod.run = base;\n return base(payload, ctx);\n }\n // this parse resolves the deferred edges on its own path, so ask once more before latching\n if (walked === PROVEN || rechecked)\n isRecursiveInst = true;\n else\n rechecked = true;\n }\n const input = payload.value;\n if (!isRef(input))\n return base(payload, ctx);\n let state = ctx[STATE];\n if (!state) {\n state = { buckets: new WeakMap(), backEdges: undefined };\n ctx[STATE] = state;\n }\n let bucket;\n if (lastCtx === ctx) {\n bucket = lastBucket;\n }\n else {\n bucket = bucketFor(state, inst);\n lastCtx = ctx;\n lastBucket = bucket;\n }\n const hit = bucket.get(input);\n if (hit) {\n payload.value = hit.value;\n if (hit.issues) {\n if (hit.issues.length)\n payload.issues.push(...cloneIssues(hit.issues));\n }\n else {\n // Still being parsed: its own checks cover it, so skip them here.\n payload.memo = true;\n state.backEdges ?? (state.backEdges = new WeakSet());\n state.backEdges.add(hit.value);\n }\n return payload;\n }\n handoff = bucket;\n const depth = open.length;\n const result = base(payload, ctx);\n handoff = undefined;\n // A container that rejected its input outright allocated nothing.\n const entry = open.length > depth ? open.pop() : undefined;\n // Both paths written out so the sync one allocates no closure. It runs once per node, and capturing here cost more than everything else combined.\n if (result instanceof Promise) {\n return result.then((r) => {\n if (entry)\n entry.issues = r.issues.length ? cloneIssues(r.issues) : NO_ISSUES;\n return r;\n });\n }\n if (entry)\n entry.issues = result.issues.length ? cloneIssues(result.issues) : NO_ISSUES;\n return result;\n };\n inst._zod.parse = wrapped;\n if (inst._zod.run === base)\n inst._zod.run = wrapped;\n });\n },\n};\n/** The memoizer that gives containers cycle support. `zod` installs it by default; `zod/mini` opts in with `config({ memoizer: memoizer() })`. */\nexport function memoizer() {\n return memo;\n}\n/** Whether this value is a node a back-edge resolved to before it finished. */\nexport function isBackEdge(ctx, value) {\n const backEdges = ctx[STATE]?.backEdges;\n return backEdges !== undefined && isRef(value) && backEdges.has(value);\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n currency_code: \"currency code\",\n credit_card: \"credit card number\",\n iban: \"IBAN\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n function getTypeName(type, input) {\n if (type === \"number\" && typeof input === \"number\" && !Number.isFinite(input)) {\n return String(input);\n }\n return TypeDictionary[type] ?? type;\n }\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = getTypeName(issue.expected);\n const receivedType = util.parsedType(issue.input);\n const received = getTypeName(receivedType, issue.input);\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.exact ? \"exactly \" : issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.exact ? \"exactly \" : issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n if (issue.options && Array.isArray(issue.options) && issue.options.length > 0) {\n const opts = issue.options.map((o) => `'${o}'`).join(\" | \");\n return `Invalid discriminator value. Expected ${opts}`;\n }\n if (issue.inclusive === false) {\n return \"Invalid input: more than one option matched\";\n }\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "var _a;\nexport const $output = /*@__PURE__*/ Symbol(\"ZodOutput\");\nexport const $input = /*@__PURE__*/ Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n", "import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\nfunction snapshotChecks(def) {\n if (def.checks)\n def.checks = [...def.checks];\n return def;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class(snapshotChecks({ type: \"string\", ...util.normalizeParams(params) }));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class(snapshotChecks({ type: \"string\", coerce: true, ...util.normalizeParams(params) }));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link _cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _creditCard(Class, params) {\n return new Class({\n type: \"string\",\n format: \"credit_card\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _iban(Class, params) {\n return new Class({\n type: \"string\",\n format: \"iban\",\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(snapshotChecks({ type: \"number\", checks: [], ...util.normalizeParams(params) }));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class(snapshotChecks({ type: \"number\", coerce: true, checks: [], ...util.normalizeParams(params) }));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _properties(shape, params) {\n return new checks.$ZodCheckProperties({\n check: \"properties\",\n shape,\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: options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : util.constantCatch(catchValue)),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn, params) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n if (!(\"input\" in _issue))\n _issue.input = payload.value;\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n }, params);\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n codec._zod.bag.truthy = truthyArray;\n codec._zod.bag.falsy = falsyArray;\n codec._zod.bag.case = params.case ?? \"insensitive\";\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n", "import { globalRegistry } from \"./registries.js\";\nimport { assignProp } from \"./util.js\";\nfunction assignProps(target, ...sources) {\n for (const source of sources) {\n for (const key of Reflect.ownKeys(source)) {\n if (Object.prototype.propertyIsEnumerable.call(source, key)) {\n assignProp(target, key, source[key]);\n }\n }\n }\n return target;\n}\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n sharedDefsExtractedFor: undefined,\n sharedEmitDoneFor: undefined,\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n intersections: [],\n deferred: [],\n external: params?.external ?? undefined,\n };\n}\n/**\n * Applies the `unrepresentable` setting at a site that has no JSON Schema equivalent. Throws\n * `message` unless the setting (or the handler's return value) says otherwise. Returns `true` if a\n * custom JSON Schema was written into `json`, in which case the caller must not write its own.\n */\nexport function handleUnrepresentable(schema, ctx, json, params, message) {\n const result = typeof ctx.unrepresentable === \"function\"\n ? ctx.unrepresentable({ zodSchema: schema, path: params.path, message })\n : ctx.unrepresentable;\n if (result === \"any\")\n return false;\n if (result === undefined || result === \"throw\")\n throw new Error(message);\n Object.assign(json, result);\n return true;\n}\n// never rename this back to `process`: bundler polyfills inject a top-level `const process` that a lexical declaration of the same name collides with (#6397)\nexport function processSchema(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n ctx.sharedDefsExtractedFor = undefined;\n ctx.sharedEmitDoneFor = undefined;\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n processSchema(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n assignProps(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && \"_prefault\" in result.schema)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\n/** @deprecated Renamed to `processSchema`. An export alias declares no binding, so it is safe to keep. */\nexport { processSchema as process };\n// Escape a reference token for use in a JSON Pointer fragment (RFC 6901): `~` becomes `~0` and `/` becomes `~1`. The `~` replacement must run first.\nfunction encodeJSONPointerSegment(segment) {\n return segment.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // With `external` set, every registered schema resolves through the external branch of `makeURI`, so the root branch below produces the same ref the external branch would \u2014 this pass is identical whichever schema it is called with, and only needs to run once.\n if (ctx.external && ctx.sharedDefsExtractedFor === ctx.external)\n return;\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes multiple schemas map to the same seen object. e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${encodeJSONPointerSegment(id)}` };\n }\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n // an id-less root has nowhere to be extracted to, so it stays inline and self-references as `#`\n if (entry[1] === root && !entry[1].schema.id) {\n return { ref: uriPrefix };\n }\n // self-contained schema\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + encodeJSONPointerSegment(defId) };\n };\n // stored cached version in `def` property remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n }\n }\n }\n if (ctx.external)\n ctx.sharedDefsExtractedFor = ctx.external;\n}\n/** Rewrites `anyOf: [{type: \"a\"}, {type: \"b\"}]` to `type: [\"a\", \"b\"]`, which every JSON Schema draft treats as equivalent and most consumers render far better for the nullable case. Only branches that are a bare type assertion qualify \u2014 anything carrying a constraint, `$ref`, `const` or metadata is left alone. Runs after `flattenRef`, so a branch an override decorated or `$defs` extraction turned into a `$ref` is no longer bare and correctly stays in `anyOf`. `oneOf` is excluded: `integer` and `number` overlap, so \"exactly one\" and \"at least one\" are not the same there. OpenAPI 3.0 is excluded: its `type` must be a single string. */\nfunction compactTypeUnion(schema) {\n const options = schema.anyOf;\n if (!Array.isArray(options) || options.length === 0 || schema.type !== undefined)\n return;\n const types = [];\n for (const option of options) {\n if (!option || typeof option !== \"object\")\n return;\n // A branch that is itself a compactible union folds into this one \u2014 nested `anyOf` and a flat `type` array say the same thing. Compacting it first also makes the result independent of the order this pass walks the seen map in.\n compactTypeUnion(option);\n const keys = Object.keys(option);\n if (keys.length !== 1 || keys[0] !== \"type\")\n return;\n const type = option.type;\n for (const member of Array.isArray(type) ? type : [type]) {\n if (typeof member !== \"string\")\n return;\n if (!types.includes(member))\n types.push(member);\n }\n }\n delete schema.anyOf;\n // A `type` array must be non-empty and unique (metaschema); a single member is spelled as a bare string.\n schema.type = types.length === 1 ? types[0] : types;\n}\n/** Keywords `foldIntersection` knows how to combine. Anything else \u2014 `$ref`, `patternProperties`,\n * an annotation like `description` \u2014 makes a member unfoldable, so a constraint this does not\n * understand leaves the `allOf` alone instead of being silently dropped or misattributed. */\nconst FOLDABLE_KEYS = new Set([\"type\", \"properties\", \"required\", \"additionalProperties\"]);\nconst UNION_KEYS = [\"oneOf\", \"anyOf\"];\n/** A member's constraint on a key it does not declare itself. A `catchall` states one; `false`, an absent `additionalProperties`, and the empty schema a loose object emits state nothing. */\nfunction undeclaredConstraint(member) {\n const extra = member.additionalProperties;\n if (extra === undefined || extra === false || typeof extra !== \"object\" || extra === null)\n return null;\n return Object.keys(extra).length ? extra : null;\n}\n/** Combines object members into the single object they describe together, or returns `null` if any of them carries a keyword outside {@link FOLDABLE_KEYS}. */\nfunction foldObjects(members) {\n const objects = [];\n for (const member of members) {\n // A boolean subschema is legal JSON Schema and carries no keywords to fold.\n if (typeof member !== \"object\" || member.type !== \"object\")\n return null;\n for (const key in member) {\n if (!FOLDABLE_KEYS.has(key))\n return null;\n }\n objects.push(member);\n }\n const properties = {};\n const required = new Set();\n for (const object of objects) {\n for (const key in object.properties) {\n // `in` would report a `__proto__` key as already present via the prototype chain and skip it.\n if (Object.prototype.hasOwnProperty.call(properties, key))\n continue;\n // Every member constrains this key: the ones that declare it say how, and a `catchall` member constrains it too even though it does not name it. The key has to satisfy all of them, which is the same intersection one level down.\n const parts = [];\n for (const other of objects) {\n const part = other.properties?.[key] ?? undeclaredConstraint(other);\n if (part === null || part === undefined)\n continue;\n if (!parts.some((seen) => JSON.stringify(seen) === JSON.stringify(part)))\n parts.push(part);\n }\n const merged = parts.length === 1\n ? parts[0]\n : (foldObjects(parts) ?? { allOf: parts });\n assignProp(properties, key, merged);\n }\n for (const key of object.required ?? [])\n required.add(key);\n }\n const folded = { type: \"object\", properties };\n if (required.size)\n folded.required = [...required];\n // A key no member declares is rejected only when every member rejects it, so the fold is closed only when every member is. Otherwise it carries whatever the `catchall` members demand of such a key.\n if (objects.every((object) => object.additionalProperties === false)) {\n folded.additionalProperties = false;\n }\n else {\n const constraints = [];\n for (const object of objects) {\n const constraint = undeclaredConstraint(object);\n if (constraint && !constraints.some((seen) => JSON.stringify(seen) === JSON.stringify(constraint)))\n constraints.push(constraint);\n }\n if (constraints.length === 1)\n folded.additionalProperties = constraints[0];\n else if (constraints.length > 1)\n folded.additionalProperties = { allOf: constraints };\n }\n return folded;\n}\n/** `additionalProperties` in an `allOf` member sees only that member's own `properties`, so two\n * closed object members reject each other's keys and the schema validates nothing. Zod's parser\n * pools the key sets instead \u2014 `handleIntersectionResults` reports a key as unrecognized only when\n * *every* side rejects it \u2014 so the emitted schema has to pool them too, and folding the members\n * into one object is the encoding that says so on every target.\n *\n * This runs from `finalize`, after `extractDefs`, which is what keeps it clear of the `$ref`\n * machinery: a member extracted into `$defs` is already a `$ref` by now and declines to fold, so it\n * keeps its reference and its own closedness rather than being inlined as a stale copy. */\nfunction foldIntersection(json) {\n const allOf = json.allOf;\n if (!Array.isArray(allOf) || allOf.length < 2)\n return;\n // An `override` runs before this pass and may have written object keywords onto the intersection itself. Those are deliberate, so decline rather than overwrite them.\n for (const key of FOLDABLE_KEYS)\n if (key in json)\n return;\n // An intersection distributes over a union: `A & (X | Y)` is `(A & X) | (A & Y)`. Only the first union is distributed over; a second one stays among the members every branch folds against, where it fails the object check and declines the whole intersection rather than multiplying out.\n const unions = allOf.filter((m) => UNION_KEYS.some((k) => Array.isArray(m[k])));\n let folded = null;\n if (!unions.length) {\n folded = foldObjects(allOf);\n }\n else {\n const union = unions[0];\n const keyword = UNION_KEYS.find((k) => Array.isArray(union[k]));\n if (Object.keys(union).length !== 1)\n return;\n const rest = allOf.filter((m) => m !== union);\n const branches = union[keyword].map((branch) => foldObjects([...rest, branch]));\n if (branches.some((b) => !b))\n return;\n folded = { [keyword]: branches };\n }\n if (!folded)\n return;\n delete json.allOf;\n assignProps(json, folded);\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n assignProps(schema, refSchema);\n }\n // restore child's own properties (child wins)\n assignProps(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema. This handles cases like: readonly().meta({id}).describe() where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n // Flattening walks the whole map and clears each `ref` as it goes, so a second call over the same map is a no-op scan. Skip it outright once it has run for a registry conversion.\n if (!ctx.external || ctx.sharedEmitDoneFor !== ctx.external) {\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n if (ctx.target !== \"openapi-3.0\") {\n for (const entry of ctx.seen.entries()) {\n compactTypeUnion(entry[1].def ?? entry[1].schema);\n }\n }\n for (const rewrite of ctx.deferred)\n rewrite();\n // After flattening, every member that was extracted is a `$ref`, so the fold sees the final shape. A schema that inherits an intersection \u2014 through `z.lazy`, or any `ref` chain \u2014 holds the same `allOf` array, so fold by array identity to catch every copy.\n if (ctx.intersections.length) {\n const carriers = new Map();\n for (const seen of ctx.seen.values()) {\n for (const json of [seen.schema, seen.def]) {\n const allOf = json?.allOf;\n if (!Array.isArray(allOf))\n continue;\n const existing = carriers.get(allOf);\n if (existing)\n existing.push(json);\n else\n carriers.set(allOf, [json]);\n }\n }\n for (const allOf of ctx.intersections) {\n for (const json of carriers.get(allOf) ?? [])\n foldIntersection(json);\n }\n }\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n // when the root was extracted into $defs, `root.schema` is the `$ref` wrapper and `root.def` is the body that now lives under $defs\n assignProps(result, root.defId ? root.schema : (root.def ?? root.schema));\n // The `id` in `.meta()` is a Zod-specific registration tag used to extract schemas into $defs \u2014 it is not user-facing JSON Schema metadata. Strip it from the output body where it would otherwise leak. The id is preserved implicitly via the $defs key (and via $ref paths).\n const rootMetaId = ctx.metadataRegistry.get(schema)?.id;\n if (rootMetaId !== undefined && result.id === rootMetaId)\n delete result.id;\n // build defs object. With `external`, `defs` is the shared object every schema writes into, so the same entries are reassigned on every call. Without it, `defs` is fresh per call and must be rebuilt.\n const defs = ctx.external?.defs ?? {};\n if (!ctx.external || ctx.sharedEmitDoneFor !== ctx.external) {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n if (seen.def.id === seen.defId)\n delete seen.def.id;\n assignProp(defs, seen.defId, seen.def);\n }\n }\n }\n if (ctx.external)\n ctx.sharedEmitDoneFor = ctx.external;\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed each call to finalize() is functionally independent though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\" ||\n def.type === \"catch\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n if (_schema._zod.traits.has(\"$ZodCodec\"))\n return true;\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n processSchema(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 processSchema(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n", "import * as regexes from \"./regexes.js\";\nimport { base64Charset, base64urlCharset } from \"./schemas.js\";\nimport { extractDefs, finalize, handleUnrepresentable, initializeContext, processSchema, } from \"./to-json-schema.js\";\nimport { BIGINT_FORMAT_RANGES, NUMBER_FORMAT_RANGES, assignProp, getEnumValues } from \"./util.js\";\nconst narrowMin = (agg, key, value) => {\n if (agg[key] === undefined || value > agg[key])\n agg[key] = value;\n};\nconst narrowMax = (agg, key, value) => {\n if (agg[key] === undefined || value < agg[key])\n agg[key] = value;\n};\nconst narrowBoth = (agg, value) => {\n narrowMin(agg, \"minimum\", value);\n narrowMax(agg, \"maximum\", value);\n};\nconst addDivisor = (agg, value) => {\n agg.multipleOf ?? (agg.multipleOf = []);\n if (!agg.multipleOf.includes(value))\n agg.multipleOf.push(value);\n};\nconst addPattern = (agg, pattern) => {\n agg.patterns ?? (agg.patterns = new Set());\n agg.patterns.add(pattern);\n};\nconst intersectMime = (agg, mime) => {\n agg.mime = agg.mime ? agg.mime.filter((m) => mime.includes(m)) : [...mime];\n};\n// last-wins, matching the bag's historical write order; the flag keeps an integer format from being lost to a later float one\nconst setFormat = (agg, format) => {\n agg.format = format;\n if (format.includes(\"int\"))\n agg.isInt = true;\n};\nconst minContributor = (agg, def) => narrowMin(agg, \"minimum\", def.minimum);\nconst maxContributor = (agg, def) => narrowMax(agg, \"maximum\", def.maximum);\nconst formatContributor = (ranges) => (agg, def) => {\n setFormat(agg, def.format);\n const [minimum, maximum] = ranges[def.format];\n narrowMin(agg, \"minimum\", minimum);\n narrowMax(agg, \"maximum\", maximum);\n};\nconst contributors = {\n greater_than: (agg, def) => narrowMin(agg, def.inclusive ? \"minimum\" : \"exclusiveMinimum\", def.value),\n less_than: (agg, def) => narrowMax(agg, def.inclusive ? \"maximum\" : \"exclusiveMaximum\", def.value),\n multiple_of: (agg, def) => addDivisor(agg, def.value),\n number_format: formatContributor(NUMBER_FORMAT_RANGES),\n bigint_format: formatContributor(BIGINT_FORMAT_RANGES),\n min_length: minContributor,\n max_length: maxContributor,\n length_equals: (agg, def) => narrowBoth(agg, def.length),\n min_size: minContributor,\n max_size: maxContributor,\n size_equals: (agg, def) => narrowBoth(agg, def.size),\n string_format: (agg, def) => {\n setFormat(agg, def.format);\n if (def.pattern)\n addPattern(agg, def.pattern);\n if (def.format === \"base64\" || def.format === \"base64url\")\n agg.contentEncoding = def.format;\n if (def.local || def.precision === -1)\n agg.laxFormat = true;\n },\n mime_type: (agg, def) => intersectMime(agg, def.mime),\n};\nexport function aggregateChecks(schema) {\n const agg = {};\n const def = schema._zod.def;\n // a format schema is its own first check, same rule as $ZodType init\n const list = schema._zod.traits.has(\"$ZodCheck\")\n ? [schema, ...(def.checks ?? [])]\n : (def.checks ?? []);\n for (const ch of list)\n contributors[ch._zod.def.check]?.(agg, ch._zod.def);\n // reconcile with the bag so third-party onattach contributions still land; first-party residue is never tighter than the fold, so merging it back is idempotent for one and additive for the other\n const bag = schema._zod.bag;\n if (bag.minimum !== undefined)\n narrowMin(agg, \"minimum\", bag.minimum);\n if (bag.exclusiveMinimum !== undefined)\n narrowMin(agg, \"exclusiveMinimum\", bag.exclusiveMinimum);\n if (bag.maximum !== undefined)\n narrowMax(agg, \"maximum\", bag.maximum);\n if (bag.exclusiveMaximum !== undefined)\n narrowMax(agg, \"exclusiveMaximum\", bag.exclusiveMaximum);\n if (bag.multipleOf !== undefined)\n addDivisor(agg, bag.multipleOf);\n if (bag.format !== undefined) {\n agg.format ?? (agg.format = bag.format);\n if (bag.format.includes(\"int\"))\n agg.isInt = true;\n }\n if (bag.mime)\n intersectMime(agg, bag.mime);\n for (const pattern of bag.patterns ?? [])\n addPattern(agg, pattern);\n return agg;\n}\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 ====================\n// the runtime patterns are lax so parse paths never overflow the regex stack; the emitted schema swaps in the exact block forms, which zod itself never executes\nconst exactPatterns = new Map([\n [base64Charset, regexes.base64],\n [base64urlCharset, regexes.base64url],\n]);\nconst exactPattern = (p) => exactPatterns.get(p) ?? p;\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding, laxFormat } = aggregateChecks(schema);\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // `z.iso.time()` is never full-time, and `laxFormat` carries the datetime shapes that also accept what their keyword forbids\n if (format === \"time\" || laxFormat) {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const patternList = [...patterns].map(exactPattern);\n if (patternList.length === 1)\n json.pattern = patternList[0].source;\n else if (patternList.length > 1) {\n json.allOf = [\n ...patternList.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const { minimum, maximum, multipleOf, exclusiveMaximum, exclusiveMinimum, isInt } = aggregateChecks(schema);\n json.type = isInt ? \"integer\" : \"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 (multipleOf) {\n // JSON Schema requires a divisor strictly greater than zero, and a non-finite one does not survive JSON at all. A negative divisor accepts exactly what its absolute value accepts, so it still maps; zero, NaN and Infinity have no keyword form.\n const divisors = new Set();\n for (const divisor of multipleOf) {\n if (Number.isFinite(divisor) && divisor !== 0)\n divisors.add(Math.abs(divisor));\n else\n handleUnrepresentable(schema, ctx, json, params, `A multipleOf divisor of ${divisor} cannot be represented in JSON Schema`);\n }\n // chained divisors are a conjunction the keyword cannot carry alone, so extras ride an allOf, same as stacked patterns\n const [first, ...rest] = divisors;\n if (first !== undefined)\n json.multipleOf = first;\n if (rest.length)\n json.allOf = [...(json.allOf ?? []), ...rest.map((m) => ({ multipleOf: m }))];\n }\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"BigInt cannot be represented in JSON Schema\");\n};\nexport const symbolProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Symbols cannot be represented in JSON Schema\");\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Undefined cannot be represented in JSON Schema\");\n};\nexport const voidProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Void cannot be represented in JSON Schema\");\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Date cannot be represented in JSON Schema\");\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // an empty enum accepts nothing, same as z.never()\n if (values.length === 0) {\n json.not = {};\n return;\n }\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // a literal with no values accepts nothing, same as z.never()\n if (def.values.length === 0) {\n json.not = {};\n return;\n }\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n // a custom schema replaces the whole literal, so there is nothing left to accumulate\n if (handleUnrepresentable(schema, ctx, json, params, \"Literal `undefined` cannot be represented in JSON Schema\"))\n return;\n // otherwise do not add to vals\n }\n else if (typeof val === \"bigint\") {\n if (handleUnrepresentable(schema, ctx, json, params, \"BigInt literals cannot be represented in JSON Schema\"))\n return;\n vals.push(Number(val));\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"NaN cannot be represented in JSON Schema\");\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n _json.type = \"string\";\n _json.format = \"binary\";\n _json.contentEncoding = \"binary\";\n const { minimum, maximum, mime } = aggregateChecks(schema);\n if (minimum !== undefined)\n _json.minLength = minimum;\n if (maximum !== undefined)\n _json.maxLength = maximum;\n if (!mime)\n return;\n // an empty intersection means the mime checks share no value, so nothing passes at runtime; `anyOf` must be non-empty, so the false schema is `not: {}`\n if (mime.length === 0)\n _json.not = {};\n else if (mime.length === 1)\n _json.contentMediaType = mime[0];\n // only contentMediaType differs, so the shared props stay at the root\n else\n _json.anyOf = mime.map((m) => ({ contentMediaType: m }));\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Custom types cannot be represented in JSON Schema\");\n};\nexport const functionProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Function types cannot be represented in JSON Schema\");\n};\nexport const transformProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Transforms cannot be represented in JSON Schema\");\n};\nexport const mapProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Map cannot be represented in JSON Schema\");\n};\nexport const setProcessor = (schema, ctx, json, params) => {\n handleUnrepresentable(schema, ctx, json, params, \"Set cannot be represented in JSON Schema\");\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = aggregateChecks(schema);\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 = processSchema(def.element, ctx, {\n ...params,\n path: [...params.path, \"items\"],\n });\n};\n// Transform and catch set `optin = \"optional\"` at runtime so the parser lets them observe an\n// absent key, but their declared input type stays required. An input JSON Schema describes the\n// declared type, so resolve past them to the schema that actually carries the optionality.\n// Used by both `objectProcessor` (for `required`) and `tupleProcessor` (for `minItems`); see\n// wiki/optionality.md, \"The JSON Schema emitter reads the *static* value\".\nfunction inputOptin(schema) {\n const def = schema._zod.def;\n if (def.type === \"pipe\" && def.in._zod.traits.has(\"$ZodTransform\")) {\n return inputOptin(def.out);\n }\n if (def.type === \"catch\") {\n return inputOptin(def.innerType);\n }\n return schema._zod.optin;\n}\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const shape = def.shape;\n // dropping it while still emitting `additionalProperties: false` would emit a schema that rejects data this one requires\n const symbolKeys = Object.getOwnPropertySymbols(shape);\n if (symbolKeys.length &&\n handleUnrepresentable(schema, ctx, json, params, \"Symbol keys cannot be represented in JSON Schema\")) {\n return;\n }\n json.type = \"object\";\n json.properties = {};\n for (const key in shape) {\n // assignProp so a __proto__ key becomes an own property instead of hitting the inherited setter on the plain {} we build into\n assignProp(json.properties, key, processSchema(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n }));\n }\n // required keys\n const requiredKeys = [];\n for (const key of Object.keys(shape)) {\n const field = def.shape[key];\n if (ctx.io === \"input\" ? inputOptin(field) === undefined : field._zod.optout === undefined) {\n requiredKeys.push(key);\n }\n }\n if (requiredKeys.length > 0) {\n json.required = 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 = processSchema(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches). This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => processSchema(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 = processSchema(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = processSchema(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n // Recorded innermost first, so a nested intersection has already folded by the time this one is considered. The array is the handle rather than the schema, because a wrapper that inherits this schema shares the same array; `finalize` folds every object holding it. See `foldIntersection`.\n ctx.intersections.push(allOf);\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => processSchema(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? processSchema(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n let minItems = def.items.length;\n while (minItems > 0) {\n const item = def.items[minItems - 1];\n const optional = ctx.io === \"input\" ? inputOptin(item) !== undefined : item._zod.optout === \"optional\";\n if (!optional)\n break;\n minItems--;\n }\n const maxItems = def.items.length;\n const isClosed = !def.rest;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (isClosed) {\n json.items = false;\n }\n else if (rest) {\n json.items = rest;\n }\n if (minItems > 0)\n json.minItems = minItems;\n if (isClosed)\n json.maxItems = maxItems;\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n if (minItems > 0)\n json.minItems = minItems;\n if (isClosed)\n json.maxItems = maxItems;\n }\n else {\n json.items = prefixItems;\n if (isClosed) {\n json.additionalItems = false;\n }\n else if (rest) {\n json.additionalItems = rest;\n }\n if (minItems > 0)\n json.minItems = minItems;\n if (isClosed)\n json.maxItems = maxItems;\n }\n // explicit user-defined length checks take precedence\n const { minimum, maximum } = aggregateChecks(schema);\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\n/** JSON object keys are always strings, so a numeric record key schema is re-expressed over the\n * numeric-string form the record parser matches. Deferred to `finalize`, after the flatten: a key\n * behind a wrapper only carries its own `type` before then, and a union key only has its branches.\n *\n * A numeric bound cannot apply to a property name, so `minimum` and its siblings are dropped rather\n * than carried over: keeping them beside `type: \"string\"` reproduces the match-nothing schema this\n * exists to fix. A key that carries one therefore emits wider than the record parses \u2014 `z.record(z.number().min(5), V)`\n * accepts `\"3\"` \u2014 which is the deliberate trade, since throwing on it would reject an ordinary schema\n * outright. */\nfunction stringifyKeyNames(bySchema, json, visited) {\n // an extracted key that rewrites cannot go on sharing its definition \u2014 the string form a key position needs is not the number form every other reference wants \u2014 so it inlines. One that does not rewrite keeps the `$ref`.\n if (json.$ref) {\n // a recursive key holds its own reference inside its definition, so a node already on the path is left alone rather than resolved again\n if (visited.has(json))\n return json;\n visited.add(json);\n const def = bySchema.get(json)?.def;\n if (!def)\n return json;\n const inlined = stringifyKeyNames(bySchema, def, visited);\n return inlined === def ? json : inlined;\n }\n for (const keyword of [\"anyOf\", \"oneOf\"]) {\n const branches = json[keyword];\n if (!Array.isArray(branches))\n continue;\n const mapped = branches.map((branch) => stringifyKeyNames(bySchema, branch, visited));\n // rebuilding regardless would detach a key that had nothing to re-express, dropping its `$ref` and leaking the internal `id`\n if (mapped.some((branch, i) => branch !== branches[i]))\n json = { ...json, [keyword]: mapped };\n }\n // a member that already admits a string leaves the key unconstrained, so the node's own type re-expresses only when every member is numeric\n const types = Array.isArray(json.type) ? json.type : [json.type];\n const numericType = !types.includes(\"string\") && types.some((t) => t === \"number\" || t === \"integer\");\n // a heterogeneous key carries no type at all, so its numeric members are caught here instead\n const values = json.enum ?? (json.const !== undefined ? [json.const] : undefined);\n if (!numericType && !values?.some((v) => typeof v === \"number\"))\n return json;\n const { minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf, format, id, ...rest } = json;\n if (rest.enum)\n rest.enum = rest.enum.map((v) => (typeof v === \"number\" ? String(v) : v));\n else if (typeof rest.const === \"number\")\n rest.const = String(rest.const);\n // a heterogeneous key keeps its absent type: the stringified members already say what a key may be\n if (!numericType)\n return rest;\n rest.type = \"string\";\n if (!values)\n rest.pattern = (types.includes(\"number\") ? regexes.number : regexes.integer).source;\n return rest;\n}\n/** Every record of one conversion, so the carriers are found in a single pass rather than once per record. */\nconst pendingRecords = new WeakMap();\nfunction rewriteKeyNames(ctx) {\n // an extracted key is resolved by the object `extractToDef` left in its place, so the map is built once rather than searched per reference. `_zod.toJSONSchema` can hand the same object to two schemas, so the first entry carrying a body wins, as a search would have found it.\n const bySchema = new Map();\n for (const entry of ctx.seen.values()) {\n if (entry.def && !bySchema.has(entry.schema))\n bySchema.set(entry.schema, entry);\n }\n const rewrites = new Map();\n for (const record of pendingRecords.get(ctx) ?? []) {\n const seen = ctx.seen.get(record);\n const names = (seen?.def ?? seen?.schema)?.propertyNames;\n if (!names || names === true || rewrites.has(names))\n continue;\n const rewritten = stringifyKeyNames(bySchema, names, new Set());\n if (rewritten !== names)\n rewrites.set(names, rewritten);\n }\n if (!rewrites.size)\n return;\n // the flatten has already copied each record's own properties onto every wrapper by reference, and an extracted body is another such copy, so every carrier holding a rewritten key is updated together\n for (const entry of ctx.seen.values()) {\n for (const carrier of [entry.schema, entry.def]) {\n const rewritten = carrier && rewrites.get(carrier.propertyNames);\n if (rewritten)\n carrier.propertyNames = rewritten;\n }\n }\n}\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties. This correctly represents \"only validate keys matching the pattern\" semantics and composes well with allOf (intersections)\n const keyType = def.keyType;\n const patterns = aggregateChecks(keyType).patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = processSchema(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n assignProp(json.patternProperties, exactPattern(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 = processSchema(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n let pending = pendingRecords.get(ctx);\n if (!pending) {\n pending = [];\n pendingRecords.set(ctx, pending);\n ctx.deferred.push(() => rewriteKeyNames(ctx));\n }\n pending.push(schema);\n }\n json.additionalProperties = processSchema(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n // Every key shares one value schema, so an optional-in value makes the whole key set omittable on input. Output keeps them: the exhaustive branch assigns every key, even one whose value came back undefined.\n const omittableOnInput = ctx.io === \"input\" && inputOptin(def.valueType) !== undefined;\n if (keyValues && !def.partial && !omittableOnInput) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues.map(String);\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = processSchema(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 processSchema(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\n/** Round-trips a default value through JSON so the emitted schema is guaranteed to be valid JSON.\n * A BigInt has no reliable encoding, so it goes through `unrepresentable` like any other\n * unrepresentable value. Returns a sentinel when the caller must not write a default of its own. */\nconst UNREPRESENTABLE_DEFAULT = Symbol();\nfunction serializeDefaultValue(value, schema, ctx, json, params) {\n let unrepresentable = false;\n const serialized = JSON.stringify(value, (_, val) => {\n if (typeof val !== \"bigint\")\n return val;\n unrepresentable = true;\n return null;\n });\n if (!unrepresentable)\n return JSON.parse(serialized);\n handleUnrepresentable(schema, ctx, json, params, \"BigInt defaults cannot be represented in JSON Schema\");\n return UNREPRESENTABLE_DEFAULT;\n}\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n processSchema(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n const value = serializeDefaultValue(def.defaultValue, schema, ctx, json, params);\n if (value !== UNREPRESENTABLE_DEFAULT)\n json.default = value;\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n processSchema(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io !== \"input\")\n return;\n const value = serializeDefaultValue(def.defaultValue, schema, ctx, json, params);\n if (value !== UNREPRESENTABLE_DEFAULT)\n json._prefault = value;\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n processSchema(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n handleUnrepresentable(schema, ctx, json, params, \"Dynamic catch values are not supported in JSON Schema\");\n return;\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const inIsTransform = def.in._zod.traits.has(\"$ZodTransform\");\n const innerType = ctx.io === \"input\" ? (inIsTransform ? def.out : def.in) : def.out;\n processSchema(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 processSchema(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 processSchema(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 processSchema(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 processSchema(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 processSchema(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n assignProp(schemas, key, finalize(ctx, schema));\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n processSchema(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n", null, "import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\n/* Prototypes that already carry the lazy helper methods. Seeded with the\n * intrinsics so that `init` on a foreign object \u2014 it accepts any object \u2014\n * can never install an accessor onto a prototype we do not own. */\nconst _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);\n/* Helper methods live as non-enumerable lazy getters on the shared\n * prototype instead of own properties on every instance. On first\n * access the getter allocates the per-instance closure and caches it\n * as a non-enumerable own property, so detached usage still works and\n * the allocation only happens for methods actually touched. */\nfunction _lazyMethod(proto, key, make) {\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: false,\n get() {\n const value = make(this);\n Object.defineProperty(this, key, { value, configurable: true, writable: true });\n return value;\n },\n set(value) {\n Object.defineProperty(this, key, { value, configurable: true, writable: true });\n },\n });\n}\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n const proto = Object.getPrototypeOf(inst);\n if (_installedErrorProtos.has(proto))\n return;\n _installedErrorProtos.add(proto);\n _lazyMethod(proto, \"format\", (self) => (mapper) => core.formatError(self, mapper));\n _lazyMethod(proto, \"flatten\", (self) => (mapper) => core.flattenError(self, mapper));\n _lazyMethod(proto, \"addIssue\", (self) => (issue) => {\n self.issues.push(issue);\n self.message = JSON.stringify(self.issues, util.jsonStringifyReplacer, 2);\n });\n _lazyMethod(proto, \"addIssues\", (self) => (issues) => {\n self.issues.push(...issues);\n self.message = JSON.stringify(self.issues, util.jsonStringifyReplacer, 2);\n });\n Object.defineProperty(proto, \"isEmpty\", {\n configurable: true,\n enumerable: false,\n get() {\n return this.issues.length === 0;\n },\n });\n};\nexport const ZodError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer, undefined, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n", "import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\nexport { validate, validateAsync } from \"../core/index.js\";\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n", "import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport * as regexes from \"../core/regexes.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport en from \"../locales/en.js\";\nimport * as checks from \"./checks.js\";\nimport * as parse from \"./parse.js\";\n// Register English as the default locale on first ZodType construction. Hooked into the `ZodType` `$constructor` (rather than a top-level `config(en())` in `external.ts`) so bundlers honoring `sideEffects: false` can't tree-shake it out \u2014 see #5953, #5725. An explicit `z.config(z.locales.xx())` call wins regardless of order, since this only sets the default when none is present.\nfunction _ensureDefaultLocale() {\n if (!core.globalConfig.localeError)\n core.config(en());\n}\n// the default memoizer is read by the core container init, which runs before `ZodType.init`, so each container calls this first\nfunction _ensureDefaultMemoizer() {\n if (!core.globalConfig.memoizer)\n core.config({ memoizer: core.memoizer() });\n}\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n _ensureDefaultLocale();\n core.$ZodType.init(inst, def);\n inst.def = def;\n inst.type = def.type;\n return inst;\n}, {\n check(...chks) {\n const def = this.def;\n return this.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...chks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), { parent: true });\n },\n with(...chks) {\n return this.check(...chks);\n },\n clone(def, params) {\n return core.clone(this, def, params);\n },\n brand() {\n return this;\n },\n register(reg, meta) {\n reg.add(this, meta);\n return this;\n },\n refine(check, params) {\n return this.check(refine(check, params));\n },\n superRefine(refinement, params) {\n return this.check(superRefine(refinement, params));\n },\n overwrite(fn) {\n return this.check(checks.overwrite(fn));\n },\n optional() {\n return optional(this);\n },\n exactOptional() {\n return exactOptional(this);\n },\n nullable() {\n return nullable(this);\n },\n nullish() {\n return optional(nullable(this));\n },\n nonoptional(params) {\n return nonoptional(this, params);\n },\n array() {\n return array(this);\n },\n or(arg) {\n return union([this, arg]);\n },\n and(arg) {\n return intersection(this, arg);\n },\n transform(tx) {\n return pipe(this, transform(tx));\n },\n default(d) {\n return _default(this, d);\n },\n prefault(d) {\n return prefault(this, d);\n },\n catch(params) {\n return _catch(this, params);\n },\n pipe(target) {\n return pipe(this, target);\n },\n readonly() {\n return readonly(this);\n },\n describe(description) {\n const cl = this.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n },\n meta(...args) {\n // overloaded: meta() returns the registered metadata, meta(data) returns a clone with `data` registered. The mapped type picks up the second overload, so we accept variadic any-args and return `any` to satisfy both at runtime.\n if (args.length === 0)\n return core.globalRegistry.get(this);\n const cl = this.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n },\n isOptional() {\n return this.safeParse(undefined).success;\n },\n isNullable() {\n return this.safeParse(null).success;\n },\n apply(fn, ...args) {\n return args.length === 0 ? fn(this) : fn(this, ...args);\n },\n // Overrides core's `~standard` to add `jsonSchema`. Must stay a prototype entry: redefining it per instance demotes instances to dictionary mode.\n get \"~standard\"() {\n return util.hide(this, \"~standard\", {\n ...core.standardProps(this),\n jsonSchema: {\n input: createStandardJSONSchemaMethod(this, \"input\"),\n output: createStandardJSONSchemaMethod(this, \"output\"),\n },\n });\n },\n set \"~standard\"(value) {\n util.own(this, \"~standard\", value);\n },\n parse: function _parse(data, params) {\n return parse.parse(this, data, params, { callee: _parse });\n },\n parseAsync: async function _parseAsync(data, params) {\n return await parse.parseAsync(this, data, params, { callee: _parseAsync });\n },\n safeParse(data, params) {\n return parse.safeParse(this, data, params);\n },\n async safeParseAsync(data, params) {\n return parse.safeParseAsync(this, data, params);\n },\n // `spa` is an alias: same function object as `safeParseAsync`, as before.\n get spa() {\n return this?.safeParseAsync;\n },\n set spa(value) {\n util.own(this, \"spa\", value);\n },\n validate(data, params) {\n return parse.validate(this, data, params);\n },\n validateAsync(data, params) {\n return parse.validateAsync(this, data, params);\n },\n encode: function _encode(data, params) {\n return parse.encode(this, data, params, { callee: _encode });\n },\n decode: function _decode(data, params) {\n return parse.decode(this, data, params, { callee: _decode });\n },\n encodeAsync: async function _encodeAsync(data, params) {\n return await parse.encodeAsync(this, data, params, { callee: _encodeAsync });\n },\n decodeAsync: async function _decodeAsync(data, params) {\n return await parse.decodeAsync(this, data, params, { callee: _decodeAsync });\n },\n safeEncode(data, params) {\n return parse.safeEncode(this, data, params);\n },\n safeDecode(data, params) {\n return parse.safeDecode(this, data, params);\n },\n async safeEncodeAsync(data, params) {\n return parse.safeEncodeAsync(this, data, params);\n },\n async safeDecodeAsync(data, params) {\n return parse.safeDecodeAsync(this, data, params);\n },\n toJSONSchema(params) {\n return createToJSONSchemaMethod(this, {})(params);\n },\n // Reads through to the registry on every access, so it must not cache.\n get description() {\n return core.globalRegistry.get(this)?.description;\n },\n // No setter: `schema._def = x` throws, as it did when `_def` was a non-writable own property.\n get _def() {\n return this._zod.def;\n },\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n}, \n/*@__PURE__*/ util.derived({\n format: (inst) => processors.aggregateChecks(inst).format ?? null,\n minLength: (inst) => processors.aggregateChecks(inst).minimum ?? null,\n maxLength: (inst) => processors.aggregateChecks(inst).maximum ?? null,\n}, {\n regex(...args) {\n return this.check(checks.regex(...args));\n },\n includes(...args) {\n return this.check(checks.includes(...args));\n },\n startsWith(...args) {\n return this.check(checks.startsWith(...args));\n },\n endsWith(...args) {\n return this.check(checks.endsWith(...args));\n },\n min(...args) {\n return this.check(checks.minLength(...args));\n },\n max(...args) {\n return this.check(checks.maxLength(...args));\n },\n length(...args) {\n return this.check(checks.length(...args));\n },\n nonempty(...args) {\n return this.check(checks.minLength(1, ...args));\n },\n lowercase(params) {\n return this.check(checks.lowercase(params));\n },\n uppercase(params) {\n return this.check(checks.uppercase(params));\n },\n trim() {\n return this.check(checks.trim());\n },\n normalize(...args) {\n return this.check(checks.normalize(...args));\n },\n toLowerCase() {\n return this.check(checks.toLowerCase());\n },\n toUpperCase() {\n return this.check(checks.toUpperCase());\n },\n slugify() {\n return this.check(checks.slugify());\n },\n}));\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n}, {\n email(params) {\n return this.check(core._email(ZodEmail, params));\n },\n url(params) {\n return this.check(core._url(ZodURL, params));\n },\n jwt(params) {\n return this.check(core._jwt(ZodJWT, params));\n },\n emoji(params) {\n return this.check(core._emoji(ZodEmoji, params));\n },\n guid(params) {\n return this.check(core._guid(ZodGUID, params));\n },\n uuid(params) {\n return this.check(core._uuid(ZodUUID, params));\n },\n uuidv4(params) {\n return this.check(core._uuidv4(ZodUUID, params));\n },\n uuidv6(params) {\n return this.check(core._uuidv6(ZodUUID, params));\n },\n uuidv7(params) {\n return this.check(core._uuidv7(ZodUUID, params));\n },\n nanoid(params) {\n return this.check(core._nanoid(ZodNanoID, params));\n },\n cuid(params) {\n return this.check(core._cuid(ZodCUID, params));\n },\n cuid2(params) {\n return this.check(core._cuid2(ZodCUID2, params));\n },\n ulid(params) {\n return this.check(core._ulid(ZodULID, params));\n },\n base64(params) {\n return this.check(core._base64(ZodBase64, params));\n },\n base64url(params) {\n return this.check(core._base64url(ZodBase64URL, params));\n },\n xid(params) {\n return this.check(core._xid(ZodXID, params));\n },\n ksuid(params) {\n return this.check(core._ksuid(ZodKSUID, params));\n },\n ipv4(params) {\n return this.check(core._ipv4(ZodIPv4, params));\n },\n ipv6(params) {\n return this.check(core._ipv6(ZodIPv6, params));\n },\n cidrv4(params) {\n return this.check(core._cidrv4(ZodCIDRv4, params));\n },\n cidrv6(params) {\n return this.check(core._cidrv6(ZodCIDRv6, params));\n },\n e164(params) {\n return this.check(core._e164(ZodE164, params));\n },\n datetime(params) {\n return this.check(core._isoDateTime(ZodISODateTime, params));\n },\n date(params) {\n return this.check(core._isoDate(ZodISODate, params));\n },\n time(params) {\n return this.check(core._isoTime(ZodISOTime, params));\n },\n duration(params) {\n return this.check(core._isoDuration(ZodISODuration, params));\n },\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: regexes.httpProtocol,\n hostname: regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\n/**\n * Validates a CUID v1 string.\n *\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2 | `z.cuid2()`} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodCreditCard = /*@__PURE__*/ core.$constructor(\"ZodCreditCard\", (inst, def) => {\n core.$ZodCreditCard.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function creditCard(params) {\n return core._creditCard(ZodCreditCard, params);\n}\nexport const ZodIBAN = /*@__PURE__*/ core.$constructor(\"ZodIBAN\", (inst, def) => {\n core.$ZodIBAN.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function iban(params) {\n return core._iban(ZodIBAN, 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\", regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", regexes.hex, _params);\n}\nexport function currencyCode(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"currency_code\", regexes.currencyCode, _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 inst.isFinite = true;\n}, \n/*@__PURE__*/ util.derived({\n minValue: (inst) => {\n const { minimum, exclusiveMinimum } = processors.aggregateChecks(inst);\n return Math.max(minimum ?? Number.NEGATIVE_INFINITY, exclusiveMinimum ?? Number.NEGATIVE_INFINITY);\n },\n maxValue: (inst) => {\n const { maximum, exclusiveMaximum } = processors.aggregateChecks(inst);\n return Math.min(maximum ?? Number.POSITIVE_INFINITY, exclusiveMaximum ?? Number.POSITIVE_INFINITY);\n },\n isInt: (inst) => {\n const { isInt, multipleOf } = processors.aggregateChecks(inst);\n return !!isInt || !!multipleOf?.some(Number.isSafeInteger);\n },\n format: (inst) => processors.aggregateChecks(inst).format ?? null,\n}, {\n gt(value, params) {\n return this.check(checks.gt(value, params));\n },\n gte(value, params) {\n return this.check(checks.gte(value, params));\n },\n min(value, params) {\n return this.check(checks.gte(value, params));\n },\n lt(value, params) {\n return this.check(checks.lt(value, params));\n },\n lte(value, params) {\n return this.check(checks.lte(value, params));\n },\n max(value, params) {\n return this.check(checks.lte(value, params));\n },\n int(params) {\n return this.check(int(params));\n },\n safe(params) {\n return this.check(int(params));\n },\n positive(params) {\n return this.check(checks.gt(0, params));\n },\n nonnegative(params) {\n return this.check(checks.gte(0, params));\n },\n negative(params) {\n return this.check(checks.lt(0, params));\n },\n nonpositive(params) {\n return this.check(checks.lte(0, params));\n },\n multipleOf(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n step(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n finite() {\n return this;\n },\n}));\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n}, \n/*@__PURE__*/ util.derived({\n minValue: (inst) => processors.aggregateChecks(inst).minimum ?? null,\n maxValue: (inst) => processors.aggregateChecks(inst).maximum ?? null,\n format: (inst) => processors.aggregateChecks(inst).format ?? null,\n}, {\n gte(value, params) {\n return this.check(checks.gte(value, params));\n },\n min(value, params) {\n return this.check(checks.gte(value, params));\n },\n gt(value, params) {\n return this.check(checks.gt(value, params));\n },\n lt(value, params) {\n return this.check(checks.lt(value, params));\n },\n lte(value, params) {\n return this.check(checks.lte(value, params));\n },\n max(value, params) {\n return this.check(checks.lte(value, params));\n },\n positive(params) {\n return this.check(checks.gt(BigInt(0), params));\n },\n negative(params) {\n return this.check(checks.lt(BigInt(0), params));\n },\n nonpositive(params) {\n return this.check(checks.lte(BigInt(0), params));\n },\n nonnegative(params) {\n return this.check(checks.gte(BigInt(0), params));\n },\n multipleOf(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n}));\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n}, \n/*@__PURE__*/ util.derived({\n minDate: (inst) => {\n const { minimum } = processors.aggregateChecks(inst);\n return minimum ? new Date(minimum) : null;\n },\n maxDate: (inst) => {\n const { maximum } = processors.aggregateChecks(inst);\n return maximum ? new Date(maximum) : null;\n },\n}, {}));\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n}, {\n min(n, params) {\n return this.check(checks.minLength(n, params));\n },\n nonempty(params) {\n return this.check(checks.minLength(1, params));\n },\n max(n, params) {\n return this.check(checks.maxLength(n, params));\n },\n length(n, params) {\n return this.check(checks.length(n, params));\n },\n unwrap() {\n return this.element;\n },\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.installLazyProp(inst, \"shape\", (self) => self._zod.def.shape, false);\n}, {\n keyof() {\n return _enum(Object.keys(this._zod.def.shape));\n },\n catchall(catchall) {\n // `mergeDefs` rather than a spread: spreading reads `shape`, and resolving it can mint a whole fresh subtree\n return this.clone(util.mergeDefs(this._zod.def, { catchall: catchall }));\n },\n passthrough() {\n return this.clone(util.mergeDefs(this._zod.def, { catchall: unknown() }));\n },\n loose() {\n return this.clone(util.mergeDefs(this._zod.def, { catchall: unknown() }));\n },\n strict() {\n return this.clone(util.mergeDefs(this._zod.def, { catchall: never() }));\n },\n strip() {\n return this.clone(util.mergeDefs(this._zod.def, { catchall: undefined }));\n },\n extend(incoming) {\n return util.extend(this, incoming);\n },\n safeExtend(incoming) {\n return util.safeExtend(this, incoming);\n },\n merge(other) {\n return util.merge(this, other);\n },\n pick(mask) {\n return util.pick(this, mask);\n },\n omit(mask) {\n return util.omit(this, mask);\n },\n partial(...args) {\n return util.partial(ZodOptional, this, args[0]);\n },\n exactPartial(...args) {\n return util.partial(ZodExactOptional, this, args[0], \"exactPartial\");\n },\n required(...args) {\n return util.required(ZodNonOptional, this, args[0]);\n },\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options: options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n}, {\n rest(rest) {\n return this.clone({\n ...this._zod.def,\n rest: rest,\n });\n },\n partial() {\n const def = this._zod.def;\n // a refinement was authored against the full arity; partialing would run it on a shorter array\n if (def.checks?.length)\n throw new Error(\".partial() cannot be used on tuple schemas containing refinements\");\n return this.clone({\n ...def,\n items: def.items.map((item) => new ZodOptional({ type: \"optional\", innerType: item })),\n });\n },\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n // v3-compat: z.record(valueType, params?) \u2014 defaults keyType to z.string()\n if (!valueType || !valueType._zod) {\n return new ZodRecord({\n type: \"record\",\n keyType: string(),\n valueType: keyType,\n ...util.normalizeParams(valueType),\n });\n }\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n partial: true,\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n // reuse the parsed value set so a numeric TS enum's reverse-mapping keys stay out\n inst.options = [...inst._zod.values];\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n _ensureDefaultMemoizer();\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n if (!(\"input\" in _issue))\n _issue.input = payload.value;\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : core.util.constantCatch(catchValue)),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport function invertCodec(codec) {\n const def = codec._zod.def;\n return new ZodCodec({\n type: \"pipe\",\n in: def.out,\n out: def.in,\n transform: def.reverseTransform,\n reverseTransform: def.transform,\n });\n}\nexport const ZodPreprocess = /*@__PURE__*/ core.$constructor(\"ZodPreprocess\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodPreprocess.init(inst, def);\n});\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn, params) {\n return core._superRefine(fn, params);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nexport const ZodInstanceOf = /*@__PURE__*/ core.$constructor(\"ZodInstanceOf\", (inst, def) => {\n ZodCustom.init(inst, def);\n}, {\n properties(shape, params) {\n // asserts in place, so the narrowed output type is truthful without a wrapper\n return this.check(core._properties(shape, params));\n },\n});\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodInstanceOf({\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 { ZodISODate, ZodISODateTime, ZodISODuration, ZodISOTime } from \"./schemas.js\";\nexport { ZodISODate, ZodISODateTime, ZodISODuration, ZodISOTime } from \"./schemas.js\";\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n", "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", 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 // 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 if (!value.includes('\\0')) id = 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 if (!value.includes('\\0')) id = 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 SP = 32; // \" \"\nconst HTAB = 9; // \"\\t\"\nconst SEMI = 59; // \";\"\nconst EQ = 61; // \"=\"\nconst DQUOTE = 34; // '\"'\nconst BSLASH = 92; // \"\\\\\"\nconst COMMA = 44; // \",\"\n\nconst LOWER_CASE = 1;\nconst OWS = 2;\nconst SEMI_FLAG = 4;\nconst COMMA_FLAG = 8;\nconst TOKEN_FLAG = 16;\nconst NON_ASCII = 0xff00;\nconst CASE_FLAGS = LOWER_CASE | NON_ASCII;\n\n/**\n * Character flags used to normalize HTTP field values while scanning.\n * Out-of-range reads intentionally coerce to zero in bitwise expressions.\n */\nconst CHAR_MAP = new Uint8Array(0x100);\n\nCHAR_MAP[HTAB] |= OWS;\nCHAR_MAP[SP] |= OWS;\nCHAR_MAP[SEMI] |= SEMI_FLAG;\nCHAR_MAP[COMMA] |= COMMA_FLAG;\nfor (let code = 0x80 /* non-ASCII */; code <= 0xff; code++) {\n CHAR_MAP[code] |= LOWER_CASE;\n}\n\nfor (const char of \"!#$%&'*+-.^_`|~\") {\n CHAR_MAP[char.charCodeAt(0)] |= TOKEN_FLAG;\n}\nfor (let code = 0x30 /* 0 */; code <= 0x39 /* 9 */; code++) {\n CHAR_MAP[code] |= TOKEN_FLAG;\n}\nfor (let code = 0x41 /* A */; code <= 0x5a /* Z */; code++) {\n CHAR_MAP[code] |= LOWER_CASE | TOKEN_FLAG;\n}\nfor (let code = 0x61 /* a */; code <= 0x7a /* z */; code++) {\n CHAR_MAP[code] |= TOKEN_FLAG;\n}\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 * Validate a type string against RFC 9110.\n */\nexport function isTypeValid(\n type: string,\n start = 0,\n end = type.length,\n): boolean {\n let hasSlash = false;\n\n for (let index = start; index < end; index++) {\n const code = type.charCodeAt(index);\n\n if (code === 47 /* / */) {\n if (hasSlash || index === start || index >= end - 1) return false;\n hasSlash = true;\n } else if (!isTokenCode(code)) {\n return false;\n }\n }\n\n return hasSlash;\n}\n\n/**\n * Validate a token against RFC 9110.\n */\nexport function isTokenValid(\n token: string,\n start = 0,\n end = token.length,\n): boolean {\n if (start >= end) return false;\n\n for (let index = start; index < end; index++) {\n if (!isTokenCode(token.charCodeAt(index))) return false;\n }\n\n return true;\n}\n\n/**\n * Check whether a character code belongs to the token production in RFC 9110.\n */\nfunction isTokenCode(code: number): boolean {\n return (CHAR_MAP[code] & TOKEN_FLAG) !== 0;\n}\n\n/**\n * Serialize a parameter value.\n */\nfunction parameterValue(str: string): string {\n const len = str.length;\n if (len === 0) return '\"\"';\n\n let index = 0;\n while (index < len && isTokenCode(str.charCodeAt(index))) index++;\n if (index === len) return str;\n\n let result = '\"';\n let start = 0;\n\n while (index < len) {\n const code = str.charCodeAt(index);\n\n if (code !== HTAB && (code < SP || code === 127 || code > 255)) {\n throw new TypeError(`Invalid parameter value: ${str}`);\n }\n\n if (code === 34 /* \" */ || code === 92 /* \\\\ */) {\n result += `${str.slice(start, index)}\\\\`;\n start = index;\n }\n\n index++;\n }\n\n return `${result}${str.slice(start)}\"`;\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 || !isTypeValid(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 (!isTokenValid(param)) {\n throw new TypeError(`Invalid parameter name: ${param}`);\n }\n\n result += `; ${param}=${parameterValue(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 stopFlags = SEMI_FLAG | (options?.comma === true ? COMMA_FLAG : 0);\n const len = header.length;\n let valueStart = options?.start ?? 0;\n while ((CHAR_MAP[header.charCodeAt(valueStart)] & OWS) !== 0) {\n valueStart++;\n }\n\n let index = valueStart;\n let typeFlags = 0;\n let whitespace = -1;\n let stop = options?.parameters === false ? COMMA_FLAG : 0;\n while (index < len) {\n const code = header.charCodeAt(index);\n const flags = CHAR_MAP[code];\n if ((flags & stopFlags) !== 0) {\n stop |= flags & COMMA_FLAG;\n break;\n }\n\n if ((flags & OWS) !== 0) {\n if (whitespace === -1) whitespace = index;\n } else {\n whitespace = -1;\n }\n\n typeFlags |= (code & NON_ASCII) | flags;\n index++;\n }\n const valueEnd = whitespace === -1 ? index : whitespace;\n const value = header.slice(valueStart, valueEnd);\n const type = (typeFlags & CASE_FLAGS) === 0 ? value : value.toLowerCase();\n\n if (index === len || stop !== 0) {\n return { type, index, parameters: new NullObject() };\n }\n\n return parseParameters(header, type, index, len, stopFlags);\n}\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 stopFlags: number,\n): ContentType {\n const parameters: Record<string, string> = new NullObject();\n\n parameter: while (index < len) {\n index++; // Skip over ;\n while ((CHAR_MAP[header.charCodeAt(index)] & OWS) !== 0) {\n index++;\n }\n\n const keyStart = index;\n let keyFlags = 0;\n let keyWhitespace = -1;\n\n while (index < len) {\n const code = header.charCodeAt(index);\n const flags = CHAR_MAP[code];\n if ((flags & stopFlags) !== 0) {\n if ((flags & COMMA_FLAG) !== 0) break parameter;\n continue parameter;\n }\n\n if (code === EQ) {\n const keyEnd = keyWhitespace === -1 ? index : keyWhitespace;\n const value = header.slice(keyStart, keyEnd);\n const key = (keyFlags & CASE_FLAGS) === 0 ? value : value.toLowerCase();\n\n index++;\n while ((CHAR_MAP[header.charCodeAt(index)] & OWS) !== 0) {\n index++;\n }\n\n if (index < len && header.charCodeAt(index) === DQUOTE) {\n const quotedStart = ++index;\n let escaped = false;\n\n while (index < len) {\n const code = header.charCodeAt(index);\n if (code === DQUOTE) {\n if (parameters[key] === undefined) {\n parameters[key] = escaped\n ? unescapeQuotedPairs(header, quotedStart, index)\n : header.slice(quotedStart, index);\n }\n\n index++;\n let stop = 0;\n\n // Discard characters between quote and delimiter.\n while (index < len) {\n const code = header.charCodeAt(index);\n const flags = CHAR_MAP[code];\n if ((flags & stopFlags) !== 0) {\n stop = flags & COMMA_FLAG;\n break;\n }\n index++;\n }\n\n if (stop !== 0) break parameter;\n continue parameter;\n }\n\n if (code === BSLASH && index + 1 < len) {\n escaped = true;\n index += 2;\n continue;\n }\n\n index++;\n }\n\n continue parameter;\n }\n\n const valueStart = index;\n let stop = 0;\n let valueWhitespace = -1;\n while (index < len) {\n const code = header.charCodeAt(index);\n const flags = CHAR_MAP[code];\n if ((flags & stopFlags) !== 0) {\n stop = flags & COMMA_FLAG;\n break;\n }\n\n if ((flags & OWS) !== 0) {\n if (valueWhitespace === -1) valueWhitespace = index;\n } else {\n valueWhitespace = -1;\n }\n\n index++;\n }\n\n if (parameters[key] === undefined) {\n const valueEnd = valueWhitespace === -1 ? index : valueWhitespace;\n parameters[key] = header.slice(valueStart, valueEnd);\n }\n\n if (stop !== 0) break parameter;\n continue parameter;\n }\n\n if ((flags & OWS) !== 0) {\n if (keyWhitespace === -1) keyWhitespace = index;\n } else {\n keyWhitespace = -1;\n }\n\n keyFlags |= (code & NON_ASCII) | flags;\n index++;\n }\n }\n\n return { type, index, parameters };\n}\n\n/**\n * Remove backslashes from quoted pairs in a known-terminated quoted string body.\n */\nfunction unescapeQuotedPairs(str: string, start: number, end: number): string {\n let result = \"\";\n\n for (let index = start; index < end; index++) {\n if (str.charCodeAt(index) === BSLASH) {\n result += str.slice(start, index);\n start = ++index;\n }\n }\n\n return result + str.slice(start, end);\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-11-02T20:12:05-08:00 (1793679125)\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 or OTP codes \u2014 only tool, owner, mode, repo, result.\n */\n\nexport interface AuditEntry {\n\ttool: string;\n\t/** The agent user whose socket the call came in on. */\n\tuser?: string;\n\towner?: string;\n\tmode?: \"read\" | \"write\";\n\trepo?: string;\n\t/** fork_repository only: the repo that was forked (owner/repo are the new copy). */\n\tsource?: string;\n\tdecision: \"forward\" | \"custom\" | \"augment\" | \"deny\" | \"error\";\n\tok?: boolean;\n\tdetail?: string;\n\t/** OTP gate outcome, on gated and hard-locked calls (src/otp/gate.ts). */\n\totp?: \"window\" | \"opened\" | \"refused\" | \"locked\" | \"hard-locked\" | \"lockout\" | \"hard-lock\";\n\t/** When a window opened by this call closes, or when a short lockout started by it ends. */\n\tuntil?: string;\n\t/** Window id (an HMAC of the code under a per-process key), for window/opened. Never the code. */\n\twindow?: 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-11-02T21:27:13-08:00 (1793683633)\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 * Gated tools (src/otp/policy.ts) are unavailable until OTP is set up, and a tool that's disabled\n * (by default or by its `enabled` flag) is unavailable until enabled. Catalog and router both ask\n * here, so they can never disagree.\n */\n\nimport type { Config, SecretStore, ToolRule } from \"./types.ts\";\nimport { ghcrCredRefs } from \"./verbs/ghcr/config.ts\";\nimport { isGated, otpSetupProblem } from \"./otp/policy.ts\";\n\nconst GHCR_TOOLS = new Set([\"ghcr_push\", \"ghcr_push_status\", \"ghcr_tags\"]);\n\n/**\n * Shipped but off until a tool entry says `\"enabled\": true`. Copilot's coding agent writes code\n * into a repo outside `git`, so it's opt-in; once enabled it's also gated by default.\n */\nexport const DEFAULT_DISABLED: ReadonlySet<string> = new Set([\"create_pull_request_with_copilot\", \"assign_copilot_to_issue\", \"assign_copilot_to_issue_with_intent\"]);\n\n/** Whether `rule` is served: its own `enabled` flag, else the built-in default. */\nexport function isEnabled(rule: ToolRule): boolean {\n\treturn rule.enabled ?? !DEFAULT_DISABLED.has(rule.name);\n}\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 (!isEnabled(rule)) {\n\t\treturn DEFAULT_DISABLED.has(rule.name) && rule.enabled === undefined\n\t\t\t? `it is disabled by default; set \"enabled\": true on its entry in config.tools to turn it on`\n\t\t\t: `it is disabled in config.tools (\"enabled\": false)`;\n\t}\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\t// A gated tool can only run once OTP is set up; until then it's hidden like the others.\n\tif (isGated(rule)) return otpSetupProblem(config, secrets);\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>, ignoreRateFloor = false): 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 && !ignoreRateFloor) {\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/**\n * Runs one octokit.request call expected to return a single resource (not a listing).\n * `ignoreRateFloor` skips the proactive 2% floor for endpoints on their own small quota\n * (code search allows 10 requests a minute, which would always read as \"under the floor\");\n * a real 403/429 still raises RateLimited.\n */\nexport async function reqOne<T>(\n\toctokit: Octokit,\n\tbudget: CallBudget,\n\troute: string,\n\tparams: Record<string, unknown>,\n\topts: { ignoreRateFloor?: boolean } = {}\n): Promise<T> {\n\tconst res = await doRequest(octokit, budget, route, params, opts.ignoreRateFloor);\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\n/** `knownDefaultBranch` lets a caller that already read the repo skip the extra GET. */\nexport async function classifyRepo(octokit: Octokit, budget: CallBudget, owner: string, repo: string, knownDefaultBranch?: string): Promise<RepoTier> {\n\tconst defaultBranch =\n\t\tknownDefaultBranch ?? (await getOrUndefined<{ default_branch?: string }>(octokit, budget, \"GET /repos/{owner}/{repo}\", { owner, repo }))?.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/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 * The latest published version of a package, from the public registry (`GET /<name>/latest`,\n * no credentials sent). Undefined when the package does not exist.\n */\nexport async function latestVersion(name: string, opts: { registry?: string; fetch?: FetchLike } = {}): Promise<string | undefined> {\n\tconst base = (opts.registry ?? DEFAULT_REGISTRY).replace(/\\/+$/, \"\");\n\tconst fetchImpl = opts.fetch ?? (globalThis.fetch as unknown as FetchLike);\n\tconst res = await fetchImpl(`${base}/${escapePackageName(name)}/latest`, { method: \"GET\", headers: { accept: \"application/json\", \"user-agent\": \"gh-broker (report_dependents)\" } });\n\tconst body = await res.text();\n\tif (res.status === 404) return undefined;\n\tif (res.status !== 200) throw new NpmHttpError(\"latest lookup\", res.status, errorDetail(body));\n\tconst version = (JSON.parse(body) as { version?: unknown }).version;\n\tif (typeof version !== \"string\") throw new NpmHttpError(\"latest lookup\", res.status, \"response has no version\");\n\treturn version;\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/report_dependents.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, reqOne } from \"./rest-client.ts\";\nimport { classifyRepo, type RepoTier } from \"./repo-tier.ts\";\nimport { latestVersion, type FetchLike } from \"./npm-registry.ts\";\n\n/**\n * Custom verb: report_dependents \u2014 every repo an owner has that declares a given npm\n * package, with the declared range, the version the lockfile resolved, and the repo's flow tier.\n *\n * Built for the fleet-update skills (bump fix-headers / vitest-runner / slothlet), which all\n * start by finding every consumer of one package. Discovery is ONE org-wide code search for\n * the package name restricted to `package.json` files; every candidate is then verified by\n * reading the manifest at the repo's default branch. The search is only a candidate list:\n * GitHub's index lags new commits, only covers the default branch, and caps at 1000 hits, so\n * a repo whose manifest changed recently may be missing from it. The result says so\n * (`discovery.note`) and reports `incomplete-search` / `max-results` when the search itself\n * tells us it is partial.\n *\n * Dev branches: because the search never sees non-default branches, a second pass (on by\n * default, `devBranches: false` skips it) lists every repo with a `dev` branch that differs\n * from its default branch \u2014 one GraphQL page per 100 repos \u2014 and reads every `package.json`\n * in that branch's tree. That is where a dev-trunk repo's real manifests live. A repo that\n * declares the package on both branches is reported twice, once per `branch`. A `dev` whose\n * root package.json version is below the default branch's has been left behind by a release,\n * so it is treated as abandoned: skipped, and listed in `abandonedDev`.\n *\n * Workspace members: a `package.json` below the repo root that declares the package is\n * reported against its repo with the member path, and resolved against the repo's root\n * lockfile (`package-lock.json` or `pnpm-lock.yaml`; other lockfiles are not read).\n *\n * Fan-out safety mirrors the other report verbs (see rest-client.ts): `maxRepos`,\n * `maxFileBytes` and `maxApiCalls` cap the work; hitting a cap or GitHub's rate limit\n * returns whatever was verified with `truncated: true` and a reason.\n */\n\nexport interface ReportDependentsInput {\n\towner: string;\n\t/** npm package name, e.g. `@cldmv/fix-headers`. */\n\tname: string;\n\t/** Compare each resolved version with the latest published one and set `behind`. Default false. */\n\tlatest?: boolean;\n\t/** Add each repo's flow tier (`v4` / `dev-trunk` / `non-v4`) and signals. About 3 REST calls per dependent repo. Default true. */\n\tclassify?: boolean;\n\t/** Also read the manifests on every `dev` branch that differs from its repo's default branch. Default true. */\n\tdevBranches?: boolean;\n\t/** Safety cap on candidate repos verified. Default 200, hard-capped at 500. */\n\tmaxRepos?: number;\n\t/** Largest file (package.json or lockfile) that is read; bigger ones are listed in `unread`. Default 5 MB, hard-capped at 20 MB. */\n\tmaxFileBytes?: number;\n\t/** Hard ceiling on total REST calls for this invocation. Default 600, hard-capped at 3000. */\n\tmaxApiCalls?: number;\n}\n\nexport type DependencyField = \"dependencies\" | \"devDependencies\" | \"peerDependencies\";\n\nconst FIELDS: DependencyField[] = [\"dependencies\", \"devDependencies\", \"peerDependencies\"];\n\nexport interface Declaration {\n\t/** Path of the declaring package.json within the repo. */\n\tpath: string;\n\t/** Workspace member directory; absent for the root package.json. */\n\tmember?: string;\n\tdeclared: { field: DependencyField; range: string }[];\n\t/** Version the lockfile resolved for this package.json; absent when no readable lockfile has it. */\n\tresolved?: string;\n\t/** Only with `latest`: the resolved version is older than the latest published one. */\n\tbehind?: boolean;\n}\n\nexport interface Dependent {\n\trepo: string;\n\tprivate: boolean;\n\tdefaultBranch: string;\n\t/** Branch the manifests and lockfile were read from: the default branch, or `dev`. */\n\tbranch: string;\n\t/** Only with `classify`. */\n\ttier?: RepoTier[\"tier\"];\n\ttierSignals?: RepoTier[\"signals\"];\n\t/** The lockfile the resolved versions came from. */\n\tlockfile?: string;\n\tdeclarations: Declaration[];\n\t/** Files that could not be read or parsed, with why. Omitted when none. */\n\tunread?: { path: string; reason: \"missing\" | \"too-large\" | \"invalid-json\" | \"tree-truncated\" }[];\n}\n\nexport interface AbandonedDev {\n\trepo: string;\n\tdevVersion: string;\n\tdefaultVersion: string;\n}\n\nexport type DependentsTruncatedReason = \"max-results\" | \"incomplete-search\" | \"max-repos\" | \"max-api-calls\" | \"rate-limited\";\n\nexport interface ReportDependentsResult {\n\tpackage: string;\n\t/** Only with `latest`; absent when the lookup failed (see `latestError`) or the package is unpublished. */\n\tlatest?: string;\n\tlatestError?: string;\n\tdiscovery: { source: \"code-search\"; devBranches: boolean; note: string };\n\tscanned: {\n\t\t/** Distinct repos the search returned. */\n\t\tcandidates: number;\n\t\t/** Candidates that turned out to be archived. */\n\t\tarchived: number;\n\t\t/** Candidates that turned out to be forks. */\n\t\tforks: number;\n\t\t/** Candidates that were gone by the time they were read (search lag). */\n\t\tmissing: number;\n\t\t/** Verified repos whose package.json files do not declare the package (the name only appeared in the text). */\n\t\tnotDeclared: number;\n\t\t/** Repos whose separate `dev` branch was read. Only with `devBranches`. */\n\t\tdevBranches?: number;\n\t};\n\tdependents: Dependent[];\n\t/** Only with `devBranches`: repos whose `dev` was skipped because its root package.json version is below the default branch's. Omitted when none. */\n\tabandonedDev?: AbandonedDev[];\n\ttruncated?: boolean;\n\ttruncatedReason?: DependentsTruncatedReason;\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_MAX_FILE_BYTES = 5_000_000;\nconst HARD_MAX_FILE_BYTES = 20_000_000;\nconst DEFAULT_MAX_API_CALLS = 600;\nconst HARD_MAX_API_CALLS = 3000;\nconst SEARCH_PAGE_SIZE = 100;\n/** GitHub serves at most 1000 search results, i.e. 10 pages of 100. */\nconst SEARCH_MAX_PAGES = 10;\nconst LOCKFILES = [\"package-lock.json\", \"pnpm-lock.yaml\"];\nconst NAME_PATTERN = /^(@[a-z0-9~-][a-z0-9._~-]*\\/)?[a-z0-9~-][a-z0-9._~-]*$/;\n/** GraphQL pages of 100 repos read when listing dev branches. */\nconst DEV_LIST_MAX_PAGES = 20;\nconst DEV_BRANCH = \"dev\";\nconst SEARCH_NOTE =\n\t\"Candidates come from GitHub code search, which lags recent commits and only indexes default branches; each candidate was verified against its default-branch package.json. A repo that changed very recently can be missing.\";\nconst DEV_NOTE =\n\t\" Every `dev` branch that differs from its default branch was also read in full, so dev-trunk repos are included; a `dev` whose root package.json version is below the default branch's is treated as abandoned and skipped (see `abandonedDev`).\";\nconst NO_DEV_NOTE = \" Dev branches were not read, so a dev-trunk repo whose real manifests live on `dev` is missing.\";\nconst DEV_BRANCHES_QUERY = `query($owner: String!, $after: String) {\n repositoryOwner(login: $owner) {\n repositories(first: 100, after: $after, orderBy: { field: NAME, direction: ASC }) {\n pageInfo { hasNextPage endCursor }\n nodes {\n name\n isArchived\n isFork\n isPrivate\n defaultBranchRef { name target { oid ...manifest } }\n dev: ref(qualifiedName: \"refs/heads/${DEV_BRANCH}\") { target { oid ...manifest } }\n }\n }\n }\n}\nfragment manifest on Commit { file(path: \"package.json\") { object { ... on Blob { text } } } }`;\n\ninterface SearchHit {\n\tpath: string;\n\trepository: { name: string; owner: { login: string } };\n}\n\ninterface SearchResponse {\n\ttotal_count: number;\n\tincomplete_results: boolean;\n\titems: SearchHit[];\n}\n\ninterface RawRepo {\n\tarchived?: boolean;\n\tfork?: boolean;\n\tprivate?: boolean;\n\tdefault_branch: string;\n}\n\ninterface DevBranchesResponse {\n\tdata?: {\n\t\trepositoryOwner: {\n\t\t\trepositories: {\n\t\t\t\tpageInfo: { hasNextPage: boolean; endCursor: string | null };\n\t\t\t\tnodes: {\n\t\t\t\t\tname: string;\n\t\t\t\t\tisArchived: boolean;\n\t\t\t\t\tisFork: boolean;\n\t\t\t\t\tisPrivate: boolean;\n\t\t\t\t\tdefaultBranchRef: { name: string; target: CommitWithManifest } | null;\n\t\t\t\t\tdev: { target: CommitWithManifest } | null;\n\t\t\t\t}[];\n\t\t\t};\n\t\t} | null;\n\t};\n\terrors?: { message: string }[];\n}\n\ninterface CommitWithManifest {\n\toid: string;\n\tfile?: { object?: { text?: string | null } | null } | null;\n}\n\n/** `version` from a commit's root package.json, or undefined when it is missing, unreadable or has none. */\nfunction manifestVersion(commit: CommitWithManifest): string | undefined {\n\tconst text = commit.file?.object?.text;\n\tif (!text) return undefined;\n\ttry {\n\t\tconst v = (JSON.parse(text) as { version?: unknown }).version;\n\t\treturn typeof v === \"string\" ? v : undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\ninterface RawTree {\n\ttruncated: boolean;\n\ttree: { path: string; type: string }[];\n}\n\ninterface RawFile {\n\tsize: number;\n\tcontent?: string;\n}\n\n/** Numeric parts of `1.2.3-pre`, padded to three, and whether a prerelease tag follows. */\nfunction parseVersion(v: string): { nums: number[]; pre: boolean } {\n\tconst [core = \"\", pre] = v.split(/-(.+)/);\n\tconst parts = core.split(\".\").map(Number);\n\treturn { nums: [0, 1, 2].map((i) => parts[i] || 0), pre: pre !== undefined };\n}\n\n/** True when `resolved` is an older version than `latest` (a prerelease sorts below its release). */\nexport function isBehind(resolved: string, latest: string): boolean {\n\tconst a = parseVersion(resolved);\n\tconst b = parseVersion(latest);\n\tfor (let i = 0; i < 3; i++) if (a.nums[i] !== b.nums[i]) return a.nums[i]! < b.nums[i]!;\n\treturn a.pre && !b.pre;\n}\n\n/** Version of `name` in an npm lockfile (v2/v3 `packages`, v1 `dependencies`) for the workspace `member` (`.` = root). */\nfunction resolveNpmLock(text: string, member: string, name: string): string | undefined {\n\tconst lock = JSON.parse(text) as { packages?: Record<string, { version?: string }>; dependencies?: Record<string, { version?: string }> };\n\t// Node resolves a member's own node_modules first, then the hoisted root copy.\n\tconst key = member === \".\" ? `node_modules/${name}` : `${member}/node_modules/${name}`;\n\treturn lock.packages?.[key]?.version ?? lock.packages?.[`node_modules/${name}`]?.version ?? lock.dependencies?.[name]?.version;\n}\n\n/** Version of `name` under the `importers:` entry for `member` in a pnpm lockfile (v6+ layout), or undefined. */\nfunction resolvePnpmLock(text: string, member: string, name: string): string | undefined {\n\tlet inImporters = false;\n\tlet importer: string | undefined;\n\tlet dep: string | undefined;\n\tfor (const line of text.split(\"\\n\")) {\n\t\tif (/^\\S/.test(line)) {\n\t\t\tinImporters = line.startsWith(\"importers:\");\n\t\t\timporter = undefined;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!inImporters) continue;\n\t\tlet m = /^ {2}(?=\\S)(['\"]?)(.+?)\\1:\\s*$/.exec(line);\n\t\tif (m) {\n\t\t\timporter = m[2];\n\t\t\tdep = undefined;\n\t\t\tcontinue;\n\t\t}\n\t\tif (importer !== member) continue;\n\t\tm = /^ {6}(?=\\S)(['\"]?)(.+?)\\1:\\s*$/.exec(line);\n\t\tif (m) {\n\t\t\tdep = m[2];\n\t\t\tcontinue;\n\t\t}\n\t\tif (dep === name) {\n\t\t\tm = /^ {8}version:\\s*['\"]?(\\d[^\\s'\"(_]*)/.exec(line);\n\t\t\tif (m) return m[1];\n\t\t}\n\t}\n\treturn undefined;\n}\n\ntype ReadResult = { text: string } | { skipped: \"missing\" | \"too-large\" };\n\n/** Reads a file at `ref`: JSON metadata first (carries `size`), raw media type only for files the API leaves out (over 1 MB). */\nasync function readFile(octokit: Octokit, budget: CallBudget, owner: string, repo: string, path: string, ref: string, maxBytes: number): Promise<ReadResult> {\n\tlet meta: RawFile;\n\ttry {\n\t\tmeta = await reqOne<RawFile>(octokit, budget, \"GET /repos/{owner}/{repo}/contents/{path}\", { owner, repo, path, ref });\n\t} catch (err) {\n\t\tif ((err as { status?: number }).status !== 404) throw err;\n\t\treturn { skipped: \"missing\" };\n\t}\n\tif (meta.size > maxBytes) return { skipped: \"too-large\" };\n\tif (meta.content) return { text: Buffer.from(meta.content, \"base64\").toString(\"utf8\") };\n\tconst raw = await reqOne<string>(octokit, budget, \"GET /repos/{owner}/{repo}/contents/{path}\", {\n\t\towner,\n\t\trepo,\n\t\tpath,\n\t\tref,\n\t\theaders: { accept: \"application/vnd.github.raw+json\" }\n\t});\n\treturn { text: String(raw) };\n}\n\nexport interface ReportDependentsDeps {\n\t/** Injected for tests; defaults to global fetch. */\n\tfetch?: FetchLike;\n\t/** npm registry base URL for the `latest` lookup; defaults to registry.npmjs.org. */\n\tregistry?: string;\n}\n\ninterface RepoRef {\n\tname: string;\n\tprivate: boolean;\n\tdefaultBranch: string;\n}\n\ninterface ScanContext {\n\toctokit: Octokit;\n\tbudget: CallBudget;\n\towner: string;\n\tname: string;\n\tmaxBytes: number;\n\tlatest?: string;\n}\n\n/** Reads `paths` on `branch` and returns the repo's entry, or undefined when none of them declares the package. */\nasync function scanBranch(ctx: ScanContext, repo: RepoRef, branch: string, paths: string[], unread: NonNullable<Dependent[\"unread\"]> = []): Promise<Dependent | undefined> {\n\tconst { octokit, budget, owner, name, maxBytes, latest } = ctx;\n\tconst declarations: Declaration[] = [];\n\tfor (const path of [...paths].sort()) {\n\t\tconst file = await readFile(octokit, budget, owner, repo.name, path, branch, maxBytes);\n\t\tif (\"skipped\" in file) {\n\t\t\tunread.push({ path, reason: file.skipped });\n\t\t\tcontinue;\n\t\t}\n\t\tlet manifest: Record<string, unknown>;\n\t\ttry {\n\t\t\tmanifest = JSON.parse(file.text) as Record<string, unknown>;\n\t\t} catch {\n\t\t\tunread.push({ path, reason: \"invalid-json\" });\n\t\t\tcontinue;\n\t\t}\n\t\tconst declared: Declaration[\"declared\"] = [];\n\t\tfor (const field of FIELDS) {\n\t\t\tconst range = (manifest[field] as Record<string, unknown> | undefined)?.[name];\n\t\t\tif (typeof range === \"string\") declared.push({ field, range });\n\t\t}\n\t\tif (declared.length === 0) continue;\n\t\tconst dir = path.slice(0, -\"package.json\".length).replace(/\\/$/, \"\");\n\t\tdeclarations.push({ path, ...(dir ? { member: dir } : {}), declared });\n\t}\n\tif (declarations.length === 0 && unread.length === 0) return undefined;\n\n\tconst entry: Dependent = { repo: `${owner}/${repo.name}`, private: repo.private, defaultBranch: repo.defaultBranch, branch, declarations };\n\tif (unread.length > 0) entry.unread = unread;\n\tif (declarations.length === 0) return entry;\n\n\tfor (const lockfile of LOCKFILES) {\n\t\tconst file = await readFile(octokit, budget, owner, repo.name, lockfile, branch, maxBytes);\n\t\tif (\"skipped\" in file) {\n\t\t\tif (file.skipped === \"too-large\") (entry.unread ??= []).push({ path: lockfile, reason: \"too-large\" });\n\t\t\tcontinue;\n\t\t}\n\t\tconst resolve = lockfile === \"package-lock.json\" ? resolveNpmLock : resolvePnpmLock;\n\t\ttry {\n\t\t\tfor (const d of declarations) {\n\t\t\t\tconst resolved = resolve(file.text, d.member ?? \".\", name);\n\t\t\t\tif (resolved === undefined) continue;\n\t\t\t\td.resolved = resolved;\n\t\t\t\tif (latest !== undefined) d.behind = isBehind(resolved, latest);\n\t\t\t}\n\t\t} catch {\n\t\t\t(entry.unread ??= []).push({ path: lockfile, reason: \"invalid-json\" });\n\t\t\tcontinue;\n\t\t}\n\t\tentry.lockfile = lockfile;\n\t\tbreak;\n\t}\n\treturn entry;\n}\n\n/**\n * Non-archived, non-fork repos whose `dev` branch exists and points somewhere other than the default\n * branch. A `dev` whose root package.json version is below the default branch's has fallen behind\n * a release and is listed as abandoned instead; with either version missing it is kept.\n */\nasync function listDevBranches(octokit: Octokit, budget: CallBudget, owner: string): Promise<{ repos: RepoRef[]; abandoned: AbandonedDev[]; complete: boolean }> {\n\tconst repos: RepoRef[] = [];\n\tconst abandoned: AbandonedDev[] = [];\n\tlet after: string | null = null;\n\tfor (let page = 1; page <= DEV_LIST_MAX_PAGES; page++) {\n\t\tconst res: DevBranchesResponse = await reqOne<DevBranchesResponse>(octokit, budget, \"POST /graphql\", { query: DEV_BRANCHES_QUERY, variables: { owner, after } });\n\t\tconst conn = res.data?.repositoryOwner?.repositories;\n\t\tif (!conn) throw new Error(`report_dependents: listing dev branches failed: ${res.errors?.map((e) => e.message).join(\"; \") ?? `no owner \"${owner}\"`}`);\n\t\tfor (const r of conn.nodes) {\n\t\t\tif (r.isArchived || r.isFork || !r.dev || !r.defaultBranchRef) continue;\n\t\t\tif (r.dev.target.oid === r.defaultBranchRef.target.oid) continue;\n\t\t\tconst devVersion = manifestVersion(r.dev.target);\n\t\t\tconst defaultVersion = manifestVersion(r.defaultBranchRef.target);\n\t\t\tif (devVersion !== undefined && defaultVersion !== undefined && isBehind(devVersion, defaultVersion)) {\n\t\t\t\tabandoned.push({ repo: `${owner}/${r.name}`, devVersion, defaultVersion });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\trepos.push({ name: r.name, private: r.isPrivate, defaultBranch: r.defaultBranchRef.name });\n\t\t}\n\t\tif (!conn.pageInfo.hasNextPage) return { repos, abandoned, complete: true };\n\t\tafter = conn.pageInfo.endCursor;\n\t}\n\treturn { repos, abandoned, complete: false };\n}\n\nexport async function reportDependents(octokit: Octokit, input: ReportDependentsInput, deps: ReportDependentsDeps = {}): Promise<ReportDependentsResult> {\n\tif (!NAME_PATTERN.test(input.name)) throw new Error(`report_dependents: \"${input.name}\" is not a valid npm package name`);\n\tconst maxRepos = Math.min(input.maxRepos ?? DEFAULT_MAX_REPOS, HARD_MAX_REPOS);\n\tconst maxBytes = Math.min(input.maxFileBytes ?? DEFAULT_MAX_FILE_BYTES, HARD_MAX_FILE_BYTES);\n\tconst budget = new CallBudget(Math.min(input.maxApiCalls ?? DEFAULT_MAX_API_CALLS, HARD_MAX_API_CALLS));\n\tconst { owner, name } = input;\n\tconst devBranches = input.devBranches !== false;\n\n\tconst dependents: Dependent[] = [];\n\tconst scanned: ReportDependentsResult[\"scanned\"] = { candidates: 0, archived: 0, forks: 0, missing: 0, notDeclared: 0, ...(devBranches ? { devBranches: 0 } : {}) };\n\tlet truncatedReason: DependentsTruncatedReason | undefined;\n\tlet retryAfterSeconds: number | undefined;\n\tconst abandonedDev: AbandonedDev[] = [];\n\n\tlet latest: string | undefined;\n\tlet latestError: string | undefined;\n\tif (input.latest) {\n\t\ttry {\n\t\t\tlatest = await latestVersion(name, { ...(deps.fetch ? { fetch: deps.fetch } : {}), ...(deps.registry ? { registry: deps.registry } : {}) });\n\t\t} catch (err) {\n\t\t\tlatestError = (err as Error).message;\n\t\t}\n\t}\n\tconst ctx: ScanContext = { octokit, budget, owner, name, maxBytes, ...(latest !== undefined ? { latest } : {}) };\n\tconst tiers = new Map<string, RepoTier>();\n\tconst classify = async (entry: Dependent, repo: string): Promise<void> => {\n\t\tif (input.classify === false || entry.declarations.length === 0) return;\n\t\tlet t = tiers.get(repo);\n\t\tif (!t) {\n\t\t\tt = await classifyRepo(octokit, budget, owner, repo, entry.defaultBranch);\n\t\t\ttiers.set(repo, t);\n\t\t}\n\t\tentry.tier = t.tier;\n\t\tentry.tierSignals = t.signals;\n\t};\n\n\ttry {\n\t\t// Candidate manifests, grouped by repo.\n\t\tconst byRepo = new Map<string, Set<string>>();\n\t\tconst hits: SearchHit[] = [];\n\t\tfor (let page = 1; page <= SEARCH_MAX_PAGES; page++) {\n\t\t\tconst res = await reqOne<SearchResponse>(\n\t\t\t\toctokit,\n\t\t\t\tbudget,\n\t\t\t\t\"GET /search/code\",\n\t\t\t\t{ q: `\"${name}\" org:${owner} filename:package.json`, per_page: SEARCH_PAGE_SIZE, page },\n\t\t\t\t{ ignoreRateFloor: true }\n\t\t\t);\n\t\t\thits.push(...res.items);\n\t\t\tif (res.incomplete_results) truncatedReason ??= \"incomplete-search\";\n\t\t\tif (res.items.length < SEARCH_PAGE_SIZE) break;\n\t\t\tif (hits.length < res.total_count && page === SEARCH_MAX_PAGES) truncatedReason ??= \"max-results\";\n\t\t}\n\t\tfor (const h of hits) {\n\t\t\tif (h.path.split(\"/\").pop() !== \"package.json\") continue;\n\t\t\tconst key = h.repository.name;\n\t\t\tif (!byRepo.has(key)) byRepo.set(key, new Set());\n\t\t\tbyRepo.get(key)!.add(h.path);\n\t\t}\n\t\tconst repoNames = [...byRepo.keys()].sort((a, b) => a.localeCompare(b));\n\t\tscanned.candidates = repoNames.length;\n\t\tif (repoNames.length > maxRepos) truncatedReason ??= \"max-repos\";\n\n\t\tfor (const repo of repoNames.slice(0, maxRepos)) {\n\t\t\tlet info: RawRepo;\n\t\t\ttry {\n\t\t\t\tinfo = await reqOne<RawRepo>(octokit, budget, \"GET /repos/{owner}/{repo}\", { owner, repo });\n\t\t\t} catch (err) {\n\t\t\t\tif ((err as { status?: number }).status !== 404) throw err;\n\t\t\t\tscanned.missing++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (info.archived) {\n\t\t\t\tscanned.archived++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (info.fork) {\n\t\t\t\tscanned.forks++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst ref: RepoRef = { name: repo, private: info.private ?? false, defaultBranch: info.default_branch };\n\t\t\tconst entry = await scanBranch(ctx, ref, ref.defaultBranch, [...byRepo.get(repo)!]);\n\t\t\tif (!entry) {\n\t\t\t\tscanned.notDeclared++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tawait classify(entry, repo);\n\t\t\tdependents.push(entry);\n\t\t}\n\n\t\tif (devBranches) {\n\t\t\tconst { repos, abandoned, complete } = await listDevBranches(octokit, budget, owner);\n\t\t\tabandonedDev.push(...abandoned);\n\t\t\tif (!complete) truncatedReason ??= \"max-repos\";\n\t\t\tconst room = Math.max(0, maxRepos - Math.min(repoNames.length, maxRepos));\n\t\t\tif (repos.length > room) truncatedReason ??= \"max-repos\";\n\t\t\tfor (const repo of repos.slice(0, room)) {\n\t\t\t\tconst tree = await reqOne<RawTree>(octokit, budget, \"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\", { owner, repo: repo.name, tree_sha: DEV_BRANCH, recursive: \"1\" });\n\t\t\t\tconst paths = tree.tree\n\t\t\t\t\t.filter((t) => t.type === \"blob\" && t.path.split(\"/\").pop() === \"package.json\" && !t.path.split(\"/\").includes(\"node_modules\"))\n\t\t\t\t\t.map((t) => t.path);\n\t\t\t\tscanned.devBranches!++;\n\t\t\t\tconst entry = await scanBranch(ctx, repo, DEV_BRANCH, paths, tree.truncated ? [{ path: \".\", reason: \"tree-truncated\" }] : []);\n\t\t\t\tif (!entry) continue;\n\t\t\t\tawait classify(entry, repo.name);\n\t\t\t\tdependents.push(entry);\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// One repo's default-branch entry sits directly before its dev entry.\n\tdependents.sort((a, b) => a.repo.localeCompare(b.repo) || Number(a.branch !== a.defaultBranch) - Number(b.branch !== b.defaultBranch));\n\n\treturn {\n\t\tpackage: name,\n\t\t...(latest !== undefined ? { latest } : {}),\n\t\t...(latestError !== undefined ? { latestError } : {}),\n\t\tdiscovery: { source: \"code-search\", devBranches, note: SEARCH_NOTE + (devBranches ? DEV_NOTE : NO_DEV_NOTE) },\n\t\tscanned,\n\t\tdependents,\n\t\t...(abandonedDev.length > 0 ? { abandonedDev } : {}),\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_dependents. */\nexport const REPORT_DEPENDENTS_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\", \"name\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner: { type: \"string\", description: \"repository owner (org/user login) \u2014 selects the read credential\" },\n\t\tname: { type: \"string\", description: \"npm package name to look for, e.g. @cldmv/fix-headers\" },\n\t\tlatest: { type: \"boolean\", description: \"compare each resolved version with the latest published version and mark the ones that are behind\", default: false },\n\t\tclassify: { type: \"boolean\", description: \"add each dependent repo's flow tier (v4 / dev-trunk / non-v4) and signals; about 3 REST calls per repo (default true)\", default: true },\n\t\tdevBranches: {\n\t\t\ttype: \"boolean\",\n\t\t\tdescription:\n\t\t\t\t\"also read every package.json on each repo's `dev` branch when it differs from the default branch, so dev-trunk repos are found; a dev whose root version is below the default branch's is skipped as abandoned (default true)\",\n\t\t\tdefault: true\n\t\t},\n\t\tmaxRepos: { type: \"number\", description: `safety cap on candidate repos verified (default ${DEFAULT_MAX_REPOS}, hard cap ${HARD_MAX_REPOS})` },\n\t\tmaxFileBytes: { type: \"number\", description: `largest package.json or lockfile that is read, in bytes; bigger ones are listed in unread (default ${DEFAULT_MAX_FILE_BYTES}, hard cap ${HARD_MAX_FILE_BYTES})` },\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/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\nexport interface 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\nexport function 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/report_release_changes.ts\n *\t@Date: 2026-11-01T14:02:26-08:00 (1793570546)\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-01T14:02:26-08:00 (1793570546)\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\";\nimport { commitType, mentionedPrs, releaseCommitPrs } from \"./release-analysis.ts\";\nimport { changelogPaths, parseReleaseVersion } from \"./report_release_prs.ts\";\n\n/**\n * Custom verb: report_release_changes \u2014 the source material for one release's changelog.\n *\n * `report_release_prs` decides whether a changelog is needed or stale; this supplies what goes in it.\n * For one release PR it works out which PRs actually ship (from the release PR's commits, first line\n * only, with the same extraction `analyze` uses), drops the ones an earlier release already carried\n * and the ones reverted inside the range, fetches each remaining PR at the requested detail level,\n * groups them by changelog section, and precomputes the release's net facts (package.json deltas,\n * direct-dependency changes, file totals). Interim hotfix releases on the base branch that are not\n * on the release's head branch are listed so they don't get missed.\n *\n * Scoped by net change, not by `git log base..head`: when `next` is not reset after a squash release\n * it keeps the pre-squash commits, and those already-shipped PRs show up in the release PR's commit\n * list again. They are recognised by appearing in an earlier release PR's commits or in the previous\n * version's changelog.\n */\n\nexport type ChangeDetail = \"titles\" | \"summaries\" | \"files\" | \"diff\";\n\nexport interface ReportReleaseChangesInput {\n\towner: string;\n\trepo: string;\n\t/** The release PR number. */\n\tpull: number;\n\t/** How much per PR. Default \"summaries\". */\n\tdetail?: ChangeDetail;\n\t/** Only these PRs get `detail`; the rest get \"titles\". */\n\tprs?: number[];\n\t/** Also return a changelog skeleton in markdown. Default false. */\n\tskeleton?: boolean;\n\t/** Per-PR body cap in characters. Default 3000. */\n\tmaxBodyChars?: number;\n\t/** Per-PR file-list cap. Default 50, hard cap 300. */\n\tmaxFiles?: number;\n\t/** Per-file patch cap in characters (detail \"diff\"). Default 3000. */\n\tmaxPatchChars?: number;\n\t/** Total patch characters across the whole report (detail \"diff\"). Default 60000. */\n\tmaxDiffChars?: number;\n\t/** Hard ceiling on total REST calls for this invocation. Default 300, hard-capped at 1000. */\n\tmaxApiCalls?: number;\n}\n\nexport type ChangeSection = \"breaking\" | \"features\" | \"fixes\" | \"security\" | \"ciTooling\" | \"documentation\" | \"dependencies\";\n\nexport interface ChangeFile {\n\tpath: string;\n\tstatus: string;\n\tadditions: number;\n\tdeletions: number;\n\tpatch?: string;\n\tpatchTruncated?: boolean;\n\t/** Why the patch was left out: a generated path, or the report's total diff cap was reached. */\n\tpatchSkipped?: \"generated\" | \"max-diff-chars\";\n}\n\nexport interface ReleaseChangePr {\n\tnumber: number;\n\turl: string;\n\ttitle: string;\n\t/** Conventional-commit type of the title, \"\" when it isn't conventional. */\n\ttype: string;\n\tscope?: string;\n\t/** False when the call budget ran out before this PR was read; only the commit's title is known. */\n\tfetched: boolean;\n\tlabels?: string[];\n\tauthor?: string;\n\tmergedAt?: string | null;\n\t/** Same-repo issues the body closes with a closing keyword (`Closes #12`). */\n\tcloses?: number[];\n\tadditions?: number;\n\tdeletions?: number;\n\tchangedFiles?: number;\n\t/** The current version's changelog already mentions this PR. */\n\tdocumented?: boolean;\n\tsection?: ChangeSection;\n\tbreaking?: string[];\n\tbody?: string;\n\tbodyTruncated?: boolean;\n\tfiles?: ChangeFile[];\n\tfilesTruncated?: boolean;\n}\n\nexport interface ExcludedPr {\n\tnumber: number;\n\ttitle: string;\n\treason: \"earlier-release\" | \"earlier-changelog\" | \"reverted\" | \"revert\";\n\t/** For \"reverted\": the PR that reverted it. For \"revert\": the PR it reverted. */\n\tpair?: number;\n}\n\nexport interface HotfixRelease {\n\tversion: string | null;\n\tpull: number;\n\ttitle: string;\n\turl: string;\n\tsha: string;\n}\n\nexport interface PreviousRelease {\n\tversion: string | null;\n\ttag: string | null;\n\tpull?: number;\n\tsha: string;\n\t/** \"hotfix\" when the release PR came from a hotfixes/hotfix branch. */\n\tkind: \"full\" | \"hotfix\";\n}\n\nexport interface DependencyChange {\n\tname: string;\n\tscope: \"runtime\" | \"dev\" | \"optional\" | \"peer\";\n\tchange: \"added\" | \"removed\" | \"changed\";\n\tfrom?: string;\n\tto?: string;\n\t/** Locked versions from package-lock.json, when it could be read on that side. */\n\tlockedFrom?: string;\n\tlockedTo?: string;\n}\n\nexport interface NetFacts {\n\tpackageJson?: {\n\t\tversion?: { from?: string; to?: string };\n\t\tengines?: { from?: unknown; to?: unknown };\n\t\texports?: { added: string[]; removed: string[] };\n\t\tchanged: string[];\n\t};\n\tdependencies?: DependencyChange[];\n\tfiles?: {\n\t\tchanged: number;\n\t\tadditions: number;\n\t\tdeletions: number;\n\t\t/** Same totals with lockfiles, `dist/` and `types/` left out (over the files listed). */\n\t\texcludingGenerated: { changed: number; additions: number; deletions: number };\n\t\t/** False when the release has more files than were listed. */\n\t\tcomplete: boolean;\n\t};\n\tbreakingHints: string[];\n}\n\nexport type ReleaseChangesTruncatedReason = \"max-api-calls\" | \"rate-limited\";\n\nexport interface ReportReleaseChangesResult {\n\trepo: string;\n\tpull: number;\n\turl?: string;\n\ttitle?: string;\n\tversion?: string | null;\n\thead?: string;\n\tbase?: string;\n\tpreviousRelease?: PreviousRelease | null;\n\tchangelog?: { path: string | null; checkedPaths: string[] };\n\tprs: ReleaseChangePr[];\n\tgroups: Record<ChangeSection | \"ungrouped\", number[]>;\n\texcluded: ExcludedPr[];\n\thotfixes: HotfixRelease[];\n\t/** PR numbers asked for in `prs` that are not part of this release. */\n\tnotInRelease?: number[];\n\tnet?: NetFacts;\n\tskeleton?: string;\n\ttruncated?: boolean;\n\ttruncatedReason?: ReleaseChangesTruncatedReason;\n\tretryAfterSeconds?: number;\n}\n\nconst DEFAULT_MAX_API_CALLS = 300;\nconst HARD_MAX_API_CALLS = 1000;\nconst DEFAULT_MAX_BODY_CHARS = 3000;\nconst DEFAULT_MAX_FILES = 50;\nconst HARD_MAX_FILES = 300;\nconst DEFAULT_MAX_PATCH_CHARS = 3000;\nconst DEFAULT_MAX_DIFF_CHARS = 60000;\n/** Release commits on the base branch examined for earlier releases and hotfixes. */\nconst MAX_EARLIER_RELEASES = 5;\nconst RELEASE_FILES_LIMIT = 300;\nconst DETAIL_RANK: Record<ChangeDetail, number> = { titles: 0, summaries: 1, files: 2, diff: 3 };\nconst SECTIONS: ChangeSection[] = [\"breaking\", \"features\", \"fixes\", \"security\", \"ciTooling\", \"documentation\", \"dependencies\"];\n\n/** `feat(api)!: x` -> { type: \"feat\", scope: \"api\", bang: true }. */\nexport function parseConventional(title: string): { type: string; scope?: string; bang: boolean } {\n\tconst m = /^([a-z]+)(?:\\(([^)]*)\\))?(!)?:/i.exec(title.trim());\n\tif (!m) return { type: \"\", bang: false };\n\treturn { type: m[1]!.toLowerCase(), ...(m[2] ? { scope: m[2].toLowerCase() } : {}), bang: m[3] === \"!\" };\n}\n\n/**\n * The PR a revert undoes, from the revert's title: GitHub's `Revert \"feat: x (#12)\"` (squash) or a\n * `Merge pull request #15 from o/revert-12-branch` merge commit. Undefined when it isn't a revert.\n */\nexport function revertedPr(title: string): number | undefined {\n\tconst quoted = /^Revert\\s+\"(.*)\"\\s*$/i.exec(title.trim());\n\tif (quoted) {\n\t\tconst inner = /\\(#(\\d+)\\)\\s*$/.exec(quoted[1]!);\n\t\treturn inner ? Number(inner[1]) : undefined;\n\t}\n\tconst branch = /^Merge pull request #\\d+ from \\S+\\/revert-(\\d+)-/.exec(title);\n\treturn branch ? Number(branch[1]) : undefined;\n}\n\n/** Same-repo issue numbers a PR body closes with a GitHub closing keyword. */\nexport function closingIssues(body: string, owner: string, repo: string): number[] {\n\tconst out = new Set<number>();\n\tconst self = `${owner}/${repo}`.toLowerCase();\n\tfor (const m of body.matchAll(/\\b(?:close[sd]?|fix(?:e[sd])?|resolve[sd]?):?\\s+(?:([\\w.-]+\\/[\\w.-]+))?#(\\d+)\\b/gi)) {\n\t\tif (m[1] === undefined || m[1].toLowerCase() === self) out.add(Number(m[2]));\n\t}\n\treturn [...out];\n}\n\n/** Breaking-change hints for one PR: `!` in the type, `BREAKING CHANGE` in the body, a `semver: major` label. */\nexport function breakingHints(title: string, body: string, labels: string[]): string[] {\n\tconst hints: string[] = [];\n\tif (parseConventional(title).bang) hints.push(\"`!` in the type\");\n\tif (/BREAKING[ -]CHANGES?\\b/.test(body)) hints.push(\"BREAKING CHANGE in the body\");\n\tif (labels.some((l) => l.toLowerCase() === \"semver: major\")) hints.push(\"semver: major label\");\n\treturn hints;\n}\n\nfunction sectionsFromLabels(labels: string[]): Set<ChangeSection> {\n\tconst out = new Set<ChangeSection>();\n\tfor (const raw of labels) {\n\t\tconst l = raw.toLowerCase();\n\t\tif (/security/.test(l)) out.add(\"security\");\n\t\telse if (l === \"type: feature\" || l === \"type: feature request\" || l === \"type: enhancement\") out.add(\"features\");\n\t\telse if (l === \"type: bug\") out.add(\"fixes\");\n\t\telse if (l === \"type: dependencies\" || l === \"dependencies\") out.add(\"dependencies\");\n\t\telse if (l === \"type: ci\" || l === \"type: config\") out.add(\"ciTooling\");\n\t\telse if (l === \"type: documentation\" || l === \"documentation\") out.add(\"documentation\");\n\t}\n\treturn out;\n}\n\nfunction sectionFromType(type: string, scope: string | undefined, author: string): ChangeSection | undefined {\n\tif (type === \"security\" || scope === \"security\") return \"security\";\n\tif (type === \"deps\" || scope === \"deps\" || scope === \"deps-dev\" || author.toLowerCase().startsWith(\"dependabot\")) return \"dependencies\";\n\tif (type === \"feat\") return \"features\";\n\tif (type === \"fix\") return \"fixes\";\n\tif (type === \"ci\" || type === \"chore\" || type === \"build\" || type === \"test\" || type === \"style\") return \"ciTooling\";\n\tif (type === \"docs\") return \"documentation\";\n\treturn undefined;\n}\n\n/**\n * The changelog section for one PR, from its title's type and its labels. A breaking hint wins, then\n * security. Otherwise the type and labels must agree on one section; when they disagree, or neither\n * says anything (`refactor`, `perf`, a non-conventional title), the PR is left ungrouped.\n */\nexport function sectionFor(pr: { title: string; labels: string[]; author: string; breaking: string[] }): ChangeSection | undefined {\n\tif (pr.breaking.length > 0) return \"breaking\";\n\tconst { type, scope } = parseConventional(pr.title);\n\tconst fromType = sectionFromType(type, scope, pr.author);\n\tconst fromLabels = sectionsFromLabels(pr.labels);\n\tif (fromType === \"security\" || fromLabels.has(\"security\")) return \"security\";\n\tconst all = new Set(fromLabels);\n\tif (fromType) all.add(fromType);\n\treturn all.size === 1 ? [...all][0] : undefined;\n}\n\n/** Lockfiles and build output \u2014 left out of patches and of the \"excluding generated\" totals. */\nexport function isGenerated(path: string): boolean {\n\treturn /(^|\\/)(package-lock\\.json|npm-shrinkwrap\\.json|pnpm-lock\\.yaml|yarn\\.lock)$/.test(path) || /^(dist|types)\\//.test(path);\n}\n\n/** The subpaths an `exports` field publishes: \".\" for a string or a pure conditions object. */\nexport function exportKeys(exportsField: unknown): string[] {\n\tif (exportsField === undefined || exportsField === null) return [];\n\tif (typeof exportsField !== \"object\" || Array.isArray(exportsField)) return [\".\"];\n\tconst keys = Object.keys(exportsField);\n\treturn keys.some((k) => k.startsWith(\".\")) ? keys.filter((k) => k.startsWith(\".\")) : [\".\"];\n}\n\ntype Pkg = Record<string, unknown>;\ntype Lock = { packages?: Record<string, { version?: string }>; dependencies?: Record<string, { version?: string }> };\n\nconst DEP_SCOPES: Array<[DependencyChange[\"scope\"], string]> = [\n\t[\"runtime\", \"dependencies\"],\n\t[\"dev\", \"devDependencies\"],\n\t[\"optional\", \"optionalDependencies\"],\n\t[\"peer\", \"peerDependencies\"]\n];\n\nfunction lockedVersion(lock: Lock | undefined, name: string): string | undefined {\n\treturn lock?.packages?.[`node_modules/${name}`]?.version ?? lock?.dependencies?.[name]?.version;\n}\n\n/** Direct-dependency changes between two package.json files, with locked versions when the lockfiles are there. */\nexport function dependencyChanges(from: Pkg, to: Pkg, lockFrom?: Lock, lockTo?: Lock): DependencyChange[] {\n\tconst out: DependencyChange[] = [];\n\tfor (const [scope, field] of DEP_SCOPES) {\n\t\tconst a = (from[field] ?? {}) as Record<string, string>;\n\t\tconst b = (to[field] ?? {}) as Record<string, string>;\n\t\tfor (const name of [...new Set([...Object.keys(a), ...Object.keys(b)])].sort()) {\n\t\t\tconst lf = name in a ? lockedVersion(lockFrom, name) : undefined;\n\t\t\tconst lt = name in b ? lockedVersion(lockTo, name) : undefined;\n\t\t\tconst change: DependencyChange[\"change\"] | undefined = !(name in a) ? \"added\" : !(name in b) ? \"removed\" : a[name] !== b[name] || lf !== lt ? \"changed\" : undefined;\n\t\t\tif (!change) continue;\n\t\t\tout.push({\n\t\t\t\tname,\n\t\t\t\tscope,\n\t\t\t\tchange,\n\t\t\t\t...(name in a ? { from: a[name] } : {}),\n\t\t\t\t...(name in b ? { to: b[name] } : {}),\n\t\t\t\t...(lf !== undefined ? { lockedFrom: lf } : {}),\n\t\t\t\t...(lt !== undefined ? { lockedTo: lt } : {})\n\t\t\t});\n\t\t}\n\t}\n\treturn out;\n}\n\n/** package.json deltas between the base and head sides, plus the breaking hints they imply. */\nexport function packageJsonDelta(from: Pkg, to: Pkg): { delta: NonNullable<NetFacts[\"packageJson\"]>; hints: string[] } {\n\tconst same = (k: string) => JSON.stringify(from[k]) === JSON.stringify(to[k]);\n\tconst changed = [\"version\", \"engines\", \"exports\", \"bin\", \"files\", \"publishConfig\", \"main\", \"type\"].filter((k) => !same(k));\n\tconst delta: NonNullable<NetFacts[\"packageJson\"]> = { changed };\n\tconst hints: string[] = [];\n\tif (!same(\"version\")) delta.version = { ...(typeof from.version === \"string\" ? { from: from.version } : {}), ...(typeof to.version === \"string\" ? { to: to.version } : {}) };\n\tif (!same(\"engines\")) {\n\t\tdelta.engines = { from: from.engines, to: to.engines };\n\t\thints.push(`engines changed: ${JSON.stringify(from.engines ?? null)} \u2192 ${JSON.stringify(to.engines ?? null)}`);\n\t}\n\tif (!same(\"exports\")) {\n\t\tconst a = exportKeys(from.exports);\n\t\tconst b = exportKeys(to.exports);\n\t\tdelta.exports = { added: b.filter((k) => !a.includes(k)), removed: a.filter((k) => !b.includes(k)) };\n\t\tfor (const k of delta.exports.removed) hints.push(`exports entry removed: ${k}`);\n\t}\n\treturn { delta, hints };\n}\n\nfunction emptyGroups(): Record<ChangeSection | \"ungrouped\", number[]> {\n\treturn { breaking: [], features: [], fixes: [], security: [], ciTooling: [], documentation: [], dependencies: [], ungrouped: [] };\n}\n\nconst HEADINGS: Record<ChangeSection | \"ungrouped\", string> = {\n\tbreaking: \"## \u26A0\uFE0F Breaking Changes\",\n\tfeatures: \"## \u2728 Features\",\n\tfixes: \"## \uD83D\uDC1B Bug Fixes\",\n\tsecurity: \"## \uD83D\uDD12 Security & supply chain\",\n\tciTooling: \"## \uD83D\uDD27 CI & tooling\",\n\tdocumentation: \"## \uD83D\uDCDA Documentation\",\n\tdependencies: \"## \uD83D\uDD27 Dependencies\",\n\tungrouped: \"## \uD83D\uDD27 Other\"\n};\n\n/** \"Major\" / \"Minor\" / \"Patch\" from the previous version to this one; null when either is unknown. */\nexport function releaseType(previous: string | null | undefined, version: string | null | undefined): string | null {\n\tif (!previous || !version) return null;\n\tconst [a, b] = [previous, version].map((v) => v.split(\"-\")[0]!.split(\".\").map(Number));\n\tif (b![0]! > a![0]!) return \"Major\";\n\tif (b![1]! > a![1]!) return \"Minor\";\n\treturn \"Patch\";\n}\n\n/** A changelog skeleton in the per-version template: headings and one `(#N)` entry per PR, no prose. */\nexport function buildSkeleton(r: ReportReleaseChangesResult): string {\n\tconst name = r.repo.split(\"/\")[1];\n\tconst type = releaseType(r.previousRelease?.version, r.version);\n\tconst lines = [`# ${name} v${r.version ?? \"X.Y.Z\"} Changelog`, \"\", \"**Release Date**: \", `**Release Type**: ${type ?? \"\"}`, \"\", \"---\", \"\", \"## Overview\", \"\", \"\"];\n\tconst byNumber = new Map(r.prs.map((p) => [p.number, p]));\n\tfor (const key of [...SECTIONS, \"ungrouped\"] as const) {\n\t\tconst nums = r.groups[key];\n\t\tif (nums.length === 0) continue;\n\t\tlines.push(\"---\", \"\", HEADINGS[key], \"\");\n\t\tfor (const n of nums) {\n\t\t\tconst p = byNumber.get(n)!;\n\t\t\tconst closes = (p.closes ?? []).map((i) => `closes [#${i}](https://github.com/${r.repo}/issues/${i})`);\n\t\t\tlines.push(`### ${p.title} ([#${n}](${p.url})${closes.length ? `, ${closes.join(\", \")}` : \"\"})`, \"\", \"\");\n\t\t}\n\t}\n\tlines.push(\"---\", \"\", \"## Upgrade notes\", \"\", \"\");\n\treturn lines.join(\"\\n\");\n}\n\ninterface RawPull {\n\tnumber: number;\n\ttitle: string;\n\thtml_url: string;\n\tbody?: string | null;\n\tuser: { login: string } | null;\n\tlabels: Array<{ name: string }>;\n\tmerged_at: string | null;\n\tadditions: number;\n\tdeletions: number;\n\tchanged_files: number;\n\thead: { ref: string; sha: string };\n\tbase: { ref: string };\n}\n\ninterface RawFile {\n\tfilename: string;\n\tstatus: string;\n\tadditions: number;\n\tdeletions: number;\n\tpatch?: string;\n}\n\ninterface RawCommit {\n\tsha: string;\n\tcommit: { message: string };\n}\n\n/** A file's raw text at `ref`; undefined on 404. */\nasync function getRaw(octokit: Octokit, budget: CallBudget, owner: string, repo: string, path: string, ref: string): Promise<string | undefined> {\n\ttry {\n\t\tconst data = await reqOne<unknown>(octokit, budget, \"GET /repos/{owner}/{repo}/contents/{path}\", { owner, repo, path, ref, mediaType: { format: \"raw\" } });\n\t\treturn typeof data === \"string\" ? data : undefined;\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\nasync function getJson<T>(octokit: Octokit, budget: CallBudget, owner: string, repo: string, path: string, ref: string): Promise<T | undefined> {\n\tconst text = await getRaw(octokit, budget, owner, repo, path, ref);\n\tif (text === undefined) return undefined;\n\ttry {\n\t\treturn JSON.parse(text) as T;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n/** First of `paths` that exists at `ref`, with its text. */\nasync function findText(octokit: Octokit, budget: CallBudget, owner: string, repo: string, paths: string[], ref: string): Promise<{ path: string; text: string } | undefined> {\n\tfor (const path of paths) {\n\t\tconst text = await getRaw(octokit, budget, owner, repo, path, ref);\n\t\tif (text !== undefined) return { path, text };\n\t}\n\treturn undefined;\n}\n\nconst isHotfixRef = (ref: string) => ref === \"hotfixes\" || ref.startsWith(\"hotfix/\");\n\nexport async function reportReleaseChanges(octokit: Octokit, input: ReportReleaseChangesInput): Promise<ReportReleaseChangesResult> {\n\tconst { owner, repo } = input;\n\tconst budget = new CallBudget(Math.min(input.maxApiCalls ?? DEFAULT_MAX_API_CALLS, HARD_MAX_API_CALLS));\n\tconst detail = input.detail ?? \"summaries\";\n\tconst maxBodyChars = input.maxBodyChars ?? DEFAULT_MAX_BODY_CHARS;\n\tconst maxFiles = Math.min(input.maxFiles ?? DEFAULT_MAX_FILES, HARD_MAX_FILES);\n\tconst maxPatchChars = input.maxPatchChars ?? DEFAULT_MAX_PATCH_CHARS;\n\tlet diffLeft = input.maxDiffChars ?? DEFAULT_MAX_DIFF_CHARS;\n\tconst deep = input.prs ? new Set(input.prs) : undefined;\n\tconst detailFor = (n: number): ChangeDetail => (deep && !deep.has(n) ? \"titles\" : detail);\n\n\tconst result: ReportReleaseChangesResult = { repo: `${owner}/${repo}`, pull: input.pull, prs: [], groups: emptyGroups(), excluded: [], hotfixes: [] };\n\n\ttry {\n\t\tconst release = await reqOne<RawPull>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls/{pull_number}\", { owner, repo, pull_number: input.pull });\n\t\tconst head = release.head.ref;\n\t\tconst base = release.base.ref;\n\t\tconst version = parseReleaseVersion(release.title);\n\t\tObject.assign(result, { url: release.html_url, title: release.title, version, head, base });\n\n\t\t// 1. What the release PR's commits say ships (squash and merge commits, docs PRs and the bump dropped).\n\t\tconst commits = await paginate<RawCommit>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\", { owner, repo, pull_number: input.pull }, 300);\n\t\tconst candidates = releaseCommitPrs(commits.map((c) => c.commit.message));\n\t\tconst inRange = new Set(candidates.map((c) => c.number));\n\t\tconst drop = new Map<number, ExcludedPr>();\n\t\tfor (const c of candidates) {\n\t\t\tconst undone = revertedPr(c.title);\n\t\t\tif (undone !== undefined && inRange.has(undone)) {\n\t\t\t\tdrop.set(c.number, { number: c.number, title: c.title, reason: \"revert\", pair: undone });\n\t\t\t\tdrop.set(undone, { number: undone, title: candidates.find((x) => x.number === undone)!.title, reason: \"reverted\", pair: c.number });\n\t\t\t}\n\t\t}\n\n\t\t// 2. Earlier releases on the base branch: what they shipped, and which were hotfixes.\n\t\tconst baseCommits = await reqOne<RawCommit[]>(octokit, budget, \"GET /repos/{owner}/{repo}/commits\", { owner, repo, sha: base, per_page: 50 });\n\t\tconst releaseCommits = baseCommits.filter((c) => /^release:/i.test(c.commit.message)).slice(0, MAX_EARLIER_RELEASES);\n\t\tconst shipped = new Set<number>();\n\t\tconst hotfixCandidates: Array<HotfixRelease> = [];\n\t\tresult.previousRelease = null;\n\t\tfor (const rc of releaseCommits) {\n\t\t\tconst subject = rc.commit.message.split(\"\\n\", 1)[0]!;\n\t\t\tconst rcVersion = parseReleaseVersion(subject);\n\t\t\tconst assoc = await reqOne<Array<{ number: number; title: string; html_url: string; head: { ref: string } }>>(octokit, budget, \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\", { owner, repo, commit_sha: rc.sha });\n\t\t\tconst pr = assoc[0];\n\t\t\tconst hotfix = pr !== undefined && isHotfixRef(pr.head.ref);\n\t\t\tif (result.previousRelease === null) {\n\t\t\t\tresult.previousRelease = { version: rcVersion, tag: rcVersion ? `v${rcVersion}` : null, ...(pr ? { pull: pr.number } : {}), sha: rc.sha, kind: hotfix ? \"hotfix\" : \"full\" };\n\t\t\t}\n\t\t\tif (pr) {\n\t\t\t\tconst prCommits = await paginate<RawCommit>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\", { owner, repo, pull_number: pr.number }, 300);\n\t\t\t\tfor (const s of releaseCommitPrs(prCommits.map((c) => c.commit.message))) shipped.add(s.number);\n\t\t\t\tif (hotfix && !isHotfixRef(head)) hotfixCandidates.push({ version: rcVersion, pull: pr.number, title: pr.title, url: pr.html_url, sha: rc.sha });\n\t\t\t}\n\t\t\t// Everything older than the last full release is covered by it.\n\t\t\tif (!hotfix) break;\n\t\t}\n\t\tif (hotfixCandidates.length > 0) {\n\t\t\tconst cmp = await reqOne<{ commits?: RawCommit[] }>(octokit, budget, \"GET /repos/{owner}/{repo}/compare/{basehead}\", { owner, repo, basehead: `${head}...${base}` });\n\t\t\tconst notOnHead = new Set((cmp.commits ?? []).map((c) => c.sha));\n\t\t\tresult.hotfixes = hotfixCandidates.filter((h) => notOnHead.has(h.sha));\n\t\t}\n\n\t\t// 3. The previous version's changelog names what it shipped, too.\n\t\tconst earlierChangelog = new Set<number>();\n\t\tconst prevVersion = result.previousRelease?.version;\n\t\tif (prevVersion) {\n\t\t\tconst found = await findText(octokit, budget, owner, repo, changelogPaths(prevVersion), base);\n\t\t\tif (found) for (const n of mentionedPrs(found.text)) earlierChangelog.add(n);\n\t\t}\n\t\tfor (const c of candidates) {\n\t\t\tif (drop.has(c.number)) continue;\n\t\t\tif (shipped.has(c.number)) drop.set(c.number, { number: c.number, title: c.title, reason: \"earlier-release\" });\n\t\t\telse if (earlierChangelog.has(c.number)) drop.set(c.number, { number: c.number, title: c.title, reason: \"earlier-changelog\" });\n\t\t}\n\t\tresult.excluded = [...drop.values()].sort((a, b) => a.number - b.number);\n\n\t\t// 4. The current version's changelog, if one exists yet, marks what is already written up.\n\t\tlet documented = new Set<number>();\n\t\tif (version) {\n\t\t\tconst paths = changelogPaths(version);\n\t\t\tconst found = await findText(octokit, budget, owner, repo, paths, release.head.sha);\n\t\t\tresult.changelog = { path: found?.path ?? null, checkedPaths: paths };\n\t\t\tif (found) documented = mentionedPrs(found.text);\n\t\t}\n\n\t\tconst shipping = candidates.filter((c) => !drop.has(c.number));\n\t\tif (deep) {\n\t\t\tconst missing = [...deep].filter((n) => !shipping.some((c) => c.number === n));\n\t\t\tif (missing.length > 0) result.notInRelease = missing;\n\t\t}\n\t\tresult.prs = shipping.map((c) => ({\n\t\t\tnumber: c.number,\n\t\t\turl: `https://github.com/${owner}/${repo}/pull/${c.number}`,\n\t\t\ttitle: c.title,\n\t\t\ttype: c.type,\n\t\t\tfetched: false,\n\t\t\t...(version ? { documented: documented.has(c.number) } : {})\n\t\t}));\n\n\t\t// 5. Each shipping PR at its detail level.\n\t\tfor (const entry of result.prs) {\n\t\t\tconst pr = await reqOne<RawPull>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls/{pull_number}\", { owner, repo, pull_number: entry.number });\n\t\t\tconst body = pr.body ?? \"\";\n\t\t\tconst labels = pr.labels.map((l) => l.name);\n\t\t\tconst conv = parseConventional(pr.title);\n\t\t\tObject.assign(entry, {\n\t\t\t\turl: pr.html_url,\n\t\t\t\ttitle: pr.title,\n\t\t\t\ttype: commitType(pr.title),\n\t\t\t\t...(conv.scope ? { scope: conv.scope } : {}),\n\t\t\t\tfetched: true,\n\t\t\t\tlabels,\n\t\t\t\tauthor: pr.user?.login ?? \"\",\n\t\t\t\tmergedAt: pr.merged_at,\n\t\t\t\tcloses: closingIssues(body, owner, repo),\n\t\t\t\tadditions: pr.additions,\n\t\t\t\tdeletions: pr.deletions,\n\t\t\t\tchangedFiles: pr.changed_files,\n\t\t\t\tbreaking: breakingHints(pr.title, body, labels)\n\t\t\t});\n\t\t\tconst level = DETAIL_RANK[detailFor(entry.number)];\n\t\t\tif (level >= DETAIL_RANK.summaries) {\n\t\t\t\tentry.body = body.length > maxBodyChars ? body.slice(0, maxBodyChars) : body;\n\t\t\t\tif (body.length > maxBodyChars) entry.bodyTruncated = true;\n\t\t\t}\n\t\t\tif (level >= DETAIL_RANK.files) {\n\t\t\t\tconst files = await paginate<RawFile>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\", { owner, repo, pull_number: entry.number }, maxFiles);\n\t\t\t\tentry.files = files.map((f) => {\n\t\t\t\t\tconst file: ChangeFile = { path: f.filename, status: f.status, additions: f.additions, deletions: f.deletions };\n\t\t\t\t\tif (level < DETAIL_RANK.diff || f.patch === undefined) return file;\n\t\t\t\t\tif (isGenerated(f.filename)) return { ...file, patchSkipped: \"generated\" };\n\t\t\t\t\tif (diffLeft <= 0) return { ...file, patchSkipped: \"max-diff-chars\" };\n\t\t\t\t\tconst cap = Math.min(maxPatchChars, diffLeft);\n\t\t\t\t\tconst patch = f.patch.length > cap ? f.patch.slice(0, cap) : f.patch;\n\t\t\t\t\tdiffLeft -= patch.length;\n\t\t\t\t\treturn { ...file, patch, ...(f.patch.length > cap ? { patchTruncated: true } : {}) };\n\t\t\t\t});\n\t\t\t\tif (pr.changed_files > files.length) entry.filesTruncated = true;\n\t\t\t}\n\t\t}\n\n\t\t// 6. The release's net facts.\n\t\tconst net: NetFacts = { breakingHints: [] };\n\t\tresult.net = net;\n\t\tconst pkgFrom = await getJson<Pkg>(octokit, budget, owner, repo, \"package.json\", base);\n\t\tconst pkgTo = await getJson<Pkg>(octokit, budget, owner, repo, \"package.json\", release.head.sha);\n\t\tif (pkgFrom && pkgTo) {\n\t\t\tconst { delta, hints } = packageJsonDelta(pkgFrom, pkgTo);\n\t\t\tnet.packageJson = delta;\n\t\t\tnet.breakingHints.push(...hints);\n\t\t\tconst lockFrom = await getJson<Lock>(octokit, budget, owner, repo, \"package-lock.json\", base);\n\t\t\tconst lockTo = await getJson<Lock>(octokit, budget, owner, repo, \"package-lock.json\", release.head.sha);\n\t\t\tnet.dependencies = dependencyChanges(pkgFrom, pkgTo, lockFrom, lockTo);\n\t\t}\n\t\tconst files = await paginate<RawFile>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\", { owner, repo, pull_number: input.pull }, RELEASE_FILES_LIMIT);\n\t\tconst kept = files.filter((f) => !isGenerated(f.filename));\n\t\tconst sum = (list: RawFile[], k: \"additions\" | \"deletions\") => list.reduce((n, f) => n + f[k], 0);\n\t\tnet.files = {\n\t\t\tchanged: release.changed_files,\n\t\t\tadditions: release.additions,\n\t\t\tdeletions: release.deletions,\n\t\t\texcludingGenerated: { changed: kept.length, additions: sum(kept, \"additions\"), deletions: sum(kept, \"deletions\") },\n\t\t\tcomplete: files.length >= release.changed_files\n\t\t};\n\t} catch (err) {\n\t\tif (err instanceof RateLimited) {\n\t\t\tresult.truncated = true;\n\t\t\tresult.truncatedReason = \"rate-limited\";\n\t\t\tif (err.retryAfterSeconds !== undefined) result.retryAfterSeconds = err.retryAfterSeconds;\n\t\t} else if (err instanceof CallBudgetExhausted) {\n\t\t\tresult.truncated = true;\n\t\t\tresult.truncatedReason = \"max-api-calls\";\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\t// Grouping works on whatever was read; an unfetched PR is grouped from its commit title alone.\n\tfor (const p of result.prs) {\n\t\tconst section = sectionFor({ title: p.title, labels: p.labels ?? [], author: p.author ?? \"\", breaking: p.breaking ?? [] });\n\t\tif (section) p.section = section;\n\t\tresult.groups[section ?? \"ungrouped\"].push(p.number);\n\t}\n\tif (input.skeleton && result.version !== undefined) result.skeleton = buildSkeleton(result);\n\treturn result;\n}\n\n/** JSON Schema advertised to the agent for report_release_changes. */\nexport const REPORT_RELEASE_CHANGES_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\", \"repo\", \"pull\"],\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: \"the release PR number (next\u2192master or hotfixes\u2192master)\" },\n\t\tdetail: {\n\t\t\ttype: \"string\",\n\t\t\tenum: [\"titles\", \"summaries\", \"files\", \"diff\"],\n\t\t\tdescription: \"per-PR depth: titles (number, title, type, labels, author, merge date, closed issues), summaries (adds the body, capped), files (adds path/status/additions/deletions per file), diff (adds each file's patch, capped; lockfiles, dist/ and types/ skipped)\",\n\t\t\tdefault: \"summaries\"\n\t\t},\n\t\tprs: { type: \"array\", items: { type: \"number\" }, description: \"only these PRs get `detail`; every other shipping PR comes back at titles. Scan at titles first, then open just the ones that need judgment\" },\n\t\tskeleton: { type: \"boolean\", description: \"also return a changelog skeleton (markdown): headings per section and one (#N) entry per PR, no prose\", default: false },\n\t\tmaxBodyChars: { type: \"number\", description: `per-PR body cap (default ${DEFAULT_MAX_BODY_CHARS})` },\n\t\tmaxFiles: { type: \"number\", description: `per-PR file-list cap (default ${DEFAULT_MAX_FILES}, hard cap ${HARD_MAX_FILES})` },\n\t\tmaxPatchChars: { type: \"number\", description: `per-file patch cap with detail diff (default ${DEFAULT_MAX_PATCH_CHARS})` },\n\t\tmaxDiffChars: { type: \"number\", description: `total patch characters across the report with detail diff (default ${DEFAULT_MAX_DIFF_CHARS})` },\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/lockfile.ts\n *\t@Date: 2026-11-01T00:00:00+00:00 (1793491200)\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:00:00+00:00 (1793491200)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Lockfile reading for report_alert_status: which versions of a package a lockfile\n * resolves, and whether any of them is still inside a Dependabot alert's vulnerable range.\n *\n * Covers the three npm-ecosystem lockfiles \u2014 `package-lock.json` / `npm-shrinkwrap.json`\n * (v1 nested `dependencies` and v2/v3 flat `packages`), `pnpm-lock.yaml` (v5 `/name/ver`,\n * v6 `/name@ver`, v9 `name@ver` keys) and `yarn.lock` (classic and Berry). The YAML-ish\n * formats are scanned line by line instead of parsed, which is all the version lookup needs\n * and keeps the broker free of a YAML dependency.\n *\n * Versions are compared with a small semver implementation (numeric core plus prerelease\n * precedence), enough for Dependabot's comparator ranges like `>= 4.0.0, < 4.17.21`.\n */\n\nexport type LockfileKind = \"npm\" | \"pnpm\" | \"yarn\";\n\n/** Lockfile names, in the order they are looked for next to a manifest. */\nexport const LOCKFILE_NAMES = [\"package-lock.json\", \"npm-shrinkwrap.json\", \"pnpm-lock.yaml\", \"yarn.lock\"];\n\nexport function lockfileKind(path: string): LockfileKind | undefined {\n\tconst base = path.slice(path.lastIndexOf(\"/\") + 1);\n\tif (base === \"package-lock.json\" || base === \"npm-shrinkwrap.json\") return \"npm\";\n\tif (base === \"pnpm-lock.yaml\") return \"pnpm\";\n\tif (base === \"yarn.lock\") return \"yarn\";\n\treturn undefined;\n}\n\n/**\n * Lockfile paths to try for an alert's manifest, nearest first. A manifest that is itself\n * a lockfile is the only candidate. For a `package.json` the lockfile can sit beside it or,\n * in a workspace, at any parent up to the repo root.\n */\nexport function lockfileCandidates(manifest: string): string[] {\n\tif (lockfileKind(manifest)) return [manifest];\n\tconst parts = manifest.split(\"/\").slice(0, -1);\n\tconst out: string[] = [];\n\tfor (let depth = parts.length; depth >= 0; depth--) {\n\t\tconst dir = parts.slice(0, depth).join(\"/\");\n\t\tfor (const name of LOCKFILE_NAMES) out.push(dir ? `${dir}/${name}` : name);\n\t}\n\treturn out;\n}\n\ninterface NpmLockEntry {\n\tname?: string;\n\tversion?: string;\n\tlink?: boolean;\n\tdependencies?: Record<string, NpmLockEntry>;\n}\n\nfunction npmVersions(text: string, pkg: string): string[] | undefined {\n\tlet lock: { packages?: Record<string, NpmLockEntry>; dependencies?: Record<string, NpmLockEntry> };\n\ttry {\n\t\tlock = JSON.parse(text);\n\t} catch {\n\t\treturn undefined;\n\t}\n\tconst out: string[] = [];\n\tif (lock.packages && typeof lock.packages === \"object\") {\n\t\tfor (const [key, entry] of Object.entries(lock.packages)) {\n\t\t\tif (key === \"\" || entry.link || typeof entry.version !== \"string\") continue;\n\t\t\tconst name = entry.name ?? key.slice(key.lastIndexOf(\"node_modules/\") + \"node_modules/\".length);\n\t\t\tif (name === pkg) out.push(entry.version);\n\t\t}\n\t\treturn out;\n\t}\n\tconst walk = (deps: Record<string, NpmLockEntry> | undefined) => {\n\t\tfor (const [name, entry] of Object.entries(deps ?? {})) {\n\t\t\tif (name === pkg && typeof entry.version === \"string\") out.push(entry.version);\n\t\t\twalk(entry.dependencies);\n\t\t}\n\t};\n\twalk(lock.dependencies);\n\treturn out;\n}\n\nfunction pnpmVersions(text: string, pkg: string): string[] {\n\tconst out: string[] = [];\n\tlet inPackages = false;\n\tfor (const line of text.split(/\\r?\\n/)) {\n\t\tif (/^\\S/.test(line)) {\n\t\t\tinPackages = /^packages:\\s*$/.test(line);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!inPackages) continue;\n\t\tconst m = /^ {2}(\\S.*):\\s*$/.exec(line);\n\t\tif (!m) continue;\n\t\tconst key = m[1]!.replace(/^['\"]|['\"]$/g, \"\").replace(/^\\//, \"\");\n\t\tlet rest: string | undefined;\n\t\tif (key.startsWith(`${pkg}@`)) rest = key.slice(pkg.length + 1);\n\t\telse if (key.startsWith(`${pkg}/`)) rest = key.slice(pkg.length + 1).split(\"_\")[0];\n\t\tconst version = rest?.split(\"(\")[0];\n\t\tif (version && /^\\d/.test(version)) out.push(version);\n\t}\n\treturn out;\n}\n\nfunction yarnVersions(text: string, pkg: string): string[] {\n\tconst out: string[] = [];\n\tlet matching = false;\n\tfor (const line of text.split(/\\r?\\n/)) {\n\t\tif (line === \"\" || line.startsWith(\"#\")) continue;\n\t\tif (/^\\S.*:$/.test(line)) {\n\t\t\tconst specs = line.slice(0, -1).split(/,\\s*/).map((s) => s.trim().replace(/^\"|\"$/g, \"\"));\n\t\t\tmatching = specs.some((s) => s.slice(0, s.indexOf(\"@\", 1)) === pkg);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!matching) continue;\n\t\tconst v = /^\\s+version:?\\s+\"?([^\"\\s]+)\"?\\s*$/.exec(line);\n\t\tif (v) {\n\t\t\tout.push(v[1]!);\n\t\t\tmatching = false;\n\t\t}\n\t}\n\treturn out;\n}\n\n/** Every version of `pkg` the lockfile resolves, de-duplicated; undefined when the file can't be parsed. */\nexport function installedVersions(kind: LockfileKind, text: string, pkg: string): string[] | undefined {\n\tconst raw = kind === \"npm\" ? npmVersions(text, pkg) : kind === \"pnpm\" ? pnpmVersions(text, pkg) : yarnVersions(text, pkg);\n\treturn raw ? [...new Set(raw)] : undefined;\n}\n\ninterface Semver {\n\tcore: [number, number, number];\n\tpre: string[];\n}\n\nfunction parseVersion(v: string): Semver | undefined {\n\tconst m = /^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-([0-9A-Za-z.-]+))?(?:\\+[0-9A-Za-z.-]+)?$/.exec(v.trim());\n\tif (!m) return undefined;\n\treturn { core: [Number(m[1]), Number(m[2] ?? 0), Number(m[3] ?? 0)], pre: m[4] ? m[4].split(\".\") : [] };\n}\n\nfunction comparePre(a: string[], b: string[]): number {\n\tif (a.length === 0 || b.length === 0) return b.length - a.length; // a release outranks any prerelease of it\n\tfor (let i = 0; i < Math.max(a.length, b.length); i++) {\n\t\tconst x = a[i];\n\t\tconst y = b[i];\n\t\tif (x === undefined) return -1;\n\t\tif (y === undefined) return 1;\n\t\tconst xn = /^\\d+$/.test(x);\n\t\tconst yn = /^\\d+$/.test(y);\n\t\tif (xn && yn) {\n\t\t\tif (Number(x) !== Number(y)) return Number(x) - Number(y);\n\t\t} else if (xn !== yn) {\n\t\t\treturn xn ? -1 : 1; // numeric identifiers sort before alphanumeric ones\n\t\t} else if (x !== y) {\n\t\t\treturn x < y ? -1 : 1;\n\t\t}\n\t}\n\treturn 0;\n}\n\n/** Semver precedence: negative, zero or positive. Undefined when either side isn't a version. */\nexport function compareVersions(a: string, b: string): number | undefined {\n\tconst x = parseVersion(a);\n\tconst y = parseVersion(b);\n\tif (!x || !y) return undefined;\n\tfor (let i = 0; i < 3; i++) if (x.core[i] !== y.core[i]) return x.core[i]! - y.core[i]!;\n\treturn comparePre(x.pre, y.pre);\n}\n\n/** Whether `version` falls inside a Dependabot range like `>= 4.0.0, < 4.17.21`. Undefined when either can't be read. */\nexport function inRange(version: string, range: string): boolean | undefined {\n\tfor (const part of range.split(\",\")) {\n\t\tconst m = /^\\s*(<=|>=|<|>|=)?\\s*(\\S+)\\s*$/.exec(part);\n\t\tif (!m) return undefined;\n\t\tconst cmp = compareVersions(version, m[2]!);\n\t\tif (cmp === undefined) return undefined;\n\t\tconst op = m[1] ?? \"=\";\n\t\tconst ok = op === \"<\" ? cmp < 0 : op === \"<=\" ? cmp <= 0 : op === \">\" ? cmp > 0 : op === \">=\" ? cmp >= 0 : cmp === 0;\n\t\tif (!ok) return false;\n\t}\n\treturn true;\n}\n\n/**\n * Whether any of `versions` is still vulnerable. Uses the alert's vulnerable range when it\n * can be read, and falls back to \"below the first patched version\". Undefined when neither\n * gives an answer for some version. An empty list is not vulnerable (the package is gone).\n */\nexport function anyVulnerable(versions: string[], range: string | undefined, patched: string | undefined): boolean | undefined {\n\tlet unknown = false;\n\tfor (const v of versions) {\n\t\tlet vuln = range ? inRange(v, range) : undefined;\n\t\tif (vuln === undefined && patched) {\n\t\t\tconst cmp = compareVersions(v, patched);\n\t\t\tvuln = cmp === undefined ? undefined : cmp < 0;\n\t\t}\n\t\tif (vuln === true) return true;\n\t\tif (vuln === undefined) unknown = true;\n\t}\n\treturn unknown ? undefined : false;\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/report_alert_status.ts\n *\t@Date: 2026-11-01T00:00:00+00:00 (1793491200)\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:00:00+00:00 (1793491200)\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, reqOne } from \"./rest-client.ts\";\nimport { normalizeDependabot, type RawDependabot, type SecurityAlert } from \"./report_security_alerts.ts\";\nimport { anyVulnerable, installedVersions, lockfileCandidates, lockfileKind } from \"./lockfile.ts\";\n\n/**\n * Custom verb: report_alert_status \u2014 for every open Dependabot alert, where its fix stands.\n *\n * report_security_alerts says what is open; this answers the next question, \"what has to\n * happen for each one?\", which otherwise means reading lockfiles and PR lists by hand. Alert\n * state tracks the default branch, so an alert can read open while its fix is already merged\n * to `next`, or while a closed PR is the only history it has. Each alert gets one bucket:\n *\n * - `released-still-open` \u2014 the default branch's lockfile no longer resolves a vulnerable\n * version, yet the alert is open (the fix didn't take).\n * - `fixed-on-next` \u2014 `next` or `hotfixes` resolves a patched version and the default\n * branch doesn't; waiting for a release.\n * - `open-pr` \u2014 an open PR bumps the package.\n * - `closed-unmerged` \u2014 only closed, unmerged PRs touch it.\n * - `no-pr` \u2014 nothing in flight.\n *\n * Checked in that order, so the bucket is the furthest the fix has got. Lockfiles are only\n * read for npm-ecosystem alerts; other ecosystems are bucketed from their PRs alone.\n *\n * Cost per repo: one repo read, three branch reads, the PR list (one call per 100 PRs) and the\n * lockfile reads. Lockfiles are read at a commit SHA and cached, so each lockfile is fetched\n * once per distinct commit \u2014 a `next` that equals the default branch costs nothing extra.\n * Fan-out safety mirrors the other report verbs: `maxApiCalls`, the rate-limit floor in\n * rest-client.ts, and `truncated` with a reason. Repos not reached are listed in `pending`.\n */\n\nexport type AlertBucket = \"released-still-open\" | \"fixed-on-next\" | \"open-pr\" | \"closed-unmerged\" | \"no-pr\";\n\nconst ALL_BUCKETS: AlertBucket[] = [\"released-still-open\", \"fixed-on-next\", \"open-pr\", \"closed-unmerged\", \"no-pr\"];\n\nexport interface ReportAlertStatusInput {\n\towner: string;\n\t/** One repo. */\n\trepo?: string;\n\t/** Several repos (names, with or without the owner prefix), e.g. the `byRepo` of a report_security_alerts run. */\n\trepos?: string[];\n\t/** List only alerts in these buckets. `summary` and per-repo `counts` still cover every alert. */\n\tbuckets?: AlertBucket[];\n\t/** Safety cap on repos swept when neither repo nor repos is given and the org endpoint is unavailable. Default 200, hard-capped at 500. */\n\tmaxRepos?: number;\n\t/** Safety cap on alerts fetched (org mode) or per repo. Default 500, hard-capped at 5000. */\n\talertLimit?: number;\n\t/** PRs read per repo, newest first. Default 200, hard-capped at 1000. */\n\tprLimit?: number;\n\t/** Lockfiles larger than this are not read. Default 10 MB, hard-capped at 50 MB. */\n\tmaxLockfileBytes?: number;\n\t/** Hard ceiling on total REST calls for this invocation. Default 400, hard-capped at 2000. */\n\tmaxApiCalls?: number;\n}\n\nexport type LockfileUnknownReason = \"no-lockfile\" | \"too-large\" | \"unparsed\" | \"no-version-info\" | \"no-branch\";\n\nexport interface LockfileState {\n\tstate: \"fixed\" | \"vulnerable\" | \"unknown\";\n\t/** The lockfile that was read. */\n\tpath?: string;\n\t/** Versions of the package that lockfile resolves; empty when the package isn't in it. */\n\tversions?: string[];\n\treason?: LockfileUnknownReason;\n}\n\nexport interface PrRef {\n\tnumber: number;\n\turl: string;\n\ttitle: string;\n\tbase: string;\n\thead: string;\n\tdraft?: boolean;\n\t/** Set on a PR against the default branch when the hotfix redirector opened its `hotfix-redirect/pr-<n>` twin. */\n\thotfixRedirect?: number;\n}\n\nexport interface ClosedPrRef {\n\tnumber: number;\n\turl: string;\n\ttitle: string;\n\tclosedAt: string;\n\t/** A PR for the same package merged after this one was closed. */\n\tsupersededBy?: number;\n}\n\nexport interface MergedPrRef {\n\tnumber: number;\n\turl: string;\n\ttitle: string;\n\tbase: string;\n\tmergedAt: string;\n}\n\nexport interface AlertStatus {\n\tnumber: number;\n\turl: string;\n\tseverity: string;\n\tpackage: string;\n\tecosystem?: string;\n\tmanifest?: string;\n\tvulnerableRange?: string;\n\tpatchedVersion?: string;\n\tcreatedAt: string;\n\tbucket: AlertBucket;\n\t/** One line saying why it landed in that bucket. */\n\treason: string;\n\t/** npm-ecosystem alerts only. `next` / `hotfixes` are present only when the branch exists. */\n\tlockfile?: { default: LockfileState; next?: LockfileState; hotfixes?: LockfileState };\n\topenPrs: PrRef[];\n\tclosedPrs?: ClosedPrRef[];\n\tmergedPrs?: MergedPrRef[];\n}\n\nexport interface RepoAlertStatus {\n\trepo: string;\n\tdefaultBranch: string;\n\tbranches: { next: boolean; hotfixes: boolean };\n\t/** Hint only: whether Dependabot seems to have stopped opening PRs while fixable alerts keep arriving. */\n\tdependabot: { lastPrAt?: string; looksPaused: boolean; reason?: string };\n\t/** How many PRs were read; `prListTruncated` when the list hit `prLimit`, so older PRs were not seen. */\n\tprsScanned: number;\n\tprListTruncated?: boolean;\n\tcounts: Partial<Record<AlertBucket, number>>;\n\talerts: AlertStatus[];\n}\n\nexport type AlertStatusTruncatedReason = \"max-repos\" | \"max-alerts\" | \"max-api-calls\" | \"rate-limited\";\n\nexport interface ReportAlertStatusResult {\n\tscanned: { repos: number; alerts: number };\n\t/** How the alerts were read: per named repo, one org-level call set, or a per-repo sweep after the org endpoint refused. */\n\tscope: \"repo\" | \"org\" | \"per-repo\";\n\tsummary: Record<AlertBucket, number>;\n\trepos: RepoAlertStatus[];\n\t/** Repos with open alerts that a cap or the rate limit stopped before they were classified. */\n\tpending?: string[];\n\t/** Per-repo reads only: repos where Dependabot alerts are off or not readable. */\n\tdisabled?: number;\n\ttruncated?: boolean;\n\ttruncatedReason?: AlertStatusTruncatedReason;\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_PR_LIMIT = 200;\nconst HARD_PR_LIMIT = 1000;\nconst DEFAULT_MAX_LOCKFILE_BYTES = 10 * 1024 * 1024;\nconst HARD_MAX_LOCKFILE_BYTES = 50 * 1024 * 1024;\nconst DEFAULT_MAX_API_CALLS = 400;\nconst HARD_MAX_API_CALLS = 2000;\n/** A fixable alert this old with no Dependabot PR opened since it arrived counts toward \"looks paused\". */\nconst PAUSED_AFTER_MS = 7 * 24 * 60 * 60 * 1000;\nconst DEPENDABOT_LOGIN = \"dependabot[bot]\";\n\ninterface RawPull {\n\tnumber: number;\n\thtml_url: string;\n\ttitle: string;\n\tbody?: string | null;\n\tstate: string;\n\tdraft?: boolean;\n\tcreated_at: string;\n\tclosed_at?: string | null;\n\tmerged_at?: string | null;\n\tuser?: { login?: string } | null;\n\thead: { ref: string };\n\tbase: { ref: string };\n}\n\ninterface RawContent {\n\ttype?: string;\n\tsize?: number;\n\tsha?: string;\n\tcontent?: string;\n\tencoding?: string;\n}\n\n/** The text of a lockfile, or a marker for one that exists but was too large to read. */\ntype LoadedLock = { path: string; text: string } | { path: string; tooLarge: true };\n\nfunction isUnavailable(err: unknown): boolean {\n\tconst status = (err as { status?: number }).status;\n\treturn status === 403 || status === 404;\n}\n\n/** reqOne, with a 404 meaning \"not there\" instead of an error. */\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\nfunction escapeRegExp(s: string): string {\n\treturn s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\n/** A PR that looks like a dependency update: opened by Dependabot, on a Dependabot/redirect branch, or titled as a bump. */\nfunction isDependencyPr(pr: RawPull): boolean {\n\tif (pr.user?.login === DEPENDABOT_LOGIN) return true;\n\tif (pr.head.ref.startsWith(\"dependabot/\") || pr.head.ref.startsWith(\"hotfix-redirect/\")) return true;\n\treturn /\\b(bumps?|updates?|upgrades?|deps)\\b/i.test(pr.title);\n}\n\n/**\n * Whether a dependency PR touches `pkg`: the package named as a word in the title, or as a\n * Markdown link / code span in the body (how Dependabot's single and grouped PRs list it).\n */\nfunction mentions(pr: RawPull, pkg: string): boolean {\n\tconst esc = escapeRegExp(pkg);\n\tif (new RegExp(`(^|[\\\\s(\\\\[\\`'\"])${esc}(?=$|[\\\\s)\\\\]\\`'\":,])`).test(pr.title)) return true;\n\tconst body = pr.body ?? \"\";\n\treturn body.includes(`[${pkg}](`) || body.includes(`\\`${pkg}\\``);\n}\n\nfunction decode(content: string): string {\n\treturn Buffer.from(content, \"base64\").toString(\"utf8\");\n}\n\nexport async function reportAlertStatus(octokit: Octokit, input: ReportAlertStatusInput): Promise<ReportAlertStatusResult> {\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 prLimit = Math.min(input.prLimit ?? DEFAULT_PR_LIMIT, HARD_PR_LIMIT);\n\tconst maxLockfileBytes = Math.min(input.maxLockfileBytes ?? DEFAULT_MAX_LOCKFILE_BYTES, HARD_MAX_LOCKFILE_BYTES);\n\tconst maxApiCalls = Math.min(input.maxApiCalls ?? DEFAULT_MAX_API_CALLS, HARD_MAX_API_CALLS);\n\tconst budget = new CallBudget(maxApiCalls);\n\tconst wantedBuckets = input.buckets?.length ? new Set(input.buckets) : undefined;\n\n\tconst byRepo = new Map<string, SecurityAlert[]>();\n\tconst results: RepoAlertStatus[] = [];\n\tconst summary = Object.fromEntries(ALL_BUCKETS.map((b) => [b, 0])) as Record<AlertBucket, number>;\n\tlet scope: ReportAlertStatusResult[\"scope\"] = \"repo\";\n\tlet disabled = 0;\n\tlet alertCount = 0;\n\tlet truncatedReason: AlertStatusTruncatedReason | undefined;\n\tlet retryAfterSeconds: number | undefined;\n\n\tconst add = (raws: unknown[], owner: string, repo: string) => {\n\t\tfor (const raw of raws) {\n\t\t\tconst a = normalizeDependabot(owner, repo, raw as RawDependabot);\n\t\t\tif (!a.package) continue; // nothing to match a lockfile or PR against\n\t\t\tconst list = byRepo.get(a.repo) ?? [];\n\t\t\tlist.push(a);\n\t\t\tbyRepo.set(a.repo, list);\n\t\t}\n\t};\n\n\tconst readRepos = async (repos: string[]) => {\n\t\tfor (const repo of repos) {\n\t\t\ttry {\n\t\t\t\tconst raws = await paginateAfter<unknown>(octokit, budget, \"GET /repos/{owner}/{repo}/dependabot/alerts\", { owner: input.owner, repo, state: \"open\" }, alertLimit);\n\t\t\t\tif (raws.length >= alertLimit) truncatedReason ??= \"max-alerts\";\n\t\t\t\tadd(raws, input.owner, repo);\n\t\t\t} catch (err) {\n\t\t\t\tif (!isUnavailable(err)) throw err;\n\t\t\t\tdisabled++;\n\t\t\t}\n\t\t}\n\t};\n\n\ttry {\n\t\tif (input.repo || input.repos?.length) {\n\t\t\tconst named = input.repo ? [input.repo] : input.repos!.map((r) => r.replace(/^[^/]+\\//, \"\"));\n\t\t\tawait readRepos([...new Set(named)]);\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst raws = await paginateAfter<unknown>(octokit, budget, \"GET /orgs/{owner}/dependabot/alerts\", { owner: input.owner, state: \"open\" }, alertLimit);\n\t\t\t\tscope = \"org\";\n\t\t\t\tif (raws.length >= alertLimit) truncatedReason ??= \"max-alerts\";\n\t\t\t\tadd(raws, input.owner, \"\");\n\t\t\t} catch (err) {\n\t\t\t\tif (!isUnavailable(err)) throw err;\n\t\t\t\tscope = \"per-repo\";\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\tawait readRepos(listed.slice(0, maxRepos));\n\t\t\t}\n\t\t}\n\n\t\tfor (const full of [...byRepo.keys()].sort()) {\n\t\t\tconst [owner, repo] = full.split(\"/\") as [string, string];\n\t\t\tconst row = await classifyRepoAlerts(octokit, budget, owner, repo, byRepo.get(full)!, { prLimit, maxLockfileBytes });\n\t\t\talertCount += row.alerts.length;\n\t\t\tfor (const a of row.alerts) summary[a.bucket]++;\n\t\t\tif (wantedBuckets) row.alerts = row.alerts.filter((a) => wantedBuckets.has(a.bucket));\n\t\t\tresults.push(row);\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 done = new Set(results.map((r) => r.repo));\n\tconst pending = [...byRepo.keys()].filter((r) => !done.has(r)).sort();\n\treturn {\n\t\tscanned: { repos: results.length, alerts: alertCount },\n\t\tscope,\n\t\tsummary,\n\t\trepos: results,\n\t\t...(pending.length > 0 ? { pending } : {}),\n\t\t...(disabled > 0 ? { disabled } : {}),\n\t\t...(truncatedReason ? { truncated: true, truncatedReason } : {}),\n\t\t...(retryAfterSeconds !== undefined ? { retryAfterSeconds } : {})\n\t};\n}\n\nasync function classifyRepoAlerts(\n\toctokit: Octokit,\n\tbudget: CallBudget,\n\towner: string,\n\trepo: string,\n\talerts: SecurityAlert[],\n\topts: { prLimit: number; maxLockfileBytes: number }\n): Promise<RepoAlertStatus> {\n\tconst info = await reqOne<{ default_branch: string }>(octokit, budget, \"GET /repos/{owner}/{repo}\", { owner, repo });\n\tconst defaultBranch = info.default_branch;\n\tconst branchSha = async (branch: string) =>\n\t\t(await getOrUndefined<{ commit: { sha: string } }>(octokit, budget, \"GET /repos/{owner}/{repo}/branches/{branch}\", { owner, repo, branch }))?.commit.sha;\n\tconst defaultSha = await branchSha(defaultBranch);\n\tconst nextSha = await branchSha(\"next\");\n\tconst hotfixesSha = await branchSha(\"hotfixes\");\n\n\tconst pulls = await paginate<RawPull>(octokit, budget, \"GET /repos/{owner}/{repo}/pulls\", { owner, repo, state: \"all\", sort: \"created\", direction: \"desc\" }, opts.prLimit);\n\tconst depPulls = pulls.filter(isDependencyPr);\n\n\t// Lockfile text per commit + path; null caches a miss so a missing file is asked for once.\n\tconst lockCache = new Map<string, LoadedLock | null>();\n\tconst loadLock = async (sha: string, path: string): Promise<LoadedLock | null> => {\n\t\tconst key = `${sha}:${path}`;\n\t\tif (lockCache.has(key)) return lockCache.get(key)!;\n\t\tlet loaded: LoadedLock | null = null;\n\t\tconst meta = await getOrUndefined<RawContent | RawContent[]>(octokit, budget, \"GET /repos/{owner}/{repo}/contents/{path}\", { owner, repo, path, ref: sha });\n\t\tif (meta && !Array.isArray(meta) && meta.type === \"file\") {\n\t\t\tif ((meta.size ?? 0) > opts.maxLockfileBytes) {\n\t\t\t\tloaded = { path, tooLarge: true };\n\t\t\t} else if (meta.encoding === \"base64\" && meta.content) {\n\t\t\t\tloaded = { path, text: decode(meta.content) };\n\t\t\t} else {\n\t\t\t\t// Files over 1 MB come back from the contents API without a body; the blob API serves them.\n\t\t\t\tconst blob = await reqOne<{ content: string }>(octokit, budget, \"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\", { owner, repo, file_sha: meta.sha });\n\t\t\t\tloaded = { path, text: decode(blob.content) };\n\t\t\t}\n\t\t}\n\t\tlockCache.set(key, loaded);\n\t\treturn loaded;\n\t};\n\tconst findLock = async (sha: string, manifest: string): Promise<LoadedLock | null> => {\n\t\tfor (const path of lockfileCandidates(manifest)) {\n\t\t\tconst lock = await loadLock(sha, path);\n\t\t\tif (lock) return lock;\n\t\t}\n\t\treturn null;\n\t};\n\tconst lockState = async (sha: string | undefined, a: SecurityAlert): Promise<LockfileState> => {\n\t\tif (!sha) return { state: \"unknown\", reason: \"no-branch\" };\n\t\tconst lock = await findLock(sha, a.manifest ?? \"package-lock.json\");\n\t\tif (!lock) return { state: \"unknown\", reason: \"no-lockfile\" };\n\t\tif (\"tooLarge\" in lock) return { state: \"unknown\", path: lock.path, reason: \"too-large\" };\n\t\tconst versions = installedVersions(lockfileKind(lock.path)!, lock.text, a.package!);\n\t\tif (!versions) return { state: \"unknown\", path: lock.path, reason: \"unparsed\" };\n\t\tconst vuln = anyVulnerable(versions, a.vulnerableRange, a.patchedVersion);\n\t\tif (vuln === undefined) return { state: \"unknown\", path: lock.path, versions, reason: \"no-version-info\" };\n\t\treturn { state: vuln ? \"vulnerable\" : \"fixed\", path: lock.path, versions };\n\t};\n\n\tconst statuses: AlertStatus[] = [];\n\tfor (const a of alerts) {\n\t\tconst pkg = a.package!;\n\t\tconst touching = depPulls.filter((p) => mentions(p, pkg));\n\t\tconst open = touching.filter((p) => p.state === \"open\");\n\t\tconst merged = touching.filter((p) => p.merged_at);\n\t\tconst closed = touching.filter((p) => p.state !== \"open\" && !p.merged_at);\n\n\t\tconst openPrs: PrRef[] = open.map((p) => {\n\t\t\tconst twin = p.base.ref === defaultBranch ? open.find((t) => t.head.ref === `hotfix-redirect/pr-${p.number}`) : undefined;\n\t\t\treturn {\n\t\t\t\tnumber: p.number,\n\t\t\t\turl: p.html_url,\n\t\t\t\ttitle: p.title,\n\t\t\t\tbase: p.base.ref,\n\t\t\t\thead: p.head.ref,\n\t\t\t\t...(p.draft ? { draft: true } : {}),\n\t\t\t\t...(twin ? { hotfixRedirect: twin.number } : {})\n\t\t\t};\n\t\t});\n\t\tconst closedPrs: ClosedPrRef[] = closed.map((p) => {\n\t\t\tconst closedAt = p.closed_at ?? p.created_at;\n\t\t\tconst later = merged.filter((m) => m.merged_at! > closedAt).sort((x, y) => x.merged_at!.localeCompare(y.merged_at!))[0];\n\t\t\treturn { number: p.number, url: p.html_url, title: p.title, closedAt, ...(later ? { supersededBy: later.number } : {}) };\n\t\t});\n\t\tconst mergedPrs: MergedPrRef[] = merged.map((p) => ({ number: p.number, url: p.html_url, title: p.title, base: p.base.ref, mergedAt: p.merged_at! }));\n\n\t\tlet lockfile: AlertStatus[\"lockfile\"];\n\t\tif (a.ecosystem === \"npm\") {\n\t\t\tconst def = await lockState(defaultSha, a);\n\t\t\tlockfile = { default: def };\n\t\t\tif (nextSha) lockfile.next = await lockState(nextSha, a);\n\t\t\tif (hotfixesSha) lockfile.hotfixes = await lockState(hotfixesSha, a);\n\t\t}\n\n\t\tlet bucket: AlertBucket;\n\t\tlet reason: string;\n\t\tconst stagedOn = lockfile ? ([\"next\", \"hotfixes\"] as const).find((b) => lockfile![b]?.state === \"fixed\") : undefined;\n\t\tif (lockfile?.default.state === \"fixed\") {\n\t\t\tbucket = \"released-still-open\";\n\t\t\treason = `${lockfile.default.path} on ${defaultBranch} has no vulnerable ${pkg} (${lockfile.default.versions!.join(\", \") || \"not present\"}), but the alert is still open`;\n\t\t} else if (stagedOn) {\n\t\t\tbucket = \"fixed-on-next\";\n\t\t\treason = `${stagedOn} resolves ${pkg} ${lockfile![stagedOn]!.versions!.join(\", \") || \"(removed)\"}; waiting for a release`;\n\t\t} else if (openPrs.length > 0) {\n\t\t\tbucket = \"open-pr\";\n\t\t\treason = `open PR #${openPrs.map((p) => p.number).join(\", #\")}`;\n\t\t} else if (closedPrs.length > 0) {\n\t\t\tbucket = \"closed-unmerged\";\n\t\t\tconst superseded = closedPrs.filter((p) => p.supersededBy !== undefined).length;\n\t\t\treason = `${closedPrs.length} closed unmerged PR(s)${superseded > 0 ? `, ${superseded} superseded by a later merge` : \"\"}`;\n\t\t} else {\n\t\t\tbucket = \"no-pr\";\n\t\t\treason = mergedPrs.length > 0 ? `no open PR; ${mergedPrs.length} merged PR(s) did not clear it` : \"no PR for this package\";\n\t\t}\n\n\t\tstatuses.push({\n\t\t\tnumber: a.number,\n\t\t\turl: a.url,\n\t\t\tseverity: a.severity,\n\t\t\tpackage: pkg,\n\t\t\t...(a.ecosystem ? { ecosystem: a.ecosystem } : {}),\n\t\t\t...(a.manifest ? { manifest: a.manifest } : {}),\n\t\t\t...(a.vulnerableRange ? { vulnerableRange: a.vulnerableRange } : {}),\n\t\t\t...(a.patchedVersion ? { patchedVersion: a.patchedVersion } : {}),\n\t\t\tcreatedAt: a.createdAt,\n\t\t\tbucket,\n\t\t\treason,\n\t\t\t...(lockfile ? { lockfile } : {}),\n\t\t\topenPrs,\n\t\t\t...(closedPrs.length > 0 ? { closedPrs } : {}),\n\t\t\t...(mergedPrs.length > 0 ? { mergedPrs } : {})\n\t\t});\n\t}\n\n\t// Paused hint: fixable alerts older than a week with no Dependabot PR opened since they arrived.\n\tconst lastPrAt = pulls\n\t\t.filter((p) => p.user?.login === DEPENDABOT_LOGIN)\n\t\t.map((p) => p.created_at)\n\t\t.sort()\n\t\t.at(-1);\n\tconst cutoff = new Date(Date.now() - PAUSED_AFTER_MS).toISOString();\n\tconst unanswered = alerts.filter((a) => a.patchedVersion && a.createdAt < cutoff && (!lastPrAt || a.createdAt > lastPrAt));\n\tconst dependabot: RepoAlertStatus[\"dependabot\"] = {\n\t\t...(lastPrAt ? { lastPrAt } : {}),\n\t\tlooksPaused: unanswered.length > 0,\n\t\t...(unanswered.length > 0\n\t\t\t? { reason: `${unanswered.length} fixable alert(s) older than 7 days with no Dependabot PR opened since${lastPrAt ? ` (last one ${lastPrAt})` : \" (none in the PRs read)\"}` }\n\t\t\t: {})\n\t};\n\n\tconst counts: Partial<Record<AlertBucket, number>> = {};\n\tfor (const s of statuses) counts[s.bucket] = (counts[s.bucket] ?? 0) + 1;\n\tstatuses.sort((x, y) => ALL_BUCKETS.indexOf(x.bucket) - ALL_BUCKETS.indexOf(y.bucket) || x.number - y.number);\n\n\treturn {\n\t\trepo: `${owner}/${repo}`,\n\t\tdefaultBranch,\n\t\tbranches: { next: nextSha !== undefined, hotfixes: hotfixesSha !== undefined },\n\t\tdependabot,\n\t\tprsScanned: pulls.length,\n\t\t...(pulls.length >= opts.prLimit ? { prListTruncated: true } : {}),\n\t\tcounts,\n\t\talerts: statuses\n\t};\n}\n\n/** JSON Schema advertised to the agent for report_alert_status. */\nexport const REPORT_ALERT_STATUS_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: \"one repository; omit (with repos) to cover every repo with open Dependabot alerts\" },\n\t\trepos: { type: \"array\", items: { type: \"string\" }, description: \"several repositories (names, with or without the owner prefix), e.g. the byRepo list of a report_security_alerts run\" },\n\t\tbuckets: {\n\t\t\ttype: \"array\",\n\t\t\titems: { type: \"string\", enum: ALL_BUCKETS },\n\t\t\tdescription: \"list only alerts in these buckets; summary and per-repo counts still cover every alert\"\n\t\t},\n\t\tmaxRepos: { type: \"number\", description: `safety cap on repos swept 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 (org mode) or per repo (default ${DEFAULT_ALERT_LIMIT}, hard cap ${HARD_ALERT_LIMIT})` },\n\t\tprLimit: { type: \"number\", description: `PRs read per repo, newest first (default ${DEFAULT_PR_LIMIT}, hard cap ${HARD_PR_LIMIT})` },\n\t\tmaxLockfileBytes: { type: \"number\", description: `lockfiles larger than this are not read (default ${DEFAULT_MAX_LOCKFILE_BYTES}, hard cap ${HARD_MAX_LOCKFILE_BYTES})` },\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\" | \"max-detail\";\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_DETAIL = 10;\nconst HARD_MAX_DETAIL = 50;\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\n/**\n * CI status for a whole list of PRs whose head shas are already known \u2014 used by\n * router.ts's `list_pull_requests` augmentation. Returns one result per input, in\n * order. One call budget and rate-limit floor are shared across the list, and the\n * list stops being evaluated the moment either runs out: every PR from there on gets\n * an empty summary plus the same `truncated`/`truncatedReason`.\n *\n * Detail (tier >= 1) is capped at the first `maxDetail` PRs (default 10, hard cap 50).\n * Later PRs still get their tier-0 counts, flagged `truncated: true` with\n * `truncatedReason: \"max-detail\"` so the caller can tell the detail was withheld\n * rather than that those PRs are healthy.\n */\nexport async function ciStatusForHeads(\n\toctokit: Octokit,\n\towner: string,\n\trepo: string,\n\theads: Array<{ number: number; sha: string }>,\n\topts: { verbosity?: number; logLines?: number; maxDetail?: 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\tconst verbosity = clampVerbosity(opts.verbosity);\n\tconst logLines = Math.min(opts.logLines ?? DEFAULT_LOG_LINES, HARD_LOG_LINES);\n\tconst maxDetail = Math.min(Math.max(opts.maxDetail ?? DEFAULT_MAX_DETAIL, 0), HARD_MAX_DETAIL);\n\n\tconst results: CiStatusResult[] = [];\n\tlet stopped: Truncation | undefined;\n\tfor (const [i, head] of heads.entries()) {\n\t\tif (stopped) {\n\t\t\tresults.push({ pull: head.number, summary: { passed: 0, failed: 0, pending: 0 }, ...stopped });\n\t\t\tcontinue;\n\t\t}\n\t\tconst detailed = i < maxDetail;\n\t\tconst r = await computeForPull(octokit, budget, owner, repo, head.number, head.sha, detailed ? verbosity : 0, logLines, opts.fetchFailedJobLogs);\n\t\tif (r.truncated) {\n\t\t\tstopped = { truncated: true, truncatedReason: r.truncatedReason as TruncatedReason, ...(r.retryAfterSeconds !== undefined ? { retryAfterSeconds: r.retryAfterSeconds } : {}) };\n\t\t\tresults.push(r);\n\t\t} else if (!detailed && verbosity >= 1) {\n\t\t\tresults.push({ ...r, truncated: true, truncatedReason: \"max-detail\" });\n\t\t} else {\n\t\t\tresults.push(r);\n\t\t}\n\t}\n\treturn results;\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-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\", \"npm_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/**\n\t * npm one-time password from the user's authenticator. Named npm_otp because `otp` is the\n\t * broker's own gate code (src/otp/), which the router strips before the verb sees it.\n\t */\n\tnpm_otp: 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\tnpm_otp: { type: \"string\", description: \"npm 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\", \"npm_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.npm_otp !== \"string\" || !/^[0-9]{6,8}$/.test(a.npm_otp)) fail('\"npm_otp\" must be the 6-8 digit npm 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\tnpm_otp: a.npm_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.npm_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.npm_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/minimize_comment.ts\n *\t@Date: 2026-11-02T19:55:39-08:00 (1793678139)\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-02T20:26:21-08:00 (1793679981)\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: minimize_comment \u2014 hide a comment (collapse it, \"Hide \u2192 Resolved\" in the UI) or\n * show it again. Used to fold away bot review comments once they're addressed. Reversible.\n *\n * Upstream has no tool for it; it's the GraphQL `minimizeComment` / `unminimizeComment`\n * mutations, which take the comment's node id. A comment can be named by node id, or by its\n * REST id plus `type` (issue / PR conversation comment, or PR review comment), in which case\n * the node id is looked up first. Runs on the write PAT (Issues or Pull requests: write).\n */\n\nexport const MINIMIZE_CLASSIFIERS = [\"RESOLVED\", \"OUTDATED\", \"DUPLICATE\", \"OFF_TOPIC\", \"SPAM\", \"ABUSE\"] as const;\nexport type MinimizeClassifier = (typeof MINIMIZE_CLASSIFIERS)[number];\n\nexport interface MinimizeCommentInput {\n\towner: string;\n\trepo?: string;\n\t/** Comment node id (e.g. \"IC_\u2026\" or \"PRRC_\u2026\"). */\n\tcommentId?: string;\n\t/** REST comment id, with `type`, when the node id isn't at hand. Needs `repo`. */\n\tcommentNumber?: number;\n\ttype?: \"issue\" | \"review\";\n\t/** Why it's hidden. Default RESOLVED. */\n\tclassifier?: MinimizeClassifier;\n\t/** true shows a hidden comment again. */\n\tunhide?: boolean;\n}\n\nexport interface MinimizeCommentResult {\n\tcommentId: string;\n\tisMinimized: boolean;\n\tminimizedReason: string | null;\n}\n\nconst MINIMIZE = `\n\tmutation($id: ID!, $classifier: ReportedContentClassifiers!) {\n\t\tminimizeComment(input: { subjectId: $id, classifier: $classifier }) {\n\t\t\tminimizedComment { isMinimized minimizedReason }\n\t\t}\n\t}`;\n\nconst UNMINIMIZE = `\n\tmutation($id: ID!) {\n\t\tunminimizeComment(input: { subjectId: $id }) {\n\t\t\tunminimizedComment { isMinimized minimizedReason }\n\t\t}\n\t}`;\n\n/** The node id the mutation needs, looked up from a REST id when that's what was given. */\nasync function nodeIdOf(octokit: Octokit, input: MinimizeCommentInput): Promise<string> {\n\tif (input.commentId !== undefined) {\n\t\tif (typeof input.commentId !== \"string\" || !input.commentId.trim()) throw new Error(\"minimize_comment: commentId must be a comment node id\");\n\t\tif (input.commentNumber !== undefined) throw new Error(\"minimize_comment: pass commentId or commentNumber, not both\");\n\t\treturn input.commentId;\n\t}\n\tif (!Number.isSafeInteger(input.commentNumber) || (input.commentNumber as number) <= 0) {\n\t\tthrow new Error(\"minimize_comment: pass commentId (node id), or commentNumber (REST id) with type and repo\");\n\t}\n\tif (input.type !== \"issue\" && input.type !== \"review\") throw new Error('minimize_comment: commentNumber needs type \"issue\" (issue or PR conversation comment) or \"review\" (PR review comment)');\n\tif (typeof input.repo !== \"string\" || !input.repo) throw new Error(\"minimize_comment: commentNumber needs repo\");\n\tconst route = input.type === \"issue\" ? \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\" : \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\";\n\tconst res = await octokit.request(route, { owner: input.owner, repo: input.repo, comment_id: input.commentNumber as number });\n\tconst nodeId = (res.data as { node_id?: unknown }).node_id;\n\tif (typeof nodeId !== \"string\" || !nodeId) throw new Error(`minimize_comment: GitHub returned no node id for ${input.type} comment ${input.commentNumber}`);\n\treturn nodeId;\n}\n\nexport async function minimizeComment(octokit: Octokit, input: MinimizeCommentInput): Promise<MinimizeCommentResult> {\n\tconst classifier = input.classifier ?? \"RESOLVED\";\n\tif (input.unhide === true && input.classifier !== undefined) throw new Error(\"minimize_comment: unhide takes no classifier\");\n\tif (!MINIMIZE_CLASSIFIERS.includes(classifier)) throw new Error(`minimize_comment: classifier must be one of ${MINIMIZE_CLASSIFIERS.join(\", \")}`);\n\tconst id = await nodeIdOf(octokit, input);\n\ttype Out = { isMinimized: boolean; minimizedReason: string | null };\n\tif (input.unhide === true) {\n\t\tconst data = await octokit.graphql<{ unminimizeComment?: { unminimizedComment?: Out } }>(UNMINIMIZE, { id });\n\t\tconst c = data.unminimizeComment?.unminimizedComment;\n\t\tif (!c) throw new Error(`minimize_comment: GitHub returned no comment for \"${id}\"`);\n\t\treturn { commentId: id, isMinimized: c.isMinimized, minimizedReason: c.minimizedReason ?? null };\n\t}\n\tconst data = await octokit.graphql<{ minimizeComment?: { minimizedComment?: Out } }>(MINIMIZE, { id, classifier });\n\tconst c = data.minimizeComment?.minimizedComment;\n\tif (!c) throw new Error(`minimize_comment: GitHub returned no comment for \"${id}\"`);\n\treturn { commentId: id, isMinimized: c.isMinimized, minimizedReason: c.minimizedReason ?? null };\n}\n\nexport const MINIMIZE_COMMENT_DESCRIPTION =\n\t'Hide a comment on an issue or PR (collapsed, like \"Hide \u2192 Resolved\" in GitHub), or show it again with unhide: true. Meant for folding away bot review comments once they\\'re addressed. Name the comment by node id (commentId, e.g. from pull_request_read get_review_comments), or by REST id (commentNumber) with type \"issue\" (issue or PR conversation comment) or \"review\" (PR review comment) and repo. Runs on the write PAT.';\n\nexport const MINIMIZE_COMMENT_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); selects the write credential\" },\n\t\trepo: { type: \"string\", description: \"repository name (needed with commentNumber)\" },\n\t\tcommentId: { type: \"string\", description: 'comment node id, e.g. \"IC_\u2026\" or \"PRRC_\u2026\"' },\n\t\tcommentNumber: { type: \"number\", description: \"REST comment id, used with type and repo when the node id isn't at hand\" },\n\t\ttype: { type: \"string\", enum: [\"issue\", \"review\"], description: \"with commentNumber: issue (issue or PR conversation comment) or review (PR review comment)\" },\n\t\tclassifier: { type: \"string\", enum: [...MINIMIZE_CLASSIFIERS], description: \"why it's hidden (default RESOLVED)\" },\n\t\tunhide: { type: \"boolean\", description: \"true shows a hidden comment again\" }\n\t}\n};\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/delete_branch.ts\n *\t@Date: 2026-11-02T19:55:53-08:00 (1793678153)\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-02T20:31:53-08:00 (1793680313)\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: delete_branch \u2014 delete one branch on GitHub. Gated by default (#146).\n *\n * Upstream can create a branch but not delete one, so this is `DELETE /git/refs/heads/{branch}`\n * on the write PAT (Contents: write). It refuses before deleting anything when the branch is:\n *\n * - the repo's default branch, or one of the staging-flow branches (next, hotfixes, dev) or the\n * bot branches (badges, gh-pages), which the release machinery depends on;\n * - the head or the base of an open PR in the same repo, or, for a fork, the head of an open PR\n * into its parent or the root of its fork network, since deleting it closes that PR.\n *\n * Rulesets still apply on top: GitHub refuses a protected branch whatever this verb allows.\n * The result carries the deleted tip's sha, so the branch can be recreated from it.\n */\n\n/** Branches the release flow depends on. Never deleted here, whatever the repo's default is. */\nexport const KEPT_BRANCHES: ReadonlySet<string> = new Set([\"master\", \"main\", \"next\", \"hotfixes\", \"dev\", \"badges\", \"gh-pages\"]);\n\nexport interface DeleteBranchInput {\n\towner: string;\n\trepo: string;\n\tbranch: string;\n}\n\nexport interface DeleteBranchResult {\n\tdeleted: string;\n\tsha: string;\n\trestore: string;\n}\n\nexport async function deleteBranch(octokit: Octokit, input: DeleteBranchInput): Promise<DeleteBranchResult> {\n\tconst { owner, repo } = input;\n\tif (typeof repo !== \"string\" || !repo) throw new Error(\"delete_branch: repo is required\");\n\tconst branch = typeof input.branch === \"string\" ? input.branch.replace(/^refs\\/heads\\//, \"\") : \"\";\n\tif (!branch) throw new Error(\"delete_branch: branch is required\");\n\tif (KEPT_BRANCHES.has(branch)) throw new Error(`delete_branch: refusing to delete \"${branch}\": the release flow depends on it`);\n\n\tconst meta = await octokit.request(\"GET /repos/{owner}/{repo}\", { owner, repo });\n\ttype RepoRef = { name?: string; owner?: { login?: string } };\n\tconst repoData = meta.data as { default_branch?: string; fork?: boolean; parent?: RepoRef; source?: RepoRef };\n\tconst defaultBranch = repoData.default_branch;\n\tif (branch === defaultBranch) throw new Error(`delete_branch: refusing to delete \"${branch}\": it is ${owner}/${repo}'s default branch`);\n\n\tconst lookups: Array<{ side: \"head\" | \"base\"; where: { owner: string; repo: string }; filter: Record<string, string> }> = [\n\t\t{ side: \"head\", where: { owner, repo }, filter: { head: `${owner}:${branch}` } },\n\t\t{ side: \"base\", where: { owner, repo }, filter: { base: branch } }\n\t];\n\t// A PR from this fork lives in the repo it targets: the parent, or the root of the fork network.\n\tconst upstreams = repoData.fork ? [repoData.parent, repoData.source] : [];\n\tconst seen = new Set<string>();\n\tfor (const up of upstreams) {\n\t\tif (!up?.owner?.login || !up.name || seen.has(`${up.owner.login}/${up.name}`)) continue;\n\t\tseen.add(`${up.owner.login}/${up.name}`);\n\t\tlookups.push({ side: \"head\", where: { owner: up.owner.login, repo: up.name }, filter: { head: `${owner}:${branch}` } });\n\t}\n\tfor (const { side, where, filter } of lookups) {\n\t\tconst open = await octokit.request(\"GET /repos/{owner}/{repo}/pulls\", { ...where, state: \"open\", ...filter, per_page: 10 });\n\t\tconst prs = open.data as Array<{ number: number }>;\n\t\tif (prs.length > 0) {\n\t\t\tconst ref = where.owner === owner && where.repo === repo ? \"\" : `${where.owner}/${where.repo}`;\n\t\t\tthrow new Error(`delete_branch: refusing to delete \"${branch}\": it is the ${side} of open PR ${prs.map((p) => `${ref}#${p.number}`).join(\", \")}, which deleting it would close`);\n\t\t}\n\t}\n\n\tconst missing = new Error(`delete_branch: no branch \"${branch}\" in ${owner}/${repo}`);\n\tlet ref: { data: unknown };\n\ttry {\n\t\tref = await octokit.request(\"GET /repos/{owner}/{repo}/git/ref/{ref}\", { owner, repo, ref: `heads/${branch}` });\n\t} catch (err) {\n\t\tthrow (err as { status?: number }).status === 404 ? missing : err;\n\t}\n\tconst sha = (ref.data as { object?: { sha?: string } }).object?.sha;\n\t// A tag or other object would carry no commit sha to restore from; don't delete what can't be put back.\n\tif (typeof sha !== \"string\") throw missing;\n\n\tawait octokit.request(\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\", { owner, repo, ref: `heads/${branch}` });\n\treturn { deleted: branch, sha, restore: `git push origin ${sha}:refs/heads/${branch}` };\n}\n\nexport const DELETE_BRANCH_DESCRIPTION =\n\t\"Delete one branch on GitHub. Refuses the repo's default branch, the release-flow branches (master, main, next, hotfixes, dev, badges, gh-pages), and any branch that is the head or base of an open PR, including a PR from a fork into its parent or the root of its fork network (deleting it would close the PR). Rulesets still apply. Returns the deleted tip's sha and the git command that restores it. Runs on the write PAT (Contents: write).\";\n\nexport const DELETE_BRANCH_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\", \"repo\", \"branch\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner: { type: \"string\", description: \"repository owner (org/user login); selects the write credential\" },\n\t\trepo: { type: \"string\", description: \"repository name\" },\n\t\tbranch: { type: \"string\", description: 'branch name, e.g. \"feat/otp-gate\" (a leading refs/heads/ is accepted)' }\n\t}\n};\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/verbs/dismiss_alert.ts\n *\t@Date: 2026-11-02T19:56:12-08:00 (1793678172)\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-02T20:12:06-08:00 (1793679126)\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: dismiss_alert \u2014 dismiss (or reopen) one code scanning, Dependabot or secret\n * scanning alert. Gated by default (#146). Upstream only reads alerts; these are the three REST\n * PATCH endpoints, on the write PAT (Code scanning alerts / Dependabot alerts / Secret scanning\n * alerts: write).\n *\n * Each kind has its own reason vocabulary, and a dismissal needs one. A secret scanning alert's\n * response carries the secret itself, so the answer is built from a fixed set of fields and the\n * secret never leaves this file.\n */\n\nexport const ALERT_KINDS = [\"code_scanning\", \"dependabot\", \"secret_scanning\"] as const;\nexport type AlertKind = (typeof ALERT_KINDS)[number];\n\n/** The reasons GitHub accepts, per kind, as the API spells them. */\nexport const DISMISS_REASONS: Record<AlertKind, readonly string[]> = {\n\tcode_scanning: [\"false positive\", \"won't fix\", \"used in tests\"],\n\tdependabot: [\"fix_started\", \"inaccurate\", \"no_bandwidth\", \"not_used\", \"tolerable_risk\"],\n\tsecret_scanning: [\"false_positive\", \"wont_fix\", \"revoked\", \"used_in_tests\"]\n};\n\nexport interface DismissAlertInput {\n\towner: string;\n\trepo: string;\n\tkind: AlertKind;\n\talertNumber: number;\n\t/** Required unless reopening; one of DISMISS_REASONS[kind]. */\n\treason?: string;\n\tcomment?: string;\n\t/** true reopens a dismissed (or resolved) alert instead. */\n\treopen?: boolean;\n}\n\nexport interface DismissAlertResult {\n\tkind: AlertKind;\n\tnumber: number;\n\tstate: string;\n\treason: string | null;\n\turl: string | null;\n}\n\nconst ROUTES: Record<AlertKind, string> = {\n\tcode_scanning: \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n\tdependabot: \"PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\",\n\tsecret_scanning: \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n};\n\n/** The request body for one kind. Secret scanning says resolved/resolution where the others say dismissed. */\nfunction bodyFor(kind: AlertKind, reopen: boolean, reason: string | undefined, comment: string | undefined): Record<string, unknown> {\n\tif (kind === \"secret_scanning\") {\n\t\tif (reopen) return { state: \"open\", ...(comment ? { resolution_comment: comment } : {}) };\n\t\treturn { state: \"resolved\", resolution: reason, ...(comment ? { resolution_comment: comment } : {}) };\n\t}\n\tif (reopen) return { state: \"open\" };\n\treturn { state: \"dismissed\", dismissed_reason: reason, ...(comment ? { dismissed_comment: comment } : {}) };\n}\n\nexport async function dismissAlert(octokit: Octokit, input: DismissAlertInput): Promise<DismissAlertResult> {\n\tconst { owner, repo, kind } = input;\n\tif (typeof repo !== \"string\" || !repo) throw new Error(\"dismiss_alert: repo is required\");\n\tif (!ALERT_KINDS.includes(kind)) throw new Error(`dismiss_alert: kind must be one of ${ALERT_KINDS.join(\", \")}`);\n\tif (!Number.isSafeInteger(input.alertNumber) || input.alertNumber <= 0) throw new Error(\"dismiss_alert: alertNumber must be a positive integer\");\n\tif (input.comment !== undefined && typeof input.comment !== \"string\") throw new Error(\"dismiss_alert: comment must be a string\");\n\tconst reopen = input.reopen === true;\n\tif (reopen && input.reason !== undefined) throw new Error(\"dismiss_alert: a reopen takes no reason\");\n\tif (reopen && input.comment !== undefined && kind !== \"secret_scanning\") throw new Error(`dismiss_alert: GitHub stores no comment when a ${kind} alert is reopened; leave comment out`);\n\tif (!reopen && !DISMISS_REASONS[kind].includes(input.reason as string)) {\n\t\tthrow new Error(`dismiss_alert: reason is required for a ${kind} alert, one of: ${DISMISS_REASONS[kind].map((r) => `\"${r}\"`).join(\", \")}`);\n\t}\n\n\tconst res = await octokit.request(ROUTES[kind], { owner, repo, alert_number: input.alertNumber, ...bodyFor(kind, reopen, input.reason, input.comment) });\n\t// Only these fields leave: a secret scanning alert also carries the secret.\n\tconst d = res.data as { number?: unknown; state?: unknown; dismissed_reason?: unknown; resolution?: unknown; html_url?: unknown };\n\tconst reason = kind === \"secret_scanning\" ? d.resolution : d.dismissed_reason;\n\treturn {\n\t\tkind,\n\t\tnumber: typeof d.number === \"number\" ? d.number : input.alertNumber,\n\t\tstate: typeof d.state === \"string\" ? d.state : \"unknown\",\n\t\treason: typeof reason === \"string\" ? reason : null,\n\t\turl: typeof d.html_url === \"string\" ? d.html_url : null\n\t};\n}\n\nexport const DISMISS_ALERT_DESCRIPTION = `Dismiss one code scanning, Dependabot or secret scanning alert, or reopen it with reopen: true. A dismissal needs a reason, which depends on kind: code_scanning ${DISMISS_REASONS.code_scanning.map((r) => `\"${r}\"`).join(\" / \")}; dependabot ${DISMISS_REASONS.dependabot.join(\" / \")}; secret_scanning ${DISMISS_REASONS.secret_scanning.join(\" / \")}. Returns the alert's number, state, reason and URL only; a secret's value is never returned. Runs on the write PAT.`;\n\nexport const DISMISS_ALERT_SCHEMA = {\n\ttype: \"object\" as const,\n\trequired: [\"owner\", \"repo\", \"kind\", \"alertNumber\"],\n\tadditionalProperties: false,\n\tproperties: {\n\t\towner: { type: \"string\", description: \"repository owner (org/user login); selects the write credential\" },\n\t\trepo: { type: \"string\", description: \"repository name\" },\n\t\tkind: { type: \"string\", enum: [...ALERT_KINDS], description: \"which alert type\" },\n\t\talertNumber: { type: \"number\", description: \"the alert number\" },\n\t\treason: { type: \"string\", description: \"why it's dismissed; the accepted values depend on kind (see the description)\" },\n\t\tcomment: { type: \"string\", description: \"optional note stored with the dismissal\" },\n\t\treopen: { type: \"boolean\", description: \"true reopens the alert instead of dismissing it (no reason)\" }\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/otp/gate.ts\n *\t@Date: 2026-11-01T20:43:25-08:00 (1793594605)\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-02T21:27:13-08:00 (1793683633)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * The OTP gate (#143). A gated call carries a TOTP code from the user's authenticator in\n * `otp`. The first valid, unused code opens a window: for `windowSeconds` (fixed, no\n * renewal) every gated tool runs when it carries that same code. Several windows can be\n * open at once, one per code. Windows live in memory only, so a restart closes them; the\n * last accepted TOTP step is persisted, so a code from before the restart can't reopen one.\n *\n * Every call comes from a known agent user (each has its own socket, see server.ts), so\n * windows and counters are per user: a window only serves the user who opened it, even for the\n * same code. The last accepted step stays global, since there is one seed: once any user has\n * spent a code, nobody can open a window with it.\n *\n * Guessing: `maxFailures` bad codes start a short lockout of `lockoutSeconds` for that user;\n * `maxLockouts` short lockouts in a rolling 24 h set a hard lock that blocks every tool except\n * otp_status for that user until root runs `gh-broker otp unlock <user>`.\n *\n * Nothing here ever logs or returns a code, the seed, or anything derived from them except\n * the window id: an HMAC of the code under a per-process random key, which correlates audit\n * lines within one run and means nothing outside it.\n */\n\nimport { createHmac, randomBytes } from \"node:crypto\";\nimport { audit } from \"../audit.ts\";\nimport { hostname } from \"node:os\";\nimport type { Config, SecretStore } from \"../types.ts\";\nimport { OTP_ARG, isGated, otpSettings, readSeed, type OtpSettings } from \"./policy.ts\";\nimport { isEnabled } from \"../availability.ts\";\nimport { OtpStateFile, emptyUser, userState, type HardLock, type OtpState, type UserState } from \"./state.ts\";\nimport { matchStep, safeEqual } from \"./totp.ts\";\n\nexport type OtpOutcome = \"window\" | \"opened\" | \"refused\" | \"locked\" | \"hard-locked\";\n\n/** The audit fields a gated (or hard-locked) call adds to its log line. */\nexport interface OtpAudit {\n\totp: OtpOutcome;\n\twindow?: string;\n\t/** When the window closes, on \"opened\". */\n\tuntil?: string;\n}\n\n/** A call the gate refused. Its message is safe to return to the agent. */\nexport class OtpRefusal extends Error {\n\treadonly audit: OtpAudit;\n\tconstructor(message: string, audit: OtpAudit) {\n\t\tsuper(message);\n\t\tthis.name = \"OtpRefusal\";\n\t\tthis.audit = audit;\n\t}\n}\n\nexport const UNLOCK_COMMAND = \"sudo gh-broker otp unlock\";\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\n\nexport interface OtpGateOptions {\n\t/** Clock, in ms. Defaults to Date.now. */\n\tnow?: () => number;\n\t/** Host name used in messages and otp_status. Defaults to os.hostname(). */\n\thost?: string;\n}\n\ninterface OpenWindow {\n\tuser: string;\n\tcode: string;\n\texpiresAt: number;\n\tid: string;\n}\n\n/** The root command that clears `user`'s counters and locks. */\n/** What clears a corrupt state file (a single-user unlock refuses one). */\nexport const UNLOCK_ALL_COMMAND = \"sudo gh-broker otp unlock --all\";\n\nexport function unlockCommand(user: string): string {\n\treturn `${UNLOCK_COMMAND} ${user}`;\n}\n\nexport class OtpGate {\n\tprivate readonly config: Config;\n\tprivate readonly secrets: SecretStore;\n\tprivate readonly settings: OtpSettings;\n\tprivate readonly now: () => number;\n\tprivate readonly host: string;\n\tprivate readonly state: OtpStateFile;\n\t/** Per-process key for window ids. */\n\tprivate readonly idKey = randomBytes(32);\n\tprivate windows: OpenWindow[] = [];\n\t/** Users whose latest bad-code count is only in memory because the state file couldn't be written. */\n\tprivate readonly unsaved = new Set<string>();\n\n\tconstructor(config: Config, secrets: SecretStore, options: OtpGateOptions = {}) {\n\t\tthis.config = config;\n\t\tthis.secrets = secrets;\n\t\tthis.settings = otpSettings(config);\n\t\tthis.now = options.now ?? Date.now;\n\t\tthis.host = options.host ?? hostname();\n\t\tthis.state = new OtpStateFile(this.settings.statePath, this.now);\n\t}\n\n\t/** Whether the gate runs at all. Without config.otp no state file is ever touched. */\n\tget enabled(): boolean {\n\t\treturn this.config.otp !== undefined;\n\t}\n\n\t/**\n\t * The hard-lock refusal for `user`, if that user is hard-locked (or the state file is\n\t * unusable, which locks everyone). The router checks this on every call except otp_status.\n\t */\n\thardLockRefusal(user: string): OtpRefusal | undefined {\n\t\tif (!this.enabled) return undefined;\n\t\tconst read = this.state.read();\n\t\tif (!read.ok) {\n\t\t\t// An unusable state file locks everyone, and only `unlock --all` rewrites it.\n\t\t\treturn new OtpRefusal(\n\t\t\t\t`gh-broker is locked for every agent: its OTP state file is unreadable or corrupt (since ${read.since}). Ask the user to run \"${UNLOCK_ALL_COMMAND}\" on ${this.host}. Nothing was run.`,\n\t\t\t\t{ otp: \"hard-locked\" }\n\t\t\t);\n\t\t}\n\t\tconst since = userState(read.state, user).hardLock?.since;\n\t\tif (since === undefined) return undefined;\n\t\treturn new OtpRefusal(\n\t\t\t`gh-broker is locked for ${user} after repeated bad OTP codes (since ${since}). Ask the user to run \"${unlockCommand(user)}\" on ${this.host}. Nothing was run.`,\n\t\t\t{ otp: \"hard-locked\" }\n\t\t);\n\t}\n\n\t/**\n\t * Decide `user`'s call to the gated tool `tool` carrying `code` (the raw `otp` argument).\n\t * Returns the audit fields when the call may run; throws OtpRefusal when it may not.\n\t * Only call this after hardLockRefusal() and the availability check passed (OTP is set up).\n\t */\n\tauthorize(tool: string, code: unknown, user: string): OtpAudit {\n\t\tconst now = this.now();\n\t\tconst read = this.state.read();\n\t\t// hardLockRefusal() ran first, so this is normally clear; re-check anyway (authorize is\n\t\t// public) and fail closed.\n\t\tif (!read.ok || userState(read.state, user).hardLock) throw this.hardLockRefusal(user)!;\n\t\tconst state = read.state;\n\t\tconst mine = userState(state, user);\n\n\t\tconst lockedUntil = mine.lockedUntil ? Date.parse(mine.lockedUntil) : 0;\n\t\tif (lockedUntil > now) {\n\t\t\tconst minutes = Math.max(1, Math.ceil((lockedUntil - now) / 60000));\n\t\t\tthrow new OtpRefusal(`OTP is locked for ${minutes} more minute(s) after too many bad codes. Nothing was run.`, { otp: \"locked\" });\n\t\t}\n\n\t\tconst unsavedRefusal = (): OtpRefusal => new OtpRefusal(`OTP could not be checked: the broker could not save its OTP state. Nothing was run.`, { otp: \"refused\" });\n\t\t// A bad code this user sent couldn't be saved (disk full, say): check nothing more for them\n\t\t// until the counters are on disk, so a restart can't hand out a fresh guess budget.\n\t\tif (this.unsaved.has(user)) {\n\t\t\ttry {\n\t\t\t\tthis.state.write(this.compact(state, now));\n\t\t\t\tthis.unsaved.delete(user);\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(`gh-broker: ${(err as Error).message}`);\n\t\t\t\tthrow unsavedRefusal();\n\t\t\t}\n\t\t}\n\n\t\tconst refusal = (): OtpRefusal =>\n\t\t\tnew OtpRefusal(`OTP required for ${tool}: ask the user for a current code from their authenticator app and pass it as \"${OTP_ARG}\". Nothing was run.`, { otp: \"refused\" });\n\n\t\tif (code === undefined || code === null || code === \"\") throw refusal(); // a missing code is not a failure\n\t\t// A client that sends the code as a JSON number (and so drops a leading zero) gets it back\n\t\t// as six digits. Any other non-string is a malformed call, refused without counting.\n\t\tif (typeof code === \"number\" && Number.isInteger(code) && code >= 0 && code <= 999999) code = String(code).padStart(6, \"0\");\n\t\tif (typeof code !== \"string\") throw refusal();\n\n\t\tthis.windows = this.windows.filter((w) => w.expiresAt > now);\n\t\tlet hit: OpenWindow | undefined;\n\t\t// Only this user's windows: a code another agent opened a window with is no use here.\n\t\tfor (const w of this.windows) if (w.user === user && safeEqual(w.code, code)) hit = w; // no early exit\n\t\tif (hit) return { otp: \"window\", window: hit.id };\n\n\t\tconst step = matchStep((readSeed(this.config, this.secrets) as { key: Buffer }).key, code, now);\n\t\tif (step !== undefined && step > state.lastAcceptedStep) {\n\t\t\t// Persist the step before anything runs: if it can't be saved, a restart could let\n\t\t\t// this code open a second window, so refuse instead.\n\t\t\ttry {\n\t\t\t\tthis.state.write(this.compact({ ...state, lastAcceptedStep: step, users: { ...state.users, [user]: { ...mine, failures: 0 } } }, now));\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(`gh-broker: ${(err as Error).message}`);\n\t\t\t\tthrow unsavedRefusal();\n\t\t\t}\n\t\t\tconst id = createHmac(\"sha256\", this.idKey).update(`${user}\\0${code}`).digest(\"hex\").slice(0, 16);\n\t\t\tconst expiresAt = now + this.settings.windowSeconds * 1000;\n\t\t\tthis.windows.push({ user, code, expiresAt, id });\n\t\t\treturn { otp: \"opened\", window: id, until: new Date(expiresAt).toISOString() };\n\t\t}\n\n\t\t// A real code whose step is already spent (reused, or spent by an unlock) is refused but isn't\n\t\t// a guess, so it doesn't count toward a lockout.\n\t\tif (step !== undefined) throw refusal();\n\t\tthis.recordFailure(tool, state, mine, user, now);\n\t\tthrow refusal();\n\t}\n\n\t/** Count one bad code for `user`, starting a short lockout (and maybe the hard lock) at the limit. */\n\tprivate recordFailure(tool: string, state: OtpState, mine: UserState, user: string, now: number): void {\n\t\tconst next = { ...mine, lockouts: mine.lockouts.filter((t) => Date.parse(t) > now - DAY_MS) };\n\t\tnext.failures += 1;\n\t\tif (next.failures >= this.settings.maxFailures) {\n\t\t\tconst at = new Date(now).toISOString();\n\t\t\tnext.failures = 0;\n\t\t\tnext.lockedUntil = new Date(now + this.settings.lockoutSeconds * 1000).toISOString();\n\t\t\tnext.lockouts.push(at);\n\t\t\tif (next.lockouts.length >= this.settings.maxLockouts) next.hardLock = { since: at, lockouts: next.lockouts.length };\n\t\t\taudit(\n\t\t\t\tnext.hardLock\n\t\t\t\t\t? { tool, user, decision: \"deny\", otp: \"hard-lock\", detail: `${next.lockouts.length} lockouts in 24 h; every tool except otp_status is refused until \"${unlockCommand(user)}\"` }\n\t\t\t\t\t: { tool, user, decision: \"deny\", otp: \"lockout\", until: next.lockedUntil, detail: `${this.settings.maxFailures} bad codes` }\n\t\t\t);\n\t\t}\n\t\ttry {\n\t\t\tthis.state.write(this.compact({ ...state, users: { ...state.users, [user]: next } }, now));\n\t\t} catch (err) {\n\t\t\t// The counters still advance in memory and the refusal stands; authorize() refuses this\n\t\t\t// user's gated calls until they can be saved.\n\t\t\tthis.unsaved.add(user);\n\t\t\tconsole.error(`gh-broker: ${(err as Error).message}`);\n\t\t}\n\t}\n\n\t/**\n\t * `state` tidied for a write: every user's lockouts pruned to the last 24 h, expired short\n\t * lockouts cleared, and users left with nothing to record dropped.\n\t */\n\tprivate compact(state: OtpState, now: number): OtpState {\n\t\tconst users: Record<string, UserState> = {};\n\t\tfor (const [name, u] of Object.entries(state.users)) {\n\t\t\tconst lockouts = u.lockouts.filter((t) => Date.parse(t) > now - DAY_MS);\n\t\t\tconst lockedUntil = u.lockedUntil && Date.parse(u.lockedUntil) > now ? u.lockedUntil : null;\n\t\t\tif (u.failures === 0 && lockedUntil === null && lockouts.length === 0 && u.hardLock === null) continue;\n\t\t\tusers[name] = { failures: u.failures, lockedUntil, lockouts, hardLock: u.hardLock };\n\t\t}\n\t\treturn { ...state, users };\n\t}\n\n\t/**\n\t * The otp_status report for `user`: their own windows and counters, plus every hard-locked\n\t * user. Never a code, the seed, or anything derived from them.\n\t */\n\tstatus(user: string): Record<string, unknown> {\n\t\tconst now = this.now();\n\t\t// A disabled tool can't be called at all, so it isn't listed as needing a code.\n\t\tconst gatedTools = this.config.tools.filter((t) => isGated(t) && isEnabled(t)).map((t) => t.name);\n\t\tlet mine = emptyUser();\n\t\tlet hardLock: HardLock | null = null;\n\t\tlet lockedUsers: Array<{ user: string; since: string; lockouts: number; unlockCommand: string }> = [];\n\t\tlet corrupt = false;\n\t\tif (this.enabled) {\n\t\t\tconst read = this.state.read();\n\t\t\tif (read.ok) {\n\t\t\t\tmine = userState(read.state, user);\n\t\t\t\thardLock = mine.hardLock;\n\t\t\t\tlockedUsers = Object.entries(read.state.users)\n\t\t\t\t\t.filter(([, u]) => u.hardLock)\n\t\t\t\t\t.map(([name, u]) => ({ user: name, since: u.hardLock!.since, lockouts: u.hardLock!.lockouts, unlockCommand: unlockCommand(name) }));\n\t\t\t} else {\n\t\t\t\t// An unusable file locks every user; the caller is the one we can name.\n\t\t\t\thardLock = { since: read.since, lockouts: 0 };\n\t\t\t\tcorrupt = true;\n\t\t\t\tlockedUsers = [{ user, since: read.since, lockouts: 0, unlockCommand: UNLOCK_ALL_COMMAND }];\n\t\t\t}\n\t\t}\n\t\tconst open = this.windows.filter((w) => w.user === user && w.expiresAt > now);\n\t\tconst next = open.length ? Math.min(...open.map((w) => w.expiresAt)) : undefined;\n\t\tconst lockedUntil = mine.lockedUntil && Date.parse(mine.lockedUntil) > now ? mine.lockedUntil : null;\n\t\treturn {\n\t\t\tconfigured: !(\"problem\" in readSeed(this.config, this.secrets)),\n\t\t\tuser,\n\t\t\tgatedTools,\n\t\t\twindowSeconds: this.settings.windowSeconds,\n\t\t\topenWindows: open.length,\n\t\t\tnextWindowExpiresAt: next === undefined ? null : new Date(next).toISOString(),\n\t\t\tfailures: mine.failures,\n\t\t\tmaxFailures: this.settings.maxFailures,\n\t\t\tlockedUntil,\n\t\t\tlockoutsLast24h: mine.lockouts.filter((t) => Date.parse(t) > now - DAY_MS).length,\n\t\t\tmaxLockouts: this.settings.maxLockouts,\n\t\t\thardLock,\n\t\t\tunlockCommand: corrupt ? UNLOCK_ALL_COMMAND : unlockCommand(user),\n\t\t\tlockedUsers,\n\t\t\thost: this.host\n\t\t};\n\t}\n}\n\n/** Window length for tool descriptions, e.g. \"5 minutes\" or \"90 seconds\". */\nexport function windowText(seconds: number): string {\n\tif (seconds % 60 === 0) return `${seconds / 60} minute${seconds === 60 ? \"\" : \"s\"}`;\n\treturn `${seconds} seconds`;\n}\n", "/**\n *\n *\t@Project: @cldmv/gh-broker\n *\t@Filename: /src/otp/state.ts\n *\t@Date: 2026-11-01T20:43:25-08:00 (1793594605)\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-01T20:43:25-08:00 (1793594605)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * The OTP gate's persistent state: the last accepted TOTP step (global: there is one seed,\n * so a code is spent for everyone once used) and, per agent user, the bad-code counter and\n * the lockouts. The daemon writes it; the root CLI (`gh-broker otp unlock <user>`) edits it.\n *\n * - Written atomically: a temp file in the same directory (mode 0600), fsync, rename.\n * - Re-read whenever the file's inode, mtime or size changed since the last read (one\n * stat per call), so the CLI's edits apply on the next call without a restart.\n * - A missing file is the all-zero state, and a user with no entry is all zero/null. A file\n * that can't be read or parsed, or that doesn't have the expected shape, fails closed: it\n * reads as corrupt, which the gate treats as a hard lock for every user, so tampering with\n * the file can never unlock anything.\n */\n\nimport { closeSync, fstatSync, fsyncSync, openSync, readFileSync, renameSync, statSync, unlinkSync, writeSync } from \"node:fs\";\nimport { randomBytes } from \"node:crypto\";\nimport { dirname } from \"node:path\";\nimport { isAgentUser } from \"../agents.ts\";\n\nexport interface HardLock {\n\tsince: string;\n\tlockouts: number;\n}\n\n/** One agent user's counters. */\nexport interface UserState {\n\t/** Bad codes since the user's last accepted code or last short lockout. */\n\tfailures: number;\n\t/** ISO end of the current short lockout, or null. */\n\tlockedUntil: string | null;\n\t/** ISO start times of short lockouts, pruned to the last 24 h on every write. */\n\tlockouts: string[];\n\thardLock: HardLock | null;\n}\n\nexport interface OtpState {\n\tversion: 1;\n\t/** Highest TOTP step that opened a window; a code at or below it can't open another. */\n\tlastAcceptedStep: number;\n\tusers: Record<string, UserState>;\n}\n\n/** What a read returns: the state, or a marker that the file is unusable. */\nexport type StateRead = { ok: true; state: OtpState } | { ok: false; since: string };\n\nexport function emptyState(): OtpState {\n\treturn { version: 1, lastAcceptedStep: 0, users: {} };\n}\n\nexport function emptyUser(): UserState {\n\treturn { failures: 0, lockedUntil: null, lockouts: [], hardLock: null };\n}\n\n/** `user`'s counters (a fresh copy), all zero/null when the user has no entry. */\nexport function userState(state: OtpState, user: string): UserState {\n\tconst u = Object.hasOwn(state.users, user) ? state.users[user]! : emptyUser();\n\treturn { ...u, lockouts: [...u.lockouts] };\n}\n\nconst isIso = (v: unknown): v is string => typeof v === \"string\" && !Number.isNaN(Date.parse(v));\nconst isCount = (v: unknown): v is number => typeof v === \"number\" && Number.isSafeInteger(v) && v >= 0;\nconst isObject = (v: unknown): v is Record<string, unknown> => typeof v === \"object\" && v !== null && !Array.isArray(v);\n\nfunction parseUser(raw: unknown): UserState | undefined {\n\tif (!isObject(raw) || !isCount(raw.failures)) return undefined;\n\tif (raw.lockedUntil !== null && !isIso(raw.lockedUntil)) return undefined;\n\tif (!Array.isArray(raw.lockouts) || !raw.lockouts.every(isIso)) return undefined;\n\tlet hardLock: HardLock | null = null;\n\tif (raw.hardLock !== null) {\n\t\tconst h = raw.hardLock;\n\t\tif (!isObject(h) || !isIso(h.since) || !isCount(h.lockouts)) return undefined;\n\t\thardLock = { since: h.since, lockouts: h.lockouts };\n\t}\n\treturn { failures: raw.failures, lockedUntil: raw.lockedUntil, lockouts: [...raw.lockouts], hardLock };\n}\n\n/**\n * Validate a parsed state file. Unknown extra keys are ignored; a malformed user entry, or a key\n * that isn't a valid agent user name (see isAgentUser), rejects the file.\n */\nexport function parseState(raw: unknown): OtpState | undefined {\n\tif (!isObject(raw) || raw.version !== 1 || !isCount(raw.lastAcceptedStep) || !isObject(raw.users)) return undefined;\n\tconst users: Record<string, UserState> = {};\n\tfor (const [name, entry] of Object.entries(raw.users)) {\n\t\tconst u = parseUser(entry);\n\t\tif (!u || !isAgentUser(name)) return undefined;\n\t\tusers[name] = u;\n\t}\n\treturn { version: 1, lastAcceptedStep: raw.lastAcceptedStep, users };\n}\n\n/** Identity of one version of the file on disk; any change means re-read. */\nfunction signature(path: string): string {\n\ttry {\n\t\tconst st = statSync(path);\n\t\treturn `${st.ino}:${st.mtimeMs}:${st.size}`;\n\t} catch (err) {\n\t\tif ((err as NodeJS.ErrnoException).code === \"ENOENT\") return \"missing\";\n\t\treturn `error:${(err as NodeJS.ErrnoException).code}`;\n\t}\n}\n\nexport class OtpStateFile {\n\treadonly path: string;\n\tprivate readonly now: () => number;\n\tprivate sig: string | undefined;\n\tprivate cached: StateRead | undefined;\n\n\tconstructor(path: string, now: () => number = Date.now) {\n\t\tthis.path = path;\n\t\tthis.now = now;\n\t}\n\n\t/** The current state, re-read from disk only when the file changed. */\n\tread(): StateRead {\n\t\tconst sig = signature(this.path);\n\t\tif (this.cached && sig === this.sig) return this.cached;\n\t\tthis.sig = sig;\n\t\tthis.cached = this.load(sig);\n\t\treturn this.cached;\n\t}\n\n\tprivate load(sig: string): StateRead {\n\t\tif (sig === \"missing\") return { ok: true, state: emptyState() };\n\t\tlet state: OtpState | undefined;\n\t\tlet why = \"unexpected shape\";\n\t\ttry {\n\t\t\tstate = parseState(JSON.parse(readFileSync(this.path, \"utf8\")));\n\t\t} catch (err) {\n\t\t\twhy = (err as Error).message;\n\t\t}\n\t\tif (state) return { ok: true, state };\n\t\tconst since = new Date(this.now()).toISOString();\n\t\tconsole.error(`gh-broker: OTP state file ${this.path} is unreadable or corrupt (${why}); failing closed: every tool except otp_status is locked for every user until \"gh-broker otp unlock\" rewrites it`);\n\t\treturn { ok: false, since };\n\t}\n\n\t/**\n\t * Persist `state` atomically. On success the cache holds the new state; on failure the\n\t * cache still holds it (so in-process counters keep counting) and the error is thrown,\n\t * so the caller can refuse anything that depends on the write having landed.\n\t */\n\twrite(state: OtpState): void {\n\t\tthis.cached = { ok: true, state };\n\t\tconst tmp = `${this.path}.tmp-${process.pid}-${randomBytes(6).toString(\"hex\")}`;\n\t\tlet written: string;\n\t\ttry {\n\t\t\tconst fd = openSync(tmp, \"wx\", 0o600);\n\t\t\ttry {\n\t\t\t\twriteSync(fd, `${JSON.stringify(state, null, \"\\t\")}\\n`);\n\t\t\t\tfsyncSync(fd);\n\t\t\t\t// The signature of this file, taken now: the rename keeps its inode and mtime. Taking it\n\t\t\t\t// after the rename could pick up a CLI write that landed in between and treat it as ours.\n\t\t\t\tconst st = fstatSync(fd);\n\t\t\t\twritten = `${st.ino}:${st.mtimeMs}:${st.size}`;\n\t\t\t} finally {\n\t\t\t\tcloseSync(fd);\n\t\t\t}\n\t\t\trenameSync(tmp, this.path);\n\t\t} catch (err) {\n\t\t\ttry {\n\t\t\t\tunlinkSync(tmp);\n\t\t\t} catch {\n\t\t\t\t/* the temp file was never created */\n\t\t\t}\n\t\t\tthis.sig = signature(this.path); // keep serving the in-memory state while the file is unchanged\n\t\t\tthrow new Error(`OTP state could not be saved to ${this.path}: ${(err as Error).message}`);\n\t\t}\n\t\tthis.sig = written;\n\t\tsyncDir(dirname(this.path));\n\t}\n}\n\n/** fsync the directory so the rename itself is durable. */\nfunction syncDir(dir: string): void {\n\ttry {\n\t\tconst fd = openSync(dir, \"r\");\n\t\ttry {\n\t\t\tfsyncSync(fd);\n\t\t} finally {\n\t\t\tcloseSync(fd);\n\t\t}\n\t} catch {\n\t\t/* best-effort: the file itself is already synced and renamed into place */\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-11-02T20:20:16-08:00 (1793679616)\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 { Caller, 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 { reportDependents, type ReportDependentsInput } from \"./verbs/report_dependents.ts\";\nimport { reportSecurityAlerts, type ReportSecurityAlertsInput } from \"./verbs/report_security_alerts.ts\";\nimport { reportReleasePrs, type ReportReleasePrsInput } from \"./verbs/report_release_prs.ts\";\nimport { reportReleaseChanges, type ReportReleaseChangesInput } from \"./verbs/report_release_changes.ts\";\nimport { reportAlertStatus, type ReportAlertStatusInput } from \"./verbs/report_alert_status.ts\";\nimport { issueLabels, type IssueLabelsInput } from \"./verbs/issue_labels.ts\";\nimport { reportCiStatus, ciStatusForHeadSha, ciStatusForHeads, type ReportCiStatusInput, type FailedJobLogsFetcher } from \"./verbs/report_ci_status.ts\";\nimport { npmScaffold } from \"./verbs/npm_scaffold.ts\";\nimport { minimizeComment, type MinimizeCommentInput } from \"./verbs/minimize_comment.ts\";\nimport { deleteBranch, type DeleteBranchInput } from \"./verbs/delete_branch.ts\";\nimport { dismissAlert, type DismissAlertInput } from \"./verbs/dismiss_alert.ts\";\nimport { NpmRegistry } from \"./verbs/npm-registry.ts\";\nimport { GhcrService } from \"./verbs/ghcr_push.ts\";\nimport { OtpGate, type OtpAudit, type OtpRefusal } from \"./otp/gate.ts\";\nimport { OTP_ARG, OTP_STATUS, isGated } from \"./otp/policy.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\t/** The OTP gate (#143). Inert without config.otp. */\n\tprivate readonly otp: OtpGate;\n\n\tconstructor(config: Config, secrets: SecretStore, upstream: Upstream, appAuth?: AppAuth, otp?: OtpGate) {\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\tthis.otp = otp ?? new OtpGate(config, secrets);\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\t/** Run `tool` for `caller`, the agent user whose socket the call came in on. */\n\tasync call(tool: string, rawArgs: Record<string, unknown>, caller: Caller): Promise<CallToolResult> {\n\t\tconst user = caller.user;\n\t\tconst rule = this.rules.get(tool);\n\t\tif (!rule) {\n\t\t\taudit({ tool, user, decision: \"deny\", detail: \"not in allowlist\" });\n\t\t\tthrow new Error(`tool \"${tool}\" is not allowed`);\n\t\t}\n\t\t// The caller's OTP hard lock blocks every tool except otp_status, before anything else is looked at.\n\t\tif (tool !== OTP_STATUS) {\n\t\t\tconst locked = this.otp.hardLockRefusal(user);\n\t\t\tif (locked) {\n\t\t\t\taudit({ tool, user, decision: \"deny\", detail: \"otp hard lock\", ...locked.audit });\n\t\t\t\tthrow locked;\n\t\t\t}\n\t\t}\n\t\t// `otp` is the broker's own gate argument: it never reaches the upstream or a verb.\n\t\tlet args = rawArgs;\n\t\tlet code: unknown;\n\t\tif (Object.hasOwn(rawArgs, OTP_ARG)) {\n\t\t\tconst { [OTP_ARG]: given, ...rest } = rawArgs;\n\t\t\tcode = given;\n\t\t\targs = rest;\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, user, 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// otp_status needs no owner and no PAT.\n\t\tif (tool === OTP_STATUS) {\n\t\t\taudit({ tool, user, mode: rule.mode, decision: \"custom\", ok: true });\n\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(this.otp.status(user)) }] };\n\t\t}\n\t\t// Checked before the gate, so a call that can't run never asks for a code.\n\t\tlet createdIn: string | undefined;\n\t\tif (REPO_CREATING.has(tool) || tool === \"actions_run_trigger\") {\n\t\t\ttry {\n\t\t\t\tif (tool === \"actions_run_trigger\") refuseLogDeletion(args);\n\t\t\t\telse createdIn = creationOwner(tool, args, this.config.owners);\n\t\t\t} catch (err) {\n\t\t\t\tconst requested = typeof args.organization === \"string\" ? args.organization : extractOwner(args);\n\t\t\t\taudit({ tool, user, mode: rule.mode, ...(requested ? { owner: requested.toLowerCase() } : {}), decision: \"error\", detail: (err as Error).message });\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\tlet otp: OtpAudit | undefined;\n\t\tif (isGated(rule)) {\n\t\t\ttry {\n\t\t\t\totp = this.otp.authorize(tool, code, user);\n\t\t\t} catch (err) {\n\t\t\t\taudit({ tool, user, decision: \"deny\", detail: \"otp\", ...(err as OtpRefusal).audit });\n\t\t\t\tthrow err;\n\t\t\t}\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, user, otp);\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 = createdIn ?? 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, user, 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, user, 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 repoName = tool === \"create_repository\" ? args.name : args.repo;\n\t\tconst repo = typeof repoName === \"string\" ? `${owner}/${repoName}` : owner;\n\t\t// A fork's audit line also names what was forked; owner/repo above are the new copy.\n\t\tconst forked = tool === \"fork_repository\" ? { source: `${String(args.owner)}/${String(args.repo)}` } : {};\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, user, owner, mode: rule.mode, repo, ...forked, decision, ok: true, ...otp });\n\t\t\treturn out;\n\t\t} catch (err) {\n\t\t\taudit({ tool, user, owner, mode: rule.mode, repo, ...forked, decision, ok: false, detail: (err as Error).message, ...otp });\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, user: string, otp: OtpAudit | undefined): 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, user, owner, mode: rule.mode, repo, decision: \"custom\", ok: true, ...otp });\n\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(out) }] };\n\t\t} catch (err) {\n\t\t\taudit({ tool, user, owner, mode: rule.mode, repo, decision: \"custom\", ok: false, detail: (err as Error).message, ...otp });\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_dependents\": {\n\t\t\t\tconst octokit = new Octokit({ auth: token });\n\t\t\t\tconst out = await reportDependents(octokit, args as unknown as ReportDependentsInput, this.config.npm?.registry ? { registry: this.config.npm.registry } : {});\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_release_changes\": {\n\t\t\t\tconst octokit = new Octokit({ auth: token });\n\t\t\t\tconst out = await reportReleaseChanges(octokit, args as unknown as ReportReleaseChangesInput);\n\t\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(out) }] };\n\t\t\t}\n\t\t\tcase \"report_alert_status\": {\n\t\t\t\tconst octokit = new Octokit({ auth: token });\n\t\t\t\tconst out = await reportAlertStatus(octokit, args as unknown as ReportAlertStatusInput);\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\tcase \"minimize_comment\": {\n\t\t\t\tconst out = await minimizeComment(new Octokit({ auth: token }), args as unknown as MinimizeCommentInput);\n\t\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(out) }] };\n\t\t\t}\n\t\t\tcase \"delete_branch\": {\n\t\t\t\tconst out = await deleteBranch(new Octokit({ auth: token }), args as unknown as DeleteBranchInput);\n\t\t\t\treturn { content: [{ type: \"text\", text: JSON.stringify(out) }] };\n\t\t\t}\n\t\t\tcase \"dismiss_alert\": {\n\t\t\t\tconst out = await dismissAlert(new Octokit({ auth: token }), args as unknown as DismissAlertInput);\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\tcase \"list_pull_requests\": {\n\t\t\t\t// Same opt-in contract as pull_request_read, applied to each item of the list.\n\t\t\t\t// Detail is capped by maxDetail; see ciStatusForHeads for the shared budget.\n\t\t\t\tconst { ciVerbosity, logLines, maxDetail, ...upstreamArgs } = args as Record<string, unknown> & { ciVerbosity?: number; logLines?: number; maxDetail?: number };\n\t\t\t\tconst result = await this.upstream.forward(tool, upstreamArgs, token);\n\t\t\t\tif (ciVerbosity === undefined) return result;\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 list: unknown;\n\t\t\t\ttry {\n\t\t\t\t\tlist = 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\tif (!Array.isArray(list)) return result;\n\t\t\t\tconst heads: Array<{ number: number; sha: string }> = [];\n\t\t\t\tfor (const item of list as Array<{ number?: unknown; head?: { sha?: unknown } }>) {\n\t\t\t\t\tif (typeof item?.number === \"number\" && typeof item.head?.sha === \"string\") heads.push({ number: item.number, sha: item.head.sha });\n\t\t\t\t}\n\t\t\t\tif (heads.length === 0) 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 cis = await ciStatusForHeads(octokit, owner, repo, heads, {\n\t\t\t\t\tverbosity: Number(ciVerbosity),\n\t\t\t\t\tlogLines: logLines !== undefined ? Number(logLines) : undefined,\n\t\t\t\t\tmaxDetail: maxDetail !== undefined ? Number(maxDetail) : undefined,\n\t\t\t\t\tfetchFailedJobLogs: this.makeJobLogsFetcher(owner, repo, token)\n\t\t\t\t});\n\t\t\t\tconst byNumber = new Map(cis.map((c) => [c.pull, c]));\n\t\t\t\ttextBlock.text = JSON.stringify((list as Array<{ number?: unknown }>).map((item) => (typeof item?.number === \"number\" && byNumber.has(item.number) ? { ...item, ci: byNumber.get(item.number) } : item)));\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/** Tools that create a repo, whose PAT is picked by the org the repo lands in. */\nconst REPO_CREATING = new Set([\"create_repository\", \"fork_repository\"]);\n\n/**\n * The org a new repo lands in. Upstream creates it in the PAT user's own account when\n * `organization` is left out, so it's required here, and it must be a configured owner. Repos\n * are only created in orgs: upstream sends a configured user-owner's name to the org endpoint,\n * which 404s. For a fork, `owner` is the repo being forked and `organization` is where the\n * fork goes, so the write PAT is the destination's. create_repository also needs `private`\n * said explicitly, so a repo's visibility is never left to a default.\n */\nexport function creationOwner(tool: string, args: Record<string, unknown>, owners: Config[\"owners\"]): string {\n\tif (typeof args.organization !== \"string\" || !args.organization) {\n\t\tthrow new Error(`tool \"${tool}\": \"organization\" is required (the org the repo is created in); gh-broker doesn't create repos in a personal account`);\n\t}\n\tconst org = args.organization.toLowerCase();\n\tif (!owners[org]) throw new Error(`no credentials configured for owner \"${org}\" \u2014 add it to config.owners + creds`);\n\tif (tool === \"create_repository\" && typeof args.private !== \"boolean\") {\n\t\tthrow new Error('tool \"create_repository\": \"private\" is required, true or false; a repo\\'s visibility is never left to a default');\n\t}\n\treturn org;\n}\n\n/**\n * actions_run_trigger's delete_workflow_run_logs method removes a run's logs, which are the\n * record of what a run did. The other methods (dispatch, re-run, cancel) stay, behind the gate.\n */\nexport function refuseLogDeletion(args: Record<string, unknown>): void {\n\tif (args.method === \"delete_workflow_run_logs\") throw new Error('tool \"actions_run_trigger\": method \"delete_workflow_run_logs\" is not allowed in gh-broker; a run\\'s logs are kept');\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/verbs/otp_status.ts\n *\t@Date: 2026-11-01T20:43:25-08:00 (1793594605)\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-01T20:43:25-08:00 (1793594605)\n *\t-----\n *\t@Copyright: Copyright (c) 2013-2026 Catalyzed Motivation Inc. All rights reserved.\n *\n */\n\n/**\n * Custom verb: otp_status \u2014 the OTP gate's state (src/otp/gate.ts status()). Takes no\n * arguments, needs no owner or PAT, and is never blocked by a lock, so a locked-out agent\n * can still tell the user what happened and which command clears it.\n */\n\n/** JSON Schema advertised to the agent for otp_status. */\nexport const OTP_STATUS_SCHEMA = {\n\ttype: \"object\" as const,\n\tadditionalProperties: false,\n\tproperties: {}\n};\n\nexport const OTP_STATUS_DESCRIPTION =\n\t'Report the broker\\'s OTP gate: whether OTP is set up, which tools need an \"otp\" code, how many windows are open and when the next one closes, bad codes so far, any short lockout, short lockouts in the last 24 h, and the hard lock (which blocks every other tool) with the command that clears it. Never shows a code or the seed. Works even while the broker is locked. Needs no owner.';\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-11-02T20:12:05-08:00 (1793679125)\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_DEPENDENTS_SCHEMA } from \"./verbs/report_dependents.ts\";\nimport { REPORT_SECURITY_ALERTS_SCHEMA } from \"./verbs/report_security_alerts.ts\";\nimport { REPORT_RELEASE_PRS_SCHEMA } from \"./verbs/report_release_prs.ts\";\nimport { REPORT_RELEASE_CHANGES_SCHEMA } from \"./verbs/report_release_changes.ts\";\nimport { REPORT_ALERT_STATUS_SCHEMA } from \"./verbs/report_alert_status.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\";\nimport { OTP_STATUS_DESCRIPTION, OTP_STATUS_SCHEMA } from \"./verbs/otp_status.ts\";\nimport { MINIMIZE_COMMENT_DESCRIPTION, MINIMIZE_COMMENT_SCHEMA } from \"./verbs/minimize_comment.ts\";\nimport { DELETE_BRANCH_DESCRIPTION, DELETE_BRANCH_SCHEMA } from \"./verbs/delete_branch.ts\";\nimport { DISMISS_ALERT_DESCRIPTION, DISMISS_ALERT_SCHEMA } from \"./verbs/dismiss_alert.ts\";\nimport { OTP_ARG, OTP_STATUS, isGated, otpSettings } from \"./otp/policy.ts\";\nimport { windowText } from \"./otp/gate.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, passed as npm_otp, so it takes two calls: the first publishes the placeholder and returns status needs_otp; ask the user for the next npm code and call again with it in npm_otp 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_alert_status\") {\n\t\t\t\ttools.push({\n\t\t\t\t\tname: \"report_alert_status\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"For every open Dependabot alert in one repo, a list of repos, or every repo an owner has, say where its fix stands. Each alert gets one bucket: released-still-open (the default branch's lockfile is already patched, yet the alert is open), fixed-on-next (next or hotfixes is patched, the default branch isn't; waiting for a release), open-pr (an open PR bumps the package; notes a hotfix-redirect twin), closed-unmerged (only closed PRs, and whether a later merge superseded them), or no-pr. Reads package-lock.json / pnpm-lock.yaml / yarn.lock nearest the alert's manifest at each branch, once per commit, size-capped. Also hints per repo whether Dependabot looks paused. Bounded by maxApiCalls; returns truncated:true with a reason and the unreached repos in pending if a cap or GitHub's rate limit is hit. Runs on the read PAT.\",\n\t\t\t\t\tinputSchema: REPORT_ALERT_STATUS_SCHEMA\n\t\t\t\t});\n\t\t\t} else if (rule.name === \"report_dependents\") {\n\t\t\t\ttools.push({\n\t\t\t\t\tname: \"report_dependents\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Find every non-archived, non-fork repo an owner has that declares an npm package in dependencies, devDependencies or peerDependencies, with the declared range, the version the lockfile resolved (package-lock.json or pnpm-lock.yaml), the repo's flow tier (v4 / dev-trunk / non-v4), default branch and visibility. Workspace members are reported against their repo with the member path. Optional latest:true marks the resolved versions that are behind the latest published one. Candidates come from one org code search and are each verified against the default-branch package.json; the search lags recent commits and misses dev-trunk repos whose manifests live on dev (see discovery.note). Bounded by maxRepos/maxFileBytes/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_DEPENDENTS_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_release_changes\") {\n\t\t\t\ttools.push({\n\t\t\t\t\tname: \"report_release_changes\",\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Source material for one release's changelog. For a release PR (owner, repo, pull) it returns the version, head/base, the previous release, every PR that actually ships (from the release PR's commits, first line only; docs PRs, the version bump, PRs an earlier release or the previous changelog already carried, and PRs reverted inside the range are left out and listed under excluded), each with title, type, labels, author, merge date, closed issues and, by `detail`, its body, file list or patches (capped, with truncation flags). PRs are grouped by changelog section (breaking, features, fixes, security, CI & tooling, documentation, dependencies, or ungrouped when unclear), with breaking-change hints, `documented` when the version's changelog already mentions a PR, interim hotfix releases not on the head branch, a net block (package.json deltas, direct-dependency changes with locked versions, file totals) and an optional markdown skeleton. Returns truncated:true with a reason if the call budget or GitHub's rate limit is hit. Runs on the read PAT.\",\n\t\t\t\t\tinputSchema: REPORT_RELEASE_CHANGES_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 (rule.name === \"minimize_comment\") {\n\t\t\t\ttools.push({ name: \"minimize_comment\", description: MINIMIZE_COMMENT_DESCRIPTION, inputSchema: MINIMIZE_COMMENT_SCHEMA });\n\t\t\t} else if (rule.name === \"delete_branch\") {\n\t\t\t\ttools.push({ name: \"delete_branch\", description: DELETE_BRANCH_DESCRIPTION, inputSchema: DELETE_BRANCH_SCHEMA });\n\t\t\t} else if (rule.name === \"dismiss_alert\") {\n\t\t\t\ttools.push({ name: \"dismiss_alert\", description: DISMISS_ALERT_DESCRIPTION, inputSchema: DISMISS_ALERT_SCHEMA });\n\t\t\t} else if (rule.name === OTP_STATUS) {\n\t\t\t\ttools.push({ name: OTP_STATUS, description: OTP_STATUS_DESCRIPTION, inputSchema: OTP_STATUS_SCHEMA });\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\" || rule.name === \"list_pull_requests\")) {\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\tif (rule.name === \"list_pull_requests\") {\n\t\t\t\ttools.push({\n\t\t\t\t\t...base,\n\t\t\t\t\tdescription: `${base.description} gh-broker extension: pass \"ciVerbosity\" (0-3) to add a \"ci\" field to each listed PR \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. Costs at least one API call per listed PR; detail (1-3) is only fetched for the first \"maxDetail\" PRs (default 10, max 50), and later PRs carry counts with truncated:true. \"logLines\" tunes tier 3's tail length.`,\n\t\t\t\t\tinputSchema: {\n\t\t\t\t\t\t...baseSchema,\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t...(baseSchema.properties ?? {}),\n\t\t\t\t\t\t\tciVerbosity: { type: \"number\", enum: [0, 1, 2, 3], description: \"gh-broker extension: add a ci field to each listed PR at this verbosity\" },\n\t\t\t\t\t\t\tlogLines: { type: \"number\", description: \"gh-broker extension: tier-3 log tail length\" },\n\t\t\t\t\t\t\tmaxDetail: { type: \"number\", description: \"gh-broker extension: how many PRs get tier 1-3 detail (default 10, hard cap 50)\" }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\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 === \"create_repository\" || rule.name === \"fork_repository\") {\n\t\t\t// The router refuses these without an organization (and create_repository without an\n\t\t\t// explicit private), so the schema says the same.\n\t\t\tconst schema = base.inputSchema as { properties?: Record<string, unknown>; required?: string[]; [k: string]: unknown };\n\t\t\tconst needed = rule.name === \"create_repository\" ? [\"organization\", \"private\"] : [\"organization\"];\n\t\t\tconst note =\n\t\t\t\trule.name === \"create_repository\"\n\t\t\t\t\t? ' gh-broker: \"organization\" and \"private\" are required; the repo is never created in a personal account or left public by default.'\n\t\t\t\t\t: ' gh-broker: \"organization\" (where the fork goes) is required; forks are never created in a personal account.';\n\t\t\ttools.push({\n\t\t\t\t...base,\n\t\t\t\tdescription: `${base.description ?? \"\"}${note}`.trim(),\n\t\t\t\tinputSchema: { ...schema, type: \"object\", required: [...new Set([...(schema.required ?? []), ...needed])] } as Tool[\"inputSchema\"]\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (rule.name === \"actions_run_trigger\") {\n\t\t\ttools.push({ ...base, description: `${base.description ?? \"\"} gh-broker: method \"delete_workflow_run_logs\" is refused; a run's logs are kept.`.trim() });\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 withOtp(tools, config);\n}\n\n/**\n * Gated tools take a required \"otp\" and say so in their description. The schema is\n * copied, never mutated: it can be the upstream's object or a verb's shared constant.\n */\nfunction withOtp(tools: Tool[], config: Config): Tool[] {\n\tconst gated = new Set(config.tools.filter(isGated).map((t) => t.name));\n\tconst window = windowText(otpSettings(config).windowSeconds);\n\treturn tools.map((tool) => {\n\t\tif (!gated.has(tool.name)) return tool;\n\t\tconst schema = tool.inputSchema as { properties?: Record<string, unknown>; required?: string[]; [k: string]: unknown };\n\t\treturn {\n\t\t\t...tool,\n\t\t\tdescription: `${tool.description ?? \"\"} Needs a broker OTP (gh-broker): ask the user for a current code from their authenticator app and pass it as \"${OTP_ARG}\". One code works for every gated tool for ${window} after the first call that uses it.`.trim(),\n\t\t\tinputSchema: {\n\t\t\t\t...schema,\n\t\t\t\ttype: \"object\",\n\t\t\t\tproperties: {\n\t\t\t\t\t...(schema.properties ?? {}),\n\t\t\t\t\t[OTP_ARG]: { type: \"string\", description: \"gh-broker: a current 6-digit code from the user's authenticator app, or the code that opened the current window\" }\n\t\t\t\t},\n\t\t\t\trequired: [...(schema.required ?? []).filter((r) => r !== OTP_ARG), OTP_ARG]\n\t\t\t}\n\t\t};\n\t});\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, mkdirSync, readdirSync, readFileSync, rmSync, unlinkSync } from \"node:fs\";\nimport { join } from \"node:path\";\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\";\nimport { agentsDir, parseAgentGroups, type Agent } from \"./agents.ts\";\n\nconst SERVER_INFO = { name: \"gh-broker\", version: \"0.1.0\" };\n\nexport interface ServerOptions {\n\t/** The group database to read agents from. Defaults to /etc/group. */\n\tgroupFile?: string;\n}\n\n/**\n * Each agent connection (a socat stdio bridge to that agent's own socket) gets its own MCP\n * Server over a StdioServerTransport bound to that socket. `tools/list` returns the pre-built\n * catalog; `tools/call` delegates to the router with the socket's agent user as the caller\n * (allowlist + OTP + owner/mode \u2192 PAT + forward/dispatch). The token never crosses to this side.\n */\nfunction handleConnection(socket: Socket, router: Router, catalog: Tool[], user: string): 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, { user });\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\n/** Registered agents from the group file; an unreadable file means none (logged). */\nfunction readAgents(groupFile: string): Agent[] {\n\tlet text: string;\n\ttry {\n\t\ttext = readFileSync(groupFile, \"utf8\");\n\t} catch (err) {\n\t\tconsole.error(`gh-broker: cannot read ${groupFile} (${(err as Error).message}); serving no agents`);\n\t\treturn [];\n\t}\n\tconst { agents, skipped } = parseAgentGroups(text);\n\tfor (const why of skipped) console.error(`gh-broker: ignoring agent group ${why}`);\n\treturn agents;\n}\n\n/** Listen on one agent's socket, owned by that agent's group with mode 0660. */\nfunction listenFor(path: string, agent: Agent, router: Router, catalog: Tool[]): Promise<void> {\n\tif (existsSync(path)) unlinkSync(path); // clear a stale socket from a prior run\n\treturn new Promise((resolve, reject) => {\n\t\tconst server = createServer((sock: Socket) => handleConnection(sock, router, catalog, agent.user));\n\t\tserver.on(\"error\", reject);\n\t\tserver.listen(path, () => {\n\t\t\ttry {\n\t\t\t\tchownSync(path, process.getuid?.() ?? -1, agent.gid);\n\t\t\t} catch (err) {\n\t\t\t\t// The socket stays owned by the service's own group, so the agent can't connect: fail closed, and say why.\n\t\t\t\tconsole.error(`gh-broker: cannot give ${path} to group ${agent.group} (${(err as Error).message}); ${agent.user} can't connect`);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tchmodSync(path, 0o660);\n\t\t\t} catch (err) {\n\t\t\t\t// Some Node versions (22.12) report an over-long socket path as listening on a truncated\n\t\t\t\t// name, so the path itself isn't there. Don't serve a socket we couldn't set up.\n\t\t\t\tserver.close();\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolve();\n\t\t});\n\t});\n}\n\n/**\n * Listen on `<dir>/<user>.sock` for every registered agent (see src/agents.ts). The directory is\n * created (0755) if missing, sockets of agents that are no longer registered are removed, and\n * zero agents is not fatal: it is logged and nothing is served. Resolves with the agent users served.\n */\nexport async function startServer(config: Config, router: Router, catalog: Tool[], options: ServerOptions = {}): Promise<string[]> {\n\tconst dir = agentsDir(config.listen);\n\tif (!dir) throw new Error(`server: unsupported listen \"${config.listen}\" (expected \"agents:<absolute dir>\")`);\n\tconst agents = readAgents(options.groupFile ?? \"/etc/group\");\n\tif (!existsSync(dir)) {\n\t\tmkdirSync(dir, { recursive: true });\n\t\tchmodSync(dir, 0o755);\n\t}\n\tconst wanted = new Set(agents.map((a) => `${a.user}.sock`));\n\tfor (const name of readdirSync(dir)) {\n\t\tif (name.endsWith(\".sock\") && !wanted.has(name)) rmSync(join(dir, name), { force: true });\n\t}\n\tif (agents.length === 0) {\n\t\tconsole.error(\"gh-broker: no agents registered (no gh-broker-agent-<user> group with members gh-broker and <user>); serving nothing. Add one with: sudo gh-broker agent add <user>\");\n\t\treturn [];\n\t}\n\tfor (const agent of agents) await listenFor(join(dir, `${agent.user}.sock`), agent, router, catalog);\n\treturn agents.map((a) => a.user);\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\tconst agents = await 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\tagents,\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", "node", "key", "mergeValues", "Type", "names", "error", "_a", "DataType", "EQ", "key", "validate", "_a", "validateAsync", "key", "key", "key", "normalize", "anchor", "key", "env", "_a", "validate", "normalize", "parse", "url", "_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", "isAbsolute", "owner", "image", "key", "mac", "key", "config", "key", "isAbsolute", "members", "custom", "owner", "key", "isAbsolute", "readFileSync", "join", "config", "owner", "cached", "readFileSync", "join", "isObject", "array", "object", "key", "isObject", "Class", "_a", "config", "base64", "base64url", "initializer", "own", "proto", "key", "error", "issue", "node", "error", "parse", "parse", "parseAsync", "parseAsync", "version", "_a", "_a", "_a", "checks", "checkResult", "canary", "result", "validateAsync", "_", "url", "hostname", "base64", "header", "parse", "memo", "result", "key", "r", "get", "isObject", "allowsEval", "results", "isObject", "value", "left", "right", "key", "memo", "key", "result", "output", "result", "result", "right", "left", "r", "cached", "key", "merge", "_a", "issue", "_a", "meta", "_a", "Class", "_emoji", "Class", "Class", "Class", "Class", "Class", "_null", "Class", "Class", "Class", "Class", "issue", "key", "_a", "meta", "id", "schema", "key", "members", "required", "object", "union", "key", "key", "record", "names", "safeParse", "result", "rawShape", "def", "key", "initializer", "issue", "issues", "initializer", "parse", "parseAsync", "safeParse", "safeParseAsync", "encode", "decode", "encodeAsync", "decodeAsync", "safeEncode", "safeDecode", "safeEncodeAsync", "safeDecodeAsync", "meta", "_parse", "parse", "_parseAsync", "parseAsync", "safeParse", "safeParseAsync", "_encode", "encode", "_decode", "decode", "_encodeAsync", "encodeAsync", "_decodeAsync", "decodeAsync", "safeEncode", "safeDecode", "safeEncodeAsync", "safeDecodeAsync", "_emoji", "string", "number", "boolean", "_null", "object", "string", "issue", "output", "ZodFirstPartyTypeKind", "date", "datetime", "duration", "time", "datetime", "date", "time", "duration", "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", "randomBytes", "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", "stop", "flags", "key", "isObject", "node", "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", "auth", "version", "DEFAULT_MAX_REPOS", "HARD_MAX_REPOS", "DEFAULT_MAX_API_CALLS", "HARD_MAX_API_CALLS", "key", "owner", "meta", "classify", "DEFAULT_MAX_REPOS", "HARD_MAX_REPOS", "DEFAULT_MAX_API_CALLS", "HARD_MAX_API_CALLS", "owner", "number", "merge", "version", "owner", "open", "DEFAULT_MAX_API_CALLS", "HARD_MAX_API_CALLS", "SEARCH_PAGE_SIZE", "version", "owner", "DEFAULT_MAX_API_CALLS", "HARD_MAX_API_CALLS", "owner", "version", "key", "inRange", "files", "key", "version", "parseVersion", "unknown", "DEFAULT_MAX_REPOS", "HARD_MAX_REPOS", "DEFAULT_ALERT_LIMIT", "HARD_ALERT_LIMIT", "DEFAULT_MAX_API_CALLS", "HARD_MAX_API_CALLS", "isUnavailable", "getOrUndefined", "esc", "decode", "owner", "key", "meta", "open", "fail", "validate", "unknown", "set", "owner", "issue", "DEFAULT_MAX_API_CALLS", "HARD_MAX_API_CALLS", "owner", "failure", "INPUT_KEYS", "fail", "validate", "unknown", "statusOf", "owner", "registry", "access", "data", "c", "owner", "meta", "open", "ref", "owner", "createHash", "isAbsolute", "join", "normalize", "BLOCK", "fail", "members", "fail", "normalize", "isAbsolute", "join", "createHash", "url", "req", "auth", "createHash", "createHash", "sha256", "registry", "config", "meta", "owner", "unknown", "owner", "image", "registry", "createHmac", "randomBytes", "closeSync", "fstatSync", "openSync", "readFileSync", "dirname", "isObject", "readFileSync", "openSync", "fstatSync", "closeSync", "dirname", "audit", "randomBytes", "config", "createHmac", "open", "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", "unlinkSync", "join", "request", "request", "safeParse", "error", "process", "process", "error", "req", "readFileSync", "unlinkSync", "config", "join", "resolveSecretsPath", "config"]
7
- }