@forgeax/engine-pack 0.1.33 → 0.1.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/build.mjs +11 -6
- package/dist/build.mjs.map +1 -1
- package/dist/cli-asset.mjs +4 -4
- package/dist/cli-asset.mjs.map +1 -1
- package/dist/evidence/material-cook.d.ts +2 -1
- package/dist/evidence/material-cook.d.ts.map +1 -1
- package/dist/index.mjs +11 -6
- package/dist/index.mjs.map +1 -1
- package/dist/material-cook.mjs +7 -2
- package/dist/material-cook.mjs.map +1 -1
- package/dist/pack-authoring-node.mjs +4 -4
- package/dist/pack-authoring-node.mjs.map +1 -1
- package/dist/pack-authoring.d.ts.map +1 -1
- package/dist/pack-authoring.mjs +4 -4
- package/dist/pack-authoring.mjs.map +1 -1
- package/dist/scanner.mjs +4 -4
- package/dist/scanner.mjs.map +1 -1
- package/dist/scriptable-pack-node.mjs +4 -4
- package/dist/scriptable-pack-node.mjs.map +1 -1
- package/dist/scriptable-pack.mjs +4 -4
- package/dist/scriptable-pack.mjs.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/ai-recovery.unit.test.ts +4 -1
- package/src/__tests__/material-cook-schema.unit.test.ts +26 -0
- package/src/__tests__/pack-authoring.unit.test.ts +26 -0
- package/src/evidence/material-cook.ts +9 -1
- package/src/pack-authoring.ts +8 -4
- package/src/schema/material-cook.schema.json +74 -1
package/dist/scanner.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/code.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/scope.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/util.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/names.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/errors.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/boolSchema.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/rules.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/applicability.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/dataType.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/defaults.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/code.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/keyword.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/subschema.ts","../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js","../../../node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/resolve.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/validation_error.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/ref_error.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/data.json","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/utils.js","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/schemes.js","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/index.js","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/uri.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/core.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/id.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/ref.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/ucs2length.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/pattern.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/required.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/equal.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/const.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/enum.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/items.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/contains.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/properties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/not.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/if.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/format/format.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/format/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/metadata.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/draft7.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/discriminator/types.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/discriminator/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-draft-07.json","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/ajv.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/formats.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/limit.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/index.ts","../src/errors.ts","../src/guid.ts","../src/pack-authoring.ts","../src/producer-contract.ts","../src/deriveAssetName.ts","../src/resolve-asset-source.ts","../src/schema-compiled.ts","../schema/meta.schema.json","../schema/pack.schema.json","../src/scriptable-pack-node.ts","../src/scanner.ts"],"names":["UsedValueState","Type","err","DataType","ts","_a","resolve","Ajv","DiscrError","ajv","addFormats","isRecord","dirname","failure","ok","readFile","stat","packageId","packageCollision","createHash"],"mappings":"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","file":"scanner.mjs","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n","import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n","import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n","import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n","{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/** @type {(value: string) => boolean} */\nconst isHexPair = RegExp.prototype.test.bind(/^[\\da-f]{2}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isUnreserved = RegExp.prototype.test.bind(/^[\\da-z\\-._~]$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isPathCharacter = RegExp.prototype.test.bind(/^[\\da-z\\-._~!$&'()*+,;=:@/]$/iu)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * 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` and `%2E` stay escaped.\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 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 (decoded !== '.' && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n if (isPathCharacter(input[i])) {\n output += input[i]\n } else {\n output += escape(input[i])\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(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = reescapeHostDelimiters(host, false)\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n reescapeHostDelimiters,\n normalizePercentEncoding,\n normalizePathEncoding,\n escapePreservingEscapes,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, escapePreservingEscapes, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (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 resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n const normalizedA = normalizeComparableURI(uriA, options)\n const normalizedB = normalizeComparableURI(uriB, options)\n\n return normalizedA !== undefined && normalizedB !== undefined && normalizedA.toLowerCase() === normalizedB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escapePreservingEscapes(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = normalizePercentEncoding(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {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 * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ parsed: import('./types/index').URIComponent, malformedAuthorityOrPort: 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\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n\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 ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = reescapeHostDelimiters(unescape(parsed.host), isIP)\n }\n }\n if (parsed.path) {\n parsed.path = normalizePathEncoding(parsed.path)\n }\n if (parsed.fragment) {\n try {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n } catch {\n parsed.error = parsed.error || 'URI malformed'\n }\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return { parsed, malformedAuthorityOrPort }\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 }}\n */\nfunction normalizeStringWithStatus (uri, opts) {\n const { parsed, malformedAuthorityOrPort } = parseWithStatus(uri, opts)\n return {\n normalized: malformedAuthorityOrPort ? uri : serialize(parsed, opts),\n malformedAuthorityOrPort\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') {\n const { normalized, malformedAuthorityOrPort } = normalizeStringWithStatus(uri, opts)\n return malformedAuthorityOrPort ? undefined : normalized\n }\n\n if (typeof uri === 'object') {\n return serialize(uri, opts)\n }\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","// errors.ts — PackError class (feat-20260513-guid-asset-package-system w15)\n//\n// Four-field surface: .code / .expected / .hint / .detail\n// Structurally parallel to AssetError / RhiError / RemoteError\n// (charter proposition 5 consistent abstraction).\n//\n// .detail is narrowed per .code via PackErrorDetail discriminated union\n// (requirements §6.2 AC-07; plan-strategy §D-5).\n\nimport type { PackErrorCode, PackErrorDetail } from '@forgeax/engine-types';\n\n/**\n * Structured error for the engine-pack disk scanner fail-fast chain.\n *\n * AI users consume via exhaustive switch on .code — no default case needed:\n * ```ts\n * switch (err.code) {\n * case 'pack-guid-collision':\n * console.error(err.detail.paths);\n * break;\n * case 'pack-cyclic-reference':\n * console.error(err.detail.cycle);\n * break;\n * // ...all 8 cases\n * }\n * ```\n */\nexport class PackError extends Error {\n readonly code: PackErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: PackErrorDetail;\n\n constructor(args: {\n code: PackErrorCode;\n expected: string;\n hint: string;\n detail: PackErrorDetail;\n }) {\n super(`[PackError ${args.code}] expected: ${args.expected}; hint: ${args.hint}`);\n this.name = 'PackError';\n this.code = args.code;\n this.expected = args.expected;\n this.hint = args.hint;\n this.detail = args.detail;\n }\n}\n","import { sha1 } from '@noble/hashes/legacy.js';\nimport { uuidv7obj } from 'uuidv7';\nimport { PackError } from './errors.js';\n\n/**\n * 16-byte UUID branded ABI. Prevents assignment from plain Uint8Array or string.\n * Brand field mirrors the declaration in @forgeax/engine-types for cross-package\n * structural compatibility (both use __guidBrand: 'AssetGuid').\n */\nexport type AssetGuid = Uint8Array & { readonly __guidBrand: 'AssetGuid' };\n\n/** Pack-level identity. It is intentionally not assignable to AssetGuid. */\nexport type PackageId = Uint8Array & { readonly __packageIdBrand: 'PackageId' };\n\n/** Minimal Result alias for this module (structurally compatible with ScanResult). */\nexport type GuidResult<T, E> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: E };\n\nfunction brand(bytes: Uint8Array): AssetGuid {\n return bytes as AssetGuid;\n}\n\nconst HEX_BYTE = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n\nfunction bytesToDashForm(bytes: Uint8Array): string {\n const h = HEX_BYTE;\n // biome-ignore lint/style/noNonNullAssertion: length guaranteed 16\n return `${h[bytes[0]!]}${h[bytes[1]!]}${h[bytes[2]!]}${h[bytes[3]!]}-${h[bytes[4]!]}${h[bytes[5]!]}-${h[bytes[6]!]}${h[bytes[7]!]}-${h[bytes[8]!]}${h[bytes[9]!]}-${h[bytes[10]!]}${h[bytes[11]!]}${h[bytes[12]!]}${h[bytes[13]!]}${h[bytes[14]!]}${h[bytes[15]!]}`;\n}\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/** Stable author-owned output identity. Paths and payloads are not identity inputs. */\nexport const PACK_SOURCE_KEY_RE = /^[a-z0-9][a-z0-9._-]*(\\/[a-z0-9][a-z0-9._-]*)*$/;\n\nexport function isValidPackSourceKey(value: unknown): value is string {\n return typeof value === 'string' && PACK_SOURCE_KEY_RE.test(value);\n}\n\nexport function isValidAssetGuidString(value: unknown): value is string {\n return typeof value === 'string' && UUID_RE.test(value);\n}\n\nfunction dashFormToBytes(dashForm: string): Uint8Array {\n const hex = dashForm.replace(/-/g, '');\n const bytes = new Uint8Array(16);\n for (let i = 0; i < 16; i++) {\n bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\nfunction randomUuidBytes(): Uint8Array {\n const uuid = uuidv7obj();\n const bytes = new Uint8Array(16);\n bytes.set(uuid.bytes);\n return bytes;\n}\n\nfunction packageId(value: Uint8Array): PackageId {\n return value as PackageId;\n}\n\n/** Utilities for the pack-level UUID identity. */\nexport const PackageId = {\n parse(dashForm: string): GuidResult<PackageId, PackError> {\n const parsed = AssetGuid.parse(dashForm);\n return parsed.ok ? { ok: true, value: packageId(parsed.value) } : parsed;\n },\n format(value: PackageId): string {\n return bytesToDashForm(value);\n },\n random(): PackageId {\n return packageId(randomUuidBytes());\n },\n} as const;\n\nfunction derivedGuid(namespace: PackageId, sourceKey: string): AssetGuid {\n if (!(namespace instanceof Uint8Array) || namespace.byteLength !== 16) {\n throw new TypeError('AssetGuid.derive requires a 16-byte PackageId');\n }\n if (!isValidPackSourceKey(sourceKey)) {\n const error = new TypeError(\n `AssetGuid.derive received invalid sourceKey ${JSON.stringify(sourceKey)}`,\n ) as TypeError & { readonly code?: string };\n Object.defineProperty(error, 'code', { value: 'pack-source-key-invalid' });\n throw error;\n }\n const name = new TextEncoder().encode(sourceKey);\n const input = new Uint8Array(namespace.byteLength + name.byteLength);\n input.set(namespace, 0);\n input.set(name, namespace.byteLength);\n const digest = sha1(input);\n const result = digest.slice(0, 16);\n // RFC 4122 §4.1.1 / §4.1.3: UUID version 5, RFC variant.\n result[6] = ((result[6] ?? 0) & 0x0f) | 0x50;\n result[8] = ((result[8] ?? 0) & 0x3f) | 0x80;\n return brand(result);\n}\n\n/**\n * Utilities for the AssetGuid branded 16-byte UUID type.\n * Declare the type via `import type { AssetGuid } from '@forgeax/engine-pack/guid'`\n * or `import type { AssetGuid } from '@forgeax/engine-types'`.\n */\nexport const AssetGuid = {\n /**\n * Parse a 36-char RFC 4122 dash-form UUID string into an AssetGuid.\n * Returns Ok(AssetGuid) on success or Err(PackError) with code 'pack-guid-malformed' on failure.\n * Never throws for expected failures (requirements §4.2 / §14 / charter proposition 4).\n */\n parse(dashForm: string): GuidResult<AssetGuid, PackError> {\n if (!isValidAssetGuidString(dashForm)) {\n return {\n ok: false,\n error: new PackError({\n code: 'pack-guid-malformed',\n expected: '36-char RFC 4122 dash-form UUID',\n hint: 'use AssetGuid.random() or a UUIDv7 generator; all GUID fields must be 36-char RFC 4122 dash-form',\n detail: {\n raw: dashForm,\n reason: 'expected 36-char RFC 4122 dash-form UUID',\n },\n }),\n };\n }\n return { ok: true, value: brand(dashFormToBytes(dashForm)) };\n },\n\n /**\n * Format an AssetGuid as a 36-char RFC 4122 lowercase dash-form string.\n */\n format(guid: AssetGuid): string {\n return bytesToDashForm(guid);\n },\n\n /**\n * Test byte-by-byte equality between two AssetGuids.\n */\n equals(a: AssetGuid, b: AssetGuid): boolean {\n for (let i = 0; i < 16; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n },\n\n /**\n * Mint a new time-ordered UUIDv7 as an AssetGuid.\n * Works in both Node.js and browser environments.\n */\n random(): AssetGuid {\n return brand(randomUuidBytes());\n },\n\n /** Derive the stable UUIDv5 projection for one Pack subject and sourceKey. */\n derive(namespace: PackageId, sourceKey: string): AssetGuid {\n return derivedGuid(namespace, sourceKey);\n },\n} as const;\n","import type { Asset, AssetGuid, Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport {\n AssetGuid as AssetGuidCodec,\n isValidAssetGuidString,\n isValidPackSourceKey,\n PackageId,\n} from './guid.js';\nimport type { ScriptablePackSceneComponentInput } from './scriptable-pack.js';\n\n/** Values deliberately stay finite and serialisable at the authoring boundary. */\nexport type PackParameterScalar = boolean | number | string;\nexport type PackParameterValue = PackParameterScalar | readonly number[] | AssetGuid;\n\nexport type PackParameterType =\n | 'bool'\n | 'u32'\n | 'i32'\n | 'f32'\n | 'f64'\n | 'string'\n | 'enum'\n | 'vec2'\n | 'vec3'\n | 'vec4'\n | 'color'\n | 'asset-guid';\n\nexport const PACK_PARAMETER_TYPES = [\n 'bool',\n 'u32',\n 'i32',\n 'f32',\n 'f64',\n 'string',\n 'enum',\n 'vec2',\n 'vec3',\n 'vec4',\n 'color',\n 'asset-guid',\n] as const satisfies readonly PackParameterType[];\n\nexport interface PackParameterDefinition<\n TName extends string = string,\n TType extends PackParameterType = PackParameterType,\n TDefault extends PackParameterValue = PackParameterValue,\n> {\n readonly name: TName;\n readonly type: TType;\n readonly default: TDefault;\n readonly minimum?: number;\n readonly maximum?: number;\n /** Closed choices are required for `enum` and forbidden for other types. */\n readonly values?: readonly PackParameterScalar[];\n /** Optional authoring-only kind constraint for asset GUID parameters. */\n readonly kind?: Asset['kind'];\n}\n\nexport type PackParameterValueFor<T extends PackParameterType> = T extends 'bool'\n ? boolean\n : T extends 'u32' | 'i32' | 'f32' | 'f64'\n ? number\n : T extends 'string' | 'enum'\n ? string\n : T extends 'vec2'\n ? readonly [number, number]\n : T extends 'vec3'\n ? readonly [number, number, number]\n : T extends 'vec4' | 'color'\n ? readonly [number, number, number, number]\n : T extends 'asset-guid'\n ? AssetGuid\n : never;\n\nexport type PackParameterValues<TParameters extends readonly PackParameterDefinition[]> = Readonly<{\n [TParameter in TParameters[number] as TParameter['name']]: TParameter extends {\n readonly type: infer TType extends PackParameterType;\n }\n ? TType extends 'enum'\n ? TParameter extends { readonly values: readonly (infer TValue)[] }\n ? Extract<TValue, string>\n : string\n : PackParameterValueFor<TType>\n : never;\n}>;\n\nexport interface PackAuthoringError {\n readonly code: PackAuthoringErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly actual?: string;\n readonly detail: Readonly<Record<string, unknown>>;\n}\n\nexport type PackAuthoringErrorCode =\n | 'pack-package-id-invalid'\n | 'pack-package-id-collision'\n | 'pack-source-key-invalid'\n | 'pack-guid-collision'\n | 'pack-parent-not-found'\n | 'pack-parent-cycle'\n | 'pack-parent-has-no-parameters'\n | 'pack-parameter-invalid'\n | 'pack-content-dependency-stalled'\n | 'pack-output-reference-missing'\n | 'pack-output-reference-conflict'\n | 'pack-output-not-materialized'\n | 'asset-not-ready'\n | 'pack-source-revision-conflict'\n | 'pack-source-path-invalid'\n | 'pack-source-not-found'\n | 'pack-source-mutation-unsupported'\n | 'pack-source-write-failed';\n\nfunction authoringError(\n code: PackAuthoringErrorCode,\n expected: string,\n hint: string,\n detail: Readonly<Record<string, unknown>> = {},\n actual?: string,\n): PackAuthoringError {\n return {\n code,\n expected,\n hint,\n ...(actual === undefined ? {} : { actual }),\n detail,\n };\n}\n\nfunction failure<T = never>(error: PackAuthoringError): Result<T, PackAuthoringError> {\n return err(error);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateSceneComponents(\n value: unknown,\n): Result<readonly ScriptablePackSceneComponentInput[] | undefined, PackAuthoringError> {\n if (value === undefined) return ok(undefined);\n if (!Array.isArray(value)) {\n return failure(\n parameterFailure(\n '$.sceneComponents',\n 'an array of component schema records',\n value,\n 'sceneComponents is not an array',\n ),\n );\n }\n const components: ScriptablePackSceneComponentInput[] = [];\n const names = new Set<string>();\n for (const [componentIndex, candidate] of value.entries()) {\n if (!isRecord(candidate) || typeof candidate.name !== 'string' || !isRecord(candidate.fields)) {\n return failure(\n parameterFailure(\n `$.sceneComponents[${componentIndex}]`,\n 'a component record with name and fields',\n candidate,\n 'scene component schema is malformed',\n ),\n );\n }\n if (candidate.name.length === 0 || names.has(candidate.name)) {\n return failure(\n parameterFailure(\n `$.sceneComponents[${componentIndex}].name`,\n 'a non-empty unique component name',\n candidate.name,\n 'scene component names must be unique',\n ),\n );\n }\n names.add(candidate.name);\n const fields: Record<string, string | { readonly type: string }> = {};\n for (const [fieldName, field] of Object.entries(candidate.fields)) {\n if (\n (typeof field === 'string' && field.length === 0) ||\n (typeof field !== 'string' &&\n (!isRecord(field) || typeof field.type !== 'string' || field.type.length === 0))\n ) {\n return failure(\n parameterFailure(\n `$.sceneComponents[${componentIndex}].fields.${fieldName}`,\n 'a field type string or { type: string }',\n field,\n 'scene component field schema is malformed',\n ),\n );\n }\n fields[fieldName] = field as string | { readonly type: string };\n }\n components.push({ name: candidate.name, fields });\n }\n return ok(components);\n}\n\nfunction isPackageId(value: unknown): value is PackageId {\n return value instanceof Uint8Array && value.byteLength === 16;\n}\n\nfunction cloneValue<T>(value: T): T {\n if (value instanceof Uint8Array) return value.slice() as T;\n if (Array.isArray(value)) return value.map((item) => cloneValue(item)) as T;\n return value;\n}\n\nfunction sourceKeyFailure(sourceKey: unknown, propertyPath = '$.sourceKey'): PackAuthoringError {\n return authoringError(\n 'pack-source-key-invalid',\n 'a sourceKey matching ^[a-z0-9][a-z0-9._-]*(/[a-z0-9][a-z0-9._-]*)*$',\n 'use a stable lower-case semantic key; do not derive it from file paths or output order',\n { propertyPath, sourceKey },\n typeof sourceKey === 'string' ? sourceKey : undefined,\n );\n}\n\nfunction parameterFailure(\n propertyPath: string,\n expected: string,\n actual: unknown,\n reason: string,\n): PackAuthoringError {\n return authoringError(\n 'pack-parameter-invalid',\n expected,\n 'repair the parameter declaration or the instance values, then inspect and rebuild',\n { propertyPath, reason, actual: typeof actual === 'string' ? actual : JSON.stringify(actual) },\n );\n}\n\nfunction numericType(type: PackParameterType): boolean {\n return type === 'u32' || type === 'i32' || type === 'f32' || type === 'f64';\n}\n\nfunction vectorLength(type: PackParameterType): number | undefined {\n switch (type) {\n case 'vec2':\n return 2;\n case 'vec3':\n return 3;\n case 'vec4':\n case 'color':\n return 4;\n default:\n return undefined;\n }\n}\n\nfunction parameterValueError(\n parameter: PackParameterDefinition,\n value: unknown,\n propertyPath: string,\n): PackAuthoringError | undefined {\n const { type } = parameter;\n if (type === 'bool' && typeof value !== 'boolean') {\n return parameterFailure(propertyPath, 'a boolean', value, 'bool value has the wrong type');\n }\n if (numericType(type)) {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n return parameterFailure(\n propertyPath,\n 'a finite number',\n value,\n 'numeric value is not finite',\n );\n }\n if ((type === 'u32' || type === 'i32') && !Number.isInteger(value)) {\n return parameterFailure(\n propertyPath,\n 'an integer',\n value,\n 'integer parameter received a fraction',\n );\n }\n if (type === 'u32' && (value < 0 || value > 0xffff_ffff)) {\n return parameterFailure(\n propertyPath,\n 'an unsigned 32-bit integer',\n value,\n 'u32 value is outside [0, 2^32 - 1]',\n );\n }\n if (type === 'i32' && (value < -0x8000_0000 || value > 0x7fff_ffff)) {\n return parameterFailure(\n propertyPath,\n 'a signed 32-bit integer',\n value,\n 'i32 value is outside [-2^31, 2^31 - 1]',\n );\n }\n if (type === 'f32' && !Number.isFinite(Math.fround(value))) {\n return parameterFailure(\n propertyPath,\n 'a finite IEEE-754 32-bit float',\n value,\n 'f32 value overflows binary32',\n );\n }\n if (parameter.minimum !== undefined && value < parameter.minimum) {\n return parameterFailure(\n propertyPath,\n `a number >= ${parameter.minimum}`,\n value,\n 'value is below minimum',\n );\n }\n if (parameter.maximum !== undefined && value > parameter.maximum) {\n return parameterFailure(\n propertyPath,\n `a number <= ${parameter.maximum}`,\n value,\n 'value is above maximum',\n );\n }\n return undefined;\n }\n if (type === 'string' && typeof value !== 'string') {\n return parameterFailure(propertyPath, 'a string', value, 'string parameter has the wrong type');\n }\n if (type === 'enum') {\n if (typeof value !== 'string') {\n return parameterFailure(\n propertyPath,\n 'one of the declared enum strings',\n value,\n 'enum value has the wrong type',\n );\n }\n if (parameter.values === undefined || !parameter.values.includes(value)) {\n return parameterFailure(\n propertyPath,\n 'one of the declared enum values',\n value,\n 'enum value is not declared',\n );\n }\n return undefined;\n }\n const length = vectorLength(type);\n if (length !== undefined) {\n if (\n !Array.isArray(value) ||\n value.length !== length ||\n value.some((component) => typeof component !== 'number' || !Number.isFinite(component))\n ) {\n return parameterFailure(\n propertyPath,\n `a finite numeric vector with ${length} components`,\n value,\n 'vector value has the wrong shape',\n );\n }\n if (type === 'color' && value.some((component) => component < 0 || component > 1)) {\n return parameterFailure(\n propertyPath,\n 'an RGBA color with components in [0, 1]',\n value,\n 'color component is outside [0, 1]',\n );\n }\n return undefined;\n }\n if (type === 'asset-guid') {\n const validString = typeof value === 'string' && isValidAssetGuidString(value);\n if (!(value instanceof Uint8Array && value.byteLength === 16) && !validString) {\n return parameterFailure(\n propertyPath,\n 'a 16-byte AssetGuid or UUID string',\n value,\n 'asset GUID value is malformed',\n );\n }\n return undefined;\n }\n return parameterFailure(\n propertyPath,\n 'a supported Pack parameter type',\n value,\n 'unknown parameter type',\n );\n}\n\nfunction normalizeParameterValue(\n parameter: PackParameterDefinition,\n value: unknown,\n propertyPath: string,\n): Result<PackParameterValue, PackAuthoringError> {\n const error = parameterValueError(parameter, value, propertyPath);\n if (error !== undefined) return failure(error);\n if (parameter.type === 'asset-guid' && typeof value === 'string') {\n const parsed = AssetGuidCodec.parse(value);\n if (!parsed.ok) {\n return failure(\n parameterFailure(\n propertyPath,\n 'a valid AssetGuid UUID string',\n value,\n 'asset GUID parser rejected the value',\n ),\n );\n }\n return ok(parsed.value);\n }\n return ok(cloneValue(value as PackParameterValue));\n}\n\nfunction validateParameterDefinitions(\n parameters: unknown,\n propertyPath = '$.parameters',\n): Result<readonly PackParameterDefinition[], PackAuthoringError> {\n if (!Array.isArray(parameters) || parameters.length === 0) {\n return failure(\n parameterFailure(\n propertyPath,\n 'a non-empty parameter descriptor array',\n parameters,\n 'parameters must be explicit and non-empty',\n ),\n );\n }\n const names = new Set<string>();\n const normalized: PackParameterDefinition[] = [];\n for (const [index, candidate] of parameters.entries()) {\n const path = `${propertyPath}[${index}]`;\n if (!isRecord(candidate))\n return failure(\n parameterFailure(\n path,\n 'a parameter descriptor object',\n candidate,\n 'descriptor is not an object',\n ),\n );\n const name = candidate.name;\n if (typeof name !== 'string' || !/^[A-Za-z][A-Za-z0-9_.-]*$/.test(name)) {\n return failure(\n parameterFailure(\n `${path}.name`,\n 'a unique identifier-like parameter name',\n name,\n 'parameter name is invalid',\n ),\n );\n }\n if (names.has(name))\n return failure(\n parameterFailure(\n `${path}.name`,\n 'a unique parameter name',\n name,\n 'parameter name is duplicated',\n ),\n );\n names.add(name);\n const unknown = Object.keys(candidate).find(\n (key) => !['name', 'type', 'default', 'minimum', 'maximum', 'values', 'kind'].includes(key),\n );\n if (unknown !== undefined) {\n return failure(\n parameterFailure(\n `${path}.${unknown}`,\n 'only name, type, default, minimum, maximum, values, and kind fields',\n candidate[unknown],\n 'parameter descriptors are a closed authoring schema',\n ),\n );\n }\n const type = candidate.type;\n if (typeof type !== 'string' || !(PACK_PARAMETER_TYPES as readonly string[]).includes(type)) {\n return failure(\n parameterFailure(\n `${path}.type`,\n PACK_PARAMETER_TYPES.join(' | '),\n type,\n 'parameter type is not supported',\n ),\n );\n }\n const typed = {\n ...candidate,\n name,\n type: type as PackParameterType,\n } as PackParameterDefinition;\n if (typed.values !== undefined) {\n if (\n typed.type !== 'enum' ||\n !Array.isArray(typed.values) ||\n typed.values.length === 0 ||\n typed.values.some((item) => typeof item !== 'string') ||\n new Set(typed.values).size !== typed.values.length\n ) {\n return failure(\n parameterFailure(\n `${path}.values`,\n 'unique non-empty strings for enum',\n typed.values,\n 'enum values are malformed',\n ),\n );\n }\n } else if (typed.type === 'enum') {\n return failure(\n parameterFailure(\n `${path}.values`,\n 'a non-empty enum choices array',\n typed.values,\n 'enum has no choices',\n ),\n );\n }\n if (\n typed.kind !== undefined &&\n (typed.type !== 'asset-guid' || typeof typed.kind !== 'string')\n ) {\n return failure(\n parameterFailure(\n `${path}.kind`,\n 'a kind constraint only on asset-guid parameters',\n typed.kind,\n 'kind is misplaced',\n ),\n );\n }\n for (const field of ['minimum', 'maximum'] as const) {\n const bound = typed[field];\n if (bound !== undefined && (typeof bound !== 'number' || !Number.isFinite(bound))) {\n return failure(\n parameterFailure(\n `${path}.${field}`,\n 'a finite numeric bound',\n bound,\n 'numeric bound is invalid',\n ),\n );\n }\n }\n if (!numericType(typed.type) && (typed.minimum !== undefined || typed.maximum !== undefined)) {\n return failure(\n parameterFailure(\n path,\n 'minimum/maximum only on numeric parameters',\n typed,\n 'numeric bounds are not meaningful for this parameter type',\n ),\n );\n }\n if (\n typed.minimum !== undefined &&\n typed.maximum !== undefined &&\n typed.minimum > typed.maximum\n ) {\n return failure(\n parameterFailure(path, 'minimum <= maximum', typed, 'numeric bounds are reversed'),\n );\n }\n const defaultResult = normalizeParameterValue(typed, typed.default, `${path}.default`);\n if (!defaultResult.ok) return defaultResult;\n normalized.push({\n ...typed,\n default: defaultResult.value,\n ...(typed.values === undefined ? {} : { values: Object.freeze([...typed.values]) }),\n });\n }\n return ok(Object.freeze(normalized));\n}\n\nexport interface PackBuildReadContext {\n readByGuid<TAsset extends Asset | PackCookSource = Asset>(\n guid: AssetGuid,\n ): Promise<Result<TAsset, unknown>>;\n}\n\nexport interface PackBuildContextWithoutParameters extends PackBuildReadContext {\n readonly packageId: PackageId;\n}\n\nexport interface PackBuildContextWithParameters<\n TParameters extends readonly PackParameterDefinition[],\n> extends PackBuildReadContext {\n readonly packageId: PackageId;\n readonly values: PackParameterValues<TParameters>;\n}\n\nexport type PackBuildContext<TParameters extends readonly PackParameterDefinition[] | undefined> =\n TParameters extends readonly PackParameterDefinition[]\n ? PackBuildContextWithParameters<TParameters>\n : PackBuildContextWithoutParameters;\n\n/** Build-only custom source. The host derives identity and invokes the kind's NativeCooker. */\nexport interface PackCookSource {\n readonly kind: string;\n readonly execution: 'cooked';\n readonly source: unknown;\n}\n\nexport type PackOutputMap = Readonly<Record<string, Asset | PackCookSource>>;\nexport type PackBuildResult<TError = unknown> =\n | Result<PackOutputMap, TError>\n | Promise<Result<PackOutputMap, TError>>;\n\ninterface PackDefinitionBase {\n readonly schemaVersion: '2.0.0';\n readonly packageId: PackageId;\n readonly name?: string;\n /** Neutral component schemas used only to externalize SceneAsset refs at cook time. */\n readonly sceneComponents?: readonly ScriptablePackSceneComponentInput[];\n}\n\nexport type ScriptablePackDefinition<\n TParameters extends readonly PackParameterDefinition[] | undefined = undefined,\n> = PackDefinitionBase &\n (TParameters extends readonly PackParameterDefinition[]\n ? {\n readonly parameters: TParameters;\n readonly build: (context: PackBuildContextWithParameters<TParameters>) => PackBuildResult;\n }\n : {\n readonly build: (context: PackBuildContextWithoutParameters) => PackBuildResult;\n });\n\nexport type PackParameterList = readonly [PackParameterDefinition, ...PackParameterDefinition[]];\ntype NonEmptyParameters = PackParameterList;\ntype NoParameterPackInput = PackDefinitionBase & {\n readonly parameters?: never;\n readonly build: (context: PackBuildContextWithoutParameters) => PackBuildResult;\n};\ntype ScriptablePackDefinitionInput<TParameters extends NonEmptyParameters> = PackDefinitionBase & {\n readonly parameters: TParameters;\n readonly build: (context: PackBuildContextWithParameters<TParameters>) => PackBuildResult;\n};\n\n/** Convert a UUID literal into the distinct Pack-level identity brand. */\nexport function definePackageId(value: string | PackageId): PackageId {\n if (isPackageId(value)) return value.slice() as PackageId;\n const parsed = PackageId.parse(value);\n if (!parsed.ok) {\n const error = authoringError(\n 'pack-package-id-invalid',\n 'a 36-character RFC 4122 UUID packageId',\n 'use PackageId.random() or repair the packageId literal before loading the Pack',\n { value },\n value,\n );\n throw Object.assign(new TypeError(error.hint), error);\n }\n return parsed.value;\n}\n\nfunction cloneDefinition(\n definition: ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined>,\n): ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined> {\n const parameters =\n 'parameters' in definition\n ? Object.freeze(\n definition.parameters.map((parameter) =>\n Object.freeze({\n ...parameter,\n default: cloneValue(parameter.default),\n ...(parameter.values === undefined\n ? {}\n : { values: Object.freeze(parameter.values.map((value) => cloneValue(value))) }),\n }),\n ),\n )\n : undefined;\n const sceneComponents =\n definition.sceneComponents === undefined\n ? undefined\n : Object.freeze(\n definition.sceneComponents.map((component) =>\n Object.freeze({\n name: component.name,\n fields: Object.freeze({ ...component.fields }),\n }),\n ),\n );\n return Object.freeze({\n ...definition,\n packageId: definition.packageId.slice() as PackageId,\n ...(parameters === undefined ? {} : { parameters }),\n ...(sceneComponents === undefined ? {} : { sceneComponents }),\n }) as ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined>;\n}\n\n/**\n * Define the only executable authoring shape. A missing `parameters` property\n * is meaningful: its build context has no `values` member.\n */\nexport function definePack(definition: NoParameterPackInput): ScriptablePackDefinition<undefined>;\nexport function definePack<const TParameters extends NonEmptyParameters>(\n definition: ScriptablePackDefinitionInput<TParameters>,\n): ScriptablePackDefinition<TParameters>;\nexport function definePack(\n definition: NoParameterPackInput | ScriptablePackDefinitionInput<NonEmptyParameters>,\n): ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined> {\n const validated = validatePackDefinition(definition);\n if (!validated.ok) throw Object.assign(new TypeError(validated.error.hint), validated.error);\n return cloneDefinition(\n validated.value as\n | ScriptablePackDefinition<NonEmptyParameters>\n | ScriptablePackDefinition<undefined>,\n );\n}\n\n/** Union used only at orchestration boundaries that accept either source form. */\nexport type AnyScriptablePackDefinition =\n | ScriptablePackDefinition<PackParameterList>\n | ScriptablePackDefinition<undefined>;\n\nexport interface ScriptablePackSourceMeta {\n readonly schemaVersion: '2.0.0';\n readonly kind: 'scriptable-pack-source';\n readonly packageId: string;\n readonly source: string;\n readonly parameters?: readonly Readonly<Record<string, unknown>>[];\n}\n\n/** Ephemeral scan evidence; it intentionally contains no output GUID table. */\nexport function projectScriptablePackMeta(\n definition: AnyScriptablePackDefinition,\n sourcePath: string,\n): ScriptablePackSourceMeta {\n return {\n schemaVersion: '2.0.0',\n kind: 'scriptable-pack-source',\n packageId: PackageId.format(definition.packageId),\n source: sourcePath,\n ...('parameters' in definition\n ? {\n parameters: definition.parameters.map((parameter) => ({\n name: parameter.name,\n type: parameter.type,\n default: jsonParameterValue(parameter.default),\n ...(parameter.minimum === undefined ? {} : { minimum: parameter.minimum }),\n ...(parameter.maximum === undefined ? {} : { maximum: parameter.maximum }),\n ...(parameter.values === undefined ? {} : { values: parameter.values }),\n ...(parameter.kind === undefined ? {} : { kind: parameter.kind }),\n })),\n }\n : {}),\n };\n}\n\nfunction jsonParameterValue(value: PackParameterValue): unknown {\n return value instanceof Uint8Array ? AssetGuidCodec.format(value) : value;\n}\n\n/** Runtime validation used by the isolated module loader and source scanner. */\nexport function validatePackDefinition(\n value: unknown,\n sourcePath?: string,\n): Result<\n ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined>,\n PackAuthoringError\n> {\n if (!isRecord(value))\n return failure(\n parameterFailure('$', 'a Pack definition object', value, 'definition is not an object'),\n );\n const unknown = Object.keys(value).find(\n (key) =>\n !['schemaVersion', 'packageId', 'name', 'parameters', 'sceneComponents', 'build'].includes(\n key,\n ),\n );\n if (unknown !== undefined) {\n return failure(\n parameterFailure(\n `$.${unknown}`,\n 'only schemaVersion, packageId, name, parameters, sceneComponents, and build fields',\n value[unknown],\n 'legacy static output declarations and external asset tables are not part of v2 authoring',\n ),\n );\n }\n if (value.schemaVersion !== '2.0.0') {\n return failure(\n parameterFailure(\n '$.schemaVersion',\n \"the literal '2.0.0'\",\n value.schemaVersion,\n 'authoring source schema is unsupported',\n ),\n );\n }\n if (!isPackageId(value.packageId)) {\n return failure(\n authoringError(\n 'pack-package-id-invalid',\n 'a 16-byte PackageId',\n 'use definePackageId() for the stable source identity',\n { sourcePath, propertyPath: '$.packageId' },\n typeof value.packageId === 'string' ? value.packageId : undefined,\n ),\n );\n }\n if (value.name !== undefined && typeof value.name !== 'string') {\n return failure(\n parameterFailure('$.name', 'a string when present', value.name, 'display name is malformed'),\n );\n }\n if (typeof value.build !== 'function') {\n return failure(\n parameterFailure('$.build', 'a build function', value.build, 'build is not callable'),\n );\n }\n const sceneComponents = validateSceneComponents(value.sceneComponents);\n if (!sceneComponents.ok) return sceneComponents;\n const hasParameters = Object.hasOwn(value, 'parameters');\n if (!hasParameters) {\n return ok(\n Object.freeze({\n schemaVersion: '2.0.0',\n packageId: value.packageId,\n ...(value.name === undefined ? {} : { name: value.name }),\n ...(sceneComponents.value === undefined ? {} : { sceneComponents: sceneComponents.value }),\n build: value.build,\n }) as ScriptablePackDefinition<undefined>,\n );\n }\n const parameters = validateParameterDefinitions(value.parameters);\n if (!parameters.ok) return parameters;\n return ok(\n Object.freeze({\n schemaVersion: '2.0.0',\n packageId: value.packageId,\n ...(value.name === undefined ? {} : { name: value.name }),\n ...(sceneComponents.value === undefined ? {} : { sceneComponents: sceneComponents.value }),\n parameters: parameters.value,\n build: value.build,\n }) as ScriptablePackDefinition<NonEmptyParameters>,\n );\n}\n\nexport function hasPackParameters(\n value: ScriptablePackDefinition | unknown,\n): value is ScriptablePackDefinition<NonEmptyParameters> {\n return isRecord(value) && Array.isArray(value.parameters) && value.parameters.length > 0;\n}\n\n/** Resolve defaults plus a sparse instance override with shallow replacement. */\nexport function resolvePackParameterValues(\n definition: ScriptablePackDefinition<NonEmptyParameters>,\n overrides: unknown = {},\n inheritedValues?: Readonly<Record<string, PackParameterValue>>,\n): Result<PackParameterValues<NonEmptyParameters>, PackAuthoringError> {\n if (!isRecord(overrides)) {\n return failure(\n parameterFailure(\n '$.values',\n 'an object of sparse parameter overrides',\n overrides,\n 'values is not an object',\n ),\n );\n }\n const descriptors = new Map(\n definition.parameters.map((parameter) => [parameter.name, parameter]),\n );\n for (const name of Object.keys(overrides)) {\n if (!descriptors.has(name)) {\n return failure(\n parameterFailure(\n `$.values.${name}`,\n 'a declared parameter name',\n name,\n 'instance contains an unknown parameter',\n ),\n );\n }\n }\n const values: Record<string, PackParameterValue> = {};\n for (const parameter of definition.parameters) {\n const raw = Object.hasOwn(overrides, parameter.name)\n ? overrides[parameter.name]\n : (inheritedValues?.[parameter.name] ?? parameter.default);\n const normalized = normalizeParameterValue(parameter, raw, `$.values.${parameter.name}`);\n if (!normalized.ok) return normalized;\n values[parameter.name] = normalized.value;\n }\n return ok(Object.freeze(values) as PackParameterValues<NonEmptyParameters>);\n}\n\nexport interface DirectPackJsonAsset {\n readonly kind: string;\n readonly payload: Readonly<Record<string, unknown>>;\n readonly refs: readonly string[];\n readonly name?: string;\n readonly artifacts?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n}\n\nexport interface DirectPackJson {\n readonly schemaVersion: '3.0.0';\n readonly packageId: string;\n readonly assets: Readonly<Record<string, DirectPackJsonAsset>>;\n}\n\nexport interface PackInstanceJson {\n readonly schemaVersion: '3.0.0';\n readonly packageId: string;\n readonly parent: string;\n readonly values: Readonly<Record<string, unknown>>;\n}\n\nexport interface ParsedDirectPackJson {\n readonly format: 'direct';\n readonly schemaVersion: '3.0.0';\n readonly packageId: PackageId;\n readonly assets: Readonly<Record<string, DirectPackJsonAsset>>;\n}\n\nexport interface ParsedPackInstanceJson {\n readonly format: 'instance';\n readonly schemaVersion: '3.0.0';\n readonly packageId: PackageId;\n readonly parent: PackageId;\n readonly values: Readonly<Record<string, unknown>>;\n}\n\nexport type ParsedPackJson = ParsedDirectPackJson | ParsedPackInstanceJson;\n\nfunction jsonError(\n propertyPath: string,\n expected: string,\n actual: unknown,\n reason: string,\n): Result<never, PackAuthoringError> {\n return failure(\n authoringError(\n 'pack-parameter-invalid',\n expected,\n 'repair the v3 pack.json authoring data, then rerun scan or rebuild',\n {\n propertyPath,\n reason,\n actual: typeof actual === 'string' ? actual : JSON.stringify(actual),\n },\n ),\n );\n}\n\nfunction parsePackageId(\n value: unknown,\n propertyPath: string,\n): Result<PackageId, PackAuthoringError> {\n if (typeof value !== 'string') {\n return failure(\n authoringError(\n 'pack-package-id-invalid',\n 'a UUID string',\n 'repair packageId in the authoring file',\n { propertyPath, value },\n ),\n );\n }\n const parsed = PackageId.parse(value);\n if (!parsed.ok) {\n return failure(\n authoringError(\n 'pack-package-id-invalid',\n 'a 36-character RFC 4122 UUID',\n 'repair packageId or use the authoring gateway to mint one',\n { propertyPath, value },\n value,\n ),\n );\n }\n return ok(parsed.value);\n}\n\nfunction parsePackJsonAsset(\n value: unknown,\n sourceKey: string,\n): Result<DirectPackJsonAsset, PackAuthoringError> {\n if (!isRecord(value))\n return jsonError(\n `$.assets.${sourceKey}`,\n 'an asset entry object',\n value,\n 'asset entry is not an object',\n );\n const allowed = new Set(['kind', 'payload', 'refs', 'name', 'artifacts']);\n const unknown = Object.keys(value).find((key) => !allowed.has(key));\n if (unknown !== undefined)\n return jsonError(\n `$.assets.${sourceKey}.${unknown}`,\n 'no GUID or extra authoring field',\n value[unknown],\n 'direct v3 entries derive identity from their object key',\n );\n if (typeof value.kind !== 'string' || value.kind.length === 0)\n return jsonError(\n `$.assets.${sourceKey}.kind`,\n 'a non-empty asset kind',\n value.kind,\n 'asset kind is missing',\n );\n if (!isRecord(value.payload))\n return jsonError(\n `$.assets.${sourceKey}.payload`,\n 'a JSON object payload',\n value.payload,\n 'payload must be a plain object',\n );\n if (\n !Array.isArray(value.refs) ||\n value.refs.some((ref) => typeof ref !== 'string' || !isValidAssetGuidString(ref))\n ) {\n return jsonError(\n `$.assets.${sourceKey}.refs`,\n 'an array of UUID references',\n value.refs,\n 'references must already be real AssetGuids',\n );\n }\n if (value.name !== undefined && (typeof value.name !== 'string' || value.name.length === 0))\n return jsonError(\n `$.assets.${sourceKey}.name`,\n 'a non-empty display name when present',\n value.name,\n 'asset name is malformed',\n );\n if (value.artifacts !== undefined && !isRecord(value.artifacts))\n return jsonError(\n `$.assets.${sourceKey}.artifacts`,\n 'an artifact descriptor object when present',\n value.artifacts,\n 'artifacts are not an object',\n );\n const base: DirectPackJsonAsset = {\n kind: value.kind,\n payload: value.payload,\n refs: Object.freeze([...value.refs]) as readonly string[],\n ...(value.name === undefined ? {} : { name: value.name }),\n };\n if (value.artifacts === undefined) return ok(base);\n const withArtifacts: DirectPackJsonAsset = {\n ...base,\n artifacts: value.artifacts as NonNullable<DirectPackJsonAsset['artifacts']>,\n };\n return ok(withArtifacts);\n}\n\n/** Parse the two mutually exclusive v3 pack.json branches. */\nexport function parsePackSourceJson(value: unknown): Result<ParsedPackJson, PackAuthoringError> {\n if (!isRecord(value))\n return jsonError('$', 'a v3 pack.json object', value, 'document is not an object');\n if (value.schemaVersion !== '3.0.0')\n return jsonError(\n '$.schemaVersion',\n \"the literal '3.0.0'\",\n value.schemaVersion,\n 'document schema is not v3',\n );\n const unknown = Object.keys(value).find(\n (key) => !['schemaVersion', 'packageId', 'assets', 'parent', 'values'].includes(key),\n );\n if (unknown !== undefined)\n return jsonError(\n `$.${unknown}`,\n 'no extra top-level authoring fields',\n value[unknown],\n 'keep the v3 document to packageId+assets or packageId+parent+values',\n );\n const packageResult = parsePackageId(value.packageId, '$.packageId');\n if (!packageResult.ok) return packageResult;\n const hasAssets = Object.hasOwn(value, 'assets');\n const hasParent = Object.hasOwn(value, 'parent');\n const hasValues = Object.hasOwn(value, 'values');\n if (hasAssets && (hasParent || hasValues))\n return jsonError(\n '$',\n 'assets or parent+values, never both',\n value,\n 'direct and instance branches are mutually exclusive',\n );\n if (hasAssets) {\n if (!isRecord(value.assets))\n return jsonError(\n '$.assets',\n 'a sourceKey to asset object',\n value.assets,\n 'direct assets are not an object',\n );\n const assets: Record<string, DirectPackJsonAsset> = {};\n for (const [sourceKey, entry] of Object.entries(value.assets)) {\n if (!isValidPackSourceKey(sourceKey))\n return failure(sourceKeyFailure(sourceKey, `$.assets.${sourceKey}`));\n const parsed = parsePackJsonAsset(entry, sourceKey);\n if (!parsed.ok) return parsed;\n assets[sourceKey] = parsed.value;\n }\n return ok({\n format: 'direct',\n schemaVersion: '3.0.0',\n packageId: packageResult.value,\n assets: Object.freeze(assets),\n });\n }\n if (!hasParent || !hasValues || hasAssets)\n return jsonError(\n '$',\n 'parent and values for an instance document',\n value,\n 'instance branch is incomplete',\n );\n const parentResult = parsePackageId(value.parent, '$.parent');\n if (!parentResult.ok) return parentResult;\n if (!isRecord(value.values))\n return jsonError(\n '$.values',\n 'a sparse parameter object',\n value.values,\n 'instance values are not an object',\n );\n return ok({\n format: 'instance',\n schemaVersion: '3.0.0',\n packageId: packageResult.value,\n parent: parentResult.value,\n values: Object.freeze({ ...value.values }),\n });\n}\n\nexport interface DirectPackAssetProjection extends DirectPackJsonAsset {\n readonly guid: string;\n readonly sourceKey: string;\n}\n\nexport interface DirectPackProjection {\n readonly packageId: string;\n readonly assets: readonly DirectPackAssetProjection[];\n}\n\n/** Add the computed GUIDs needed by the ordinary Pack v2 publication path. */\nexport function projectDirectPackJson(\n value: ParsedDirectPackJson | DirectPackJson,\n): Result<DirectPackProjection, PackAuthoringError> {\n const parsed = 'format' in value ? ok(value) : parsePackSourceJson(value);\n if (!parsed.ok) return parsed;\n if (parsed.value.format !== 'direct') {\n return failure(\n authoringError(\n 'pack-parameter-invalid',\n 'a direct v3 pack.json',\n 'projectDirectPackJson accepts the direct branch only',\n { observed: parsed.value.format },\n ),\n );\n }\n const assets: DirectPackAssetProjection[] = [];\n for (const [sourceKey, entry] of Object.entries(parsed.value.assets).sort(([left], [right]) =>\n left.localeCompare(right),\n )) {\n assets.push({\n ...entry,\n guid: AssetGuidCodec.format(AssetGuidCodec.derive(parsed.value.packageId, sourceKey)),\n sourceKey,\n });\n }\n return ok({ packageId: PackageId.format(parsed.value.packageId), assets: Object.freeze(assets) });\n}\n\nexport interface PackParameterRootSubject {\n readonly format: 'source';\n readonly packageId: PackageId;\n readonly parameters: readonly PackParameterDefinition[];\n}\n\nexport interface PackParameterInstanceSubject {\n readonly format: 'instance';\n readonly packageId: PackageId;\n readonly parent: PackageId;\n readonly values: Readonly<Record<string, unknown>>;\n}\n\nexport interface PackDirectSubject {\n readonly format: 'direct';\n readonly packageId: PackageId;\n}\n\nexport type PackParameterInheritanceSubject =\n | PackParameterRootSubject\n | PackParameterInstanceSubject\n | PackDirectSubject;\n\nexport interface ResolvedPackParameterInheritance {\n readonly packageId: PackageId;\n readonly rootPackageId: PackageId;\n readonly values: Readonly<Record<string, PackParameterValue>>;\n readonly parentChain: readonly string[];\n readonly parameters: readonly PackParameterDefinition[];\n}\n\nexport type PackParameterSubjectReader = (\n packageId: PackageId,\n) =>\n | PackParameterInheritanceSubject\n | undefined\n | Promise<PackParameterInheritanceSubject | undefined>;\n\nfunction subjectId(subject: PackParameterInheritanceSubject): string {\n return PackageId.format(subject.packageId).toLowerCase();\n}\n\n/** Resolve one finite parent chain. Every instance keeps its own packageId. */\nexport async function resolvePackParameterInheritance(\n subject: PackParameterInheritanceSubject,\n readParent: PackParameterSubjectReader,\n): Promise<Result<ResolvedPackParameterInheritance, PackAuthoringError>> {\n const visited = new Set<string>();\n\n async function visit(\n current: PackParameterInheritanceSubject,\n path: readonly string[],\n ): Promise<Result<ResolvedPackParameterInheritance, PackAuthoringError>> {\n const currentId = subjectId(current);\n if (visited.has(currentId) || path.includes(currentId)) {\n return failure(\n authoringError(\n 'pack-parent-cycle',\n 'a finite acyclic Pack parent chain',\n 'inspect parentChain and repair the first repeated packageId',\n { packageId: currentId, parentChain: [...path, currentId] },\n ),\n );\n }\n visited.add(currentId);\n const nextPath = [...path, currentId];\n if (current.format === 'direct') {\n return failure(\n authoringError(\n 'pack-parent-has-no-parameters',\n 'a ScriptablePack source with parameters as the parent',\n 'direct packs cannot be instance parents; point the instance at a ScriptablePack source with parameters',\n { packageId: currentId },\n ),\n );\n }\n if (current.format === 'source') {\n const descriptors = validateParameterDefinitions(current.parameters, '$.parameters');\n if (!descriptors.ok) return descriptors;\n if (descriptors.value.length === 0) {\n return failure(\n authoringError(\n 'pack-parent-has-no-parameters',\n 'the parent source to declare a non-empty parameter list',\n 'use clone for an independent zero-parameter Pack instead of creating an empty instance',\n { packageId: currentId },\n ),\n );\n }\n const definition = {\n schemaVersion: '2.0.0',\n packageId: current.packageId,\n parameters: descriptors.value as NonEmptyParameters,\n build: () => ok({}),\n } as ScriptablePackDefinition<NonEmptyParameters>;\n const values = resolvePackParameterValues(definition);\n if (!values.ok) return values;\n return ok({\n packageId: current.packageId,\n rootPackageId: current.packageId,\n values: values.value,\n parentChain: [],\n parameters: descriptors.value,\n });\n }\n const parent = await readParent(current.parent);\n if (parent === undefined) {\n return failure(\n authoringError(\n 'pack-parent-not-found',\n 'the parent packageId to resolve in the source index',\n 'inspect the parent locator or recreate the instance from a live ScriptablePack with parameters',\n { packageId: currentId, parent: PackageId.format(current.parent) },\n ),\n );\n }\n if (\n PackageId.format(parent.packageId).toLowerCase() !==\n PackageId.format(current.parent).toLowerCase()\n ) {\n return failure(\n authoringError(\n 'pack-parent-not-found',\n 'the parent reader to return the requested packageId',\n 'repair the Source Index locator and retry inheritance resolution',\n {\n packageId: currentId,\n requestedParent: PackageId.format(current.parent),\n observedParent: PackageId.format(parent.packageId),\n },\n ),\n );\n }\n const resolvedParent = await visit(parent, nextPath);\n if (!resolvedParent.ok) return resolvedParent;\n const descriptors = resolvedParent.value.parameters;\n const definition = {\n schemaVersion: '2.0.0',\n packageId: resolvedParent.value.rootPackageId,\n parameters: descriptors as NonEmptyParameters,\n build: () => ok({}),\n } as ScriptablePackDefinition<NonEmptyParameters>;\n const values = resolvePackParameterValues(\n definition,\n current.values,\n resolvedParent.value.values,\n );\n if (!values.ok) return values;\n return ok({\n packageId: current.packageId,\n rootPackageId: resolvedParent.value.rootPackageId,\n values: values.value,\n parentChain: [PackageId.format(current.parent), ...resolvedParent.value.parentChain],\n parameters: descriptors,\n });\n }\n\n return visit(subject, []);\n}\n\nexport const resolvePackInheritance = resolvePackParameterInheritance;\n\nexport const PACK_AUTHORING_OPERATION_IDS = [\n 'asset.list',\n 'asset.inspect',\n 'asset.resolve',\n 'asset.verify',\n 'asset-source.create',\n 'asset-source.clone',\n 'asset-source.create-instance',\n 'asset-source.apply-values',\n 'asset-source.rebuild',\n 'asset-source.cold-cook',\n] as const;\n\nexport type PackAuthoringOperationId = (typeof PACK_AUTHORING_OPERATION_IDS)[number];\n\nexport interface PackAuthoringOperation {\n readonly requestId: string;\n readonly expectedRevision?: string;\n readonly operation: PackAuthoringOperationId;\n readonly subject?: string;\n readonly sourcePath?: string;\n readonly targetPath?: string;\n readonly packageId?: string;\n /** Parent package identity used by asset-source.create-instance. */\n readonly parentPackageId?: string;\n /** JSON-facing alias accepted by adapters at the operation boundary. */\n readonly parent?: string;\n readonly sourceKey?: string;\n readonly values?: Readonly<Record<string, unknown>>;\n /** `pack.ts` or `pack.json`; omitted defaults to the target extension. */\n readonly format?: 'pack.ts' | 'pack.json';\n /** Direct v3 entries for asset-source.create. */\n readonly initialAssets?: Readonly<Record<string, DirectPackJsonAsset>>;\n /** Explicit non-empty parameter declarations for a generated pack.ts scaffold. */\n readonly parameters?: readonly Readonly<Record<string, unknown>>[];\n /** Required proof level for asset.resolve. */\n readonly require?: 'identity' | 'present' | 'ready';\n}\n\nexport type PackAuthoringResolutionStatus = 'identity' | 'present' | 'ready';\n\nexport interface PackAuthoringOperationResult {\n readonly operation: PackAuthoringOperationId;\n readonly requestId: string;\n readonly schemaVersion?: 'asset-verification-v1';\n readonly sourcePath?: string;\n readonly targetPath?: string;\n readonly revision?: string;\n readonly packageId?: string;\n readonly parentPackageId?: string;\n readonly sourceKey?: string;\n readonly guid?: string;\n readonly format?: 'pack.ts' | 'pack.json' | 'direct' | 'instance';\n readonly status?: PackAuthoringResolutionStatus;\n readonly kind?: string;\n readonly parameters?: readonly Readonly<Record<string, unknown>>[];\n readonly values?: Readonly<Record<string, unknown>>;\n readonly effectiveValues?: Readonly<Record<string, unknown>>;\n readonly parentChain?: readonly string[];\n readonly assets?: readonly Readonly<Record<string, unknown>>[];\n readonly sources?: readonly Readonly<Record<string, unknown>>[];\n readonly capabilities?: readonly PackAuthoringOperationId[];\n readonly snapshot?: {\n readonly sourceCount: number;\n readonly assetCount: number;\n };\n /** Bounded source/output facts for read-only verification consumers. */\n readonly scope?: {\n readonly sourceCount: number;\n readonly assetCount: number;\n readonly sourcePaths: readonly string[];\n readonly omittedSourceCount: number;\n readonly assetLimit: number;\n readonly truncated: boolean;\n readonly scriptablePackSourceCount: number;\n readonly scriptablePackSources: readonly {\n readonly sourcePath: string;\n readonly packageId: string;\n readonly output: 'unproduced';\n readonly reason: 'producer-not-run';\n }[];\n readonly omittedScriptablePackSourceCount: number;\n };\n readonly summary?: {\n readonly assetCount: number;\n readonly emittedAssetCount: number;\n readonly materialCount: number;\n readonly unproducedAssetCount: number;\n readonly unknownAssetCount: number;\n readonly unmaterializedScriptablePackCount: number;\n };\n}\n\nexport interface PackAuthoringGatewayPort<TResult = unknown> {\n execute(operation: PackAuthoringOperation): Promise<Result<TResult, PackAuthoringError>>;\n}\n\n/** One idempotent gateway wrapper shared by Editor and CLI adapters. */\nexport function createPackAuthoringGateway<TResult = unknown>(\n port: PackAuthoringGatewayPort<TResult>,\n): PackAuthoringGatewayPort<TResult> {\n const requests = new Map<\n string,\n { fingerprint: string; result: Promise<Result<TResult, PackAuthoringError>> }\n >();\n return {\n execute(operation) {\n if (typeof operation.requestId !== 'string' || operation.requestId.trim().length === 0) {\n return Promise.resolve(\n failure(\n authoringError(\n 'pack-source-revision-conflict',\n 'a non-empty caller-minted requestId',\n 'mint a new requestId and retry',\n { requestId: operation.requestId },\n ),\n ),\n );\n }\n let fingerprint: string;\n try {\n fingerprint = JSON.stringify(operation);\n } catch (cause) {\n return Promise.resolve(\n failure(\n authoringError(\n 'pack-parameter-invalid',\n 'a JSON-serialisable authoring operation',\n 'remove non-serialisable operation fields and retry with a new requestId',\n {\n requestId: operation.requestId,\n cause: cause instanceof Error ? cause.message : String(cause),\n },\n ),\n ),\n );\n }\n const previous = requests.get(operation.requestId);\n if (previous !== undefined) {\n if (previous.fingerprint === fingerprint) return previous.result;\n return Promise.resolve(\n failure(\n authoringError(\n 'pack-source-revision-conflict',\n 'one immutable operation per requestId',\n 'read the original result or mint a new requestId',\n { requestId: operation.requestId },\n ),\n ),\n );\n }\n const result = Promise.resolve()\n .then(() => port.execute(operation))\n .catch(\n (cause): Result<TResult, PackAuthoringError> =>\n failure(\n authoringError(\n 'pack-parameter-invalid',\n 'the Pack authoring port to return a structured Result',\n 'repair the gateway port failure, then retry with a new requestId',\n {\n requestId: operation.requestId,\n cause: cause instanceof Error ? cause.message : String(cause),\n },\n ),\n ),\n );\n requests.set(operation.requestId, { fingerprint, result });\n return result;\n },\n };\n}\n\nexport const PACK_AUTHORING_OPERATION_DESCRIPTORS = PACK_AUTHORING_OPERATION_IDS.map((id) => ({\n id,\n domain: id.startsWith('asset-source.') ? 'session' : 'asset',\n readOnly: id.startsWith('asset.'),\n requiresRevision: !id.startsWith('asset.') && id !== 'asset-source.create',\n})) as readonly {\n id: PackAuthoringOperationId;\n domain: 'asset' | 'session';\n readOnly: boolean;\n requiresRevision: boolean;\n}[];\n","import type {\n AssetSubjectRef,\n ImportedOutputDeclaration,\n ProducerContractDiagnostic,\n ProducerContractResult,\n SourceOverrideMap,\n} from '@forgeax/engine-types';\nimport { validateSourceOverrideMap } from '@forgeax/engine-types';\n\ntype ProducerObject = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is ProducerObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction hasText(value: unknown): value is string {\n return typeof value === 'string' && value.length > 0;\n}\n\nfunction issue(\n code: ProducerContractDiagnostic['code'],\n subjectId: string,\n expected: string,\n hint: string,\n actual?: string,\n authority: 'producer' | 'pack' = 'producer',\n): ProducerContractResult<never> {\n const subject: AssetSubjectRef = { type: 'asset', id: subjectId };\n return {\n ok: false,\n error: {\n code,\n subject,\n expected,\n ...(actual === undefined ? {} : { actual }),\n hint,\n authority,\n },\n };\n}\n\nfunction validateFacts(\n value: ProducerObject,\n subjectId: string,\n): ProducerContractResult<ProducerObject> {\n if ('packageId' in value && !hasText(value.packageId)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'packageId must be a non-empty string',\n 'publish a stable package identity',\n );\n }\n if ('provenance' in value) {\n const provenance = value.provenance;\n if (!isRecord(provenance) || !hasText(provenance.provider) || !hasText(provenance.version)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'provenance.provider and provenance.version must be non-empty',\n 'publish provider identity and version',\n );\n }\n }\n if ('revision' in value) {\n const revision = value.revision;\n if (\n !isRecord(revision) ||\n !hasText(revision.digest) ||\n !hasText(revision.rootId) ||\n typeof revision.observedAt !== 'number' ||\n !Number.isFinite(revision.observedAt)\n ) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'revision.digest, revision.rootId and finite revision.observedAt',\n 'publish a complete resource revision',\n );\n }\n }\n if ('diagnostics' in value) {\n if (!Array.isArray(value.diagnostics)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'diagnostics must be an array',\n 'publish structured diagnostics as an array',\n );\n }\n for (const diagnostic of value.diagnostics) {\n if (!isRecord(diagnostic) || !hasText(diagnostic.code)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'each diagnostic needs a stable code',\n 'publish a machine-readable diagnostic code',\n );\n }\n if (diagnostic.severity === 'blocking') {\n if (!isRecord(diagnostic.subject) || !hasText(diagnostic.subject.id)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'blocking diagnostic.subject must identify an object',\n 'set subject.type and subject.id',\n );\n }\n if (!hasText(diagnostic.expected) || !hasText(diagnostic.hint)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'blocking diagnostics need expected and hint',\n 'provide an executable recovery hint',\n );\n }\n }\n }\n }\n return { ok: true, value };\n}\n\nfunction validateMetaSourceOverrides(\n value: ProducerObject,\n subjectId: string,\n): ProducerContractResult<ProducerObject> {\n if (!('sourceOverrides' in value)) return { ok: true, value };\n const declaredSourceKeys = Array.isArray(value.subAssets)\n ? value.subAssets.flatMap((subAsset) =>\n isRecord(subAsset) && hasText(subAsset.sourceKey) ? [subAsset.sourceKey] : [],\n )\n : [];\n const result = validateSourceOverrideMap(value.sourceOverrides, declaredSourceKeys);\n if (!result.ok) {\n return issue(\n result.error.code,\n subjectId,\n result.error.expected,\n result.error.hint,\n result.error.actual,\n 'pack',\n );\n }\n return {\n ok: true,\n value: { ...value, sourceOverrides: result.value as SourceOverrideMap | undefined },\n };\n}\n\n/**\n * Validate one package or imported-output producer declaration.\n *\n * The accepted fields mirror the engine-types POD contract. This function\n * validates that schema without creating a second schema or interpreting\n * diagnostic messages.\n */\nexport function validateProducerContract(value: unknown): ProducerContractResult<ProducerObject> {\n if (!isRecord(value)) {\n return issue(\n 'invalid-producer-fact',\n 'unknown',\n 'producer declaration must be an object',\n 'publish a JSON object',\n );\n }\n\n const subjectId = hasText(value.guid)\n ? value.guid\n : hasText(value.packageId)\n ? value.packageId\n : 'unknown';\n const facts = validateFacts(value, subjectId);\n if (!facts.ok) return facts;\n\n const metaOverrides = validateMetaSourceOverrides(value, subjectId);\n if (!metaOverrides.ok) return metaOverrides;\n\n if ('kind' in value && !hasText(value.kind)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'kind must be a non-empty open string',\n 'publish the provider-owned asset kind',\n );\n }\n if ('execution' in value && value.execution !== 'direct' && value.execution !== 'cooked') {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'execution must be either direct or cooked',\n 'publish the explicit authoring execution mode',\n );\n }\n const hasOutputIdentity = 'kind' in value || 'sourceIndex' in value || 'sourceKey' in value;\n if (!hasOutputIdentity) return facts;\n if (value.sourceKey !== undefined && !hasText(value.sourceKey)) {\n return issue(\n 'invalid-source-key',\n subjectId,\n 'sourceKey must be a non-empty producer-owned string',\n 'publish a stable semantic sourceKey',\n );\n }\n if (\n value.sourceIndex !== undefined &&\n (typeof value.sourceIndex !== 'number' ||\n !Number.isInteger(value.sourceIndex) ||\n value.sourceIndex < 0)\n ) {\n return issue(\n 'invalid-source-index',\n subjectId,\n 'sourceIndex must be a non-negative integer locator',\n 'publish a non-negative sourceIndex without using it as identity',\n );\n }\n if (value.sourceKey === undefined && value.sourceIndex !== undefined) {\n return issue(\n 'missing-source-key',\n subjectId,\n 'sourceKey is required when an output declares sourceIndex',\n 'publish a stable semantic key; do not derive identity from sourceIndex',\n );\n }\n if (\n 'compatiblePreviousKinds' in value &&\n (!Array.isArray(value.compatiblePreviousKinds) ||\n value.compatiblePreviousKinds.some((kind) => !hasText(kind)))\n ) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'compatiblePreviousKinds must be an array of non-empty kind strings',\n 'declare only producer-verified prior kinds that may preserve the GUID',\n );\n }\n return metaOverrides;\n}\n\n/**\n * Validate output topology without ever treating `sourceIndex` as identity.\n *\n * AI-readable callers should use the discriminated result and its structured\n * `code`, `expected`, `actual`, and `hint` fields for recovery decisions.\n */\nexport function validateProducerOutputs(\n outputs: readonly ImportedOutputDeclaration[],\n): ProducerContractResult<readonly ImportedOutputDeclaration[]> {\n const missingKey = outputs.find((output) => output.sourceKey === undefined);\n if (missingKey !== undefined) {\n return issue(\n outputs.length > 1 ? 'source-index-ambiguous' : 'missing-source-key',\n missingKey.guid,\n 'every output declaration needs a stable sourceKey',\n 'add sourceKey to each output before matching topology',\n );\n }\n const keys = new Map<string, ImportedOutputDeclaration>();\n for (const output of outputs) {\n const result = validateProducerContract(output);\n if (!result.ok) return result;\n const sourceKey = output.sourceKey;\n if (sourceKey === undefined) continue;\n const prior = keys.get(sourceKey);\n if (prior !== undefined) {\n return issue(\n 'duplicate-source-key',\n output.guid,\n 'sourceKey values must be unique within one producer package',\n 'rename the duplicate semantic output key',\n sourceKey,\n );\n }\n keys.set(sourceKey, output);\n }\n return { ok: true, value: outputs };\n}\n","/**\n * Last path segment of a `/`- or `\\`-separated path, trailing separators\n * stripped. Inlined rather than imported from `node:path` so this module stays\n * browser-safe: the dev-server pack path (`vite-plugin-pack` `/__pack/`) runs\n * `buildCatalog` -> `deriveAssetName` in client code where `node:path` is\n * externalized and `path.basename` throws.\n */\nfunction baseName(p: string): string {\n const trimmed = p.replace(/[/\\\\]+$/, '');\n const idx = Math.max(trimmed.lastIndexOf('/'), trimmed.lastIndexOf('\\\\'));\n return idx === -1 ? trimmed : trimmed.slice(idx + 1);\n}\n\n/**\n * Derive an asset's display name from package metadata.\n *\n * Pure function -- zero IO, zero side effects, browser-safe. Build-time\n * (build-catalog) and runtime (resolveName) share this single source of truth\n * for deterministic asset display-name resolution.\n *\n * Resolution contract:\n * - an explicit storedName is authoritative;\n * - a package path is the fallback when no storedName is present;\n * - an asset without a package and without a storedName resolves to ''.\n *\n * `assetCount` remains in the signature because callers derive it from their\n * package model, but it must not erase an explicitly authored name. In\n * particular, a single authored entry in `Materials.pack.json` resolves to its\n * entry name rather than temporarily appearing as the package basename.\n */\nexport function deriveAssetName(\n packagePath: string | null,\n _assetCount: number,\n storedName?: string,\n): string {\n if (storedName !== undefined) {\n return storedName;\n }\n if (packagePath === null) {\n return '';\n }\n return baseName(packagePath);\n}\n","import { dirname, resolve } from 'node:path';\nimport { deriveAssetName } from './deriveAssetName.js';\n\nfunction deriveSourceName(metaFileName: string): string {\n return metaFileName.replace(/\\.meta\\.json$/, '');\n}\n\nexport function resolveAssetSource(metaPath: string, source: string | undefined): string {\n if (source === undefined) {\n const metaDir = dirname(metaPath);\n const metaName = deriveAssetName(metaPath, 1);\n const derived = deriveSourceName(metaName);\n return resolve(metaDir, derived);\n }\n return resolve(dirname(metaPath), source);\n}\n","import type { PackV2 } from '@forgeax/engine-types';\nimport Ajv, { type ValidateFunction } from 'ajv';\nimport addFormats from 'ajv-formats';\nimport metaSchemaJson from '../schema/meta.schema.json' with { type: 'json' };\nimport packSchemaJson from '../schema/pack.schema.json' with { type: 'json' };\n\nconst ajv = new Ajv({ strict: true, allErrors: false });\naddFormats(ajv, ['uuid']);\n\n// Module-top-level compiled validators - compiled once on import, never recreated.\nexport const validateMeta = ajv.compile(metaSchemaJson);\nexport const validatePack = ajv.compile(packSchemaJson);\n\nexport function validatePackV2(value: unknown): value is PackV2 {\n if (!validatePack(value) || !isPackV2Shape(value)) return false;\n\n const seenGuids = new Set<string>();\n for (const asset of value.assets) {\n if (seenGuids.has(asset.guid)) return false;\n seenGuids.add(asset.guid);\n }\n return true;\n}\n\nfunction isPackV2Shape(value: unknown): value is PackV2 {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'schemaVersion' in value &&\n value.schemaVersion === '2.0.0'\n );\n}\n\n// === SceneAsset payload validator factory (feat-20260514 w5 / D-P4) =============\n//\n// Decision anchors:\n// - plan-strategy §D-P4 (per-component additionalProperties:false, path a;\n// path b \"extend PackErrorDetail\" rejected to keep the 8-member\n// PackErrorCode closed union frozen)\n// - requirements §AC-08(b) (typo field name fail-fast through ajv with the\n// verbatim 'additional properties' message wording)\n// - requirements §AC-10 (no new SceneErrorCode / PackErrorCode introduced)\n//\n// `buildSceneAssetValidator(componentSchemas)` returns a fresh ajv\n// `ValidateFunction` whose JSON Schema sub-tree describes:\n// {\n// kind: 'scene',\n// nodes: SceneEntity[]\n// }\n// where each SceneEntity has the closed shape\n// { localId: integer, components: <closed map keyed by registered tokens> }\n// and the per-component sub-schema is composed verbatim from the caller's\n// `componentSchemas[name]` entry. `additionalProperties: false` is applied\n// at three layers: top-level SceneAsset, SceneEntity, and SceneEntity.components,\n// so ajv emits an `additional properties` ajvError on any typo or unknown\n// component token (AC-08(b)).\n//\n// The runtime layer feeds `componentSchemas` from the live `defineComponent`\n// registry; this factory itself stays ECS-free (charter proposition 5\n// consistent abstraction: pack package is layered below ecs and runtime,\n// the per-component schemas arrive as plain ajv-compatible JSON Schema\n// objects).\nexport function buildSceneAssetValidator(\n componentSchemas: Readonly<Record<string, object>>,\n): ValidateFunction {\n // Use a separate ajv instance so the dynamically registered closed map of\n // component sub-schemas does not pollute the module-top-level validators\n // above (they may be re-built across test fixtures with different\n // component sets).\n const localAjv = new Ajv({ strict: true, allErrors: false });\n addFormats(localAjv, ['uuid']);\n\n const componentsProperties: Record<string, object> = {};\n for (const [name, sub] of Object.entries(componentSchemas)) {\n componentsProperties[name] = sub;\n }\n\n const componentsSchema = {\n type: 'object',\n additionalProperties: false,\n properties: componentsProperties,\n };\n const instanceSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['source'],\n properties: {\n // Authored scenes use a GUID string. Pack output may carry a refs[]\n // index, which is resolved by the Scene decoder before instantiation.\n source: {\n oneOf: [\n { type: 'string', minLength: 1 },\n { type: 'integer', minimum: 0 },\n ],\n },\n overrides: {\n type: 'array',\n items: {\n type: 'object',\n additionalProperties: false,\n required: ['target', 'components'],\n properties: {\n target: { type: 'array', minItems: 1, items: { type: 'string', minLength: 1 } },\n components: componentsSchema,\n },\n },\n },\n },\n };\n const entitySchema = {\n type: 'object',\n additionalProperties: false,\n required: ['components'],\n properties: {\n components: componentsSchema,\n instance: instanceSchema,\n },\n };\n const sceneSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['kind', 'entities'],\n properties: {\n kind: { type: 'string', const: 'scene' },\n // Skin assets are explicit scene dependencies so async catalog loading\n // can finish the joint-wiring path before the Scene is instantiated.\n // Authored producers use GUID strings; Pack output may use refs[] indices.\n skinGuids: {\n type: 'array',\n items: {\n oneOf: [\n { type: 'string', minLength: 1 },\n { type: 'integer', minimum: 0 },\n ],\n },\n },\n entities: {\n type: 'object',\n propertyNames: { type: 'string', minLength: 1 },\n additionalProperties: entitySchema,\n },\n },\n };\n\n return localAjv.compile(sceneSchema);\n}\n\n// === MaterialAsset payload validator factory (feat-20260523-shader-template-instance-split M1-T06) ===\n//\n// Decision anchors:\n// - plan-strategy D-PackKind (factory pattern, same shape as buildSceneAssetValidator)\n// - plan-strategy D-ParamTypeWhitelist (paramTypeWhitelist consumed here)\n// - requirements AC-04 (v1 type set SSOT; validator covers all param type boundaries)\n//\n// `buildMaterialAssetValidator(paramTypeWhitelist)` returns an ajv\n// `ValidateFunction` that validates:\n// {\n// materialShader: string,\n// paramSchema: ParamSchemaEntry[],\n// values: object\n// }\n// Each ParamSchemaEntry.type must be in the whitelist (D-ParamTypeWhitelist).\n// `additionalProperties: false` at top level so ajv rejects unknown fields.\n// values is free-form (object) — the runtime layer does deeper validation.\n//\n// Uses a separate ajv instance per call so different whitelists across\n// test fixtures do not pollute the module-top-level validators.\nexport function buildMaterialAssetValidator(\n paramTypeWhitelist: ReadonlySet<string>,\n): ValidateFunction {\n const localAjv = new Ajv({ strict: true, allErrors: false });\n\n const whitelistEnum = Array.from(paramTypeWhitelist);\n\n const paramSchemaEntry = {\n type: 'object',\n additionalProperties: false,\n required: ['name', 'type'],\n properties: {\n name: { type: 'string', minLength: 1 },\n type: { type: 'string', enum: whitelistEnum },\n default: {},\n },\n };\n\n const materialSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['materialShader', 'paramSchema', 'values'],\n properties: {\n materialShader: { type: 'string', minLength: 1 },\n paramSchema: {\n type: 'array',\n items: paramSchemaEntry,\n },\n values: { type: 'object' },\n },\n };\n\n return localAjv.compile(materialSchema);\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://github.com/ForgeaXGame/forgeax-engine/packages/pack/schema/meta.schema.json\",\n \"title\": \"ExternalAssetPackage\",\n \"description\": \"Schema for .meta.json files describing an external asset package (source file + import settings + derived sub-assets).\",\n \"$comment\": \"ScriptablePack durable consumer kinds are published by SCRIPTABLE_PACK_ASSET_KINDS in @forgeax/engine-pack/source; Meta sub-asset kind remains open for producer extensions.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schemaVersion\", \"kind\", \"importer\", \"importSettings\", \"subAssets\"],\n \"properties\": {\n \"schemaVersion\": {\n \"oneOf\": [{ \"type\": \"string\" }, { \"type\": \"integer\" }],\n \"description\": \"Schema version. Strings (e.g. '1.0.0') for hand-authored .meta.json; integers (1, 2, ...) for importer-emitted .meta.json (forgeax asset import writes schemaVersion: 1 as the wire format SSOT, GltfMetaJson literal type).\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"external-asset-package\",\n \"description\": \"Discriminator for the external asset package type.\"\n },\n \"packageId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable producer-owned package identity. It survives package moves; path is only a locator.\"\n },\n \"provenance\": {\n \"$ref\": \"#/$defs/provenance\"\n },\n \"revision\": {\n \"$ref\": \"#/$defs/revision\"\n },\n \"diagnostics\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/diagnostic\" }\n },\n \"importer\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Open importer key (feat-20260603-asset-import-loader-injection M2): the @forgeax/engine-import runner dispatches the sidecar to the Importer registered under this key. Replaces the former closed `assetType` enum (one-cut migration, no shim). Known keys: 'image' (engine-image importer, single-image source), 'gltf' (engine-gltf importer, .gltf/.glb source), 'audio' (engine-audio-webaudio import path), 'font' (engine-font bake path), and the reserved 'shader' key consumed by engine-vite-plugin-shader's orthogonal transform pipeline (the import runner explicitly skips it). Adding a new importer needs only a registered Importer under a new key - no schema enum edit. Orthogonal to subAssets[].kind which identifies per-sub-asset payload kind.\"\n },\n \"source\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Optional. Omit to derive the companion file in the same directory (strip .meta.json suffix from the meta filename). An explicit source is resolved relative to this sidecar.\"\n },\n \"importSettings\": {\n \"type\": \"object\",\n \"description\": \"Importer-specific settings. Free-form object. Common texture keys: compressionMode ('auto' | 'etc1s' | 'uastc' | 'none', default 'auto'; see @forgeax/engine-image README), mipmap (boolean, bake mip chain offline).\"\n },\n \"sourceOverrides\": {\n \"type\": \"object\",\n \"description\": \"Optional producer-owned Meta author facts keyed by declared subAssets[].sourceKey. An empty object is legacy-equivalent and omitted by canonical writers.\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"description\": \"Producer-owned payload; the pack schema validates object shape and the producer contract validates sourceKey identity.\",\n \"additionalProperties\": true\n }\n },\n \"sourceOverrideDescriptors\": {\n \"type\": \"array\",\n \"description\": \"Producer-declared authoring contracts for stable source override keys.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"sourceKey\", \"payloadSchema\"],\n \"properties\": {\n \"sourceKey\": { \"type\": \"string\", \"minLength\": 1 },\n \"semantic\": { \"type\": \"string\", \"enum\": [\"mesh-material-slot-defaults\"] },\n \"payloadSchema\": { \"type\": \"object\" }\n }\n }\n },\n \"paramSchema\": {\n \"type\": \"array\",\n \"description\": \"Material-shader parameter schema (feat-20260528-material-shader-registration-unification). Only valid when importer is 'shader'. Each entry has name (string) and type (string) with an optional default.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"name\", \"type\"],\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"type\": { \"type\": \"string\" },\n \"default\": {}\n }\n }\n },\n \"subAssets\": {\n \"type\": \"array\",\n \"description\": \"Derived sub-assets extracted from the source file.\",\n \"items\": {\n \"$ref\": \"#/$defs/subAsset\"\n }\n }\n },\n \"$defs\": {\n \"subAsset\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"guid\", \"sourceIndex\", \"kind\"],\n \"properties\": {\n \"guid\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"description\": \"RFC 4122 36-char dash-form UUID identifying this sub-asset.\"\n },\n \"sourceIndex\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"description\": \"Zero-based index into the source file's exported objects.\"\n },\n \"sourceKey\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Producer-owned stable key used to match this output across reimport topology changes.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Optional display-friendly name for this sub-asset. Copied from the source (e.g. glTF image.name / mesh.name) so the sidecar is human-inspectable. Has no runtime semantic weight.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Open sub-asset kind string (feat-20260629-importer-self-declared-fold-contract M3 / D-1 scheme A): the prior closed enum is removed — any non-empty string is accepted at the schema layer. Known engine-owned kinds: mesh, material, scene, texture, equirect, material-shader, skeleton, skin, animation-clip, audio, font. Host-defined importers declare their own kind values (e.g. 'reel-game-blob') and the schema layer admits them without modification. Validation of unknown kinds is deferred to the fold/import layer where the ImporterRegistry is available. The field itself (subAssets[].kind) is retained (OOS-2: no field deletion, only enum removal).\"\n }\n }\n },\n \"provenance\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"provider\", \"version\"],\n \"properties\": {\n \"provider\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 },\n \"source\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"revision\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"digest\", \"observedAt\", \"rootId\"],\n \"properties\": {\n \"digest\": { \"type\": \"string\", \"minLength\": 1 },\n \"observedAt\": { \"type\": \"number\" },\n \"rootId\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"diagnostic\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"code\", \"severity\"],\n \"properties\": {\n \"code\": { \"type\": \"string\", \"minLength\": 1 },\n \"severity\": { \"type\": \"string\", \"enum\": [\"info\", \"warning\", \"blocking\"] },\n \"message\": { \"type\": \"string\" },\n \"subject\": { \"$ref\": \"#/$defs/subject\" },\n \"expected\": { \"type\": \"string\", \"minLength\": 1 },\n \"actual\": { \"type\": \"string\" },\n \"hint\": { \"type\": \"string\", \"minLength\": 1 },\n \"authority\": { \"type\": \"string\", \"enum\": [\"producer\", \"pack\", \"catalog\"] },\n \"evidence\": { \"type\": \"array\", \"items\": { \"type\": \"object\" } },\n \"recoveryIntents\": { \"type\": \"array\", \"items\": { \"type\": \"string\", \"minLength\": 1 } }\n }\n },\n \"subject\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\"],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": [\"asset\", \"package\", \"resource\"] },\n \"id\": { \"type\": \"string\", \"minLength\": 1 }\n }\n }\n }\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://github.com/ForgeaXGame/forgeax-engine/packages/pack/schema/pack.schema.json\",\n \"title\": \"InternalTextPackage\",\n \"description\": \"Schema for authored and cooked internal text packages.\",\n \"$comment\": \"The ordinary durable consumer matrix is SCRIPTABLE_PACK_ASSET_KINDS in @forgeax/engine-pack/source. Pack kind fields remain open for registered producer extensions.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schemaVersion\"],\n \"properties\": {\n \"schemaVersion\": {\n \"type\": \"string\",\n \"enum\": [\"1.0.0\", \"2.0.0\", \"3.0.0\"]\n },\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"internal-text-package\"\n },\n \"packageId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable producer-owned package identity. It survives package moves; path is only a locator.\"\n },\n \"provenance\": {\n \"$ref\": \"#/$defs/provenance\"\n },\n \"revision\": {\n \"$ref\": \"#/$defs/revision\"\n },\n \"diagnostics\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/diagnostic\" }\n },\n \"assets\": {\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/asset\" }\n },\n { \"$ref\": \"#/$defs/authoringAssets\" }\n ]\n },\n \"parent\": {\n \"$ref\": \"#/$defs/guid36\",\n \"description\": \"Parent ScriptablePack packageId for one v3 instance; the source may declare Pack parameters.\"\n },\n \"values\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"description\": \"Sparse shallow parameter overrides for one v3 instance.\"\n }\n },\n \"oneOf\": [\n {\n \"required\": [\"kind\", \"assets\"],\n \"properties\": {\n \"schemaVersion\": { \"enum\": [\"1.0.0\", \"2.0.0\"] },\n \"kind\": { \"const\": \"internal-text-package\" },\n \"assets\": { \"type\": \"array\" },\n \"parent\": false,\n \"values\": false\n }\n },\n {\n \"required\": [\"packageId\", \"assets\"],\n \"properties\": {\n \"schemaVersion\": { \"const\": \"3.0.0\" },\n \"kind\": false,\n \"packageId\": { \"$ref\": \"#/$defs/guid36\" },\n \"assets\": { \"$ref\": \"#/$defs/authoringAssets\" },\n \"parent\": false,\n \"values\": false\n }\n },\n {\n \"required\": [\"packageId\", \"parent\", \"values\"],\n \"properties\": {\n \"schemaVersion\": { \"const\": \"3.0.0\" },\n \"kind\": false,\n \"packageId\": { \"$ref\": \"#/$defs/guid36\" },\n \"parent\": { \"$ref\": \"#/$defs/guid36\" },\n \"values\": { \"type\": \"object\" },\n \"assets\": false\n }\n }\n ],\n \"allOf\": [\n {\n \"if\": {\n \"required\": [\"packageId\"],\n \"properties\": {\n \"packageId\": {},\n \"schemaVersion\": { \"const\": \"2.0.0\" }\n }\n },\n \"then\": {\n \"type\": \"object\",\n \"properties\": {\n \"assets\": {\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [\n { \"$ref\": \"#/$defs/assetV2\" },\n {\n \"type\": \"object\",\n \"properties\": { \"execution\": {} },\n \"required\": [\"execution\"]\n }\n ]\n }\n }\n }\n }\n }\n ],\n \"$defs\": {\n \"guid36\": {\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n \"asset\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"guid\", \"kind\", \"payload\", \"refs\"],\n \"properties\": {\n \"guid\": {\n \"$ref\": \"#/$defs/guid36\",\n \"description\": \"Unique GUID for this asset entry.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Asset kind identifier, e.g. 'MaterialAsset'.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Optional display name for this asset. Add-only field for backward compatibility with old pack files that lack it.\"\n },\n \"sourceKey\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Producer-owned stable key used to match imported output topology.\"\n },\n \"sourceIndex\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Producer-declared output position; not an identity key when sourceKey is present.\"\n },\n \"execution\": {\n \"type\": \"string\",\n \"enum\": [\"direct\", \"cooked\"],\n \"description\": \"Explicit authoring execution mode; never inferred from package path.\"\n },\n \"payload\": {\n \"type\": \"object\",\n \"description\": \"Serialized asset payload. Free-form object.\"\n },\n \"refs\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/guid36\" }\n },\n \"artifacts\": { \"$ref\": \"#/$defs/artifacts\" }\n }\n },\n \"assetV2\": {\n \"allOf\": [\n { \"$ref\": \"#/$defs/asset\" },\n {\n \"type\": \"object\",\n \"required\": [\"artifacts\"],\n \"properties\": {\n \"artifacts\": { \"$ref\": \"#/$defs/artifacts\" }\n }\n }\n ]\n },\n \"authoringAssets\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^[a-z0-9][a-z0-9._-]*(/[a-z0-9][a-z0-9._-]*)*$\": {\n \"$ref\": \"#/$defs/authoringAsset\"\n }\n }\n },\n \"authoringAsset\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"kind\", \"payload\", \"refs\"],\n \"properties\": {\n \"kind\": { \"type\": \"string\", \"minLength\": 1 },\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"payload\": { \"type\": \"object\" },\n \"refs\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/guid36\" }\n },\n \"artifacts\": { \"$ref\": \"#/$defs/artifacts\" }\n }\n },\n \"artifacts\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^[A-Za-z0-9][A-Za-z0-9._/-]*$\": {\n \"$ref\": \"#/$defs/artifactDescriptor\"\n }\n }\n },\n \"artifactDescriptor\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"path\", \"mediaType\"],\n \"properties\": {\n \"path\": { \"type\": \"string\", \"minLength\": 1 },\n \"mediaType\": { \"type\": \"string\", \"minLength\": 1 },\n \"assetCodec\": { \"$ref\": \"#/$defs/assetCodec\" },\n \"contentEncoding\": { \"enum\": [\"identity\", \"zstd\"] },\n \"byteLength\": { \"type\": \"integer\", \"minimum\": 0 },\n \"integrity\": { \"$ref\": \"#/$defs/integrity\" }\n }\n },\n \"assetCodec\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"name\"],\n \"properties\": {\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"profile\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"integrity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"algorithm\", \"digest\"],\n \"properties\": {\n \"algorithm\": { \"const\": \"sha256\" },\n \"digest\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"provenance\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"provider\", \"version\"],\n \"properties\": {\n \"provider\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 },\n \"source\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"revision\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"digest\", \"observedAt\", \"rootId\"],\n \"properties\": {\n \"digest\": { \"type\": \"string\", \"minLength\": 1 },\n \"observedAt\": { \"type\": \"number\" },\n \"rootId\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"diagnostic\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"code\", \"severity\"],\n \"properties\": {\n \"code\": { \"type\": \"string\", \"minLength\": 1 },\n \"severity\": { \"type\": \"string\", \"enum\": [\"info\", \"warning\", \"blocking\"] },\n \"message\": { \"type\": \"string\" },\n \"subject\": { \"$ref\": \"#/$defs/subject\" },\n \"expected\": { \"type\": \"string\", \"minLength\": 1 },\n \"actual\": { \"type\": \"string\" },\n \"hint\": { \"type\": \"string\", \"minLength\": 1 },\n \"authority\": { \"type\": \"string\", \"enum\": [\"producer\", \"pack\", \"catalog\"] },\n \"evidence\": { \"type\": \"array\", \"items\": { \"type\": \"object\" } },\n \"recoveryIntents\": { \"type\": \"array\", \"items\": { \"type\": \"string\", \"minLength\": 1 } }\n }\n },\n \"subject\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\"],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": [\"asset\", \"package\", \"resource\"] },\n \"id\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"relation\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"from\", \"to\", \"type\", \"provenance\"],\n \"properties\": {\n \"from\": { \"$ref\": \"#/$defs/subject\" },\n \"to\": { \"$ref\": \"#/$defs/subject\" },\n \"type\": { \"type\": \"string\", \"minLength\": 1 },\n \"policy\": { \"type\": \"object\" },\n \"provenance\": { \"$ref\": \"#/$defs/provenance\" }\n }\n }\n }\n}\n","import { createHash } from 'node:crypto';\nimport { existsSync } from 'node:fs';\nimport { mkdtemp, readFile, realpath, rm, stat } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { dirname, extname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { Worker } from 'node:worker_threads';\nimport type { AssetGuid, Result } from '@forgeax/engine-types';\nimport { AssetError, err, ImportError, ok } from '@forgeax/engine-types';\nimport ts from 'typescript';\nimport {\n type ProducerSemanticIdentityInput,\n producerRelativeDdcKey,\n} from './evidence/source-inventory.js';\nimport {\n type AnyScriptablePackDefinition,\n type PackAuthoringError,\n type PackBuildContextWithoutParameters,\n type PackBuildResult,\n validatePackDefinition,\n} from './pack-authoring.js';\nimport type { AssetReader, ScriptablePackSourceClosureEntry } from './scriptable-pack.js';\n\nconst IMPORT_META_RESOLVE_FLAG = '--experimental-import-meta-resolve';\n\nfunction scriptablePackWorkerExecArgv(): string[] {\n // import.meta.resolve(parentURL) is the canonical ESM resolver, but Node\n // keeps its parentURL overload behind this flag. Filter --input-type as\n // well: stdin/eval hosts may pass it through process.execArgv, and Node\n // rejects that option inside a file-backed worker.\n const inherited = process.execArgv.filter((arg) => !arg.startsWith('--input-type'));\n return inherited.includes(IMPORT_META_RESOLVE_FLAG)\n ? inherited\n : [...inherited, IMPORT_META_RESOLVE_FLAG];\n}\n\nexport interface ScriptablePackModuleExecutor {\n load(sourcePath: string): Promise<unknown>;\n dispose?(reason: 'complete' | 'timeout' | 'failure'): void | Promise<void>;\n}\n\ninterface SerializedScriptablePackBuildContext {\n readonly packageId: readonly number[];\n readonly values?: Readonly<Record<string, unknown>>;\n}\n\ninterface WorkerBackedScriptablePackExecutor {\n readonly supportsPackParameters: true;\n}\n\nexport interface ScriptablePackModuleExecutorPool {\n acquire(): Promise<ScriptablePackModuleExecutor>;\n dispose(): Promise<void>;\n}\n\nexport interface ScriptablePackModuleExecutorPoolOptions {\n readonly maxWorkers?: number;\n readonly maxTasksPerWorker?: number;\n}\n\nexport function scriptablePackDdcKey(input: ProducerSemanticIdentityInput): string {\n return producerRelativeDdcKey(input);\n}\n\nexport interface OptionalBuildCache<T> {\n readonly read: () => Promise<T | null>;\n readonly coldCook: () => Promise<T>;\n}\n\n/** Build CAS is a performance hint; source cold cook remains the correctness path. */\nexport async function readOptionalBuildCache<T>(cache: OptionalBuildCache<T>): Promise<{\n readonly value: T;\n readonly fromCache: boolean;\n}> {\n try {\n const cached = await cache.read();\n if (cached !== null) return { value: cached, fromCache: true };\n } catch {\n // Cache deletion, read-only storage, and corrupt optional objects fail open.\n }\n return { value: await cache.coldCook(), fromCache: false };\n}\n\nasync function resolveRelativeImport(\n sourcePath: string,\n specifier: string,\n): Promise<string | undefined> {\n if (!specifier.startsWith('.')) return undefined;\n const raw = resolve(dirname(sourcePath), specifier);\n const candidates =\n extname(raw).length > 0\n ? [raw]\n : [\n raw,\n `${raw}.ts`,\n `${raw}.tsx`,\n `${raw}.mts`,\n `${raw}.js`,\n `${raw}.mjs`,\n `${raw}.json`,\n resolve(raw, 'index.ts'),\n ];\n for (const candidate of candidates) {\n try {\n if ((await stat(candidate)).isFile()) return candidate;\n } catch {\n // Continue through deterministic extension candidates.\n }\n }\n return undefined;\n}\n\n/** Capture one immutable ScriptablePack module closure for inventory and production. */\nexport async function inventoryScriptablePackSource(\n sourcePath: string,\n initialSourceText?: string,\n): Promise<readonly ScriptablePackSourceClosureEntry[]> {\n const root = await realpath(sourcePath);\n const pending = [root];\n const seen = new Set<string>();\n const entries: ScriptablePackSourceClosureEntry[] = [];\n while (pending.length > 0) {\n const path = pending.pop();\n if (path === undefined || seen.has(path)) continue;\n seen.add(path);\n const bytes =\n path === root && initialSourceText !== undefined\n ? new TextEncoder().encode(initialSourceText)\n : await readFile(path);\n entries.push({ path, digest: `sha256:${createHash('sha256').update(bytes).digest('hex')}` });\n const source = new TextDecoder().decode(bytes);\n for (const imported of ts.preProcessFile(source, true, true).importedFiles) {\n const resolved = await resolveRelativeImport(path, imported.fileName);\n if (resolved !== undefined) pending.push(await realpath(resolved));\n }\n }\n return entries.sort((left, right) => left.path.localeCompare(right.path));\n}\n\ninterface StructuredFailure {\n readonly name?: unknown;\n readonly code?: unknown;\n readonly expected?: unknown;\n readonly actual?: unknown;\n readonly hint?: unknown;\n readonly detail?: unknown;\n readonly message?: unknown;\n}\n\nfunction serializeFailure(value: unknown): StructuredFailure {\n if (value !== null && typeof value === 'object') {\n const failure = value as Record<string, unknown>;\n return {\n name: failure.name,\n code: failure.code,\n expected: failure.expected,\n actual: failure.actual,\n hint: failure.hint,\n detail: failure.detail,\n message: failure.message,\n };\n }\n return { message: String(value) };\n}\n\nfunction hydrateFailure(value: unknown): unknown {\n if (value === null || typeof value !== 'object') return value;\n const failure = value as StructuredFailure;\n if (\n failure.name === 'AssetError' &&\n typeof failure.code === 'string' &&\n typeof failure.expected === 'string' &&\n typeof failure.hint === 'string'\n ) {\n const args = {\n code: failure.code as ConstructorParameters<typeof AssetError>[0]['code'],\n expected: failure.expected,\n hint: failure.hint,\n };\n return failure.detail === undefined\n ? new AssetError(args)\n : new AssetError({\n ...args,\n detail: failure.detail as NonNullable<\n ConstructorParameters<typeof AssetError>[0]['detail']\n >,\n });\n }\n if (\n failure.name === 'ImportError' &&\n typeof failure.code === 'string' &&\n typeof failure.expected === 'string' &&\n typeof failure.hint === 'string' &&\n failure.detail !== undefined\n ) {\n return new ImportError({\n code: failure.code as ConstructorParameters<typeof ImportError>[0]['code'],\n expected: failure.expected,\n hint: failure.hint,\n detail: failure.detail as ConstructorParameters<typeof ImportError>[0]['detail'],\n ...(typeof failure.actual === 'string' ? { actual: failure.actual } : {}),\n });\n }\n if (typeof failure.message === 'string') {\n const error = new Error(failure.message);\n if (typeof failure.name === 'string') error.name = failure.name;\n return error;\n }\n return value;\n}\n\nclass WorkerScriptablePackExecutor\n implements ScriptablePackModuleExecutor, WorkerBackedScriptablePackExecutor\n{\n readonly supportsPackParameters = true as const;\n private worker: Worker | undefined;\n private compileRoot: string | undefined;\n private nextBuildId = 0;\n private disposal: Promise<void> | undefined;\n private build:\n | {\n readonly id: number;\n readonly reader: AssetReader;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n\n async load(sourcePath: string): Promise<unknown> {\n const workerUrl = scriptablePackWorkerUrl();\n const compileRoot = await mkdtemp(resolve(tmpdir(), 'forgeax-scriptable-pack-'));\n this.compileRoot = compileRoot;\n const worker = new Worker(workerUrl, {\n workerData: { sourcePath: resolve(sourcePath), compileRoot },\n execArgv: scriptablePackWorkerExecArgv(),\n resourceLimits: { maxOldGenerationSizeMb: 256, maxYoungGenerationSizeMb: 64 },\n });\n this.worker = worker;\n worker.on('message', (message: unknown) => this.onMessage(message));\n worker.unref();\n return new Promise((resolveLoad, rejectLoad) => {\n const onMessage = (message: unknown): void => {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n if (value.kind === 'loaded') {\n // The scan keeps this executor alive for the later no-reopen build\n // route, but an idle source worker must not keep a Vite/Vitest host\n // process alive after its own work has settled.\n worker.unref();\n worker.off('message', onMessage);\n resolveLoad({\n default:\n value.definition === undefined\n ? undefined\n : {\n ...(value.definition as Record<string, unknown>),\n build: (\n readByGuid: AssetReader['readByGuid'],\n context?: SerializedScriptablePackBuildContext,\n ) => this.runBuild({ readByGuid }, context),\n },\n });\n } else if (value.kind === 'load-threw') {\n worker.off('message', onMessage);\n rejectLoad(hydrateFailure(value.error));\n }\n };\n worker.on('message', onMessage);\n const fail = (error: Error): void => {\n rejectLoad(error);\n const active = this.build;\n this.build = undefined;\n active?.reject(error);\n void this.dispose('failure');\n };\n worker.once('error', fail);\n worker.once('exit', (code) => {\n if (this.disposal !== undefined) return;\n fail(new Error(`ScriptablePack worker exited with code ${code}`));\n });\n });\n }\n\n dispose(reason: 'complete' | 'timeout' | 'failure' = 'complete'): Promise<void> {\n if (this.disposal !== undefined) return this.disposal;\n const worker = this.worker;\n this.worker = undefined;\n const compileRoot = this.compileRoot;\n this.compileRoot = undefined;\n const active = this.build;\n this.build = undefined;\n if (active !== undefined) {\n active.reject(new Error(`ScriptablePack build disposed during ${reason}`));\n }\n this.disposal = (async () => {\n if (worker !== undefined) await worker.terminate();\n if (compileRoot !== undefined) await rm(compileRoot, { recursive: true, force: true });\n })();\n return this.disposal;\n }\n\n private runBuild(\n reader: AssetReader,\n context?: SerializedScriptablePackBuildContext,\n ): Promise<unknown> {\n const worker = this.worker;\n if (worker === undefined) return Promise.reject(new Error('ScriptablePack worker is closed'));\n if (this.build !== undefined)\n return Promise.reject(new Error('ScriptablePack worker already has an active build'));\n const id = this.nextBuildId++;\n return new Promise((resolveBuild, rejectBuild) => {\n this.build = { id, reader, resolve: resolveBuild, reject: rejectBuild };\n worker.postMessage({ kind: 'build', buildId: id, context });\n });\n }\n\n private onMessage(message: unknown): void {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n const active = this.build;\n if (active === undefined || value.buildId !== active.id) return;\n if (value.kind === 'asset-read' && typeof value.readId === 'number') {\n void active.reader\n .readByGuid(value.guid as AssetGuid)\n .then((result) =>\n this.worker?.postMessage({\n kind: 'asset-result',\n readId: value.readId,\n result:\n result.ok === true ? result : { ...result, error: serializeFailure(result.error) },\n }),\n )\n .catch((error: unknown) => {\n if (this.build?.id !== active.id) return;\n this.build = undefined;\n active.reject(error);\n void this.dispose('failure');\n });\n return;\n }\n this.build = undefined;\n if (value.kind === 'build-result') active.resolve(value.result);\n else if (value.kind === 'build-threw') active.reject(hydrateFailure(value.error));\n else this.build = active;\n }\n}\n\nfunction scriptablePackWorkerUrl(): URL {\n const bundledWorker = new URL('./scriptable-pack-worker.mjs', import.meta.url);\n return existsSync(fileURLToPath(bundledWorker))\n ? bundledWorker\n : new URL('../dist/scriptable-pack-worker.mjs', import.meta.url);\n}\n\nclass ReusableWorkerScriptablePackExecutor\n implements ScriptablePackModuleExecutor, WorkerBackedScriptablePackExecutor\n{\n readonly supportsPackParameters = true as const;\n private readonly worker: Worker;\n private readonly compileRootReady = mkdtemp(resolve(tmpdir(), 'forgeax-scriptable-pack-pool-'));\n private compileRoot: string | undefined;\n private nextLoadId = 0;\n private nextBuildId = 0;\n private pendingLoad:\n | {\n readonly id: number;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n private build:\n | {\n readonly id: number;\n readonly reader: AssetReader;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n private disposal: Promise<void> | undefined;\n private forceDispose = false;\n private failed = false;\n private taskCount = 0;\n private released = false;\n\n constructor(\n private readonly maxTasksPerWorker: number,\n private readonly release: (\n executor: ReusableWorkerScriptablePackExecutor,\n reusable: boolean,\n ) => void,\n ) {\n this.worker = new Worker(scriptablePackWorkerUrl(), {\n workerData: { mode: 'reusable' },\n execArgv: scriptablePackWorkerExecArgv(),\n resourceLimits: { maxOldGenerationSizeMb: 256, maxYoungGenerationSizeMb: 64 },\n });\n this.worker.on('message', (message: unknown) => this.onMessage(message));\n this.worker.on('error', (error: Error) => {\n this.failed = true;\n this.rejectActive(error);\n void this.dispose('failure');\n });\n this.worker.on('exit', (code) => {\n if (this.disposal !== undefined) return;\n this.failed = true;\n this.rejectActive(new Error(`ScriptablePack worker exited with code ${code}`));\n void this.dispose('failure');\n });\n // Listener registration can retain the worker's MessagePort in Node.\n // A reusable worker must not keep a completed Vite build alive while its\n // pool is draining; it still processes messages while the host is live.\n this.worker.unref();\n }\n\n async load(sourcePath: string): Promise<unknown> {\n const activeDisposal = this.disposal;\n if (activeDisposal !== undefined) {\n await activeDisposal;\n if (this.failed) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n this.disposal = undefined;\n }\n this.released = false;\n if (this.pendingLoad !== undefined || this.build !== undefined) {\n return Promise.reject(new Error('ScriptablePack executor already has an active task'));\n }\n const compileRoot = this.compileRoot ?? (await this.compileRootReady);\n if (this.disposal !== undefined) {\n const disposal = this.disposal;\n await disposal;\n if (this.failed) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n this.disposal = undefined;\n }\n const loadId = this.nextLoadId++;\n this.compileRoot = compileRoot;\n this.taskCount += 1;\n return new Promise((resolveLoad, rejectLoad) => {\n this.pendingLoad = { id: loadId, resolve: resolveLoad, reject: rejectLoad };\n try {\n this.worker.postMessage({\n kind: 'load',\n loadId,\n sourcePath: resolve(sourcePath),\n compileRoot,\n });\n } catch (error) {\n this.pendingLoad = undefined;\n rejectLoad(error);\n void this.dispose('failure');\n }\n });\n }\n\n dispose(reason: 'complete' | 'timeout' | 'failure' = 'complete'): Promise<void> {\n if (reason === 'failure') this.forceDispose = true;\n const activeDisposal = this.disposal;\n if (activeDisposal !== undefined) {\n return activeDisposal;\n }\n this.rejectActive(new Error(`ScriptablePack task disposed during ${reason}`));\n this.disposal = (async () => {\n const compileRoot = this.compileRoot ?? (await this.compileRootReady);\n const reusable =\n reason === 'complete' &&\n !this.failed &&\n !this.forceDispose &&\n this.taskCount < this.maxTasksPerWorker;\n this.forceDispose = false;\n if (!reusable) {\n this.compileRoot = undefined;\n await this.worker.terminate();\n await rm(compileRoot, { recursive: true, force: true });\n }\n this.released = true;\n this.disposal = undefined;\n this.release(this, reusable);\n })();\n return this.disposal;\n }\n\n private rejectActive(error: unknown): void {\n const loading = this.pendingLoad;\n this.pendingLoad = undefined;\n loading?.reject(error);\n const building = this.build;\n this.build = undefined;\n building?.reject(error);\n }\n\n private runBuild(\n reader: AssetReader,\n context?: SerializedScriptablePackBuildContext,\n ): Promise<unknown> {\n if (this.released || this.disposal !== undefined) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n if (this.build !== undefined) {\n return Promise.reject(new Error('ScriptablePack worker already has an active build'));\n }\n const id = this.nextBuildId++;\n return new Promise((resolveBuild, rejectBuild) => {\n this.build = { id, reader, resolve: resolveBuild, reject: rejectBuild };\n try {\n this.worker.postMessage({ kind: 'build', buildId: id, context });\n } catch (error) {\n this.build = undefined;\n rejectBuild(error);\n void this.dispose('failure');\n }\n });\n }\n\n private onMessage(message: unknown): void {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n const loading = this.pendingLoad;\n if (loading !== undefined && value.kind === 'loaded' && value.loadId === loading.id) {\n this.pendingLoad = undefined;\n loading.resolve({\n default:\n value.definition === undefined\n ? undefined\n : {\n ...(value.definition as Record<string, unknown>),\n build: (\n readByGuid: AssetReader['readByGuid'],\n context?: SerializedScriptablePackBuildContext,\n ) => this.runBuild({ readByGuid }, context),\n },\n });\n return;\n }\n if (loading !== undefined && value.kind === 'load-threw' && value.loadId === loading.id) {\n this.pendingLoad = undefined;\n loading.reject(hydrateFailure(value.error));\n return;\n }\n const active = this.build;\n if (active === undefined || value.buildId !== active.id) return;\n if (value.kind === 'asset-read' && typeof value.readId === 'number') {\n void active.reader\n .readByGuid(value.guid as AssetGuid)\n .then((result) =>\n this.worker.postMessage({\n kind: 'asset-result',\n readId: value.readId,\n result:\n result.ok === true ? result : { ...result, error: serializeFailure(result.error) },\n }),\n )\n .catch((error: unknown) => {\n if (this.build?.id !== active.id) return;\n this.build = undefined;\n active.reject(error);\n void this.dispose('failure');\n });\n return;\n }\n this.build = undefined;\n if (value.kind === 'build-result') active.resolve(value.result);\n else if (value.kind === 'build-threw') active.reject(hydrateFailure(value.error));\n else this.build = active;\n }\n}\n\nclass DefaultScriptablePackModuleExecutorPool implements ScriptablePackModuleExecutorPool {\n private readonly maxWorkers: number;\n private readonly maxTasksPerWorker: number;\n private readonly idle: ReusableWorkerScriptablePackExecutor[] = [];\n private readonly waiters: {\n readonly resolve: (executor: ScriptablePackModuleExecutor) => void;\n readonly reject: (reason: unknown) => void;\n }[] = [];\n private readonly executors = new Set<ReusableWorkerScriptablePackExecutor>();\n private workerCount = 0;\n private closed = false;\n\n constructor(options: ScriptablePackModuleExecutorPoolOptions = {}) {\n this.maxWorkers = Math.max(1, Math.trunc(options.maxWorkers ?? 2));\n this.maxTasksPerWorker = Math.max(1, Math.trunc(options.maxTasksPerWorker ?? 32));\n }\n\n acquire(): Promise<ScriptablePackModuleExecutor> {\n if (this.closed) return Promise.reject(new Error('ScriptablePack executor pool is closed'));\n const executor = this.idle.pop();\n if (executor !== undefined) return Promise.resolve(executor);\n if (this.workerCount < this.maxWorkers) {\n this.workerCount += 1;\n return Promise.resolve(this.createExecutor());\n }\n return new Promise((resolveAcquire, rejectAcquire) =>\n this.waiters.push({ resolve: resolveAcquire, reject: rejectAcquire }),\n );\n }\n\n async dispose(): Promise<void> {\n if (this.closed) return;\n this.closed = true;\n const waiters = this.waiters.splice(0);\n for (const waiter of waiters) {\n waiter.reject(new Error('ScriptablePack executor pool is closed'));\n }\n this.idle.splice(0);\n await Promise.all([...this.executors].map((executor) => executor.dispose('failure')));\n }\n\n private createExecutor(): ReusableWorkerScriptablePackExecutor {\n const executor = new ReusableWorkerScriptablePackExecutor(\n this.maxTasksPerWorker,\n (executor, reusable) => {\n if (this.closed) {\n this.executors.delete(executor);\n if (!reusable) this.workerCount -= 1;\n return;\n }\n if (!reusable) {\n this.executors.delete(executor);\n this.workerCount -= 1;\n } else {\n this.idle.push(executor);\n }\n this.drain();\n },\n );\n this.executors.add(executor);\n return executor;\n }\n\n private drain(): void {\n if (this.closed) return;\n while (this.waiters.length > 0) {\n const idle = this.idle.pop();\n if (idle !== undefined) {\n this.waiters.shift()?.resolve(idle);\n continue;\n }\n if (this.workerCount >= this.maxWorkers) return;\n this.workerCount += 1;\n this.waiters.shift()?.resolve(this.createExecutor());\n }\n }\n}\n\nexport function createScriptablePackModuleExecutorPool(\n options: ScriptablePackModuleExecutorPoolOptions = {},\n): ScriptablePackModuleExecutorPool {\n return new DefaultScriptablePackModuleExecutorPool(options);\n}\n\nexport interface LoadScriptablePackOptions {\n readonly timeoutMs?: number;\n readonly buildTimeoutMs?: number;\n readonly executor?: ScriptablePackModuleExecutor;\n readonly metadataOnly?: boolean;\n}\n\nfunction scriptablePackLoadFailure(\n sourcePath: string,\n reason: 'module-load' | 'timeout',\n phase: 'module-load' | 'build',\n diagnostic: string,\n timeoutMs?: number,\n): PackAuthoringError {\n return {\n code: 'pack-parameter-invalid',\n expected: 'a trusted Pack v2 authoring module with a valid default export',\n hint: 'repair the source module or its build timeout, then inspect the Pack again',\n detail: {\n sourcePath,\n reason,\n phase,\n diagnostic,\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n },\n };\n}\n\n/** Load a ScriptablePack source contract in an isolated module executor. */\nexport async function loadScriptablePack(\n sourcePath: string,\n options: LoadScriptablePackOptions = {},\n): Promise<Result<Readonly<AnyScriptablePackDefinition>, PackAuthoringError>> {\n const timeoutMs = options.timeoutMs ?? 15_000;\n // Keep authored builds bounded, but give legitimate procedural packs the\n // same cold-start budget already used for module initialization. The old\n // five-second default rejected large production packs before they could\n // publish a result.\n const buildTimeoutMs = options.buildTimeoutMs ?? 15_000;\n const executor = options.executor ?? new WorkerScriptablePackExecutor();\n let disposeReason: 'complete' | 'timeout' | 'failure' | undefined;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n try {\n const timeoutSignal = Symbol('scriptable-pack-module-timeout');\n const loaded = await Promise.race([\n executor.load(sourcePath),\n new Promise<typeof timeoutSignal>((resolve) => {\n timeout = setTimeout(() => resolve(timeoutSignal), timeoutMs);\n }),\n ]);\n if (loaded === timeoutSignal) {\n disposeReason = 'timeout';\n return err(\n scriptablePackLoadFailure(\n sourcePath,\n 'timeout',\n 'module-load',\n `Pack module initialization exceeded ${timeoutMs}ms`,\n timeoutMs,\n ),\n );\n }\n const moduleValue =\n loaded !== null && typeof loaded === 'object' && 'default' in loaded\n ? (loaded as { readonly default: unknown }).default\n : undefined;\n const validated = validatePackDefinition(moduleValue, sourcePath);\n if (!validated.ok) {\n disposeReason = 'failure';\n return validated;\n }\n if (options.metadataOnly === true) {\n disposeReason = 'complete';\n return ok(validated.value);\n }\n const definition = validated.value;\n const build = definition.build as unknown as (\n first: unknown,\n context?: SerializedScriptablePackBuildContext,\n ) => PackBuildResult;\n return ok({\n ...definition,\n build: async (\n context: PackBuildContextWithoutParameters,\n ): Promise<Awaited<PackBuildResult>> => {\n let buildTimedOut = false;\n let buildTimeout: ReturnType<typeof setTimeout> | undefined;\n const timeoutResult = err(\n scriptablePackLoadFailure(\n sourcePath,\n 'timeout',\n 'build',\n `ScriptablePack build exceeded ${buildTimeoutMs}ms`,\n buildTimeoutMs,\n ),\n );\n try {\n const invocation =\n 'supportsPackParameters' in executor &&\n (executor as Partial<WorkerBackedScriptablePackExecutor>).supportsPackParameters ===\n true\n ? build(context.readByGuid, {\n packageId: [...context.packageId],\n ...('values' in context && context.values !== undefined\n ? { values: context.values as Readonly<Record<string, unknown>> }\n : {}),\n })\n : definition.build(context as never);\n const built = await Promise.race([\n Promise.resolve(invocation),\n new Promise<Awaited<PackBuildResult>>((resolve) => {\n buildTimeout = setTimeout(() => {\n buildTimedOut = true;\n resolve(timeoutResult as Awaited<PackBuildResult>);\n }, buildTimeoutMs);\n }),\n ]);\n if (buildTimedOut) {\n await executor.dispose?.('timeout');\n return built;\n }\n await executor.dispose?.('complete');\n return built;\n } catch (error) {\n await executor.dispose?.('failure');\n throw error;\n } finally {\n if (buildTimeout !== undefined) clearTimeout(buildTimeout);\n }\n },\n } as AnyScriptablePackDefinition);\n } catch (error) {\n disposeReason = 'failure';\n return err(\n scriptablePackLoadFailure(\n sourcePath,\n 'module-load',\n 'module-load',\n error instanceof Error ? error.message : String(error),\n ),\n );\n } finally {\n if (timeout !== undefined) clearTimeout(timeout);\n if (disposeReason !== undefined) await executor.dispose?.(disposeReason);\n }\n}\n","import { createHash } from 'node:crypto';\nimport { readdir, readFile, stat } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\nimport type {\n CatalogDiagnostic,\n PackErrorCode,\n ProviderProvenance,\n ResourceRevision,\n SourceOverrideDescriptor,\n} from '@forgeax/engine-types';\nimport { PACK_ERROR_HINTS } from '@forgeax/engine-types';\nimport { PackError } from './errors.js';\nimport { isValidAssetGuidString, PackageId } from './guid.js';\nimport {\n type AnyScriptablePackDefinition,\n parsePackSourceJson,\n projectDirectPackJson,\n projectScriptablePackMeta,\n type ScriptablePackSourceMeta,\n} from './pack-authoring.js';\nimport { validateProducerContract, validateProducerOutputs } from './producer-contract.js';\nimport { resolveAssetSource } from './resolve-asset-source.js';\nimport { validateMeta, validatePack } from './schema-compiled.js';\nimport type { ScriptablePackSourceClosureEntry } from './scriptable-pack.js';\nimport {\n inventoryScriptablePackSource,\n loadScriptablePack,\n type ScriptablePackModuleExecutor,\n} from './scriptable-pack-node.js';\n\n// Minimal Result<T, E> — structurally compatible with @forgeax/engine-rhi Result\n// but defined locally to avoid a heavy runtime dep in this build-time package.\nexport type ScanResult<T, E> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: E };\n\nfunction ok<T>(value: T): ScanResult<T, never> {\n return { ok: true, value };\n}\n\nfunction packErr<E>(error: E): ScanResult<never, E> {\n return { ok: false, error };\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\n/** Host-owned source paths that should not enter the Pack catalog. */\nexport interface ScanOptions {\n readonly ignorePath?: (path: string) => boolean;\n readonly scriptablePack?: ScriptablePackScanOptions;\n}\n\n/** One bounded executor policy shared by ScriptablePack inventory and production. */\nexport interface ScriptablePackScanOptions {\n readonly timeoutMs?: number;\n readonly buildTimeoutMs?: number;\n readonly executor?: ScriptablePackModuleExecutor;\n /** Path-only scans must release the isolated loader before returning. */\n readonly metadataOnly?: boolean;\n}\n\n/** Stable default policy shared by inventory and production owners. */\nexport const STANDARD_SCRIPTABLE_PACK_SCAN_OPTIONS = Object.freeze({\n // Scriptable Packs execute in an isolated worker. A cold worker must compile\n // the authored source closure before it can return metadata. Keep the bound\n // finite while allowing a heavy character/scene closure to complete on a\n // busy host.\n timeoutMs: 120_000,\n}) satisfies ScriptablePackScanOptions;\n\nexport interface InventoryDeclaration {\n readonly guid: string;\n readonly kind: string;\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n}\n\nexport interface ScanInventory {\n readonly paths: readonly string[];\n readonly inventory: readonly InventoryDeclaration[];\n /** Complete parsed source declarations captured by the validated scan pass. */\n readonly declarations: ReadonlyMap<string, ScanSourceDeclaration>;\n}\n\nexport interface ScriptablePackInventoryDeclaration {\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly meta: ScriptablePackSourceMeta;\n readonly definition: Readonly<AnyScriptablePackDefinition>;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n}\n\nexport interface MetaInventoryDocument {\n readonly schemaVersion: string | number;\n readonly kind: 'external-asset-package';\n readonly packageId?: string;\n readonly name?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly importer: string;\n readonly source?: string;\n readonly importSettings: Readonly<Record<string, unknown>>;\n readonly sourceOverrides?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[];\n readonly paramSchema?: readonly Readonly<Record<string, unknown>>[];\n readonly subAssets: readonly MetaInventorySubAsset[];\n}\n\nexport interface MetaInventorySubAsset {\n readonly guid: string;\n readonly sourceIndex: number;\n readonly sourceKey?: string;\n readonly name?: string;\n readonly kind: string;\n}\n\nexport interface LegacyPackInventoryDocument {\n readonly schemaVersion: '1.0.0' | '2.0.0';\n readonly kind: 'internal-text-package';\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly assets: readonly PackInventoryAsset[];\n}\n\nexport interface PackSourceInventoryDocument {\n readonly schemaVersion: '3.0.0';\n readonly packageId: string;\n readonly assets?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n readonly parent?: string;\n readonly values?: Readonly<Record<string, unknown>>;\n}\n\nexport type PackInventoryDocument = LegacyPackInventoryDocument | PackSourceInventoryDocument;\n\nexport interface PackInventoryAsset {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly execution?: 'direct' | 'cooked';\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly payload: Readonly<Record<string, unknown>>;\n readonly refs: readonly string[];\n readonly artifacts?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n}\n\nexport type ScanSourceDeclaration =\n | {\n readonly format: 'meta.json';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly value: MetaInventoryDocument;\n }\n | {\n readonly format: 'pack.json';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly sourceText: string;\n readonly value: PackInventoryDocument;\n }\n | {\n readonly format: 'pack.ts';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly value: ScriptablePackSourceMeta;\n readonly definition: AnyScriptablePackDefinition;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n };\n\ninterface ScanCapture {\n readonly declarations: Map<string, ScanSourceDeclaration>;\n}\n\n/**\n * Directory names that are skipped during recursive traversal unless\n * explicitly provided as a root in the `roots` parameter (whitelist override).\n * Requirements §3.4 + §5 blacklist.\n *\n * Re-exported as `SCANNER_BLACKLIST` for cross-package reuse: the\n * `forgeax asset import --check` traversal (M4 / w21 +\n * plan-strategy section 2.8 path b) walks the same set of source-orphan\n * candidates as the scanner, so we share the single SSOT here.\n */\nconst BLACKLIST = new Set([\n 'node_modules',\n '__tests__',\n '.forgeax-harness',\n '.forgeax',\n '.git',\n 'dist',\n '.forgeax-asset-cache',\n 'forgeax-engine-assets',\n 'coverage',\n]);\n\nexport const SCANNER_BLACKLIST: ReadonlySet<string> = BLACKLIST;\n\ntype MalformedFileCode = Extract<PackErrorCode, 'pack-malformed-pack' | 'pack-malformed-meta'>;\n\ntype JsonValidator = {\n (value: unknown): boolean;\n errors?: readonly { readonly instancePath?: string; readonly message?: string }[] | null;\n};\n\nasync function readValidatedJson(\n path: string,\n code: MalformedFileCode,\n validate: JsonValidator,\n): Promise<ScanResult<{ readonly raw: string; readonly parsed: unknown }, PackError>> {\n let raw: string;\n let parsed: unknown;\n try {\n raw = await readFile(path, 'utf-8');\n parsed = JSON.parse(raw);\n } catch {\n return packErr(\n makePackError(code, {\n path,\n ajvErrors: [{ instancePath: '', message: 'JSON parse failed' }],\n }),\n );\n }\n if (!validate(parsed)) {\n return packErr(\n makePackError(code, {\n path,\n ajvErrors: (validate.errors ?? []).map((error) => ({\n instancePath: error.instancePath ?? '',\n message: error.message ?? 'unknown ajv error',\n })),\n }),\n );\n }\n return ok({ raw, parsed });\n}\n\nfunction makePackError(\n code: PackErrorCode,\n detail: ConstructorParameters<typeof PackError>[0]['detail'],\n): PackError {\n return new PackError({\n code,\n expected: `pack error: ${code}`,\n hint: PACK_ERROR_HINTS[code],\n detail,\n });\n}\n\n/**\n * For keyed scene assets, return the lowercased GUID each nested instance\n * source resolves to via `asset.refs[]` (or directly carries). The yielded GUIDs feed\n * scanner step-6's scene dependency cycle DFS.\n */\nfunction* extractInstanceSourceGuids(asset: {\n kind?: unknown;\n payload?: unknown;\n refs: readonly string[];\n}): Generator<string> {\n if (asset.kind !== 'scene') return;\n const payload = asset.payload as { entities?: unknown } | undefined;\n if (\n !payload ||\n payload.entities === null ||\n typeof payload.entities !== 'object' ||\n Array.isArray(payload.entities)\n )\n return;\n for (const rawEntity of Object.values(payload.entities as Record<string, unknown>)) {\n if (rawEntity === null || typeof rawEntity !== 'object' || Array.isArray(rawEntity)) continue;\n const instance = (rawEntity as { instance?: unknown }).instance;\n if (instance === null || typeof instance !== 'object' || Array.isArray(instance)) continue;\n const source = (instance as { source?: unknown }).source;\n const resolved =\n typeof source === 'number' && Number.isInteger(source)\n ? asset.refs[source]\n : typeof source === 'string'\n ? source\n : undefined;\n if (typeof resolved !== 'string') continue;\n yield resolved.toLowerCase();\n }\n}\n\n/**\n * Scan one or more root directories for `.meta.json`, `.pack.json`, and `.pack.ts` files.\n * Runs a 7-step fail-fast validation chain (w17 + M7-T01):\n * Step 1 - collect all .meta.json + .pack.json paths (blacklist skipped)\n * Step 2 - schema validation (ajv strict)\n * Step 3 - GUID string format validation\n * Step 4 - GUID collision detection\n * Step 5 - orphan .meta.json detection\n * Step 6 - cyclic reference detection (hand-written DFS)\n * Step 7 - complete pack and source closure validation\n *\n * Returns `Ok(paths)` or `Err(PackError)` on the first violation.\n *\n * NOTE: source files without a .meta.json are logged but not fatal (requirements §5).\n */\nasync function scanValidated(\n roots: readonly string[],\n opts: ScanOptions = {},\n capture?: ScanCapture,\n): Promise<ScanResult<string[], PackError>> {\n // Step 1: collect all authored package declarations. ScriptablePack runtime\n // validation belongs to its trusted module loader; scanner only inventories\n // the source path so CLI/Vite share one discovery set.\n const rawPaths: string[] = [];\n const explicitRootSet = new Set(roots);\n\n async function traverse(dir: string): Promise<void> {\n let entries: import('node:fs').Dirent[];\n try {\n entries = (await readdir(dir, { withFileTypes: true })) as import('node:fs').Dirent[];\n } catch {\n return;\n }\n\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n\n if (opts.ignorePath?.(fullPath) === true) continue;\n\n if (entry.isDirectory()) {\n // Skip blacklisted subdirectories unless the subdir is itself an explicit root\n if (BLACKLIST.has(basename(fullPath)) && !explicitRootSet.has(fullPath)) {\n continue;\n }\n await traverse(fullPath);\n } else if (entry.isFile()) {\n const name = entry.name;\n if (\n name.endsWith('.meta.json') ||\n name.endsWith('.pack.json') ||\n name.endsWith('.pack.ts')\n ) {\n rawPaths.push(fullPath);\n }\n }\n }\n }\n\n for (const root of roots) {\n // Explicit file roots are useful when a host wants one source package\n // from a larger asset tree without also scanning sibling packages. Keep\n // directory-root behaviour unchanged; this is only an opt-in whitelist.\n try {\n const rootStat = await stat(root);\n if (rootStat.isFile()) {\n if (opts.ignorePath?.(root) === true) continue;\n if (\n root.endsWith('.meta.json') ||\n root.endsWith('.pack.json') ||\n root.endsWith('.pack.ts')\n ) {\n rawPaths.push(root);\n }\n continue;\n }\n } catch {\n // The existing directory traversal treats missing roots as empty.\n }\n await traverse(root);\n }\n\n // Separate meta and pack paths\n const metaPaths = rawPaths.filter((p) => p.endsWith('.meta.json'));\n const packPaths = rawPaths.filter((p) => p.endsWith('.pack.json'));\n const scriptablePaths = rawPaths.filter((p) => p.endsWith('.pack.ts'));\n\n // Step 2 + 3: parse + schema validate + GUID format validate each pack file\n // One normalized GUID map covers pack assets and meta subAssets. The source\n // kind stays in the path/detail evidence; identity is the normalized GUID.\n const guidToPath = new Map<string, string>();\n const packRefs = new Map<string, string[]>(); // guid -> refs[]\n const packageIdToPath = new Map<string, string>();\n const packageKind = new Map<string, 'legacy' | 'direct' | 'instance' | 'scriptable'>();\n const instanceParents: {\n readonly path: string;\n readonly packageId: string;\n readonly parent: string;\n }[] = [];\n\n function registerPackage(\n packageId: string | undefined,\n path: string,\n kind: 'legacy' | 'direct' | 'instance' | 'scriptable',\n ): PackError | undefined {\n if (packageId === undefined) return undefined;\n const normalized = packageId.toLowerCase();\n const existing = packageIdToPath.get(normalized);\n if (existing !== undefined) {\n return makePackError('pack-guid-collision', {\n paths: [existing, path],\n guid: normalized,\n });\n }\n packageIdToPath.set(normalized, path);\n packageKind.set(normalized, kind);\n return undefined;\n }\n\n for (const packPath of packPaths) {\n const loaded = await readValidatedJson(packPath, 'pack-malformed-pack', validatePack);\n if (!loaded.ok) return loaded;\n const { raw, parsed } = loaded.value;\n\n if (record(parsed) && parsed.schemaVersion === '3.0.0') {\n const authoring = parsePackSourceJson(parsed);\n if (!authoring.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '', message: authoring.error.code }],\n }),\n );\n }\n const packageId = authoring.value.packageId;\n const packageCollision = registerPackage(\n PackageId.format(packageId),\n packPath,\n authoring.value.format,\n );\n if (packageCollision !== undefined) return packErr(packageCollision);\n if (authoring.value.format === 'instance') {\n instanceParents.push({\n path: packPath,\n packageId: PackageId.format(authoring.value.packageId),\n parent: PackageId.format(authoring.value.parent),\n });\n } else {\n const projected = projectDirectPackJson(authoring.value);\n if (!projected.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '/assets', message: projected.error.code }],\n }),\n );\n }\n for (const asset of projected.value.assets) {\n const normalizedGuid = asset.guid.toLowerCase();\n const existing = guidToPath.get(normalizedGuid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', {\n paths: [existing, packPath],\n guid: normalizedGuid,\n }),\n );\n }\n guidToPath.set(normalizedGuid, packPath);\n packRefs.set(normalizedGuid, [\n ...asset.refs.map((ref) => ref.toLowerCase()),\n ...extractInstanceSourceGuids(asset),\n ]);\n }\n }\n capture?.declarations.set(packPath, {\n format: 'pack.json',\n sourcePath: packPath,\n sourceRevision: `sha256:${createHash('sha256').update(raw).digest('hex')}`,\n sourceText: raw,\n value: parsed as unknown as PackSourceInventoryDocument,\n });\n continue;\n }\n\n const packageContract = validateProducerContract(parsed);\n if (!packageContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '', message: packageContract.error.code }],\n }),\n );\n }\n\n // Step 3: validate GUIDs in pack\n const packObj = parsed as unknown as LegacyPackInventoryDocument;\n const packageCollision = registerPackage(packObj.packageId, packPath, 'legacy');\n if (packageCollision !== undefined) return packErr(packageCollision);\n for (const asset of packObj.assets) {\n if (\n asset.kind === 'particle-effect' &&\n asset.execution === 'direct' &&\n (asset.refs.length > 0 || Object.keys(asset.artifacts ?? {}).length > 0)\n ) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [\n {\n instancePath: '/assets',\n message:\n 'authored particle-effect assets are source-only; refs and artifacts must be empty',\n },\n ],\n }),\n );\n }\n }\n const producerAssets = packObj.assets.filter(\n (asset) => asset.sourceKey !== undefined || asset.sourceIndex !== undefined,\n );\n if (producerAssets.length > 0) {\n for (const asset of producerAssets) {\n const assetContract = validateProducerContract(asset);\n if (!assetContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '/assets', message: assetContract.error.code }],\n }),\n );\n }\n }\n const topologyContract = validateProducerOutputs(\n producerAssets.map((asset, sourceIndex) => ({\n guid: asset.guid,\n kind: asset.kind,\n sourceIndex: asset.sourceIndex ?? sourceIndex,\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n })),\n );\n if (!topologyContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '/assets', message: topologyContract.error.code }],\n }),\n );\n }\n }\n for (const asset of packObj.assets) {\n if (!isValidAssetGuidString(asset.guid)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: asset.guid,\n reason: 'expected 36-char RFC 4122 dash-form UUID',\n }),\n );\n }\n for (const ref of asset.refs) {\n if (!isValidAssetGuidString(ref)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: ref,\n reason: 'expected 36-char RFC 4122 dash-form UUID in refs[]',\n }),\n );\n }\n }\n\n // Step 4: collision check\n const normalizedGuid = asset.guid.toLowerCase();\n const existing = guidToPath.get(normalizedGuid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', {\n paths: [existing, packPath],\n guid: normalizedGuid,\n }),\n );\n }\n guidToPath.set(normalizedGuid, packPath);\n\n // Keyed scene instances are explicit dependency edges. Keep the\n // producer source in the cycle graph alongside ordinary asset refs so\n // recursive SceneAsset declarations fail before publication.\n packRefs.set(normalizedGuid, [\n ...asset.refs.map((ref) => ref.toLowerCase()),\n ...extractInstanceSourceGuids(asset),\n ]);\n }\n capture?.declarations.set(packPath, {\n format: 'pack.json',\n sourcePath: packPath,\n sourceRevision: `sha256:${createHash('sha256').update(raw).digest('hex')}`,\n sourceText: raw,\n value: packObj,\n });\n }\n\n // Step 2 + 3 + 5: parse + schema validate + GUID format validate + orphan check for meta files.\n // Meta source paths are local to their sidecar: an omitted source names the\n // companion file and an explicit source is resolved relative to the sidecar.\n for (const metaPath of metaPaths) {\n const loaded = await readValidatedJson(metaPath, 'pack-malformed-meta', validateMeta);\n if (!loaded.ok) return loaded;\n const { raw, parsed } = loaded.value;\n\n const metaContract = validateProducerContract(parsed);\n if (!metaContract.ok) {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: metaPath,\n ajvErrors: [{ instancePath: '', message: metaContract.error.code }],\n }),\n );\n }\n\n // Step 3: validate GUIDs in meta subAssets\n const metaObj = parsed as unknown as MetaInventoryDocument;\n const packageCollision = registerPackage(metaObj.packageId, metaPath, 'legacy');\n if (packageCollision !== undefined) return packErr(packageCollision);\n capture?.declarations.set(metaPath, {\n format: 'meta.json',\n sourcePath: metaPath,\n sourceRevision: `sha256:${createHash('sha256').update(raw).digest('hex')}`,\n value: metaObj,\n });\n for (const sub of metaObj.subAssets) {\n if (!isValidAssetGuidString(sub.guid)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: sub.guid,\n reason: 'expected 36-char RFC 4122 dash-form UUID in subAssets[].guid',\n }),\n );\n }\n const normalizedGuid = sub.guid.toLowerCase();\n const existing = guidToPath.get(normalizedGuid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', {\n paths: [existing, metaPath],\n guid: normalizedGuid,\n }),\n );\n }\n guidToPath.set(normalizedGuid, metaPath);\n }\n const producerSubAssets = metaObj.subAssets.length > 1 ? metaObj.subAssets : [];\n if (producerSubAssets.length > 0) {\n const topologyContract = validateProducerOutputs(producerSubAssets);\n if (!topologyContract.ok) {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: metaPath,\n ajvErrors: [{ instancePath: '/subAssets', message: topologyContract.error.code }],\n }),\n );\n }\n }\n\n // Step 5: orphan .meta.json check — the source file declared in meta.source must exist.\n const expectedSourcePath = resolveAssetSource(metaPath, metaObj.source);\n try {\n await stat(expectedSourcePath);\n } catch {\n return packErr(\n makePackError('pack-orphan-meta', {\n metaPath,\n expectedFile: expectedSourcePath,\n }),\n );\n }\n }\n\n // ScriptablePack source identity enters the package registry. Its outputs are\n // intentionally absent until the dynamic build worklist evaluates it.\n for (const sourcePath of scriptablePaths) {\n let source: string;\n try {\n source = await readFile(sourcePath, 'utf8');\n } catch {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '', message: 'Pack source read failed' }],\n }),\n );\n }\n const loaderOptions = {\n ...(opts.scriptablePack ?? {}),\n ...(capture === undefined ? { metadataOnly: true } : {}),\n };\n const loaded = await loadScriptablePack(sourcePath, loaderOptions);\n if (!loaded.ok) {\n const diagnostic = loaded.error.detail.diagnostic;\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [\n {\n instancePath: '',\n message:\n typeof diagnostic === 'string'\n ? `${loaded.error.code}: ${diagnostic}`\n : loaded.error.code,\n },\n ],\n }),\n );\n }\n let sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n try {\n sourceClosure = await inventoryScriptablePackSource(sourcePath, source);\n } catch {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '', message: 'Pack source closure read failed' }],\n }),\n );\n }\n const packageCollision = registerPackage(\n PackageId.format(loaded.value.packageId),\n sourcePath,\n 'scriptable',\n );\n if (packageCollision !== undefined) return packErr(packageCollision);\n const meta = projectScriptablePackMeta(loaded.value, sourcePath);\n capture?.declarations.set(sourcePath, {\n format: 'pack.ts',\n sourcePath,\n sourceRevision: `sha256:${createHash('sha256').update(source).digest('hex')}`,\n value: meta,\n definition: loaded.value,\n sourceClosure,\n });\n }\n\n // v3 instance parent validation happens after all declarations have been\n // registered, so scan order cannot change missing-parent or cycle results.\n const parentByPackageId = new Map(\n instanceParents.map((instance) => [instance.packageId.toLowerCase(), instance]),\n );\n for (const instance of instanceParents) {\n const parentId = instance.parent.toLowerCase();\n const parentPath = packageIdToPath.get(parentId);\n if (parentPath === undefined) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: instance.path,\n reason: 'pack-parent-not-found',\n ajvErrors: [\n {\n instancePath: '/parent',\n message: `parent packageId ${instance.parent} was not found`,\n },\n ],\n }),\n );\n }\n const kind = packageKind.get(parentId);\n if (kind !== 'scriptable' && kind !== 'instance') {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: instance.path,\n reason: 'pack-parent-has-no-parameters',\n ajvErrors: [\n {\n instancePath: '/parent',\n message: `parent ${instance.parent} is not a ScriptablePack source with parameters`,\n },\n ],\n }),\n );\n }\n }\n for (const instance of instanceParents) {\n const chain = new Set<string>();\n let current = instance.packageId.toLowerCase();\n while (true) {\n if (chain.has(current)) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: instance.path,\n reason: 'pack-parent-cycle',\n ajvErrors: [\n { instancePath: '/parent', message: `parent chain repeats packageId ${current}` },\n ],\n }),\n );\n }\n chain.add(current);\n const next = parentByPackageId.get(current);\n if (next === undefined) break;\n current = next.parent.toLowerCase();\n }\n }\n\n // Step 6: cyclic reference detection via hand-written DFS (no graphlib dep)\n // visited: nodes fully processed; recStack: nodes in current DFS path\n const visited = new Set<string>();\n const recStack = new Set<string>();\n\n function dfs(guid: string, path: string[]): string[] | null {\n visited.add(guid);\n recStack.add(guid);\n\n for (const ref of packRefs.get(guid) ?? []) {\n if (!visited.has(ref)) {\n const cycle = dfs(ref, [...path, ref]);\n if (cycle !== null) return cycle;\n } else if (recStack.has(ref)) {\n // Found a back-edge: reconstruct cycle from the repeated node\n const cycleStart = path.indexOf(ref);\n return cycleStart >= 0 ? [...path.slice(cycleStart), ref] : [...path, ref];\n }\n }\n\n recStack.delete(guid);\n return null;\n }\n\n for (const guid of guidToPath.keys()) {\n if (!visited.has(guid)) {\n const cycle = dfs(guid, [guid]);\n if (cycle !== null) {\n return packErr(\n makePackError('pack-cyclic-reference', {\n code: 'pack-cyclic-reference',\n kind: 'mount-asset',\n cycle,\n }),\n );\n }\n }\n }\n\n return ok(rawPaths);\n}\n\n/** Scan one complete Pack inventory while preserving the public path-only API. */\nexport async function scan(\n roots: readonly string[],\n opts: ScanOptions = {},\n): Promise<ScanResult<string[], PackError>> {\n return scanValidated(roots, opts);\n}\n\n/** Return the validated source inventory without interpreting producer output kinds. */\nexport async function scanInventory(\n roots: readonly string[],\n opts: ScanOptions = {},\n): Promise<ScanResult<ScanInventory, PackError>> {\n const declarations = new Map<string, ScanSourceDeclaration>();\n const scanned = await scanValidated(roots, opts, { declarations });\n if (!scanned.ok) return scanned;\n const inventory: InventoryDeclaration[] = [];\n for (const sourcePath of scanned.value) {\n const declaration = declarations.get(sourcePath);\n if (declaration?.format !== 'pack.json') continue;\n if (declaration.value.schemaVersion === '3.0.0') {\n const parsed = parsePackSourceJson(declaration.value);\n if (!parsed.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '', message: parsed.error.code }],\n }),\n );\n }\n if (parsed.value.format !== 'direct') continue;\n const projected = projectDirectPackJson(parsed.value);\n if (!projected.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '/assets', message: projected.error.code }],\n }),\n );\n }\n for (const [index, asset] of projected.value.assets.entries()) {\n inventory.push({\n guid: asset.guid,\n kind: asset.kind,\n sourcePath,\n sourceRevision: declaration.sourceRevision,\n sourceKey: asset.sourceKey,\n sourceIndex: index,\n });\n }\n continue;\n }\n for (const [index, asset] of declaration.value.assets.entries()) {\n inventory.push({\n guid: asset.guid,\n kind: asset.kind,\n sourcePath,\n sourceRevision: declaration.sourceRevision,\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n ...(asset.sourceIndex === undefined\n ? { sourceIndex: index }\n : { sourceIndex: asset.sourceIndex }),\n });\n }\n }\n return ok({ paths: scanned.value, inventory, declarations });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/code.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/scope.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/util.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/names.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/errors.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/boolSchema.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/rules.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/applicability.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/dataType.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/defaults.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/code.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/keyword.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/subschema.ts","../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js","../../../node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/resolve.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/validation_error.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/ref_error.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/data.json","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/utils.js","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/schemes.js","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/index.js","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/uri.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/core.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/id.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/ref.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/ucs2length.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/pattern.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/required.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/equal.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/const.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/enum.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/items.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/contains.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/properties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/not.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/if.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/format/format.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/format/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/metadata.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/draft7.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/discriminator/types.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/discriminator/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-draft-07.json","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/ajv.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/formats.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/limit.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/index.ts","../src/errors.ts","../src/guid.ts","../src/pack-authoring.ts","../src/producer-contract.ts","../src/deriveAssetName.ts","../src/resolve-asset-source.ts","../src/schema-compiled.ts","../schema/meta.schema.json","../schema/pack.schema.json","../src/scriptable-pack-node.ts","../src/scanner.ts"],"names":["UsedValueState","Type","err","DataType","ts","_a","resolve","Ajv","DiscrError","ajv","addFormats","isRecord","dirname","failure","ok","readFile","stat","packageId","packageCollision","createHash"],"mappings":"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","file":"scanner.mjs","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n","import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n","import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n","import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n","{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/** @type {(value: string) => boolean} */\nconst isHexPair = RegExp.prototype.test.bind(/^[\\da-f]{2}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isUnreserved = RegExp.prototype.test.bind(/^[\\da-z\\-._~]$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isPathCharacter = RegExp.prototype.test.bind(/^[\\da-z\\-._~!$&'()*+,;=:@/]$/iu)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * 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` and `%2E` stay escaped.\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 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 (decoded !== '.' && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n if (isPathCharacter(input[i])) {\n output += input[i]\n } else {\n output += escape(input[i])\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(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = reescapeHostDelimiters(host, false)\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n reescapeHostDelimiters,\n normalizePercentEncoding,\n normalizePathEncoding,\n escapePreservingEscapes,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, escapePreservingEscapes, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (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 resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n const normalizedA = normalizeComparableURI(uriA, options)\n const normalizedB = normalizeComparableURI(uriB, options)\n\n return normalizedA !== undefined && normalizedB !== undefined && normalizedA.toLowerCase() === normalizedB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escapePreservingEscapes(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = normalizePercentEncoding(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {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 * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ parsed: import('./types/index').URIComponent, malformedAuthorityOrPort: 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\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n\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 ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = reescapeHostDelimiters(unescape(parsed.host), isIP)\n }\n }\n if (parsed.path) {\n parsed.path = normalizePathEncoding(parsed.path)\n }\n if (parsed.fragment) {\n try {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n } catch {\n parsed.error = parsed.error || 'URI malformed'\n }\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return { parsed, malformedAuthorityOrPort }\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 }}\n */\nfunction normalizeStringWithStatus (uri, opts) {\n const { parsed, malformedAuthorityOrPort } = parseWithStatus(uri, opts)\n return {\n normalized: malformedAuthorityOrPort ? uri : serialize(parsed, opts),\n malformedAuthorityOrPort\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') {\n const { normalized, malformedAuthorityOrPort } = normalizeStringWithStatus(uri, opts)\n return malformedAuthorityOrPort ? undefined : normalized\n }\n\n if (typeof uri === 'object') {\n return serialize(uri, opts)\n }\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","// errors.ts — PackError class (feat-20260513-guid-asset-package-system w15)\n//\n// Four-field surface: .code / .expected / .hint / .detail\n// Structurally parallel to AssetError / RhiError / RemoteError\n// (charter proposition 5 consistent abstraction).\n//\n// .detail is narrowed per .code via PackErrorDetail discriminated union\n// (requirements §6.2 AC-07; plan-strategy §D-5).\n\nimport type { PackErrorCode, PackErrorDetail } from '@forgeax/engine-types';\n\n/**\n * Structured error for the engine-pack disk scanner fail-fast chain.\n *\n * AI users consume via exhaustive switch on .code — no default case needed:\n * ```ts\n * switch (err.code) {\n * case 'pack-guid-collision':\n * console.error(err.detail.paths);\n * break;\n * case 'pack-cyclic-reference':\n * console.error(err.detail.cycle);\n * break;\n * // ...all 8 cases\n * }\n * ```\n */\nexport class PackError extends Error {\n readonly code: PackErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: PackErrorDetail;\n\n constructor(args: {\n code: PackErrorCode;\n expected: string;\n hint: string;\n detail: PackErrorDetail;\n }) {\n super(`[PackError ${args.code}] expected: ${args.expected}; hint: ${args.hint}`);\n this.name = 'PackError';\n this.code = args.code;\n this.expected = args.expected;\n this.hint = args.hint;\n this.detail = args.detail;\n }\n}\n","import { sha1 } from '@noble/hashes/legacy.js';\nimport { uuidv7obj } from 'uuidv7';\nimport { PackError } from './errors.js';\n\n/**\n * 16-byte UUID branded ABI. Prevents assignment from plain Uint8Array or string.\n * Brand field mirrors the declaration in @forgeax/engine-types for cross-package\n * structural compatibility (both use __guidBrand: 'AssetGuid').\n */\nexport type AssetGuid = Uint8Array & { readonly __guidBrand: 'AssetGuid' };\n\n/** Pack-level identity. It is intentionally not assignable to AssetGuid. */\nexport type PackageId = Uint8Array & { readonly __packageIdBrand: 'PackageId' };\n\n/** Minimal Result alias for this module (structurally compatible with ScanResult). */\nexport type GuidResult<T, E> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: E };\n\nfunction brand(bytes: Uint8Array): AssetGuid {\n return bytes as AssetGuid;\n}\n\nconst HEX_BYTE = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n\nfunction bytesToDashForm(bytes: Uint8Array): string {\n const h = HEX_BYTE;\n // biome-ignore lint/style/noNonNullAssertion: length guaranteed 16\n return `${h[bytes[0]!]}${h[bytes[1]!]}${h[bytes[2]!]}${h[bytes[3]!]}-${h[bytes[4]!]}${h[bytes[5]!]}-${h[bytes[6]!]}${h[bytes[7]!]}-${h[bytes[8]!]}${h[bytes[9]!]}-${h[bytes[10]!]}${h[bytes[11]!]}${h[bytes[12]!]}${h[bytes[13]!]}${h[bytes[14]!]}${h[bytes[15]!]}`;\n}\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/** Stable author-owned output identity. Paths and payloads are not identity inputs. */\nexport const PACK_SOURCE_KEY_RE = /^[a-z0-9][a-z0-9._-]*(\\/[a-z0-9][a-z0-9._-]*)*$/;\n\nexport function isValidPackSourceKey(value: unknown): value is string {\n return typeof value === 'string' && PACK_SOURCE_KEY_RE.test(value);\n}\n\nexport function isValidAssetGuidString(value: unknown): value is string {\n return typeof value === 'string' && UUID_RE.test(value);\n}\n\nfunction dashFormToBytes(dashForm: string): Uint8Array {\n const hex = dashForm.replace(/-/g, '');\n const bytes = new Uint8Array(16);\n for (let i = 0; i < 16; i++) {\n bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\nfunction randomUuidBytes(): Uint8Array {\n const uuid = uuidv7obj();\n const bytes = new Uint8Array(16);\n bytes.set(uuid.bytes);\n return bytes;\n}\n\nfunction packageId(value: Uint8Array): PackageId {\n return value as PackageId;\n}\n\n/** Utilities for the pack-level UUID identity. */\nexport const PackageId = {\n parse(dashForm: string): GuidResult<PackageId, PackError> {\n const parsed = AssetGuid.parse(dashForm);\n return parsed.ok ? { ok: true, value: packageId(parsed.value) } : parsed;\n },\n format(value: PackageId): string {\n return bytesToDashForm(value);\n },\n random(): PackageId {\n return packageId(randomUuidBytes());\n },\n} as const;\n\nfunction derivedGuid(namespace: PackageId, sourceKey: string): AssetGuid {\n if (!(namespace instanceof Uint8Array) || namespace.byteLength !== 16) {\n throw new TypeError('AssetGuid.derive requires a 16-byte PackageId');\n }\n if (!isValidPackSourceKey(sourceKey)) {\n const error = new TypeError(\n `AssetGuid.derive received invalid sourceKey ${JSON.stringify(sourceKey)}`,\n ) as TypeError & { readonly code?: string };\n Object.defineProperty(error, 'code', { value: 'pack-source-key-invalid' });\n throw error;\n }\n const name = new TextEncoder().encode(sourceKey);\n const input = new Uint8Array(namespace.byteLength + name.byteLength);\n input.set(namespace, 0);\n input.set(name, namespace.byteLength);\n const digest = sha1(input);\n const result = digest.slice(0, 16);\n // RFC 4122 §4.1.1 / §4.1.3: UUID version 5, RFC variant.\n result[6] = ((result[6] ?? 0) & 0x0f) | 0x50;\n result[8] = ((result[8] ?? 0) & 0x3f) | 0x80;\n return brand(result);\n}\n\n/**\n * Utilities for the AssetGuid branded 16-byte UUID type.\n * Declare the type via `import type { AssetGuid } from '@forgeax/engine-pack/guid'`\n * or `import type { AssetGuid } from '@forgeax/engine-types'`.\n */\nexport const AssetGuid = {\n /**\n * Parse a 36-char RFC 4122 dash-form UUID string into an AssetGuid.\n * Returns Ok(AssetGuid) on success or Err(PackError) with code 'pack-guid-malformed' on failure.\n * Never throws for expected failures (requirements §4.2 / §14 / charter proposition 4).\n */\n parse(dashForm: string): GuidResult<AssetGuid, PackError> {\n if (!isValidAssetGuidString(dashForm)) {\n return {\n ok: false,\n error: new PackError({\n code: 'pack-guid-malformed',\n expected: '36-char RFC 4122 dash-form UUID',\n hint: 'use AssetGuid.random() or a UUIDv7 generator; all GUID fields must be 36-char RFC 4122 dash-form',\n detail: {\n raw: dashForm,\n reason: 'expected 36-char RFC 4122 dash-form UUID',\n },\n }),\n };\n }\n return { ok: true, value: brand(dashFormToBytes(dashForm)) };\n },\n\n /**\n * Format an AssetGuid as a 36-char RFC 4122 lowercase dash-form string.\n */\n format(guid: AssetGuid): string {\n return bytesToDashForm(guid);\n },\n\n /**\n * Test byte-by-byte equality between two AssetGuids.\n */\n equals(a: AssetGuid, b: AssetGuid): boolean {\n for (let i = 0; i < 16; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n },\n\n /**\n * Mint a new time-ordered UUIDv7 as an AssetGuid.\n * Works in both Node.js and browser environments.\n */\n random(): AssetGuid {\n return brand(randomUuidBytes());\n },\n\n /** Derive the stable UUIDv5 projection for one Pack subject and sourceKey. */\n derive(namespace: PackageId, sourceKey: string): AssetGuid {\n return derivedGuid(namespace, sourceKey);\n },\n} as const;\n","import type { Asset, AssetGuid, Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport {\n AssetGuid as AssetGuidCodec,\n isValidAssetGuidString,\n isValidPackSourceKey,\n PackageId,\n} from './guid.js';\nimport type { ScriptablePackSceneComponentInput } from './scriptable-pack.js';\n\n/** Values deliberately stay finite and serialisable at the authoring boundary. */\nexport type PackParameterScalar = boolean | number | string;\nexport type PackParameterValue = PackParameterScalar | readonly number[] | AssetGuid;\n\nexport type PackParameterType =\n | 'bool'\n | 'u32'\n | 'i32'\n | 'f32'\n | 'f64'\n | 'string'\n | 'enum'\n | 'vec2'\n | 'vec3'\n | 'vec4'\n | 'color'\n | 'asset-guid';\n\nexport const PACK_PARAMETER_TYPES = [\n 'bool',\n 'u32',\n 'i32',\n 'f32',\n 'f64',\n 'string',\n 'enum',\n 'vec2',\n 'vec3',\n 'vec4',\n 'color',\n 'asset-guid',\n] as const satisfies readonly PackParameterType[];\n\nexport interface PackParameterDefinition<\n TName extends string = string,\n TType extends PackParameterType = PackParameterType,\n TDefault extends PackParameterValue = PackParameterValue,\n> {\n readonly name: TName;\n readonly type: TType;\n readonly default: TDefault;\n readonly minimum?: number;\n readonly maximum?: number;\n /** Closed choices are required for `enum` and forbidden for other types. */\n readonly values?: readonly PackParameterScalar[];\n /** Optional authoring-only kind constraint for asset GUID parameters. */\n readonly kind?: Asset['kind'];\n}\n\nexport type PackParameterValueFor<T extends PackParameterType> = T extends 'bool'\n ? boolean\n : T extends 'u32' | 'i32' | 'f32' | 'f64'\n ? number\n : T extends 'string' | 'enum'\n ? string\n : T extends 'vec2'\n ? readonly [number, number]\n : T extends 'vec3'\n ? readonly [number, number, number]\n : T extends 'vec4' | 'color'\n ? readonly [number, number, number, number]\n : T extends 'asset-guid'\n ? AssetGuid\n : never;\n\nexport type PackParameterValues<TParameters extends readonly PackParameterDefinition[]> = Readonly<{\n [TParameter in TParameters[number] as TParameter['name']]: TParameter extends {\n readonly type: infer TType extends PackParameterType;\n }\n ? TType extends 'enum'\n ? TParameter extends { readonly values: readonly (infer TValue)[] }\n ? Extract<TValue, string>\n : string\n : PackParameterValueFor<TType>\n : never;\n}>;\n\nexport interface PackAuthoringError {\n readonly code: PackAuthoringErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly actual?: string;\n readonly detail: Readonly<Record<string, unknown>>;\n}\n\nexport type PackAuthoringErrorCode =\n | 'pack-package-id-invalid'\n | 'pack-package-id-collision'\n | 'pack-source-key-invalid'\n | 'pack-guid-collision'\n | 'pack-parent-not-found'\n | 'pack-parent-cycle'\n | 'pack-parent-has-no-parameters'\n | 'pack-parameter-invalid'\n | 'pack-content-dependency-stalled'\n | 'pack-output-reference-missing'\n | 'pack-output-reference-conflict'\n | 'pack-output-not-materialized'\n | 'asset-not-ready'\n | 'pack-source-revision-conflict'\n | 'pack-source-path-invalid'\n | 'pack-source-not-found'\n | 'pack-source-mutation-unsupported'\n | 'pack-source-write-failed';\n\nfunction authoringError(\n code: PackAuthoringErrorCode,\n expected: string,\n hint: string,\n detail: Readonly<Record<string, unknown>> = {},\n actual?: string,\n): PackAuthoringError {\n return {\n code,\n expected,\n hint,\n ...(actual === undefined ? {} : { actual }),\n detail,\n };\n}\n\nfunction failure<T = never>(error: PackAuthoringError): Result<T, PackAuthoringError> {\n return err(error);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateSceneComponents(\n value: unknown,\n): Result<readonly ScriptablePackSceneComponentInput[] | undefined, PackAuthoringError> {\n if (value === undefined) return ok(undefined);\n if (!Array.isArray(value)) {\n return failure(\n parameterFailure(\n '$.sceneComponents',\n 'an array of component schema records',\n value,\n 'sceneComponents is not an array',\n ),\n );\n }\n const components: ScriptablePackSceneComponentInput[] = [];\n const names = new Set<string>();\n for (const [componentIndex, candidate] of value.entries()) {\n if (!isRecord(candidate) || typeof candidate.name !== 'string' || !isRecord(candidate.fields)) {\n return failure(\n parameterFailure(\n `$.sceneComponents[${componentIndex}]`,\n 'a component record with name and fields',\n candidate,\n 'scene component schema is malformed',\n ),\n );\n }\n if (candidate.name.length === 0 || names.has(candidate.name)) {\n return failure(\n parameterFailure(\n `$.sceneComponents[${componentIndex}].name`,\n 'a non-empty unique component name',\n candidate.name,\n 'scene component names must be unique',\n ),\n );\n }\n names.add(candidate.name);\n const fields: Record<string, string | { readonly type: string }> = {};\n for (const [fieldName, field] of Object.entries(candidate.fields)) {\n if (\n (typeof field === 'string' && field.length === 0) ||\n (typeof field !== 'string' &&\n (!isRecord(field) || typeof field.type !== 'string' || field.type.length === 0))\n ) {\n return failure(\n parameterFailure(\n `$.sceneComponents[${componentIndex}].fields.${fieldName}`,\n 'a field type string or { type: string }',\n field,\n 'scene component field schema is malformed',\n ),\n );\n }\n fields[fieldName] = field as string | { readonly type: string };\n }\n components.push({ name: candidate.name, fields });\n }\n return ok(components);\n}\n\nfunction isPackageId(value: unknown): value is PackageId {\n return value instanceof Uint8Array && value.byteLength === 16;\n}\n\nfunction cloneValue<T>(value: T): T {\n if (value instanceof Uint8Array) return value.slice() as T;\n if (Array.isArray(value)) return value.map((item) => cloneValue(item)) as T;\n return value;\n}\n\nfunction sourceKeyFailure(sourceKey: unknown, propertyPath = '$.sourceKey'): PackAuthoringError {\n return authoringError(\n 'pack-source-key-invalid',\n 'a sourceKey matching ^[a-z0-9][a-z0-9._-]*(/[a-z0-9][a-z0-9._-]*)*$',\n 'use a stable lower-case semantic key; do not derive it from file paths or output order',\n { propertyPath, sourceKey },\n typeof sourceKey === 'string' ? sourceKey : undefined,\n );\n}\n\nfunction parameterFailure(\n propertyPath: string,\n expected: string,\n actual: unknown,\n reason: string,\n): PackAuthoringError {\n return authoringError(\n 'pack-parameter-invalid',\n expected,\n 'repair the parameter declaration or the instance values, then inspect and rebuild',\n { propertyPath, reason, actual: typeof actual === 'string' ? actual : JSON.stringify(actual) },\n );\n}\n\nfunction numericType(type: PackParameterType): boolean {\n return type === 'u32' || type === 'i32' || type === 'f32' || type === 'f64';\n}\n\nfunction vectorLength(type: PackParameterType): number | undefined {\n switch (type) {\n case 'vec2':\n return 2;\n case 'vec3':\n return 3;\n case 'vec4':\n case 'color':\n return 4;\n default:\n return undefined;\n }\n}\n\nfunction parameterValueError(\n parameter: PackParameterDefinition,\n value: unknown,\n propertyPath: string,\n): PackAuthoringError | undefined {\n const { type } = parameter;\n if (type === 'bool') {\n return typeof value === 'boolean'\n ? undefined\n : parameterFailure(propertyPath, 'a boolean', value, 'bool value has the wrong type');\n }\n if (numericType(type)) {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n return parameterFailure(\n propertyPath,\n 'a finite number',\n value,\n 'numeric value is not finite',\n );\n }\n if ((type === 'u32' || type === 'i32') && !Number.isInteger(value)) {\n return parameterFailure(\n propertyPath,\n 'an integer',\n value,\n 'integer parameter received a fraction',\n );\n }\n if (type === 'u32' && (value < 0 || value > 0xffff_ffff)) {\n return parameterFailure(\n propertyPath,\n 'an unsigned 32-bit integer',\n value,\n 'u32 value is outside [0, 2^32 - 1]',\n );\n }\n if (type === 'i32' && (value < -0x8000_0000 || value > 0x7fff_ffff)) {\n return parameterFailure(\n propertyPath,\n 'a signed 32-bit integer',\n value,\n 'i32 value is outside [-2^31, 2^31 - 1]',\n );\n }\n if (type === 'f32' && !Number.isFinite(Math.fround(value))) {\n return parameterFailure(\n propertyPath,\n 'a finite IEEE-754 32-bit float',\n value,\n 'f32 value overflows binary32',\n );\n }\n if (parameter.minimum !== undefined && value < parameter.minimum) {\n return parameterFailure(\n propertyPath,\n `a number >= ${parameter.minimum}`,\n value,\n 'value is below minimum',\n );\n }\n if (parameter.maximum !== undefined && value > parameter.maximum) {\n return parameterFailure(\n propertyPath,\n `a number <= ${parameter.maximum}`,\n value,\n 'value is above maximum',\n );\n }\n return undefined;\n }\n if (type === 'string') {\n return typeof value === 'string'\n ? undefined\n : parameterFailure(propertyPath, 'a string', value, 'string parameter has the wrong type');\n }\n if (type === 'enum') {\n if (typeof value !== 'string') {\n return parameterFailure(\n propertyPath,\n 'one of the declared enum strings',\n value,\n 'enum value has the wrong type',\n );\n }\n if (parameter.values === undefined || !parameter.values.includes(value)) {\n return parameterFailure(\n propertyPath,\n 'one of the declared enum values',\n value,\n 'enum value is not declared',\n );\n }\n return undefined;\n }\n const length = vectorLength(type);\n if (length !== undefined) {\n if (\n !Array.isArray(value) ||\n value.length !== length ||\n value.some((component) => typeof component !== 'number' || !Number.isFinite(component))\n ) {\n return parameterFailure(\n propertyPath,\n `a finite numeric vector with ${length} components`,\n value,\n 'vector value has the wrong shape',\n );\n }\n if (type === 'color' && value.some((component) => component < 0 || component > 1)) {\n return parameterFailure(\n propertyPath,\n 'an RGBA color with components in [0, 1]',\n value,\n 'color component is outside [0, 1]',\n );\n }\n return undefined;\n }\n if (type === 'asset-guid') {\n const validString = typeof value === 'string' && isValidAssetGuidString(value);\n if (!(value instanceof Uint8Array && value.byteLength === 16) && !validString) {\n return parameterFailure(\n propertyPath,\n 'a 16-byte AssetGuid or UUID string',\n value,\n 'asset GUID value is malformed',\n );\n }\n return undefined;\n }\n return parameterFailure(\n propertyPath,\n 'a supported Pack parameter type',\n value,\n 'unknown parameter type',\n );\n}\n\nfunction normalizeParameterValue(\n parameter: PackParameterDefinition,\n value: unknown,\n propertyPath: string,\n): Result<PackParameterValue, PackAuthoringError> {\n const error = parameterValueError(parameter, value, propertyPath);\n if (error !== undefined) return failure(error);\n if (parameter.type === 'asset-guid' && typeof value === 'string') {\n const parsed = AssetGuidCodec.parse(value);\n if (!parsed.ok) {\n return failure(\n parameterFailure(\n propertyPath,\n 'a valid AssetGuid UUID string',\n value,\n 'asset GUID parser rejected the value',\n ),\n );\n }\n return ok(parsed.value);\n }\n return ok(cloneValue(value as PackParameterValue));\n}\n\nfunction validateParameterDefinitions(\n parameters: unknown,\n propertyPath = '$.parameters',\n): Result<readonly PackParameterDefinition[], PackAuthoringError> {\n if (!Array.isArray(parameters) || parameters.length === 0) {\n return failure(\n parameterFailure(\n propertyPath,\n 'a non-empty parameter descriptor array',\n parameters,\n 'parameters must be explicit and non-empty',\n ),\n );\n }\n const names = new Set<string>();\n const normalized: PackParameterDefinition[] = [];\n for (const [index, candidate] of parameters.entries()) {\n const path = `${propertyPath}[${index}]`;\n if (!isRecord(candidate))\n return failure(\n parameterFailure(\n path,\n 'a parameter descriptor object',\n candidate,\n 'descriptor is not an object',\n ),\n );\n const name = candidate.name;\n if (typeof name !== 'string' || !/^[A-Za-z][A-Za-z0-9_.-]*$/.test(name)) {\n return failure(\n parameterFailure(\n `${path}.name`,\n 'a unique identifier-like parameter name',\n name,\n 'parameter name is invalid',\n ),\n );\n }\n if (names.has(name))\n return failure(\n parameterFailure(\n `${path}.name`,\n 'a unique parameter name',\n name,\n 'parameter name is duplicated',\n ),\n );\n names.add(name);\n const unknown = Object.keys(candidate).find(\n (key) => !['name', 'type', 'default', 'minimum', 'maximum', 'values', 'kind'].includes(key),\n );\n if (unknown !== undefined) {\n return failure(\n parameterFailure(\n `${path}.${unknown}`,\n 'only name, type, default, minimum, maximum, values, and kind fields',\n candidate[unknown],\n 'parameter descriptors are a closed authoring schema',\n ),\n );\n }\n const type = candidate.type;\n if (typeof type !== 'string' || !(PACK_PARAMETER_TYPES as readonly string[]).includes(type)) {\n return failure(\n parameterFailure(\n `${path}.type`,\n PACK_PARAMETER_TYPES.join(' | '),\n type,\n 'parameter type is not supported',\n ),\n );\n }\n const typed = {\n ...candidate,\n name,\n type: type as PackParameterType,\n } as PackParameterDefinition;\n if (typed.values !== undefined) {\n if (\n typed.type !== 'enum' ||\n !Array.isArray(typed.values) ||\n typed.values.length === 0 ||\n typed.values.some((item) => typeof item !== 'string') ||\n new Set(typed.values).size !== typed.values.length\n ) {\n return failure(\n parameterFailure(\n `${path}.values`,\n 'unique non-empty strings for enum',\n typed.values,\n 'enum values are malformed',\n ),\n );\n }\n } else if (typed.type === 'enum') {\n return failure(\n parameterFailure(\n `${path}.values`,\n 'a non-empty enum choices array',\n typed.values,\n 'enum has no choices',\n ),\n );\n }\n if (\n typed.kind !== undefined &&\n (typed.type !== 'asset-guid' || typeof typed.kind !== 'string')\n ) {\n return failure(\n parameterFailure(\n `${path}.kind`,\n 'a kind constraint only on asset-guid parameters',\n typed.kind,\n 'kind is misplaced',\n ),\n );\n }\n for (const field of ['minimum', 'maximum'] as const) {\n const bound = typed[field];\n if (bound !== undefined && (typeof bound !== 'number' || !Number.isFinite(bound))) {\n return failure(\n parameterFailure(\n `${path}.${field}`,\n 'a finite numeric bound',\n bound,\n 'numeric bound is invalid',\n ),\n );\n }\n }\n if (!numericType(typed.type) && (typed.minimum !== undefined || typed.maximum !== undefined)) {\n return failure(\n parameterFailure(\n path,\n 'minimum/maximum only on numeric parameters',\n typed,\n 'numeric bounds are not meaningful for this parameter type',\n ),\n );\n }\n if (\n typed.minimum !== undefined &&\n typed.maximum !== undefined &&\n typed.minimum > typed.maximum\n ) {\n return failure(\n parameterFailure(path, 'minimum <= maximum', typed, 'numeric bounds are reversed'),\n );\n }\n const defaultResult = normalizeParameterValue(typed, typed.default, `${path}.default`);\n if (!defaultResult.ok) return defaultResult;\n normalized.push({\n ...typed,\n default: defaultResult.value,\n ...(typed.values === undefined ? {} : { values: Object.freeze([...typed.values]) }),\n });\n }\n return ok(Object.freeze(normalized));\n}\n\nexport interface PackBuildReadContext {\n readByGuid<TAsset extends Asset | PackCookSource = Asset>(\n guid: AssetGuid,\n ): Promise<Result<TAsset, unknown>>;\n}\n\nexport interface PackBuildContextWithoutParameters extends PackBuildReadContext {\n readonly packageId: PackageId;\n}\n\nexport interface PackBuildContextWithParameters<\n TParameters extends readonly PackParameterDefinition[],\n> extends PackBuildReadContext {\n readonly packageId: PackageId;\n readonly values: PackParameterValues<TParameters>;\n}\n\nexport type PackBuildContext<TParameters extends readonly PackParameterDefinition[] | undefined> =\n TParameters extends readonly PackParameterDefinition[]\n ? PackBuildContextWithParameters<TParameters>\n : PackBuildContextWithoutParameters;\n\n/** Build-only custom source. The host derives identity and invokes the kind's NativeCooker. */\nexport interface PackCookSource {\n readonly kind: string;\n readonly execution: 'cooked';\n readonly source: unknown;\n}\n\nexport type PackOutputMap = Readonly<Record<string, Asset | PackCookSource>>;\nexport type PackBuildResult<TError = unknown> =\n | Result<PackOutputMap, TError>\n | Promise<Result<PackOutputMap, TError>>;\n\ninterface PackDefinitionBase {\n readonly schemaVersion: '2.0.0';\n readonly packageId: PackageId;\n readonly name?: string;\n /** Neutral component schemas used only to externalize SceneAsset refs at cook time. */\n readonly sceneComponents?: readonly ScriptablePackSceneComponentInput[];\n}\n\nexport type ScriptablePackDefinition<\n TParameters extends readonly PackParameterDefinition[] | undefined = undefined,\n> = PackDefinitionBase &\n (TParameters extends readonly PackParameterDefinition[]\n ? {\n readonly parameters: TParameters;\n readonly build: (context: PackBuildContextWithParameters<TParameters>) => PackBuildResult;\n }\n : {\n readonly build: (context: PackBuildContextWithoutParameters) => PackBuildResult;\n });\n\nexport type PackParameterList = readonly [PackParameterDefinition, ...PackParameterDefinition[]];\ntype NonEmptyParameters = PackParameterList;\ntype NoParameterPackInput = PackDefinitionBase & {\n readonly parameters?: never;\n readonly build: (context: PackBuildContextWithoutParameters) => PackBuildResult;\n};\ntype ScriptablePackDefinitionInput<TParameters extends NonEmptyParameters> = PackDefinitionBase & {\n readonly parameters: TParameters;\n readonly build: (context: PackBuildContextWithParameters<TParameters>) => PackBuildResult;\n};\n\n/** Convert a UUID literal into the distinct Pack-level identity brand. */\nexport function definePackageId(value: string | PackageId): PackageId {\n if (isPackageId(value)) return value.slice() as PackageId;\n const parsed = PackageId.parse(value);\n if (!parsed.ok) {\n const error = authoringError(\n 'pack-package-id-invalid',\n 'a 36-character RFC 4122 UUID packageId',\n 'use PackageId.random() or repair the packageId literal before loading the Pack',\n { value },\n value,\n );\n throw Object.assign(new TypeError(error.hint), error);\n }\n return parsed.value;\n}\n\nfunction cloneDefinition(\n definition: ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined>,\n): ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined> {\n const parameters =\n 'parameters' in definition\n ? Object.freeze(\n definition.parameters.map((parameter) =>\n Object.freeze({\n ...parameter,\n default: cloneValue(parameter.default),\n ...(parameter.values === undefined\n ? {}\n : { values: Object.freeze(parameter.values.map((value) => cloneValue(value))) }),\n }),\n ),\n )\n : undefined;\n const sceneComponents =\n definition.sceneComponents === undefined\n ? undefined\n : Object.freeze(\n definition.sceneComponents.map((component) =>\n Object.freeze({\n name: component.name,\n fields: Object.freeze({ ...component.fields }),\n }),\n ),\n );\n return Object.freeze({\n ...definition,\n packageId: definition.packageId.slice() as PackageId,\n ...(parameters === undefined ? {} : { parameters }),\n ...(sceneComponents === undefined ? {} : { sceneComponents }),\n }) as ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined>;\n}\n\n/**\n * Define the only executable authoring shape. A missing `parameters` property\n * is meaningful: its build context has no `values` member.\n */\nexport function definePack(definition: NoParameterPackInput): ScriptablePackDefinition<undefined>;\nexport function definePack<const TParameters extends NonEmptyParameters>(\n definition: ScriptablePackDefinitionInput<TParameters>,\n): ScriptablePackDefinition<TParameters>;\nexport function definePack(\n definition: NoParameterPackInput | ScriptablePackDefinitionInput<NonEmptyParameters>,\n): ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined> {\n const validated = validatePackDefinition(definition);\n if (!validated.ok) throw Object.assign(new TypeError(validated.error.hint), validated.error);\n return cloneDefinition(\n validated.value as\n | ScriptablePackDefinition<NonEmptyParameters>\n | ScriptablePackDefinition<undefined>,\n );\n}\n\n/** Union used only at orchestration boundaries that accept either source form. */\nexport type AnyScriptablePackDefinition =\n | ScriptablePackDefinition<PackParameterList>\n | ScriptablePackDefinition<undefined>;\n\nexport interface ScriptablePackSourceMeta {\n readonly schemaVersion: '2.0.0';\n readonly kind: 'scriptable-pack-source';\n readonly packageId: string;\n readonly source: string;\n readonly parameters?: readonly Readonly<Record<string, unknown>>[];\n}\n\n/** Ephemeral scan evidence; it intentionally contains no output GUID table. */\nexport function projectScriptablePackMeta(\n definition: AnyScriptablePackDefinition,\n sourcePath: string,\n): ScriptablePackSourceMeta {\n return {\n schemaVersion: '2.0.0',\n kind: 'scriptable-pack-source',\n packageId: PackageId.format(definition.packageId),\n source: sourcePath,\n ...('parameters' in definition\n ? {\n parameters: definition.parameters.map((parameter) => ({\n name: parameter.name,\n type: parameter.type,\n default: jsonParameterValue(parameter.default),\n ...(parameter.minimum === undefined ? {} : { minimum: parameter.minimum }),\n ...(parameter.maximum === undefined ? {} : { maximum: parameter.maximum }),\n ...(parameter.values === undefined ? {} : { values: parameter.values }),\n ...(parameter.kind === undefined ? {} : { kind: parameter.kind }),\n })),\n }\n : {}),\n };\n}\n\nfunction jsonParameterValue(value: PackParameterValue): unknown {\n return value instanceof Uint8Array ? AssetGuidCodec.format(value) : value;\n}\n\n/** Runtime validation used by the isolated module loader and source scanner. */\nexport function validatePackDefinition(\n value: unknown,\n sourcePath?: string,\n): Result<\n ScriptablePackDefinition<NonEmptyParameters> | ScriptablePackDefinition<undefined>,\n PackAuthoringError\n> {\n if (!isRecord(value))\n return failure(\n parameterFailure('$', 'a Pack definition object', value, 'definition is not an object'),\n );\n const unknown = Object.keys(value).find(\n (key) =>\n !['schemaVersion', 'packageId', 'name', 'parameters', 'sceneComponents', 'build'].includes(\n key,\n ),\n );\n if (unknown !== undefined) {\n return failure(\n parameterFailure(\n `$.${unknown}`,\n 'only schemaVersion, packageId, name, parameters, sceneComponents, and build fields',\n value[unknown],\n 'legacy static output declarations and external asset tables are not part of v2 authoring',\n ),\n );\n }\n if (value.schemaVersion !== '2.0.0') {\n return failure(\n parameterFailure(\n '$.schemaVersion',\n \"the literal '2.0.0'\",\n value.schemaVersion,\n 'authoring source schema is unsupported',\n ),\n );\n }\n if (!isPackageId(value.packageId)) {\n return failure(\n authoringError(\n 'pack-package-id-invalid',\n 'a 16-byte PackageId',\n 'use definePackageId() for the stable source identity',\n { sourcePath, propertyPath: '$.packageId' },\n typeof value.packageId === 'string' ? value.packageId : undefined,\n ),\n );\n }\n if (value.name !== undefined && typeof value.name !== 'string') {\n return failure(\n parameterFailure('$.name', 'a string when present', value.name, 'display name is malformed'),\n );\n }\n if (typeof value.build !== 'function') {\n return failure(\n parameterFailure('$.build', 'a build function', value.build, 'build is not callable'),\n );\n }\n const sceneComponents = validateSceneComponents(value.sceneComponents);\n if (!sceneComponents.ok) return sceneComponents;\n const hasParameters = Object.hasOwn(value, 'parameters');\n if (!hasParameters) {\n return ok(\n Object.freeze({\n schemaVersion: '2.0.0',\n packageId: value.packageId,\n ...(value.name === undefined ? {} : { name: value.name }),\n ...(sceneComponents.value === undefined ? {} : { sceneComponents: sceneComponents.value }),\n build: value.build,\n }) as ScriptablePackDefinition<undefined>,\n );\n }\n const parameters = validateParameterDefinitions(value.parameters);\n if (!parameters.ok) return parameters;\n return ok(\n Object.freeze({\n schemaVersion: '2.0.0',\n packageId: value.packageId,\n ...(value.name === undefined ? {} : { name: value.name }),\n ...(sceneComponents.value === undefined ? {} : { sceneComponents: sceneComponents.value }),\n parameters: parameters.value,\n build: value.build,\n }) as ScriptablePackDefinition<NonEmptyParameters>,\n );\n}\n\nexport function hasPackParameters(\n value: ScriptablePackDefinition | unknown,\n): value is ScriptablePackDefinition<NonEmptyParameters> {\n return isRecord(value) && Array.isArray(value.parameters) && value.parameters.length > 0;\n}\n\n/** Resolve defaults plus a sparse instance override with shallow replacement. */\nexport function resolvePackParameterValues(\n definition: ScriptablePackDefinition<NonEmptyParameters>,\n overrides: unknown = {},\n inheritedValues?: Readonly<Record<string, PackParameterValue>>,\n): Result<PackParameterValues<NonEmptyParameters>, PackAuthoringError> {\n if (!isRecord(overrides)) {\n return failure(\n parameterFailure(\n '$.values',\n 'an object of sparse parameter overrides',\n overrides,\n 'values is not an object',\n ),\n );\n }\n const descriptors = new Map(\n definition.parameters.map((parameter) => [parameter.name, parameter]),\n );\n for (const name of Object.keys(overrides)) {\n if (!descriptors.has(name)) {\n return failure(\n parameterFailure(\n `$.values.${name}`,\n 'a declared parameter name',\n name,\n 'instance contains an unknown parameter',\n ),\n );\n }\n }\n const values: Record<string, PackParameterValue> = {};\n for (const parameter of definition.parameters) {\n const raw = Object.hasOwn(overrides, parameter.name)\n ? overrides[parameter.name]\n : (inheritedValues?.[parameter.name] ?? parameter.default);\n const normalized = normalizeParameterValue(parameter, raw, `$.values.${parameter.name}`);\n if (!normalized.ok) return normalized;\n values[parameter.name] = normalized.value;\n }\n return ok(Object.freeze(values) as PackParameterValues<NonEmptyParameters>);\n}\n\nexport interface DirectPackJsonAsset {\n readonly kind: string;\n readonly payload: Readonly<Record<string, unknown>>;\n readonly refs: readonly string[];\n readonly name?: string;\n readonly artifacts?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n}\n\nexport interface DirectPackJson {\n readonly schemaVersion: '3.0.0';\n readonly packageId: string;\n readonly assets: Readonly<Record<string, DirectPackJsonAsset>>;\n}\n\nexport interface PackInstanceJson {\n readonly schemaVersion: '3.0.0';\n readonly packageId: string;\n readonly parent: string;\n readonly values: Readonly<Record<string, unknown>>;\n}\n\nexport interface ParsedDirectPackJson {\n readonly format: 'direct';\n readonly schemaVersion: '3.0.0';\n readonly packageId: PackageId;\n readonly assets: Readonly<Record<string, DirectPackJsonAsset>>;\n}\n\nexport interface ParsedPackInstanceJson {\n readonly format: 'instance';\n readonly schemaVersion: '3.0.0';\n readonly packageId: PackageId;\n readonly parent: PackageId;\n readonly values: Readonly<Record<string, unknown>>;\n}\n\nexport type ParsedPackJson = ParsedDirectPackJson | ParsedPackInstanceJson;\n\nfunction jsonError(\n propertyPath: string,\n expected: string,\n actual: unknown,\n reason: string,\n): Result<never, PackAuthoringError> {\n return failure(\n authoringError(\n 'pack-parameter-invalid',\n expected,\n 'repair the v3 pack.json authoring data, then rerun scan or rebuild',\n {\n propertyPath,\n reason,\n actual: typeof actual === 'string' ? actual : JSON.stringify(actual),\n },\n ),\n );\n}\n\nfunction parsePackageId(\n value: unknown,\n propertyPath: string,\n): Result<PackageId, PackAuthoringError> {\n if (typeof value !== 'string') {\n return failure(\n authoringError(\n 'pack-package-id-invalid',\n 'a UUID string',\n 'repair packageId in the authoring file',\n { propertyPath, value },\n ),\n );\n }\n const parsed = PackageId.parse(value);\n if (!parsed.ok) {\n return failure(\n authoringError(\n 'pack-package-id-invalid',\n 'a 36-character RFC 4122 UUID',\n 'repair packageId or use the authoring gateway to mint one',\n { propertyPath, value },\n value,\n ),\n );\n }\n return ok(parsed.value);\n}\n\nfunction parsePackJsonAsset(\n value: unknown,\n sourceKey: string,\n): Result<DirectPackJsonAsset, PackAuthoringError> {\n if (!isRecord(value))\n return jsonError(\n `$.assets.${sourceKey}`,\n 'an asset entry object',\n value,\n 'asset entry is not an object',\n );\n const allowed = new Set(['kind', 'payload', 'refs', 'name', 'artifacts']);\n const unknown = Object.keys(value).find((key) => !allowed.has(key));\n if (unknown !== undefined)\n return jsonError(\n `$.assets.${sourceKey}.${unknown}`,\n 'no GUID or extra authoring field',\n value[unknown],\n 'direct v3 entries derive identity from their object key',\n );\n if (typeof value.kind !== 'string' || value.kind.length === 0)\n return jsonError(\n `$.assets.${sourceKey}.kind`,\n 'a non-empty asset kind',\n value.kind,\n 'asset kind is missing',\n );\n if (!isRecord(value.payload))\n return jsonError(\n `$.assets.${sourceKey}.payload`,\n 'a JSON object payload',\n value.payload,\n 'payload must be a plain object',\n );\n if (\n !Array.isArray(value.refs) ||\n value.refs.some((ref) => typeof ref !== 'string' || !isValidAssetGuidString(ref))\n ) {\n return jsonError(\n `$.assets.${sourceKey}.refs`,\n 'an array of UUID references',\n value.refs,\n 'references must already be real AssetGuids',\n );\n }\n if (value.name !== undefined && (typeof value.name !== 'string' || value.name.length === 0))\n return jsonError(\n `$.assets.${sourceKey}.name`,\n 'a non-empty display name when present',\n value.name,\n 'asset name is malformed',\n );\n if (value.artifacts !== undefined && !isRecord(value.artifacts))\n return jsonError(\n `$.assets.${sourceKey}.artifacts`,\n 'an artifact descriptor object when present',\n value.artifacts,\n 'artifacts are not an object',\n );\n const base: DirectPackJsonAsset = {\n kind: value.kind,\n payload: value.payload,\n refs: Object.freeze([...value.refs]) as readonly string[],\n ...(value.name === undefined ? {} : { name: value.name }),\n };\n if (value.artifacts === undefined) return ok(base);\n const withArtifacts: DirectPackJsonAsset = {\n ...base,\n artifacts: value.artifacts as NonNullable<DirectPackJsonAsset['artifacts']>,\n };\n return ok(withArtifacts);\n}\n\n/** Parse the two mutually exclusive v3 pack.json branches. */\nexport function parsePackSourceJson(value: unknown): Result<ParsedPackJson, PackAuthoringError> {\n if (!isRecord(value))\n return jsonError('$', 'a v3 pack.json object', value, 'document is not an object');\n if (value.schemaVersion !== '3.0.0')\n return jsonError(\n '$.schemaVersion',\n \"the literal '3.0.0'\",\n value.schemaVersion,\n 'document schema is not v3',\n );\n const unknown = Object.keys(value).find(\n (key) => !['schemaVersion', 'packageId', 'assets', 'parent', 'values'].includes(key),\n );\n if (unknown !== undefined)\n return jsonError(\n `$.${unknown}`,\n 'no extra top-level authoring fields',\n value[unknown],\n 'keep the v3 document to packageId+assets or packageId+parent+values',\n );\n const packageResult = parsePackageId(value.packageId, '$.packageId');\n if (!packageResult.ok) return packageResult;\n const hasAssets = Object.hasOwn(value, 'assets');\n const hasParent = Object.hasOwn(value, 'parent');\n const hasValues = Object.hasOwn(value, 'values');\n if (hasAssets && (hasParent || hasValues))\n return jsonError(\n '$',\n 'assets or parent+values, never both',\n value,\n 'direct and instance branches are mutually exclusive',\n );\n if (hasAssets) {\n if (!isRecord(value.assets))\n return jsonError(\n '$.assets',\n 'a sourceKey to asset object',\n value.assets,\n 'direct assets are not an object',\n );\n const assets: Record<string, DirectPackJsonAsset> = {};\n for (const [sourceKey, entry] of Object.entries(value.assets)) {\n if (!isValidPackSourceKey(sourceKey))\n return failure(sourceKeyFailure(sourceKey, `$.assets.${sourceKey}`));\n const parsed = parsePackJsonAsset(entry, sourceKey);\n if (!parsed.ok) return parsed;\n assets[sourceKey] = parsed.value;\n }\n return ok({\n format: 'direct',\n schemaVersion: '3.0.0',\n packageId: packageResult.value,\n assets: Object.freeze(assets),\n });\n }\n if (!hasParent || !hasValues || hasAssets)\n return jsonError(\n '$',\n 'parent and values for an instance document',\n value,\n 'instance branch is incomplete',\n );\n const parentResult = parsePackageId(value.parent, '$.parent');\n if (!parentResult.ok) return parentResult;\n if (!isRecord(value.values))\n return jsonError(\n '$.values',\n 'a sparse parameter object',\n value.values,\n 'instance values are not an object',\n );\n return ok({\n format: 'instance',\n schemaVersion: '3.0.0',\n packageId: packageResult.value,\n parent: parentResult.value,\n values: Object.freeze({ ...value.values }),\n });\n}\n\nexport interface DirectPackAssetProjection extends DirectPackJsonAsset {\n readonly guid: string;\n readonly sourceKey: string;\n}\n\nexport interface DirectPackProjection {\n readonly packageId: string;\n readonly assets: readonly DirectPackAssetProjection[];\n}\n\n/** Add the computed GUIDs needed by the ordinary Pack v2 publication path. */\nexport function projectDirectPackJson(\n value: ParsedDirectPackJson | DirectPackJson,\n): Result<DirectPackProjection, PackAuthoringError> {\n const parsed = 'format' in value ? ok(value) : parsePackSourceJson(value);\n if (!parsed.ok) return parsed;\n if (parsed.value.format !== 'direct') {\n return failure(\n authoringError(\n 'pack-parameter-invalid',\n 'a direct v3 pack.json',\n 'projectDirectPackJson accepts the direct branch only',\n { observed: parsed.value.format },\n ),\n );\n }\n const assets: DirectPackAssetProjection[] = [];\n for (const [sourceKey, entry] of Object.entries(parsed.value.assets).sort(([left], [right]) =>\n left.localeCompare(right),\n )) {\n assets.push({\n ...entry,\n guid: AssetGuidCodec.format(AssetGuidCodec.derive(parsed.value.packageId, sourceKey)),\n sourceKey,\n });\n }\n return ok({ packageId: PackageId.format(parsed.value.packageId), assets: Object.freeze(assets) });\n}\n\nexport interface PackParameterRootSubject {\n readonly format: 'source';\n readonly packageId: PackageId;\n readonly parameters: readonly PackParameterDefinition[];\n}\n\nexport interface PackParameterInstanceSubject {\n readonly format: 'instance';\n readonly packageId: PackageId;\n readonly parent: PackageId;\n readonly values: Readonly<Record<string, unknown>>;\n}\n\nexport interface PackDirectSubject {\n readonly format: 'direct';\n readonly packageId: PackageId;\n}\n\nexport type PackParameterInheritanceSubject =\n | PackParameterRootSubject\n | PackParameterInstanceSubject\n | PackDirectSubject;\n\nexport interface ResolvedPackParameterInheritance {\n readonly packageId: PackageId;\n readonly rootPackageId: PackageId;\n readonly values: Readonly<Record<string, PackParameterValue>>;\n readonly parentChain: readonly string[];\n readonly parameters: readonly PackParameterDefinition[];\n}\n\nexport type PackParameterSubjectReader = (\n packageId: PackageId,\n) =>\n | PackParameterInheritanceSubject\n | undefined\n | Promise<PackParameterInheritanceSubject | undefined>;\n\nfunction subjectId(subject: PackParameterInheritanceSubject): string {\n return PackageId.format(subject.packageId).toLowerCase();\n}\n\n/** Resolve one finite parent chain. Every instance keeps its own packageId. */\nexport async function resolvePackParameterInheritance(\n subject: PackParameterInheritanceSubject,\n readParent: PackParameterSubjectReader,\n): Promise<Result<ResolvedPackParameterInheritance, PackAuthoringError>> {\n const visited = new Set<string>();\n\n async function visit(\n current: PackParameterInheritanceSubject,\n path: readonly string[],\n ): Promise<Result<ResolvedPackParameterInheritance, PackAuthoringError>> {\n const currentId = subjectId(current);\n if (visited.has(currentId) || path.includes(currentId)) {\n return failure(\n authoringError(\n 'pack-parent-cycle',\n 'a finite acyclic Pack parent chain',\n 'inspect parentChain and repair the first repeated packageId',\n { packageId: currentId, parentChain: [...path, currentId] },\n ),\n );\n }\n visited.add(currentId);\n const nextPath = [...path, currentId];\n if (current.format === 'direct') {\n return failure(\n authoringError(\n 'pack-parent-has-no-parameters',\n 'a ScriptablePack source with parameters as the parent',\n 'direct packs cannot be instance parents; point the instance at a ScriptablePack source with parameters',\n { packageId: currentId },\n ),\n );\n }\n if (current.format === 'source') {\n const descriptors = validateParameterDefinitions(current.parameters, '$.parameters');\n if (!descriptors.ok) return descriptors;\n if (descriptors.value.length === 0) {\n return failure(\n authoringError(\n 'pack-parent-has-no-parameters',\n 'the parent source to declare a non-empty parameter list',\n 'use clone for an independent zero-parameter Pack instead of creating an empty instance',\n { packageId: currentId },\n ),\n );\n }\n const definition = {\n schemaVersion: '2.0.0',\n packageId: current.packageId,\n parameters: descriptors.value as NonEmptyParameters,\n build: () => ok({}),\n } as ScriptablePackDefinition<NonEmptyParameters>;\n const values = resolvePackParameterValues(definition);\n if (!values.ok) return values;\n return ok({\n packageId: current.packageId,\n rootPackageId: current.packageId,\n values: values.value,\n parentChain: [],\n parameters: descriptors.value,\n });\n }\n const parent = await readParent(current.parent);\n if (parent === undefined) {\n return failure(\n authoringError(\n 'pack-parent-not-found',\n 'the parent packageId to resolve in the source index',\n 'inspect the parent locator or recreate the instance from a live ScriptablePack with parameters',\n { packageId: currentId, parent: PackageId.format(current.parent) },\n ),\n );\n }\n if (\n PackageId.format(parent.packageId).toLowerCase() !==\n PackageId.format(current.parent).toLowerCase()\n ) {\n return failure(\n authoringError(\n 'pack-parent-not-found',\n 'the parent reader to return the requested packageId',\n 'repair the Source Index locator and retry inheritance resolution',\n {\n packageId: currentId,\n requestedParent: PackageId.format(current.parent),\n observedParent: PackageId.format(parent.packageId),\n },\n ),\n );\n }\n const resolvedParent = await visit(parent, nextPath);\n if (!resolvedParent.ok) return resolvedParent;\n const descriptors = resolvedParent.value.parameters;\n const definition = {\n schemaVersion: '2.0.0',\n packageId: resolvedParent.value.rootPackageId,\n parameters: descriptors as NonEmptyParameters,\n build: () => ok({}),\n } as ScriptablePackDefinition<NonEmptyParameters>;\n const values = resolvePackParameterValues(\n definition,\n current.values,\n resolvedParent.value.values,\n );\n if (!values.ok) return values;\n return ok({\n packageId: current.packageId,\n rootPackageId: resolvedParent.value.rootPackageId,\n values: values.value,\n parentChain: [PackageId.format(current.parent), ...resolvedParent.value.parentChain],\n parameters: descriptors,\n });\n }\n\n return visit(subject, []);\n}\n\nexport const resolvePackInheritance = resolvePackParameterInheritance;\n\nexport const PACK_AUTHORING_OPERATION_IDS = [\n 'asset.list',\n 'asset.inspect',\n 'asset.resolve',\n 'asset.verify',\n 'asset-source.create',\n 'asset-source.clone',\n 'asset-source.create-instance',\n 'asset-source.apply-values',\n 'asset-source.rebuild',\n 'asset-source.cold-cook',\n] as const;\n\nexport type PackAuthoringOperationId = (typeof PACK_AUTHORING_OPERATION_IDS)[number];\n\nexport interface PackAuthoringOperation {\n readonly requestId: string;\n readonly expectedRevision?: string;\n readonly operation: PackAuthoringOperationId;\n readonly subject?: string;\n readonly sourcePath?: string;\n readonly targetPath?: string;\n readonly packageId?: string;\n /** Parent package identity used by asset-source.create-instance. */\n readonly parentPackageId?: string;\n /** JSON-facing alias accepted by adapters at the operation boundary. */\n readonly parent?: string;\n readonly sourceKey?: string;\n readonly values?: Readonly<Record<string, unknown>>;\n /** `pack.ts` or `pack.json`; omitted defaults to the target extension. */\n readonly format?: 'pack.ts' | 'pack.json';\n /** Direct v3 entries for asset-source.create. */\n readonly initialAssets?: Readonly<Record<string, DirectPackJsonAsset>>;\n /** Explicit non-empty parameter declarations for a generated pack.ts scaffold. */\n readonly parameters?: readonly Readonly<Record<string, unknown>>[];\n /** Required proof level for asset.resolve. */\n readonly require?: 'identity' | 'present' | 'ready';\n}\n\nexport type PackAuthoringResolutionStatus = 'identity' | 'present' | 'ready';\n\nexport interface PackAuthoringOperationResult {\n readonly operation: PackAuthoringOperationId;\n readonly requestId: string;\n readonly schemaVersion?: 'asset-verification-v1';\n readonly sourcePath?: string;\n readonly targetPath?: string;\n readonly revision?: string;\n readonly packageId?: string;\n readonly parentPackageId?: string;\n readonly sourceKey?: string;\n readonly guid?: string;\n readonly format?: 'pack.ts' | 'pack.json' | 'direct' | 'instance';\n readonly status?: PackAuthoringResolutionStatus;\n readonly kind?: string;\n readonly parameters?: readonly Readonly<Record<string, unknown>>[];\n readonly values?: Readonly<Record<string, unknown>>;\n readonly effectiveValues?: Readonly<Record<string, unknown>>;\n readonly parentChain?: readonly string[];\n readonly assets?: readonly Readonly<Record<string, unknown>>[];\n readonly sources?: readonly Readonly<Record<string, unknown>>[];\n readonly capabilities?: readonly PackAuthoringOperationId[];\n readonly snapshot?: {\n readonly sourceCount: number;\n readonly assetCount: number;\n };\n /** Bounded source/output facts for read-only verification consumers. */\n readonly scope?: {\n readonly sourceCount: number;\n readonly assetCount: number;\n readonly sourcePaths: readonly string[];\n readonly omittedSourceCount: number;\n readonly assetLimit: number;\n readonly truncated: boolean;\n readonly scriptablePackSourceCount: number;\n readonly scriptablePackSources: readonly {\n readonly sourcePath: string;\n readonly packageId: string;\n readonly output: 'unproduced';\n readonly reason: 'producer-not-run';\n }[];\n readonly omittedScriptablePackSourceCount: number;\n };\n readonly summary?: {\n readonly assetCount: number;\n readonly emittedAssetCount: number;\n readonly materialCount: number;\n readonly unproducedAssetCount: number;\n readonly unknownAssetCount: number;\n readonly unmaterializedScriptablePackCount: number;\n };\n}\n\nexport interface PackAuthoringGatewayPort<TResult = unknown> {\n execute(operation: PackAuthoringOperation): Promise<Result<TResult, PackAuthoringError>>;\n}\n\n/** One idempotent gateway wrapper shared by Editor and CLI adapters. */\nexport function createPackAuthoringGateway<TResult = unknown>(\n port: PackAuthoringGatewayPort<TResult>,\n): PackAuthoringGatewayPort<TResult> {\n const requests = new Map<\n string,\n { fingerprint: string; result: Promise<Result<TResult, PackAuthoringError>> }\n >();\n return {\n execute(operation) {\n if (typeof operation.requestId !== 'string' || operation.requestId.trim().length === 0) {\n return Promise.resolve(\n failure(\n authoringError(\n 'pack-source-revision-conflict',\n 'a non-empty caller-minted requestId',\n 'mint a new requestId and retry',\n { requestId: operation.requestId },\n ),\n ),\n );\n }\n let fingerprint: string;\n try {\n fingerprint = JSON.stringify(operation);\n } catch (cause) {\n return Promise.resolve(\n failure(\n authoringError(\n 'pack-parameter-invalid',\n 'a JSON-serialisable authoring operation',\n 'remove non-serialisable operation fields and retry with a new requestId',\n {\n requestId: operation.requestId,\n cause: cause instanceof Error ? cause.message : String(cause),\n },\n ),\n ),\n );\n }\n const previous = requests.get(operation.requestId);\n if (previous !== undefined) {\n if (previous.fingerprint === fingerprint) return previous.result;\n return Promise.resolve(\n failure(\n authoringError(\n 'pack-source-revision-conflict',\n 'one immutable operation per requestId',\n 'read the original result or mint a new requestId',\n { requestId: operation.requestId },\n ),\n ),\n );\n }\n const result = Promise.resolve()\n .then(() => port.execute(operation))\n .catch(\n (cause): Result<TResult, PackAuthoringError> =>\n failure(\n authoringError(\n 'pack-parameter-invalid',\n 'the Pack authoring port to return a structured Result',\n 'repair the gateway port failure, then retry with a new requestId',\n {\n requestId: operation.requestId,\n cause: cause instanceof Error ? cause.message : String(cause),\n },\n ),\n ),\n );\n requests.set(operation.requestId, { fingerprint, result });\n return result;\n },\n };\n}\n\nexport const PACK_AUTHORING_OPERATION_DESCRIPTORS = PACK_AUTHORING_OPERATION_IDS.map((id) => ({\n id,\n domain: id.startsWith('asset-source.') ? 'session' : 'asset',\n readOnly: id.startsWith('asset.'),\n requiresRevision: !id.startsWith('asset.') && id !== 'asset-source.create',\n})) as readonly {\n id: PackAuthoringOperationId;\n domain: 'asset' | 'session';\n readOnly: boolean;\n requiresRevision: boolean;\n}[];\n","import type {\n AssetSubjectRef,\n ImportedOutputDeclaration,\n ProducerContractDiagnostic,\n ProducerContractResult,\n SourceOverrideMap,\n} from '@forgeax/engine-types';\nimport { validateSourceOverrideMap } from '@forgeax/engine-types';\n\ntype ProducerObject = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is ProducerObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction hasText(value: unknown): value is string {\n return typeof value === 'string' && value.length > 0;\n}\n\nfunction issue(\n code: ProducerContractDiagnostic['code'],\n subjectId: string,\n expected: string,\n hint: string,\n actual?: string,\n authority: 'producer' | 'pack' = 'producer',\n): ProducerContractResult<never> {\n const subject: AssetSubjectRef = { type: 'asset', id: subjectId };\n return {\n ok: false,\n error: {\n code,\n subject,\n expected,\n ...(actual === undefined ? {} : { actual }),\n hint,\n authority,\n },\n };\n}\n\nfunction validateFacts(\n value: ProducerObject,\n subjectId: string,\n): ProducerContractResult<ProducerObject> {\n if ('packageId' in value && !hasText(value.packageId)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'packageId must be a non-empty string',\n 'publish a stable package identity',\n );\n }\n if ('provenance' in value) {\n const provenance = value.provenance;\n if (!isRecord(provenance) || !hasText(provenance.provider) || !hasText(provenance.version)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'provenance.provider and provenance.version must be non-empty',\n 'publish provider identity and version',\n );\n }\n }\n if ('revision' in value) {\n const revision = value.revision;\n if (\n !isRecord(revision) ||\n !hasText(revision.digest) ||\n !hasText(revision.rootId) ||\n typeof revision.observedAt !== 'number' ||\n !Number.isFinite(revision.observedAt)\n ) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'revision.digest, revision.rootId and finite revision.observedAt',\n 'publish a complete resource revision',\n );\n }\n }\n if ('diagnostics' in value) {\n if (!Array.isArray(value.diagnostics)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'diagnostics must be an array',\n 'publish structured diagnostics as an array',\n );\n }\n for (const diagnostic of value.diagnostics) {\n if (!isRecord(diagnostic) || !hasText(diagnostic.code)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'each diagnostic needs a stable code',\n 'publish a machine-readable diagnostic code',\n );\n }\n if (diagnostic.severity === 'blocking') {\n if (!isRecord(diagnostic.subject) || !hasText(diagnostic.subject.id)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'blocking diagnostic.subject must identify an object',\n 'set subject.type and subject.id',\n );\n }\n if (!hasText(diagnostic.expected) || !hasText(diagnostic.hint)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'blocking diagnostics need expected and hint',\n 'provide an executable recovery hint',\n );\n }\n }\n }\n }\n return { ok: true, value };\n}\n\nfunction validateMetaSourceOverrides(\n value: ProducerObject,\n subjectId: string,\n): ProducerContractResult<ProducerObject> {\n if (!('sourceOverrides' in value)) return { ok: true, value };\n const declaredSourceKeys = Array.isArray(value.subAssets)\n ? value.subAssets.flatMap((subAsset) =>\n isRecord(subAsset) && hasText(subAsset.sourceKey) ? [subAsset.sourceKey] : [],\n )\n : [];\n const result = validateSourceOverrideMap(value.sourceOverrides, declaredSourceKeys);\n if (!result.ok) {\n return issue(\n result.error.code,\n subjectId,\n result.error.expected,\n result.error.hint,\n result.error.actual,\n 'pack',\n );\n }\n return {\n ok: true,\n value: { ...value, sourceOverrides: result.value as SourceOverrideMap | undefined },\n };\n}\n\n/**\n * Validate one package or imported-output producer declaration.\n *\n * The accepted fields mirror the engine-types POD contract. This function\n * validates that schema without creating a second schema or interpreting\n * diagnostic messages.\n */\nexport function validateProducerContract(value: unknown): ProducerContractResult<ProducerObject> {\n if (!isRecord(value)) {\n return issue(\n 'invalid-producer-fact',\n 'unknown',\n 'producer declaration must be an object',\n 'publish a JSON object',\n );\n }\n\n const subjectId = hasText(value.guid)\n ? value.guid\n : hasText(value.packageId)\n ? value.packageId\n : 'unknown';\n const facts = validateFacts(value, subjectId);\n if (!facts.ok) return facts;\n\n const metaOverrides = validateMetaSourceOverrides(value, subjectId);\n if (!metaOverrides.ok) return metaOverrides;\n\n if ('kind' in value && !hasText(value.kind)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'kind must be a non-empty open string',\n 'publish the provider-owned asset kind',\n );\n }\n if ('execution' in value && value.execution !== 'direct' && value.execution !== 'cooked') {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'execution must be either direct or cooked',\n 'publish the explicit authoring execution mode',\n );\n }\n const hasOutputIdentity = 'kind' in value || 'sourceIndex' in value || 'sourceKey' in value;\n if (!hasOutputIdentity) return facts;\n if (value.sourceKey !== undefined && !hasText(value.sourceKey)) {\n return issue(\n 'invalid-source-key',\n subjectId,\n 'sourceKey must be a non-empty producer-owned string',\n 'publish a stable semantic sourceKey',\n );\n }\n if (\n value.sourceIndex !== undefined &&\n (typeof value.sourceIndex !== 'number' ||\n !Number.isInteger(value.sourceIndex) ||\n value.sourceIndex < 0)\n ) {\n return issue(\n 'invalid-source-index',\n subjectId,\n 'sourceIndex must be a non-negative integer locator',\n 'publish a non-negative sourceIndex without using it as identity',\n );\n }\n if (value.sourceKey === undefined && value.sourceIndex !== undefined) {\n return issue(\n 'missing-source-key',\n subjectId,\n 'sourceKey is required when an output declares sourceIndex',\n 'publish a stable semantic key; do not derive identity from sourceIndex',\n );\n }\n if (\n 'compatiblePreviousKinds' in value &&\n (!Array.isArray(value.compatiblePreviousKinds) ||\n value.compatiblePreviousKinds.some((kind) => !hasText(kind)))\n ) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'compatiblePreviousKinds must be an array of non-empty kind strings',\n 'declare only producer-verified prior kinds that may preserve the GUID',\n );\n }\n return metaOverrides;\n}\n\n/**\n * Validate output topology without ever treating `sourceIndex` as identity.\n *\n * AI-readable callers should use the discriminated result and its structured\n * `code`, `expected`, `actual`, and `hint` fields for recovery decisions.\n */\nexport function validateProducerOutputs(\n outputs: readonly ImportedOutputDeclaration[],\n): ProducerContractResult<readonly ImportedOutputDeclaration[]> {\n const missingKey = outputs.find((output) => output.sourceKey === undefined);\n if (missingKey !== undefined) {\n return issue(\n outputs.length > 1 ? 'source-index-ambiguous' : 'missing-source-key',\n missingKey.guid,\n 'every output declaration needs a stable sourceKey',\n 'add sourceKey to each output before matching topology',\n );\n }\n const keys = new Map<string, ImportedOutputDeclaration>();\n for (const output of outputs) {\n const result = validateProducerContract(output);\n if (!result.ok) return result;\n const sourceKey = output.sourceKey;\n if (sourceKey === undefined) continue;\n const prior = keys.get(sourceKey);\n if (prior !== undefined) {\n return issue(\n 'duplicate-source-key',\n output.guid,\n 'sourceKey values must be unique within one producer package',\n 'rename the duplicate semantic output key',\n sourceKey,\n );\n }\n keys.set(sourceKey, output);\n }\n return { ok: true, value: outputs };\n}\n","/**\n * Last path segment of a `/`- or `\\`-separated path, trailing separators\n * stripped. Inlined rather than imported from `node:path` so this module stays\n * browser-safe: the dev-server pack path (`vite-plugin-pack` `/__pack/`) runs\n * `buildCatalog` -> `deriveAssetName` in client code where `node:path` is\n * externalized and `path.basename` throws.\n */\nfunction baseName(p: string): string {\n const trimmed = p.replace(/[/\\\\]+$/, '');\n const idx = Math.max(trimmed.lastIndexOf('/'), trimmed.lastIndexOf('\\\\'));\n return idx === -1 ? trimmed : trimmed.slice(idx + 1);\n}\n\n/**\n * Derive an asset's display name from package metadata.\n *\n * Pure function -- zero IO, zero side effects, browser-safe. Build-time\n * (build-catalog) and runtime (resolveName) share this single source of truth\n * for deterministic asset display-name resolution.\n *\n * Resolution contract:\n * - an explicit storedName is authoritative;\n * - a package path is the fallback when no storedName is present;\n * - an asset without a package and without a storedName resolves to ''.\n *\n * `assetCount` remains in the signature because callers derive it from their\n * package model, but it must not erase an explicitly authored name. In\n * particular, a single authored entry in `Materials.pack.json` resolves to its\n * entry name rather than temporarily appearing as the package basename.\n */\nexport function deriveAssetName(\n packagePath: string | null,\n _assetCount: number,\n storedName?: string,\n): string {\n if (storedName !== undefined) {\n return storedName;\n }\n if (packagePath === null) {\n return '';\n }\n return baseName(packagePath);\n}\n","import { dirname, resolve } from 'node:path';\nimport { deriveAssetName } from './deriveAssetName.js';\n\nfunction deriveSourceName(metaFileName: string): string {\n return metaFileName.replace(/\\.meta\\.json$/, '');\n}\n\nexport function resolveAssetSource(metaPath: string, source: string | undefined): string {\n if (source === undefined) {\n const metaDir = dirname(metaPath);\n const metaName = deriveAssetName(metaPath, 1);\n const derived = deriveSourceName(metaName);\n return resolve(metaDir, derived);\n }\n return resolve(dirname(metaPath), source);\n}\n","import type { PackV2 } from '@forgeax/engine-types';\nimport Ajv, { type ValidateFunction } from 'ajv';\nimport addFormats from 'ajv-formats';\nimport metaSchemaJson from '../schema/meta.schema.json' with { type: 'json' };\nimport packSchemaJson from '../schema/pack.schema.json' with { type: 'json' };\n\nconst ajv = new Ajv({ strict: true, allErrors: false });\naddFormats(ajv, ['uuid']);\n\n// Module-top-level compiled validators - compiled once on import, never recreated.\nexport const validateMeta = ajv.compile(metaSchemaJson);\nexport const validatePack = ajv.compile(packSchemaJson);\n\nexport function validatePackV2(value: unknown): value is PackV2 {\n if (!validatePack(value) || !isPackV2Shape(value)) return false;\n\n const seenGuids = new Set<string>();\n for (const asset of value.assets) {\n if (seenGuids.has(asset.guid)) return false;\n seenGuids.add(asset.guid);\n }\n return true;\n}\n\nfunction isPackV2Shape(value: unknown): value is PackV2 {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'schemaVersion' in value &&\n value.schemaVersion === '2.0.0'\n );\n}\n\n// === SceneAsset payload validator factory (feat-20260514 w5 / D-P4) =============\n//\n// Decision anchors:\n// - plan-strategy §D-P4 (per-component additionalProperties:false, path a;\n// path b \"extend PackErrorDetail\" rejected to keep the 8-member\n// PackErrorCode closed union frozen)\n// - requirements §AC-08(b) (typo field name fail-fast through ajv with the\n// verbatim 'additional properties' message wording)\n// - requirements §AC-10 (no new SceneErrorCode / PackErrorCode introduced)\n//\n// `buildSceneAssetValidator(componentSchemas)` returns a fresh ajv\n// `ValidateFunction` whose JSON Schema sub-tree describes:\n// {\n// kind: 'scene',\n// nodes: SceneEntity[]\n// }\n// where each SceneEntity has the closed shape\n// { localId: integer, components: <closed map keyed by registered tokens> }\n// and the per-component sub-schema is composed verbatim from the caller's\n// `componentSchemas[name]` entry. `additionalProperties: false` is applied\n// at three layers: top-level SceneAsset, SceneEntity, and SceneEntity.components,\n// so ajv emits an `additional properties` ajvError on any typo or unknown\n// component token (AC-08(b)).\n//\n// The runtime layer feeds `componentSchemas` from the live `defineComponent`\n// registry; this factory itself stays ECS-free (charter proposition 5\n// consistent abstraction: pack package is layered below ecs and runtime,\n// the per-component schemas arrive as plain ajv-compatible JSON Schema\n// objects).\nexport function buildSceneAssetValidator(\n componentSchemas: Readonly<Record<string, object>>,\n): ValidateFunction {\n // Use a separate ajv instance so the dynamically registered closed map of\n // component sub-schemas does not pollute the module-top-level validators\n // above (they may be re-built across test fixtures with different\n // component sets).\n const localAjv = new Ajv({ strict: true, allErrors: false });\n addFormats(localAjv, ['uuid']);\n\n const componentsProperties: Record<string, object> = {};\n for (const [name, sub] of Object.entries(componentSchemas)) {\n componentsProperties[name] = sub;\n }\n\n const componentsSchema = {\n type: 'object',\n additionalProperties: false,\n properties: componentsProperties,\n };\n const instanceSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['source'],\n properties: {\n // Authored scenes use a GUID string. Pack output may carry a refs[]\n // index, which is resolved by the Scene decoder before instantiation.\n source: {\n oneOf: [\n { type: 'string', minLength: 1 },\n { type: 'integer', minimum: 0 },\n ],\n },\n overrides: {\n type: 'array',\n items: {\n type: 'object',\n additionalProperties: false,\n required: ['target', 'components'],\n properties: {\n target: { type: 'array', minItems: 1, items: { type: 'string', minLength: 1 } },\n components: componentsSchema,\n },\n },\n },\n },\n };\n const entitySchema = {\n type: 'object',\n additionalProperties: false,\n required: ['components'],\n properties: {\n components: componentsSchema,\n instance: instanceSchema,\n },\n };\n const sceneSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['kind', 'entities'],\n properties: {\n kind: { type: 'string', const: 'scene' },\n // Skin assets are explicit scene dependencies so async catalog loading\n // can finish the joint-wiring path before the Scene is instantiated.\n // Authored producers use GUID strings; Pack output may use refs[] indices.\n skinGuids: {\n type: 'array',\n items: {\n oneOf: [\n { type: 'string', minLength: 1 },\n { type: 'integer', minimum: 0 },\n ],\n },\n },\n entities: {\n type: 'object',\n propertyNames: { type: 'string', minLength: 1 },\n additionalProperties: entitySchema,\n },\n },\n };\n\n return localAjv.compile(sceneSchema);\n}\n\n// === MaterialAsset payload validator factory (feat-20260523-shader-template-instance-split M1-T06) ===\n//\n// Decision anchors:\n// - plan-strategy D-PackKind (factory pattern, same shape as buildSceneAssetValidator)\n// - plan-strategy D-ParamTypeWhitelist (paramTypeWhitelist consumed here)\n// - requirements AC-04 (v1 type set SSOT; validator covers all param type boundaries)\n//\n// `buildMaterialAssetValidator(paramTypeWhitelist)` returns an ajv\n// `ValidateFunction` that validates:\n// {\n// materialShader: string,\n// paramSchema: ParamSchemaEntry[],\n// values: object\n// }\n// Each ParamSchemaEntry.type must be in the whitelist (D-ParamTypeWhitelist).\n// `additionalProperties: false` at top level so ajv rejects unknown fields.\n// values is free-form (object) — the runtime layer does deeper validation.\n//\n// Uses a separate ajv instance per call so different whitelists across\n// test fixtures do not pollute the module-top-level validators.\nexport function buildMaterialAssetValidator(\n paramTypeWhitelist: ReadonlySet<string>,\n): ValidateFunction {\n const localAjv = new Ajv({ strict: true, allErrors: false });\n\n const whitelistEnum = Array.from(paramTypeWhitelist);\n\n const paramSchemaEntry = {\n type: 'object',\n additionalProperties: false,\n required: ['name', 'type'],\n properties: {\n name: { type: 'string', minLength: 1 },\n type: { type: 'string', enum: whitelistEnum },\n default: {},\n },\n };\n\n const materialSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['materialShader', 'paramSchema', 'values'],\n properties: {\n materialShader: { type: 'string', minLength: 1 },\n paramSchema: {\n type: 'array',\n items: paramSchemaEntry,\n },\n values: { type: 'object' },\n },\n };\n\n return localAjv.compile(materialSchema);\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://github.com/ForgeaXGame/forgeax-engine/packages/pack/schema/meta.schema.json\",\n \"title\": \"ExternalAssetPackage\",\n \"description\": \"Schema for .meta.json files describing an external asset package (source file + import settings + derived sub-assets).\",\n \"$comment\": \"ScriptablePack durable consumer kinds are published by SCRIPTABLE_PACK_ASSET_KINDS in @forgeax/engine-pack/source; Meta sub-asset kind remains open for producer extensions.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schemaVersion\", \"kind\", \"importer\", \"importSettings\", \"subAssets\"],\n \"properties\": {\n \"schemaVersion\": {\n \"oneOf\": [{ \"type\": \"string\" }, { \"type\": \"integer\" }],\n \"description\": \"Schema version. Strings (e.g. '1.0.0') for hand-authored .meta.json; integers (1, 2, ...) for importer-emitted .meta.json (forgeax asset import writes schemaVersion: 1 as the wire format SSOT, GltfMetaJson literal type).\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"external-asset-package\",\n \"description\": \"Discriminator for the external asset package type.\"\n },\n \"packageId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable producer-owned package identity. It survives package moves; path is only a locator.\"\n },\n \"provenance\": {\n \"$ref\": \"#/$defs/provenance\"\n },\n \"revision\": {\n \"$ref\": \"#/$defs/revision\"\n },\n \"diagnostics\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/diagnostic\" }\n },\n \"importer\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Open importer key (feat-20260603-asset-import-loader-injection M2): the @forgeax/engine-import runner dispatches the sidecar to the Importer registered under this key. Replaces the former closed `assetType` enum (one-cut migration, no shim). Known keys: 'image' (engine-image importer, single-image source), 'gltf' (engine-gltf importer, .gltf/.glb source), 'audio' (engine-audio-webaudio import path), 'font' (engine-font bake path), and the reserved 'shader' key consumed by engine-vite-plugin-shader's orthogonal transform pipeline (the import runner explicitly skips it). Adding a new importer needs only a registered Importer under a new key - no schema enum edit. Orthogonal to subAssets[].kind which identifies per-sub-asset payload kind.\"\n },\n \"source\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Optional. Omit to derive the companion file in the same directory (strip .meta.json suffix from the meta filename). An explicit source is resolved relative to this sidecar.\"\n },\n \"importSettings\": {\n \"type\": \"object\",\n \"description\": \"Importer-specific settings. Free-form object. Common texture keys: compressionMode ('auto' | 'etc1s' | 'uastc' | 'none', default 'auto'; see @forgeax/engine-image README), mipmap (boolean, bake mip chain offline).\"\n },\n \"sourceOverrides\": {\n \"type\": \"object\",\n \"description\": \"Optional producer-owned Meta author facts keyed by declared subAssets[].sourceKey. An empty object is legacy-equivalent and omitted by canonical writers.\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"description\": \"Producer-owned payload; the pack schema validates object shape and the producer contract validates sourceKey identity.\",\n \"additionalProperties\": true\n }\n },\n \"sourceOverrideDescriptors\": {\n \"type\": \"array\",\n \"description\": \"Producer-declared authoring contracts for stable source override keys.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"sourceKey\", \"payloadSchema\"],\n \"properties\": {\n \"sourceKey\": { \"type\": \"string\", \"minLength\": 1 },\n \"semantic\": { \"type\": \"string\", \"enum\": [\"mesh-material-slot-defaults\"] },\n \"payloadSchema\": { \"type\": \"object\" }\n }\n }\n },\n \"paramSchema\": {\n \"type\": \"array\",\n \"description\": \"Material-shader parameter schema (feat-20260528-material-shader-registration-unification). Only valid when importer is 'shader'. Each entry has name (string) and type (string) with an optional default.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"name\", \"type\"],\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"type\": { \"type\": \"string\" },\n \"default\": {}\n }\n }\n },\n \"subAssets\": {\n \"type\": \"array\",\n \"description\": \"Derived sub-assets extracted from the source file.\",\n \"items\": {\n \"$ref\": \"#/$defs/subAsset\"\n }\n }\n },\n \"$defs\": {\n \"subAsset\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"guid\", \"sourceIndex\", \"kind\"],\n \"properties\": {\n \"guid\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"description\": \"RFC 4122 36-char dash-form UUID identifying this sub-asset.\"\n },\n \"sourceIndex\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"description\": \"Zero-based index into the source file's exported objects.\"\n },\n \"sourceKey\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Producer-owned stable key used to match this output across reimport topology changes.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Optional display-friendly name for this sub-asset. Copied from the source (e.g. glTF image.name / mesh.name) so the sidecar is human-inspectable. Has no runtime semantic weight.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Open sub-asset kind string (feat-20260629-importer-self-declared-fold-contract M3 / D-1 scheme A): the prior closed enum is removed — any non-empty string is accepted at the schema layer. Known engine-owned kinds: mesh, material, scene, texture, equirect, material-shader, skeleton, skin, animation-clip, audio, font. Host-defined importers declare their own kind values (e.g. 'reel-game-blob') and the schema layer admits them without modification. Validation of unknown kinds is deferred to the fold/import layer where the ImporterRegistry is available. The field itself (subAssets[].kind) is retained (OOS-2: no field deletion, only enum removal).\"\n }\n }\n },\n \"provenance\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"provider\", \"version\"],\n \"properties\": {\n \"provider\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 },\n \"source\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"revision\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"digest\", \"observedAt\", \"rootId\"],\n \"properties\": {\n \"digest\": { \"type\": \"string\", \"minLength\": 1 },\n \"observedAt\": { \"type\": \"number\" },\n \"rootId\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"diagnostic\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"code\", \"severity\"],\n \"properties\": {\n \"code\": { \"type\": \"string\", \"minLength\": 1 },\n \"severity\": { \"type\": \"string\", \"enum\": [\"info\", \"warning\", \"blocking\"] },\n \"message\": { \"type\": \"string\" },\n \"subject\": { \"$ref\": \"#/$defs/subject\" },\n \"expected\": { \"type\": \"string\", \"minLength\": 1 },\n \"actual\": { \"type\": \"string\" },\n \"hint\": { \"type\": \"string\", \"minLength\": 1 },\n \"authority\": { \"type\": \"string\", \"enum\": [\"producer\", \"pack\", \"catalog\"] },\n \"evidence\": { \"type\": \"array\", \"items\": { \"type\": \"object\" } },\n \"recoveryIntents\": { \"type\": \"array\", \"items\": { \"type\": \"string\", \"minLength\": 1 } }\n }\n },\n \"subject\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\"],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": [\"asset\", \"package\", \"resource\"] },\n \"id\": { \"type\": \"string\", \"minLength\": 1 }\n }\n }\n }\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://github.com/ForgeaXGame/forgeax-engine/packages/pack/schema/pack.schema.json\",\n \"title\": \"InternalTextPackage\",\n \"description\": \"Schema for authored and cooked internal text packages.\",\n \"$comment\": \"The ordinary durable consumer matrix is SCRIPTABLE_PACK_ASSET_KINDS in @forgeax/engine-pack/source. Pack kind fields remain open for registered producer extensions.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schemaVersion\"],\n \"properties\": {\n \"schemaVersion\": {\n \"type\": \"string\",\n \"enum\": [\"1.0.0\", \"2.0.0\", \"3.0.0\"]\n },\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"internal-text-package\"\n },\n \"packageId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable producer-owned package identity. It survives package moves; path is only a locator.\"\n },\n \"provenance\": {\n \"$ref\": \"#/$defs/provenance\"\n },\n \"revision\": {\n \"$ref\": \"#/$defs/revision\"\n },\n \"diagnostics\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/diagnostic\" }\n },\n \"assets\": {\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/asset\" }\n },\n { \"$ref\": \"#/$defs/authoringAssets\" }\n ]\n },\n \"parent\": {\n \"$ref\": \"#/$defs/guid36\",\n \"description\": \"Parent ScriptablePack packageId for one v3 instance; the source may declare Pack parameters.\"\n },\n \"values\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"description\": \"Sparse shallow parameter overrides for one v3 instance.\"\n }\n },\n \"oneOf\": [\n {\n \"required\": [\"kind\", \"assets\"],\n \"properties\": {\n \"schemaVersion\": { \"enum\": [\"1.0.0\", \"2.0.0\"] },\n \"kind\": { \"const\": \"internal-text-package\" },\n \"assets\": { \"type\": \"array\" },\n \"parent\": false,\n \"values\": false\n }\n },\n {\n \"required\": [\"packageId\", \"assets\"],\n \"properties\": {\n \"schemaVersion\": { \"const\": \"3.0.0\" },\n \"kind\": false,\n \"packageId\": { \"$ref\": \"#/$defs/guid36\" },\n \"assets\": { \"$ref\": \"#/$defs/authoringAssets\" },\n \"parent\": false,\n \"values\": false\n }\n },\n {\n \"required\": [\"packageId\", \"parent\", \"values\"],\n \"properties\": {\n \"schemaVersion\": { \"const\": \"3.0.0\" },\n \"kind\": false,\n \"packageId\": { \"$ref\": \"#/$defs/guid36\" },\n \"parent\": { \"$ref\": \"#/$defs/guid36\" },\n \"values\": { \"type\": \"object\" },\n \"assets\": false\n }\n }\n ],\n \"allOf\": [\n {\n \"if\": {\n \"required\": [\"packageId\"],\n \"properties\": {\n \"packageId\": {},\n \"schemaVersion\": { \"const\": \"2.0.0\" }\n }\n },\n \"then\": {\n \"type\": \"object\",\n \"properties\": {\n \"assets\": {\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [\n { \"$ref\": \"#/$defs/assetV2\" },\n {\n \"type\": \"object\",\n \"properties\": { \"execution\": {} },\n \"required\": [\"execution\"]\n }\n ]\n }\n }\n }\n }\n }\n ],\n \"$defs\": {\n \"guid36\": {\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n \"asset\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"guid\", \"kind\", \"payload\", \"refs\"],\n \"properties\": {\n \"guid\": {\n \"$ref\": \"#/$defs/guid36\",\n \"description\": \"Unique GUID for this asset entry.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Asset kind identifier, e.g. 'MaterialAsset'.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Optional display name for this asset. Add-only field for backward compatibility with old pack files that lack it.\"\n },\n \"sourceKey\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Producer-owned stable key used to match imported output topology.\"\n },\n \"sourceIndex\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Producer-declared output position; not an identity key when sourceKey is present.\"\n },\n \"execution\": {\n \"type\": \"string\",\n \"enum\": [\"direct\", \"cooked\"],\n \"description\": \"Explicit authoring execution mode; never inferred from package path.\"\n },\n \"payload\": {\n \"type\": \"object\",\n \"description\": \"Serialized asset payload. Free-form object.\"\n },\n \"refs\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/guid36\" }\n },\n \"artifacts\": { \"$ref\": \"#/$defs/artifacts\" }\n }\n },\n \"assetV2\": {\n \"allOf\": [\n { \"$ref\": \"#/$defs/asset\" },\n {\n \"type\": \"object\",\n \"required\": [\"artifacts\"],\n \"properties\": {\n \"artifacts\": { \"$ref\": \"#/$defs/artifacts\" }\n }\n }\n ]\n },\n \"authoringAssets\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^[a-z0-9][a-z0-9._-]*(/[a-z0-9][a-z0-9._-]*)*$\": {\n \"$ref\": \"#/$defs/authoringAsset\"\n }\n }\n },\n \"authoringAsset\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"kind\", \"payload\", \"refs\"],\n \"properties\": {\n \"kind\": { \"type\": \"string\", \"minLength\": 1 },\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"payload\": { \"type\": \"object\" },\n \"refs\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/guid36\" }\n },\n \"artifacts\": { \"$ref\": \"#/$defs/artifacts\" }\n }\n },\n \"artifacts\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^[A-Za-z0-9][A-Za-z0-9._/-]*$\": {\n \"$ref\": \"#/$defs/artifactDescriptor\"\n }\n }\n },\n \"artifactDescriptor\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"path\", \"mediaType\"],\n \"properties\": {\n \"path\": { \"type\": \"string\", \"minLength\": 1 },\n \"mediaType\": { \"type\": \"string\", \"minLength\": 1 },\n \"assetCodec\": { \"$ref\": \"#/$defs/assetCodec\" },\n \"contentEncoding\": { \"enum\": [\"identity\", \"zstd\"] },\n \"byteLength\": { \"type\": \"integer\", \"minimum\": 0 },\n \"integrity\": { \"$ref\": \"#/$defs/integrity\" }\n }\n },\n \"assetCodec\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"name\"],\n \"properties\": {\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"profile\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"integrity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"algorithm\", \"digest\"],\n \"properties\": {\n \"algorithm\": { \"const\": \"sha256\" },\n \"digest\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"provenance\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"provider\", \"version\"],\n \"properties\": {\n \"provider\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 },\n \"source\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"revision\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"digest\", \"observedAt\", \"rootId\"],\n \"properties\": {\n \"digest\": { \"type\": \"string\", \"minLength\": 1 },\n \"observedAt\": { \"type\": \"number\" },\n \"rootId\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"diagnostic\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"code\", \"severity\"],\n \"properties\": {\n \"code\": { \"type\": \"string\", \"minLength\": 1 },\n \"severity\": { \"type\": \"string\", \"enum\": [\"info\", \"warning\", \"blocking\"] },\n \"message\": { \"type\": \"string\" },\n \"subject\": { \"$ref\": \"#/$defs/subject\" },\n \"expected\": { \"type\": \"string\", \"minLength\": 1 },\n \"actual\": { \"type\": \"string\" },\n \"hint\": { \"type\": \"string\", \"minLength\": 1 },\n \"authority\": { \"type\": \"string\", \"enum\": [\"producer\", \"pack\", \"catalog\"] },\n \"evidence\": { \"type\": \"array\", \"items\": { \"type\": \"object\" } },\n \"recoveryIntents\": { \"type\": \"array\", \"items\": { \"type\": \"string\", \"minLength\": 1 } }\n }\n },\n \"subject\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\"],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": [\"asset\", \"package\", \"resource\"] },\n \"id\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"relation\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"from\", \"to\", \"type\", \"provenance\"],\n \"properties\": {\n \"from\": { \"$ref\": \"#/$defs/subject\" },\n \"to\": { \"$ref\": \"#/$defs/subject\" },\n \"type\": { \"type\": \"string\", \"minLength\": 1 },\n \"policy\": { \"type\": \"object\" },\n \"provenance\": { \"$ref\": \"#/$defs/provenance\" }\n }\n }\n }\n}\n","import { createHash } from 'node:crypto';\nimport { existsSync } from 'node:fs';\nimport { mkdtemp, readFile, realpath, rm, stat } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { dirname, extname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { Worker } from 'node:worker_threads';\nimport type { AssetGuid, Result } from '@forgeax/engine-types';\nimport { AssetError, err, ImportError, ok } from '@forgeax/engine-types';\nimport ts from 'typescript';\nimport {\n type ProducerSemanticIdentityInput,\n producerRelativeDdcKey,\n} from './evidence/source-inventory.js';\nimport {\n type AnyScriptablePackDefinition,\n type PackAuthoringError,\n type PackBuildContextWithoutParameters,\n type PackBuildResult,\n validatePackDefinition,\n} from './pack-authoring.js';\nimport type { AssetReader, ScriptablePackSourceClosureEntry } from './scriptable-pack.js';\n\nconst IMPORT_META_RESOLVE_FLAG = '--experimental-import-meta-resolve';\n\nfunction scriptablePackWorkerExecArgv(): string[] {\n // import.meta.resolve(parentURL) is the canonical ESM resolver, but Node\n // keeps its parentURL overload behind this flag. Filter --input-type as\n // well: stdin/eval hosts may pass it through process.execArgv, and Node\n // rejects that option inside a file-backed worker.\n const inherited = process.execArgv.filter((arg) => !arg.startsWith('--input-type'));\n return inherited.includes(IMPORT_META_RESOLVE_FLAG)\n ? inherited\n : [...inherited, IMPORT_META_RESOLVE_FLAG];\n}\n\nexport interface ScriptablePackModuleExecutor {\n load(sourcePath: string): Promise<unknown>;\n dispose?(reason: 'complete' | 'timeout' | 'failure'): void | Promise<void>;\n}\n\ninterface SerializedScriptablePackBuildContext {\n readonly packageId: readonly number[];\n readonly values?: Readonly<Record<string, unknown>>;\n}\n\ninterface WorkerBackedScriptablePackExecutor {\n readonly supportsPackParameters: true;\n}\n\nexport interface ScriptablePackModuleExecutorPool {\n acquire(): Promise<ScriptablePackModuleExecutor>;\n dispose(): Promise<void>;\n}\n\nexport interface ScriptablePackModuleExecutorPoolOptions {\n readonly maxWorkers?: number;\n readonly maxTasksPerWorker?: number;\n}\n\nexport function scriptablePackDdcKey(input: ProducerSemanticIdentityInput): string {\n return producerRelativeDdcKey(input);\n}\n\nexport interface OptionalBuildCache<T> {\n readonly read: () => Promise<T | null>;\n readonly coldCook: () => Promise<T>;\n}\n\n/** Build CAS is a performance hint; source cold cook remains the correctness path. */\nexport async function readOptionalBuildCache<T>(cache: OptionalBuildCache<T>): Promise<{\n readonly value: T;\n readonly fromCache: boolean;\n}> {\n try {\n const cached = await cache.read();\n if (cached !== null) return { value: cached, fromCache: true };\n } catch {\n // Cache deletion, read-only storage, and corrupt optional objects fail open.\n }\n return { value: await cache.coldCook(), fromCache: false };\n}\n\nasync function resolveRelativeImport(\n sourcePath: string,\n specifier: string,\n): Promise<string | undefined> {\n if (!specifier.startsWith('.')) return undefined;\n const raw = resolve(dirname(sourcePath), specifier);\n const candidates =\n extname(raw).length > 0\n ? [raw]\n : [\n raw,\n `${raw}.ts`,\n `${raw}.tsx`,\n `${raw}.mts`,\n `${raw}.js`,\n `${raw}.mjs`,\n `${raw}.json`,\n resolve(raw, 'index.ts'),\n ];\n for (const candidate of candidates) {\n try {\n if ((await stat(candidate)).isFile()) return candidate;\n } catch {\n // Continue through deterministic extension candidates.\n }\n }\n return undefined;\n}\n\n/** Capture one immutable ScriptablePack module closure for inventory and production. */\nexport async function inventoryScriptablePackSource(\n sourcePath: string,\n initialSourceText?: string,\n): Promise<readonly ScriptablePackSourceClosureEntry[]> {\n const root = await realpath(sourcePath);\n const pending = [root];\n const seen = new Set<string>();\n const entries: ScriptablePackSourceClosureEntry[] = [];\n while (pending.length > 0) {\n const path = pending.pop();\n if (path === undefined || seen.has(path)) continue;\n seen.add(path);\n const bytes =\n path === root && initialSourceText !== undefined\n ? new TextEncoder().encode(initialSourceText)\n : await readFile(path);\n entries.push({ path, digest: `sha256:${createHash('sha256').update(bytes).digest('hex')}` });\n const source = new TextDecoder().decode(bytes);\n for (const imported of ts.preProcessFile(source, true, true).importedFiles) {\n const resolved = await resolveRelativeImport(path, imported.fileName);\n if (resolved !== undefined) pending.push(await realpath(resolved));\n }\n }\n return entries.sort((left, right) => left.path.localeCompare(right.path));\n}\n\ninterface StructuredFailure {\n readonly name?: unknown;\n readonly code?: unknown;\n readonly expected?: unknown;\n readonly actual?: unknown;\n readonly hint?: unknown;\n readonly detail?: unknown;\n readonly message?: unknown;\n}\n\nfunction serializeFailure(value: unknown): StructuredFailure {\n if (value !== null && typeof value === 'object') {\n const failure = value as Record<string, unknown>;\n return {\n name: failure.name,\n code: failure.code,\n expected: failure.expected,\n actual: failure.actual,\n hint: failure.hint,\n detail: failure.detail,\n message: failure.message,\n };\n }\n return { message: String(value) };\n}\n\nfunction hydrateFailure(value: unknown): unknown {\n if (value === null || typeof value !== 'object') return value;\n const failure = value as StructuredFailure;\n if (\n failure.name === 'AssetError' &&\n typeof failure.code === 'string' &&\n typeof failure.expected === 'string' &&\n typeof failure.hint === 'string'\n ) {\n const args = {\n code: failure.code as ConstructorParameters<typeof AssetError>[0]['code'],\n expected: failure.expected,\n hint: failure.hint,\n };\n return failure.detail === undefined\n ? new AssetError(args)\n : new AssetError({\n ...args,\n detail: failure.detail as NonNullable<\n ConstructorParameters<typeof AssetError>[0]['detail']\n >,\n });\n }\n if (\n failure.name === 'ImportError' &&\n typeof failure.code === 'string' &&\n typeof failure.expected === 'string' &&\n typeof failure.hint === 'string' &&\n failure.detail !== undefined\n ) {\n return new ImportError({\n code: failure.code as ConstructorParameters<typeof ImportError>[0]['code'],\n expected: failure.expected,\n hint: failure.hint,\n detail: failure.detail as ConstructorParameters<typeof ImportError>[0]['detail'],\n ...(typeof failure.actual === 'string' ? { actual: failure.actual } : {}),\n });\n }\n if (typeof failure.message === 'string') {\n const error = new Error(failure.message);\n if (typeof failure.name === 'string') error.name = failure.name;\n return error;\n }\n return value;\n}\n\nclass WorkerScriptablePackExecutor\n implements ScriptablePackModuleExecutor, WorkerBackedScriptablePackExecutor\n{\n readonly supportsPackParameters = true as const;\n private worker: Worker | undefined;\n private compileRoot: string | undefined;\n private nextBuildId = 0;\n private disposal: Promise<void> | undefined;\n private build:\n | {\n readonly id: number;\n readonly reader: AssetReader;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n\n async load(sourcePath: string): Promise<unknown> {\n const workerUrl = scriptablePackWorkerUrl();\n const compileRoot = await mkdtemp(resolve(tmpdir(), 'forgeax-scriptable-pack-'));\n this.compileRoot = compileRoot;\n const worker = new Worker(workerUrl, {\n workerData: { sourcePath: resolve(sourcePath), compileRoot },\n execArgv: scriptablePackWorkerExecArgv(),\n resourceLimits: { maxOldGenerationSizeMb: 256, maxYoungGenerationSizeMb: 64 },\n });\n this.worker = worker;\n worker.on('message', (message: unknown) => this.onMessage(message));\n worker.unref();\n return new Promise((resolveLoad, rejectLoad) => {\n const onMessage = (message: unknown): void => {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n if (value.kind === 'loaded') {\n // The scan keeps this executor alive for the later no-reopen build\n // route, but an idle source worker must not keep a Vite/Vitest host\n // process alive after its own work has settled.\n worker.unref();\n worker.off('message', onMessage);\n resolveLoad({\n default:\n value.definition === undefined\n ? undefined\n : {\n ...(value.definition as Record<string, unknown>),\n build: (\n readByGuid: AssetReader['readByGuid'],\n context?: SerializedScriptablePackBuildContext,\n ) => this.runBuild({ readByGuid }, context),\n },\n });\n } else if (value.kind === 'load-threw') {\n worker.off('message', onMessage);\n rejectLoad(hydrateFailure(value.error));\n }\n };\n worker.on('message', onMessage);\n const fail = (error: Error): void => {\n rejectLoad(error);\n const active = this.build;\n this.build = undefined;\n active?.reject(error);\n void this.dispose('failure');\n };\n worker.once('error', fail);\n worker.once('exit', (code) => {\n if (this.disposal !== undefined) return;\n fail(new Error(`ScriptablePack worker exited with code ${code}`));\n });\n });\n }\n\n dispose(reason: 'complete' | 'timeout' | 'failure' = 'complete'): Promise<void> {\n if (this.disposal !== undefined) return this.disposal;\n const worker = this.worker;\n this.worker = undefined;\n const compileRoot = this.compileRoot;\n this.compileRoot = undefined;\n const active = this.build;\n this.build = undefined;\n if (active !== undefined) {\n active.reject(new Error(`ScriptablePack build disposed during ${reason}`));\n }\n this.disposal = (async () => {\n if (worker !== undefined) await worker.terminate();\n if (compileRoot !== undefined) await rm(compileRoot, { recursive: true, force: true });\n })();\n return this.disposal;\n }\n\n private runBuild(\n reader: AssetReader,\n context?: SerializedScriptablePackBuildContext,\n ): Promise<unknown> {\n const worker = this.worker;\n if (worker === undefined) return Promise.reject(new Error('ScriptablePack worker is closed'));\n if (this.build !== undefined)\n return Promise.reject(new Error('ScriptablePack worker already has an active build'));\n const id = this.nextBuildId++;\n return new Promise((resolveBuild, rejectBuild) => {\n this.build = { id, reader, resolve: resolveBuild, reject: rejectBuild };\n worker.postMessage({ kind: 'build', buildId: id, context });\n });\n }\n\n private onMessage(message: unknown): void {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n const active = this.build;\n if (active === undefined || value.buildId !== active.id) return;\n if (value.kind === 'asset-read' && typeof value.readId === 'number') {\n void active.reader\n .readByGuid(value.guid as AssetGuid)\n .then((result) =>\n this.worker?.postMessage({\n kind: 'asset-result',\n readId: value.readId,\n result:\n result.ok === true ? result : { ...result, error: serializeFailure(result.error) },\n }),\n )\n .catch((error: unknown) => {\n if (this.build?.id !== active.id) return;\n this.build = undefined;\n active.reject(error);\n void this.dispose('failure');\n });\n return;\n }\n this.build = undefined;\n if (value.kind === 'build-result') active.resolve(value.result);\n else if (value.kind === 'build-threw') active.reject(hydrateFailure(value.error));\n else this.build = active;\n }\n}\n\nfunction scriptablePackWorkerUrl(): URL {\n const bundledWorker = new URL('./scriptable-pack-worker.mjs', import.meta.url);\n return existsSync(fileURLToPath(bundledWorker))\n ? bundledWorker\n : new URL('../dist/scriptable-pack-worker.mjs', import.meta.url);\n}\n\nclass ReusableWorkerScriptablePackExecutor\n implements ScriptablePackModuleExecutor, WorkerBackedScriptablePackExecutor\n{\n readonly supportsPackParameters = true as const;\n private readonly worker: Worker;\n private readonly compileRootReady = mkdtemp(resolve(tmpdir(), 'forgeax-scriptable-pack-pool-'));\n private compileRoot: string | undefined;\n private nextLoadId = 0;\n private nextBuildId = 0;\n private pendingLoad:\n | {\n readonly id: number;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n private build:\n | {\n readonly id: number;\n readonly reader: AssetReader;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n private disposal: Promise<void> | undefined;\n private forceDispose = false;\n private failed = false;\n private taskCount = 0;\n private released = false;\n\n constructor(\n private readonly maxTasksPerWorker: number,\n private readonly release: (\n executor: ReusableWorkerScriptablePackExecutor,\n reusable: boolean,\n ) => void,\n ) {\n this.worker = new Worker(scriptablePackWorkerUrl(), {\n workerData: { mode: 'reusable' },\n execArgv: scriptablePackWorkerExecArgv(),\n resourceLimits: { maxOldGenerationSizeMb: 256, maxYoungGenerationSizeMb: 64 },\n });\n this.worker.on('message', (message: unknown) => this.onMessage(message));\n this.worker.on('error', (error: Error) => {\n this.failed = true;\n this.rejectActive(error);\n void this.dispose('failure');\n });\n this.worker.on('exit', (code) => {\n if (this.disposal !== undefined) return;\n this.failed = true;\n this.rejectActive(new Error(`ScriptablePack worker exited with code ${code}`));\n void this.dispose('failure');\n });\n // Listener registration can retain the worker's MessagePort in Node.\n // A reusable worker must not keep a completed Vite build alive while its\n // pool is draining; it still processes messages while the host is live.\n this.worker.unref();\n }\n\n async load(sourcePath: string): Promise<unknown> {\n const activeDisposal = this.disposal;\n if (activeDisposal !== undefined) {\n await activeDisposal;\n if (this.failed) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n this.disposal = undefined;\n }\n this.released = false;\n if (this.pendingLoad !== undefined || this.build !== undefined) {\n return Promise.reject(new Error('ScriptablePack executor already has an active task'));\n }\n const compileRoot = this.compileRoot ?? (await this.compileRootReady);\n if (this.disposal !== undefined) {\n const disposal = this.disposal;\n await disposal;\n if (this.failed) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n this.disposal = undefined;\n }\n const loadId = this.nextLoadId++;\n this.compileRoot = compileRoot;\n this.taskCount += 1;\n return new Promise((resolveLoad, rejectLoad) => {\n this.pendingLoad = { id: loadId, resolve: resolveLoad, reject: rejectLoad };\n try {\n this.worker.postMessage({\n kind: 'load',\n loadId,\n sourcePath: resolve(sourcePath),\n compileRoot,\n });\n } catch (error) {\n this.pendingLoad = undefined;\n rejectLoad(error);\n void this.dispose('failure');\n }\n });\n }\n\n dispose(reason: 'complete' | 'timeout' | 'failure' = 'complete'): Promise<void> {\n if (reason === 'failure') this.forceDispose = true;\n const activeDisposal = this.disposal;\n if (activeDisposal !== undefined) {\n return activeDisposal;\n }\n this.rejectActive(new Error(`ScriptablePack task disposed during ${reason}`));\n this.disposal = (async () => {\n const compileRoot = this.compileRoot ?? (await this.compileRootReady);\n const reusable =\n reason === 'complete' &&\n !this.failed &&\n !this.forceDispose &&\n this.taskCount < this.maxTasksPerWorker;\n this.forceDispose = false;\n if (!reusable) {\n this.compileRoot = undefined;\n await this.worker.terminate();\n await rm(compileRoot, { recursive: true, force: true });\n }\n this.released = true;\n this.disposal = undefined;\n this.release(this, reusable);\n })();\n return this.disposal;\n }\n\n private rejectActive(error: unknown): void {\n const loading = this.pendingLoad;\n this.pendingLoad = undefined;\n loading?.reject(error);\n const building = this.build;\n this.build = undefined;\n building?.reject(error);\n }\n\n private runBuild(\n reader: AssetReader,\n context?: SerializedScriptablePackBuildContext,\n ): Promise<unknown> {\n if (this.released || this.disposal !== undefined) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n if (this.build !== undefined) {\n return Promise.reject(new Error('ScriptablePack worker already has an active build'));\n }\n const id = this.nextBuildId++;\n return new Promise((resolveBuild, rejectBuild) => {\n this.build = { id, reader, resolve: resolveBuild, reject: rejectBuild };\n try {\n this.worker.postMessage({ kind: 'build', buildId: id, context });\n } catch (error) {\n this.build = undefined;\n rejectBuild(error);\n void this.dispose('failure');\n }\n });\n }\n\n private onMessage(message: unknown): void {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n const loading = this.pendingLoad;\n if (loading !== undefined && value.kind === 'loaded' && value.loadId === loading.id) {\n this.pendingLoad = undefined;\n loading.resolve({\n default:\n value.definition === undefined\n ? undefined\n : {\n ...(value.definition as Record<string, unknown>),\n build: (\n readByGuid: AssetReader['readByGuid'],\n context?: SerializedScriptablePackBuildContext,\n ) => this.runBuild({ readByGuid }, context),\n },\n });\n return;\n }\n if (loading !== undefined && value.kind === 'load-threw' && value.loadId === loading.id) {\n this.pendingLoad = undefined;\n loading.reject(hydrateFailure(value.error));\n return;\n }\n const active = this.build;\n if (active === undefined || value.buildId !== active.id) return;\n if (value.kind === 'asset-read' && typeof value.readId === 'number') {\n void active.reader\n .readByGuid(value.guid as AssetGuid)\n .then((result) =>\n this.worker.postMessage({\n kind: 'asset-result',\n readId: value.readId,\n result:\n result.ok === true ? result : { ...result, error: serializeFailure(result.error) },\n }),\n )\n .catch((error: unknown) => {\n if (this.build?.id !== active.id) return;\n this.build = undefined;\n active.reject(error);\n void this.dispose('failure');\n });\n return;\n }\n this.build = undefined;\n if (value.kind === 'build-result') active.resolve(value.result);\n else if (value.kind === 'build-threw') active.reject(hydrateFailure(value.error));\n else this.build = active;\n }\n}\n\nclass DefaultScriptablePackModuleExecutorPool implements ScriptablePackModuleExecutorPool {\n private readonly maxWorkers: number;\n private readonly maxTasksPerWorker: number;\n private readonly idle: ReusableWorkerScriptablePackExecutor[] = [];\n private readonly waiters: {\n readonly resolve: (executor: ScriptablePackModuleExecutor) => void;\n readonly reject: (reason: unknown) => void;\n }[] = [];\n private readonly executors = new Set<ReusableWorkerScriptablePackExecutor>();\n private workerCount = 0;\n private closed = false;\n\n constructor(options: ScriptablePackModuleExecutorPoolOptions = {}) {\n this.maxWorkers = Math.max(1, Math.trunc(options.maxWorkers ?? 2));\n this.maxTasksPerWorker = Math.max(1, Math.trunc(options.maxTasksPerWorker ?? 32));\n }\n\n acquire(): Promise<ScriptablePackModuleExecutor> {\n if (this.closed) return Promise.reject(new Error('ScriptablePack executor pool is closed'));\n const executor = this.idle.pop();\n if (executor !== undefined) return Promise.resolve(executor);\n if (this.workerCount < this.maxWorkers) {\n this.workerCount += 1;\n return Promise.resolve(this.createExecutor());\n }\n return new Promise((resolveAcquire, rejectAcquire) =>\n this.waiters.push({ resolve: resolveAcquire, reject: rejectAcquire }),\n );\n }\n\n async dispose(): Promise<void> {\n if (this.closed) return;\n this.closed = true;\n const waiters = this.waiters.splice(0);\n for (const waiter of waiters) {\n waiter.reject(new Error('ScriptablePack executor pool is closed'));\n }\n this.idle.splice(0);\n await Promise.all([...this.executors].map((executor) => executor.dispose('failure')));\n }\n\n private createExecutor(): ReusableWorkerScriptablePackExecutor {\n const executor = new ReusableWorkerScriptablePackExecutor(\n this.maxTasksPerWorker,\n (executor, reusable) => {\n if (this.closed) {\n this.executors.delete(executor);\n if (!reusable) this.workerCount -= 1;\n return;\n }\n if (!reusable) {\n this.executors.delete(executor);\n this.workerCount -= 1;\n } else {\n this.idle.push(executor);\n }\n this.drain();\n },\n );\n this.executors.add(executor);\n return executor;\n }\n\n private drain(): void {\n if (this.closed) return;\n while (this.waiters.length > 0) {\n const idle = this.idle.pop();\n if (idle !== undefined) {\n this.waiters.shift()?.resolve(idle);\n continue;\n }\n if (this.workerCount >= this.maxWorkers) return;\n this.workerCount += 1;\n this.waiters.shift()?.resolve(this.createExecutor());\n }\n }\n}\n\nexport function createScriptablePackModuleExecutorPool(\n options: ScriptablePackModuleExecutorPoolOptions = {},\n): ScriptablePackModuleExecutorPool {\n return new DefaultScriptablePackModuleExecutorPool(options);\n}\n\nexport interface LoadScriptablePackOptions {\n readonly timeoutMs?: number;\n readonly buildTimeoutMs?: number;\n readonly executor?: ScriptablePackModuleExecutor;\n readonly metadataOnly?: boolean;\n}\n\nfunction scriptablePackLoadFailure(\n sourcePath: string,\n reason: 'module-load' | 'timeout',\n phase: 'module-load' | 'build',\n diagnostic: string,\n timeoutMs?: number,\n): PackAuthoringError {\n return {\n code: 'pack-parameter-invalid',\n expected: 'a trusted Pack v2 authoring module with a valid default export',\n hint: 'repair the source module or its build timeout, then inspect the Pack again',\n detail: {\n sourcePath,\n reason,\n phase,\n diagnostic,\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n },\n };\n}\n\n/** Load a ScriptablePack source contract in an isolated module executor. */\nexport async function loadScriptablePack(\n sourcePath: string,\n options: LoadScriptablePackOptions = {},\n): Promise<Result<Readonly<AnyScriptablePackDefinition>, PackAuthoringError>> {\n const timeoutMs = options.timeoutMs ?? 15_000;\n // Keep authored builds bounded, but give legitimate procedural packs the\n // same cold-start budget already used for module initialization. The old\n // five-second default rejected large production packs before they could\n // publish a result.\n const buildTimeoutMs = options.buildTimeoutMs ?? 15_000;\n const executor = options.executor ?? new WorkerScriptablePackExecutor();\n let disposeReason: 'complete' | 'timeout' | 'failure' | undefined;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n try {\n const timeoutSignal = Symbol('scriptable-pack-module-timeout');\n const loaded = await Promise.race([\n executor.load(sourcePath),\n new Promise<typeof timeoutSignal>((resolve) => {\n timeout = setTimeout(() => resolve(timeoutSignal), timeoutMs);\n }),\n ]);\n if (loaded === timeoutSignal) {\n disposeReason = 'timeout';\n return err(\n scriptablePackLoadFailure(\n sourcePath,\n 'timeout',\n 'module-load',\n `Pack module initialization exceeded ${timeoutMs}ms`,\n timeoutMs,\n ),\n );\n }\n const moduleValue =\n loaded !== null && typeof loaded === 'object' && 'default' in loaded\n ? (loaded as { readonly default: unknown }).default\n : undefined;\n const validated = validatePackDefinition(moduleValue, sourcePath);\n if (!validated.ok) {\n disposeReason = 'failure';\n return validated;\n }\n if (options.metadataOnly === true) {\n disposeReason = 'complete';\n return ok(validated.value);\n }\n const definition = validated.value;\n const build = definition.build as unknown as (\n first: unknown,\n context?: SerializedScriptablePackBuildContext,\n ) => PackBuildResult;\n return ok({\n ...definition,\n build: async (\n context: PackBuildContextWithoutParameters,\n ): Promise<Awaited<PackBuildResult>> => {\n let buildTimedOut = false;\n let buildTimeout: ReturnType<typeof setTimeout> | undefined;\n const timeoutResult = err(\n scriptablePackLoadFailure(\n sourcePath,\n 'timeout',\n 'build',\n `ScriptablePack build exceeded ${buildTimeoutMs}ms`,\n buildTimeoutMs,\n ),\n );\n try {\n const invocation =\n 'supportsPackParameters' in executor &&\n (executor as Partial<WorkerBackedScriptablePackExecutor>).supportsPackParameters ===\n true\n ? build(context.readByGuid, {\n packageId: [...context.packageId],\n ...('values' in context && context.values !== undefined\n ? { values: context.values as Readonly<Record<string, unknown>> }\n : {}),\n })\n : definition.build(context as never);\n const built = await Promise.race([\n Promise.resolve(invocation),\n new Promise<Awaited<PackBuildResult>>((resolve) => {\n buildTimeout = setTimeout(() => {\n buildTimedOut = true;\n resolve(timeoutResult as Awaited<PackBuildResult>);\n }, buildTimeoutMs);\n }),\n ]);\n if (buildTimedOut) {\n await executor.dispose?.('timeout');\n return built;\n }\n await executor.dispose?.('complete');\n return built;\n } catch (error) {\n await executor.dispose?.('failure');\n throw error;\n } finally {\n if (buildTimeout !== undefined) clearTimeout(buildTimeout);\n }\n },\n } as AnyScriptablePackDefinition);\n } catch (error) {\n disposeReason = 'failure';\n return err(\n scriptablePackLoadFailure(\n sourcePath,\n 'module-load',\n 'module-load',\n error instanceof Error ? error.message : String(error),\n ),\n );\n } finally {\n if (timeout !== undefined) clearTimeout(timeout);\n if (disposeReason !== undefined) await executor.dispose?.(disposeReason);\n }\n}\n","import { createHash } from 'node:crypto';\nimport { readdir, readFile, stat } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\nimport type {\n CatalogDiagnostic,\n PackErrorCode,\n ProviderProvenance,\n ResourceRevision,\n SourceOverrideDescriptor,\n} from '@forgeax/engine-types';\nimport { PACK_ERROR_HINTS } from '@forgeax/engine-types';\nimport { PackError } from './errors.js';\nimport { isValidAssetGuidString, PackageId } from './guid.js';\nimport {\n type AnyScriptablePackDefinition,\n parsePackSourceJson,\n projectDirectPackJson,\n projectScriptablePackMeta,\n type ScriptablePackSourceMeta,\n} from './pack-authoring.js';\nimport { validateProducerContract, validateProducerOutputs } from './producer-contract.js';\nimport { resolveAssetSource } from './resolve-asset-source.js';\nimport { validateMeta, validatePack } from './schema-compiled.js';\nimport type { ScriptablePackSourceClosureEntry } from './scriptable-pack.js';\nimport {\n inventoryScriptablePackSource,\n loadScriptablePack,\n type ScriptablePackModuleExecutor,\n} from './scriptable-pack-node.js';\n\n// Minimal Result<T, E> — structurally compatible with @forgeax/engine-rhi Result\n// but defined locally to avoid a heavy runtime dep in this build-time package.\nexport type ScanResult<T, E> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: E };\n\nfunction ok<T>(value: T): ScanResult<T, never> {\n return { ok: true, value };\n}\n\nfunction packErr<E>(error: E): ScanResult<never, E> {\n return { ok: false, error };\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\n/** Host-owned source paths that should not enter the Pack catalog. */\nexport interface ScanOptions {\n readonly ignorePath?: (path: string) => boolean;\n readonly scriptablePack?: ScriptablePackScanOptions;\n}\n\n/** One bounded executor policy shared by ScriptablePack inventory and production. */\nexport interface ScriptablePackScanOptions {\n readonly timeoutMs?: number;\n readonly buildTimeoutMs?: number;\n readonly executor?: ScriptablePackModuleExecutor;\n /** Path-only scans must release the isolated loader before returning. */\n readonly metadataOnly?: boolean;\n}\n\n/** Stable default policy shared by inventory and production owners. */\nexport const STANDARD_SCRIPTABLE_PACK_SCAN_OPTIONS = Object.freeze({\n // Scriptable Packs execute in an isolated worker. A cold worker must compile\n // the authored source closure before it can return metadata. Keep the bound\n // finite while allowing a heavy character/scene closure to complete on a\n // busy host.\n timeoutMs: 120_000,\n}) satisfies ScriptablePackScanOptions;\n\nexport interface InventoryDeclaration {\n readonly guid: string;\n readonly kind: string;\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n}\n\nexport interface ScanInventory {\n readonly paths: readonly string[];\n readonly inventory: readonly InventoryDeclaration[];\n /** Complete parsed source declarations captured by the validated scan pass. */\n readonly declarations: ReadonlyMap<string, ScanSourceDeclaration>;\n}\n\nexport interface ScriptablePackInventoryDeclaration {\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly meta: ScriptablePackSourceMeta;\n readonly definition: Readonly<AnyScriptablePackDefinition>;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n}\n\nexport interface MetaInventoryDocument {\n readonly schemaVersion: string | number;\n readonly kind: 'external-asset-package';\n readonly packageId?: string;\n readonly name?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly importer: string;\n readonly source?: string;\n readonly importSettings: Readonly<Record<string, unknown>>;\n readonly sourceOverrides?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[];\n readonly paramSchema?: readonly Readonly<Record<string, unknown>>[];\n readonly subAssets: readonly MetaInventorySubAsset[];\n}\n\nexport interface MetaInventorySubAsset {\n readonly guid: string;\n readonly sourceIndex: number;\n readonly sourceKey?: string;\n readonly name?: string;\n readonly kind: string;\n}\n\nexport interface LegacyPackInventoryDocument {\n readonly schemaVersion: '1.0.0' | '2.0.0';\n readonly kind: 'internal-text-package';\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly assets: readonly PackInventoryAsset[];\n}\n\nexport interface PackSourceInventoryDocument {\n readonly schemaVersion: '3.0.0';\n readonly packageId: string;\n readonly assets?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n readonly parent?: string;\n readonly values?: Readonly<Record<string, unknown>>;\n}\n\nexport type PackInventoryDocument = LegacyPackInventoryDocument | PackSourceInventoryDocument;\n\nexport interface PackInventoryAsset {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly execution?: 'direct' | 'cooked';\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly payload: Readonly<Record<string, unknown>>;\n readonly refs: readonly string[];\n readonly artifacts?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n}\n\nexport type ScanSourceDeclaration =\n | {\n readonly format: 'meta.json';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly value: MetaInventoryDocument;\n }\n | {\n readonly format: 'pack.json';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly sourceText: string;\n readonly value: PackInventoryDocument;\n }\n | {\n readonly format: 'pack.ts';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly value: ScriptablePackSourceMeta;\n readonly definition: AnyScriptablePackDefinition;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n };\n\ninterface ScanCapture {\n readonly declarations: Map<string, ScanSourceDeclaration>;\n}\n\n/**\n * Directory names that are skipped during recursive traversal unless\n * explicitly provided as a root in the `roots` parameter (whitelist override).\n * Requirements §3.4 + §5 blacklist.\n *\n * Re-exported as `SCANNER_BLACKLIST` for cross-package reuse: the\n * `forgeax asset import --check` traversal (M4 / w21 +\n * plan-strategy section 2.8 path b) walks the same set of source-orphan\n * candidates as the scanner, so we share the single SSOT here.\n */\nconst BLACKLIST = new Set([\n 'node_modules',\n '__tests__',\n '.forgeax-harness',\n '.forgeax',\n '.git',\n 'dist',\n '.forgeax-asset-cache',\n 'forgeax-engine-assets',\n 'coverage',\n]);\n\nexport const SCANNER_BLACKLIST: ReadonlySet<string> = BLACKLIST;\n\ntype MalformedFileCode = Extract<PackErrorCode, 'pack-malformed-pack' | 'pack-malformed-meta'>;\n\ntype JsonValidator = {\n (value: unknown): boolean;\n errors?: readonly { readonly instancePath?: string; readonly message?: string }[] | null;\n};\n\nasync function readValidatedJson(\n path: string,\n code: MalformedFileCode,\n validate: JsonValidator,\n): Promise<ScanResult<{ readonly raw: string; readonly parsed: unknown }, PackError>> {\n let raw: string;\n let parsed: unknown;\n try {\n raw = await readFile(path, 'utf-8');\n parsed = JSON.parse(raw);\n } catch {\n return packErr(\n makePackError(code, {\n path,\n ajvErrors: [{ instancePath: '', message: 'JSON parse failed' }],\n }),\n );\n }\n if (!validate(parsed)) {\n return packErr(\n makePackError(code, {\n path,\n ajvErrors: (validate.errors ?? []).map((error) => ({\n instancePath: error.instancePath ?? '',\n message: error.message ?? 'unknown ajv error',\n })),\n }),\n );\n }\n return ok({ raw, parsed });\n}\n\nfunction makePackError(\n code: PackErrorCode,\n detail: ConstructorParameters<typeof PackError>[0]['detail'],\n): PackError {\n return new PackError({\n code,\n expected: `pack error: ${code}`,\n hint: PACK_ERROR_HINTS[code],\n detail,\n });\n}\n\n/**\n * For keyed scene assets, return the lowercased GUID each nested instance\n * source resolves to via `asset.refs[]` (or directly carries). The yielded GUIDs feed\n * scanner step-6's scene dependency cycle DFS.\n */\nfunction* extractInstanceSourceGuids(asset: {\n kind?: unknown;\n payload?: unknown;\n refs: readonly string[];\n}): Generator<string> {\n if (asset.kind !== 'scene') return;\n const payload = asset.payload as { entities?: unknown } | undefined;\n if (\n !payload ||\n payload.entities === null ||\n typeof payload.entities !== 'object' ||\n Array.isArray(payload.entities)\n )\n return;\n for (const rawEntity of Object.values(payload.entities as Record<string, unknown>)) {\n if (rawEntity === null || typeof rawEntity !== 'object' || Array.isArray(rawEntity)) continue;\n const instance = (rawEntity as { instance?: unknown }).instance;\n if (instance === null || typeof instance !== 'object' || Array.isArray(instance)) continue;\n const source = (instance as { source?: unknown }).source;\n const resolved =\n typeof source === 'number' && Number.isInteger(source)\n ? asset.refs[source]\n : typeof source === 'string'\n ? source\n : undefined;\n if (typeof resolved !== 'string') continue;\n yield resolved.toLowerCase();\n }\n}\n\n/**\n * Scan one or more root directories for `.meta.json`, `.pack.json`, and `.pack.ts` files.\n * Runs a 7-step fail-fast validation chain (w17 + M7-T01):\n * Step 1 - collect all .meta.json + .pack.json paths (blacklist skipped)\n * Step 2 - schema validation (ajv strict)\n * Step 3 - GUID string format validation\n * Step 4 - GUID collision detection\n * Step 5 - orphan .meta.json detection\n * Step 6 - cyclic reference detection (hand-written DFS)\n * Step 7 - complete pack and source closure validation\n *\n * Returns `Ok(paths)` or `Err(PackError)` on the first violation.\n *\n * NOTE: source files without a .meta.json are logged but not fatal (requirements §5).\n */\nasync function scanValidated(\n roots: readonly string[],\n opts: ScanOptions = {},\n capture?: ScanCapture,\n): Promise<ScanResult<string[], PackError>> {\n // Step 1: collect all authored package declarations. ScriptablePack runtime\n // validation belongs to its trusted module loader; scanner only inventories\n // the source path so CLI/Vite share one discovery set.\n const rawPaths: string[] = [];\n const explicitRootSet = new Set(roots);\n\n async function traverse(dir: string): Promise<void> {\n let entries: import('node:fs').Dirent[];\n try {\n entries = (await readdir(dir, { withFileTypes: true })) as import('node:fs').Dirent[];\n } catch {\n return;\n }\n\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n\n if (opts.ignorePath?.(fullPath) === true) continue;\n\n if (entry.isDirectory()) {\n // Skip blacklisted subdirectories unless the subdir is itself an explicit root\n if (BLACKLIST.has(basename(fullPath)) && !explicitRootSet.has(fullPath)) {\n continue;\n }\n await traverse(fullPath);\n } else if (entry.isFile()) {\n const name = entry.name;\n if (\n name.endsWith('.meta.json') ||\n name.endsWith('.pack.json') ||\n name.endsWith('.pack.ts')\n ) {\n rawPaths.push(fullPath);\n }\n }\n }\n }\n\n for (const root of roots) {\n // Explicit file roots are useful when a host wants one source package\n // from a larger asset tree without also scanning sibling packages. Keep\n // directory-root behaviour unchanged; this is only an opt-in whitelist.\n try {\n const rootStat = await stat(root);\n if (rootStat.isFile()) {\n if (opts.ignorePath?.(root) === true) continue;\n if (\n root.endsWith('.meta.json') ||\n root.endsWith('.pack.json') ||\n root.endsWith('.pack.ts')\n ) {\n rawPaths.push(root);\n }\n continue;\n }\n } catch {\n // The existing directory traversal treats missing roots as empty.\n }\n await traverse(root);\n }\n\n // Separate meta and pack paths\n const metaPaths = rawPaths.filter((p) => p.endsWith('.meta.json'));\n const packPaths = rawPaths.filter((p) => p.endsWith('.pack.json'));\n const scriptablePaths = rawPaths.filter((p) => p.endsWith('.pack.ts'));\n\n // Step 2 + 3: parse + schema validate + GUID format validate each pack file\n // One normalized GUID map covers pack assets and meta subAssets. The source\n // kind stays in the path/detail evidence; identity is the normalized GUID.\n const guidToPath = new Map<string, string>();\n const packRefs = new Map<string, string[]>(); // guid -> refs[]\n const packageIdToPath = new Map<string, string>();\n const packageKind = new Map<string, 'legacy' | 'direct' | 'instance' | 'scriptable'>();\n const instanceParents: {\n readonly path: string;\n readonly packageId: string;\n readonly parent: string;\n }[] = [];\n\n function registerPackage(\n packageId: string | undefined,\n path: string,\n kind: 'legacy' | 'direct' | 'instance' | 'scriptable',\n ): PackError | undefined {\n if (packageId === undefined) return undefined;\n const normalized = packageId.toLowerCase();\n const existing = packageIdToPath.get(normalized);\n if (existing !== undefined) {\n return makePackError('pack-guid-collision', {\n paths: [existing, path],\n guid: normalized,\n });\n }\n packageIdToPath.set(normalized, path);\n packageKind.set(normalized, kind);\n return undefined;\n }\n\n for (const packPath of packPaths) {\n const loaded = await readValidatedJson(packPath, 'pack-malformed-pack', validatePack);\n if (!loaded.ok) return loaded;\n const { raw, parsed } = loaded.value;\n\n if (record(parsed) && parsed.schemaVersion === '3.0.0') {\n const authoring = parsePackSourceJson(parsed);\n if (!authoring.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '', message: authoring.error.code }],\n }),\n );\n }\n const packageId = authoring.value.packageId;\n const packageCollision = registerPackage(\n PackageId.format(packageId),\n packPath,\n authoring.value.format,\n );\n if (packageCollision !== undefined) return packErr(packageCollision);\n if (authoring.value.format === 'instance') {\n instanceParents.push({\n path: packPath,\n packageId: PackageId.format(authoring.value.packageId),\n parent: PackageId.format(authoring.value.parent),\n });\n } else {\n const projected = projectDirectPackJson(authoring.value);\n if (!projected.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '/assets', message: projected.error.code }],\n }),\n );\n }\n for (const asset of projected.value.assets) {\n const normalizedGuid = asset.guid.toLowerCase();\n const existing = guidToPath.get(normalizedGuid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', {\n paths: [existing, packPath],\n guid: normalizedGuid,\n }),\n );\n }\n guidToPath.set(normalizedGuid, packPath);\n packRefs.set(normalizedGuid, [\n ...asset.refs.map((ref) => ref.toLowerCase()),\n ...extractInstanceSourceGuids(asset),\n ]);\n }\n }\n capture?.declarations.set(packPath, {\n format: 'pack.json',\n sourcePath: packPath,\n sourceRevision: `sha256:${createHash('sha256').update(raw).digest('hex')}`,\n sourceText: raw,\n value: parsed as unknown as PackSourceInventoryDocument,\n });\n continue;\n }\n\n const packageContract = validateProducerContract(parsed);\n if (!packageContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '', message: packageContract.error.code }],\n }),\n );\n }\n\n // Step 3: validate GUIDs in pack\n const packObj = parsed as unknown as LegacyPackInventoryDocument;\n const packageCollision = registerPackage(packObj.packageId, packPath, 'legacy');\n if (packageCollision !== undefined) return packErr(packageCollision);\n for (const asset of packObj.assets) {\n if (\n asset.kind === 'particle-effect' &&\n asset.execution === 'direct' &&\n (asset.refs.length > 0 || Object.keys(asset.artifacts ?? {}).length > 0)\n ) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [\n {\n instancePath: '/assets',\n message:\n 'authored particle-effect assets are source-only; refs and artifacts must be empty',\n },\n ],\n }),\n );\n }\n }\n const producerAssets = packObj.assets.filter(\n (asset) => asset.sourceKey !== undefined || asset.sourceIndex !== undefined,\n );\n if (producerAssets.length > 0) {\n for (const asset of producerAssets) {\n const assetContract = validateProducerContract(asset);\n if (!assetContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '/assets', message: assetContract.error.code }],\n }),\n );\n }\n }\n const topologyContract = validateProducerOutputs(\n producerAssets.map((asset, sourceIndex) => ({\n guid: asset.guid,\n kind: asset.kind,\n sourceIndex: asset.sourceIndex ?? sourceIndex,\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n })),\n );\n if (!topologyContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '/assets', message: topologyContract.error.code }],\n }),\n );\n }\n }\n for (const asset of packObj.assets) {\n if (!isValidAssetGuidString(asset.guid)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: asset.guid,\n reason: 'expected 36-char RFC 4122 dash-form UUID',\n }),\n );\n }\n for (const ref of asset.refs) {\n if (!isValidAssetGuidString(ref)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: ref,\n reason: 'expected 36-char RFC 4122 dash-form UUID in refs[]',\n }),\n );\n }\n }\n\n // Step 4: collision check\n const normalizedGuid = asset.guid.toLowerCase();\n const existing = guidToPath.get(normalizedGuid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', {\n paths: [existing, packPath],\n guid: normalizedGuid,\n }),\n );\n }\n guidToPath.set(normalizedGuid, packPath);\n\n // Keyed scene instances are explicit dependency edges. Keep the\n // producer source in the cycle graph alongside ordinary asset refs so\n // recursive SceneAsset declarations fail before publication.\n packRefs.set(normalizedGuid, [\n ...asset.refs.map((ref) => ref.toLowerCase()),\n ...extractInstanceSourceGuids(asset),\n ]);\n }\n capture?.declarations.set(packPath, {\n format: 'pack.json',\n sourcePath: packPath,\n sourceRevision: `sha256:${createHash('sha256').update(raw).digest('hex')}`,\n sourceText: raw,\n value: packObj,\n });\n }\n\n // Step 2 + 3 + 5: parse + schema validate + GUID format validate + orphan check for meta files.\n // Meta source paths are local to their sidecar: an omitted source names the\n // companion file and an explicit source is resolved relative to the sidecar.\n for (const metaPath of metaPaths) {\n const loaded = await readValidatedJson(metaPath, 'pack-malformed-meta', validateMeta);\n if (!loaded.ok) return loaded;\n const { raw, parsed } = loaded.value;\n\n const metaContract = validateProducerContract(parsed);\n if (!metaContract.ok) {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: metaPath,\n ajvErrors: [{ instancePath: '', message: metaContract.error.code }],\n }),\n );\n }\n\n // Step 3: validate GUIDs in meta subAssets\n const metaObj = parsed as unknown as MetaInventoryDocument;\n const packageCollision = registerPackage(metaObj.packageId, metaPath, 'legacy');\n if (packageCollision !== undefined) return packErr(packageCollision);\n capture?.declarations.set(metaPath, {\n format: 'meta.json',\n sourcePath: metaPath,\n sourceRevision: `sha256:${createHash('sha256').update(raw).digest('hex')}`,\n value: metaObj,\n });\n for (const sub of metaObj.subAssets) {\n if (!isValidAssetGuidString(sub.guid)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: sub.guid,\n reason: 'expected 36-char RFC 4122 dash-form UUID in subAssets[].guid',\n }),\n );\n }\n const normalizedGuid = sub.guid.toLowerCase();\n const existing = guidToPath.get(normalizedGuid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', {\n paths: [existing, metaPath],\n guid: normalizedGuid,\n }),\n );\n }\n guidToPath.set(normalizedGuid, metaPath);\n }\n const producerSubAssets = metaObj.subAssets.length > 1 ? metaObj.subAssets : [];\n if (producerSubAssets.length > 0) {\n const topologyContract = validateProducerOutputs(producerSubAssets);\n if (!topologyContract.ok) {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: metaPath,\n ajvErrors: [{ instancePath: '/subAssets', message: topologyContract.error.code }],\n }),\n );\n }\n }\n\n // Step 5: orphan .meta.json check — the source file declared in meta.source must exist.\n const expectedSourcePath = resolveAssetSource(metaPath, metaObj.source);\n try {\n await stat(expectedSourcePath);\n } catch {\n return packErr(\n makePackError('pack-orphan-meta', {\n metaPath,\n expectedFile: expectedSourcePath,\n }),\n );\n }\n }\n\n // ScriptablePack source identity enters the package registry. Its outputs are\n // intentionally absent until the dynamic build worklist evaluates it.\n for (const sourcePath of scriptablePaths) {\n let source: string;\n try {\n source = await readFile(sourcePath, 'utf8');\n } catch {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '', message: 'Pack source read failed' }],\n }),\n );\n }\n const loaderOptions = {\n ...(opts.scriptablePack ?? {}),\n ...(capture === undefined ? { metadataOnly: true } : {}),\n };\n const loaded = await loadScriptablePack(sourcePath, loaderOptions);\n if (!loaded.ok) {\n const diagnostic = loaded.error.detail.diagnostic;\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [\n {\n instancePath: '',\n message:\n typeof diagnostic === 'string'\n ? `${loaded.error.code}: ${diagnostic}`\n : loaded.error.code,\n },\n ],\n }),\n );\n }\n let sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n try {\n sourceClosure = await inventoryScriptablePackSource(sourcePath, source);\n } catch {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '', message: 'Pack source closure read failed' }],\n }),\n );\n }\n const packageCollision = registerPackage(\n PackageId.format(loaded.value.packageId),\n sourcePath,\n 'scriptable',\n );\n if (packageCollision !== undefined) return packErr(packageCollision);\n const meta = projectScriptablePackMeta(loaded.value, sourcePath);\n capture?.declarations.set(sourcePath, {\n format: 'pack.ts',\n sourcePath,\n sourceRevision: `sha256:${createHash('sha256').update(source).digest('hex')}`,\n value: meta,\n definition: loaded.value,\n sourceClosure,\n });\n }\n\n // v3 instance parent validation happens after all declarations have been\n // registered, so scan order cannot change missing-parent or cycle results.\n const parentByPackageId = new Map(\n instanceParents.map((instance) => [instance.packageId.toLowerCase(), instance]),\n );\n for (const instance of instanceParents) {\n const parentId = instance.parent.toLowerCase();\n const parentPath = packageIdToPath.get(parentId);\n if (parentPath === undefined) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: instance.path,\n reason: 'pack-parent-not-found',\n ajvErrors: [\n {\n instancePath: '/parent',\n message: `parent packageId ${instance.parent} was not found`,\n },\n ],\n }),\n );\n }\n const kind = packageKind.get(parentId);\n if (kind !== 'scriptable' && kind !== 'instance') {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: instance.path,\n reason: 'pack-parent-has-no-parameters',\n ajvErrors: [\n {\n instancePath: '/parent',\n message: `parent ${instance.parent} is not a ScriptablePack source with parameters`,\n },\n ],\n }),\n );\n }\n }\n for (const instance of instanceParents) {\n const chain = new Set<string>();\n let current = instance.packageId.toLowerCase();\n while (true) {\n if (chain.has(current)) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: instance.path,\n reason: 'pack-parent-cycle',\n ajvErrors: [\n { instancePath: '/parent', message: `parent chain repeats packageId ${current}` },\n ],\n }),\n );\n }\n chain.add(current);\n const next = parentByPackageId.get(current);\n if (next === undefined) break;\n current = next.parent.toLowerCase();\n }\n }\n\n // Step 6: cyclic reference detection via hand-written DFS (no graphlib dep)\n // visited: nodes fully processed; recStack: nodes in current DFS path\n const visited = new Set<string>();\n const recStack = new Set<string>();\n\n function dfs(guid: string, path: string[]): string[] | null {\n visited.add(guid);\n recStack.add(guid);\n\n for (const ref of packRefs.get(guid) ?? []) {\n if (!visited.has(ref)) {\n const cycle = dfs(ref, [...path, ref]);\n if (cycle !== null) return cycle;\n } else if (recStack.has(ref)) {\n // Found a back-edge: reconstruct cycle from the repeated node\n const cycleStart = path.indexOf(ref);\n return cycleStart >= 0 ? [...path.slice(cycleStart), ref] : [...path, ref];\n }\n }\n\n recStack.delete(guid);\n return null;\n }\n\n for (const guid of guidToPath.keys()) {\n if (!visited.has(guid)) {\n const cycle = dfs(guid, [guid]);\n if (cycle !== null) {\n return packErr(\n makePackError('pack-cyclic-reference', {\n code: 'pack-cyclic-reference',\n kind: 'mount-asset',\n cycle,\n }),\n );\n }\n }\n }\n\n return ok(rawPaths);\n}\n\n/** Scan one complete Pack inventory while preserving the public path-only API. */\nexport async function scan(\n roots: readonly string[],\n opts: ScanOptions = {},\n): Promise<ScanResult<string[], PackError>> {\n return scanValidated(roots, opts);\n}\n\n/** Return the validated source inventory without interpreting producer output kinds. */\nexport async function scanInventory(\n roots: readonly string[],\n opts: ScanOptions = {},\n): Promise<ScanResult<ScanInventory, PackError>> {\n const declarations = new Map<string, ScanSourceDeclaration>();\n const scanned = await scanValidated(roots, opts, { declarations });\n if (!scanned.ok) return scanned;\n const inventory: InventoryDeclaration[] = [];\n for (const sourcePath of scanned.value) {\n const declaration = declarations.get(sourcePath);\n if (declaration?.format !== 'pack.json') continue;\n if (declaration.value.schemaVersion === '3.0.0') {\n const parsed = parsePackSourceJson(declaration.value);\n if (!parsed.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '', message: parsed.error.code }],\n }),\n );\n }\n if (parsed.value.format !== 'direct') continue;\n const projected = projectDirectPackJson(parsed.value);\n if (!projected.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '/assets', message: projected.error.code }],\n }),\n );\n }\n for (const [index, asset] of projected.value.assets.entries()) {\n inventory.push({\n guid: asset.guid,\n kind: asset.kind,\n sourcePath,\n sourceRevision: declaration.sourceRevision,\n sourceKey: asset.sourceKey,\n sourceIndex: index,\n });\n }\n continue;\n }\n for (const [index, asset] of declaration.value.assets.entries()) {\n inventory.push({\n guid: asset.guid,\n kind: asset.kind,\n sourcePath,\n sourceRevision: declaration.sourceRevision,\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n ...(asset.sourceIndex === undefined\n ? { sourceIndex: index }\n : { sourceIndex: asset.sourceIndex }),\n });\n }\n }\n return ok({ paths: scanned.value, inventory, declarations });\n}\n"]}
|