@xapps-platform/cli 0.1.1

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.
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/ajv/lib/compile/codegen/code.ts", "../../../node_modules/ajv/lib/compile/codegen/scope.ts", "../../../node_modules/ajv/lib/compile/codegen/index.ts", "../../../node_modules/ajv/lib/compile/util.ts", "../../../node_modules/ajv/lib/compile/names.ts", "../../../node_modules/ajv/lib/compile/errors.ts", "../../../node_modules/ajv/lib/compile/validate/boolSchema.ts", "../../../node_modules/ajv/lib/compile/rules.ts", "../../../node_modules/ajv/lib/compile/validate/applicability.ts", "../../../node_modules/ajv/lib/compile/validate/dataType.ts", "../../../node_modules/ajv/lib/compile/validate/defaults.ts", "../../../node_modules/ajv/lib/vocabularies/code.ts", "../../../node_modules/ajv/lib/compile/validate/keyword.ts", "../../../node_modules/ajv/lib/compile/validate/subschema.ts", "../../../node_modules/fast-deep-equal/index.js", "../../../node_modules/json-schema-traverse/index.js", "../../../node_modules/ajv/lib/compile/resolve.ts", "../../../node_modules/ajv/lib/compile/validate/index.ts", "../../../node_modules/ajv/lib/runtime/validation_error.ts", "../../../node_modules/ajv/lib/compile/ref_error.ts", "../../../node_modules/ajv/lib/compile/index.ts", "../../../node_modules/ajv/dist/refs/data.json", "../../../node_modules/fast-uri/lib/utils.js", "../../../node_modules/fast-uri/lib/schemes.js", "../../../node_modules/fast-uri/index.js", "../../../node_modules/ajv/lib/runtime/uri.ts", "../../../node_modules/ajv/lib/core.ts", "../../../node_modules/ajv/lib/vocabularies/core/id.ts", "../../../node_modules/ajv/lib/vocabularies/core/ref.ts", "../../../node_modules/ajv/lib/vocabularies/core/index.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts", "../../../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts", "../../../node_modules/ajv/lib/runtime/ucs2length.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitLength.ts", "../../../node_modules/ajv/lib/vocabularies/validation/pattern.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts", "../../../node_modules/ajv/lib/vocabularies/validation/required.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitItems.ts", "../../../node_modules/ajv/lib/runtime/equal.ts", "../../../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts", "../../../node_modules/ajv/lib/vocabularies/validation/const.ts", "../../../node_modules/ajv/lib/vocabularies/validation/enum.ts", "../../../node_modules/ajv/lib/vocabularies/validation/index.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/items.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/items2020.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/contains.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/properties.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/not.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/allOf.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/if.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/index.ts", "../../../node_modules/ajv/lib/vocabularies/format/format.ts", "../../../node_modules/ajv/lib/vocabularies/format/index.ts", "../../../node_modules/ajv/lib/vocabularies/metadata.ts", "../../../node_modules/ajv/lib/vocabularies/draft7.ts", "../../../node_modules/ajv/lib/vocabularies/discriminator/types.ts", "../../../node_modules/ajv/lib/vocabularies/discriminator/index.ts", "../../../node_modules/ajv/dist/refs/json-schema-draft-07.json", "../../../node_modules/ajv/lib/ajv.ts", "../../../node_modules/ajv-formats/src/formats.ts", "../../../node_modules/ajv-formats/src/limit.ts", "../../../node_modules/ajv-formats/src/index.ts", "../../../node_modules/pino-std-serializers/lib/err-helpers.js", "../../../node_modules/pino-std-serializers/lib/err-proto.js", "../../../node_modules/pino-std-serializers/lib/err.js", "../../../node_modules/pino-std-serializers/lib/err-with-cause.js", "../../../node_modules/pino-std-serializers/lib/req.js", "../../../node_modules/pino-std-serializers/lib/res.js", "../../../node_modules/pino-std-serializers/index.js", "../../../node_modules/pino/lib/caller.js", "../../../node_modules/@pinojs/redact/index.js", "../../../node_modules/pino/lib/symbols.js", "../../../node_modules/pino/lib/redaction.js", "../../../node_modules/pino/lib/time.js", "../../../node_modules/quick-format-unescaped/index.js", "../../../node_modules/atomic-sleep/index.js", "../../../node_modules/sonic-boom/index.js", "../../../node_modules/on-exit-leak-free/index.js", "../../../node_modules/thread-stream/package.json", "../../../node_modules/thread-stream/lib/wait.js", "../../../node_modules/thread-stream/lib/indexes.js", "../../../node_modules/thread-stream/index.js", "../../../node_modules/pino/lib/transport.js", "../../../node_modules/pino/lib/tools.js", "../../../node_modules/pino/lib/constants.js", "../../../node_modules/pino/lib/levels.js", "../../../node_modules/pino/lib/meta.js", "../../../node_modules/pino/lib/proto.js", "../../../node_modules/safe-stable-stringify/index.js", "../../../node_modules/pino/lib/multistream.js", "../../../node_modules/pino/pino.js", "../../../node_modules/dotenv/package.json", "../../../node_modules/dotenv/lib/main.js", "../src/cli.ts", "../../server-sdk/src/publisherApiClient.ts", "../../../src/validation/xappManifest.ts", "../../../src/guards/hookContracts.ts", "../../../src/guards/hookRegistry.ts", "../../../src/guards/hookResolution.ts", "../../../src/logger.ts", "../../../src/config/env.ts", "../../../src/bootstrapLogger.ts", "../../../src/notifications/definitions.ts", "../../../src/invoices/definitions.ts", "../../../src/guards/subjectProfileGuardDefinitions.ts", "../../../src/guards/subjectProfileRequirement.ts", "../src/devStatus.ts", "../src/contextCommands.ts", "../src/commands/manifestCommands.ts", "../../../node_modules/js-yaml/dist/js-yaml.mjs", "../../openapi-import/src/index.ts", "../src/commands/devCommands.ts", "../src/devFlow.ts", "../src/devCheckFlow.ts", "../src/aiCommands.ts", "../src/publisherCommands.ts"],
4
+ "sourcesContent": ["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n", "import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n", "import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n", "import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n", "import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n", "import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n", "import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n", "import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n", "import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n", "import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n", "import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n", "import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n", "import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n", "import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n", "'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n", "import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n", "import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n", "import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n", "import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n", "import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n", "{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n", "'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @param {boolean} esc\n * @returns {import('../types/index').URIComponent}\n */\nfunction normalizeComponentEncoding (component, esc) {\n const func = esc !== true ? escape : unescape\n if (component.scheme !== undefined) {\n component.scheme = func(component.scheme)\n }\n if (component.userinfo !== undefined) {\n component.userinfo = func(component.userinfo)\n }\n if (component.host !== undefined) {\n component.host = func(component.host)\n }\n if (component.path !== undefined) {\n component.path = func(component.path)\n }\n if (component.query !== undefined) {\n component.query = func(component.query)\n }\n if (component.fragment !== undefined) {\n component.fragment = func(component.fragment)\n }\n return component\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n const uriTokens = []\n\n if (component.userinfo !== undefined) {\n uriTokens.push(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = component.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n", "'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n", "'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (serialize(parse(uri, options), options))\n } else if (typeof uri === 'object') {\n uri = /** @type {T} */ (parse(serialize(uri, options), options))\n }\n return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escape(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = unescape(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n /** @type {import('./types/index').URIComponent} */\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = isIPv4(parsed.host)\n if (ipv4result === false) {\n const ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n }\n if (parsed.path) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponent,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n", "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 $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} = {}\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 {_, 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 {data, $data, schema, schemaCode, it} = cxt\n // TODO regexp should be wrapped in try/catchs\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\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", "'use strict'\n\n// **************************************************************\n// * Code initially copied/adapted from \"pony-cause\" npm module *\n// * Please upstream improvements there *\n// **************************************************************\n\nconst isErrorLike = (err) => {\n return err && typeof err.message === 'string'\n}\n\n/**\n * @param {Error|{ cause?: unknown|(()=>err)}} err\n * @returns {Error|Object|undefined}\n */\nconst getErrorCause = (err) => {\n if (!err) return\n\n /** @type {unknown} */\n // @ts-ignore\n const cause = err.cause\n\n // VError / NError style causes\n if (typeof cause === 'function') {\n // @ts-ignore\n const causeResult = err.cause()\n\n return isErrorLike(causeResult)\n ? causeResult\n : undefined\n } else {\n return isErrorLike(cause)\n ? cause\n : undefined\n }\n}\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @returns {string}\n */\nconst _stackWithCauses = (err, seen) => {\n if (!isErrorLike(err)) return ''\n\n const stack = err.stack || ''\n\n // Ensure we don't go circular or crazily deep\n if (seen.has(err)) {\n return stack + '\\ncauses have become circular...'\n }\n\n const cause = getErrorCause(err)\n\n if (cause) {\n seen.add(err)\n return (stack + '\\ncaused by: ' + _stackWithCauses(cause, seen))\n } else {\n return stack\n }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst stackWithCauses = (err) => _stackWithCauses(err, new Set())\n\n/**\n * Internal method that keeps a track of which error we have already added, to avoid circular recursion\n *\n * @private\n * @param {Error} err\n * @param {Set<Error>} seen\n * @param {boolean} [skip]\n * @returns {string}\n */\nconst _messageWithCauses = (err, seen, skip) => {\n if (!isErrorLike(err)) return ''\n\n const message = skip ? '' : (err.message || '')\n\n // Ensure we don't go circular or crazily deep\n if (seen.has(err)) {\n return message + ': ...'\n }\n\n const cause = getErrorCause(err)\n\n if (cause) {\n seen.add(err)\n\n // @ts-ignore\n const skipIfVErrorStyleCause = typeof err.cause === 'function'\n\n return (message +\n (skipIfVErrorStyleCause ? '' : ': ') +\n _messageWithCauses(cause, seen, skipIfVErrorStyleCause))\n } else {\n return message\n }\n}\n\n/**\n * @param {Error} err\n * @returns {string}\n */\nconst messageWithCauses = (err) => _messageWithCauses(err, new Set())\n\nmodule.exports = {\n isErrorLike,\n getErrorCause,\n stackWithCauses,\n messageWithCauses\n}\n", "'use strict'\n\nconst seen = Symbol('circular-ref-tag')\nconst rawSymbol = Symbol('pino-raw-err-ref')\n\nconst pinoErrProto = Object.create({}, {\n type: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n message: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n stack: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n aggregateErrors: {\n enumerable: true,\n writable: true,\n value: undefined\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoErrProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nmodule.exports = {\n pinoErrProto,\n pinoErrorSymbols: {\n seen,\n rawSymbol\n }\n}\n", "'use strict'\n\nmodule.exports = errSerializer\n\nconst { messageWithCauses, stackWithCauses, isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errSerializer (err) {\n if (!isErrorLike(err)) {\n return err\n }\n\n err[seen] = undefined // tag to prevent re-looking at this\n const _err = Object.create(pinoErrProto)\n _err.type = toString.call(err.constructor) === '[object Function]'\n ? err.constructor.name\n : err.name\n _err.message = messageWithCauses(err)\n _err.stack = stackWithCauses(err)\n\n if (Array.isArray(err.errors)) {\n _err.aggregateErrors = err.errors.map(err => errSerializer(err))\n }\n\n for (const key in err) {\n if (_err[key] === undefined) {\n const val = err[key]\n if (isErrorLike(val)) {\n // We append cause messages and stacks to _err, therefore skipping causes here\n if (key !== 'cause' && !Object.prototype.hasOwnProperty.call(val, seen)) {\n _err[key] = errSerializer(val)\n }\n } else {\n _err[key] = val\n }\n }\n }\n\n delete err[seen] // clean up tag in case err is serialized again later\n _err.raw = err\n return _err\n}\n", "'use strict'\n\nmodule.exports = errWithCauseSerializer\n\nconst { isErrorLike } = require('./err-helpers')\nconst { pinoErrProto, pinoErrorSymbols } = require('./err-proto')\nconst { seen } = pinoErrorSymbols\n\nconst { toString } = Object.prototype\n\nfunction errWithCauseSerializer (err) {\n if (!isErrorLike(err)) {\n return err\n }\n\n err[seen] = undefined // tag to prevent re-looking at this\n const _err = Object.create(pinoErrProto)\n _err.type = toString.call(err.constructor) === '[object Function]'\n ? err.constructor.name\n : err.name\n _err.message = err.message\n _err.stack = err.stack\n\n if (Array.isArray(err.errors)) {\n _err.aggregateErrors = err.errors.map(err => errWithCauseSerializer(err))\n }\n\n if (isErrorLike(err.cause) && !Object.prototype.hasOwnProperty.call(err.cause, seen)) {\n _err.cause = errWithCauseSerializer(err.cause)\n }\n\n for (const key in err) {\n if (_err[key] === undefined) {\n const val = err[key]\n if (isErrorLike(val)) {\n if (!Object.prototype.hasOwnProperty.call(val, seen)) {\n _err[key] = errWithCauseSerializer(val)\n }\n } else {\n _err[key] = val\n }\n }\n }\n\n delete err[seen] // clean up tag in case err is serialized again later\n _err.raw = err\n return _err\n}\n", "'use strict'\n\nmodule.exports = {\n mapHttpRequest,\n reqSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-req-ref')\nconst pinoReqProto = Object.create({}, {\n id: {\n enumerable: true,\n writable: true,\n value: ''\n },\n method: {\n enumerable: true,\n writable: true,\n value: ''\n },\n url: {\n enumerable: true,\n writable: true,\n value: ''\n },\n query: {\n enumerable: true,\n writable: true,\n value: ''\n },\n params: {\n enumerable: true,\n writable: true,\n value: ''\n },\n headers: {\n enumerable: true,\n writable: true,\n value: {}\n },\n remoteAddress: {\n enumerable: true,\n writable: true,\n value: ''\n },\n remotePort: {\n enumerable: true,\n writable: true,\n value: ''\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoReqProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nfunction reqSerializer (req) {\n // req.info is for hapi compat.\n const connection = req.info || req.socket\n const _req = Object.create(pinoReqProto)\n _req.id = (typeof req.id === 'function' ? req.id() : (req.id || (req.info ? req.info.id : undefined)))\n _req.method = req.method\n // req.originalUrl is for expressjs compat.\n if (req.originalUrl) {\n _req.url = req.originalUrl\n } else {\n const path = req.path\n // path for safe hapi compat.\n _req.url = typeof path === 'string' ? path : (req.url ? req.url.path || req.url : undefined)\n }\n\n if (req.query) {\n _req.query = req.query\n }\n\n if (req.params) {\n _req.params = req.params\n }\n\n _req.headers = req.headers\n _req.remoteAddress = connection && connection.remoteAddress\n _req.remotePort = connection && connection.remotePort\n // req.raw is for hapi compat/equivalence\n _req.raw = req.raw || req\n return _req\n}\n\nfunction mapHttpRequest (req) {\n return {\n req: reqSerializer(req)\n }\n}\n", "'use strict'\n\nmodule.exports = {\n mapHttpResponse,\n resSerializer\n}\n\nconst rawSymbol = Symbol('pino-raw-res-ref')\nconst pinoResProto = Object.create({}, {\n statusCode: {\n enumerable: true,\n writable: true,\n value: 0\n },\n headers: {\n enumerable: true,\n writable: true,\n value: ''\n },\n raw: {\n enumerable: false,\n get: function () {\n return this[rawSymbol]\n },\n set: function (val) {\n this[rawSymbol] = val\n }\n }\n})\nObject.defineProperty(pinoResProto, rawSymbol, {\n writable: true,\n value: {}\n})\n\nfunction resSerializer (res) {\n const _res = Object.create(pinoResProto)\n _res.statusCode = res.headersSent ? res.statusCode : null\n _res.headers = res.getHeaders ? res.getHeaders() : res._headers\n _res.raw = res\n return _res\n}\n\nfunction mapHttpResponse (res) {\n return {\n res: resSerializer(res)\n }\n}\n", "'use strict'\n\nconst errSerializer = require('./lib/err')\nconst errWithCauseSerializer = require('./lib/err-with-cause')\nconst reqSerializers = require('./lib/req')\nconst resSerializers = require('./lib/res')\n\nmodule.exports = {\n err: errSerializer,\n errWithCause: errWithCauseSerializer,\n mapHttpRequest: reqSerializers.mapHttpRequest,\n mapHttpResponse: resSerializers.mapHttpResponse,\n req: reqSerializers.reqSerializer,\n res: resSerializers.resSerializer,\n\n wrapErrorSerializer: function wrapErrorSerializer (customSerializer) {\n if (customSerializer === errSerializer) return customSerializer\n return function wrapErrSerializer (err) {\n return customSerializer(errSerializer(err))\n }\n },\n\n wrapRequestSerializer: function wrapRequestSerializer (customSerializer) {\n if (customSerializer === reqSerializers.reqSerializer) return customSerializer\n return function wrappedReqSerializer (req) {\n return customSerializer(reqSerializers.reqSerializer(req))\n }\n },\n\n wrapResponseSerializer: function wrapResponseSerializer (customSerializer) {\n if (customSerializer === resSerializers.resSerializer) return customSerializer\n return function wrappedResSerializer (res) {\n return customSerializer(resSerializers.resSerializer(res))\n }\n }\n}\n", "'use strict'\n\nfunction noOpPrepareStackTrace (_, stack) {\n return stack\n}\n\nmodule.exports = function getCallers () {\n const originalPrepare = Error.prepareStackTrace\n Error.prepareStackTrace = noOpPrepareStackTrace\n const stack = new Error().stack\n Error.prepareStackTrace = originalPrepare\n\n if (!Array.isArray(stack)) {\n return undefined\n }\n\n const entries = stack.slice(2)\n\n const fileNames = []\n\n for (const entry of entries) {\n if (!entry) {\n continue\n }\n\n fileNames.push(entry.getFileName())\n }\n\n return fileNames\n}\n", "'use strict'\n\nfunction deepClone (obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n if (obj instanceof Date) {\n return new Date(obj.getTime())\n }\n\n if (obj instanceof Array) {\n const cloned = []\n for (let i = 0; i < obj.length; i++) {\n cloned[i] = deepClone(obj[i])\n }\n return cloned\n }\n\n if (typeof obj === 'object') {\n const cloned = Object.create(Object.getPrototypeOf(obj))\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n cloned[key] = deepClone(obj[key])\n }\n }\n return cloned\n }\n\n return obj\n}\n\nfunction parsePath (path) {\n const parts = []\n let current = ''\n let inBrackets = false\n let inQuotes = false\n let quoteChar = ''\n\n for (let i = 0; i < path.length; i++) {\n const char = path[i]\n\n if (!inBrackets && char === '.') {\n if (current) {\n parts.push(current)\n current = ''\n }\n } else if (char === '[') {\n if (current) {\n parts.push(current)\n current = ''\n }\n inBrackets = true\n } else if (char === ']' && inBrackets) {\n // Always push the current value when closing brackets, even if it's an empty string\n parts.push(current)\n current = ''\n inBrackets = false\n inQuotes = false\n } else if ((char === '\"' || char === \"'\") && inBrackets) {\n if (!inQuotes) {\n inQuotes = true\n quoteChar = char\n } else if (char === quoteChar) {\n inQuotes = false\n quoteChar = ''\n } else {\n current += char\n }\n } else {\n current += char\n }\n }\n\n if (current) {\n parts.push(current)\n }\n\n return parts\n}\n\nfunction setValue (obj, parts, value) {\n let current = obj\n\n for (let i = 0; i < parts.length - 1; i++) {\n const key = parts[i]\n // Type safety: Check if current is an object before using 'in' operator\n if (typeof current !== 'object' || current === null || !(key in current)) {\n return false // Path doesn't exist, don't create it\n }\n if (typeof current[key] !== 'object' || current[key] === null) {\n return false // Path doesn't exist properly\n }\n current = current[key]\n }\n\n const lastKey = parts[parts.length - 1]\n if (lastKey === '*') {\n if (Array.isArray(current)) {\n for (let i = 0; i < current.length; i++) {\n current[i] = value\n }\n } else if (typeof current === 'object' && current !== null) {\n for (const key in current) {\n if (Object.prototype.hasOwnProperty.call(current, key)) {\n current[key] = value\n }\n }\n }\n } else {\n // Type safety: Check if current is an object before using 'in' operator\n if (typeof current === 'object' && current !== null && lastKey in current && Object.prototype.hasOwnProperty.call(current, lastKey)) {\n current[lastKey] = value\n }\n }\n return true\n}\n\nfunction removeKey (obj, parts) {\n let current = obj\n\n for (let i = 0; i < parts.length - 1; i++) {\n const key = parts[i]\n // Type safety: Check if current is an object before using 'in' operator\n if (typeof current !== 'object' || current === null || !(key in current)) {\n return false // Path doesn't exist, don't create it\n }\n if (typeof current[key] !== 'object' || current[key] === null) {\n return false // Path doesn't exist properly\n }\n current = current[key]\n }\n\n const lastKey = parts[parts.length - 1]\n if (lastKey === '*') {\n if (Array.isArray(current)) {\n // For arrays, we can't really \"remove\" all items as that would change indices\n // Instead, we set them to undefined which will be omitted by JSON.stringify\n for (let i = 0; i < current.length; i++) {\n current[i] = undefined\n }\n } else if (typeof current === 'object' && current !== null) {\n for (const key in current) {\n if (Object.prototype.hasOwnProperty.call(current, key)) {\n delete current[key]\n }\n }\n }\n } else {\n // Type safety: Check if current is an object before using 'in' operator\n if (typeof current === 'object' && current !== null && lastKey in current && Object.prototype.hasOwnProperty.call(current, lastKey)) {\n delete current[lastKey]\n }\n }\n return true\n}\n\n// Sentinel object to distinguish between undefined value and non-existent path\nconst PATH_NOT_FOUND = Symbol('PATH_NOT_FOUND')\n\nfunction getValueIfExists (obj, parts) {\n let current = obj\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return PATH_NOT_FOUND\n }\n // Type safety: Check if current is an object before property access\n if (typeof current !== 'object' || current === null) {\n return PATH_NOT_FOUND\n }\n // Check if the property exists before accessing it\n if (!(part in current)) {\n return PATH_NOT_FOUND\n }\n current = current[part]\n }\n\n return current\n}\n\nfunction getValue (obj, parts) {\n let current = obj\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return undefined\n }\n // Type safety: Check if current is an object before property access\n if (typeof current !== 'object' || current === null) {\n return undefined\n }\n current = current[part]\n }\n\n return current\n}\n\nfunction redactPaths (obj, paths, censor, remove = false) {\n for (const path of paths) {\n const parts = parsePath(path)\n\n if (parts.includes('*')) {\n redactWildcardPath(obj, parts, censor, path, remove)\n } else {\n if (remove) {\n removeKey(obj, parts)\n } else {\n // Get value only if path exists - single traversal\n const value = getValueIfExists(obj, parts)\n if (value === PATH_NOT_FOUND) {\n continue\n }\n\n const actualCensor = typeof censor === 'function'\n ? censor(value, parts)\n : censor\n setValue(obj, parts, actualCensor)\n }\n }\n }\n}\n\nfunction redactWildcardPath (obj, parts, censor, originalPath, remove = false) {\n const wildcardIndex = parts.indexOf('*')\n\n if (wildcardIndex === parts.length - 1) {\n const parentParts = parts.slice(0, -1)\n let current = obj\n\n for (const part of parentParts) {\n if (current === null || current === undefined) return\n // Type safety: Check if current is an object before property access\n if (typeof current !== 'object' || current === null) return\n current = current[part]\n }\n\n if (Array.isArray(current)) {\n if (remove) {\n // For arrays, set all items to undefined which will be omitted by JSON.stringify\n for (let i = 0; i < current.length; i++) {\n current[i] = undefined\n }\n } else {\n for (let i = 0; i < current.length; i++) {\n const indexPath = [...parentParts, i.toString()]\n const actualCensor = typeof censor === 'function'\n ? censor(current[i], indexPath)\n : censor\n current[i] = actualCensor\n }\n }\n } else if (typeof current === 'object' && current !== null) {\n if (remove) {\n // Collect keys to delete to avoid issues with deleting during iteration\n const keysToDelete = []\n for (const key in current) {\n if (Object.prototype.hasOwnProperty.call(current, key)) {\n keysToDelete.push(key)\n }\n }\n for (const key of keysToDelete) {\n delete current[key]\n }\n } else {\n for (const key in current) {\n const keyPath = [...parentParts, key]\n const actualCensor = typeof censor === 'function'\n ? censor(current[key], keyPath)\n : censor\n current[key] = actualCensor\n }\n }\n }\n } else {\n redactIntermediateWildcard(obj, parts, censor, wildcardIndex, originalPath, remove)\n }\n}\n\nfunction redactIntermediateWildcard (obj, parts, censor, wildcardIndex, originalPath, remove = false) {\n const beforeWildcard = parts.slice(0, wildcardIndex)\n const afterWildcard = parts.slice(wildcardIndex + 1)\n const pathArray = [] // Cached array to avoid allocations\n\n function traverse (current, pathLength) {\n if (pathLength === beforeWildcard.length) {\n if (Array.isArray(current)) {\n for (let i = 0; i < current.length; i++) {\n pathArray[pathLength] = i.toString()\n traverse(current[i], pathLength + 1)\n }\n } else if (typeof current === 'object' && current !== null) {\n for (const key in current) {\n pathArray[pathLength] = key\n traverse(current[key], pathLength + 1)\n }\n }\n } else if (pathLength < beforeWildcard.length) {\n const nextKey = beforeWildcard[pathLength]\n // Type safety: Check if current is an object before using 'in' operator\n if (current && typeof current === 'object' && current !== null && nextKey in current) {\n pathArray[pathLength] = nextKey\n traverse(current[nextKey], pathLength + 1)\n }\n } else {\n // Check if afterWildcard contains more wildcards\n if (afterWildcard.includes('*')) {\n // Recursively handle remaining wildcards\n // Wrap censor to prepend current path context\n const wrappedCensor = typeof censor === 'function'\n ? (value, path) => {\n const fullPath = [...pathArray.slice(0, pathLength), ...path]\n return censor(value, fullPath)\n }\n : censor\n redactWildcardPath(current, afterWildcard, wrappedCensor, originalPath, remove)\n } else {\n // No more wildcards, apply the redaction directly\n if (remove) {\n removeKey(current, afterWildcard)\n } else {\n const actualCensor = typeof censor === 'function'\n ? censor(getValue(current, afterWildcard), [...pathArray.slice(0, pathLength), ...afterWildcard])\n : censor\n setValue(current, afterWildcard, actualCensor)\n }\n }\n }\n }\n\n if (beforeWildcard.length === 0) {\n traverse(obj, 0)\n } else {\n let current = obj\n for (let i = 0; i < beforeWildcard.length; i++) {\n const part = beforeWildcard[i]\n if (current === null || current === undefined) return\n // Type safety: Check if current is an object before property access\n if (typeof current !== 'object' || current === null) return\n current = current[part]\n pathArray[i] = part\n }\n if (current !== null && current !== undefined) {\n traverse(current, beforeWildcard.length)\n }\n }\n}\n\nfunction buildPathStructure (pathsToClone) {\n if (pathsToClone.length === 0) {\n return null // No paths to redact\n }\n\n // Parse all paths and organize by depth\n const pathStructure = new Map()\n for (const path of pathsToClone) {\n const parts = parsePath(path)\n let current = pathStructure\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i]\n if (!current.has(part)) {\n current.set(part, new Map())\n }\n current = current.get(part)\n }\n }\n return pathStructure\n}\n\nfunction selectiveClone (obj, pathStructure) {\n if (!pathStructure) {\n return obj // No paths to redact, return original\n }\n\n function cloneSelectively (source, pathMap, depth = 0) {\n if (!pathMap || pathMap.size === 0) {\n return source // No more paths to clone, return reference\n }\n\n if (source === null || typeof source !== 'object') {\n return source\n }\n\n if (source instanceof Date) {\n return new Date(source.getTime())\n }\n\n if (Array.isArray(source)) {\n const cloned = []\n for (let i = 0; i < source.length; i++) {\n const indexStr = i.toString()\n if (pathMap.has(indexStr) || pathMap.has('*')) {\n cloned[i] = cloneSelectively(source[i], pathMap.get(indexStr) || pathMap.get('*'))\n } else {\n cloned[i] = source[i] // Share reference for non-redacted items\n }\n }\n return cloned\n }\n\n // Handle objects\n const cloned = Object.create(Object.getPrototypeOf(source))\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (pathMap.has(key) || pathMap.has('*')) {\n cloned[key] = cloneSelectively(source[key], pathMap.get(key) || pathMap.get('*'))\n } else {\n cloned[key] = source[key] // Share reference for non-redacted properties\n }\n }\n }\n return cloned\n }\n\n return cloneSelectively(obj, pathStructure)\n}\n\nfunction validatePath (path) {\n if (typeof path !== 'string') {\n throw new Error('Paths must be (non-empty) strings')\n }\n\n if (path === '') {\n throw new Error('Invalid redaction path ()')\n }\n\n // Check for double dots\n if (path.includes('..')) {\n throw new Error(`Invalid redaction path (${path})`)\n }\n\n // Check for comma-separated paths (invalid syntax)\n if (path.includes(',')) {\n throw new Error(`Invalid redaction path (${path})`)\n }\n\n // Check for unmatched brackets\n let bracketCount = 0\n let inQuotes = false\n let quoteChar = ''\n\n for (let i = 0; i < path.length; i++) {\n const char = path[i]\n\n if ((char === '\"' || char === \"'\") && bracketCount > 0) {\n if (!inQuotes) {\n inQuotes = true\n quoteChar = char\n } else if (char === quoteChar) {\n inQuotes = false\n quoteChar = ''\n }\n } else if (char === '[' && !inQuotes) {\n bracketCount++\n } else if (char === ']' && !inQuotes) {\n bracketCount--\n if (bracketCount < 0) {\n throw new Error(`Invalid redaction path (${path})`)\n }\n }\n }\n\n if (bracketCount !== 0) {\n throw new Error(`Invalid redaction path (${path})`)\n }\n}\n\nfunction validatePaths (paths) {\n if (!Array.isArray(paths)) {\n throw new TypeError('paths must be an array')\n }\n\n for (const path of paths) {\n validatePath(path)\n }\n}\n\nfunction slowRedact (options = {}) {\n const {\n paths = [],\n censor = '[REDACTED]',\n serialize = JSON.stringify,\n strict = true,\n remove = false\n } = options\n\n // Validate paths upfront to match fast-redact behavior\n validatePaths(paths)\n\n // Build path structure once during setup, not on every call\n const pathStructure = buildPathStructure(paths)\n\n return function redact (obj) {\n if (strict && (obj === null || typeof obj !== 'object')) {\n if (obj === null || obj === undefined) {\n return serialize ? serialize(obj) : obj\n }\n if (typeof obj !== 'object') {\n return serialize ? serialize(obj) : obj\n }\n }\n\n // Only clone paths that need redaction\n const cloned = selectiveClone(obj, pathStructure)\n const original = obj // Keep reference to original for restore\n\n let actualCensor = censor\n if (typeof censor === 'function') {\n actualCensor = censor\n }\n\n redactPaths(cloned, paths, actualCensor, remove)\n\n if (serialize === false) {\n cloned.restore = function () {\n return deepClone(original) // Full clone only when restore is called\n }\n return cloned\n }\n\n if (typeof serialize === 'function') {\n return serialize(cloned)\n }\n\n return JSON.stringify(cloned)\n }\n}\n\nmodule.exports = slowRedact\n", "'use strict'\n\nconst setLevelSym = Symbol('pino.setLevel')\nconst getLevelSym = Symbol('pino.getLevel')\nconst levelValSym = Symbol('pino.levelVal')\nconst levelCompSym = Symbol('pino.levelComp')\nconst useLevelLabelsSym = Symbol('pino.useLevelLabels')\nconst useOnlyCustomLevelsSym = Symbol('pino.useOnlyCustomLevels')\nconst mixinSym = Symbol('pino.mixin')\n\nconst lsCacheSym = Symbol('pino.lsCache')\nconst chindingsSym = Symbol('pino.chindings')\n\nconst asJsonSym = Symbol('pino.asJson')\nconst writeSym = Symbol('pino.write')\nconst redactFmtSym = Symbol('pino.redactFmt')\n\nconst timeSym = Symbol('pino.time')\nconst timeSliceIndexSym = Symbol('pino.timeSliceIndex')\nconst streamSym = Symbol('pino.stream')\nconst stringifySym = Symbol('pino.stringify')\nconst stringifySafeSym = Symbol('pino.stringifySafe')\nconst stringifiersSym = Symbol('pino.stringifiers')\nconst endSym = Symbol('pino.end')\nconst formatOptsSym = Symbol('pino.formatOpts')\nconst messageKeySym = Symbol('pino.messageKey')\nconst errorKeySym = Symbol('pino.errorKey')\nconst nestedKeySym = Symbol('pino.nestedKey')\nconst nestedKeyStrSym = Symbol('pino.nestedKeyStr')\nconst mixinMergeStrategySym = Symbol('pino.mixinMergeStrategy')\nconst msgPrefixSym = Symbol('pino.msgPrefix')\n\nconst wildcardFirstSym = Symbol('pino.wildcardFirst')\n\n// public symbols, no need to use the same pino\n// version for these\nconst serializersSym = Symbol.for('pino.serializers')\nconst formattersSym = Symbol.for('pino.formatters')\nconst hooksSym = Symbol.for('pino.hooks')\nconst needsMetadataGsym = Symbol.for('pino.metadata')\n\nmodule.exports = {\n setLevelSym,\n getLevelSym,\n levelValSym,\n levelCompSym,\n useLevelLabelsSym,\n mixinSym,\n lsCacheSym,\n chindingsSym,\n asJsonSym,\n writeSym,\n serializersSym,\n redactFmtSym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n stringifySym,\n stringifySafeSym,\n stringifiersSym,\n endSym,\n formatOptsSym,\n messageKeySym,\n errorKeySym,\n nestedKeySym,\n wildcardFirstSym,\n needsMetadataGsym,\n useOnlyCustomLevelsSym,\n formattersSym,\n hooksSym,\n nestedKeyStrSym,\n mixinMergeStrategySym,\n msgPrefixSym\n}\n", "'use strict'\n\nconst Redact = require('@pinojs/redact')\nconst { redactFmtSym, wildcardFirstSym } = require('./symbols')\n\n// Custom rx regex equivalent to fast-redact's rx\nconst rx = /[^.[\\]]+|\\[([^[\\]]*?)\\]/g\n\nconst CENSOR = '[Redacted]'\nconst strict = false // TODO should this be configurable?\n\nfunction redaction (opts, serialize) {\n const { paths, censor, remove } = handle(opts)\n\n const shape = paths.reduce((o, str) => {\n rx.lastIndex = 0\n const first = rx.exec(str)\n const next = rx.exec(str)\n\n // ns is the top-level path segment, brackets + quoting removed.\n let ns = first[1] !== undefined\n ? first[1].replace(/^(?:\"|'|`)(.*)(?:\"|'|`)$/, '$1')\n : first[0]\n\n if (ns === '*') {\n ns = wildcardFirstSym\n }\n\n // top level key:\n if (next === null) {\n o[ns] = null\n return o\n }\n\n // path with at least two segments:\n // if ns is already redacted at the top level, ignore lower level redactions\n if (o[ns] === null) {\n return o\n }\n\n const { index } = next\n const nextPath = `${str.substr(index, str.length - 1)}`\n\n o[ns] = o[ns] || []\n\n // shape is a mix of paths beginning with literal values and wildcard\n // paths [ \"a.b.c\", \"*.b.z\" ] should reduce to a shape of\n // { \"a\": [ \"b.c\", \"b.z\" ], *: [ \"b.z\" ] }\n // note: \"b.z\" is in both \"a\" and * arrays because \"a\" matches the wildcard.\n // (* entry has wildcardFirstSym as key)\n if (ns !== wildcardFirstSym && o[ns].length === 0) {\n // first time ns's get all '*' redactions so far\n o[ns].push(...(o[wildcardFirstSym] || []))\n }\n\n if (ns === wildcardFirstSym) {\n // new * path gets added to all previously registered literal ns's.\n Object.keys(o).forEach(function (k) {\n if (o[k]) {\n o[k].push(nextPath)\n }\n })\n }\n\n o[ns].push(nextPath)\n return o\n }, {})\n\n // the redactor assigned to the format symbol key\n // provides top level redaction for instances where\n // an object is interpolated into the msg string\n const result = {\n [redactFmtSym]: Redact({ paths, censor, serialize, strict, remove })\n }\n\n const topCensor = (...args) => {\n return typeof censor === 'function' ? serialize(censor(...args)) : serialize(censor)\n }\n\n return [...Object.keys(shape), ...Object.getOwnPropertySymbols(shape)].reduce((o, k) => {\n // top level key:\n if (shape[k] === null) {\n o[k] = (value) => topCensor(value, [k])\n } else {\n const wrappedCensor = typeof censor === 'function'\n ? (value, path) => {\n return censor(value, [k, ...path])\n }\n : censor\n o[k] = Redact({\n paths: shape[k],\n censor: wrappedCensor,\n serialize,\n strict,\n remove\n })\n }\n return o\n }, result)\n}\n\nfunction handle (opts) {\n if (Array.isArray(opts)) {\n opts = { paths: opts, censor: CENSOR }\n return opts\n }\n let { paths, censor = CENSOR, remove } = opts\n if (Array.isArray(paths) === false) { throw Error('pino \u2013 redact must contain an array of strings') }\n if (remove === true) censor = undefined\n\n return { paths, censor, remove }\n}\n\nmodule.exports = redaction\n", "'use strict'\n\nconst nullTime = () => ''\n\nconst epochTime = () => `,\"time\":${Date.now()}`\n\nconst unixTime = () => `,\"time\":${Math.round(Date.now() / 1000.0)}`\n\nconst isoTime = () => `,\"time\":\"${new Date(Date.now()).toISOString()}\"` // using Date.now() for testability\n\nconst NS_PER_MS = 1_000_000n\nconst NS_PER_SEC = 1_000_000_000n\n\nconst startWallTimeNs = BigInt(Date.now()) * NS_PER_MS\nconst startHrTime = process.hrtime.bigint()\n\nconst isoTimeNano = () => {\n const elapsedNs = process.hrtime.bigint() - startHrTime\n const currentTimeNs = startWallTimeNs + elapsedNs\n\n const secondsSinceEpoch = currentTimeNs / NS_PER_SEC\n const nanosWithinSecond = currentTimeNs % NS_PER_SEC\n\n const msSinceEpoch = Number(secondsSinceEpoch * 1000n + nanosWithinSecond / 1_000_000n)\n const date = new Date(msSinceEpoch)\n\n const year = date.getUTCFullYear()\n const month = (date.getUTCMonth() + 1).toString().padStart(2, '0')\n const day = date.getUTCDate().toString().padStart(2, '0')\n const hours = date.getUTCHours().toString().padStart(2, '0')\n const minutes = date.getUTCMinutes().toString().padStart(2, '0')\n const seconds = date.getUTCSeconds().toString().padStart(2, '0')\n\n return `,\"time\":\"${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${nanosWithinSecond\n .toString()\n .padStart(9, '0')}Z\"`\n}\n\nmodule.exports = { nullTime, epochTime, unixTime, isoTime, isoTimeNano }\n", "'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n", "'use strict'\n\n/* global SharedArrayBuffer, Atomics */\n\nif (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {\n const nil = new Int32Array(new SharedArrayBuffer(4))\n\n function sleep (ms) {\n // also filters out NaN, non-number types, including empty strings, but allows bigints\n const valid = ms > 0 && ms < Infinity \n if (valid === false) {\n if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n throw TypeError('sleep: ms must be a number')\n }\n throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n }\n\n Atomics.wait(nil, 0, 0, Number(ms))\n }\n module.exports = sleep\n} else {\n\n function sleep (ms) {\n // also filters out NaN, non-number types, including empty strings, but allows bigints\n const valid = ms > 0 && ms < Infinity \n if (valid === false) {\n if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n throw TypeError('sleep: ms must be a number')\n }\n throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')\n }\n const target = Date.now() + Number(ms)\n while (target > Date.now()){}\n }\n\n module.exports = sleep\n\n}\n", "'use strict'\n\nconst fs = require('fs')\nconst EventEmitter = require('events')\nconst inherits = require('util').inherits\nconst path = require('path')\nconst sleep = require('atomic-sleep')\nconst assert = require('assert')\n\nconst BUSY_WRITE_TIMEOUT = 100\nconst kEmptyBuffer = Buffer.allocUnsafe(0)\n\n// 16 KB. Don't write more than docker buffer size.\n// https://github.com/moby/moby/blob/513ec73831269947d38a644c278ce3cac36783b2/daemon/logger/copier.go#L13\nconst MAX_WRITE = 16 * 1024\n\nconst kContentModeBuffer = 'buffer'\nconst kContentModeUtf8 = 'utf8'\n\nconst [major, minor] = (process.versions.node || '0.0').split('.').map(Number)\nconst kCopyBuffer = major >= 22 && minor >= 7\n\nfunction openFile (file, sonic) {\n sonic._opening = true\n sonic._writing = true\n sonic._asyncDrainScheduled = false\n\n // NOTE: 'error' and 'ready' events emitted below only relevant when sonic.sync===false\n // for sync mode, there is no way to add a listener that will receive these\n\n function fileOpened (err, fd) {\n if (err) {\n sonic._reopening = false\n sonic._writing = false\n sonic._opening = false\n\n if (sonic.sync) {\n process.nextTick(() => {\n if (sonic.listenerCount('error') > 0) {\n sonic.emit('error', err)\n }\n })\n } else {\n sonic.emit('error', err)\n }\n return\n }\n\n const reopening = sonic._reopening\n\n sonic.fd = fd\n sonic.file = file\n sonic._reopening = false\n sonic._opening = false\n sonic._writing = false\n\n if (sonic.sync) {\n process.nextTick(() => sonic.emit('ready'))\n } else {\n sonic.emit('ready')\n }\n\n if (sonic.destroyed) {\n return\n }\n\n // start\n if ((!sonic._writing && sonic._len > sonic.minLength) || sonic._flushPending) {\n sonic._actualWrite()\n } else if (reopening) {\n process.nextTick(() => sonic.emit('drain'))\n }\n }\n\n const flags = sonic.append ? 'a' : 'w'\n const mode = sonic.mode\n\n if (sonic.sync) {\n try {\n if (sonic.mkdir) fs.mkdirSync(path.dirname(file), { recursive: true })\n const fd = fs.openSync(file, flags, mode)\n fileOpened(null, fd)\n } catch (err) {\n fileOpened(err)\n throw err\n }\n } else if (sonic.mkdir) {\n fs.mkdir(path.dirname(file), { recursive: true }, (err) => {\n if (err) return fileOpened(err)\n fs.open(file, flags, mode, fileOpened)\n })\n } else {\n fs.open(file, flags, mode, fileOpened)\n }\n}\n\nfunction SonicBoom (opts) {\n if (!(this instanceof SonicBoom)) {\n return new SonicBoom(opts)\n }\n\n let { fd, dest, minLength, maxLength, maxWrite, periodicFlush, sync, append = true, mkdir, retryEAGAIN, fsync, contentMode, mode } = opts || {}\n\n fd = fd || dest\n\n this._len = 0\n this.fd = -1\n this._bufs = []\n this._lens = []\n this._writing = false\n this._ending = false\n this._reopening = false\n this._asyncDrainScheduled = false\n this._flushPending = false\n this._hwm = Math.max(minLength || 0, 16387)\n this.file = null\n this.destroyed = false\n this.minLength = minLength || 0\n this.maxLength = maxLength || 0\n this.maxWrite = maxWrite || MAX_WRITE\n this._periodicFlush = periodicFlush || 0\n this._periodicFlushTimer = undefined\n this.sync = sync || false\n this.writable = true\n this._fsync = fsync || false\n this.append = append || false\n this.mode = mode\n this.retryEAGAIN = retryEAGAIN || (() => true)\n this.mkdir = mkdir || false\n\n let fsWriteSync\n let fsWrite\n if (contentMode === kContentModeBuffer) {\n this._writingBuf = kEmptyBuffer\n this.write = writeBuffer\n this.flush = flushBuffer\n this.flushSync = flushBufferSync\n this._actualWrite = actualWriteBuffer\n fsWriteSync = () => fs.writeSync(this.fd, this._writingBuf)\n fsWrite = () => fs.write(this.fd, this._writingBuf, this.release)\n } else if (contentMode === undefined || contentMode === kContentModeUtf8) {\n this._writingBuf = ''\n this.write = write\n this.flush = flush\n this.flushSync = flushSync\n this._actualWrite = actualWrite\n fsWriteSync = () => fs.writeSync(this.fd, this._writingBuf, 'utf8')\n fsWrite = () => fs.write(this.fd, this._writingBuf, 'utf8', this.release)\n } else {\n throw new Error(`SonicBoom supports \"${kContentModeUtf8}\" and \"${kContentModeBuffer}\", but passed ${contentMode}`)\n }\n\n if (typeof fd === 'number') {\n this.fd = fd\n process.nextTick(() => this.emit('ready'))\n } else if (typeof fd === 'string') {\n openFile(fd, this)\n } else {\n throw new Error('SonicBoom supports only file descriptors and files')\n }\n if (this.minLength >= this.maxWrite) {\n throw new Error(`minLength should be smaller than maxWrite (${this.maxWrite})`)\n }\n\n this.release = (err, n) => {\n if (err) {\n if ((err.code === 'EAGAIN' || err.code === 'EBUSY') && this.retryEAGAIN(err, this._writingBuf.length, this._len - this._writingBuf.length)) {\n if (this.sync) {\n // This error code should not happen in sync mode, because it is\n // not using the underlining operating system asynchronous functions.\n // However it happens, and so we handle it.\n // Ref: https://github.com/pinojs/pino/issues/783\n try {\n sleep(BUSY_WRITE_TIMEOUT)\n this.release(undefined, 0)\n } catch (err) {\n this.release(err)\n }\n } else {\n // Let's give the destination some time to process the chunk.\n setTimeout(fsWrite, BUSY_WRITE_TIMEOUT)\n }\n } else {\n this._writing = false\n\n this.emit('error', err)\n }\n return\n }\n\n this.emit('write', n)\n const releasedBufObj = releaseWritingBuf(this._writingBuf, this._len, n)\n this._len = releasedBufObj.len\n this._writingBuf = releasedBufObj.writingBuf\n\n if (this._writingBuf.length) {\n if (!this.sync) {\n fsWrite()\n return\n }\n\n try {\n do {\n const n = fsWriteSync()\n const releasedBufObj = releaseWritingBuf(this._writingBuf, this._len, n)\n this._len = releasedBufObj.len\n this._writingBuf = releasedBufObj.writingBuf\n } while (this._writingBuf.length)\n } catch (err) {\n this.release(err)\n return\n }\n }\n\n if (this._fsync) {\n fs.fsyncSync(this.fd)\n }\n\n const len = this._len\n if (this._reopening) {\n this._writing = false\n this._reopening = false\n this.reopen()\n } else if (len > this.minLength) {\n this._actualWrite()\n } else if (this._ending) {\n if (len > 0) {\n this._actualWrite()\n } else {\n this._writing = false\n actualClose(this)\n }\n } else {\n this._writing = false\n if (this.sync) {\n if (!this._asyncDrainScheduled) {\n this._asyncDrainScheduled = true\n process.nextTick(emitDrain, this)\n }\n } else {\n this.emit('drain')\n }\n }\n }\n\n this.on('newListener', function (name) {\n if (name === 'drain') {\n this._asyncDrainScheduled = false\n }\n })\n\n if (this._periodicFlush !== 0) {\n this._periodicFlushTimer = setInterval(() => this.flush(null), this._periodicFlush)\n this._periodicFlushTimer.unref()\n }\n}\n\n/**\n * Release the writingBuf after fs.write n bytes data\n * @param {string | Buffer} writingBuf - currently writing buffer, usually be instance._writingBuf.\n * @param {number} len - currently buffer length, usually be instance._len.\n * @param {number} n - number of bytes fs already written\n * @returns {{writingBuf: string | Buffer, len: number}} released writingBuf and length\n */\nfunction releaseWritingBuf (writingBuf, len, n) {\n // if Buffer.byteLength is equal to n, that means writingBuf contains no multi-byte character\n if (typeof writingBuf === 'string' && Buffer.byteLength(writingBuf) !== n) {\n // Since the fs.write callback parameter `n` means how many bytes the passed of string\n // We calculate the original string length for avoiding the multi-byte character issue\n n = Buffer.from(writingBuf).subarray(0, n).toString().length\n }\n len = Math.max(len - n, 0)\n writingBuf = writingBuf.slice(n)\n return { writingBuf, len }\n}\n\nfunction emitDrain (sonic) {\n const hasListeners = sonic.listenerCount('drain') > 0\n if (!hasListeners) return\n sonic._asyncDrainScheduled = false\n sonic.emit('drain')\n}\n\ninherits(SonicBoom, EventEmitter)\n\nfunction mergeBuf (bufs, len) {\n if (bufs.length === 0) {\n return kEmptyBuffer\n }\n\n if (bufs.length === 1) {\n return bufs[0]\n }\n\n return Buffer.concat(bufs, len)\n}\n\nfunction write (data) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n const len = this._len + data.length\n const bufs = this._bufs\n\n if (this.maxLength && len > this.maxLength) {\n this.emit('drop', data)\n return this._len < this._hwm\n }\n\n if (\n bufs.length === 0 ||\n bufs[bufs.length - 1].length + data.length > this.maxWrite\n ) {\n bufs.push('' + data)\n } else {\n bufs[bufs.length - 1] += data\n }\n\n this._len = len\n\n if (!this._writing && this._len >= this.minLength) {\n this._actualWrite()\n }\n\n return this._len < this._hwm\n}\n\nfunction writeBuffer (data) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n const len = this._len + data.length\n const bufs = this._bufs\n const lens = this._lens\n\n if (this.maxLength && len > this.maxLength) {\n this.emit('drop', data)\n return this._len < this._hwm\n }\n\n if (\n bufs.length === 0 ||\n lens[lens.length - 1] + data.length > this.maxWrite\n ) {\n bufs.push([data])\n lens.push(data.length)\n } else {\n bufs[bufs.length - 1].push(data)\n lens[lens.length - 1] += data.length\n }\n\n this._len = len\n\n if (!this._writing && this._len >= this.minLength) {\n this._actualWrite()\n }\n\n return this._len < this._hwm\n}\n\nfunction callFlushCallbackOnDrain (cb) {\n this._flushPending = true\n const onDrain = () => {\n // only if _fsync is false to avoid double fsync\n if (!this._fsync) {\n try {\n fs.fsync(this.fd, (err) => {\n this._flushPending = false\n cb(err)\n })\n } catch (err) {\n cb(err)\n }\n } else {\n this._flushPending = false\n cb()\n }\n this.off('error', onError)\n }\n const onError = (err) => {\n this._flushPending = false\n cb(err)\n this.off('drain', onDrain)\n }\n\n this.once('drain', onDrain)\n this.once('error', onError)\n}\n\nfunction flush (cb) {\n if (cb != null && typeof cb !== 'function') {\n throw new Error('flush cb must be a function')\n }\n\n if (this.destroyed) {\n const error = new Error('SonicBoom destroyed')\n if (cb) {\n cb(error)\n return\n }\n\n throw error\n }\n\n if (this.minLength <= 0) {\n cb?.()\n return\n }\n\n if (cb) {\n callFlushCallbackOnDrain.call(this, cb)\n }\n\n if (this._writing) {\n return\n }\n\n if (this._bufs.length === 0) {\n this._bufs.push('')\n }\n\n this._actualWrite()\n}\n\nfunction flushBuffer (cb) {\n if (cb != null && typeof cb !== 'function') {\n throw new Error('flush cb must be a function')\n }\n\n if (this.destroyed) {\n const error = new Error('SonicBoom destroyed')\n if (cb) {\n cb(error)\n return\n }\n\n throw error\n }\n\n if (this.minLength <= 0) {\n cb?.()\n return\n }\n\n if (cb) {\n callFlushCallbackOnDrain.call(this, cb)\n }\n\n if (this._writing) {\n return\n }\n\n if (this._bufs.length === 0) {\n this._bufs.push([])\n this._lens.push(0)\n }\n\n this._actualWrite()\n}\n\nSonicBoom.prototype.reopen = function (file) {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._opening) {\n this.once('ready', () => {\n this.reopen(file)\n })\n return\n }\n\n if (this._ending) {\n return\n }\n\n if (!this.file) {\n throw new Error('Unable to reopen a file descriptor, you must pass a file to SonicBoom')\n }\n\n if (file) {\n this.file = file\n }\n this._reopening = true\n\n if (this._writing) {\n return\n }\n\n const fd = this.fd\n this.once('ready', () => {\n if (fd !== this.fd) {\n fs.close(fd, (err) => {\n if (err) {\n return this.emit('error', err)\n }\n })\n }\n })\n\n openFile(this.file, this)\n}\n\nSonicBoom.prototype.end = function () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this._opening) {\n this.once('ready', () => {\n this.end()\n })\n return\n }\n\n if (this._ending) {\n return\n }\n\n this._ending = true\n\n if (this._writing) {\n return\n }\n\n if (this._len > 0 && this.fd >= 0) {\n this._actualWrite()\n } else {\n actualClose(this)\n }\n}\n\nfunction flushSync () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this.fd < 0) {\n throw new Error('sonic boom is not ready yet')\n }\n\n if (!this._writing && this._writingBuf.length > 0) {\n this._bufs.unshift(this._writingBuf)\n this._writingBuf = ''\n }\n\n let buf = ''\n while (this._bufs.length || buf) {\n if (buf.length <= 0) {\n buf = this._bufs[0]\n }\n try {\n const n = fs.writeSync(this.fd, buf, 'utf8')\n const releasedBufObj = releaseWritingBuf(buf, this._len, n)\n buf = releasedBufObj.writingBuf\n this._len = releasedBufObj.len\n if (buf.length <= 0) {\n this._bufs.shift()\n }\n } catch (err) {\n const shouldRetry = err.code === 'EAGAIN' || err.code === 'EBUSY'\n if (shouldRetry && !this.retryEAGAIN(err, buf.length, this._len - buf.length)) {\n throw err\n }\n\n sleep(BUSY_WRITE_TIMEOUT)\n }\n }\n\n try {\n fs.fsyncSync(this.fd)\n } catch {\n // Skip the error. The fd might not support fsync.\n }\n}\n\nfunction flushBufferSync () {\n if (this.destroyed) {\n throw new Error('SonicBoom destroyed')\n }\n\n if (this.fd < 0) {\n throw new Error('sonic boom is not ready yet')\n }\n\n if (!this._writing && this._writingBuf.length > 0) {\n this._bufs.unshift([this._writingBuf])\n this._writingBuf = kEmptyBuffer\n }\n\n let buf = kEmptyBuffer\n while (this._bufs.length || buf.length) {\n if (buf.length <= 0) {\n buf = mergeBuf(this._bufs[0], this._lens[0])\n }\n try {\n const n = fs.writeSync(this.fd, buf)\n buf = buf.subarray(n)\n this._len = Math.max(this._len - n, 0)\n if (buf.length <= 0) {\n this._bufs.shift()\n this._lens.shift()\n }\n } catch (err) {\n const shouldRetry = err.code === 'EAGAIN' || err.code === 'EBUSY'\n if (shouldRetry && !this.retryEAGAIN(err, buf.length, this._len - buf.length)) {\n throw err\n }\n\n sleep(BUSY_WRITE_TIMEOUT)\n }\n }\n}\n\nSonicBoom.prototype.destroy = function () {\n if (this.destroyed) {\n return\n }\n actualClose(this)\n}\n\nfunction actualWrite () {\n const release = this.release\n this._writing = true\n this._writingBuf = this._writingBuf || this._bufs.shift() || ''\n\n if (this.sync) {\n try {\n const written = fs.writeSync(this.fd, this._writingBuf, 'utf8')\n release(null, written)\n } catch (err) {\n release(err)\n }\n } else {\n fs.write(this.fd, this._writingBuf, 'utf8', release)\n }\n}\n\nfunction actualWriteBuffer () {\n const release = this.release\n this._writing = true\n this._writingBuf = this._writingBuf.length ? this._writingBuf : mergeBuf(this._bufs.shift(), this._lens.shift())\n\n if (this.sync) {\n try {\n const written = fs.writeSync(this.fd, this._writingBuf)\n release(null, written)\n } catch (err) {\n release(err)\n }\n } else {\n // fs.write will need to copy string to buffer anyway so\n // we do it here to avoid the overhead of calculating the buffer size\n // in releaseWritingBuf.\n if (kCopyBuffer) {\n this._writingBuf = Buffer.from(this._writingBuf)\n }\n fs.write(this.fd, this._writingBuf, release)\n }\n}\n\nfunction actualClose (sonic) {\n if (sonic.fd === -1) {\n sonic.once('ready', actualClose.bind(null, sonic))\n return\n }\n\n if (sonic._periodicFlushTimer !== undefined) {\n clearInterval(sonic._periodicFlushTimer)\n }\n\n sonic.destroyed = true\n sonic._bufs = []\n sonic._lens = []\n\n assert(typeof sonic.fd === 'number', `sonic.fd must be a number, got ${typeof sonic.fd}`)\n try {\n fs.fsync(sonic.fd, closeWrapped)\n } catch {\n }\n\n function closeWrapped () {\n // We skip errors in fsync\n\n if (sonic.fd !== 1 && sonic.fd !== 2) {\n fs.close(sonic.fd, done)\n } else {\n done()\n }\n }\n\n function done (err) {\n if (err) {\n sonic.emit('error', err)\n return\n }\n\n if (sonic._ending && !sonic._writing) {\n sonic.emit('finish')\n }\n sonic.emit('close')\n }\n}\n\n/**\n * These export configurations enable JS and TS developers\n * to consumer SonicBoom in whatever way best suits their needs.\n * Some examples of supported import syntax includes:\n * - `const SonicBoom = require('SonicBoom')`\n * - `const { SonicBoom } = require('SonicBoom')`\n * - `import * as SonicBoom from 'SonicBoom'`\n * - `import { SonicBoom } from 'SonicBoom'`\n * - `import SonicBoom from 'SonicBoom'`\n */\nSonicBoom.SonicBoom = SonicBoom\nSonicBoom.default = SonicBoom\nmodule.exports = SonicBoom\n", "'use strict'\n\nconst refs = {\n exit: [],\n beforeExit: []\n}\nconst functions = {\n exit: onExit,\n beforeExit: onBeforeExit\n}\n\nlet registry\n\nfunction ensureRegistry () {\n if (registry === undefined) {\n registry = new FinalizationRegistry(clear)\n }\n}\n\nfunction install (event) {\n if (refs[event].length > 0) {\n return\n }\n\n process.on(event, functions[event])\n}\n\nfunction uninstall (event) {\n if (refs[event].length > 0) {\n return\n }\n process.removeListener(event, functions[event])\n if (refs.exit.length === 0 && refs.beforeExit.length === 0) {\n registry = undefined\n }\n}\n\nfunction onExit () {\n callRefs('exit')\n}\n\nfunction onBeforeExit () {\n callRefs('beforeExit')\n}\n\nfunction callRefs (event) {\n for (const ref of refs[event]) {\n const obj = ref.deref()\n const fn = ref.fn\n\n // This should always happen, however GC is\n // undeterministic so it might not happen.\n /* istanbul ignore else */\n if (obj !== undefined) {\n fn(obj, event)\n }\n }\n refs[event] = []\n}\n\nfunction clear (ref) {\n for (const event of ['exit', 'beforeExit']) {\n const index = refs[event].indexOf(ref)\n refs[event].splice(index, index + 1)\n uninstall(event)\n }\n}\n\nfunction _register (event, obj, fn) {\n if (obj === undefined) {\n throw new Error('the object can\\'t be undefined')\n }\n install(event)\n const ref = new WeakRef(obj)\n ref.fn = fn\n\n ensureRegistry()\n registry.register(obj, ref)\n refs[event].push(ref)\n}\n\nfunction register (obj, fn) {\n _register('exit', obj, fn)\n}\n\nfunction registerBeforeExit (obj, fn) {\n _register('beforeExit', obj, fn)\n}\n\nfunction unregister (obj) {\n if (registry === undefined) {\n return\n }\n registry.unregister(obj)\n for (const event of ['exit', 'beforeExit']) {\n refs[event] = refs[event].filter((ref) => {\n const _obj = ref.deref()\n return _obj && _obj !== obj\n })\n uninstall(event)\n }\n}\n\nmodule.exports = {\n register,\n registerBeforeExit,\n unregister\n}\n", "{\n \"name\": \"thread-stream\",\n \"version\": \"4.0.0\",\n \"description\": \"A streaming way to send data to a Node.js Worker Thread\",\n \"main\": \"index.js\",\n \"types\": \"index.d.ts\",\n \"engines\": {\n \"node\": \">=20\"\n },\n \"dependencies\": {\n \"real-require\": \"^0.2.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^22.0.0\",\n \"@yao-pkg/pkg\": \"^6.0.0\",\n \"borp\": \"^0.21.0\",\n \"desm\": \"^1.3.0\",\n \"eslint\": \"^9.39.1\",\n \"fastbench\": \"^1.0.1\",\n \"husky\": \"^9.0.6\",\n \"neostandard\": \"^0.12.2\",\n \"pino-elasticsearch\": \"^8.0.0\",\n \"sonic-boom\": \"^4.0.1\",\n \"ts-node\": \"^10.8.0\",\n \"typescript\": \"~5.7.3\"\n },\n \"scripts\": {\n \"build\": \"tsc --noEmit\",\n \"lint\": \"eslint\",\n \"test\": \"npm run lint && npm run build && npm run transpile && borp --pattern 'test/*.test.{js,mjs}'\",\n \"test:ci\": \"npm run lint && npm run transpile && borp --pattern 'test/*.test.{js,mjs}'\",\n \"test:yarn\": \"npm run transpile && borp --pattern 'test/*.test.js'\",\n \"transpile\": \"sh ./test/ts/transpile.sh\",\n \"prepare\": \"husky install\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/mcollina/thread-stream.git\"\n },\n \"keywords\": [\n \"worker\",\n \"thread\",\n \"threads\",\n \"stream\"\n ],\n \"author\": \"Matteo Collina <hello@matteocollina.com>\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/mcollina/thread-stream/issues\"\n },\n \"homepage\": \"https://github.com/mcollina/thread-stream#readme\"\n}\n", "'use strict'\n\n// Maximum wait time for a single waitAsync call\n// Used as a fallback poll interval in case notifications are missed\n// Keep this low enough for good throughput but high enough to not busy-loop\nconst WAIT_MS = 10000\n\nfunction wait (state, index, expected, timeout, done) {\n const max = timeout === Infinity ? Infinity : Date.now() + timeout\n\n const check = () => {\n const current = Atomics.load(state, index)\n if (current === expected) {\n done(null, 'ok')\n return\n }\n\n if (max !== Infinity && Date.now() > max) {\n done(null, 'timed-out')\n return\n }\n\n // Wait for any change from current value\n const remaining = max === Infinity ? WAIT_MS : Math.min(WAIT_MS, Math.max(1, max - Date.now()))\n const result = Atomics.waitAsync(state, index, current, remaining)\n\n if (result.async) {\n result.value.then(check)\n } else {\n // Value already changed (not-equal) - recheck on next tick\n setImmediate(check)\n }\n }\n\n check()\n}\n\nfunction waitDiff (state, index, expected, timeout, done) {\n const max = timeout === Infinity ? Infinity : Date.now() + timeout\n\n const check = () => {\n const current = Atomics.load(state, index)\n if (current !== expected) {\n done(null, 'ok')\n return\n }\n\n if (max !== Infinity && Date.now() > max) {\n done(null, 'timed-out')\n return\n }\n\n // Wait for value to change from expected\n const remaining = max === Infinity ? WAIT_MS : Math.min(WAIT_MS, Math.max(1, max - Date.now()))\n const result = Atomics.waitAsync(state, index, expected, remaining)\n\n if (result.async) {\n result.value.then(check)\n } else {\n // Value already changed (not-equal) - recheck on next tick\n setImmediate(check)\n }\n }\n\n check()\n}\n\nmodule.exports = { wait, waitDiff }\n", "'use strict'\n\nconst WRITE_INDEX = 4\nconst READ_INDEX = 8\n\nmodule.exports = {\n WRITE_INDEX,\n READ_INDEX\n}\n", "'use strict'\n\nconst { version } = require('./package.json')\nconst { EventEmitter } = require('events')\nconst { Worker } = require('worker_threads')\nconst { join } = require('path')\nconst { pathToFileURL } = require('url')\nconst { wait } = require('./lib/wait')\nconst {\n WRITE_INDEX,\n READ_INDEX\n} = require('./lib/indexes')\nconst buffer = require('buffer')\nconst assert = require('assert')\n\nconst kImpl = Symbol('kImpl')\n\n// V8 limit for string size\nconst MAX_STRING = buffer.constants.MAX_STRING_LENGTH\n\nclass FakeWeakRef {\n constructor (value) {\n this._value = value\n }\n\n deref () {\n return this._value\n }\n}\n\nclass FakeFinalizationRegistry {\n register () {}\n\n unregister () {}\n}\n\n// Currently using FinalizationRegistry with code coverage breaks the world\n// Ref: https://github.com/nodejs/node/issues/49344\nconst FinalizationRegistry = process.env.NODE_V8_COVERAGE ? FakeFinalizationRegistry : global.FinalizationRegistry || FakeFinalizationRegistry\nconst WeakRef = process.env.NODE_V8_COVERAGE ? FakeWeakRef : global.WeakRef || FakeWeakRef\n\nconst registry = new FinalizationRegistry((worker) => {\n if (worker.exited) {\n return\n }\n worker.terminate()\n})\n\nfunction createWorker (stream, opts) {\n const { filename, workerData } = opts\n\n const bundlerOverrides = '__bundlerPathsOverrides' in globalThis ? globalThis.__bundlerPathsOverrides : {}\n const toExecute = bundlerOverrides['thread-stream-worker'] || join(__dirname, 'lib', 'worker.js')\n\n const worker = new Worker(toExecute, {\n ...opts.workerOpts,\n trackUnmanagedFds: false,\n workerData: {\n filename: filename.indexOf('file://') === 0\n ? filename\n : pathToFileURL(filename).href,\n dataBuf: stream[kImpl].dataBuf,\n stateBuf: stream[kImpl].stateBuf,\n workerData: {\n $context: {\n threadStreamVersion: version\n },\n ...workerData\n }\n }\n })\n\n // We keep a strong reference for now,\n // we need to start writing first\n worker.stream = new FakeWeakRef(stream)\n\n worker.on('message', onWorkerMessage)\n worker.on('exit', onWorkerExit)\n registry.register(stream, worker)\n\n return worker\n}\n\nfunction drain (stream) {\n assert(!stream[kImpl].sync)\n if (stream[kImpl].needDrain) {\n stream[kImpl].needDrain = false\n stream.emit('drain')\n }\n}\n\nfunction nextFlush (stream) {\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n let leftover = stream[kImpl].data.length - writeIndex\n\n if (leftover > 0) {\n if (stream[kImpl].buf.length === 0) {\n stream[kImpl].flushing = false\n\n if (stream[kImpl].ending) {\n end(stream)\n } else if (stream[kImpl].needDrain) {\n process.nextTick(drain, stream)\n }\n\n return\n }\n\n let toWrite = stream[kImpl].buf.slice(0, leftover)\n let toWriteBytes = Buffer.byteLength(toWrite)\n if (toWriteBytes <= leftover) {\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n // process._rawDebug('writing ' + toWrite.length)\n write(stream, toWrite, nextFlush.bind(null, stream))\n } else {\n // multi-byte utf-8\n stream.flush(() => {\n // err is already handled in flush()\n if (stream.destroyed) {\n return\n }\n\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n Atomics.notify(stream[kImpl].state, READ_INDEX)\n\n // Find a toWrite length that fits the buffer\n // it must exists as the buffer is at least 4 bytes length\n // and the max utf-8 length for a char is 4 bytes.\n while (toWriteBytes > stream[kImpl].data.length) {\n leftover = leftover / 2\n toWrite = stream[kImpl].buf.slice(0, leftover)\n toWriteBytes = Buffer.byteLength(toWrite)\n }\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n write(stream, toWrite, nextFlush.bind(null, stream))\n })\n }\n } else if (leftover === 0) {\n if (writeIndex === 0 && stream[kImpl].buf.length === 0) {\n // we had a flushSync in the meanwhile\n return\n }\n stream.flush(() => {\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n Atomics.notify(stream[kImpl].state, READ_INDEX)\n nextFlush(stream)\n })\n } else {\n // This should never happen\n destroy(stream, new Error('overwritten'))\n }\n}\n\nfunction onWorkerMessage (msg) {\n const stream = this.stream.deref()\n if (stream === undefined) {\n this.exited = true\n // Terminate the worker.\n this.terminate()\n return\n }\n\n switch (msg.code) {\n case 'READY':\n // Replace the FakeWeakRef with a\n // proper one.\n this.stream = new WeakRef(stream)\n\n stream.flush(() => {\n stream[kImpl].ready = true\n stream.emit('ready')\n })\n break\n case 'ERROR':\n destroy(stream, msg.err)\n break\n case 'EVENT':\n if (Array.isArray(msg.args)) {\n stream.emit(msg.name, ...msg.args)\n } else {\n stream.emit(msg.name, msg.args)\n }\n break\n case 'WARNING':\n process.emitWarning(msg.err)\n break\n default:\n destroy(stream, new Error('this should not happen: ' + msg.code))\n }\n}\n\nfunction onWorkerExit (code) {\n const stream = this.stream.deref()\n if (stream === undefined) {\n // Nothing to do, the worker already exit\n return\n }\n registry.unregister(stream)\n stream.worker.exited = true\n stream.worker.off('exit', onWorkerExit)\n destroy(stream, code !== 0 ? new Error('the worker thread exited') : null)\n}\n\nclass ThreadStream extends EventEmitter {\n constructor (opts = {}) {\n super()\n\n if (opts.bufferSize < 4) {\n throw new Error('bufferSize must at least fit a 4-byte utf-8 char')\n }\n\n this[kImpl] = {}\n this[kImpl].stateBuf = new SharedArrayBuffer(128)\n this[kImpl].state = new Int32Array(this[kImpl].stateBuf)\n this[kImpl].dataBuf = new SharedArrayBuffer(opts.bufferSize || 4 * 1024 * 1024)\n this[kImpl].data = Buffer.from(this[kImpl].dataBuf)\n this[kImpl].sync = opts.sync || false\n this[kImpl].ending = false\n this[kImpl].ended = false\n this[kImpl].needDrain = false\n this[kImpl].destroyed = false\n this[kImpl].flushing = false\n this[kImpl].ready = false\n this[kImpl].finished = false\n this[kImpl].errored = null\n this[kImpl].closed = false\n this[kImpl].buf = ''\n\n // TODO (fix): Make private?\n this.worker = createWorker(this, opts) // TODO (fix): make private\n this.on('message', (message, transferList) => {\n this.worker.postMessage(message, transferList)\n })\n }\n\n write (data) {\n if (this[kImpl].destroyed) {\n error(this, new Error('the worker has exited'))\n return false\n }\n\n if (this[kImpl].ending) {\n error(this, new Error('the worker is ending'))\n return false\n }\n\n if (this[kImpl].flushing && this[kImpl].buf.length + data.length >= MAX_STRING) {\n try {\n writeSync(this)\n this[kImpl].flushing = true\n } catch (err) {\n destroy(this, err)\n return false\n }\n }\n\n this[kImpl].buf += data\n\n if (this[kImpl].sync) {\n try {\n writeSync(this)\n return true\n } catch (err) {\n destroy(this, err)\n return false\n }\n }\n\n if (!this[kImpl].flushing) {\n this[kImpl].flushing = true\n setImmediate(nextFlush, this)\n }\n\n this[kImpl].needDrain = this[kImpl].data.length - this[kImpl].buf.length - Atomics.load(this[kImpl].state, WRITE_INDEX) <= 0\n return !this[kImpl].needDrain\n }\n\n end () {\n if (this[kImpl].destroyed) {\n return\n }\n\n this[kImpl].ending = true\n end(this)\n }\n\n flush (cb) {\n if (this[kImpl].destroyed) {\n if (typeof cb === 'function') {\n process.nextTick(cb, new Error('the worker has exited'))\n }\n return\n }\n\n // TODO write all .buf\n const writeIndex = Atomics.load(this[kImpl].state, WRITE_INDEX)\n // process._rawDebug(`(flush) readIndex (${Atomics.load(this.state, READ_INDEX)}) writeIndex (${Atomics.load(this.state, WRITE_INDEX)})`)\n wait(this[kImpl].state, READ_INDEX, writeIndex, Infinity, (err, res) => {\n if (err) {\n destroy(this, err)\n process.nextTick(cb, err)\n return\n }\n if (res === 'not-equal') {\n // TODO handle deadlock\n this.flush(cb)\n return\n }\n process.nextTick(cb)\n })\n }\n\n flushSync () {\n if (this[kImpl].destroyed) {\n return\n }\n\n writeSync(this)\n flushSync(this)\n }\n\n unref () {\n this.worker.unref()\n }\n\n ref () {\n this.worker.ref()\n }\n\n get ready () {\n return this[kImpl].ready\n }\n\n get destroyed () {\n return this[kImpl].destroyed\n }\n\n get closed () {\n return this[kImpl].closed\n }\n\n get writable () {\n return !this[kImpl].destroyed && !this[kImpl].ending\n }\n\n get writableEnded () {\n return this[kImpl].ending\n }\n\n get writableFinished () {\n return this[kImpl].finished\n }\n\n get writableNeedDrain () {\n return this[kImpl].needDrain\n }\n\n get writableObjectMode () {\n return false\n }\n\n get writableErrored () {\n return this[kImpl].errored\n }\n}\n\nfunction error (stream, err) {\n setImmediate(() => {\n stream.emit('error', err)\n })\n}\n\nfunction destroy (stream, err) {\n if (stream[kImpl].destroyed) {\n return\n }\n stream[kImpl].destroyed = true\n\n if (err) {\n stream[kImpl].errored = err\n error(stream, err)\n }\n\n if (!stream.worker.exited) {\n stream.worker.terminate()\n .catch(() => {})\n .then(() => {\n stream[kImpl].closed = true\n stream.emit('close')\n })\n } else {\n setImmediate(() => {\n stream[kImpl].closed = true\n stream.emit('close')\n })\n }\n}\n\nfunction write (stream, data, cb) {\n // data is smaller than the shared buffer length\n const current = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n const length = Buffer.byteLength(data)\n stream[kImpl].data.write(data, current)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, current + length)\n Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n cb()\n return true\n}\n\nfunction end (stream) {\n if (stream[kImpl].ended || !stream[kImpl].ending || stream[kImpl].flushing) {\n return\n }\n stream[kImpl].ended = true\n\n try {\n stream.flushSync()\n\n let readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n // process._rawDebug('writing index')\n Atomics.store(stream[kImpl].state, WRITE_INDEX, -1)\n // process._rawDebug(`(end) readIndex (${Atomics.load(stream.state, READ_INDEX)}) writeIndex (${Atomics.load(stream.state, WRITE_INDEX)})`)\n Atomics.notify(stream[kImpl].state, WRITE_INDEX)\n\n // Wait for the process to complete\n let spins = 0\n while (readIndex !== -1) {\n // process._rawDebug(`read = ${read}`)\n Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n if (readIndex === -2) {\n destroy(stream, new Error('end() failed'))\n return\n }\n\n if (++spins === 10) {\n destroy(stream, new Error('end() took too long (10s)'))\n return\n }\n }\n\n process.nextTick(() => {\n stream[kImpl].finished = true\n stream.emit('finish')\n })\n } catch (err) {\n destroy(stream, err)\n }\n // process._rawDebug('end finished...')\n}\n\nfunction writeSync (stream) {\n const cb = () => {\n if (stream[kImpl].ending) {\n end(stream)\n } else if (stream[kImpl].needDrain) {\n process.nextTick(drain, stream)\n }\n }\n stream[kImpl].flushing = false\n\n while (stream[kImpl].buf.length !== 0) {\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n let leftover = stream[kImpl].data.length - writeIndex\n if (leftover === 0) {\n flushSync(stream)\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n Atomics.notify(stream[kImpl].state, READ_INDEX)\n continue\n } else if (leftover < 0) {\n // stream should never happen\n throw new Error('overwritten')\n }\n\n let toWrite = stream[kImpl].buf.slice(0, leftover)\n let toWriteBytes = Buffer.byteLength(toWrite)\n if (toWriteBytes <= leftover) {\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n // process._rawDebug('writing ' + toWrite.length)\n write(stream, toWrite, cb)\n } else {\n // multi-byte utf-8\n flushSync(stream)\n Atomics.store(stream[kImpl].state, READ_INDEX, 0)\n Atomics.store(stream[kImpl].state, WRITE_INDEX, 0)\n Atomics.notify(stream[kImpl].state, READ_INDEX)\n\n // Find a toWrite length that fits the buffer\n // it must exists as the buffer is at least 4 bytes length\n // and the max utf-8 length for a char is 4 bytes.\n while (toWriteBytes > stream[kImpl].buf.length) {\n leftover = leftover / 2\n toWrite = stream[kImpl].buf.slice(0, leftover)\n toWriteBytes = Buffer.byteLength(toWrite)\n }\n stream[kImpl].buf = stream[kImpl].buf.slice(leftover)\n write(stream, toWrite, cb)\n }\n }\n}\n\nfunction flushSync (stream) {\n if (stream[kImpl].flushing) {\n throw new Error('unable to flush while flushing')\n }\n\n // process._rawDebug('flushSync started')\n\n const writeIndex = Atomics.load(stream[kImpl].state, WRITE_INDEX)\n\n let spins = 0\n\n // TODO handle deadlock\n while (true) {\n const readIndex = Atomics.load(stream[kImpl].state, READ_INDEX)\n\n if (readIndex === -2) {\n throw Error('_flushSync failed')\n }\n\n // process._rawDebug(`(flushSync) readIndex (${readIndex}) writeIndex (${writeIndex})`)\n if (readIndex !== writeIndex) {\n // TODO stream timeouts for some reason.\n Atomics.wait(stream[kImpl].state, READ_INDEX, readIndex, 1000)\n } else {\n break\n }\n\n if (++spins === 10) {\n throw new Error('_flushSync took too long (10s)')\n }\n }\n // process._rawDebug('flushSync finished')\n}\n\nmodule.exports = ThreadStream\n", "'use strict'\n\nconst { createRequire } = require('module')\nconst getCallers = require('./caller')\nconst { join, isAbsolute, sep } = require('node:path')\nconst sleep = require('atomic-sleep')\nconst onExit = require('on-exit-leak-free')\nconst ThreadStream = require('thread-stream')\n\nfunction setupOnExit (stream) {\n // This is leak free, it does not leave event handlers\n onExit.register(stream, autoEnd)\n onExit.registerBeforeExit(stream, flush)\n\n stream.on('close', function () {\n onExit.unregister(stream)\n })\n}\n\n// Check if preload flags exist in execArgv.\n// During preload phase (require.main undefined), we pass empty execArgv to prevent infinite worker spawning.\n// We don't try to filter and pass other flags because many (like --stack-trace-limit, --tls-cipher-list)\n// aren't valid for worker threads and would cause ERR_WORKER_INVALID_EXEC_ARGV.\nfunction hasPreloadFlags () {\n const execArgv = process.execArgv\n for (let i = 0; i < execArgv.length; i++) {\n const arg = execArgv[i]\n if (arg === '--import' || arg === '--require' || arg === '-r') {\n return true\n }\n if (arg.startsWith('--import=') || arg.startsWith('--require=') || arg.startsWith('-r=')) {\n return true\n }\n }\n return false\n}\n\nfunction buildStream (filename, workerData, workerOpts, sync, name) {\n // When pino is loaded during a preload phase (via --import or --require),\n // pass empty execArgv to prevent infinite spawning. Each worker would\n // otherwise re-run the preload, creating another transport.\n if (!workerOpts.execArgv && hasPreloadFlags() && require.main === undefined) {\n workerOpts = {\n ...workerOpts,\n execArgv: []\n }\n }\n\n workerOpts = { ...workerOpts, name }\n\n const stream = new ThreadStream({\n filename,\n workerData,\n workerOpts,\n sync\n })\n\n stream.on('ready', onReady)\n stream.on('close', function () {\n process.removeListener('exit', onExit)\n })\n\n process.on('exit', onExit)\n\n function onReady () {\n process.removeListener('exit', onExit)\n stream.unref()\n\n if (workerOpts.autoEnd !== false) {\n setupOnExit(stream)\n }\n }\n\n function onExit () {\n /* istanbul ignore next */\n if (stream.closed) {\n return\n }\n stream.flushSync()\n // Apparently there is a very sporadic race condition\n // that in certain OS would prevent the messages to be flushed\n // because the thread might not have been created still.\n // Unfortunately we need to sleep(100) in this case.\n sleep(100)\n stream.end()\n }\n\n return stream\n}\n\nfunction autoEnd (stream) {\n stream.ref()\n stream.flushSync()\n stream.end()\n stream.once('close', function () {\n stream.unref()\n })\n}\n\nfunction flush (stream) {\n stream.flushSync()\n}\n\nfunction transport (fullOptions) {\n const { pipeline, targets, levels, dedupe, worker = {}, caller = getCallers(), sync = false } = fullOptions\n\n const options = {\n ...fullOptions.options\n }\n\n // Backwards compatibility\n const callers = typeof caller === 'string' ? [caller] : caller\n\n // This will be eventually modified by bundlers\n const bundlerOverrides = (typeof globalThis === 'object' &&\n Object.prototype.hasOwnProperty.call(globalThis, '__bundlerPathsOverrides') &&\n globalThis.__bundlerPathsOverrides &&\n typeof globalThis.__bundlerPathsOverrides === 'object')\n ? globalThis.__bundlerPathsOverrides\n : Object.create(null)\n\n let target = fullOptions.target\n\n if (target && targets) {\n throw new Error('only one of target or targets can be specified')\n }\n\n if (targets) {\n target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')\n options.targets = targets.filter(dest => dest.target).map((dest) => {\n return {\n ...dest,\n target: fixTarget(dest.target)\n }\n })\n options.pipelines = targets.filter(dest => dest.pipeline).map((dest) => {\n return dest.pipeline.map((t) => {\n return {\n ...t,\n level: dest.level, // duplicate the pipeline `level` property defined in the upper level\n target: fixTarget(t.target)\n }\n })\n })\n } else if (pipeline) {\n target = bundlerOverrides['pino-worker'] || join(__dirname, 'worker.js')\n options.pipelines = [pipeline.map((dest) => {\n return {\n ...dest,\n target: fixTarget(dest.target)\n }\n })]\n }\n\n if (levels) {\n options.levels = levels\n }\n\n if (dedupe) {\n options.dedupe = dedupe\n }\n\n options.pinoWillSendConfig = true\n\n const name = (targets || pipeline) ? 'pino.transport' : target\n return buildStream(fixTarget(target), options, worker, sync, name)\n\n function fixTarget (origin) {\n origin = bundlerOverrides[origin] || origin\n\n if (isAbsolute(origin) || origin.indexOf('file://') === 0) {\n return origin\n }\n\n if (origin === 'pino/file') {\n return join(__dirname, '..', 'file.js')\n }\n\n let fixTarget\n\n for (const filePath of callers) {\n try {\n const context = filePath === 'node:repl'\n ? process.cwd() + sep\n : filePath\n\n fixTarget = createRequire(context).resolve(origin)\n break\n } catch (err) {\n // Silent catch\n continue\n }\n }\n\n if (!fixTarget) {\n throw new Error(`unable to determine transport target for \"${origin}\"`)\n }\n\n return fixTarget\n }\n}\n\nmodule.exports = transport\n", "'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst diagChan = require('node:diagnostics_channel')\nconst format = require('quick-format-unescaped')\nconst { mapHttpRequest, mapHttpResponse } = require('pino-std-serializers')\nconst SonicBoom = require('sonic-boom')\nconst onExit = require('on-exit-leak-free')\nconst {\n lsCacheSym,\n chindingsSym,\n writeSym,\n serializersSym,\n formatOptsSym,\n endSym,\n stringifiersSym,\n stringifySym,\n stringifySafeSym,\n wildcardFirstSym,\n nestedKeySym,\n formattersSym,\n messageKeySym,\n errorKeySym,\n nestedKeyStrSym,\n msgPrefixSym\n} = require('./symbols')\nconst { isMainThread } = require('worker_threads')\nconst transport = require('./transport')\nconst [nodeMajor] = process.versions.node.split('.').map(v => Number(v))\n\nconst asJsonChan = diagChan.tracingChannel('pino_asJson')\n\n// JSON.stringify is faster in node 25+.\nconst asString = nodeMajor >= 25 ? str => JSON.stringify(str) : _asString\n\nfunction noop () {\n}\n\nfunction genLog (level, hook) {\n if (!hook) return LOG\n\n return function hookWrappedLog (...args) {\n hook.call(this, args, LOG, level)\n }\n\n function LOG (o, ...n) {\n if (typeof o === 'object') {\n let msg = o\n if (o !== null) {\n if (o.method && o.headers && o.socket) {\n o = mapHttpRequest(o)\n } else if (typeof o.setHeader === 'function') {\n o = mapHttpResponse(o)\n }\n }\n let formatParams\n if (msg === null && n.length === 0) {\n formatParams = [null]\n } else {\n msg = n.shift()\n formatParams = n\n }\n // We do not use a coercive check for `msg` as it is\n // measurably slower than the explicit checks.\n if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n msg = this[msgPrefixSym] + msg\n }\n this[writeSym](o, format(msg, formatParams, this[formatOptsSym]), level)\n } else {\n let msg = o === undefined ? n.shift() : o\n\n // We do not use a coercive check for `msg` as it is\n // measurably slower than the explicit checks.\n if (typeof this[msgPrefixSym] === 'string' && msg !== undefined && msg !== null) {\n msg = this[msgPrefixSym] + msg\n }\n this[writeSym](null, format(msg, n, this[formatOptsSym]), level)\n }\n }\n}\n\n// magically escape strings for json\n// relying on their charCodeAt\n// everything below 32 needs JSON.stringify()\n// 34 and 92 happens all the time, so we\n// have a fast case for them\nfunction _asString (str) {\n let result = ''\n let last = 0\n let found = false\n let point = 255\n const l = str.length\n if (l > 100) {\n return JSON.stringify(str)\n }\n for (var i = 0; i < l && point >= 32; i++) {\n point = str.charCodeAt(i)\n if (point === 34 || point === 92) {\n result += str.slice(last, i) + '\\\\'\n last = i\n found = true\n }\n }\n if (!found) {\n result = str\n } else {\n result += str.slice(last)\n }\n return point < 32 ? JSON.stringify(str) : '\"' + result + '\"'\n}\n\n/**\n * `asJson` wraps `_asJson` in order to facilitate generating diagnostics.\n *\n * @param {object} obj The merging object passed to the log method.\n * @param {string} msg The log message passed to the log method.\n * @param {number} num The log level number.\n * @param {number} time The log time in milliseconds.\n *\n * @returns {string}\n */\nfunction asJson (obj, msg, num, time) {\n if (asJsonChan.hasSubscribers === false) {\n return _asJson.call(this, obj, msg, num, time)\n }\n\n const store = { instance: this, arguments }\n return asJsonChan.traceSync(_asJson, store, this, obj, msg, num, time)\n}\n\n/**\n * `_asJson` parses all collected data and generates the finalized newline\n * delimited JSON string.\n *\n * @param {object} obj The merging object passed to the log method.\n * @param {string} msg The log message passed to the log method.\n * @param {number} num The log level number.\n * @param {number} time The log time in milliseconds.\n *\n * @returns {string} The finalized log string terminated with a newline.\n * @private\n */\nfunction _asJson (obj, msg, num, time) {\n const stringify = this[stringifySym]\n const stringifySafe = this[stringifySafeSym]\n const stringifiers = this[stringifiersSym]\n const end = this[endSym]\n const chindings = this[chindingsSym]\n const serializers = this[serializersSym]\n const formatters = this[formattersSym]\n const messageKey = this[messageKeySym]\n const errorKey = this[errorKeySym]\n let data = this[lsCacheSym][num] + time\n\n // we need the child bindings added to the output first so instance logged\n // objects can take precedence when JSON.parse-ing the resulting log line\n data = data + chindings\n\n let value\n if (formatters.log) {\n obj = formatters.log(obj)\n }\n const wildcardStringifier = stringifiers[wildcardFirstSym]\n let propStr = ''\n for (const key in obj) {\n value = obj[key]\n if (Object.prototype.hasOwnProperty.call(obj, key) && value !== undefined) {\n if (serializers[key]) {\n value = serializers[key](value)\n } else if (key === errorKey && serializers.err) {\n value = serializers.err(value)\n }\n\n const stringifier = stringifiers[key] || wildcardStringifier\n\n switch (typeof value) {\n case 'undefined':\n case 'function':\n continue\n case 'number':\n /* eslint no-fallthrough: \"off\" */\n if (Number.isFinite(value) === false) {\n value = null\n }\n // this case explicitly falls through to the next one\n case 'boolean':\n if (stringifier) value = stringifier(value)\n break\n case 'string':\n value = (stringifier || asString)(value)\n break\n default:\n value = (stringifier || stringify)(value, stringifySafe)\n }\n if (value === undefined) continue\n const strKey = asString(key)\n propStr += ',' + strKey + ':' + value\n }\n }\n\n let msgStr = ''\n if (msg !== undefined) {\n value = serializers[messageKey] ? serializers[messageKey](msg) : msg\n const stringifier = stringifiers[messageKey] || wildcardStringifier\n\n switch (typeof value) {\n case 'function':\n break\n case 'number':\n if (Number.isFinite(value) === false) {\n value = null\n }\n // this case explicitly falls through to the next one\n case 'boolean':\n if (stringifier) value = stringifier(value)\n msgStr = ',\"' + messageKey + '\":' + value\n break\n case 'string':\n value = (stringifier || asString)(value)\n msgStr = ',\"' + messageKey + '\":' + value\n break\n default:\n value = (stringifier || stringify)(value, stringifySafe)\n msgStr = ',\"' + messageKey + '\":' + value\n }\n }\n\n if (this[nestedKeySym] && propStr) {\n // place all the obj properties under the specified key\n // the nested key is already formatted from the constructor\n return data + this[nestedKeyStrSym] + propStr.slice(1) + '}' + msgStr + end\n } else {\n return data + propStr + msgStr + end\n }\n}\n\nfunction asChindings (instance, bindings) {\n let value\n let data = instance[chindingsSym]\n const stringify = instance[stringifySym]\n const stringifySafe = instance[stringifySafeSym]\n const stringifiers = instance[stringifiersSym]\n const wildcardStringifier = stringifiers[wildcardFirstSym]\n const serializers = instance[serializersSym]\n const formatter = instance[formattersSym].bindings\n bindings = formatter(bindings)\n\n for (const key in bindings) {\n value = bindings[key]\n const valid = (key.length < 5 || (key !== 'level' &&\n key !== 'serializers' &&\n key !== 'formatters' &&\n key !== 'customLevels')) &&\n bindings.hasOwnProperty(key) &&\n value !== undefined\n if (valid === true) {\n value = serializers[key] ? serializers[key](value) : value\n value = (stringifiers[key] || wildcardStringifier || stringify)(value, stringifySafe)\n if (value === undefined) continue\n data += ',\"' + key + '\":' + value\n }\n }\n return data\n}\n\nfunction hasBeenTampered (stream) {\n return stream.write !== stream.constructor.prototype.write\n}\n\nfunction buildSafeSonicBoom (opts) {\n const stream = new SonicBoom(opts)\n stream.on('error', filterBrokenPipe)\n // If we are sync: false, we must flush on exit\n if (!opts.sync && isMainThread) {\n onExit.register(stream, autoEnd)\n\n stream.on('close', function () {\n onExit.unregister(stream)\n })\n }\n return stream\n\n function filterBrokenPipe (err) {\n // Impossible to replicate across all operating systems\n /* istanbul ignore next */\n if (err.code === 'EPIPE') {\n // If we get EPIPE, we should stop logging here\n // however we have no control to the consumer of\n // SonicBoom, so we just overwrite the write method\n stream.write = noop\n stream.end = noop\n stream.flushSync = noop\n stream.destroy = noop\n return\n }\n stream.removeListener('error', filterBrokenPipe)\n stream.emit('error', err)\n }\n}\n\nfunction autoEnd (stream, eventName) {\n // This check is needed only on some platforms\n /* istanbul ignore next */\n if (stream.destroyed) {\n return\n }\n\n if (eventName === 'beforeExit') {\n // We still have an event loop, let's use it\n stream.flush()\n stream.on('drain', function () {\n stream.end()\n })\n } else {\n // For some reason istanbul is not detecting this, but it's there\n /* istanbul ignore next */\n // We do not have an event loop, so flush synchronously\n stream.flushSync()\n }\n}\n\nfunction createArgsNormalizer (defaultOptions) {\n return function normalizeArgs (instance, caller, opts = {}, stream) {\n // support stream as a string\n if (typeof opts === 'string') {\n stream = buildSafeSonicBoom({ dest: opts })\n opts = {}\n } else if (typeof stream === 'string') {\n if (opts && opts.transport) {\n throw Error('only one of option.transport or stream can be specified')\n }\n stream = buildSafeSonicBoom({ dest: stream })\n } else if (opts instanceof SonicBoom || opts.writable || opts._writableState) {\n stream = opts\n opts = {}\n } else if (opts.transport) {\n if (opts.transport instanceof SonicBoom || opts.transport.writable || opts.transport._writableState) {\n throw Error('option.transport do not allow stream, please pass to option directly. e.g. pino(transport)')\n }\n if (opts.transport.targets && opts.transport.targets.length && opts.formatters && typeof opts.formatters.level === 'function') {\n throw Error('option.transport.targets do not allow custom level formatters')\n }\n\n let customLevels\n if (opts.customLevels) {\n customLevels = opts.useOnlyCustomLevels ? opts.customLevels : Object.assign({}, opts.levels, opts.customLevels)\n }\n stream = transport({ caller, ...opts.transport, levels: customLevels })\n }\n opts = Object.assign({}, defaultOptions, opts)\n opts.serializers = Object.assign({}, defaultOptions.serializers, opts.serializers)\n opts.formatters = Object.assign({}, defaultOptions.formatters, opts.formatters)\n\n if (opts.prettyPrint) {\n throw new Error('prettyPrint option is no longer supported, see the pino-pretty package (https://github.com/pinojs/pino-pretty)')\n }\n\n const { enabled, onChild } = opts\n if (enabled === false) opts.level = 'silent'\n if (!onChild) opts.onChild = noop\n if (!stream) {\n if (!hasBeenTampered(process.stdout)) {\n // If process.stdout.fd is undefined, it means that we are running\n // in a worker thread. Let's assume we are logging to file descriptor 1.\n stream = buildSafeSonicBoom({ fd: process.stdout.fd || 1 })\n } else {\n stream = process.stdout\n }\n }\n return { opts, stream }\n }\n}\n\nfunction stringify (obj, stringifySafeFn) {\n try {\n return JSON.stringify(obj)\n } catch (_) {\n try {\n const stringify = stringifySafeFn || this[stringifySafeSym]\n return stringify(obj)\n } catch (_) {\n return '\"[unable to serialize, circular reference is too complex to analyze]\"'\n }\n }\n}\n\nfunction buildFormatters (level, bindings, log) {\n return {\n level,\n bindings,\n log\n }\n}\n\n/**\n * Convert a string integer file descriptor to a proper native integer\n * file descriptor.\n *\n * @param {string} destination The file descriptor string to attempt to convert.\n *\n * @returns {Number}\n */\nfunction normalizeDestFileDescriptor (destination) {\n const fd = Number(destination)\n if (typeof destination === 'string' && Number.isFinite(fd)) {\n return fd\n }\n // destination could be undefined if we are in a worker\n if (destination === undefined) {\n // This is stdout in UNIX systems\n return 1\n }\n return destination\n}\n\nmodule.exports = {\n noop,\n buildSafeSonicBoom,\n asChindings,\n asJson,\n genLog,\n createArgsNormalizer,\n stringify,\n buildFormatters,\n normalizeDestFileDescriptor\n}\n", "/**\n * Represents default log level values\n *\n * @enum {number}\n */\nconst DEFAULT_LEVELS = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60\n}\n\n/**\n * Represents sort order direction: `ascending` or `descending`\n *\n * @enum {string}\n */\nconst SORTING_ORDER = {\n ASC: 'ASC',\n DESC: 'DESC'\n}\n\nmodule.exports = {\n DEFAULT_LEVELS,\n SORTING_ORDER\n}\n", "'use strict'\n/* eslint no-prototype-builtins: 0 */\nconst {\n lsCacheSym,\n levelValSym,\n useOnlyCustomLevelsSym,\n streamSym,\n formattersSym,\n hooksSym,\n levelCompSym\n} = require('./symbols')\nconst { noop, genLog } = require('./tools')\nconst { DEFAULT_LEVELS, SORTING_ORDER } = require('./constants')\n\nconst levelMethods = {\n fatal: (hook) => {\n const logFatal = genLog(DEFAULT_LEVELS.fatal, hook)\n return function (...args) {\n const stream = this[streamSym]\n logFatal.call(this, ...args)\n if (typeof stream.flushSync === 'function') {\n try {\n stream.flushSync()\n } catch (e) {\n // https://github.com/pinojs/pino/pull/740#discussion_r346788313\n }\n }\n }\n },\n error: (hook) => genLog(DEFAULT_LEVELS.error, hook),\n warn: (hook) => genLog(DEFAULT_LEVELS.warn, hook),\n info: (hook) => genLog(DEFAULT_LEVELS.info, hook),\n debug: (hook) => genLog(DEFAULT_LEVELS.debug, hook),\n trace: (hook) => genLog(DEFAULT_LEVELS.trace, hook)\n}\n\nconst nums = Object.keys(DEFAULT_LEVELS).reduce((o, k) => {\n o[DEFAULT_LEVELS[k]] = k\n return o\n}, {})\n\nconst initialLsCache = Object.keys(nums).reduce((o, k) => {\n o[k] = '{\"level\":' + Number(k)\n return o\n}, {})\n\nfunction genLsCache (instance) {\n const formatter = instance[formattersSym].level\n const { labels } = instance.levels\n const cache = {}\n for (const label in labels) {\n const level = formatter(labels[label], Number(label))\n cache[label] = JSON.stringify(level).slice(0, -1)\n }\n instance[lsCacheSym] = cache\n return instance\n}\n\nfunction isStandardLevel (level, useOnlyCustomLevels) {\n if (useOnlyCustomLevels) {\n return false\n }\n\n switch (level) {\n case 'fatal':\n case 'error':\n case 'warn':\n case 'info':\n case 'debug':\n case 'trace':\n return true\n default:\n return false\n }\n}\n\nfunction setLevel (level) {\n const { labels, values } = this.levels\n if (typeof level === 'number') {\n if (labels[level] === undefined) throw Error('unknown level value' + level)\n level = labels[level]\n }\n if (values[level] === undefined) throw Error('unknown level ' + level)\n const preLevelVal = this[levelValSym]\n const levelVal = this[levelValSym] = values[level]\n const useOnlyCustomLevelsVal = this[useOnlyCustomLevelsSym]\n const levelComparison = this[levelCompSym]\n const hook = this[hooksSym].logMethod\n\n for (const key in values) {\n if (levelComparison(values[key], levelVal) === false) {\n this[key] = noop\n continue\n }\n this[key] = isStandardLevel(key, useOnlyCustomLevelsVal) ? levelMethods[key](hook) : genLog(values[key], hook)\n }\n\n this.emit(\n 'level-change',\n level,\n levelVal,\n labels[preLevelVal],\n preLevelVal,\n this\n )\n}\n\nfunction getLevel (level) {\n const { levels, levelVal } = this\n // protection against potential loss of Pino scope from serializers (edge case with circular refs - https://github.com/pinojs/pino/issues/833)\n return (levels && levels.labels) ? levels.labels[levelVal] : ''\n}\n\nfunction isLevelEnabled (logLevel) {\n const { values } = this.levels\n const logLevelVal = values[logLevel]\n return logLevelVal !== undefined && this[levelCompSym](logLevelVal, this[levelValSym])\n}\n\n/**\n * Determine if the given `current` level is enabled by comparing it\n * against the current threshold (`expected`).\n *\n * @param {SORTING_ORDER} direction comparison direction \"ASC\" or \"DESC\"\n * @param {number} current current log level number representation\n * @param {number} expected threshold value to compare with\n * @returns {boolean}\n */\nfunction compareLevel (direction, current, expected) {\n if (direction === SORTING_ORDER.DESC) {\n return current <= expected\n }\n\n return current >= expected\n}\n\n/**\n * Create a level comparison function based on `levelComparison`\n * it could a default function which compares levels either in \"ascending\" or \"descending\" order or custom comparison function\n *\n * @param {SORTING_ORDER | Function} levelComparison sort levels order direction or custom comparison function\n * @returns Function\n */\nfunction genLevelComparison (levelComparison) {\n if (typeof levelComparison === 'string') {\n return compareLevel.bind(null, levelComparison)\n }\n\n return levelComparison\n}\n\nfunction mappings (customLevels = null, useOnlyCustomLevels = false) {\n const customNums = customLevels\n /* eslint-disable */\n ? Object.keys(customLevels).reduce((o, k) => {\n o[customLevels[k]] = k\n return o\n }, {})\n : null\n /* eslint-enable */\n\n const labels = Object.assign(\n Object.create(Object.prototype, { Infinity: { value: 'silent' } }),\n useOnlyCustomLevels ? null : nums,\n customNums\n )\n const values = Object.assign(\n Object.create(Object.prototype, { silent: { value: Infinity } }),\n useOnlyCustomLevels ? null : DEFAULT_LEVELS,\n customLevels\n )\n return { labels, values }\n}\n\nfunction assertDefaultLevelFound (defaultLevel, customLevels, useOnlyCustomLevels) {\n if (typeof defaultLevel === 'number') {\n const values = [].concat(\n Object.keys(customLevels || {}).map(key => customLevels[key]),\n useOnlyCustomLevels ? [] : Object.keys(nums).map(level => +level),\n Infinity\n )\n if (!values.includes(defaultLevel)) {\n throw Error(`default level:${defaultLevel} must be included in custom levels`)\n }\n return\n }\n\n const labels = Object.assign(\n Object.create(Object.prototype, { silent: { value: Infinity } }),\n useOnlyCustomLevels ? null : DEFAULT_LEVELS,\n customLevels\n )\n if (!(defaultLevel in labels)) {\n throw Error(`default level:${defaultLevel} must be included in custom levels`)\n }\n}\n\nfunction assertNoLevelCollisions (levels, customLevels) {\n const { labels, values } = levels\n for (const k in customLevels) {\n if (k in values) {\n throw Error('levels cannot be overridden')\n }\n if (customLevels[k] in labels) {\n throw Error('pre-existing level values cannot be used for new levels')\n }\n }\n}\n\n/**\n * Validates whether `levelComparison` is correct\n *\n * @throws Error\n * @param {SORTING_ORDER | Function} levelComparison - value to validate\n * @returns\n */\nfunction assertLevelComparison (levelComparison) {\n if (typeof levelComparison === 'function') {\n return\n }\n\n if (typeof levelComparison === 'string' && Object.values(SORTING_ORDER).includes(levelComparison)) {\n return\n }\n\n throw new Error('Levels comparison should be one of \"ASC\", \"DESC\" or \"function\" type')\n}\n\nmodule.exports = {\n initialLsCache,\n genLsCache,\n levelMethods,\n getLevel,\n setLevel,\n isLevelEnabled,\n mappings,\n assertNoLevelCollisions,\n assertDefaultLevelFound,\n genLevelComparison,\n assertLevelComparison\n}\n", "'use strict'\n\nmodule.exports = { version: '10.3.0' }\n", "'use strict'\n\n/* eslint no-prototype-builtins: 0 */\n\nconst { EventEmitter } = require('node:events')\nconst {\n lsCacheSym,\n levelValSym,\n setLevelSym,\n getLevelSym,\n chindingsSym,\n mixinSym,\n asJsonSym,\n writeSym,\n mixinMergeStrategySym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n serializersSym,\n formattersSym,\n errorKeySym,\n messageKeySym,\n useOnlyCustomLevelsSym,\n needsMetadataGsym,\n redactFmtSym,\n stringifySym,\n formatOptsSym,\n stringifiersSym,\n msgPrefixSym,\n hooksSym\n} = require('./symbols')\nconst {\n getLevel,\n setLevel,\n isLevelEnabled,\n mappings,\n initialLsCache,\n genLsCache,\n assertNoLevelCollisions\n} = require('./levels')\nconst {\n asChindings,\n asJson,\n buildFormatters,\n stringify,\n noop\n} = require('./tools')\nconst {\n version\n} = require('./meta')\nconst redaction = require('./redaction')\n\n// note: use of class is satirical\n// https://github.com/pinojs/pino/pull/433#pullrequestreview-127703127\nconst constructor = class Pino {}\nconst prototype = {\n constructor,\n child,\n bindings,\n setBindings,\n flush,\n isLevelEnabled,\n version,\n get level () { return this[getLevelSym]() },\n set level (lvl) { this[setLevelSym](lvl) },\n get levelVal () { return this[levelValSym] },\n set levelVal (n) { throw Error('levelVal is read-only') },\n get msgPrefix () { return this[msgPrefixSym] },\n get [Symbol.toStringTag] () { return 'Pino' },\n [lsCacheSym]: initialLsCache,\n [writeSym]: write,\n [asJsonSym]: asJson,\n [getLevelSym]: getLevel,\n [setLevelSym]: setLevel\n}\n\nObject.setPrototypeOf(prototype, EventEmitter.prototype)\n\n// exporting and consuming the prototype object using factory pattern fixes scoping issues with getters when serializing\nmodule.exports = function () {\n return Object.create(prototype)\n}\n\nconst resetChildingsFormatter = bindings => bindings\nfunction child (bindings, options) {\n if (!bindings) {\n throw Error('missing bindings for child Pino')\n }\n const serializers = this[serializersSym]\n const formatters = this[formattersSym]\n const instance = Object.create(this)\n\n // If an `options` object was not supplied, we can improve\n // the performance of child creation by skipping\n // the checks for set options and simply return\n // a baseline instance.\n if (options == null) {\n if (instance[formattersSym].bindings !== resetChildingsFormatter) {\n instance[formattersSym] = buildFormatters(\n formatters.level,\n resetChildingsFormatter,\n formatters.log\n )\n }\n\n instance[chindingsSym] = asChindings(instance, bindings)\n\n if (this.onChild !== noop) {\n this.onChild(instance)\n }\n\n return instance\n }\n\n if (options.hasOwnProperty('serializers') === true) {\n instance[serializersSym] = Object.create(null)\n\n for (const k in serializers) {\n instance[serializersSym][k] = serializers[k]\n }\n const parentSymbols = Object.getOwnPropertySymbols(serializers)\n /* eslint no-var: off */\n for (var i = 0; i < parentSymbols.length; i++) {\n const ks = parentSymbols[i]\n instance[serializersSym][ks] = serializers[ks]\n }\n\n for (const bk in options.serializers) {\n instance[serializersSym][bk] = options.serializers[bk]\n }\n const bindingsSymbols = Object.getOwnPropertySymbols(options.serializers)\n for (var bi = 0; bi < bindingsSymbols.length; bi++) {\n const bks = bindingsSymbols[bi]\n instance[serializersSym][bks] = options.serializers[bks]\n }\n } else instance[serializersSym] = serializers\n if (options.hasOwnProperty('formatters')) {\n const { level, bindings: chindings, log } = options.formatters\n instance[formattersSym] = buildFormatters(\n level || formatters.level,\n chindings || resetChildingsFormatter,\n log || formatters.log\n )\n } else {\n instance[formattersSym] = buildFormatters(\n formatters.level,\n resetChildingsFormatter,\n formatters.log\n )\n }\n if (options.hasOwnProperty('customLevels') === true) {\n assertNoLevelCollisions(this.levels, options.customLevels)\n instance.levels = mappings(options.customLevels, instance[useOnlyCustomLevelsSym])\n genLsCache(instance)\n }\n\n // redact must place before asChindings and only replace if exist\n if ((typeof options.redact === 'object' && options.redact !== null) || Array.isArray(options.redact)) {\n instance.redact = options.redact // replace redact directly\n const stringifiers = redaction(instance.redact, stringify)\n const formatOpts = { stringify: stringifiers[redactFmtSym] }\n instance[stringifySym] = stringify\n instance[stringifiersSym] = stringifiers\n instance[formatOptsSym] = formatOpts\n }\n\n if (typeof options.msgPrefix === 'string') {\n instance[msgPrefixSym] = (this[msgPrefixSym] || '') + options.msgPrefix\n }\n\n instance[chindingsSym] = asChindings(instance, bindings)\n if ((options.level !== undefined && options.level !== this.level) || options.hasOwnProperty('customLevels')) {\n const childLevel = options.level || this.level\n instance[setLevelSym](childLevel)\n }\n this.onChild(instance)\n return instance\n}\n\nfunction bindings () {\n const chindings = this[chindingsSym]\n const chindingsJson = `{${chindings.substr(1)}}` // at least contains ,\"pid\":7068,\"hostname\":\"myMac\"\n const bindingsFromJson = JSON.parse(chindingsJson)\n delete bindingsFromJson.pid\n delete bindingsFromJson.hostname\n return bindingsFromJson\n}\n\nfunction setBindings (newBindings) {\n const chindings = asChindings(this, newBindings)\n this[chindingsSym] = chindings\n}\n\n/**\n * Default strategy for creating `mergeObject` from arguments and the result from `mixin()`.\n * Fields from `mergeObject` have higher priority in this strategy.\n *\n * @param {Object} mergeObject The object a user has supplied to the logging function.\n * @param {Object} mixinObject The result of the `mixin` method.\n * @return {Object}\n */\nfunction defaultMixinMergeStrategy (mergeObject, mixinObject) {\n return Object.assign(mixinObject, mergeObject)\n}\n\nfunction write (_obj, msg, num) {\n const t = this[timeSym]()\n const mixin = this[mixinSym]\n const errorKey = this[errorKeySym]\n const messageKey = this[messageKeySym]\n const mixinMergeStrategy = this[mixinMergeStrategySym] || defaultMixinMergeStrategy\n let obj\n const streamWriteHook = this[hooksSym].streamWrite\n\n if (_obj === undefined || _obj === null) {\n obj = {}\n } else if (_obj instanceof Error) {\n obj = { [errorKey]: _obj }\n if (msg === undefined) {\n msg = _obj.message\n }\n } else {\n obj = _obj\n if (msg === undefined && _obj[messageKey] === undefined && _obj[errorKey]) {\n msg = _obj[errorKey].message\n }\n }\n\n if (mixin) {\n obj = mixinMergeStrategy(obj, mixin(obj, num, this))\n }\n\n const s = this[asJsonSym](obj, msg, num, t)\n\n const stream = this[streamSym]\n if (stream[needsMetadataGsym] === true) {\n stream.lastLevel = num\n stream.lastObj = obj\n stream.lastMsg = msg\n stream.lastTime = t.slice(this[timeSliceIndexSym])\n stream.lastLogger = this // for child loggers\n }\n stream.write(streamWriteHook ? streamWriteHook(s) : s)\n}\n\nfunction flush (cb) {\n if (cb != null && typeof cb !== 'function') {\n throw Error('callback must be a function')\n }\n\n const stream = this[streamSym]\n\n if (typeof stream.flush === 'function') {\n stream.flush(cb || noop)\n } else if (cb) cb()\n}\n", "'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n // Some magic numbers that worked out fine while benchmarking with v8 8.0\n if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n return `\"${str}\"`\n }\n return JSON.stringify(str)\n}\n\nfunction sort (array, comparator) {\n // Insertion sort is very efficient for small input sizes, but it has a bad\n // worst case complexity. Thus, use native array sort for bigger values.\n if (array.length > 2e2 || comparator) {\n return array.sort(comparator)\n }\n for (let i = 1; i < array.length; i++) {\n const currentValue = array[i]\n let position = i\n while (position !== 0 && array[position - 1] > currentValue) {\n array[position] = array[position - 1]\n position--\n }\n array[position] = currentValue\n }\n return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(\n Object.getPrototypeOf(\n new Int8Array()\n )\n ),\n Symbol.toStringTag\n ).get\n\nfunction isTypedArrayWithEntries (value) {\n return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n if (array.length < maximumBreadth) {\n maximumBreadth = array.length\n }\n const whitespace = separator === ',' ? '' : ' '\n let res = `\"0\":${whitespace}${array[0]}`\n for (let i = 1; i < maximumBreadth; i++) {\n res += `${separator}\"${i}\":${whitespace}${array[i]}`\n }\n return res\n}\n\nfunction getCircularValueOption (options) {\n if (hasOwnProperty.call(options, 'circularValue')) {\n const circularValue = options.circularValue\n if (typeof circularValue === 'string') {\n return `\"${circularValue}\"`\n }\n if (circularValue == null) {\n return circularValue\n }\n if (circularValue === Error || circularValue === TypeError) {\n return {\n toString () {\n throw new TypeError('Converting circular structure to JSON')\n }\n }\n }\n throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n }\n return '\"[Circular]\"'\n}\n\nfunction getDeterministicOption (options) {\n let value\n if (hasOwnProperty.call(options, 'deterministic')) {\n value = options.deterministic\n if (typeof value !== 'boolean' && typeof value !== 'function') {\n throw new TypeError('The \"deterministic\" argument must be of type boolean or comparator function')\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getBooleanOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'boolean') {\n throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'number') {\n throw new TypeError(`The \"${key}\" argument must be of type number`)\n }\n if (!Number.isInteger(value)) {\n throw new TypeError(`The \"${key}\" argument must be an integer`)\n }\n if (value < 1) {\n throw new RangeError(`The \"${key}\" argument must be >= 1`)\n }\n }\n return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n if (number === 1) {\n return '1 item'\n }\n return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n const replacerSet = new Set()\n for (const value of replacerArray) {\n if (typeof value === 'string' || typeof value === 'number') {\n replacerSet.add(String(value))\n }\n }\n return replacerSet\n}\n\nfunction getStrictOption (options) {\n if (hasOwnProperty.call(options, 'strict')) {\n const value = options.strict\n if (typeof value !== 'boolean') {\n throw new TypeError('The \"strict\" argument must be of type boolean')\n }\n if (value) {\n return (value) => {\n let message = `Object can not safely be stringified. Received type ${typeof value}`\n if (typeof value !== 'function') message += ` (${value.toString()})`\n throw new Error(message)\n }\n }\n }\n}\n\nfunction configure (options) {\n options = { ...options }\n const fail = getStrictOption(options)\n if (fail) {\n if (options.bigint === undefined) {\n options.bigint = false\n }\n if (!('circularValue' in options)) {\n options.circularValue = Error\n }\n }\n const circularValue = getCircularValueOption(options)\n const bigint = getBooleanOption(options, 'bigint')\n const deterministic = getDeterministicOption(options)\n const comparator = typeof deterministic === 'function' ? deterministic : undefined\n const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n let value = parent[key]\n\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n value = replacer.call(parent, key, value)\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n let join = ','\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let whitespace = ''\n let separator = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (deterministic && !isTypedArrayWithEntries(value)) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n const originalIndentation = indentation\n let res = ''\n let join = ','\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n stack.push(value)\n let whitespace = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n let separator = ''\n for (const key of replacer) {\n const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyIndent (key, value, stack, spacer, indentation) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again.\n if (typeof value !== 'object') {\n return stringifyIndent(key, value, stack, spacer, indentation)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n indentation += spacer\n let res = `\\n${indentation}`\n const join = `,\\n${indentation}`\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n res += `\\n${originalIndentation}`\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n indentation += spacer\n const join = `,\\n${indentation}`\n let res = ''\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, join, maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = join\n }\n if (deterministic) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}: ${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (separator !== '') {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifySimple (key, value, stack) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again\n if (typeof value !== 'object') {\n return stringifySimple(key, value, stack)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n\n const hasLength = value.length !== undefined\n if (hasLength && Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n res += ','\n }\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (hasLength && isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, ',', maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = ','\n }\n if (deterministic) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifySimple(key, value[key], stack)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${tmp}`\n separator = ','\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringify (value, replacer, space) {\n if (arguments.length > 1) {\n let spacer = ''\n if (typeof space === 'number') {\n spacer = ' '.repeat(Math.min(space, 10))\n } else if (typeof space === 'string') {\n spacer = space.slice(0, 10)\n }\n if (replacer != null) {\n if (typeof replacer === 'function') {\n return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n }\n if (Array.isArray(replacer)) {\n return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n }\n }\n if (spacer.length !== 0) {\n return stringifyIndent('', value, [], spacer, '')\n }\n }\n return stringifySimple('', value, [])\n }\n\n return stringify\n}\n", "'use strict'\n\nconst metadata = Symbol.for('pino.metadata')\nconst { DEFAULT_LEVELS } = require('./constants')\n\nconst DEFAULT_INFO_LEVEL = DEFAULT_LEVELS.info\n\nfunction multistream (streamsArray, opts) {\n streamsArray = streamsArray || []\n opts = opts || { dedupe: false }\n\n const streamLevels = Object.create(DEFAULT_LEVELS)\n streamLevels.silent = Infinity\n if (opts.levels && typeof opts.levels === 'object') {\n Object.keys(opts.levels).forEach(i => {\n streamLevels[i] = opts.levels[i]\n })\n }\n\n const res = {\n write,\n add,\n remove,\n emit,\n flushSync,\n end,\n minLevel: 0,\n lastId: 0,\n streams: [],\n clone,\n [metadata]: true,\n streamLevels\n }\n\n if (Array.isArray(streamsArray)) {\n streamsArray.forEach(add, res)\n } else {\n add.call(res, streamsArray)\n }\n\n // clean this object up\n // or it will stay allocated forever\n // as it is closed on the following closures\n streamsArray = null\n\n return res\n\n // we can exit early because the streams are ordered by level\n function write (data) {\n let dest\n const level = this.lastLevel\n const { streams } = this\n // for handling situation when several streams has the same level\n let recordedLevel = 0\n let stream\n\n // if dedupe set to true we send logs to the stream with the highest level\n // therefore, we have to change sorting order\n for (let i = initLoopVar(streams.length, opts.dedupe); checkLoopVar(i, streams.length, opts.dedupe); i = adjustLoopVar(i, opts.dedupe)) {\n dest = streams[i]\n if (dest.level <= level) {\n if (recordedLevel !== 0 && recordedLevel !== dest.level) {\n break\n }\n stream = dest.stream\n if (stream[metadata]) {\n const { lastTime, lastMsg, lastObj, lastLogger } = this\n stream.lastLevel = level\n stream.lastTime = lastTime\n stream.lastMsg = lastMsg\n stream.lastObj = lastObj\n stream.lastLogger = lastLogger\n }\n stream.write(data)\n if (opts.dedupe) {\n recordedLevel = dest.level\n }\n } else if (!opts.dedupe) {\n break\n }\n }\n }\n\n function emit (...args) {\n for (const { stream } of this.streams) {\n if (typeof stream.emit === 'function') {\n stream.emit(...args)\n }\n }\n }\n\n function flushSync () {\n for (const { stream } of this.streams) {\n if (typeof stream.flushSync === 'function') {\n stream.flushSync()\n }\n }\n }\n\n function add (dest) {\n if (!dest) {\n return res\n }\n\n // Check that dest implements either StreamEntry or DestinationStream\n const isStream = typeof dest.write === 'function' || dest.stream\n const stream_ = dest.write ? dest : dest.stream\n // This is necessary to provide a meaningful error message, otherwise it throws somewhere inside write()\n if (!isStream) {\n throw Error('stream object needs to implement either StreamEntry or DestinationStream interface')\n }\n\n const { streams, streamLevels } = this\n\n let level\n if (typeof dest.levelVal === 'number') {\n level = dest.levelVal\n } else if (typeof dest.level === 'string') {\n level = streamLevels[dest.level]\n } else if (typeof dest.level === 'number') {\n level = dest.level\n } else {\n level = DEFAULT_INFO_LEVEL\n }\n\n const dest_ = {\n stream: stream_,\n level,\n levelVal: undefined,\n id: ++res.lastId\n }\n\n streams.unshift(dest_)\n streams.sort(compareByLevel)\n\n this.minLevel = streams[0].level\n\n return res\n }\n\n function remove (id) {\n const { streams } = this\n const index = streams.findIndex(s => s.id === id)\n\n if (index >= 0) {\n streams.splice(index, 1)\n streams.sort(compareByLevel)\n this.minLevel = streams.length > 0 ? streams[0].level : -1\n }\n\n return res\n }\n\n function end () {\n for (const { stream } of this.streams) {\n if (typeof stream.flushSync === 'function') {\n stream.flushSync()\n }\n stream.end()\n }\n }\n\n function clone (level) {\n const streams = new Array(this.streams.length)\n\n for (let i = 0; i < streams.length; i++) {\n streams[i] = {\n level,\n stream: this.streams[i].stream\n }\n }\n\n return {\n write,\n add,\n remove,\n minLevel: level,\n streams,\n clone,\n emit,\n flushSync,\n [metadata]: true\n }\n }\n}\n\nfunction compareByLevel (a, b) {\n return a.level - b.level\n}\n\nfunction initLoopVar (length, dedupe) {\n return dedupe ? length - 1 : 0\n}\n\nfunction adjustLoopVar (i, dedupe) {\n return dedupe ? i - 1 : i + 1\n}\n\nfunction checkLoopVar (i, length, dedupe) {\n return dedupe ? i >= 0 : i < length\n}\n\nmodule.exports = multistream\n", "'use strict'\n\nconst os = require('node:os')\nconst stdSerializers = require('pino-std-serializers')\nconst caller = require('./lib/caller')\nconst redaction = require('./lib/redaction')\nconst time = require('./lib/time')\nconst proto = require('./lib/proto')\nconst symbols = require('./lib/symbols')\nconst { configure } = require('safe-stable-stringify')\nconst { assertDefaultLevelFound, mappings, genLsCache, genLevelComparison, assertLevelComparison } = require('./lib/levels')\nconst { DEFAULT_LEVELS, SORTING_ORDER } = require('./lib/constants')\nconst {\n createArgsNormalizer,\n asChindings,\n buildSafeSonicBoom,\n buildFormatters,\n stringify,\n normalizeDestFileDescriptor,\n noop\n} = require('./lib/tools')\nconst { version } = require('./lib/meta')\nconst {\n chindingsSym,\n redactFmtSym,\n serializersSym,\n timeSym,\n timeSliceIndexSym,\n streamSym,\n stringifySym,\n stringifySafeSym,\n stringifiersSym,\n setLevelSym,\n endSym,\n formatOptsSym,\n messageKeySym,\n errorKeySym,\n nestedKeySym,\n mixinSym,\n levelCompSym,\n useOnlyCustomLevelsSym,\n formattersSym,\n hooksSym,\n nestedKeyStrSym,\n mixinMergeStrategySym,\n msgPrefixSym\n} = symbols\nconst { epochTime, nullTime } = time\nconst { pid } = process\nconst hostname = os.hostname()\nconst defaultErrorSerializer = stdSerializers.err\nconst defaultOptions = {\n level: 'info',\n levelComparison: SORTING_ORDER.ASC,\n levels: DEFAULT_LEVELS,\n messageKey: 'msg',\n errorKey: 'err',\n nestedKey: null,\n enabled: true,\n base: { pid, hostname },\n serializers: Object.assign(Object.create(null), {\n err: defaultErrorSerializer\n }),\n formatters: Object.assign(Object.create(null), {\n bindings (bindings) {\n return bindings\n },\n level (label, number) {\n return { level: number }\n }\n }),\n hooks: {\n logMethod: undefined,\n streamWrite: undefined\n },\n timestamp: epochTime,\n name: undefined,\n redact: null,\n customLevels: null,\n useOnlyCustomLevels: false,\n depthLimit: 5,\n edgeLimit: 100\n}\n\nconst normalize = createArgsNormalizer(defaultOptions)\n\nconst serializers = Object.assign(Object.create(null), stdSerializers)\n\nfunction pino (...args) {\n const instance = {}\n const { opts, stream } = normalize(instance, caller(), ...args)\n\n if (opts.level && typeof opts.level === 'string' && DEFAULT_LEVELS[opts.level.toLowerCase()] !== undefined) opts.level = opts.level.toLowerCase()\n\n const {\n redact,\n crlf,\n serializers,\n timestamp,\n messageKey,\n errorKey,\n nestedKey,\n base,\n name,\n level,\n customLevels,\n levelComparison,\n mixin,\n mixinMergeStrategy,\n useOnlyCustomLevels,\n formatters,\n hooks,\n depthLimit,\n edgeLimit,\n onChild,\n msgPrefix\n } = opts\n\n const stringifySafe = configure({\n maximumDepth: depthLimit,\n maximumBreadth: edgeLimit\n })\n\n const allFormatters = buildFormatters(\n formatters.level,\n formatters.bindings,\n formatters.log\n )\n\n const stringifyFn = stringify.bind({\n [stringifySafeSym]: stringifySafe\n })\n const stringifiers = redact ? redaction(redact, stringifyFn) : {}\n const formatOpts = redact\n ? { stringify: stringifiers[redactFmtSym] }\n : { stringify: stringifyFn }\n const end = '}' + (crlf ? '\\r\\n' : '\\n')\n const coreChindings = asChindings.bind(null, {\n [chindingsSym]: '',\n [serializersSym]: serializers,\n [stringifiersSym]: stringifiers,\n [stringifySym]: stringify,\n [stringifySafeSym]: stringifySafe,\n [formattersSym]: allFormatters\n })\n\n let chindings = ''\n if (base !== null) {\n if (name === undefined) {\n chindings = coreChindings(base)\n } else {\n chindings = coreChindings(Object.assign({}, base, { name }))\n }\n }\n\n const time = (timestamp instanceof Function)\n ? timestamp\n : (timestamp ? epochTime : nullTime)\n const timeSliceIndex = time().indexOf(':') + 1\n\n if (useOnlyCustomLevels && !customLevels) throw Error('customLevels is required if useOnlyCustomLevels is set true')\n if (mixin && typeof mixin !== 'function') throw Error(`Unknown mixin type \"${typeof mixin}\" - expected \"function\"`)\n if (msgPrefix && typeof msgPrefix !== 'string') throw Error(`Unknown msgPrefix type \"${typeof msgPrefix}\" - expected \"string\"`)\n\n assertDefaultLevelFound(level, customLevels, useOnlyCustomLevels)\n const levels = mappings(customLevels, useOnlyCustomLevels)\n\n if (typeof stream.emit === 'function') {\n stream.emit('message', { code: 'PINO_CONFIG', config: { levels, messageKey, errorKey } })\n }\n\n assertLevelComparison(levelComparison)\n const levelCompFunc = genLevelComparison(levelComparison)\n\n Object.assign(instance, {\n levels,\n [levelCompSym]: levelCompFunc,\n [useOnlyCustomLevelsSym]: useOnlyCustomLevels,\n [streamSym]: stream,\n [timeSym]: time,\n [timeSliceIndexSym]: timeSliceIndex,\n [stringifySym]: stringify,\n [stringifySafeSym]: stringifySafe,\n [stringifiersSym]: stringifiers,\n [endSym]: end,\n [formatOptsSym]: formatOpts,\n [messageKeySym]: messageKey,\n [errorKeySym]: errorKey,\n [nestedKeySym]: nestedKey,\n // protect against injection\n [nestedKeyStrSym]: nestedKey ? `,${JSON.stringify(nestedKey)}:{` : '',\n [serializersSym]: serializers,\n [mixinSym]: mixin,\n [mixinMergeStrategySym]: mixinMergeStrategy,\n [chindingsSym]: chindings,\n [formattersSym]: allFormatters,\n [hooksSym]: hooks,\n silent: noop,\n onChild,\n [msgPrefixSym]: msgPrefix\n })\n\n Object.setPrototypeOf(instance, proto())\n\n genLsCache(instance)\n\n instance[setLevelSym](level)\n\n return instance\n}\n\nmodule.exports = pino\n\nmodule.exports.destination = (dest = process.stdout.fd) => {\n if (typeof dest === 'object') {\n dest.dest = normalizeDestFileDescriptor(dest.dest || process.stdout.fd)\n return buildSafeSonicBoom(dest)\n } else {\n return buildSafeSonicBoom({ dest: normalizeDestFileDescriptor(dest), minLength: 0 })\n }\n}\n\nmodule.exports.transport = require('./lib/transport')\nmodule.exports.multistream = require('./lib/multistream')\n\nmodule.exports.levels = mappings()\nmodule.exports.stdSerializers = serializers\nmodule.exports.stdTimeFunctions = Object.assign({}, time)\nmodule.exports.symbols = symbols\nmodule.exports.version = version\n\n// Enables default and name export with TypeScript and Babel\nmodule.exports.default = pino\nmodule.exports.pino = pino\n", "{\n \"name\": \"dotenv\",\n \"version\": \"17.2.4\",\n \"description\": \"Loads environment variables from .env file\",\n \"main\": \"lib/main.js\",\n \"types\": \"lib/main.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./lib/main.d.ts\",\n \"require\": \"./lib/main.js\",\n \"default\": \"./lib/main.js\"\n },\n \"./config\": \"./config.js\",\n \"./config.js\": \"./config.js\",\n \"./lib/env-options\": \"./lib/env-options.js\",\n \"./lib/env-options.js\": \"./lib/env-options.js\",\n \"./lib/cli-options\": \"./lib/cli-options.js\",\n \"./lib/cli-options.js\": \"./lib/cli-options.js\",\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"dts-check\": \"tsc --project tests/types/tsconfig.json\",\n \"lint\": \"standard\",\n \"pretest\": \"npm run lint && npm run dts-check\",\n \"test\": \"tap run tests/**/*.js --allow-empty-coverage --disable-coverage --timeout=60000\",\n \"test:coverage\": \"tap run tests/**/*.js --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov\",\n \"prerelease\": \"npm test\",\n \"release\": \"standard-version\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/motdotla/dotenv.git\"\n },\n \"homepage\": \"https://github.com/motdotla/dotenv#readme\",\n \"funding\": \"https://dotenvx.com\",\n \"keywords\": [\n \"dotenv\",\n \"env\",\n \".env\",\n \"environment\",\n \"variables\",\n \"config\",\n \"settings\"\n ],\n \"readmeFilename\": \"README.md\",\n \"license\": \"BSD-2-Clause\",\n \"devDependencies\": {\n \"@types/node\": \"^18.11.3\",\n \"decache\": \"^4.6.2\",\n \"sinon\": \"^14.0.1\",\n \"standard\": \"^17.0.0\",\n \"standard-version\": \"^9.5.0\",\n \"tap\": \"^19.2.0\",\n \"typescript\": \"^4.8.4\"\n },\n \"engines\": {\n \"node\": \">=12\"\n },\n \"browser\": {\n \"fs\": false\n }\n}\n", "const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\nconst packageJson = require('../package.json')\n\nconst version = packageJson.version\n\n// Array of tips to display randomly\nconst TIPS = [\n '\uD83D\uDD10 encrypt with Dotenvx: https://dotenvx.com',\n '\uD83D\uDD10 prevent committing .env to code: https://dotenvx.com/precommit',\n '\uD83D\uDD10 prevent building .env in docker: https://dotenvx.com/prebuild',\n '\uD83D\uDCE1 add observability to secrets: https://dotenvx.com/ops',\n '\uD83D\uDC65 sync secrets across teammates & machines: https://dotenvx.com/ops',\n '\uD83D\uDDC2\uFE0F backup and recover secrets: https://dotenvx.com/ops',\n '\u2705 audit secrets and track compliance: https://dotenvx.com/ops',\n '\uD83D\uDD04 add secrets lifecycle management: https://dotenvx.com/ops',\n '\uD83D\uDD11 add access controls to secrets: https://dotenvx.com/ops',\n '\uD83D\uDEE0\uFE0F run anywhere with `dotenvx run -- yourcommand`',\n '\u2699\uFE0F specify custom .env file path with { path: \\'/custom/path/.env\\' }',\n '\u2699\uFE0F enable debug logging with { debug: true }',\n '\u2699\uFE0F override existing env vars with { override: true }',\n '\u2699\uFE0F suppress all logs with { quiet: true }',\n '\u2699\uFE0F write to custom object with { processEnv: myObject }',\n '\u2699\uFE0F load multiple .env files with { path: [\\'.env.local\\', \\'.env\\'] }'\n]\n\n// Get a random tip from the tips array\nfunction _getRandomTip () {\n return TIPS[Math.floor(Math.random() * TIPS.length)]\n}\n\nfunction parseBoolean (value) {\n if (typeof value === 'string') {\n return !['false', '0', 'no', 'off', ''].includes(value.toLowerCase())\n }\n return Boolean(value)\n}\n\nfunction supportsAnsi () {\n return process.stdout.isTTY // && process.env.TERM !== 'dumb'\n}\n\nfunction dim (text) {\n return supportsAnsi() ? `\\x1b[2m${text}\\x1b[0m` : text\n}\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n const obj = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n let match\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n\nfunction _parseVault (options) {\n options = options || {}\n\n const vaultPath = _vaultPath(options)\n options.path = vaultPath // parse .env.vault\n const result = DotenvModule.configDotenv(options)\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n err.code = 'MISSING_DATA'\n throw err\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',')\n const length = keys.length\n\n let decrypted\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim()\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key)\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n break\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted)\n}\n\nfunction _warn (message) {\n console.error(`[dotenv@${version}][WARN] ${message}`)\n}\n\nfunction _debug (message) {\n console.log(`[dotenv@${version}][DEBUG] ${message}`)\n}\n\nfunction _log (message) {\n console.log(`[dotenv@${version}] ${message}`)\n}\n\nfunction _dotenvKey (options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY\n }\n\n // fallback to empty string\n return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri\n try {\n uri = new URL(dotenvKey)\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n throw error\n }\n\n // Get decrypt key\n const key = uri.password\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment')\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n throw err\n }\n\n return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n let possibleVaultPath = null\n\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n }\n\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath\n }\n\n return null\n}\n\nfunction _resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || (options && options.debug))\n const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (debug || !quiet) {\n _log('Loading env from encrypted .env.vault')\n }\n\n const parsed = DotenvModule._parseVault(options)\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsed, options)\n\n return { parsed }\n}\n\nfunction configDotenv (options) {\n const dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding = 'utf8'\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || (options && options.debug))\n let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (options && options.encoding) {\n encoding = options.encoding\n } else {\n if (debug) {\n _debug('No encoding is specified. UTF-8 is used by default')\n }\n }\n\n let optionPaths = [dotenvPath] // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)]\n } else {\n optionPaths = [] // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath))\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError\n const parsedAll = {}\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n DotenvModule.populate(parsedAll, parsed, options)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${path} ${e.message}`)\n }\n lastError = e\n }\n }\n\n const populated = DotenvModule.populate(processEnv, parsedAll, options)\n\n // handle user settings DOTENV_CONFIG_ options inside .env file(s)\n debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug)\n quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet)\n\n if (debug || !quiet) {\n const keysCount = Object.keys(populated).length\n const shortPaths = []\n for (const filePath of optionPaths) {\n try {\n const relative = path.relative(process.cwd(), filePath)\n shortPaths.push(relative)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${filePath} ${e.message}`)\n }\n lastError = e\n }\n }\n\n _log(`injecting env (${keysCount}) from ${shortPaths.join(',')} ${dim(`-- tip: ${_getRandomTip()}`)}`)\n }\n\n if (lastError) {\n return { parsed: parsedAll, error: lastError }\n } else {\n return { parsed: parsedAll }\n }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options)\n }\n\n const vaultPath = _vaultPath(options)\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`)\n\n return DotenvModule.configDotenv(options)\n }\n\n return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex')\n let ciphertext = Buffer.from(encrypted, 'base64')\n\n const nonce = ciphertext.subarray(0, 12)\n const authTag = ciphertext.subarray(-16)\n ciphertext = ciphertext.subarray(12, -16)\n\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n aesgcm.setAuthTag(authTag)\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n } catch (error) {\n const isRange = error instanceof RangeError\n const invalidKeyLength = error.message === 'Invalid key length'\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n err.code = 'DECRYPTION_FAILED'\n throw err\n } else {\n throw error\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n const debug = Boolean(options && options.debug)\n const override = Boolean(options && options.override)\n const populated = {}\n\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n err.code = 'OBJECT_REQUIRED'\n throw err\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`)\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`)\n }\n }\n } else {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n }\n\n return populated\n}\n\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n", "import fs from \"node:fs\";\nimport { createHash, createHmac } from \"node:crypto\";\nimport http, { type IncomingMessage } from \"node:http\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport readline from \"node:readline/promises\";\nimport { createPublisherApiClient, PublisherApiClientError } from \"../../server-sdk/src/index.js\";\nimport { parseXappManifest } from \"../../../src/validation/xappManifest.js\";\nimport { buildDevRefs } from \"./devStatus.js\";\nimport { runContextExportCommand } from \"./contextCommands.js\";\nimport {\n runImportCommand,\n runInitCommand,\n runTestCommand,\n runValidateCommand,\n} from \"./commands/manifestCommands.js\";\nimport {\n runAiCheckCliCommand,\n runAiPlanCliCommand,\n runDevCommand,\n runPublisherCliCommand,\n} from \"./commands/devCommands.js\";\n\ntype CliArgValue = string | boolean | string[];\ntype CliArgs = Record<string, CliArgValue>;\ntype CliConfigProfile = {\n token?: string;\n apiKey?: string;\n publishUrl?: string;\n releaseChannel?: string;\n registryTarget?: string;\n logsUrl?: string;\n tunnelToken?: string;\n signingKey?: string;\n versionConflict?: \"fail\" | \"allow\";\n};\ntype CliConfigFile = {\n defaultProfile?: string;\n profiles?: Record<string, CliConfigProfile>;\n};\n\nconst DEFAULT_PUBLISH_BUNDLES_DIR = path.join(\"artifacts\", \"xapps-publish\");\n\nexport class CliError extends Error {\n code: string;\n details?: Record<string, unknown>;\n exitCode?: number;\n\n constructor(\n code: string,\n message: string,\n details?: Record<string, unknown>,\n options?: { exitCode?: number },\n ) {\n super(message);\n this.name = \"CliError\";\n this.code = code;\n this.details = details;\n this.exitCode = options?.exitCode;\n }\n}\n\nfunction printUsage() {\n console.log(`xapps CLI\n\nUsage:\n xapps import --from <openapi-file-or-url> --out <manifest.json> [options]\n xapps validate --from <manifest.json>\n xapps test --from <manifest.json> --vectors <test-vectors.json>\n xapps publish --from <manifest.json> [options]\n xapps logs [options]\n xapps context export --from <manifest.json> [options]\n xapps tunnel --target <base-url> [options]\n xapps init --out <directory> [options]\n xapps dev --from <manifest.json> [options]\n xapps ai plan --mode internal --from <manifest.json> [--preset <internal-v1>] [--flow <name>] [--mocks-dir <dir>] [--guidance <text> | --guidance-file <file> | --ask-guidance] [--llm] [--llm-model <model>] [--llm-timeout-ms <n>] [--apply-manifest-hints] [--json]\n Example guidance: \"Infer complete form fields from mockups, build a step wizard, add supported preview sections, and exclude payment screens because payment is handled by guards.\"\n LLM flags: --llm-api-key <key> --llm-base-url <url> --llm-model <model> --llm-timeout-ms <n> (default model: gpt-5.2, default timeout: 30000ms)\n xapps ai check --mode internal --plan <plan.json> [--policy <policy.json> | --policy-preset <internal-readonly>] [--json]\n xapps publisher endpoint credential set [options]\n xapps publisher endpoint credential ensure [options]\n xapps dev status refs [--json]\n xapps dev check v1 [--json]\n xapps dev check flow --name <flow> [--json] [--run] [--artifacts-dir <dir>]\n xapps dev check flow --from <flow.json> [--json] [--run] [--artifacts-dir <dir>]\n xapps dev check flow init --out <flow.json> --type <ai-artifacts|manual-loop> [--flow-id <id>] [--manifest <path>] [--policy <path>] [--smoke-script <path>] [--json]\n xapps dev check flow lint --from <flow.json> [--json]\n\nGlobal options:\n --profile <name> Profile name from ~/.xapps/config (or env XAPPS_CLI_PROFILE)\n\nImport options:\n --name <name> App name (default: OpenAPI info.title)\n --slug <slug> Manifest slug (default: slugified app name)\n --version <semver> Manifest version (default: 1.0.0)\n --description <text> Manifest description\n --endpoint <base_url> Endpoint base_url (default: https://api.example.com)\n --endpoint-env <env> Endpoint env key (default: prod)\n --fetch-timeout-ms <n> Remote OpenAPI fetch timeout in ms (default: 10000)\n\nInit options:\n --name <name> App name (default: My Xapp)\n --slug <slug> Manifest slug (default: slugified app name)\n --version <semver> Manifest version (default: 1.0.0)\n --force Overwrite existing files\n\nTest options:\n --from <manifest.json> Manifest file to validate against\n --vectors <vectors.json> Request/response contract vectors\n\nPublish options:\n --from <manifest.json> Manifest file to package\n --out <file-or-dir> Output file or directory (default: artifacts/xapps-publish/<slug>/<version>)\n --dry-run Validate + print summary only (no files written)\n --yes Skip release confirmation prompt (required in non-interactive mode)\n --force Overwrite target artifact if it exists\n --publish-url <url> Optional remote publish endpoint (POST bundle JSON)\n --publisher-gateway-url <url> Optional local gateway publisher API base URL (uses /publisher/* routes)\n --target-client-slug <slug> Resolve tenant slug to target_client_id via --publisher-gateway-url for publish\n --replace <A=B> Replace placeholder/text A with literal B in manifest before publish (repeatable)\n --replace-env <A=ENV> Replace placeholder/text A with process.env[ENV] before publish (repeatable)\n --bump-version <kind> Bump manifest version before publish: patch|minor|major\n --write-manifest-version Write bumped version back to source manifest file (only version field is persisted)\n --allow-unresolved-placeholders Skip preflight failure when __PLACEHOLDER__ tokens remain after replacements\n --token <token> Bearer token for --publish-url (or env XAPPS_CLI_TOKEN)\n --api-key <key> API key header value (or env XAPPS_CLI_API_KEY)\n --signing-key <key> HMAC key for signed publish metadata headers (or env XAPPS_CLI_SIGNING_KEY)\n --version-conflict <mode> Version conflict policy: fail|allow (default: fail)\n --release-channel <name> Release channel label for remote publish handoff (default: stable)\n --registry-target <name> Registry target/namespace label for remote publish handoff\n --idempotency-key <key> Idempotency key header for --publish-url handoff\n --timeout-ms <n> Remote publish timeout in ms (default: 10000)\n --retry-attempts <n> Remote publish retry attempts for transient failures (default: 1)\n --retry-backoff-ms <n> Base backoff between publish retries (default: 250)\n\nPublisher endpoint credential set/ensure options (internal/headless):\n --gateway-url <url> Gateway base URL (auto-uses /v1 if path omitted)\n --api-key <key> Publisher API key (or env XAPPS_CLI_API_KEY)\n --token <token> Publisher bearer token (or env XAPPS_CLI_TOKEN)\n --endpoint-id <id> Endpoint id (optional if using --xapp-slug + --env)\n --xapp-slug <slug> Resolve endpoint by publisher xapp slug\n --target-client-slug <slug> Resolve the tenant-scoped xapp variant before endpoint lookup\n --env <name> Endpoint env when resolving by xapp slug (default: prod)\n --auth-type <type> Endpoint auth type (default: api-key)\n --header-name <name> API key header name for api-key header auth (default: x-xplace-api-key)\n --secret-env <ENV> Read initial credential key secret from environment variable\n --secret-stdin Read initial credential key secret from stdin\n --secret-ref <ref> Store a gateway secret provider reference instead of literal secret\n --key-status <status> Initial key status (default: active)\n --key-algorithm <alg> Initial key algorithm (default: hmac-sha256)\n --json Machine-readable output\n\nLogs options:\n --from <bundle.json> Read a single local publish bundle\n --dir <path> Scan publish bundles in directory (default: artifacts/xapps-publish)\n --limit <n> Max entries (default: 10)\n --json Print JSON output\n --logs-url <url> Optional remote logs endpoint (GET)\n --token <token> Bearer token for --logs-url (or env XAPPS_CLI_TOKEN)\n --api-key <key> API key header value (or env XAPPS_CLI_API_KEY)\n --cursor <value> Optional pagination cursor for remote logs\n --lease-id <value> Optional managed log stream lease identifier\n --checkpoint <value> Optional managed log stream checkpoint token\n --severity <value> Optional remote filter (ex: error or error,warn)\n --since <iso> Optional remote filter start timestamp\n --until <iso> Optional remote filter end timestamp\n --follow Keep polling remote logs and resume from next cursor\n --follow-interval-ms <n> Poll interval for --follow mode (default: 2000)\n --follow-max-cycles <n> Optional max follow polling cycles (for automation/testing)\n --follow-cursor-file <path> Persist/restore follow cursor state to local file\n --timeout-ms <n> Remote logs timeout in ms (default: 10000)\n --retry-attempts <n> Remote logs retry attempts for transient failures (default: 1)\n --retry-backoff-ms <n> Base backoff between logs retries (default: 250)\n\nContext export options:\n export --from <manifest.json> Manifest file to export deterministic context from\n --out <file> Write context JSON to file (default: stdout)\n --preset <name> Optional context preset (Phase 1: internal-v1)\n\nTunnel options:\n --target <base-url> Relay target base URL (required)\n --allow-target-hosts <csv> Explicit target host allowlist (default: 127.0.0.1,localhost,::1)\n --host <host> Relay bind host (default: 127.0.0.1)\n --listen-port <port> Relay bind port (default: 4041)\n --session-id <id> Stable tunnel session id (optional)\n --session-file <path> Persist/reuse session id across restarts\n --session-policy <mode> Session lifecycle policy: reuse|require|rotate (default: reuse)\n --require-auth-token <tok> Require inbound relay token (header x-xapps-tunnel-token or Bearer)\n --upstream-timeout-ms <n> Upstream request timeout in ms (default: 15000)\n --retry-attempts <n> Upstream retry attempts for GET/HEAD/OPTIONS transient failures (default: 1)\n --retry-backoff-ms <n> Base backoff between upstream retries (default: 200)\n --once Start, print config, and exit\n\nDev options:\n --from <manifest.json> Manifest file to validate/watch\n --dry-run <request.json> Inspect a request payload against manifest tools\n --port <port> Mock callback server port (default: 4011)\n --host <host> Mock callback server host (default: 127.0.0.1)\n --once Validate + dry-run only; skip watch/server\n --no-watch Disable manifest watch loop\n`);\n}\n\nfunction parseArgs(argv: string[]): { command: string; args: CliArgs } {\n const [command = \"\", ...rest] = argv;\n const args: CliArgs = {};\n let subcommandCount = 0;\n\n for (let i = 0; i < rest.length; i += 1) {\n const token = rest[i];\n if (!token.startsWith(\"--\")) {\n subcommandCount += 1;\n if (subcommandCount === 1) args._subcommand = token;\n else if (subcommandCount === 2) args._subcommand2 = token;\n else if (subcommandCount === 3) args._subcommand3 = token;\n continue;\n }\n\n const key = token.slice(2);\n const next = rest[i + 1];\n if (!next || next.startsWith(\"--\")) {\n if (args[key] === undefined) {\n args[key] = true;\n } else if (Array.isArray(args[key])) {\n (args[key] as string[]).push(\"true\");\n } else if (typeof args[key] === \"string\") {\n args[key] = [args[key] as string, \"true\"];\n }\n continue;\n }\n\n if (args[key] === undefined) {\n args[key] = next;\n } else if (Array.isArray(args[key])) {\n (args[key] as string[]).push(next);\n } else if (typeof args[key] === \"string\") {\n args[key] = [args[key] as string, next];\n } else {\n args[key] = [next];\n }\n i += 1;\n }\n\n return { command, args };\n}\n\nfunction argString(args: CliArgs, ...keys: string[]): string | undefined {\n for (const key of keys) {\n const value = args[key];\n if (Array.isArray(value)) {\n for (let i = value.length - 1; i >= 0; i -= 1) {\n const item = value[i];\n if (typeof item === \"string\" && item.trim()) return item.trim();\n }\n continue;\n }\n if (typeof value === \"string\" && value.trim()) {\n return value.trim();\n }\n }\n return undefined;\n}\n\nfunction argStrings(args: CliArgs, ...keys: string[]): string[] {\n const out: string[] = [];\n for (const key of keys) {\n const value = args[key];\n if (Array.isArray(value)) {\n for (const item of value) {\n if (typeof item === \"string\" && item.trim()) out.push(item.trim());\n }\n continue;\n }\n if (typeof value === \"string\" && value.trim()) {\n out.push(value.trim());\n }\n }\n return out;\n}\n\nfunction argFlag(args: CliArgs, key: string): boolean {\n const value = args[key];\n if (value === true) return true;\n if (Array.isArray(value)) return value.includes(\"true\");\n return false;\n}\n\nfunction shellEscapeArg(value: string): string {\n const input = String(value ?? \"\");\n if (/^[A-Za-z0-9_./:-]+$/.test(input)) return input;\n return `'${input.replace(/'/g, `'\"'\"'`)}'`;\n}\n\nfunction applyFlowCommandTemplates(command: string, params: { artifactsDir: string }): string {\n return String(command || \"\").replaceAll(\"{{ARTIFACTS_DIR}}\", params.artifactsDir);\n}\n\nfunction normalizePublisherGatewayApiBaseUrl(input: string): string {\n const raw = String(input || \"\").trim();\n if (!raw) return \"\";\n const parsed = new URL(raw);\n const pathname = parsed.pathname || \"/\";\n if (pathname === \"/\" || pathname === \"\") {\n parsed.pathname = \"/v1\";\n return parsed.toString().replace(/\\/+$/g, \"\");\n }\n return parsed.toString().replace(/\\/+$/g, \"\");\n}\n\nfunction defaultCliConfigPath() {\n return path.join(os.homedir(), \".xapps\", \"config\");\n}\n\nfunction parseVersionConflictPolicy(\n value: string | undefined,\n fallback: \"fail\" | \"allow\" = \"fail\",\n): \"fail\" | \"allow\" {\n if (!value) return fallback;\n const normalized = String(value).trim().toLowerCase();\n if (normalized === \"fail\" || normalized === \"allow\") return normalized;\n throw new CliError(\n \"CLI_INVALID_OPTION\",\n `Invalid --version-conflict: ${value} (expected fail|allow)`,\n { label: \"--version-conflict\", value },\n );\n}\n\ntype ManifestReplaceRule = {\n from: string;\n to: string;\n source: \"literal\" | \"env\";\n sourceName?: string;\n};\n\nfunction parseManifestReplaceLiteral(raw: string): ManifestReplaceRule {\n const idx = raw.indexOf(\"=\");\n if (idx <= 0) {\n throw new CliError(\"CLI_INVALID_OPTION\", `Invalid --replace value: ${raw} (expected FROM=TO)`, {\n label: \"--replace\",\n value: raw,\n });\n }\n const from = raw.slice(0, idx).trim();\n const to = raw.slice(idx + 1);\n if (!from) {\n throw new CliError(\"CLI_INVALID_OPTION\", `Invalid --replace value: ${raw} (empty FROM)`, {\n label: \"--replace\",\n value: raw,\n });\n }\n return { from, to, source: \"literal\" };\n}\n\nfunction parseManifestReplaceEnv(raw: string): ManifestReplaceRule {\n const idx = raw.indexOf(\"=\");\n if (idx <= 0) {\n throw new CliError(\n \"CLI_INVALID_OPTION\",\n `Invalid --replace-env value: ${raw} (expected FROM=ENV_VAR)`,\n { label: \"--replace-env\", value: raw },\n );\n }\n const from = raw.slice(0, idx).trim();\n const envName = raw.slice(idx + 1).trim();\n if (!from || !envName) {\n throw new CliError(\n \"CLI_INVALID_OPTION\",\n `Invalid --replace-env value: ${raw} (empty FROM or ENV_VAR)`,\n { label: \"--replace-env\", value: raw },\n );\n }\n const envValue = process.env[envName];\n if (typeof envValue !== \"string\" || envValue.length === 0) {\n throw new CliError(\n \"CLI_INVALID_OPTION\",\n `Environment variable missing/empty for --replace-env ${envName}`,\n { label: \"--replace-env\", value: raw, env: envName },\n );\n }\n return { from, to: envValue, source: \"env\", sourceName: envName };\n}\n\nfunction applyManifestReplaceRulesDeep<T>(input: T, rules: ManifestReplaceRule[]): T {\n if (!rules.length) return input;\n const replaceToken = (raw: string): string => {\n let next = raw;\n for (const rule of rules) {\n next = next.split(rule.from).join(rule.to);\n }\n return next;\n };\n const walk = (value: unknown): unknown => {\n if (typeof value === \"string\") {\n return replaceToken(value);\n }\n if (Array.isArray(value)) return value.map(walk);\n if (value && typeof value === \"object\") {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n out[replaceToken(k)] = walk(v);\n }\n return out;\n }\n return value;\n };\n return walk(input) as T;\n}\n\nfunction findUnresolvedPlaceholderTokens(input: unknown): string[] {\n const seen = new Set<string>();\n const re = /__[A-Z0-9_]+__/g;\n const collect = (raw: string) => {\n const matches = raw.match(re);\n if (matches) for (const m of matches) seen.add(m);\n };\n const walk = (value: unknown) => {\n if (typeof value === \"string\") {\n collect(value);\n return;\n }\n if (Array.isArray(value)) {\n for (const item of value) walk(item);\n return;\n }\n if (value && typeof value === \"object\") {\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n collect(k);\n walk(v);\n }\n return;\n }\n };\n walk(input);\n return Array.from(seen).sort();\n}\n\ntype VersionBumpKind = \"patch\" | \"minor\" | \"major\";\n\nfunction parseVersionBumpKind(value: string | undefined): VersionBumpKind | null {\n if (!value) return null;\n const normalized = String(value).trim().toLowerCase();\n if (normalized === \"patch\" || normalized === \"minor\" || normalized === \"major\") {\n return normalized;\n }\n throw new CliError(\n \"CLI_INVALID_OPTION\",\n `Invalid --bump-version: ${value} (expected patch|minor|major)`,\n { label: \"--bump-version\", value },\n );\n}\n\nfunction bumpSemverVersionOrThrow(version: string, kind: VersionBumpKind): string {\n const match = /^(\\d+)\\.(\\d+)\\.(\\d+)$/.exec(String(version || \"\").trim());\n if (!match) {\n throw new CliError(\"CLI_INVALID_OPTION\", `Cannot ${kind}-bump non-semver version: ${version}`, {\n label: \"--bump-version\",\n version,\n });\n }\n let major = Number(match[1]);\n let minor = Number(match[2]);\n let patch = Number(match[3]);\n if (kind === \"major\") {\n major += 1;\n minor = 0;\n patch = 0;\n } else if (kind === \"minor\") {\n minor += 1;\n patch = 0;\n } else {\n patch += 1;\n }\n return `${major}.${minor}.${patch}`;\n}\n\nfunction parseTunnelSessionPolicy(\n value: string | undefined,\n fallback: \"reuse\" | \"require\" | \"rotate\" = \"reuse\",\n): \"reuse\" | \"require\" | \"rotate\" {\n if (!value) return fallback;\n const normalized = String(value).trim().toLowerCase();\n if (normalized === \"reuse\" || normalized === \"require\" || normalized === \"rotate\") {\n return normalized;\n }\n throw new CliError(\n \"CLI_INVALID_OPTION\",\n `Invalid --session-policy: ${value} (expected reuse|require|rotate)`,\n { label: \"--session-policy\", value },\n );\n}\n\nfunction parseReleaseLabel(\n label: string | undefined,\n fallback: string,\n optionName: string,\n): string {\n const raw = String(label || fallback || \"\")\n .trim()\n .toLowerCase();\n if (!raw)\n return String(fallback || \"\")\n .trim()\n .toLowerCase();\n if (!/^[a-z0-9][a-z0-9._-]{0,63}$/.test(raw)) {\n throw new CliError(\n \"CLI_INVALID_OPTION\",\n `Invalid ${optionName}: ${label} (expected 1-64 chars: a-z, 0-9, ., _, -)`,\n { label: optionName, value: label },\n );\n }\n return raw;\n}\n\ntype TunnelSessionState = {\n sessionId: string;\n target?: string;\n updatedAt?: string;\n schemaVersion?: number;\n};\n\nfunction parseCsvSet(value: string | undefined, fallbackCsv: string): Set<string> {\n const raw = String(value || fallbackCsv);\n return new Set(\n raw\n .split(\",\")\n .map((item) => item.trim().toLowerCase())\n .filter(Boolean),\n );\n}\n\nfunction randomSessionId(prefix = \"tnl\"): string {\n return `${prefix}_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;\n}\n\nfunction resolveCursorStatePath(rawPath: string): string {\n return path.resolve(process.cwd(), rawPath);\n}\n\ntype LogsResumeState = {\n cursor?: string;\n leaseId?: string;\n checkpoint?: string;\n};\n\nfunction loadLogsResumeState(filePathRaw: string): LogsResumeState {\n const filePath = resolveCursorStatePath(filePathRaw);\n if (!fs.existsSync(filePath)) return {};\n try {\n const raw = fs.readFileSync(filePath, \"utf8\").trim();\n if (!raw) return {};\n if (!raw.startsWith(\"{\")) {\n // Backward compatible plain cursor-file format.\n return { cursor: raw };\n }\n const parsed = JSON.parse(raw);\n if (!isPlainObject(parsed)) {\n throw new Error(\"resume state must be a JSON object\");\n }\n const cursor =\n typeof (parsed as any).cursor === \"string\"\n ? String((parsed as any).cursor)\n : typeof (parsed as any).next_cursor === \"string\"\n ? String((parsed as any).next_cursor)\n : \"\";\n const leaseId =\n typeof (parsed as any).lease_id === \"string\"\n ? String((parsed as any).lease_id)\n : typeof (parsed as any).leaseId === \"string\"\n ? String((parsed as any).leaseId)\n : \"\";\n const checkpoint =\n typeof (parsed as any).checkpoint === \"string\"\n ? String((parsed as any).checkpoint)\n : typeof (parsed as any).checkpoint_token === \"string\"\n ? String((parsed as any).checkpoint_token)\n : typeof (parsed as any).checkpointToken === \"string\"\n ? String((parsed as any).checkpointToken)\n : \"\";\n return {\n ...(cursor ? { cursor } : {}),\n ...(leaseId ? { leaseId } : {}),\n ...(checkpoint ? { checkpoint } : {}),\n };\n } catch (err: any) {\n throw new CliError(\n \"CLI_CURSOR_STATE_IO\",\n `Failed reading cursor state file: ${filePath} (${err?.message || String(err)})`,\n { filePath },\n );\n }\n}\n\nfunction saveLogsResumeState(filePathRaw: string, state: LogsResumeState) {\n const filePath = resolveCursorStatePath(filePathRaw);\n try {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n const cursor = String(state.cursor || \"\").trim();\n const leaseId = String(state.leaseId || \"\").trim();\n const checkpoint = String(state.checkpoint || \"\").trim();\n if (!leaseId && !checkpoint) {\n fs.writeFileSync(filePath, `${cursor}\\n`);\n return;\n }\n const payload = {\n v: 1,\n ...(cursor ? { cursor } : {}),\n ...(leaseId ? { lease_id: leaseId } : {}),\n ...(checkpoint ? { checkpoint } : {}),\n updated_at: new Date().toISOString(),\n };\n fs.writeFileSync(filePath, JSON.stringify(payload, null, 2));\n } catch (err: any) {\n throw new CliError(\n \"CLI_CURSOR_STATE_IO\",\n `Failed writing cursor state file: ${filePath} (${err?.message || String(err)})`,\n { filePath },\n );\n }\n}\n\nfunction loadTunnelSessionState(filePathRaw: string): TunnelSessionState | null {\n const filePath = path.resolve(process.cwd(), filePathRaw);\n if (!fs.existsSync(filePath)) return null;\n try {\n const raw = fs.readFileSync(filePath, \"utf8\").trim();\n if (!raw) return null;\n if (!raw.startsWith(\"{\")) {\n // Backward compatible session-id only format.\n return { sessionId: raw };\n }\n const parsed = JSON.parse(raw);\n if (!isPlainObject(parsed)) {\n throw new Error(\"session state must be a JSON object\");\n }\n const sessionId =\n typeof (parsed as any).session_id === \"string\"\n ? String((parsed as any).session_id).trim()\n : typeof (parsed as any).sessionId === \"string\"\n ? String((parsed as any).sessionId).trim()\n : \"\";\n if (!sessionId) {\n throw new Error(\"session_id is required\");\n }\n const target =\n typeof (parsed as any).target === \"string\" ? String((parsed as any).target).trim() : \"\";\n const updatedAt =\n typeof (parsed as any).updated_at === \"string\"\n ? String((parsed as any).updated_at).trim()\n : typeof (parsed as any).updatedAt === \"string\"\n ? String((parsed as any).updatedAt).trim()\n : \"\";\n const schemaVersion =\n typeof (parsed as any).v === \"number\"\n ? Number((parsed as any).v)\n : typeof (parsed as any).version === \"number\"\n ? Number((parsed as any).version)\n : undefined;\n return {\n sessionId,\n ...(target ? { target } : {}),\n ...(updatedAt ? { updatedAt } : {}),\n ...(schemaVersion !== undefined ? { schemaVersion } : {}),\n };\n } catch (err: any) {\n throw new CliError(\n \"CLI_TUNNEL_SESSION_IO\",\n `Failed reading tunnel session file: ${filePath} (${err?.message || String(err)})`,\n { filePath },\n );\n }\n}\n\nfunction saveTunnelSessionState(filePathRaw: string, state: TunnelSessionState) {\n const filePath = path.resolve(process.cwd(), filePathRaw);\n try {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n const payload = {\n v: 1,\n session_id: state.sessionId,\n ...(state.target ? { target: state.target } : {}),\n updated_at: new Date().toISOString(),\n };\n fs.writeFileSync(filePath, `${JSON.stringify(payload, null, 2)}\\n`);\n } catch (err: any) {\n throw new CliError(\n \"CLI_TUNNEL_SESSION_IO\",\n `Failed writing tunnel session file: ${filePath} (${err?.message || String(err)})`,\n { filePath },\n );\n }\n}\n\nfunction base64url(input: Buffer): string {\n return input.toString(\"base64\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/g, \"\");\n}\n\nfunction stableStringify(input: Record<string, unknown>): string {\n const keys = Object.keys(input).sort((a, b) => a.localeCompare(b));\n const out: Record<string, unknown> = {};\n for (const key of keys) out[key] = input[key];\n return JSON.stringify(out);\n}\n\nfunction canonicalizeJson(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((item) => canonicalizeJson(item));\n }\n if (value && typeof value === \"object\") {\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(value as Record<string, unknown>).sort((a, b) =>\n a.localeCompare(b),\n )) {\n out[key] = canonicalizeJson((value as Record<string, unknown>)[key]);\n }\n return out;\n }\n return value;\n}\n\nfunction parseCliConfig(raw: string, sourcePath: string): CliConfigFile {\n try {\n const parsed = JSON.parse(raw);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new CliError(\"CLI_CONFIG_INVALID\", \"config root must be a JSON object\", {\n sourcePath,\n });\n }\n return parsed as CliConfigFile;\n } catch (err: any) {\n if (err instanceof CliError) throw err;\n throw new CliError(\n \"CLI_CONFIG_INVALID\",\n `Invalid CLI config JSON (${sourcePath}): ${err?.message || String(err)}`,\n { sourcePath },\n );\n }\n}\n\nfunction loadCliConfig(_args: CliArgs): { config: CliConfigFile; configPath: string | null } {\n const configPath = process.env.XAPPS_CLI_CONFIG || defaultCliConfigPath();\n if (!fs.existsSync(configPath)) {\n return { config: {}, configPath: null };\n }\n const raw = fs.readFileSync(configPath, \"utf8\");\n return { config: parseCliConfig(raw, configPath), configPath };\n}\n\nfunction getProfile(args: CliArgs): {\n profileName: string;\n profile: CliConfigProfile;\n configPath: string | null;\n} {\n const { config, configPath } = loadCliConfig(args);\n const profileName =\n argString(args, \"profile\") || process.env.XAPPS_CLI_PROFILE || config.defaultProfile || \"\";\n if (!profileName) {\n return { profileName: \"\", profile: {}, configPath };\n }\n const profile = config.profiles?.[profileName];\n if (!profile || typeof profile !== \"object\") {\n const configLabel = configPath || defaultCliConfigPath();\n throw new CliError(\n \"CLI_PROFILE_NOT_FOUND\",\n `Unknown CLI profile '${profileName}' in ${configLabel}`,\n {\n profileName,\n configPath: configLabel,\n },\n );\n }\n return { profileName, profile, configPath };\n}\n\nasync function confirmPublishOrThrow(summary: Record<string, unknown>) {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n throw new CliError(\n \"CLI_CONFIRM_REQUIRED\",\n \"Publish confirmation required in non-interactive mode. Re-run with --yes.\",\n );\n }\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n try {\n const answer = await rl.question(\n `Release ${summary.slug}@${summary.version} (tools=${summary.tools}, widgets=${summary.widgets})? [y/N] `,\n );\n const normalized = String(answer || \"\")\n .trim()\n .toLowerCase();\n if (normalized !== \"y\" && normalized !== \"yes\") {\n throw new CliError(\"CLI_CONFIRM_DECLINED\", \"Publish cancelled by user.\");\n }\n } finally {\n rl.close();\n }\n}\n\nasync function readInput(from: string, fetchTimeoutMs: number): Promise<string> {\n if (/^https?:\\/\\//i.test(from)) {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), fetchTimeoutMs);\n try {\n const res = await fetch(from, { signal: controller.signal });\n if (!res.ok) {\n throw new CliError(\n \"CLI_REMOTE_FETCH_ERROR\",\n `Failed to fetch OpenAPI URL (${res.status}): ${from}`,\n {\n from,\n status: res.status,\n timeout_ms: fetchTimeoutMs,\n },\n );\n }\n return await res.text();\n } catch (err: any) {\n if (err instanceof CliError) throw err;\n if (err?.name === \"AbortError\") {\n throw new CliError(\n \"CLI_REMOTE_FETCH_ERROR\",\n `OpenAPI fetch timed out after ${fetchTimeoutMs}ms: ${from}`,\n { from, timeout_ms: fetchTimeoutMs },\n );\n }\n throw new CliError(\"CLI_REMOTE_FETCH_ERROR\", `Failed to fetch OpenAPI URL: ${from}`, {\n from,\n timeout_ms: fetchTimeoutMs,\n cause: String(err?.message || err || \"fetch_failed\"),\n });\n } finally {\n clearTimeout(timer);\n }\n }\n const absolute = path.resolve(process.cwd(), from);\n return fs.readFileSync(absolute, \"utf8\");\n}\n\nfunction readJsonFile(file: string): unknown {\n const filePath = path.resolve(process.cwd(), file);\n const raw = fs.readFileSync(filePath, \"utf8\");\n try {\n return JSON.parse(raw);\n } catch (err: any) {\n throw new Error(`Invalid JSON in ${filePath}: ${err?.message || String(err)}`);\n }\n}\n\nfunction parseManifestFromFile(from: string): {\n manifest: ReturnType<typeof parseXappManifest>;\n filePath: string;\n} {\n const filePath = path.resolve(process.cwd(), from);\n const parsed = readJsonFile(from);\n return { manifest: parseXappManifest(parsed), filePath };\n}\n\nfunction runContextExport(args: CliArgs) {\n runContextExportCommand(args, {\n argString,\n findRepoRoot,\n parseManifestFromFile,\n buildDevRefs,\n canonicalizeJson,\n makeCliError: (code, message, details) => new CliError(code, message, details),\n });\n}\n\nasync function readRequestBody(req: IncomingMessage): Promise<unknown> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) {\n if (typeof chunk === \"string\") {\n chunks.push(Buffer.from(chunk));\n } else {\n chunks.push(chunk);\n }\n }\n if (!chunks.length) return {};\n const raw = Buffer.concat(chunks).toString(\"utf8\");\n try {\n return JSON.parse(raw);\n } catch {\n return { _raw: raw };\n }\n}\n\nasync function readRawRequestBody(req: IncomingMessage): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) {\n if (typeof chunk === \"string\") chunks.push(Buffer.from(chunk));\n else chunks.push(chunk);\n }\n return Buffer.concat(chunks);\n}\n\nfunction runDryRun(args: CliArgs, manifest: ReturnType<typeof parseXappManifest>) {\n const dryRunFile = argString(args, \"dry-run\");\n if (!dryRunFile) return;\n\n const requestPath = path.resolve(process.cwd(), dryRunFile);\n const raw = fs.readFileSync(requestPath, \"utf8\");\n let payload: any;\n try {\n payload = JSON.parse(raw);\n } catch (err: any) {\n throw new Error(\n `Invalid JSON in dry-run payload ${requestPath}: ${err?.message || String(err)}`,\n );\n }\n\n const toolName = typeof payload?.tool_name === \"string\" ? payload.tool_name : \"\";\n const tool = manifest.tools.find((item) => item.tool_name === toolName);\n const inputKeys =\n payload && typeof payload.input === \"object\" && payload.input\n ? Object.keys(payload.input as Record<string, unknown>)\n : [];\n\n console.log(\n [\n `Dry-run payload: ${requestPath}`,\n `Request id: ${typeof payload?.request_id === \"string\" ? payload.request_id : \"n/a\"}`,\n `Tool: ${toolName || \"n/a\"}${tool ? \" (manifest match)\" : \" (not found in manifest)\"}`,\n `Input keys: ${inputKeys.length ? inputKeys.join(\", \") : \"(none)\"}`,\n ].join(\"\\n\"),\n );\n}\n\nfunction findRepoRoot(startDir = process.cwd()): string | null {\n let current = path.resolve(startDir);\n for (let i = 0; i < 8; i += 1) {\n if (\n fs.existsSync(path.join(current, \"package.json\")) &&\n fs.existsSync(path.join(current, \"dev\"))\n ) {\n return current;\n }\n const parent = path.dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return null;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction resolvePublishBundlePath(\n outArg: string | undefined,\n slug: string,\n version: string,\n): string {\n if (!outArg) {\n return path.resolve(process.cwd(), DEFAULT_PUBLISH_BUNDLES_DIR, slug, version, \"bundle.json\");\n }\n const resolved = path.resolve(process.cwd(), outArg);\n if (resolved.toLowerCase().endsWith(\".json\")) {\n return resolved;\n }\n return path.join(resolved, \"bundle.json\");\n}\n\nfunction parsePositiveIntOrThrow(\n value: string | undefined,\n fallback: number,\n label: string,\n): number {\n if (!value) return fallback;\n const parsed = Number(value);\n if (!Number.isFinite(parsed) || !Number.isInteger(parsed) || parsed <= 0) {\n throw new CliError(\n \"CLI_INVALID_OPTION\",\n `Invalid ${label}: ${value} (expected positive integer)`,\n { label, value },\n );\n }\n return parsed;\n}\n\nfunction parseHttpUrlOrThrow(value: string, label: string): string {\n let parsed: URL;\n try {\n parsed = new URL(String(value || \"\").trim());\n } catch {\n throw new CliError(\"CLI_INVALID_OPTION\", `Invalid ${label}: ${value}`, { label, value });\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw new CliError(\n \"CLI_INVALID_OPTION\",\n `Invalid ${label} protocol (http/https required): ${value}`,\n { label, value },\n );\n }\n return parsed.toString();\n}\n\nfunction parseListenPortOrThrow(value: string | undefined, fallback: number): number {\n if (!value) return fallback;\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < 1 || parsed > 65535) {\n throw new CliError(\n \"CLI_INVALID_OPTION\",\n `Invalid --listen-port: ${value} (expected integer 1-65535)`,\n { label: \"--listen-port\", value },\n );\n }\n return parsed;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));\n}\n\nfunction isRetryableStatus(status: number): boolean {\n return status === 408 || status === 425 || status === 429 || status >= 500;\n}\n\nfunction appendForwardedHeader(existing: string | null, next: string): string {\n const normalized = next.trim();\n if (!normalized) return existing || \"\";\n if (!existing) return normalized;\n return `${existing}, ${normalized}`;\n}\n\ntype RetryableError = Error & { retryable?: boolean };\n\nfunction makeRetryableError(message: string, retryable = false): RetryableError {\n const err = new Error(message) as RetryableError;\n err.retryable = retryable;\n return err;\n}\n\nfunction normalizeRemoteErrorDetails(bodyText: string): string {\n const text = String(bodyText || \"\").trim();\n if (!text) return \"\";\n try {\n const parsed = JSON.parse(text);\n if (!isPlainObject(parsed)) {\n return `body=${text.slice(0, 400)}`;\n }\n const errorCode =\n typeof parsed.error === \"string\"\n ? parsed.error\n : typeof parsed.code === \"string\"\n ? parsed.code\n : \"\";\n const message =\n typeof parsed.message === \"string\"\n ? parsed.message\n : typeof parsed.detail === \"string\"\n ? parsed.detail\n : \"\";\n const parts: string[] = [];\n if (errorCode) parts.push(`error=${errorCode}`);\n if (message) parts.push(`message=${message.slice(0, 300)}`);\n return parts.length ? parts.join(\" \") : `body=${text.slice(0, 400)}`;\n } catch {\n return `body=${text.slice(0, 400)}`;\n }\n}\n\nfunction buildRemoteHttpFailureMessage(input: {\n channel: \"publish\" | \"logs\";\n status: number;\n url: string;\n bodyText: string;\n}): string {\n const detail = normalizeRemoteErrorDetails(input.bodyText);\n const retryable = isRetryableStatus(input.status);\n return [\n `Remote ${input.channel} failed (status=${input.status})`,\n `url=${input.url}`,\n `retryable=${retryable ? \"yes\" : \"no\"}`,\n detail,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction normalizePublishOutcome(raw: unknown): \"created\" | \"updated\" | \"already_exists\" | \"\" {\n const normalized = String(raw ?? \"\")\n .trim()\n .toLowerCase();\n if (!normalized) return \"\";\n if (\n normalized === \"created\" ||\n normalized === \"new\" ||\n normalized === \"published\" ||\n normalized === \"success\"\n )\n return \"created\";\n if (normalized === \"updated\" || normalized === \"modified\" || normalized === \"replaced\")\n return \"updated\";\n if (\n normalized === \"already_exists\" ||\n normalized === \"already-exists\" ||\n normalized === \"exists\" ||\n normalized === \"version_exists\" ||\n normalized === \"version-exists\" ||\n normalized === \"conflict\"\n )\n return \"already_exists\";\n return \"\";\n}\n\nfunction pickPublishAckContainers(\n payload: Record<string, unknown>,\n): Array<Record<string, unknown>> {\n const containers: Array<Record<string, unknown>> = [payload];\n const nestedKeys = [\"ack\", \"data\", \"publish\", \"release\", \"result\"];\n for (const key of nestedKeys) {\n const value = payload[key];\n if (isPlainObject(value)) {\n containers.push(value);\n }\n }\n return containers;\n}\n\nfunction parsePublishAck(payload: unknown): {\n outcome?: \"created\" | \"updated\" | \"already_exists\";\n releaseId?: string;\n registryEntry?: string;\n provider?: string;\n hasOutcomeSignal: boolean;\n} {\n if (!isPlainObject(payload)) {\n return { hasOutcomeSignal: false };\n }\n const candidates = pickPublishAckContainers(payload);\n let outcome: \"created\" | \"updated\" | \"already_exists\" | \"\" = \"\";\n let hasOutcomeSignal = false;\n let releaseId = \"\";\n let registryEntry = \"\";\n let provider = \"\";\n for (const candidate of candidates) {\n const outcomeRaw =\n candidate.outcome ??\n candidate.result ??\n candidate.status ??\n candidate.state ??\n candidate.disposition;\n if (outcomeRaw !== undefined) {\n hasOutcomeSignal = true;\n const normalized = normalizePublishOutcome(outcomeRaw);\n if (normalized) outcome = normalized;\n }\n if (!releaseId) {\n const value = candidate.release_id ?? candidate.releaseId ?? candidate.id;\n if (typeof value === \"string\" && value.trim()) releaseId = value.trim();\n }\n if (!registryEntry) {\n const value = candidate.registry_entry ?? candidate.registryEntry;\n if (typeof value === \"string\" && value.trim()) registryEntry = value.trim();\n }\n if (!provider) {\n const value = candidate.provider ?? candidate.publisher ?? candidate.vendor;\n if (typeof value === \"string\" && value.trim()) provider = value.trim();\n }\n }\n return {\n ...(outcome ? { outcome } : {}),\n ...(releaseId ? { releaseId } : {}),\n ...(registryEntry ? { registryEntry } : {}),\n ...(provider ? { provider } : {}),\n hasOutcomeSignal,\n };\n}\n\nfunction detectPublishConflict(bodyText: string): boolean {\n const text = String(bodyText || \"\").trim();\n if (!text) return false;\n try {\n const parsed = JSON.parse(text);\n if (!isPlainObject(parsed)) return false;\n const parts: string[] = [];\n const pushIfString = (value: unknown) => {\n if (typeof value === \"string\" && value.trim()) parts.push(value.trim().toLowerCase());\n };\n const containers = pickPublishAckContainers(parsed);\n for (const item of containers) {\n pushIfString(item.error);\n pushIfString(item.code);\n pushIfString(item.reason);\n pushIfString(item.message);\n pushIfString(item.outcome);\n pushIfString(item.result);\n pushIfString(item.status);\n pushIfString(item.state);\n }\n return parts.some((value) =>\n /already[_-]?exists|version[_-]?exists|version[_-]?conflict|conflict/.test(value),\n );\n } catch {\n return false;\n }\n}\n\nasync function withRetries<T>(input: {\n attempts: number;\n backoffMs: number;\n action: (attempt: number) => Promise<T>;\n}): Promise<T> {\n const attempts = Math.max(1, input.attempts);\n let lastError: unknown = null;\n for (let attempt = 1; attempt <= attempts; attempt += 1) {\n try {\n return await input.action(attempt);\n } catch (err: any) {\n lastError = err;\n const retryable = Boolean(err?.retryable);\n const isLast = attempt >= attempts;\n if (!retryable || isLast) {\n break;\n }\n const backoff = Math.max(0, input.backoffMs) * attempt;\n await sleep(backoff);\n }\n }\n throw lastError;\n}\n\nasync function postPublishBundle(input: {\n publishUrl: string;\n token?: string;\n apiKey?: string;\n metadataHeaders?: {\n meta: string;\n signature: string;\n };\n versionConflictPolicy: \"fail\" | \"allow\";\n releaseChannel: string;\n registryTarget?: string;\n idempotencyKey?: string;\n timeoutMs: number;\n retryAttempts: number;\n retryBackoffMs: number;\n payload: unknown;\n}) {\n return withRetries({\n attempts: input.retryAttempts,\n backoffMs: input.retryBackoffMs,\n action: async (attempt) => {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), input.timeoutMs);\n try {\n const headers = new Headers({ \"content-type\": \"application/json\" });\n if (input.token) {\n headers.set(\"authorization\", `Bearer ${input.token}`);\n }\n if (input.apiKey) {\n headers.set(\"x-api-key\", input.apiKey);\n }\n if (input.metadataHeaders) {\n headers.set(\"x-xapps-meta\", input.metadataHeaders.meta);\n headers.set(\"x-xapps-meta-signature\", input.metadataHeaders.signature);\n }\n headers.set(\"x-xapps-version-conflict-policy\", input.versionConflictPolicy);\n headers.set(\"x-xapps-release-channel\", input.releaseChannel);\n if (input.registryTarget) {\n headers.set(\"x-xapps-registry-target\", input.registryTarget);\n }\n if (input.idempotencyKey) {\n headers.set(\"x-idempotency-key\", input.idempotencyKey);\n }\n const res = await fetch(input.publishUrl, {\n method: \"POST\",\n headers,\n body: JSON.stringify(input.payload),\n signal: controller.signal,\n });\n if (!res.ok) {\n const body = await res.text().catch(() => \"\");\n if (res.status === 409) {\n const details = normalizeRemoteErrorDetails(body);\n const looksLikeConflict =\n detectPublishConflict(body) || details.includes(\"already_exists\");\n if (looksLikeConflict) {\n return {\n status: res.status,\n attempt,\n outcome: \"already_exists\" as const,\n detail: details,\n };\n }\n }\n const message = buildRemoteHttpFailureMessage({\n channel: \"publish\",\n status: res.status,\n url: input.publishUrl,\n bodyText: body,\n });\n throw makeRetryableError(message, isRetryableStatus(res.status));\n }\n const contentType = String(res.headers.get(\"content-type\") || \"\").toLowerCase();\n if (contentType.includes(\"application/json\")) {\n const payloadText = await res.text().catch(() => \"\");\n const trimmed = payloadText.trim();\n if (trimmed.length > 0) {\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed);\n } catch {\n throw makeRetryableError(\n `Remote publish returned malformed JSON ack url=${input.publishUrl}`,\n false,\n );\n }\n if (isPlainObject(parsed) && (parsed as any).ok === false) {\n const detail = normalizeRemoteErrorDetails(trimmed);\n throw makeRetryableError(\n `Remote publish rejected by ack url=${input.publishUrl} ${detail}`,\n false,\n );\n }\n if (isPlainObject(parsed)) {\n const ack = parsePublishAck(parsed);\n const outcome = ack.outcome || \"\";\n if (outcome === \"updated\") {\n return {\n status: res.status,\n attempt,\n outcome: \"updated\" as const,\n ...(ack.releaseId ? { releaseId: ack.releaseId } : {}),\n ...(ack.registryEntry ? { registryEntry: ack.registryEntry } : {}),\n ...(ack.provider ? { provider: ack.provider } : {}),\n };\n }\n if (outcome === \"already_exists\") {\n return {\n status: res.status,\n attempt,\n outcome: \"already_exists\" as const,\n ...(ack.releaseId ? { releaseId: ack.releaseId } : {}),\n ...(ack.registryEntry ? { registryEntry: ack.registryEntry } : {}),\n ...(ack.provider ? { provider: ack.provider } : {}),\n };\n }\n if (ack.hasOutcomeSignal && !outcome) {\n throw makeRetryableError(\n `Remote publish returned unsupported outcome url=${input.publishUrl}`,\n false,\n );\n }\n if (ack.releaseId || ack.registryEntry || ack.provider) {\n return {\n status: res.status,\n attempt,\n outcome: \"created\" as const,\n ...(ack.releaseId ? { releaseId: ack.releaseId } : {}),\n ...(ack.registryEntry ? { registryEntry: ack.registryEntry } : {}),\n ...(ack.provider ? { provider: ack.provider } : {}),\n };\n }\n }\n }\n }\n return { status: res.status, attempt, outcome: \"created\" as const };\n } catch (err: any) {\n if (err?.name === \"AbortError\") {\n throw makeRetryableError(\n `Remote publish timed out after ${input.timeoutMs}ms url=${input.publishUrl}`,\n true,\n );\n }\n if (err?.retryable) {\n throw err;\n }\n throw makeRetryableError(\n `Remote publish request failed url=${input.publishUrl} cause=${err?.message || String(err)}`,\n true,\n );\n } finally {\n clearTimeout(timer);\n }\n },\n });\n}\n\nasync function runPublish(args: CliArgs) {\n const from = argString(args, \"from\");\n if (!from) {\n throw new Error(\"Missing required argument: --from <manifest.json>\");\n }\n const dryRun = argFlag(args, \"dry-run\");\n const force = argFlag(args, \"force\");\n const filePath = path.resolve(process.cwd(), from);\n const sourceManifestObject = readJsonFile(from) as Record<string, unknown>;\n if (\n !sourceManifestObject ||\n typeof sourceManifestObject !== \"object\" ||\n Array.isArray(sourceManifestObject)\n ) {\n throw new CliError(\"CLI_INVALID_ARGS\", `Manifest file must contain a JSON object: ${filePath}`);\n }\n const replaceRules = [\n ...argStrings(args, \"replace\").map(parseManifestReplaceLiteral),\n ...argStrings(args, \"replace-env\").map(parseManifestReplaceEnv),\n ];\n const bumpVersionKind = parseVersionBumpKind(argString(args, \"bump-version\"));\n const writeManifestVersion = argFlag(args, \"write-manifest-version\");\n const allowUnresolvedPlaceholders = argFlag(args, \"allow-unresolved-placeholders\");\n if (writeManifestVersion && !bumpVersionKind) {\n throw new CliError(\n \"CLI_INVALID_ARGS\",\n \"--write-manifest-version requires --bump-version patch|minor|major\",\n );\n }\n\n let manifestSourceForPublish = JSON.parse(JSON.stringify(sourceManifestObject)) as Record<\n string,\n unknown\n >;\n if (replaceRules.length > 0) {\n manifestSourceForPublish = applyManifestReplaceRulesDeep(\n manifestSourceForPublish,\n replaceRules,\n );\n }\n const sourceVersionBeforeBump = String(manifestSourceForPublish.version ?? \"\").trim();\n let sourceVersionAfterBump = sourceVersionBeforeBump;\n if (bumpVersionKind) {\n sourceVersionAfterBump = bumpSemverVersionOrThrow(sourceVersionBeforeBump, bumpVersionKind);\n manifestSourceForPublish.version = sourceVersionAfterBump;\n }\n const unresolvedPlaceholders = findUnresolvedPlaceholderTokens(manifestSourceForPublish);\n if (unresolvedPlaceholders.length > 0 && !allowUnresolvedPlaceholders) {\n throw new CliError(\n \"CLI_INVALID_ARGS\",\n `Manifest contains unresolved placeholders after replacements: ${unresolvedPlaceholders.join(\", \")}`,\n { placeholders: unresolvedPlaceholders, manifest: filePath },\n );\n }\n const manifest = parseXappManifest(manifestSourceForPublish);\n const { profile } = getProfile(args);\n const publishUrlRaw =\n argString(args, \"publish-url\") || process.env.XAPPS_CLI_PUBLISH_URL || profile.publishUrl;\n const publishUrl = publishUrlRaw ? parseHttpUrlOrThrow(publishUrlRaw, \"--publish-url\") : \"\";\n const publisherGatewayUrlRaw =\n argString(args, \"publisher-gateway-url\") || process.env.XAPPS_CLI_PUBLISHER_GATEWAY_URL;\n const publisherGatewayUrl = publisherGatewayUrlRaw\n ? parseHttpUrlOrThrow(publisherGatewayUrlRaw, \"--publisher-gateway-url\")\n : \"\";\n const publisherGatewayApiBaseUrl = publisherGatewayUrl\n ? normalizePublisherGatewayApiBaseUrl(publisherGatewayUrl)\n : \"\";\n const targetClientSlug = argString(args, \"target-client-slug\", \"target_client_slug\");\n const token = argString(args, \"token\") || process.env.XAPPS_CLI_TOKEN || profile.token;\n const apiKey =\n argString(args, \"api-key\", \"apiKey\") || process.env.XAPPS_CLI_API_KEY || profile.apiKey;\n const signingKey =\n argString(args, \"signing-key\") || process.env.XAPPS_CLI_SIGNING_KEY || profile.signingKey;\n const versionConflictPolicy = parseVersionConflictPolicy(\n argString(args, \"version-conflict\"),\n profile.versionConflict || \"fail\",\n );\n const releaseChannel = parseReleaseLabel(\n argString(args, \"release-channel\") ||\n process.env.XAPPS_CLI_RELEASE_CHANNEL ||\n profile.releaseChannel,\n \"stable\",\n \"--release-channel\",\n );\n const registryTarget = parseReleaseLabel(\n argString(args, \"registry-target\") ||\n process.env.XAPPS_CLI_REGISTRY_TARGET ||\n profile.registryTarget,\n \"\",\n \"--registry-target\",\n );\n const retryAttempts = parsePositiveIntOrThrow(\n argString(args, \"retry-attempts\"),\n 1,\n \"--retry-attempts\",\n );\n const retryBackoffMs = parsePositiveIntOrThrow(\n argString(args, \"retry-backoff-ms\"),\n 250,\n \"--retry-backoff-ms\",\n );\n const timeoutMsStrict = parsePositiveIntOrThrow(\n argString(args, \"timeout-ms\"),\n 10000,\n \"--timeout-ms\",\n );\n\n let manifestForPublish = manifest as Record<string, unknown>;\n if (targetClientSlug) {\n if (!publisherGatewayApiBaseUrl) {\n throw new CliError(\n \"CLI_INVALID_ARGS\",\n \"Resolving --target-client-slug requires --publisher-gateway-url (tenant slug lookup uses publisher API).\",\n { target_client_slug: targetClientSlug },\n );\n }\n const client = createPublisherApiClient({\n baseUrl: publisherGatewayApiBaseUrl,\n apiKey,\n token,\n });\n let clientsPayload: { items: Array<Record<string, unknown>> };\n try {\n clientsPayload = (await client.listClients()) as { items: Array<Record<string, unknown>> };\n } catch (err: any) {\n if (err instanceof PublisherApiClientError) {\n throw new CliError(\n `CLI_${err.code}`,\n `Publisher tenant lookup failed: ${err.message}`,\n {\n url: publisherGatewayUrl,\n api_base_url: publisherGatewayApiBaseUrl,\n status: err.status,\n details: err.details,\n target_client_slug: targetClientSlug,\n },\n { exitCode: 4 },\n );\n }\n throw err;\n }\n const matches = clientsPayload.items.filter(\n (item) => String(item.slug || \"\").trim() === targetClientSlug,\n );\n if (matches.length === 0) {\n throw new CliError(\n \"CLI_INVALID_ARGS\",\n `Tenant slug not found via publisher API: ${targetClientSlug}`,\n { target_client_slug: targetClientSlug, api_base_url: publisherGatewayApiBaseUrl },\n );\n }\n if (matches.length > 1) {\n throw new CliError(\n \"CLI_INVALID_ARGS\",\n `Tenant slug resolved ambiguously via publisher API: ${targetClientSlug}`,\n { target_client_slug: targetClientSlug, matches: matches.map((m) => m.id || m.slug) },\n );\n }\n const resolvedClientId = String(matches[0]?.id || \"\").trim();\n if (!resolvedClientId) {\n throw new CliError(\n \"CLI_INVALID_ARGS\",\n `Publisher API returned tenant without id for slug: ${targetClientSlug}`,\n { target_client_slug: targetClientSlug, match: matches[0] },\n );\n }\n manifestForPublish = {\n ...(manifest as Record<string, unknown>),\n target_client_id: resolvedClientId,\n };\n }\n\n if (\n !Object.prototype.hasOwnProperty.call(manifestForPublish, \"target_client_id\") ||\n !String((manifestForPublish as any).target_client_id || \"\").trim()\n ) {\n throw new CliError(\n \"CLI_INVALID_ARGS\",\n \"Manifest publish requires target_client_id (tenant-aware publish is required). Use manifest.target_client_id or --target-client-slug with --publisher-gateway-url.\",\n { manifest: filePath },\n );\n }\n\n const manifestJson = JSON.stringify(manifestForPublish);\n const manifestSha256 = createHash(\"sha256\").update(manifestJson).digest(\"hex\");\n const idempotencyKey =\n argString(args, \"idempotency-key\") ||\n `xapps-cli:${manifest.slug}:${manifest.version}:${manifestSha256.slice(0, 16)}`;\n const outPath = resolvePublishBundlePath(argString(args, \"out\"), manifest.slug, manifest.version);\n\n const summary = {\n slug: manifest.slug,\n version: manifest.version,\n tools: manifest.tools.length,\n widgets: manifest.widgets.length,\n manifest_sha256: manifestSha256,\n release_channel: releaseChannel,\n ...(registryTarget ? { registry_target: registryTarget } : {}),\n };\n\n if (dryRun) {\n console.log(\n `Publish dry-run (no deploy)\\nManifest: ${filePath}\\nBundle target: ${outPath}\\nRemote target: ${publishUrl || \"(none)\"}\\nSummary: ${JSON.stringify(summary)}`,\n );\n return;\n }\n\n if (!argFlag(args, \"yes\")) {\n await confirmPublishOrThrow(summary);\n }\n\n if (!force && fs.existsSync(outPath)) {\n throw new Error(`Publish bundle already exists: ${outPath} (use --force to overwrite)`);\n }\n\n if (writeManifestVersion) {\n if (sourceVersionBeforeBump !== sourceVersionAfterBump) {\n const sourceUpdated = {\n ...(sourceManifestObject as Record<string, unknown>),\n version: sourceVersionAfterBump,\n };\n fs.writeFileSync(filePath, `${JSON.stringify(sourceUpdated, null, 2)}\\n`);\n }\n }\n\n const bundle = {\n schema_version: \"xapps.publish.v0\",\n generated_at: new Date().toISOString(),\n manifest_source: filePath,\n summary,\n ...(replaceRules.length > 0\n ? {\n manifest_transforms: {\n replacements: replaceRules.map((rule) => ({\n from: rule.from,\n source: rule.source,\n ...(rule.sourceName ? { source_name: rule.sourceName } : {}),\n })),\n ...(bumpVersionKind\n ? {\n version_bump: {\n kind: bumpVersionKind,\n from: sourceVersionBeforeBump,\n to: sourceVersionAfterBump,\n ...(writeManifestVersion ? { wrote_source_manifest_version: true } : {}),\n },\n }\n : {}),\n },\n }\n : bumpVersionKind\n ? {\n manifest_transforms: {\n version_bump: {\n kind: bumpVersionKind,\n from: sourceVersionBeforeBump,\n to: sourceVersionAfterBump,\n ...(writeManifestVersion ? { wrote_source_manifest_version: true } : {}),\n },\n },\n }\n : {}),\n release: {\n channel: releaseChannel,\n ...(registryTarget ? { registry_target: registryTarget } : {}),\n version_conflict_policy: versionConflictPolicy,\n },\n manifest: manifestForPublish,\n };\n\n fs.mkdirSync(path.dirname(outPath), { recursive: true });\n fs.writeFileSync(outPath, JSON.stringify(bundle, null, 2));\n const lines: string[] = [\n `Publish bundle created: ${outPath}`,\n `Summary: ${JSON.stringify(summary)}`,\n ];\n const metadataPayload = {\n generated_at: bundle.generated_at,\n idempotency_key: idempotencyKey,\n manifest_sha256: manifestSha256,\n slug: manifest.slug,\n version: manifest.version,\n release_channel: releaseChannel,\n ...(registryTarget ? { registry_target: registryTarget } : {}),\n };\n const metadataJson = stableStringify(metadataPayload);\n const metadataSignature = signingKey\n ? `hmac-sha256:${base64url(createHmac(\"sha256\", signingKey).update(metadataJson).digest())}`\n : \"\";\n if (publishUrl) {\n const remote = await postPublishBundle({\n publishUrl,\n token,\n apiKey,\n metadataHeaders: signingKey\n ? { meta: metadataJson, signature: metadataSignature }\n : undefined,\n versionConflictPolicy,\n releaseChannel,\n registryTarget,\n idempotencyKey,\n timeoutMs: timeoutMsStrict,\n retryAttempts,\n retryBackoffMs,\n payload: bundle,\n });\n if (remote.outcome === \"already_exists\") {\n if (versionConflictPolicy === \"allow\") {\n lines.push(\n `Remote publish version conflict allowed: outcome=already_exists url=${publishUrl} attempts=${remote.attempt}`,\n );\n if (remote.releaseId || remote.registryEntry || remote.provider) {\n lines.push(\n `Remote release metadata: release_id=${remote.releaseId || \"-\"} registry_entry=${remote.registryEntry || \"-\"} provider=${remote.provider || \"-\"}`,\n );\n }\n console.log(lines.join(\"\\n\"));\n return;\n }\n throw new CliError(\n \"CLI_VERSION_CONFLICT\",\n `Remote publish version conflict: already_exists url=${publishUrl} (set --version-conflict allow to continue)`,\n { url: publishUrl, outcome: remote.outcome },\n { exitCode: 3 },\n );\n }\n lines.push(\n `Remote publish delivered: status=${remote.status} url=${publishUrl} attempts=${remote.attempt} outcome=${remote.outcome}`,\n );\n if (remote.releaseId || remote.registryEntry || remote.provider) {\n lines.push(\n `Remote release metadata: release_id=${remote.releaseId || \"-\"} registry_entry=${remote.registryEntry || \"-\"} provider=${remote.provider || \"-\"}`,\n );\n }\n }\n if (publisherGatewayApiBaseUrl) {\n try {\n const client = createPublisherApiClient({\n baseUrl: publisherGatewayApiBaseUrl,\n apiKey,\n token,\n });\n const result = await client.importAndPublishManifest(manifestForPublish);\n const versionStatus =\n result && result.version && typeof result.version === \"object\"\n ? String((result.version as any).status || \"\")\n : \"\";\n lines.push(\n `Publisher gateway import+publish delivered: base=${publisherGatewayApiBaseUrl} xapp_id=${result.xappId} version_id=${result.versionId}${versionStatus ? ` status=${versionStatus}` : \"\"}`,\n );\n } catch (err: any) {\n if (err instanceof PublisherApiClientError) {\n if (err.code === \"PUBLISHER_API_CONFLICT\") {\n const conflictCode = String((err.details as any)?.code || \"\").trim();\n const isVersionConflict =\n conflictCode === \"VERSION_CONFLICT\" ||\n /version.*exist/i.test(String(err.message || \"\"));\n if (isVersionConflict) {\n if (versionConflictPolicy === \"allow\") {\n lines.push(\n `Publisher gateway version conflict allowed: base=${publisherGatewayApiBaseUrl} outcome=already_exists`,\n );\n console.log(lines.join(\"\\n\"));\n return;\n }\n throw new CliError(\n \"CLI_VERSION_CONFLICT\",\n `Publisher gateway version conflict: already_exists base=${publisherGatewayApiBaseUrl} (set --version-conflict allow to continue)`,\n {\n url: publisherGatewayUrl,\n api_base_url: publisherGatewayApiBaseUrl,\n status: err.status,\n details: err.details,\n },\n { exitCode: 3 },\n );\n }\n }\n throw new CliError(\n `CLI_${err.code}`,\n `Publisher gateway publish failed: ${err.message}`,\n {\n url: publisherGatewayUrl,\n api_base_url: publisherGatewayApiBaseUrl,\n status: err.status,\n details: err.details,\n },\n { exitCode: 4 },\n );\n }\n throw err;\n }\n }\n console.log(lines.join(\"\\n\"));\n}\n\ntype PublishBundleSummary = {\n bundle_path: string;\n generated_at: string;\n slug: string;\n version: string;\n tools: number;\n widgets: number;\n manifest_sha256: string;\n};\n\ntype RemoteLogsResult = {\n entries: PublishBundleSummary[];\n nextCursor?: string;\n leaseId?: string;\n checkpoint?: string;\n};\n\nfunction normalizeBundleSummary(\n value: unknown,\n fallbackPath: string,\n fallbackGeneratedAt = \"\",\n): PublishBundleSummary | null {\n if (!isPlainObject(value)) return null;\n const bundlePath =\n typeof value.bundle_path === \"string\"\n ? value.bundle_path\n : typeof value.path === \"string\"\n ? value.path\n : fallbackPath;\n const generatedAt =\n typeof value.generated_at === \"string\"\n ? value.generated_at\n : typeof value.created_at === \"string\"\n ? value.created_at\n : fallbackGeneratedAt;\n const slug = typeof value.slug === \"string\" ? value.slug.trim() : \"\";\n const version = typeof value.version === \"string\" ? value.version.trim() : \"\";\n const tools = typeof value.tools === \"number\" ? value.tools : NaN;\n const widgets = typeof value.widgets === \"number\" ? value.widgets : NaN;\n const manifestSha256 = typeof value.manifest_sha256 === \"string\" ? value.manifest_sha256 : \"\";\n if (!bundlePath || !generatedAt || !slug || !version) return null;\n if (!Number.isFinite(tools) || tools < 0 || !Number.isFinite(widgets) || widgets < 0) return null;\n return {\n bundle_path: bundlePath,\n generated_at: generatedAt,\n slug,\n version,\n tools,\n widgets,\n manifest_sha256: manifestSha256,\n };\n}\n\nfunction toBundleSummary(bundlePath: string, payload: unknown): PublishBundleSummary {\n if (!isPlainObject(payload)) {\n throw new Error(`Invalid bundle payload in ${bundlePath}`);\n }\n if (payload.schema_version !== \"xapps.publish.v0\") {\n throw new Error(`Unsupported bundle schema in ${bundlePath}`);\n }\n const summary = isPlainObject(payload.summary) ? payload.summary : {};\n return {\n bundle_path: bundlePath,\n generated_at: typeof payload.generated_at === \"string\" ? payload.generated_at : \"\",\n slug: typeof summary.slug === \"string\" ? summary.slug : \"\",\n version: typeof summary.version === \"string\" ? summary.version : \"\",\n tools: typeof summary.tools === \"number\" ? summary.tools : 0,\n widgets: typeof summary.widgets === \"number\" ? summary.widgets : 0,\n manifest_sha256: typeof summary.manifest_sha256 === \"string\" ? summary.manifest_sha256 : \"\",\n };\n}\n\nfunction collectBundleFiles(dirPath: string): string[] {\n const out: string[] = [];\n if (!fs.existsSync(dirPath)) {\n return out;\n }\n const entries = fs.readdirSync(dirPath, { withFileTypes: true });\n for (const entry of entries) {\n const full = path.join(dirPath, entry.name);\n if (entry.isDirectory()) {\n out.push(...collectBundleFiles(full));\n continue;\n }\n if (entry.isFile() && entry.name === \"bundle.json\") {\n out.push(full);\n }\n }\n return out;\n}\n\nasync function fetchRemoteLogs(input: {\n logsUrl: string;\n token?: string;\n apiKey?: string;\n timeoutMs: number;\n limit: number;\n cursor?: string;\n leaseId?: string;\n checkpoint?: string;\n severity?: string;\n since?: string;\n until?: string;\n retryAttempts: number;\n retryBackoffMs: number;\n}): Promise<RemoteLogsResult> {\n return withRetries({\n attempts: input.retryAttempts,\n backoffMs: input.retryBackoffMs,\n action: async () => {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), input.timeoutMs);\n try {\n const headers = new Headers();\n if (input.token) headers.set(\"authorization\", `Bearer ${input.token}`);\n if (input.apiKey) headers.set(\"x-api-key\", input.apiKey);\n const url = new URL(input.logsUrl);\n if (!url.searchParams.has(\"limit\")) {\n url.searchParams.set(\"limit\", String(input.limit));\n }\n if (input.cursor) url.searchParams.set(\"cursor\", input.cursor);\n if (input.leaseId) url.searchParams.set(\"lease_id\", input.leaseId);\n if (input.checkpoint) url.searchParams.set(\"checkpoint\", input.checkpoint);\n if (input.severity) url.searchParams.set(\"severity\", input.severity);\n if (input.since) url.searchParams.set(\"since\", input.since);\n if (input.until) url.searchParams.set(\"until\", input.until);\n const res = await fetch(url, {\n method: \"GET\",\n headers,\n signal: controller.signal,\n });\n if (!res.ok) {\n const body = await res.text().catch(() => \"\");\n const message = buildRemoteHttpFailureMessage({\n channel: \"logs\",\n status: res.status,\n url: input.logsUrl,\n bodyText: body,\n });\n throw makeRetryableError(message, isRetryableStatus(res.status));\n }\n const payload = await res.json();\n const rowsRaw = Array.isArray(payload)\n ? payload\n : isPlainObject(payload) && Array.isArray((payload as any).entries)\n ? (payload as any).entries\n : null;\n if (!rowsRaw) {\n throw makeRetryableError(\n `Remote logs returned malformed payload url=${input.logsUrl}`,\n false,\n );\n }\n const rows = rowsRaw\n .map((entry) => normalizeBundleSummary(entry, \"remote://logs\"))\n .filter((entry): entry is PublishBundleSummary => !!entry);\n if (rowsRaw.length > 0 && rows.length === 0) {\n throw makeRetryableError(\n `Remote logs returned malformed entries url=${input.logsUrl}`,\n false,\n );\n }\n const nextCursor =\n isPlainObject(payload) &&\n (typeof (payload as any).next_cursor === \"string\" ||\n typeof (payload as any).nextCursor === \"string\")\n ? String((payload as any).next_cursor ?? (payload as any).nextCursor ?? \"\")\n : \"\";\n const payloadHasLease =\n isPlainObject(payload) &&\n (Object.prototype.hasOwnProperty.call(payload as object, \"lease_id\") ||\n Object.prototype.hasOwnProperty.call(payload as object, \"leaseId\"));\n const payloadHasCheckpoint =\n isPlainObject(payload) &&\n (Object.prototype.hasOwnProperty.call(payload as object, \"checkpoint\") ||\n Object.prototype.hasOwnProperty.call(payload as object, \"checkpoint_token\") ||\n Object.prototype.hasOwnProperty.call(payload as object, \"checkpointToken\"));\n const leaseId =\n isPlainObject(payload) &&\n (typeof (payload as any).lease_id === \"string\" ||\n typeof (payload as any).leaseId === \"string\")\n ? String((payload as any).lease_id ?? (payload as any).leaseId ?? \"\")\n : \"\";\n const checkpoint =\n isPlainObject(payload) &&\n (typeof (payload as any).checkpoint === \"string\" ||\n typeof (payload as any).checkpoint_token === \"string\" ||\n typeof (payload as any).checkpointToken === \"string\")\n ? String(\n (payload as any).checkpoint ??\n (payload as any).checkpoint_token ??\n (payload as any).checkpointToken ??\n \"\",\n )\n : \"\";\n if (payloadHasLease && !leaseId) {\n throw makeRetryableError(\n `Remote logs returned malformed lease_id field url=${input.logsUrl}`,\n false,\n );\n }\n if (payloadHasCheckpoint && !checkpoint) {\n throw makeRetryableError(\n `Remote logs returned malformed checkpoint field url=${input.logsUrl}`,\n false,\n );\n }\n return {\n entries: rows\n .sort((a, b) => String(b.generated_at).localeCompare(String(a.generated_at)))\n .slice(0, input.limit),\n ...(nextCursor ? { nextCursor } : {}),\n ...(leaseId ? { leaseId } : {}),\n ...(checkpoint ? { checkpoint } : {}),\n };\n } catch (err: any) {\n if (err?.name === \"AbortError\") {\n throw makeRetryableError(\n `Remote logs timed out after ${input.timeoutMs}ms url=${input.logsUrl}`,\n true,\n );\n }\n if (err?.retryable) {\n throw err;\n }\n throw makeRetryableError(\n `Remote logs request failed url=${input.logsUrl} cause=${err?.message || String(err)}`,\n true,\n );\n } finally {\n clearTimeout(timer);\n }\n },\n });\n}\n\nasync function runLogs(args: CliArgs) {\n const { profile } = getProfile(args);\n const json = argFlag(args, \"json\");\n const limit = parsePositiveIntOrThrow(argString(args, \"limit\"), 10, \"--limit\");\n const from = argString(args, \"from\");\n const dir = path.resolve(process.cwd(), argString(args, \"dir\") || DEFAULT_PUBLISH_BUNDLES_DIR);\n const logsUrlRaw =\n argString(args, \"logs-url\") || process.env.XAPPS_CLI_LOGS_URL || profile.logsUrl;\n const logsUrl = logsUrlRaw ? parseHttpUrlOrThrow(logsUrlRaw, \"--logs-url\") : \"\";\n const token = argString(args, \"token\") || process.env.XAPPS_CLI_TOKEN || profile.token;\n const apiKey =\n argString(args, \"api-key\", \"apiKey\") || process.env.XAPPS_CLI_API_KEY || profile.apiKey;\n const cursor = argString(args, \"cursor\");\n const leaseId = argString(args, \"lease-id\");\n const checkpoint = argString(args, \"checkpoint\");\n const severity = argString(args, \"severity\");\n const since = argString(args, \"since\");\n const until = argString(args, \"until\");\n const follow = argFlag(args, \"follow\");\n const followCursorFile = argString(args, \"follow-cursor-file\");\n const followIntervalMs = parsePositiveIntOrThrow(\n argString(args, \"follow-interval-ms\"),\n 2000,\n \"--follow-interval-ms\",\n );\n const followMaxCycles = parsePositiveIntOrThrow(\n argString(args, \"follow-max-cycles\"),\n 1,\n \"--follow-max-cycles\",\n );\n const timeoutMs = parsePositiveIntOrThrow(argString(args, \"timeout-ms\"), 10000, \"--timeout-ms\");\n const retryAttempts = parsePositiveIntOrThrow(\n argString(args, \"retry-attempts\"),\n 1,\n \"--retry-attempts\",\n );\n const retryBackoffMs = parsePositiveIntOrThrow(\n argString(args, \"retry-backoff-ms\"),\n 250,\n \"--retry-backoff-ms\",\n );\n\n const localSummaries = logsUrl\n ? null\n : (() => {\n const bundleFiles = from ? [path.resolve(process.cwd(), from)] : collectBundleFiles(dir);\n if (!bundleFiles.length) {\n throw new Error(\n from\n ? `Bundle not found: ${path.resolve(process.cwd(), from)}`\n : `No bundles found in ${dir}`,\n );\n }\n return bundleFiles\n .map((file) => toBundleSummary(file, readJsonFile(file)))\n .sort((a, b) => String(b.generated_at).localeCompare(String(a.generated_at)))\n .slice(0, limit);\n })();\n\n async function printRows(\n rows: PublishBundleSummary[],\n nextCursor?: string,\n leaseId?: string,\n checkpoint?: string,\n ) {\n if (!rows.length) return;\n if (json) {\n console.log(\n JSON.stringify(\n {\n count: rows.length,\n entries: rows,\n ...(nextCursor ? { next_cursor: nextCursor } : {}),\n ...(leaseId ? { lease_id: leaseId } : {}),\n ...(checkpoint ? { checkpoint } : {}),\n },\n null,\n 2,\n ),\n );\n return;\n }\n const lines: string[] = [`Logs entries: ${rows.length}`];\n for (const entry of rows) {\n lines.push(\n [\n `- ${entry.slug}@${entry.version}`,\n `generated_at=${entry.generated_at || \"n/a\"}`,\n `tools=${entry.tools}`,\n `widgets=${entry.widgets}`,\n `bundle=${entry.bundle_path}`,\n ].join(\" \"),\n );\n }\n if (nextCursor) lines.push(`next_cursor=${nextCursor}`);\n if (leaseId) lines.push(`lease_id=${leaseId}`);\n if (checkpoint) lines.push(`checkpoint=${checkpoint}`);\n console.log(lines.join(\"\\n\"));\n }\n\n if (!logsUrl && localSummaries) {\n if (!localSummaries.length) {\n throw new Error(\n from\n ? `Bundle not found: ${path.resolve(process.cwd(), from)}`\n : `No bundles found in ${dir}`,\n );\n }\n await printRows(localSummaries);\n return;\n }\n\n if (!logsUrl) return;\n\n let currentCursor = cursor || \"\";\n let currentLeaseId = leaseId || \"\";\n let currentCheckpoint = checkpoint || \"\";\n if (followCursorFile) {\n const state = loadLogsResumeState(followCursorFile);\n if (!currentCursor && state.cursor) currentCursor = state.cursor;\n if (state.leaseId) currentLeaseId = state.leaseId;\n if (state.checkpoint) currentCheckpoint = state.checkpoint;\n }\n let cycles = 0;\n let seen = 0;\n while (true) {\n cycles += 1;\n try {\n const remote = await fetchRemoteLogs({\n logsUrl,\n token,\n apiKey,\n timeoutMs,\n limit,\n cursor: currentCursor || undefined,\n leaseId: currentLeaseId || undefined,\n checkpoint: currentCheckpoint || undefined,\n severity,\n since,\n until,\n retryAttempts,\n retryBackoffMs,\n });\n if (remote.entries.length) {\n seen += remote.entries.length;\n await printRows(remote.entries, remote.nextCursor, remote.leaseId, remote.checkpoint);\n } else if (!follow && seen === 0) {\n throw new Error(`No log entries returned by remote endpoint: ${logsUrl}`);\n }\n if (remote.leaseId) currentLeaseId = remote.leaseId;\n if (remote.checkpoint) currentCheckpoint = remote.checkpoint;\n if (remote.nextCursor) {\n currentCursor = remote.nextCursor;\n }\n if (followCursorFile) {\n saveLogsResumeState(followCursorFile, {\n ...(currentCursor ? { cursor: currentCursor } : {}),\n ...(currentLeaseId ? { leaseId: currentLeaseId } : {}),\n ...(currentCheckpoint ? { checkpoint: currentCheckpoint } : {}),\n });\n }\n } catch (err: any) {\n if (!follow) throw err;\n console.error(`[logs-follow] reconnecting after error: ${err?.message || String(err)}`);\n }\n if (!follow) return;\n if (cycles >= followMaxCycles) return;\n await sleep(followIntervalMs);\n }\n}\n\nasync function runTunnel(args: CliArgs) {\n const { profile } = getProfile(args);\n const target = argString(args, \"target\");\n if (!target) {\n throw new Error(\"Missing required argument: --target <base-url>\");\n }\n const targetBase = parseHttpUrlOrThrow(String(target).replace(/\\/$/, \"\"), \"--target\").replace(\n /\\/$/,\n \"\",\n );\n const targetHostname = new URL(targetBase).hostname.toLowerCase();\n const allowTargetHosts = parseCsvSet(\n argString(args, \"allow-target-hosts\") || process.env.XAPPS_CLI_TUNNEL_ALLOW_TARGET_HOSTS,\n \"127.0.0.1,localhost,::1\",\n );\n if (!allowTargetHosts.has(targetHostname)) {\n throw new CliError(\n \"CLI_TUNNEL_TARGET_NOT_ALLOWED\",\n `Tunnel target host is not allowed: ${targetHostname} (allowlist=${Array.from(allowTargetHosts).join(\",\")})`,\n { targetHostname, allowlist: Array.from(allowTargetHosts) },\n );\n }\n const host = argString(args, \"host\") || \"127.0.0.1\";\n const port = parseListenPortOrThrow(argString(args, \"listen-port\"), 4041);\n const sessionFile = argString(args, \"session-file\");\n const sessionIdArg = argString(args, \"session-id\");\n const sessionPolicy = parseTunnelSessionPolicy(argString(args, \"session-policy\"), \"reuse\");\n const sessionStateFromFile = sessionFile ? loadTunnelSessionState(sessionFile) : null;\n let sessionId = \"\";\n let sessionSource: \"generated\" | \"arg\" | \"file\" | \"rotated\" = \"generated\";\n if (sessionPolicy === \"rotate\") {\n if (sessionIdArg) {\n sessionId = sessionIdArg;\n sessionSource = \"arg\";\n } else {\n sessionId = randomSessionId(\"tnl\");\n sessionSource = \"rotated\";\n }\n } else if (sessionIdArg) {\n if (\n sessionStateFromFile?.sessionId &&\n sessionStateFromFile.sessionId !== sessionIdArg &&\n sessionPolicy !== \"rotate\"\n ) {\n throw new CliError(\n \"CLI_TUNNEL_SESSION_CONFLICT\",\n `Provided --session-id does not match persisted session file (${sessionFile})`,\n {\n provided_session_id: sessionIdArg,\n persisted_session_id: sessionStateFromFile.sessionId,\n session_file: sessionFile,\n session_policy: sessionPolicy,\n },\n );\n }\n sessionId = sessionIdArg;\n sessionSource = \"arg\";\n } else if (sessionStateFromFile?.sessionId) {\n const persistedTarget = String(sessionStateFromFile.target || \"\").trim();\n if (persistedTarget && persistedTarget !== targetBase) {\n if (sessionPolicy === \"require\") {\n throw new CliError(\n \"CLI_TUNNEL_SESSION_TARGET_MISMATCH\",\n `Persisted tunnel session target does not match current --target (${persistedTarget} != ${targetBase})`,\n {\n persisted_target: persistedTarget,\n current_target: targetBase,\n session_file: sessionFile || \"\",\n },\n );\n }\n sessionId = randomSessionId(\"tnl\");\n sessionSource = \"rotated\";\n } else {\n sessionId = sessionStateFromFile.sessionId;\n sessionSource = \"file\";\n }\n } else if (sessionPolicy === \"require\") {\n throw new CliError(\n \"CLI_TUNNEL_SESSION_REQUIRED\",\n \"Session policy 'require' needs existing --session-file state or explicit --session-id\",\n {\n session_file: sessionFile || \"\",\n session_policy: sessionPolicy,\n },\n );\n } else {\n sessionId = randomSessionId(\"tnl\");\n sessionSource = \"generated\";\n }\n if (sessionFile) {\n saveTunnelSessionState(sessionFile, {\n sessionId,\n target: targetBase,\n });\n }\n const once = argFlag(args, \"once\");\n const requiredToken =\n argString(args, \"require-auth-token\") ||\n process.env.XAPPS_CLI_TUNNEL_TOKEN ||\n profile.tunnelToken ||\n undefined;\n const upstreamTimeoutMs = parsePositiveIntOrThrow(\n argString(args, \"upstream-timeout-ms\"),\n 15000,\n \"--upstream-timeout-ms\",\n );\n const retryAttempts = parsePositiveIntOrThrow(\n argString(args, \"retry-attempts\"),\n 1,\n \"--retry-attempts\",\n );\n const retryBackoffMs = parsePositiveIntOrThrow(\n argString(args, \"retry-backoff-ms\"),\n 200,\n \"--retry-backoff-ms\",\n );\n const idempotentMethods = new Set([\"GET\", \"HEAD\", \"OPTIONS\"]);\n const startedAt = new Date().toISOString();\n let proxiedRequests = 0;\n let proxyErrors = 0;\n let lastUpstreamStatus = 0;\n\n const announce = `xapps tunnel relay\\nSession: ${sessionId}\\nSession policy: ${sessionPolicy}\\nSession source: ${sessionSource}\\nListen: http://${host}:${port}\\nTarget: ${targetBase}\\nAllowlist: ${Array.from(allowTargetHosts).join(\",\")}\\nMode: local relay baseline (no external public URL)\\nUpstream timeout: ${upstreamTimeoutMs}ms`;\n if (once) {\n console.log(announce);\n return;\n }\n\n const server = http.createServer(async (req, res) => {\n const method = (req.method || \"GET\").toUpperCase();\n const requestUrl = req.url || \"/\";\n const headerToken =\n typeof req.headers[\"x-xapps-tunnel-token\"] === \"string\"\n ? req.headers[\"x-xapps-tunnel-token\"]\n : undefined;\n const authHeader =\n typeof req.headers.authorization === \"string\" ? req.headers.authorization.trim() : \"\";\n const bearerToken = authHeader.toLowerCase().startsWith(\"bearer \")\n ? authHeader.slice(7).trim()\n : undefined;\n const suppliedToken = headerToken || bearerToken;\n if (requiredToken && suppliedToken !== requiredToken) {\n res.statusCode = 401;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(\n JSON.stringify({\n ok: false,\n error: \"tunnel_auth_required\",\n message: \"Missing or invalid tunnel auth token\",\n }),\n );\n return;\n }\n\n if (requestUrl === \"/__ready\") {\n res.statusCode = 200;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(\n JSON.stringify({\n ok: true,\n tunnel: \"ready\",\n session_id: sessionId,\n session_policy: sessionPolicy,\n session_source: sessionSource,\n target: targetBase,\n }),\n );\n return;\n }\n\n if (requestUrl === \"/__status\") {\n res.statusCode = 200;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(\n JSON.stringify({\n ok: true,\n tunnel: \"status\",\n session_id: sessionId,\n session_policy: sessionPolicy,\n session_source: sessionSource,\n session_file: sessionFile || null,\n target: targetBase,\n listen: { host, port },\n started_at: startedAt,\n proxied_requests: proxiedRequests,\n proxy_errors: proxyErrors,\n last_upstream_status: lastUpstreamStatus || null,\n }),\n );\n return;\n }\n\n const body = await readRawRequestBody(req);\n const headers = new Headers();\n for (const [key, value] of Object.entries(req.headers)) {\n if (!value) continue;\n const lower = key.toLowerCase();\n if (lower === \"host\") continue;\n if (\n lower === \"connection\" ||\n lower === \"keep-alive\" ||\n lower === \"proxy-authorization\" ||\n lower === \"proxy-authenticate\" ||\n lower === \"te\" ||\n lower === \"trailers\" ||\n lower === \"transfer-encoding\" ||\n lower === \"upgrade\"\n ) {\n continue;\n }\n if (Array.isArray(value)) headers.set(key, value.join(\", \"));\n else headers.set(key, String(value));\n }\n headers.set(\n \"x-forwarded-host\",\n appendForwardedHeader(headers.get(\"x-forwarded-host\"), `${host}:${port}`),\n );\n headers.set(\n \"x-forwarded-proto\",\n appendForwardedHeader(headers.get(\"x-forwarded-proto\"), \"http\"),\n );\n headers.set(\n \"x-forwarded-port\",\n appendForwardedHeader(headers.get(\"x-forwarded-port\"), String(port)),\n );\n if (req.socket?.remoteAddress) {\n const existingForwardedFor = headers.get(\"x-forwarded-for\");\n headers.set(\n \"x-forwarded-for\",\n appendForwardedHeader(existingForwardedFor, req.socket.remoteAddress),\n );\n }\n\n const targetUrl = `${targetBase}${requestUrl}`;\n try {\n const attempts = idempotentMethods.has(method) ? retryAttempts : 1;\n const upstream = await withRetries({\n attempts,\n backoffMs: retryBackoffMs,\n action: async () => {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), upstreamTimeoutMs);\n try {\n const resUpstream = await fetch(targetUrl, {\n method,\n headers,\n body: method === \"GET\" || method === \"HEAD\" ? undefined : body,\n signal: controller.signal,\n });\n if (isRetryableStatus(resUpstream.status)) {\n throw makeRetryableError(`upstream status ${resUpstream.status}`, true);\n }\n return resUpstream;\n } catch (err: any) {\n if (err?.name === \"AbortError\") {\n throw makeRetryableError(\"upstream timeout\", true);\n }\n if (err?.retryable) throw err;\n throw makeRetryableError(err?.message || String(err), true);\n } finally {\n clearTimeout(timer);\n }\n },\n });\n const upstreamBody = Buffer.from(await upstream.arrayBuffer());\n res.statusCode = upstream.status;\n proxiedRequests += 1;\n lastUpstreamStatus = upstream.status;\n upstream.headers.forEach((value, key) => {\n if (key.toLowerCase() === \"transfer-encoding\") return;\n res.setHeader(key, value);\n });\n res.end(upstreamBody);\n console.log(\n `[tunnel] ${method} ${requestUrl} -> ${targetUrl} status=${upstream.status} bytes=${upstreamBody.length}`,\n );\n } catch (err: any) {\n proxyErrors += 1;\n const timeout = String(err?.message || \"\")\n .toLowerCase()\n .includes(\"timeout\");\n res.statusCode = timeout ? 504 : 502;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(\n JSON.stringify({\n ok: false,\n error: timeout ? \"upstream_timeout\" : \"upstream_unreachable\",\n message: err?.message || String(err),\n }),\n );\n console.error(\n `[tunnel] upstream error ${method} ${requestUrl}: ${err?.message || String(err)}`,\n );\n }\n });\n\n await new Promise<void>((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(port, host, () => {\n server.off(\"error\", reject);\n resolve();\n });\n });\n\n console.log(announce);\n\n await new Promise<void>((resolve) => {\n const shutdown = () => server.close(() => resolve());\n process.once(\"SIGINT\", shutdown);\n process.once(\"SIGTERM\", shutdown);\n });\n}\n\nexport async function runCli(argv: string[]) {\n try {\n const { command, args } = parseArgs(argv);\n if (!command || command === \"--help\" || command === \"-h\" || command === \"help\") {\n printUsage();\n return;\n }\n\n if (command === \"import\") {\n await runImportCommand(args, {\n argString,\n argFlag,\n readInput,\n parsePositiveIntOrThrow,\n parseManifestFromFile,\n readJsonFile,\n });\n return;\n }\n if (command === \"validate\") {\n runValidateCommand(args, {\n argString,\n argFlag,\n readInput,\n parsePositiveIntOrThrow,\n parseManifestFromFile,\n readJsonFile,\n });\n return;\n }\n if (command === \"test\") {\n runTestCommand(args, {\n argString,\n argFlag,\n readInput,\n parsePositiveIntOrThrow,\n parseManifestFromFile,\n readJsonFile,\n });\n return;\n }\n if (command === \"publish\") {\n await runPublish(args);\n return;\n }\n if (command === \"logs\") {\n await runLogs(args);\n return;\n }\n if (command === \"context\") {\n const subcommand = argString(args, \"_subcommand\");\n if (subcommand !== \"export\") {\n throw new CliError(\"CLI_INVALID_ARGS\", \"Missing required subcommand: context export\");\n }\n runContextExport(args);\n return;\n }\n if (command === \"tunnel\") {\n await runTunnel(args);\n return;\n }\n if (command === \"init\") {\n runInitCommand(args, {\n argString,\n argFlag,\n readInput,\n parsePositiveIntOrThrow,\n parseManifestFromFile,\n readJsonFile,\n });\n return;\n }\n if (command === \"dev\") {\n await runDevCommand(args, {\n argString,\n argFlag,\n shellEscapeArg,\n applyFlowCommandTemplates,\n findRepoRoot,\n readJsonFile,\n parseManifestFromFile,\n runDryRun,\n buildDevRefs,\n canonicalizeJson,\n readRequestBody,\n makeCliError: (code, message, details) => new CliError(code, message, details),\n });\n return;\n }\n if (command === \"ai\") {\n const subcommand = argString(args, \"_subcommand\");\n if (subcommand === \"plan\") {\n await runAiPlanCliCommand(args, {\n argString,\n argFlag,\n shellEscapeArg,\n applyFlowCommandTemplates,\n findRepoRoot,\n readJsonFile,\n parseManifestFromFile,\n runDryRun,\n buildDevRefs,\n canonicalizeJson,\n readRequestBody,\n makeCliError: (code, message, details) => new CliError(code, message, details),\n });\n return;\n }\n if (subcommand === \"check\") {\n await runAiCheckCliCommand(args, {\n argString,\n argFlag,\n shellEscapeArg,\n applyFlowCommandTemplates,\n findRepoRoot,\n readJsonFile,\n parseManifestFromFile,\n runDryRun,\n buildDevRefs,\n canonicalizeJson,\n readRequestBody,\n makeCliError: (code, message, details) => new CliError(code, message, details),\n });\n return;\n }\n throw new CliError(\"CLI_INVALID_ARGS\", \"Missing required subcommand: ai plan|check\");\n }\n if (command === \"publisher\") {\n await runPublisherCliCommand(args, {\n argString,\n argFlag,\n shellEscapeArg,\n applyFlowCommandTemplates,\n findRepoRoot,\n readJsonFile,\n parseManifestFromFile,\n runDryRun,\n buildDevRefs,\n canonicalizeJson,\n readRequestBody,\n makeCliError: (code, message, details) => new CliError(code, message, details),\n });\n return;\n }\n\n throw new CliError(\"CLI_UNKNOWN_COMMAND\", `Unknown command: ${command}`);\n } catch (err: any) {\n if (err instanceof CliError) throw err;\n const message = String(err?.message || err || \"Unknown CLI error\");\n let code = \"CLI_RUNTIME_ERROR\";\n if (message.includes(\"Missing required argument\")) code = \"CLI_INVALID_ARGS\";\n else if (message.includes(\"Missing required arguments\")) code = \"CLI_INVALID_ARGS\";\n else if (message.includes(\"Invalid --\")) code = \"CLI_INVALID_OPTION\";\n else if (message.includes(\"Invalid JSON\")) code = \"CLI_INVALID_JSON\";\n else if (message.includes(\"Unknown CLI profile\")) code = \"CLI_PROFILE_NOT_FOUND\";\n else if (message.includes(\"Invalid CLI config JSON\")) code = \"CLI_CONFIG_INVALID\";\n else if (message.includes(\"Unsupported --mode\")) code = \"CLI_AI_MODE_UNSUPPORTED\";\n else if (message.includes(\"Invalid AI policy JSON\")) code = \"CLI_AI_POLICY_INVALID\";\n else if (message.includes(\"ai check failed\")) code = \"CLI_AI_PLAN_INVALID\";\n else if (message.includes(\"unsupported outcome\")) code = \"CLI_REMOTE_PUBLISH_ACK_INVALID\";\n else if (message.includes(\"Remote publish\")) code = \"CLI_REMOTE_PUBLISH_ERROR\";\n else if (message.includes(\"Remote logs\")) code = \"CLI_REMOTE_LOGS_ERROR\";\n else if (message.includes(\"No bundles found\")) code = \"CLI_BUNDLE_NOT_FOUND\";\n else if (message.includes(\"Bundle not found\")) code = \"CLI_BUNDLE_NOT_FOUND\";\n throw new CliError(code, message);\n }\n}\n\nif (import.meta.url === `file://${process.argv[1]}`) {\n runCli(process.argv.slice(2)).catch((err) => {\n const code = typeof err?.code === \"string\" ? err.code : \"CLI_RUNTIME_ERROR\";\n const message = err?.message || String(err);\n console.error(`[${code}] ${message}`);\n const exitCode = Number.isInteger(err?.exitCode) ? err.exitCode : 1;\n process.exit(exitCode);\n });\n}\n", "import http from \"node:http\";\nimport https from \"node:https\";\n\nexport type PublisherApiClientOptions = {\n baseUrl: string;\n apiKey?: string;\n token?: string;\n fetchImpl?: typeof fetch;\n requestTimeoutMs?: number;\n timeoutMs?: number;\n};\n\nexport type PublisherApiClientErrorCode =\n | \"PUBLISHER_API_UNAUTHORIZED\"\n | \"PUBLISHER_API_CONFLICT\"\n | \"PUBLISHER_API_NOT_FOUND\"\n | \"PUBLISHER_API_HTTP_ERROR\"\n | \"PUBLISHER_API_NETWORK_ERROR\"\n | \"PUBLISHER_API_INVALID_RESPONSE\";\n\nexport class PublisherApiClientError extends Error {\n code: PublisherApiClientErrorCode;\n status?: number;\n details?: unknown;\n\n constructor(input: {\n code: PublisherApiClientErrorCode;\n message: string;\n status?: number;\n details?: unknown;\n }) {\n super(input.message);\n this.name = \"PublisherApiClientError\";\n this.code = input.code;\n this.status = input.status;\n this.details = input.details;\n }\n}\n\nexport type ImportManifestResult = {\n xappId: string;\n versionId: string;\n};\n\nexport type PublishVersionResult = {\n version: Record<string, unknown>;\n};\n\nexport type PublisherXappListItem = Record<string, unknown> & { id?: string; slug?: string };\nexport type PublisherXappVersionListItem = Record<string, unknown> & {\n id?: string;\n status?: string;\n published_at?: string | null;\n created_at?: string | null;\n};\nexport type PublisherEndpointListItem = Record<string, unknown> & { id?: string; env?: string };\nexport type PublisherClientListItem = Record<string, unknown> & {\n id?: string;\n slug?: string;\n name?: string;\n status?: string;\n};\nexport type CreateEndpointCredentialInput = {\n authType: string;\n config?: Record<string, unknown>;\n initialKey?: {\n secret?: string;\n secretRef?: string;\n status?: string;\n algorithm?: string;\n notBefore?: string;\n notAfter?: string;\n };\n};\nexport type CreateEndpointCredentialResult = {\n credential: Record<string, unknown>;\n};\nexport type ListEndpointCredentialsResult = {\n items: Array<Record<string, unknown>>;\n};\n\nfunction normalizeBaseUrl(input: string): string {\n const value = String(input || \"\").trim();\n if (!value) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"publisherApiClient.baseUrl is required\",\n });\n }\n return value.replace(/\\/+$/g, \"\");\n}\n\nfunction resolveFetch(fetchImpl?: typeof fetch): typeof fetch | null {\n if (typeof fetchImpl === \"function\") return fetchImpl;\n return null;\n}\n\nfunction normalizeRequestTimeoutMs(input: unknown): number {\n if (input === undefined || input === null || input === \"\") return 30_000;\n const parsed = Number(input);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"publisherApiClient.requestTimeoutMs must be a positive integer\",\n details: { value: input },\n });\n }\n return Math.floor(parsed);\n}\n\nfunction buildAuthHeaders(input: { apiKey?: string; token?: string }): Headers {\n const headers = new Headers();\n const token = String(input.token || \"\").trim();\n const apiKey = String(input.apiKey || \"\").trim();\n if (token) headers.set(\"authorization\", `Bearer ${token}`);\n if (apiKey) headers.set(\"x-api-key\", apiKey);\n return headers;\n}\n\nfunction mapHttpError(status: number, message: string, details?: unknown): PublisherApiClientError {\n if (status === 401 || status === 403) {\n return new PublisherApiClientError({\n code: \"PUBLISHER_API_UNAUTHORIZED\",\n message,\n status,\n details,\n });\n }\n if (status === 409) {\n return new PublisherApiClientError({\n code: \"PUBLISHER_API_CONFLICT\",\n message,\n status,\n details,\n });\n }\n if (status === 404) {\n return new PublisherApiClientError({\n code: \"PUBLISHER_API_NOT_FOUND\",\n message,\n status,\n details,\n });\n }\n return new PublisherApiClientError({\n code: \"PUBLISHER_API_HTTP_ERROR\",\n message,\n status,\n details,\n });\n}\n\nasync function parseJsonSafe(res: Response): Promise<unknown> {\n const text = await res.text().catch(() => \"\");\n if (!text.trim()) return null;\n try {\n return JSON.parse(text);\n } catch (error) {\n if (typeof console !== \"undefined\" && typeof console.debug === \"function\") {\n console.debug(\"[server-sdk] JSON parse fallback\", {\n scope: \"publisherApiClient.parseJsonSafe\",\n url: res.url || \"\",\n message: error instanceof Error ? error.message : String(error),\n preview: text.slice(0, 200),\n });\n }\n return text;\n }\n}\n\nasync function requestJsonViaNode(input: {\n url: string;\n method: \"GET\" | \"POST\";\n headers: Headers;\n body?: string;\n timeoutMs: number;\n}): Promise<{ ok: boolean; status: number; payload: unknown }> {\n const parsed = new URL(input.url);\n const isHttps = parsed.protocol === \"https:\";\n const transport = isHttps ? https : http;\n const headersObject: Record<string, string> = {};\n input.headers.forEach((value, key) => {\n headersObject[key] = value;\n });\n if (!headersObject.accept) {\n headersObject.accept = \"application/json\";\n }\n const body = typeof input.body === \"string\" ? input.body : \"\";\n if (body) {\n if (!headersObject[\"content-type\"]) {\n headersObject[\"content-type\"] = \"application/json\";\n }\n headersObject[\"content-length\"] = String(Buffer.byteLength(body));\n }\n\n const requestOptions: http.RequestOptions = {\n method: input.method,\n hostname: parsed.hostname,\n port: parsed.port || (isHttps ? 443 : 80),\n path: `${parsed.pathname}${parsed.search}`,\n headers: headersObject,\n timeout: input.timeoutMs,\n };\n\n return new Promise((resolve, reject) => {\n const req = transport.request(requestOptions, (res) => {\n let raw = \"\";\n res.setEncoding(\"utf8\");\n res.on(\"data\", (chunk) => {\n raw += chunk;\n });\n res.on(\"end\", () => {\n let payload: unknown = null;\n const trimmed = raw.trim();\n if (trimmed) {\n try {\n payload = JSON.parse(trimmed);\n } catch (error) {\n if (typeof console !== \"undefined\" && typeof console.debug === \"function\") {\n console.debug(\"[server-sdk] JSON parse fallback\", {\n scope: \"publisherApiClient.requestJsonViaNode\",\n url: input.url,\n message: error instanceof Error ? error.message : String(error),\n preview: raw.slice(0, 200),\n });\n }\n payload = raw;\n }\n }\n const status = Number(res.statusCode || 0);\n resolve({\n ok: status >= 200 && status < 300,\n status,\n payload,\n });\n });\n });\n req.setTimeout(input.timeoutMs, () => {\n req.destroy(Object.assign(new Error(\"publisher_api_timeout\"), { name: \"AbortError\" }));\n });\n req.on(\"error\", reject);\n if (body) {\n req.write(body);\n }\n req.end();\n });\n}\n\n/**\n * Creates a typed HTTP client for publisher console/import/publish APIs.\n */\nexport function createPublisherApiClient(options: PublisherApiClientOptions) {\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const fetchImpl = resolveFetch(options.fetchImpl);\n const authHeaders = buildAuthHeaders({ apiKey: options.apiKey, token: options.token });\n const requestTimeoutMs = normalizeRequestTimeoutMs(options.requestTimeoutMs ?? options.timeoutMs);\n\n async function postJson(pathname: string, body: unknown): Promise<unknown> {\n try {\n const headers = new Headers(authHeaders);\n headers.set(\"content-type\", \"application/json\");\n const endpoint = `${baseUrl}${pathname}`;\n const rawBody = JSON.stringify(body ?? {});\n const result =\n fetchImpl && typeof fetchImpl === \"function\"\n ? await (async () => {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), requestTimeoutMs);\n try {\n const res = await fetchImpl(endpoint, {\n method: \"POST\",\n headers,\n body: rawBody,\n signal: controller.signal,\n });\n const payload = await parseJsonSafe(res);\n return { ok: res.ok, status: res.status, payload };\n } finally {\n clearTimeout(timer);\n }\n })()\n : await requestJsonViaNode({\n url: endpoint,\n method: \"POST\",\n headers,\n body: rawBody,\n timeoutMs: requestTimeoutMs,\n });\n if (!result.ok) {\n const msg =\n typeof result.payload === \"object\" &&\n result.payload &&\n typeof (result.payload as any).message === \"string\"\n ? String((result.payload as any).message)\n : `Publisher API request failed (${result.status})`;\n throw mapHttpError(result.status, msg, result.payload);\n }\n return result.payload;\n } catch (err: any) {\n if (err instanceof PublisherApiClientError) throw err;\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_NETWORK_ERROR\",\n message:\n err?.name === \"AbortError\"\n ? `Publisher API request timed out after ${requestTimeoutMs}ms`\n : `Publisher API request failed: ${err?.message || String(err)}`,\n details: err,\n });\n }\n }\n\n async function getJson(pathname: string): Promise<unknown> {\n try {\n const headers = new Headers(authHeaders);\n const endpoint = `${baseUrl}${pathname}`;\n const result =\n fetchImpl && typeof fetchImpl === \"function\"\n ? await (async () => {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), requestTimeoutMs);\n try {\n const res = await fetchImpl(endpoint, {\n method: \"GET\",\n headers,\n signal: controller.signal,\n });\n const payload = await parseJsonSafe(res);\n return { ok: res.ok, status: res.status, payload };\n } finally {\n clearTimeout(timer);\n }\n })()\n : await requestJsonViaNode({\n url: endpoint,\n method: \"GET\",\n headers,\n timeoutMs: requestTimeoutMs,\n });\n if (!result.ok) {\n const msg =\n typeof result.payload === \"object\" &&\n result.payload &&\n typeof (result.payload as any).message === \"string\"\n ? String((result.payload as any).message)\n : `Publisher API request failed (${result.status})`;\n throw mapHttpError(result.status, msg, result.payload);\n }\n return result.payload;\n } catch (err: any) {\n if (err instanceof PublisherApiClientError) throw err;\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_NETWORK_ERROR\",\n message:\n err?.name === \"AbortError\"\n ? `Publisher API request timed out after ${requestTimeoutMs}ms`\n : `Publisher API request failed: ${err?.message || String(err)}`,\n details: err,\n });\n }\n }\n\n return {\n async importManifest(manifest: unknown): Promise<ImportManifestResult> {\n const payload = await postJson(\"/publisher/import-manifest\", manifest);\n const xappId =\n typeof (payload as any)?.xappId === \"string\" ? String((payload as any).xappId) : \"\";\n const versionId =\n typeof (payload as any)?.versionId === \"string\" ? String((payload as any).versionId) : \"\";\n if (!xappId || !versionId) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"Publisher import-manifest returned malformed response\",\n details: payload,\n });\n }\n return { xappId, versionId };\n },\n\n async publishVersion(xappVersionId: string): Promise<PublishVersionResult> {\n const id = String(xappVersionId || \"\").trim();\n if (!id) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"xappVersionId is required\",\n });\n }\n const payload = await postJson(\n `/publisher/xapp-versions/${encodeURIComponent(id)}/publish`,\n {},\n );\n if (!payload || typeof payload !== \"object\" || !(\"version\" in (payload as any))) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"Publisher publishVersion returned malformed response\",\n details: payload,\n });\n }\n return payload as PublishVersionResult;\n },\n\n async importAndPublishManifest(\n manifest: unknown,\n ): Promise<ImportManifestResult & PublishVersionResult> {\n const imported = await this.importManifest(manifest);\n const published = await this.publishVersion(imported.versionId);\n return { ...imported, ...published };\n },\n\n async listXapps(): Promise<{ items: PublisherXappListItem[] }> {\n const payload = await getJson(\"/publisher/xapps\");\n const items = Array.isArray((payload as any)?.items) ? (payload as any).items : null;\n if (!items) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"Publisher listXapps returned malformed response\",\n details: payload,\n });\n }\n return { items };\n },\n\n async listClients(): Promise<{ items: PublisherClientListItem[] }> {\n const payload = await getJson(\"/publisher/clients\");\n const items = Array.isArray((payload as any)?.items) ? (payload as any).items : null;\n if (!items) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"Publisher listClients returned malformed response\",\n details: payload,\n });\n }\n return { items };\n },\n\n async listXappVersions(xappId: string): Promise<{ items: PublisherXappVersionListItem[] }> {\n const id = String(xappId || \"\").trim();\n if (!id) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"xappId is required\",\n });\n }\n const payload = await getJson(`/publisher/xapps/${encodeURIComponent(id)}/versions`);\n const items = Array.isArray((payload as any)?.items) ? (payload as any).items : null;\n if (!items) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"Publisher listXappVersions returned malformed response\",\n details: payload,\n });\n }\n return { items };\n },\n\n async listEndpoints(xappVersionId: string): Promise<{ items: PublisherEndpointListItem[] }> {\n const id = String(xappVersionId || \"\").trim();\n if (!id) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"xappVersionId is required\",\n });\n }\n const payload = await getJson(`/publisher/xapp-versions/${encodeURIComponent(id)}/endpoints`);\n const items = Array.isArray((payload as any)?.items) ? (payload as any).items : null;\n if (!items) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"Publisher listEndpoints returned malformed response\",\n details: payload,\n });\n }\n return { items };\n },\n\n async createEndpointCredential(\n endpointId: string,\n input: CreateEndpointCredentialInput,\n ): Promise<CreateEndpointCredentialResult> {\n const id = String(endpointId || \"\").trim();\n if (!id) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"endpointId is required\",\n });\n }\n const payload = await postJson(\n `/publisher/endpoints/${encodeURIComponent(id)}/credentials`,\n input,\n );\n if (!payload || typeof payload !== \"object\" || !(\"credential\" in (payload as any))) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"Publisher createEndpointCredential returned malformed response\",\n details: payload,\n });\n }\n return payload as CreateEndpointCredentialResult;\n },\n\n async listEndpointCredentials(endpointId: string): Promise<ListEndpointCredentialsResult> {\n const id = String(endpointId || \"\").trim();\n if (!id) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"endpointId is required\",\n });\n }\n const payload = await getJson(`/publisher/endpoints/${encodeURIComponent(id)}/credentials`);\n const items = Array.isArray((payload as any)?.items) ? (payload as any).items : null;\n if (!items) {\n throw new PublisherApiClientError({\n code: \"PUBLISHER_API_INVALID_RESPONSE\",\n message: \"Publisher listEndpointCredentials returned malformed response\",\n details: payload,\n });\n }\n return { items };\n },\n };\n}\n", "import AjvImport from \"ajv\";\nimport addFormatsImport from \"ajv-formats\";\nimport {\n ALL_KNOWN_GUARD_TRIGGERS,\n type KnownGuardTrigger,\n type HookEffectKind,\n type HookExecutionMode,\n type HookFailurePolicy,\n type HookIdempotencyScope,\n type HookProviderScope,\n} from \"../guards/hookContracts.js\";\nimport { normalizeHookGuardConfig } from \"../guards/hookResolution.js\";\nimport { logger } from \"../logger.js\";\nimport {\n buildNotificationDefinitionRegistry,\n buildNotificationTemplateRegistry,\n readNotificationRef,\n readNotificationTemplateRef,\n resolveNotificationConfigWithGovernance,\n} from \"../notifications/definitions.js\";\nimport {\n buildInvoiceDefinitionRegistry,\n buildInvoiceTemplateRegistry,\n readInvoiceRef,\n readInvoiceTemplateRef,\n resolveInvoiceConfigWithGovernance,\n} from \"../invoices/definitions.js\";\nimport {\n buildSubjectProfileDefinitionRegistry,\n readSubjectProfileGuardRef,\n resolveSubjectProfileGuardConfigWithGovernance,\n} from \"../guards/subjectProfileGuardDefinitions.js\";\nimport { resolveSubjectProfileRequirement } from \"../guards/subjectProfileRequirement.js\";\n\nconst manifestLogger = logger.child({ module: \"validation-xapp-manifest\" });\n\nexport type XappManifestTool = {\n tool_name: string;\n title: string;\n description?: string;\n input_schema: Record<string, unknown>;\n input_ui_schema?: Record<string, unknown>;\n output_ui_schema?: Record<string, unknown>;\n output_schema: Record<string, unknown>;\n dispatch_policy?: {\n endpoint_ref?: string;\n auth_lane?: string;\n credential_profile?: string;\n allow_on_behalf_of?: boolean;\n required_policy_fields?: string[];\n disclosure_mode_default?: \"final_answer_only\" | \"scoped_fields\";\n };\n signature_policy?: \"none\" | \"ed25519\" | \"signature_not_required\";\n async?: boolean;\n adapter?: {\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\";\n path: string;\n query?: Record<string, unknown>;\n headers?: Record<string, unknown>;\n body?: unknown;\n response_mapping?: Record<string, unknown>;\n };\n};\n\nexport type XappManifestWidget = {\n widget_name: string;\n type: \"read\" | \"write\";\n renderer: \"platform\" | \"publisher\" | \"json-forms\" | \"ui-kit\" | \"app-shell\";\n bind_tool_name?: string;\n entry?: { kind?: \"platform_template\" | \"iframe_url\"; template?: string; url?: string };\n capabilities?: string[];\n title?: string;\n accessibility?: { label?: string; role?: string };\n theme?: { mode?: \"light\" | \"dark\" | string; tokens?: Record<string, string> };\n requires_linking?: boolean;\n required_context?: Record<string, unknown>;\n ui_override?: Record<string, unknown>;\n config?: Record<string, unknown> & {\n result_presentation?: \"runtime_default\" | \"inline\" | \"publisher_managed\";\n resultPresentation?: \"runtime_default\" | \"inline\" | \"publisher_managed\";\n xapps?: Record<string, unknown> & {\n result_presentation?: \"runtime_default\" | \"inline\" | \"publisher_managed\";\n resultPresentation?: \"runtime_default\" | \"inline\" | \"publisher_managed\";\n };\n };\n};\n\nexport type XappManifestEndpointConfig = {\n base_url: string;\n timeout_ms?: number;\n health_check?: { path?: string; interval_s?: number };\n retry_policy?: { max_retries?: number; backoff?: \"none\" | \"linear\" | \"exponential\" };\n region?: string;\n labels?: Record<string, string>;\n};\n\nexport type XappManifestEndpointGroup = {\n strategy: \"failover\" | \"round_robin\" | \"region_affinity\";\n members: string[];\n};\n\nexport type XappManifestEventSubscription = {\n event_type: string;\n webhook_url: string;\n};\n\nexport type XappManifestConnectivity = {\n executor_mode?: \"PUBLIC_EXECUTOR\" | \"PRIVATE_EXECUTOR\" | \"AGENT_TUNNEL\";\n auth_mode?: \"PUBLISHER_APP\" | \"USER_DELEGATED\" | \"HYBRID\";\n signing_policy?: \"none\" | \"subject_proof\" | \"publisher_proof\";\n webhooks?: Record<string, unknown>;\n proxy_policy?: Record<string, unknown>;\n};\n\nexport type XappManifestGuard = {\n slug: string;\n trigger: KnownGuardTrigger;\n headless?: boolean;\n blocking?: boolean;\n order?: number;\n implements?: string;\n config?: Record<string, unknown> & {\n effect_kind?: HookEffectKind;\n effectKind?: HookEffectKind;\n execution_mode?: HookExecutionMode;\n executionMode?: HookExecutionMode;\n provider_scope?: HookProviderScope;\n providerScope?: HookProviderScope;\n provider_execution?: \"inline\" | \"queued\";\n providerExecution?: \"inline\" | \"queued\";\n failure_policy?: HookFailurePolicy;\n failurePolicy?: HookFailurePolicy;\n idempotency_scope?: HookIdempotencyScope;\n idempotencyScope?: HookIdempotencyScope;\n };\n};\n\nexport type XappManifest = {\n title?: string;\n name: string;\n slug: string;\n description?: string;\n image?: string;\n tags?: string[];\n terms?: {\n title?: string;\n text?: string;\n url?: string;\n version?: string;\n };\n visibility?: string;\n metadata?: Record<string, unknown>;\n target_client_id?: string;\n scopes?: string[];\n version: string;\n guards?: XappManifestGuard[];\n guards_policy?: Partial<\n Record<\n KnownGuardTrigger,\n | \"all\"\n | \"any\"\n | {\n mode?: \"all\" | \"any\";\n on_fail?: \"stop_on_fail\" | \"continue_on_fail\";\n }\n >\n >;\n linking?: {\n strategy: \"platform_v1\" | \"custom\";\n setup_url: string;\n // Optional slug/handle of the linking-guard xApp to use for this xApp.\n // If omitted, the platform defaults to `publisher-linking`.\n guard_slug?: string;\n };\n tools: XappManifestTool[];\n widgets: XappManifestWidget[];\n endpoints?: Record<string, XappManifestEndpointConfig>;\n endpoint_groups?: Record<string, XappManifestEndpointGroup>;\n event_subscriptions?: XappManifestEventSubscription[];\n connectivity?: XappManifestConnectivity;\n payment_guard_definitions?: Array<{\n name: string;\n payment_type?: string;\n payment_issuer_mode?: string;\n payment_scheme?: string;\n payment_network?: string;\n payment_allowed_issuers?: string[];\n payment_return_contract?: string;\n payment_return_required?: boolean;\n payment_return_max_age_s?: number;\n payment_return_hmac_secret_refs?: Record<string, string>;\n payment_return_hmac_secrets?: Record<string, string>;\n payment_return_hmac_delegated_secret_refs?: Record<string, Record<string, string>>;\n payment_return_hmac_delegated_secrets?: Record<string, Record<string, string>>;\n payment_provider_credentials?: Record<string, unknown>;\n payment_provider_credentials_refs?: Record<\n string,\n {\n [key: string]: string | Record<string, string> | undefined;\n bundle_ref?: string;\n bundleRef?: string;\n secret_bundle_ref?: string;\n secretBundleRef?: string;\n refs?: Record<string, string>;\n secret_refs?: Record<string, string>;\n }\n >;\n payment_provider_secret_refs?: Record<\n string,\n {\n [key: string]: string | Record<string, string> | undefined;\n bundle_ref?: string;\n bundleRef?: string;\n secret_bundle_ref?: string;\n secretBundleRef?: string;\n refs?: Record<string, string>;\n secret_refs?: Record<string, string>;\n }\n >;\n pricing_model?: string;\n pricing?: Record<string, unknown>;\n receipt_field?: string;\n payment_url?: string;\n accepts?: Array<Record<string, unknown>>;\n payment_ui?: Record<string, unknown>;\n policy?: Record<string, unknown>;\n action?: Record<string, unknown>;\n owner_override_allowlist?: string[];\n owner_pricing_floor?: {\n default_amount?: number;\n xapp_prices?: Record<string, number>;\n tool_overrides?: Record<string, number>;\n };\n }>;\n subject_profile_guard_definitions?: Array<{\n name: string;\n policy?: Record<string, unknown>;\n action?: Record<string, unknown>;\n tools?: string[];\n subject_profile_requirement?: Record<string, unknown>;\n subject_profile_remediation?: Record<string, unknown>;\n subject_profile_sources?: Record<string, unknown>;\n owner_override_allowlist?: string[];\n }>;\n notification_definitions?: Array<{\n name: string;\n channel?: string;\n effect_kind?: HookEffectKind;\n effectKind?: HookEffectKind;\n provider_key?: string;\n providerKey?: string;\n execution_mode?: HookExecutionMode;\n executionMode?: HookExecutionMode;\n provider_scope?: HookProviderScope;\n providerScope?: HookProviderScope;\n provider_execution?: \"inline\" | \"queued\";\n providerExecution?: \"inline\" | \"queued\";\n failure_policy?: HookFailurePolicy;\n failurePolicy?: HookFailurePolicy;\n idempotency_scope?: HookIdempotencyScope;\n idempotencyScope?: HookIdempotencyScope;\n template_ref?: string;\n templateRef?: string;\n target?: Record<string, unknown>;\n template?: Record<string, unknown>;\n }>;\n notification_templates?: Array<{\n name: string;\n channel?: string;\n subject?: string;\n text?: string;\n html?: string;\n }>;\n invoice_definitions?: Array<{\n name: string;\n provider_key?: string;\n providerKey?: string;\n effect_kind?: HookEffectKind;\n effectKind?: HookEffectKind;\n execution_mode?: HookExecutionMode;\n executionMode?: HookExecutionMode;\n provider_scope?: HookProviderScope;\n providerScope?: HookProviderScope;\n failure_policy?: HookFailurePolicy;\n failurePolicy?: HookFailurePolicy;\n idempotency_scope?: HookIdempotencyScope;\n idempotencyScope?: HookIdempotencyScope;\n invoice_template_ref?: string;\n invoiceTemplateRef?: string;\n invoice?: Record<string, unknown>;\n template?: Record<string, unknown>;\n }>;\n invoice_templates?: Array<{\n name: string;\n title?: string;\n text?: string;\n html?: string;\n [key: string]: unknown;\n }>;\n};\n\nexport const xappManifestJsonSchema = {\n type: \"object\",\n required: [\"name\", \"slug\", \"version\", \"tools\", \"widgets\"],\n additionalProperties: false,\n properties: {\n title: { type: \"string\", maxLength: 200 },\n name: { type: \"string\", minLength: 1, maxLength: 200 },\n slug: { type: \"string\", minLength: 1, maxLength: 100 },\n description: { type: \"string\", maxLength: 2000 },\n image: { type: \"string\", maxLength: 2048 },\n tags: { type: \"array\", maxItems: 50, items: { type: \"string\", maxLength: 64 } },\n terms: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n title: { type: \"string\", maxLength: 200 },\n text: { type: \"string\", maxLength: 20000 },\n url: { type: \"string\", maxLength: 2048 },\n version: { type: \"string\", maxLength: 64 },\n },\n },\n visibility: { type: \"string\", maxLength: 32 },\n target_client_id: { type: [\"string\", \"null\"], maxLength: 26 },\n metadata: { type: \"object\" },\n scopes: { type: \"array\", maxItems: 100, items: { type: \"string\", maxLength: 200 } },\n version: { type: \"string\", minLength: 1, maxLength: 64 },\n guards: {\n type: \"array\",\n maxItems: 50,\n items: {\n type: \"object\",\n required: [\"slug\", \"trigger\"],\n additionalProperties: false,\n properties: {\n slug: { type: \"string\", minLength: 1, maxLength: 100 },\n trigger: {\n type: \"string\",\n enum: [...ALL_KNOWN_GUARD_TRIGGERS],\n },\n headless: { type: \"boolean\" },\n blocking: { type: \"boolean\" },\n order: { type: \"integer\", minimum: 0, maximum: 1000000 },\n implements: { type: \"string\", minLength: 1, maxLength: 100 },\n config: { type: \"object\" },\n },\n },\n },\n guards_policy: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n \"before:installation_create\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"before:widget_load\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"before:session_open\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"before:thread_create\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"before:tool_run\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"after:install\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"after:link_complete\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"before:link_revoke\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"before:uninstall\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"after:tool_complete\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"after:uninstall\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"after:payment_completed\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"after:payment_failed\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"after:request_created\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"after:response_ready\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n \"after:response_finalized\": {\n anyOf: [\n { type: \"string\", enum: [\"all\", \"any\"] },\n {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", enum: [\"all\", \"any\"] },\n on_fail: { type: \"string\", enum: [\"stop_on_fail\", \"continue_on_fail\"] },\n },\n },\n ],\n },\n },\n },\n linking: {\n type: \"object\",\n required: [\"strategy\", \"setup_url\"],\n additionalProperties: false,\n properties: {\n strategy: { type: \"string\", enum: [\"platform_v1\", \"custom\"] },\n setup_url: { type: \"string\", minLength: 1, maxLength: 2048 },\n guard_slug: { type: \"string\", minLength: 1, maxLength: 100 },\n },\n },\n tools: {\n type: \"array\",\n maxItems: 50,\n items: {\n type: \"object\",\n required: [\"tool_name\", \"title\", \"input_schema\", \"output_schema\"],\n additionalProperties: false,\n properties: {\n tool_name: { type: \"string\", minLength: 1, maxLength: 100 },\n title: { type: \"string\", minLength: 1, maxLength: 200 },\n description: { type: \"string\", maxLength: 2000 },\n input_schema: { type: \"object\" },\n input_ui_schema: { type: \"object\" },\n output_ui_schema: { type: \"object\" },\n output_schema: { type: \"object\" },\n dispatch_policy: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n endpoint_ref: { type: \"string\", minLength: 1, maxLength: 100 },\n auth_lane: { type: \"string\", minLength: 1, maxLength: 100 },\n credential_profile: { type: \"string\", minLength: 1, maxLength: 100 },\n allow_on_behalf_of: { type: \"boolean\" },\n required_policy_fields: {\n type: \"array\",\n maxItems: 50,\n items: { type: \"string\", minLength: 1, maxLength: 100 },\n },\n disclosure_mode_default: {\n type: \"string\",\n enum: [\"final_answer_only\", \"scoped_fields\"],\n },\n },\n },\n signature_policy: { type: \"string\", enum: [\"none\", \"ed25519\", \"signature_not_required\"] },\n async: { type: \"boolean\" },\n adapter: {\n type: \"object\",\n required: [\"method\", \"path\"],\n additionalProperties: false,\n properties: {\n method: { type: \"string\", enum: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\"] },\n path: { type: \"string\", minLength: 1, maxLength: 2048 },\n query: { type: \"object\" },\n headers: { type: \"object\" },\n body: {},\n response_mapping: { type: \"object\" },\n },\n },\n },\n },\n },\n widgets: {\n type: \"array\",\n maxItems: 50,\n items: {\n type: \"object\",\n required: [\"widget_name\", \"type\", \"renderer\"],\n additionalProperties: false,\n properties: {\n widget_name: { type: \"string\", minLength: 1, maxLength: 100 },\n type: { type: \"string\", enum: [\"read\", \"write\"] },\n renderer: {\n type: \"string\",\n enum: [\"platform\", \"publisher\", \"json-forms\", \"ui-kit\", \"app-shell\"],\n },\n bind_tool_name: { type: \"string\", maxLength: 100 },\n title: { type: \"string\", minLength: 1, maxLength: 200 },\n accessibility: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n label: { type: \"string\", minLength: 1, maxLength: 300 },\n role: { type: \"string\", minLength: 1, maxLength: 50 },\n },\n },\n theme: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n mode: { type: \"string\", minLength: 1, maxLength: 50 },\n tokens: {\n type: \"object\",\n additionalProperties: { type: \"string\", maxLength: 2000 },\n },\n },\n },\n entry: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n kind: { type: \"string\", enum: [\"platform_template\", \"iframe_url\"] },\n template: { type: \"string\", maxLength: 100_000 },\n url: { type: \"string\", maxLength: 2048 },\n },\n },\n capabilities: { type: \"array\", maxItems: 50, items: { type: \"string\", maxLength: 64 } },\n requires_linking: { type: \"boolean\" },\n required_context: { type: \"object\" },\n ui_override: { type: \"object\" },\n config: { type: \"object\" },\n },\n },\n },\n endpoints: {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n required: [\"base_url\"],\n additionalProperties: false,\n properties: {\n base_url: { type: \"string\", minLength: 1, maxLength: 2048 },\n timeout_ms: { type: \"number\", minimum: 100, maximum: 120_000 },\n health_check: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n path: { type: \"string\", minLength: 1, maxLength: 512 },\n interval_s: { type: \"number\", minimum: 1, maximum: 86_400 },\n },\n },\n retry_policy: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n max_retries: { type: \"number\", minimum: 0, maximum: 10 },\n backoff: { type: \"string\", enum: [\"none\", \"linear\", \"exponential\"] },\n },\n },\n region: { type: \"string\", minLength: 1, maxLength: 100 },\n labels: {\n type: \"object\",\n additionalProperties: { type: \"string\", maxLength: 200 },\n },\n },\n },\n },\n endpoint_groups: {\n type: \"object\",\n additionalProperties: {\n type: \"object\",\n required: [\"strategy\", \"members\"],\n additionalProperties: false,\n properties: {\n strategy: { type: \"string\", enum: [\"failover\", \"round_robin\", \"region_affinity\"] },\n members: {\n type: \"array\",\n minItems: 1,\n maxItems: 20,\n items: { type: \"string\", minLength: 1, maxLength: 100 },\n },\n },\n },\n },\n event_subscriptions: {\n type: \"array\",\n maxItems: 50,\n items: {\n type: \"object\",\n required: [\"event_type\", \"webhook_url\"],\n additionalProperties: false,\n properties: {\n event_type: { type: \"string\", minLength: 1, maxLength: 200 },\n webhook_url: { type: \"string\", minLength: 1, maxLength: 2048 },\n },\n },\n },\n connectivity: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n executor_mode: {\n type: \"string\",\n enum: [\"PUBLIC_EXECUTOR\", \"PRIVATE_EXECUTOR\", \"AGENT_TUNNEL\"],\n },\n auth_mode: { type: \"string\", enum: [\"PUBLISHER_APP\", \"USER_DELEGATED\", \"HYBRID\"] },\n signing_policy: { type: \"string\", enum: [\"none\", \"subject_proof\", \"publisher_proof\"] },\n webhooks: { type: \"object\" },\n proxy_policy: { type: \"object\" },\n },\n },\n payment_guard_definitions: {\n type: \"array\",\n maxItems: 50,\n items: {\n type: \"object\",\n required: [\"name\"],\n additionalProperties: false,\n properties: {\n name: { type: \"string\", minLength: 1, maxLength: 200 },\n payment_type: { type: \"string\", maxLength: 100 },\n payment_issuer_mode: {\n type: \"string\",\n maxLength: 100,\n enum: [\n \"owner_managed\",\n \"gateway_managed\",\n \"tenant_delegated\",\n \"publisher_delegated\",\n \"any\",\n ],\n },\n payment_scheme: { type: \"string\", maxLength: 100 },\n payment_network: { type: \"string\", maxLength: 100 },\n payment_allowed_issuers: {\n type: \"array\",\n maxItems: 20,\n items: {\n type: \"string\",\n maxLength: 100,\n enum: [\"tenant\", \"publisher\", \"gateway\", \"tenant_delegated\", \"publisher_delegated\"],\n },\n },\n payment_return_contract: { type: \"string\", maxLength: 200 },\n payment_return_required: { type: \"boolean\" },\n payment_return_max_age_s: { type: \"number\", minimum: 0, maximum: 86400 },\n payment_return_hmac_secret_refs: { type: \"object\" },\n payment_return_hmac_secrets: { type: \"object\" },\n payment_return_hmac_delegated_secret_refs: { type: \"object\" },\n payment_return_hmac_delegated_secrets: { type: \"object\" },\n payment_provider_credentials: { type: \"object\" },\n payment_provider_credentials_refs: { type: \"object\" },\n payment_provider_secret_refs: { type: \"object\" },\n pricing_model: { type: \"string\", maxLength: 100 },\n pricing: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n currency: { type: \"string\", maxLength: 32 },\n default_amount: { type: \"number\" },\n xapp_prices: {\n type: \"object\",\n additionalProperties: { type: \"number\" },\n },\n tool_overrides: {\n type: \"object\",\n additionalProperties: { type: \"number\" },\n },\n description: { type: \"string\", maxLength: 500 },\n asset: { type: \"string\", maxLength: 256 },\n pay_to: { type: \"string\", maxLength: 256 },\n payTo: { type: \"string\", maxLength: 256 },\n },\n },\n receipt_field: { type: \"string\", maxLength: 200 },\n payment_url: { type: \"string\", maxLength: 2048 },\n accepts: {\n type: \"array\",\n maxItems: 20,\n items: {\n type: \"object\",\n additionalProperties: true,\n },\n },\n payment_ui: { type: \"object\" },\n policy: { type: \"object\" },\n action: { type: \"object\" },\n owner_override_allowlist: {\n type: \"array\",\n maxItems: 100,\n items: { type: \"string\", minLength: 1, maxLength: 200 },\n },\n owner_pricing_floor: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n default_amount: { type: \"number\" },\n xapp_prices: {\n type: \"object\",\n additionalProperties: { type: \"number\" },\n },\n tool_overrides: {\n type: \"object\",\n additionalProperties: { type: \"number\" },\n },\n },\n },\n },\n },\n },\n subject_profile_guard_definitions: {\n type: \"array\",\n maxItems: 50,\n items: {\n type: \"object\",\n required: [\"name\"],\n additionalProperties: false,\n properties: {\n name: { type: \"string\", minLength: 1, maxLength: 200 },\n policy: { type: \"object\" },\n action: { type: \"object\" },\n tools: {\n type: \"array\",\n maxItems: 100,\n items: { type: \"string\", minLength: 1, maxLength: 200 },\n },\n subject_profile_requirement: { type: \"object\" },\n subject_profile_remediation: { type: \"object\" },\n subject_profile_sources: { type: \"object\" },\n owner_override_allowlist: {\n type: \"array\",\n maxItems: 100,\n items: { type: \"string\", minLength: 1, maxLength: 200 },\n },\n },\n },\n },\n notification_definitions: {\n type: \"array\",\n maxItems: 50,\n items: {\n type: \"object\",\n required: [\"name\"],\n additionalProperties: false,\n properties: {\n name: { type: \"string\", minLength: 1, maxLength: 200 },\n channel: { type: \"string\", enum: [\"email\"] },\n effect_kind: {\n type: \"string\",\n enum: [\"policy\", \"invoice\", \"notification\", \"integration_call\"],\n },\n effectKind: {\n type: \"string\",\n enum: [\"policy\", \"invoice\", \"notification\", \"integration_call\"],\n },\n provider_key: { type: \"string\", maxLength: 100 },\n providerKey: { type: \"string\", maxLength: 100 },\n execution_mode: {\n type: \"string\",\n enum: [\"gateway_managed\", \"gateway_delegated\", \"tenant_managed\", \"publisher_managed\"],\n },\n executionMode: {\n type: \"string\",\n enum: [\"gateway_managed\", \"gateway_delegated\", \"tenant_managed\", \"publisher_managed\"],\n },\n provider_scope: { type: \"string\", enum: [\"gateway\", \"tenant\", \"publisher\"] },\n providerScope: { type: \"string\", enum: [\"gateway\", \"tenant\", \"publisher\"] },\n provider_execution: { type: \"string\", enum: [\"inline\", \"queued\"] },\n providerExecution: { type: \"string\", enum: [\"inline\", \"queued\"] },\n failure_policy: { type: \"string\", enum: [\"fail_closed\", \"fail_open\", \"retry\"] },\n failurePolicy: { type: \"string\", enum: [\"fail_closed\", \"fail_open\", \"retry\"] },\n retry_policy: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n max_retries: { type: \"integer\", minimum: 0, maximum: 5 },\n backoff: { type: \"string\", enum: [\"none\", \"linear\", \"exponential\"] },\n },\n },\n retryPolicy: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n maxRetries: { type: \"integer\", minimum: 0, maximum: 5 },\n backoff: { type: \"string\", enum: [\"none\", \"linear\", \"exponential\"] },\n },\n },\n idempotency_scope: {\n type: \"string\",\n enum: [\"none\", \"request\", \"request_response\", \"response_version\"],\n },\n idempotencyScope: {\n type: \"string\",\n enum: [\"none\", \"request\", \"request_response\", \"response_version\"],\n },\n template_ref: { type: \"string\", minLength: 1, maxLength: 200 },\n templateRef: { type: \"string\", minLength: 1, maxLength: 200 },\n target: { type: \"object\" },\n template: { type: \"object\" },\n },\n },\n },\n notification_templates: {\n type: \"array\",\n maxItems: 100,\n items: {\n type: \"object\",\n required: [\"name\"],\n additionalProperties: false,\n properties: {\n name: { type: \"string\", minLength: 1, maxLength: 200 },\n channel: { type: \"string\", enum: [\"email\"] },\n subject: { type: \"string\", maxLength: 4000 },\n text: { type: \"string\", maxLength: 40000 },\n html: { type: \"string\", maxLength: 200000 },\n },\n },\n },\n invoice_definitions: {\n type: \"array\",\n maxItems: 50,\n items: {\n type: \"object\",\n required: [\"name\"],\n additionalProperties: false,\n properties: {\n name: { type: \"string\", minLength: 1, maxLength: 200 },\n provider_key: { type: \"string\", maxLength: 100 },\n providerKey: { type: \"string\", maxLength: 100 },\n effect_kind: {\n type: \"string\",\n enum: [\"policy\", \"invoice\", \"notification\", \"integration_call\"],\n },\n effectKind: {\n type: \"string\",\n enum: [\"policy\", \"invoice\", \"notification\", \"integration_call\"],\n },\n execution_mode: {\n type: \"string\",\n enum: [\"gateway_managed\", \"gateway_delegated\", \"tenant_managed\", \"publisher_managed\"],\n },\n executionMode: {\n type: \"string\",\n enum: [\"gateway_managed\", \"gateway_delegated\", \"tenant_managed\", \"publisher_managed\"],\n },\n provider_scope: { type: \"string\", enum: [\"gateway\", \"tenant\", \"publisher\"] },\n providerScope: { type: \"string\", enum: [\"gateway\", \"tenant\", \"publisher\"] },\n failure_policy: { type: \"string\", enum: [\"fail_closed\", \"fail_open\", \"retry\"] },\n failurePolicy: { type: \"string\", enum: [\"fail_closed\", \"fail_open\", \"retry\"] },\n idempotency_scope: {\n type: \"string\",\n enum: [\n \"none\",\n \"request\",\n \"request_response\",\n \"payment_session\",\n \"payment_receipt\",\n \"response_version\",\n ],\n },\n idempotencyScope: {\n type: \"string\",\n enum: [\n \"none\",\n \"request\",\n \"request_response\",\n \"payment_session\",\n \"payment_receipt\",\n \"response_version\",\n ],\n },\n invoice_template_ref: { type: \"string\", minLength: 1, maxLength: 200 },\n invoiceTemplateRef: { type: \"string\", minLength: 1, maxLength: 200 },\n invoice: { type: \"object\" },\n template: { type: \"object\" },\n },\n },\n },\n invoice_templates: {\n type: \"array\",\n maxItems: 100,\n items: {\n type: \"object\",\n required: [\"name\"],\n additionalProperties: true,\n properties: {\n name: { type: \"string\", minLength: 1, maxLength: 200 },\n title: { type: \"string\", maxLength: 4000 },\n text: { type: \"string\", maxLength: 40000 },\n html: { type: \"string\", maxLength: 200000 },\n },\n },\n },\n },\n} as const;\n\ntype AjvCtor = new (options?: unknown) => {\n compile: (schema: unknown) => (data: unknown) => boolean;\n errors?: unknown;\n};\n\nconst Ajv = AjvImport as unknown as AjvCtor;\nconst ajv = new Ajv({ allErrors: true, strict: true });\nconst addFormats =\n (addFormatsImport as unknown as { default?: (ajv: unknown) => void }).default ??\n (addFormatsImport as unknown as (ajv: unknown) => void);\naddFormats(ajv);\nconst validate = ajv.compile(xappManifestJsonSchema);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isTemplatedUrl(value: string): boolean {\n return /^__[A-Z0-9_]+__(?:[/?#].*)?$/.test(String(value || \"\").trim());\n}\n\nfunction normalizeDispatchPolicyFieldName(field: string): string {\n const normalized = String(field || \"\").trim();\n if (!normalized) return \"\";\n if (normalized === \"legal_basis\") return \"legalBasis\";\n if (normalized === \"consent_ref\") return \"consentRef\";\n if (normalized === \"target_subject_id\") return \"targetSubjectId\";\n if (normalized === \"requested_data_scope\") return \"requestedDataScope\";\n if (normalized === \"actor_subject_id\") return \"actorSubjectId\";\n if (normalized === \"disclosure_mode\") return \"disclosureMode\";\n return normalized;\n}\n\nconst CANONICAL_REQUIRED_POLICY_FIELDS = new Set([\n \"actorSubjectId\",\n \"targetSubjectId\",\n \"purpose\",\n \"requestedDataScope\",\n \"legalBasis\",\n \"consentRef\",\n \"disclosureMode\",\n]);\n\nfunction validateJsonFormsStepDispatch(tool: XappManifestTool, knownToolNames: Set<string>) {\n const ui = (tool as any).input_ui_schema;\n if (!isRecord(ui)) return;\n if (String((ui as any).type) !== \"Categorization\") return;\n const options = (ui as any).options;\n if (!isRecord(options) || String((options as any).variant) !== \"stepper\") return;\n\n const categories = Array.isArray((ui as any).elements) ? ((ui as any).elements as unknown[]) : [];\n categories.forEach((category, idx) => {\n if (!isRecord(category) || String((category as any).type) !== \"Category\") return;\n const xapps = (category as any).xapps;\n if (!isRecord(xapps) || !(\"onStepComplete\" in xapps)) return;\n\n const action = (xapps as any).onStepComplete;\n if (!isRecord(action)) {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} input_ui_schema step ${idx + 1} xapps.onStepComplete must be an object`,\n ),\n { status: 400 },\n );\n }\n if (String((action as any).type) !== \"request\") {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} input_ui_schema step ${idx + 1} xapps.onStepComplete.type must be \"request\"`,\n ),\n { status: 400 },\n );\n }\n const toolName = String((action as any).toolName ?? \"\").trim();\n if (!toolName) {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} input_ui_schema step ${idx + 1} xapps.onStepComplete.toolName is required`,\n ),\n { status: 400 },\n );\n }\n if (!knownToolNames.has(toolName)) {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} input_ui_schema step ${idx + 1} xapps.onStepComplete.toolName references unknown tool: ${toolName}`,\n ),\n { status: 400 },\n );\n }\n if (\"payloadMapping\" in action && !isRecord((action as any).payloadMapping)) {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} input_ui_schema step ${idx + 1} xapps.onStepComplete.payloadMapping must be an object`,\n ),\n { status: 400 },\n );\n }\n if (\"resultMapping\" in action && !isRecord((action as any).resultMapping)) {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} input_ui_schema step ${idx + 1} xapps.onStepComplete.resultMapping must be an object`,\n ),\n { status: 400 },\n );\n }\n });\n}\n\nfunction validateEndpointBaseUrl(baseUrl: string) {\n if (baseUrl.startsWith(\"internal://\")) {\n return;\n }\n if (isTemplatedUrl(baseUrl)) {\n return;\n }\n\n let url: URL;\n try {\n url = new URL(baseUrl);\n } catch {\n throw Object.assign(new Error(\"Invalid endpoint base_url\"), { status: 400 });\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n throw Object.assign(new Error(\"Unsupported endpoint base_url scheme\"), { status: 400 });\n }\n}\n\nfunction isLoopbackHostname(hostname: string): boolean {\n const normalized = String(hostname || \"\")\n .trim()\n .toLowerCase();\n return normalized === \"localhost\" || normalized === \"127.0.0.1\" || normalized === \"::1\";\n}\n\nfunction parseUrlAllowlist(envName: string): string[] {\n const raw = String(process.env[envName] || \"\").trim();\n if (!raw) return [];\n return raw\n .split(\",\")\n .map((entry) => String(entry || \"\").trim())\n .filter(Boolean);\n}\n\nfunction matchesUrlAllowlist(url: URL, allowlist: string[]): boolean {\n if (!allowlist.length) return true;\n const href = url.toString();\n const origin = url.origin;\n return allowlist.some((entry) => href.startsWith(entry) || origin === entry);\n}\n\nfunction validateLinkingSetupUrl(setupUrl: string) {\n if (isTemplatedUrl(setupUrl)) {\n return;\n }\n\n let parsed: URL;\n try {\n parsed = new URL(setupUrl);\n } catch {\n throw Object.assign(new Error(\"Invalid linking.setup_url\"), { status: 400 });\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw Object.assign(new Error(\"Unsupported linking.setup_url scheme\"), { status: 400 });\n }\n\n const allowInsecure = String(process.env.XAPPS_ALLOW_INSECURE_LINKING_URLS || \"\")\n .trim()\n .toLowerCase();\n const insecureAllowed = allowInsecure === \"true\" || allowInsecure === \"1\";\n if (parsed.protocol !== \"https:\" && !isLoopbackHostname(parsed.hostname) && !insecureAllowed) {\n throw Object.assign(new Error(\"linking.setup_url must use https unless it targets localhost\"), {\n status: 400,\n });\n }\n\n const allowlist = parseUrlAllowlist(\"XAPPS_LINKING_SETUP_URL_ALLOWLIST\");\n if (!matchesUrlAllowlist(parsed, allowlist)) {\n throw Object.assign(new Error(\"linking.setup_url is not in allowlist\"), { status: 400 });\n }\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction normalizeResultPresentation(value: unknown) {\n const normalized = String(value || \"\")\n .trim()\n .toLowerCase();\n if (!normalized) return \"\";\n if (\n normalized === \"runtime_default\" ||\n normalized === \"inline\" ||\n normalized === \"publisher_managed\"\n ) {\n return normalized;\n }\n return \"__invalid__\";\n}\n\nfunction validateWidgetResultPresentation(widget: XappManifestWidget) {\n const config = isPlainObject(widget.config) ? widget.config : null;\n if (!config) return;\n const xapps = isPlainObject(config.xapps) ? config.xapps : null;\n\n const entries: Array<[string, unknown]> = [\n [\"config.result_presentation\", (config as any).result_presentation],\n [\"config.resultPresentation\", (config as any).resultPresentation],\n [\"config.xapps.result_presentation\", xapps ? (xapps as any).result_presentation : undefined],\n [\"config.xapps.resultPresentation\", xapps ? (xapps as any).resultPresentation : undefined],\n ];\n\n for (const [fieldPath, rawValue] of entries) {\n if (rawValue === undefined || rawValue === null || String(rawValue).trim() === \"\") continue;\n const normalized = normalizeResultPresentation(rawValue);\n if (normalized === \"__invalid__\") {\n throw Object.assign(\n new Error(\n `Widget ${widget.widget_name} ${fieldPath} must be one of: runtime_default, inline, publisher_managed`,\n ),\n { status: 400 },\n );\n }\n }\n}\n\nfunction validateGuardHookConfig(\n guard: XappManifestGuard,\n resolvedConfigOverride?: Record<string, unknown> | null,\n) {\n const rawConfig = isPlainObject(guard.config) ? guard.config : null;\n const effectiveConfig =\n resolvedConfigOverride && isPlainObject(resolvedConfigOverride)\n ? resolvedConfigOverride\n : rawConfig;\n if (!effectiveConfig) return;\n const unresolvedNotificationRef = Boolean(\n rawConfig && readNotificationRef(rawConfig) && !resolvedConfigOverride,\n );\n const unresolvedInvoiceRef = Boolean(\n rawConfig && readInvoiceRef(rawConfig) && !resolvedConfigOverride,\n );\n\n const resolved = normalizeHookGuardConfig({\n slug: guard.slug,\n trigger: guard.trigger,\n config: effectiveConfig,\n });\n\n const effectKind = resolved.config.effectKind as HookEffectKind | undefined;\n const executionMode = resolved.config.executionMode as HookExecutionMode | undefined;\n const providerScope = resolved.config.providerScope as HookProviderScope | undefined;\n const failurePolicy = resolved.config.failurePolicy as HookFailurePolicy | undefined;\n const idempotencyScope = resolved.config.idempotencyScope as HookIdempotencyScope | undefined;\n const hookMeta = resolved.hook;\n\n const supportedFieldChecks: Array<[string, unknown]> = [\n [\"config.effect_kind\", (rawConfig as any).effect_kind ?? (rawConfig as any).effectKind],\n [\n \"config.execution_mode\",\n (rawConfig as any).execution_mode ?? (rawConfig as any).executionMode,\n ],\n [\n \"config.provider_scope\",\n (rawConfig as any).provider_scope ?? (rawConfig as any).providerScope,\n ],\n [\n \"config.failure_policy\",\n (rawConfig as any).failure_policy ?? (rawConfig as any).failurePolicy,\n ],\n [\n \"config.idempotency_scope\",\n (rawConfig as any).idempotency_scope ?? (rawConfig as any).idempotencyScope,\n ],\n ];\n for (const [fieldPath, rawValue] of supportedFieldChecks) {\n if (rawValue === undefined || rawValue === null || String(rawValue).trim() === \"\") continue;\n if (\n (fieldPath === \"config.effect_kind\" &&\n !((resolved.config.effectKind as string) || \"\").trim()) ||\n (fieldPath === \"config.execution_mode\" &&\n !((resolved.config.executionMode as string | null) || \"\").trim()) ||\n (fieldPath === \"config.provider_scope\" &&\n !((resolved.config.providerScope as string | null) || \"\").trim()) ||\n (fieldPath === \"config.failure_policy\" &&\n !((resolved.config.failurePolicy as string) || \"\").trim()) ||\n (fieldPath === \"config.idempotency_scope\" &&\n !((resolved.config.idempotencyScope as string | null) || \"\").trim())\n ) {\n throw Object.assign(\n new Error(`Guard ${guard.slug} ${fieldPath} has unsupported value: ${String(rawValue)}`),\n { status: 400 },\n );\n }\n }\n\n if (effectKind && guard.trigger.startsWith(\"before:\") && effectKind !== \"policy\") {\n throw Object.assign(\n new Error(\n `Guard ${guard.slug} effect_kind=${effectKind} is not supported on blocking trigger ${guard.trigger}`,\n ),\n { status: 400 },\n );\n }\n\n if (effectKind) {\n if (hookMeta && !hookMeta.allowedEffectKinds.includes(effectKind)) {\n throw Object.assign(\n new Error(\n `Guard ${guard.slug} effect_kind=${effectKind} is not supported on trigger ${guard.trigger}`,\n ),\n { status: 400 },\n );\n }\n }\n\n if (\n effectKind === \"policy\" &&\n (providerScope || idempotencyScope) &&\n guard.trigger.startsWith(\"before:\")\n ) {\n throw Object.assign(\n new Error(\n `Guard ${guard.slug} policy effect on ${guard.trigger} must not declare provider_scope or idempotency_scope`,\n ),\n { status: 400 },\n );\n }\n\n if (executionMode === \"gateway_delegated\" && providerScope === \"gateway\") {\n throw Object.assign(\n new Error(\n `Guard ${guard.slug} gateway_delegated execution requires provider_scope tenant or publisher`,\n ),\n { status: 400 },\n );\n }\n\n if (\n (effectKind === \"invoice\" || effectKind === \"notification\") &&\n !providerScope &&\n !unresolvedNotificationRef &&\n !unresolvedInvoiceRef\n ) {\n throw Object.assign(\n new Error(`Guard ${guard.slug} effect_kind=${effectKind} requires provider_scope`),\n { status: 400 },\n );\n }\n\n if (\n (effectKind === \"invoice\" || effectKind === \"notification\") &&\n !failurePolicy &&\n !unresolvedNotificationRef &&\n !unresolvedInvoiceRef\n ) {\n throw Object.assign(\n new Error(`Guard ${guard.slug} effect_kind=${effectKind} requires failure_policy`),\n { status: 400 },\n );\n }\n\n if (\n (effectKind === \"invoice\" || effectKind === \"notification\") &&\n !idempotencyScope &&\n !unresolvedNotificationRef &&\n !unresolvedInvoiceRef\n ) {\n throw Object.assign(\n new Error(`Guard ${guard.slug} effect_kind=${effectKind} requires idempotency_scope`),\n { status: 400 },\n );\n }\n}\n\nfunction readPaymentGuardRef(config: unknown): string {\n if (!isPlainObject(config)) return \"\";\n return String((config as any).payment_guard_ref ?? (config as any).paymentGuardRef ?? \"\").trim();\n}\n\nfunction readSubjectProfileGuardRefCompat(config: unknown): string {\n return readSubjectProfileGuardRef(config);\n}\n\nfunction validateAdapterShape(tool: XappManifestTool) {\n const adapter = (tool as any).adapter;\n if (!adapter || !isPlainObject(adapter)) return;\n\n const path = String((adapter as any).path ?? \"\").trim();\n if (!path.startsWith(\"/\")) {\n throw Object.assign(new Error(`Tool ${tool.tool_name} adapter.path must start with \"/\"`), {\n status: 400,\n });\n }\n\n const query = (adapter as any).query;\n if (query !== undefined && !isPlainObject(query)) {\n throw Object.assign(new Error(`Tool ${tool.tool_name} adapter.query must be an object`), {\n status: 400,\n });\n }\n\n const headers = (adapter as any).headers;\n if (headers !== undefined) {\n if (!isPlainObject(headers)) {\n throw Object.assign(new Error(`Tool ${tool.tool_name} adapter.headers must be an object`), {\n status: 400,\n });\n }\n for (const headerName of Object.keys(headers)) {\n const trimmed = String(headerName).trim();\n if (!trimmed || !/^[A-Za-z0-9-]+$/.test(trimmed)) {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} adapter.headers has invalid header name: ${headerName}`,\n ),\n { status: 400 },\n );\n }\n }\n }\n\n const responseMapping = (adapter as any).response_mapping;\n if (responseMapping !== undefined) {\n if (!isPlainObject(responseMapping)) {\n throw Object.assign(\n new Error(`Tool ${tool.tool_name} adapter.response_mapping must be an object`),\n { status: 400 },\n );\n }\n if (Object.keys(responseMapping).length === 0) {\n throw Object.assign(\n new Error(`Tool ${tool.tool_name} adapter.response_mapping must not be empty`),\n { status: 400 },\n );\n }\n\n const outputSchema = isPlainObject(tool.output_schema)\n ? (tool.output_schema as Record<string, unknown>)\n : null;\n const schemaType = String((outputSchema as any)?.type ?? \"\").trim();\n const schemaProperties = isPlainObject((outputSchema as any)?.properties)\n ? ((outputSchema as any).properties as Record<string, unknown>)\n : null;\n if (schemaType === \"object\" && schemaProperties) {\n for (const mappedKey of Object.keys(responseMapping)) {\n if (!Object.prototype.hasOwnProperty.call(schemaProperties, mappedKey)) {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} adapter.response_mapping key \"${mappedKey}\" is not declared in output_schema.properties`,\n ),\n { status: 400 },\n );\n }\n }\n const required = Array.isArray((outputSchema as any)?.required)\n ? (((outputSchema as any).required as unknown[])\n .map((v) => String(v || \"\").trim())\n .filter(Boolean) as string[])\n : [];\n for (const requiredField of required) {\n if (!Object.prototype.hasOwnProperty.call(responseMapping, requiredField)) {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} adapter.response_mapping must include required output field \"${requiredField}\"`,\n ),\n { status: 400 },\n );\n }\n }\n }\n }\n}\n\nexport function parseXappManifest(input: unknown): XappManifest {\n if (!validate(input)) {\n const err = new Error(\"Invalid manifest\");\n throw Object.assign(err, { status: 400, details: (validate as any).errors ?? null });\n }\n\n const manifest = input as XappManifest;\n const paymentDefinitions = Array.isArray(manifest.payment_guard_definitions)\n ? manifest.payment_guard_definitions\n : [];\n const subjectProfileDefinitions = Array.isArray(manifest.subject_profile_guard_definitions)\n ? manifest.subject_profile_guard_definitions\n : [];\n const notificationDefinitions = Array.isArray(manifest.notification_definitions)\n ? manifest.notification_definitions\n : [];\n const notificationTemplates = Array.isArray(manifest.notification_templates)\n ? manifest.notification_templates\n : [];\n const invoiceDefinitions = Array.isArray(manifest.invoice_definitions)\n ? manifest.invoice_definitions\n : [];\n const invoiceTemplates = Array.isArray(manifest.invoice_templates)\n ? manifest.invoice_templates\n : [];\n const paymentDefinitionNames = new Set<string>();\n const subjectProfileDefinitionNames = new Set<string>();\n const notificationDefinitionNames = new Set<string>();\n const notificationTemplateNames = new Set<string>();\n const invoiceDefinitionNames = new Set<string>();\n const invoiceTemplateNames = new Set<string>();\n for (const def of paymentDefinitions) {\n const name = String(def?.name ?? \"\").trim();\n if (!name) {\n throw Object.assign(new Error(\"payment_guard_definitions entries require non-empty name\"), {\n status: 400,\n });\n }\n if (paymentDefinitionNames.has(name)) {\n throw Object.assign(new Error(`Duplicate payment_guard_definitions name: ${name}`), {\n status: 400,\n });\n }\n paymentDefinitionNames.add(name);\n }\n for (const def of subjectProfileDefinitions) {\n const name = String(def?.name ?? \"\").trim();\n if (!name) {\n throw Object.assign(\n new Error(\"subject_profile_guard_definitions entries require non-empty name\"),\n {\n status: 400,\n },\n );\n }\n if (subjectProfileDefinitionNames.has(name)) {\n throw Object.assign(new Error(`Duplicate subject_profile_guard_definitions name: ${name}`), {\n status: 400,\n });\n }\n subjectProfileDefinitionNames.add(name);\n }\n for (const def of notificationDefinitions) {\n const name = String(def?.name ?? \"\").trim();\n if (!name) {\n throw Object.assign(new Error(\"notification_definitions entries require non-empty name\"), {\n status: 400,\n });\n }\n if (notificationDefinitionNames.has(name)) {\n throw Object.assign(new Error(`Duplicate notification_definitions name: ${name}`), {\n status: 400,\n });\n }\n notificationDefinitionNames.add(name);\n }\n for (const template of notificationTemplates) {\n const name = String(template?.name ?? \"\").trim();\n if (!name) {\n throw Object.assign(new Error(\"notification_templates entries require non-empty name\"), {\n status: 400,\n });\n }\n if (notificationTemplateNames.has(name)) {\n throw Object.assign(new Error(`Duplicate notification_templates name: ${name}`), {\n status: 400,\n });\n }\n notificationTemplateNames.add(name);\n }\n for (const def of invoiceDefinitions) {\n const name = String(def?.name ?? \"\").trim();\n if (!name) {\n throw Object.assign(new Error(\"invoice_definitions entries require non-empty name\"), {\n status: 400,\n });\n }\n if (invoiceDefinitionNames.has(name)) {\n throw Object.assign(new Error(`Duplicate invoice_definitions name: ${name}`), {\n status: 400,\n });\n }\n invoiceDefinitionNames.add(name);\n }\n for (const template of invoiceTemplates) {\n const name = String(template?.name ?? \"\").trim();\n if (!name) {\n throw Object.assign(new Error(\"invoice_templates entries require non-empty name\"), {\n status: 400,\n });\n }\n if (invoiceTemplateNames.has(name)) {\n throw Object.assign(new Error(`Duplicate invoice_templates name: ${name}`), {\n status: 400,\n });\n }\n invoiceTemplateNames.add(name);\n }\n\n if (manifest.linking && isRecord(manifest.linking)) {\n validateLinkingSetupUrl(String(manifest.linking.setup_url || \"\").trim());\n }\n\n if (manifest.endpoints && isRecord(manifest.endpoints)) {\n for (const config of Object.values(manifest.endpoints)) {\n validateEndpointBaseUrl(config.base_url);\n }\n }\n\n if (manifest.endpoint_groups && isRecord(manifest.endpoint_groups)) {\n const endpointNames = new Set(\n manifest.endpoints && isRecord(manifest.endpoints) ? Object.keys(manifest.endpoints) : [],\n );\n for (const [groupName, group] of Object.entries(manifest.endpoint_groups)) {\n for (const member of group.members) {\n if (!endpointNames.has(member)) {\n throw Object.assign(\n new Error(`Endpoint group ${groupName} references unknown endpoint: ${member}`),\n {\n status: 400,\n },\n );\n }\n }\n }\n }\n\n const knownToolNames = new Set(\n (manifest.tools ?? []).map((tool) => String(tool.tool_name || \"\").trim()),\n );\n const referencedPaymentDefinitionNames = new Set<string>();\n const referencedSubjectProfileDefinitionNames = new Set<string>();\n const notificationDefinitionRegistry = buildNotificationDefinitionRegistry(\n manifest.notification_definitions ?? [],\n );\n const notificationTemplateRegistry = buildNotificationTemplateRegistry(\n manifest.notification_templates ?? [],\n );\n const invoiceDefinitionRegistry = buildInvoiceDefinitionRegistry(\n manifest.invoice_definitions ?? [],\n );\n const invoiceTemplateRegistry = buildInvoiceTemplateRegistry(manifest.invoice_templates ?? []);\n const subjectProfileDefinitionRegistry = buildSubjectProfileDefinitionRegistry(\n manifest.subject_profile_guard_definitions ?? [],\n );\n const referencedNotificationDefinitionNames = new Set<string>();\n const referencedNotificationTemplateNames = new Set<string>();\n const referencedInvoiceDefinitionNames = new Set<string>();\n const referencedInvoiceTemplateNames = new Set<string>();\n\n for (const def of notificationDefinitions) {\n const templateRef = readNotificationTemplateRef(def as Record<string, unknown>);\n if (!templateRef) continue;\n referencedNotificationTemplateNames.add(templateRef);\n if (!notificationTemplateRegistry.has(templateRef)) {\n throw Object.assign(\n new Error(\n `notification_definitions entry ${String(def?.name ?? \"unknown\")} references unknown template_ref: ${templateRef}`,\n ),\n { status: 400 },\n );\n }\n }\n for (const def of invoiceDefinitions) {\n const templateRef = readInvoiceTemplateRef(def as Record<string, unknown>);\n if (!templateRef) continue;\n referencedInvoiceTemplateNames.add(templateRef);\n if (!invoiceTemplateRegistry.has(templateRef)) {\n throw Object.assign(\n new Error(\n `invoice_definitions entry ${String(def?.name ?? \"unknown\")} references unknown invoice_template_ref: ${templateRef}`,\n ),\n { status: 400 },\n );\n }\n }\n\n for (const widget of manifest.widgets ?? []) {\n validateWidgetResultPresentation(widget);\n }\n\n for (const tool of manifest.tools ?? []) {\n validateAdapterShape(tool);\n\n const policy = (tool as any).dispatch_policy;\n if (!policy || !isRecord(policy)) {\n validateJsonFormsStepDispatch(tool, knownToolNames);\n continue;\n }\n const endpointRef = String((policy as any).endpoint_ref ?? \"\").trim();\n if (endpointRef) {\n const endpointNames = new Set(\n manifest.endpoints && isRecord(manifest.endpoints) ? Object.keys(manifest.endpoints) : [],\n );\n if (!endpointNames.has(endpointRef)) {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} dispatch_policy.endpoint_ref references unknown endpoint: ${endpointRef}`,\n ),\n { status: 400 },\n );\n }\n }\n const requiredPolicyFields = Array.isArray((policy as any).required_policy_fields)\n ? ((policy as any).required_policy_fields as unknown[])\n : [];\n const normalizedRequired = requiredPolicyFields\n .map((v) => normalizeDispatchPolicyFieldName(String(v ?? \"\")))\n .filter(Boolean);\n for (const field of normalizedRequired) {\n if (!CANONICAL_REQUIRED_POLICY_FIELDS.has(field)) {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} dispatch_policy.required_policy_fields contains unknown policy field: ${field}`,\n ),\n { status: 400 },\n );\n }\n }\n if (new Set(normalizedRequired).size !== normalizedRequired.length) {\n throw Object.assign(\n new Error(\n `Tool ${tool.tool_name} dispatch_policy.required_policy_fields contains duplicates after normalization`,\n ),\n { status: 400 },\n );\n }\n validateJsonFormsStepDispatch(tool, knownToolNames);\n }\n\n for (const guard of manifest.guards ?? []) {\n const guardConfig = ((guard as any)?.config ?? {}) as Record<string, unknown>;\n const guardSlug = String((guard as any)?.slug || \"unknown\").trim() || \"unknown\";\n const subjectProfileGuardRef = readSubjectProfileGuardRefCompat(guardConfig);\n if (subjectProfileGuardRef) {\n referencedSubjectProfileDefinitionNames.add(subjectProfileGuardRef);\n }\n const explicitPolicyKind = String(\n (guardConfig as any)?.policy?.kind ??\n (guardConfig as any)?.guard_kind ??\n (guardConfig as any)?.policy_kind ??\n \"\",\n )\n .trim()\n .toLowerCase();\n const notificationRef = readNotificationRef(guardConfig);\n const invoiceRef = readInvoiceRef(guardConfig);\n if (notificationRef) {\n referencedNotificationDefinitionNames.add(notificationRef);\n }\n if (invoiceRef) {\n referencedInvoiceDefinitionNames.add(invoiceRef);\n }\n const resolvedNotificationConfig =\n notificationRef && notificationDefinitionRegistry.has(notificationRef)\n ? (() => {\n const resolved = resolveNotificationConfigWithGovernance({\n guardConfig,\n definition: notificationDefinitionRegistry.get(notificationRef)!,\n source: \"consumer_manifest\",\n templates: notificationTemplateRegistry,\n });\n if (!resolved.ok) {\n throw Object.assign(new Error(resolved.message), {\n status: 400,\n details: resolved.details,\n });\n }\n return resolved.config;\n })()\n : null;\n const resolvedInvoiceConfig =\n invoiceRef && invoiceDefinitionRegistry.has(invoiceRef)\n ? (() => {\n const resolved = resolveInvoiceConfigWithGovernance({\n guardConfig,\n definition: invoiceDefinitionRegistry.get(invoiceRef)!,\n source: \"consumer_manifest\",\n templates: invoiceTemplateRegistry,\n });\n if (!resolved.ok) {\n throw Object.assign(new Error(resolved.message), {\n status: 400,\n details: resolved.details,\n });\n }\n return resolved.config;\n })()\n : null;\n const resolvedHookFamilyConfig = resolvedNotificationConfig ?? resolvedInvoiceConfig;\n const templateRef =\n resolvedNotificationConfig && isRecord(resolvedNotificationConfig)\n ? readNotificationTemplateRef(resolvedNotificationConfig)\n : \"\";\n if (templateRef) {\n referencedNotificationTemplateNames.add(templateRef);\n if (!notificationTemplateRegistry.has(templateRef)) {\n throw Object.assign(\n new Error(\n `Guard ${String((guard as any)?.slug || \"unknown\")} references unknown template_ref: ${templateRef}`,\n ),\n { status: 400 },\n );\n }\n }\n const invoiceTemplateRef =\n resolvedInvoiceConfig && isRecord(resolvedInvoiceConfig)\n ? readInvoiceTemplateRef(resolvedInvoiceConfig)\n : readInvoiceTemplateRef(guardConfig);\n if (invoiceTemplateRef) {\n referencedInvoiceTemplateNames.add(invoiceTemplateRef);\n if (!invoiceTemplateRegistry.has(invoiceTemplateRef)) {\n throw Object.assign(\n new Error(\n `Guard ${String((guard as any)?.slug || \"unknown\")} references unknown invoice_template_ref: ${invoiceTemplateRef}`,\n ),\n { status: 400 },\n );\n }\n }\n validateGuardHookConfig(guard, resolvedHookFamilyConfig);\n const resolvedSubjectProfileConfig =\n subjectProfileGuardRef && subjectProfileDefinitionRegistry.has(subjectProfileGuardRef)\n ? (() => {\n const resolved = resolveSubjectProfileGuardConfigWithGovernance({\n guardConfig,\n definition: subjectProfileDefinitionRegistry.get(subjectProfileGuardRef)!,\n source: \"consumer_manifest\",\n });\n if (!resolved.ok) {\n throw Object.assign(new Error(`Guard ${guardSlug}: ${resolved.message}`), {\n status: 400,\n details: resolved.details,\n });\n }\n return resolved.config;\n })()\n : null;\n const subjectProfileRequirement = resolveSubjectProfileRequirement(\n resolvedSubjectProfileConfig ?? guardConfig,\n );\n const expectsSubjectProfileContract =\n guardSlug === \"subject-profile-check\" ||\n explicitPolicyKind === \"subject_profile\" ||\n explicitPolicyKind === \"subject-profile\" ||\n (subjectProfileRequirement.ok && subjectProfileRequirement.source !== \"none\");\n if (expectsSubjectProfileContract && !subjectProfileRequirement.ok) {\n throw Object.assign(new Error(`Guard ${guardSlug}: ${subjectProfileRequirement.message}`), {\n status: 400,\n details: subjectProfileRequirement.details,\n });\n }\n const ref = readPaymentGuardRef(guardConfig);\n if (!ref) continue;\n referencedPaymentDefinitionNames.add(ref);\n if (!paymentDefinitionNames.has(ref)) {\n const hasExplicitTool = Boolean(\n String((guardConfig as any).tool_name ?? (guardConfig as any).toolName ?? \"\").trim(),\n );\n if (hasExplicitTool) {\n // External guard tools may resolve payment definitions from the owner guard manifest at runtime.\n continue;\n }\n const slug = String((guard as any)?.slug || \"unknown\").trim() || \"unknown\";\n throw Object.assign(new Error(`Guard ${slug} references unknown payment_guard_ref: ${ref}`), {\n status: 400,\n });\n }\n }\n\n const unreferencedPaymentDefinitions = Array.from(paymentDefinitionNames).filter(\n (name) => !referencedPaymentDefinitionNames.has(name),\n );\n const unreferencedSubjectProfileDefinitions = Array.from(subjectProfileDefinitionNames).filter(\n (name) => !referencedSubjectProfileDefinitionNames.has(name),\n );\n const hasPaymentGuardRefsInManifest = referencedPaymentDefinitionNames.size > 0;\n const hasSubjectProfileRefsInManifest = referencedSubjectProfileDefinitionNames.size > 0;\n if (\n hasPaymentGuardRefsInManifest &&\n unreferencedPaymentDefinitions.length > 0 &&\n process.env.NODE_ENV !== \"test\"\n ) {\n manifestLogger.warn(\n { definitions: unreferencedPaymentDefinitions },\n \"Unreferenced payment_guard_definitions detected\",\n );\n }\n if (\n hasSubjectProfileRefsInManifest &&\n unreferencedSubjectProfileDefinitions.length > 0 &&\n process.env.NODE_ENV !== \"test\"\n ) {\n manifestLogger.warn(\n { definitions: unreferencedSubjectProfileDefinitions },\n \"Unreferenced subject_profile_guard_definitions detected\",\n );\n }\n\n const unreferencedNotificationDefinitions = Array.from(notificationDefinitionNames).filter(\n (name) => !referencedNotificationDefinitionNames.has(name),\n );\n const hasNotificationRefsInManifest = referencedNotificationDefinitionNames.size > 0;\n if (\n hasNotificationRefsInManifest &&\n unreferencedNotificationDefinitions.length > 0 &&\n process.env.NODE_ENV !== \"test\"\n ) {\n manifestLogger.warn(\n { definitions: unreferencedNotificationDefinitions },\n \"Unreferenced notification_definitions detected\",\n );\n }\n\n const unreferencedNotificationTemplates = Array.from(notificationTemplateNames).filter(\n (name) => !referencedNotificationTemplateNames.has(name),\n );\n const hasNotificationTemplatesInManifest = notificationTemplateNames.size > 0;\n if (\n hasNotificationTemplatesInManifest &&\n unreferencedNotificationTemplates.length > 0 &&\n process.env.NODE_ENV !== \"test\"\n ) {\n manifestLogger.warn(\n { templates: unreferencedNotificationTemplates },\n \"Unreferenced notification_templates detected\",\n );\n }\n\n const unreferencedInvoiceDefinitions = Array.from(invoiceDefinitionNames).filter(\n (name) => !referencedInvoiceDefinitionNames.has(name),\n );\n const hasInvoiceRefsInManifest = referencedInvoiceDefinitionNames.size > 0;\n if (\n hasInvoiceRefsInManifest &&\n unreferencedInvoiceDefinitions.length > 0 &&\n process.env.NODE_ENV !== \"test\"\n ) {\n manifestLogger.warn(\n { definitions: unreferencedInvoiceDefinitions },\n \"Unreferenced invoice_definitions detected\",\n );\n }\n\n const unreferencedInvoiceTemplates = Array.from(invoiceTemplateNames).filter(\n (name) => !referencedInvoiceTemplateNames.has(name),\n );\n const hasInvoiceTemplatesInManifest = invoiceTemplateNames.size > 0;\n if (\n hasInvoiceTemplatesInManifest &&\n unreferencedInvoiceTemplates.length > 0 &&\n process.env.NODE_ENV !== \"test\"\n ) {\n manifestLogger.warn(\n { templates: unreferencedInvoiceTemplates },\n \"Unreferenced invoice_templates detected\",\n );\n }\n\n return manifest;\n}\n", "export const CURRENT_GUARD_TRIGGERS = [\n \"before:installation_create\",\n \"before:widget_load\",\n \"before:session_open\",\n \"before:thread_create\",\n \"before:tool_run\",\n \"after:install\",\n \"after:link_complete\",\n \"before:link_revoke\",\n \"before:uninstall\",\n \"after:tool_complete\",\n \"after:uninstall\",\n] as const;\n\nexport const RESERVED_POST_ACTION_GUARD_TRIGGERS = [\n \"after:payment_completed\",\n \"after:payment_failed\",\n \"after:request_created\",\n \"after:response_ready\",\n \"after:response_finalized\",\n] as const;\n\nexport const ALL_KNOWN_GUARD_TRIGGERS = [\n ...CURRENT_GUARD_TRIGGERS,\n ...RESERVED_POST_ACTION_GUARD_TRIGGERS,\n] as const;\n\nexport const HOOK_EFFECT_KINDS = [\"policy\", \"invoice\", \"notification\", \"integration_call\"] as const;\n\nexport const HOOK_EXECUTION_MODES = [\n \"gateway_managed\",\n \"tenant_managed\",\n \"publisher_managed\",\n \"gateway_delegated\",\n] as const;\n\nexport const HOOK_PROVIDER_SCOPES = [\"gateway\", \"tenant\", \"publisher\"] as const;\n\nexport const HOOK_FAILURE_POLICIES = [\"fail_closed\", \"fail_open\", \"audit_only\", \"retry\"] as const;\n\nexport const HOOK_IDEMPOTENCY_SCOPES = [\n \"none\",\n \"request\",\n \"request_response\",\n \"payment_session\",\n \"payment_receipt\",\n \"response_version\",\n] as const;\n\nexport type CurrentGuardTrigger = (typeof CURRENT_GUARD_TRIGGERS)[number];\nexport type ReservedPostActionGuardTrigger = (typeof RESERVED_POST_ACTION_GUARD_TRIGGERS)[number];\nexport type KnownGuardTrigger = (typeof ALL_KNOWN_GUARD_TRIGGERS)[number];\nexport type HookEffectKind = (typeof HOOK_EFFECT_KINDS)[number];\nexport type HookExecutionMode = (typeof HOOK_EXECUTION_MODES)[number];\nexport type HookProviderScope = (typeof HOOK_PROVIDER_SCOPES)[number];\nexport type HookFailurePolicy = (typeof HOOK_FAILURE_POLICIES)[number];\nexport type HookIdempotencyScope = (typeof HOOK_IDEMPOTENCY_SCOPES)[number];\n\nexport type HookOutcomeStatus = \"completed\" | \"queued\" | \"retry_scheduled\" | \"failed\" | \"skipped\";\n\nexport function isCurrentGuardTrigger(value: unknown): value is CurrentGuardTrigger {\n return CURRENT_GUARD_TRIGGERS.includes(value as CurrentGuardTrigger);\n}\n\nexport function isReservedPostActionGuardTrigger(\n value: unknown,\n): value is ReservedPostActionGuardTrigger {\n return RESERVED_POST_ACTION_GUARD_TRIGGERS.includes(value as ReservedPostActionGuardTrigger);\n}\n\nexport function normalizeHookEffectKind(value: unknown): HookEffectKind | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n return HOOK_EFFECT_KINDS.includes(normalized as HookEffectKind)\n ? (normalized as HookEffectKind)\n : null;\n}\n\nexport function normalizeHookExecutionMode(value: unknown): HookExecutionMode | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n return HOOK_EXECUTION_MODES.includes(normalized as HookExecutionMode)\n ? (normalized as HookExecutionMode)\n : null;\n}\n\nexport function normalizeHookProviderScope(value: unknown): HookProviderScope | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n return HOOK_PROVIDER_SCOPES.includes(normalized as HookProviderScope)\n ? (normalized as HookProviderScope)\n : null;\n}\n\nexport function normalizeHookFailurePolicy(value: unknown): HookFailurePolicy | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n return HOOK_FAILURE_POLICIES.includes(normalized as HookFailurePolicy)\n ? (normalized as HookFailurePolicy)\n : null;\n}\n\nexport function normalizeHookIdempotencyScope(value: unknown): HookIdempotencyScope | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n return HOOK_IDEMPOTENCY_SCOPES.includes(normalized as HookIdempotencyScope)\n ? (normalized as HookIdempotencyScope)\n : null;\n}\n", "import {\n type CurrentGuardTrigger,\n type HookEffectKind,\n type HookFailurePolicy,\n type KnownGuardTrigger,\n} from \"./hookContracts.js\";\n\nexport type HookAuditCategory = \"guard_policy\" | \"lifecycle\" | \"payment\" | \"request\" | \"response\";\n\nexport type HookRegistryEntry = {\n trigger: KnownGuardTrigger;\n implemented: boolean;\n blockingDefault: boolean;\n allowedEffectKinds: HookEffectKind[];\n allowsDelegatedExecution: boolean;\n auditCategory: HookAuditCategory;\n notes?: string;\n};\n\nconst HOOK_REGISTRY: HookRegistryEntry[] = [\n {\n trigger: \"before:installation_create\",\n implemented: true,\n blockingDefault: true,\n allowedEffectKinds: [\"policy\"],\n allowsDelegatedExecution: false,\n auditCategory: \"guard_policy\",\n },\n {\n trigger: \"before:widget_load\",\n implemented: true,\n blockingDefault: true,\n allowedEffectKinds: [\"policy\"],\n allowsDelegatedExecution: false,\n auditCategory: \"guard_policy\",\n },\n {\n trigger: \"before:session_open\",\n implemented: true,\n blockingDefault: true,\n allowedEffectKinds: [\"policy\"],\n allowsDelegatedExecution: false,\n auditCategory: \"guard_policy\",\n },\n {\n trigger: \"before:thread_create\",\n implemented: true,\n blockingDefault: true,\n allowedEffectKinds: [\"policy\"],\n allowsDelegatedExecution: false,\n auditCategory: \"guard_policy\",\n },\n {\n trigger: \"before:tool_run\",\n implemented: true,\n blockingDefault: true,\n allowedEffectKinds: [\"policy\"],\n allowsDelegatedExecution: true,\n auditCategory: \"guard_policy\",\n },\n {\n trigger: \"after:install\",\n implemented: true,\n blockingDefault: false,\n allowedEffectKinds: [\"policy\", \"integration_call\"],\n allowsDelegatedExecution: false,\n auditCategory: \"lifecycle\",\n },\n {\n trigger: \"after:link_complete\",\n implemented: true,\n blockingDefault: false,\n allowedEffectKinds: [\"policy\", \"integration_call\"],\n allowsDelegatedExecution: false,\n auditCategory: \"lifecycle\",\n },\n {\n trigger: \"before:link_revoke\",\n implemented: true,\n blockingDefault: true,\n allowedEffectKinds: [\"policy\"],\n allowsDelegatedExecution: false,\n auditCategory: \"guard_policy\",\n },\n {\n trigger: \"before:uninstall\",\n implemented: true,\n blockingDefault: true,\n allowedEffectKinds: [\"policy\"],\n allowsDelegatedExecution: false,\n auditCategory: \"guard_policy\",\n },\n {\n trigger: \"after:tool_complete\",\n implemented: true,\n blockingDefault: false,\n allowedEffectKinds: [\"policy\", \"integration_call\"],\n allowsDelegatedExecution: true,\n auditCategory: \"response\",\n },\n {\n trigger: \"after:uninstall\",\n implemented: true,\n blockingDefault: false,\n allowedEffectKinds: [\"policy\", \"integration_call\"],\n allowsDelegatedExecution: false,\n auditCategory: \"lifecycle\",\n },\n {\n trigger: \"after:payment_completed\",\n implemented: true,\n blockingDefault: false,\n allowedEffectKinds: [\"invoice\", \"policy\", \"notification\", \"integration_call\"],\n allowsDelegatedExecution: true,\n auditCategory: \"payment\",\n notes:\n \"Invoice hooks are landed for paid completion paths, and explicit policy effects can now reuse internal headless guard runtimes; broader notification/integration expansion still remains open.\",\n },\n {\n trigger: \"after:payment_failed\",\n implemented: false,\n blockingDefault: false,\n allowedEffectKinds: [\"notification\", \"integration_call\"],\n allowsDelegatedExecution: true,\n auditCategory: \"payment\",\n notes: \"Reserved TASK-034/TASK-036 hook; requires explicit runtime wiring.\",\n },\n {\n trigger: \"after:request_created\",\n implemented: true,\n blockingDefault: false,\n allowedEffectKinds: [\"notification\", \"integration_call\"],\n allowsDelegatedExecution: true,\n auditCategory: \"request\",\n notes: \"First notification runtime wiring is landed; broader hook families still remain open.\",\n },\n {\n trigger: \"after:response_ready\",\n implemented: false,\n blockingDefault: false,\n allowedEffectKinds: [\"notification\", \"integration_call\"],\n allowsDelegatedExecution: true,\n auditCategory: \"response\",\n notes: \"Reserved TASK-034/TASK-036 hook; requires explicit runtime wiring.\",\n },\n {\n trigger: \"after:response_finalized\",\n implemented: true,\n blockingDefault: false,\n allowedEffectKinds: [\"invoice\", \"policy\", \"notification\", \"integration_call\"],\n allowsDelegatedExecution: true,\n auditCategory: \"response\",\n notes:\n \"Notification and invoice runtimes are landed; explicit policy effects can also reuse internal headless guard runtimes on finalized responses.\",\n },\n];\n\nconst HOOK_REGISTRY_MAP = new Map(HOOK_REGISTRY.map((entry) => [entry.trigger, entry] as const));\n\nexport function listHookRegistry(): HookRegistryEntry[] {\n return HOOK_REGISTRY.map((entry) => ({\n ...entry,\n allowedEffectKinds: [...entry.allowedEffectKinds],\n }));\n}\n\nexport function getHookRegistryEntry(trigger: string): HookRegistryEntry | null {\n const normalized = String(trigger || \"\").trim() as KnownGuardTrigger;\n const entry = HOOK_REGISTRY_MAP.get(normalized);\n return entry ? { ...entry, allowedEffectKinds: [...entry.allowedEffectKinds] } : null;\n}\n\nexport function getDefaultFailurePolicyForEffectKind(\n effectKind: HookEffectKind,\n): HookFailurePolicy {\n if (effectKind === \"policy\") return \"fail_closed\";\n if (effectKind === \"invoice\") return \"retry\";\n if (effectKind === \"notification\") return \"fail_open\";\n return \"audit_only\";\n}\n\nexport function isImplementedHookTrigger(trigger: string): trigger is CurrentGuardTrigger {\n const entry = getHookRegistryEntry(trigger);\n return Boolean(entry?.implemented);\n}\n", "import {\n normalizeHookEffectKind,\n normalizeHookExecutionMode,\n normalizeHookFailurePolicy,\n normalizeHookIdempotencyScope,\n normalizeHookProviderScope,\n type HookEffectKind,\n type HookExecutionMode,\n type HookFailurePolicy,\n type HookIdempotencyScope,\n type HookProviderScope,\n} from \"./hookContracts.js\";\nimport {\n getDefaultFailurePolicyForEffectKind,\n getHookRegistryEntry,\n type HookRegistryEntry,\n} from \"./hookRegistry.js\";\n\nexport type HookResolutionInput = {\n slug: string;\n trigger: string;\n config?: Record<string, unknown> | null;\n};\n\nexport type NormalizedHookGuardConfig = {\n effectKind: HookEffectKind;\n executionMode: HookExecutionMode | null;\n providerScope: HookProviderScope | null;\n failurePolicy: HookFailurePolicy;\n idempotencyScope: HookIdempotencyScope | null;\n providerKey: string | null;\n};\n\nexport type ResolvedHookGuardSemantics = {\n slug: string;\n trigger: string;\n hook: HookRegistryEntry | null;\n config: NormalizedHookGuardConfig;\n};\n\nfunction readString(value: unknown): string {\n const normalized = String(value ?? \"\").trim();\n return normalized || \"\";\n}\n\nfunction readConfigValue(config: Record<string, unknown>, snake: string, camel: string): unknown {\n return config[snake] ?? config[camel];\n}\n\nexport function normalizeHookGuardConfig(input: HookResolutionInput): ResolvedHookGuardSemantics {\n const config =\n input.config && typeof input.config === \"object\" && !Array.isArray(input.config)\n ? input.config\n : {};\n const hook = getHookRegistryEntry(input.trigger);\n const explicitEffectKind = normalizeHookEffectKind(\n readConfigValue(config, \"effect_kind\", \"effectKind\"),\n );\n const effectKind = explicitEffectKind ?? hook?.allowedEffectKinds[0] ?? \"policy\";\n\n const explicitFailurePolicy = normalizeHookFailurePolicy(\n readConfigValue(config, \"failure_policy\", \"failurePolicy\"),\n );\n\n return {\n slug: input.slug,\n trigger: input.trigger,\n hook,\n config: {\n effectKind,\n executionMode: normalizeHookExecutionMode(\n readConfigValue(config, \"execution_mode\", \"executionMode\"),\n ),\n providerScope: normalizeHookProviderScope(\n readConfigValue(config, \"provider_scope\", \"providerScope\"),\n ),\n failurePolicy: explicitFailurePolicy ?? getDefaultFailurePolicyForEffectKind(effectKind),\n idempotencyScope: normalizeHookIdempotencyScope(\n readConfigValue(config, \"idempotency_scope\", \"idempotencyScope\"),\n ),\n providerKey: readString(readConfigValue(config, \"provider_key\", \"providerKey\")) || null,\n },\n };\n}\n", "import pino, { type LoggerOptions } from \"pino\";\nimport { createRequire } from \"node:module\";\nimport { env } from \"./config/env.js\";\n\nconst require = createRequire(import.meta.url);\nlet prettyUnavailableWarningEmitted = false;\n\nfunction shouldUsePrettyLogs(): boolean {\n return env.logPretty && process.env.NODE_ENV !== \"production\" && process.env.VITEST !== \"true\";\n}\n\nfunction resolvePrettyTransportTarget(): string | null {\n if (!shouldUsePrettyLogs()) {\n return null;\n }\n try {\n return require.resolve(\"pino-pretty\");\n } catch {\n if (!prettyUnavailableWarningEmitted) {\n prettyUnavailableWarningEmitted = true;\n process.stderr.write(\n \"[logger] LOG_PRETTY=true but pino-pretty is not installed; falling back to JSON logs.\\n\",\n );\n }\n return null;\n }\n}\n\nexport function buildLoggerOptions(): LoggerOptions {\n const prettyTarget = resolvePrettyTransportTarget();\n if (!prettyTarget) {\n return {\n level: env.logLevel,\n };\n }\n\n return {\n level: env.logLevel,\n transport: {\n target: prettyTarget,\n options: {\n colorize: true,\n translateTime: \"SYS:standard\",\n ignore: \"pid,hostname\",\n },\n },\n };\n}\n\nexport const logger = pino(buildLoggerOptions());\n", "import dotenv from \"dotenv\";\nimport fs from \"node:fs\";\nimport { bootstrapLogger } from \"../bootstrapLogger.js\";\n\nfunction envFilePath() {\n // Allow scripts/containers to explicitly select an env file.\n // Example: `ENV_FILE=.env.dev ./dev-start.sh`\n if (process.env.ENV_FILE) {\n return process.env.ENV_FILE;\n }\n // Note: Vitest config sets `NODE_ENV=test` so this is evaluated correctly at import time.\n // In some Vitest modes `NODE_ENV` might not be set early enough, so also key off `VITEST`.\n if (process.env.VITEST) {\n return \".env.test\";\n }\n if (process.env.NODE_ENV === \"test\") {\n return \".env.test\";\n }\n if (process.env.NODE_ENV === \"development\" || process.env.NODE_ENV === \"dev\") {\n return \".env.dev\";\n }\n\n // If NODE_ENV is not set, prefer `.env` if present, otherwise fall back to `.env.dev`.\n if (fs.existsSync(\".env\")) {\n return \".env\";\n }\n if (fs.existsSync(\".env.dev\")) {\n return \".env.dev\";\n }\n return \".env\";\n}\n\ndotenv.config({ path: envFilePath() });\n\nconst envValidationIssues: string[] = [];\n\nfunction parseBooleanEnv(name: string, fallback: boolean): boolean {\n const raw = process.env[name];\n if (raw === undefined || String(raw).trim() === \"\") {\n return fallback;\n }\n const normalized = String(raw).trim().toLowerCase();\n if (normalized === \"true\") return true;\n if (normalized === \"false\") return false;\n envValidationIssues.push(`${name} must be \"true\" or \"false\" (got ${JSON.stringify(raw)})`);\n return fallback;\n}\n\nfunction parseNumberEnv(\n name: string,\n fallback: number,\n options: {\n integer?: boolean;\n min?: number;\n max?: number;\n } = {},\n): number {\n const raw = process.env[name];\n if (raw === undefined || String(raw).trim() === \"\") {\n return fallback;\n }\n const value = Number(raw);\n if (!Number.isFinite(value)) {\n envValidationIssues.push(`${name} must be a finite number (got ${JSON.stringify(raw)})`);\n return fallback;\n }\n if (options.integer && !Number.isInteger(value)) {\n envValidationIssues.push(`${name} must be an integer (got ${JSON.stringify(raw)})`);\n return fallback;\n }\n if (options.min !== undefined && value < options.min) {\n envValidationIssues.push(`${name} must be >= ${options.min} (got ${value})`);\n return fallback;\n }\n if (options.max !== undefined && value > options.max) {\n envValidationIssues.push(`${name} must be <= ${options.max} (got ${value})`);\n return fallback;\n }\n return value;\n}\n\nfunction parseStringEnumEnv<const T extends string>(\n name: string,\n fallback: T,\n allowedValues: readonly T[],\n): T {\n const raw = process.env[name];\n if (raw === undefined || String(raw).trim() === \"\") {\n return fallback;\n }\n const normalized = String(raw).trim() as T;\n if (allowedValues.includes(normalized)) {\n return normalized;\n }\n envValidationIssues.push(\n `${name} must be one of ${allowedValues.join(\", \")} (got ${JSON.stringify(raw)})`,\n );\n return fallback;\n}\n\nexport const env = {\n databaseUrl: process.env.DATABASE_URL ?? \"\",\n port: parseNumberEnv(\"PORT\", 3000, { integer: true, min: 1, max: 65535 }),\n logLevel: parseStringEnumEnv(\"LOG_LEVEL\", \"info\", [\n \"fatal\",\n \"error\",\n \"warn\",\n \"info\",\n \"debug\",\n \"trace\",\n \"silent\",\n ]),\n logPretty: parseBooleanEnv(\"LOG_PRETTY\", false),\n keyEncryptionKey: process.env.PLATFORM_KEY_ENCRYPTION_KEY ?? Buffer.alloc(32).toString(\"base64\"),\n identifierPepper: process.env.SUBJECT_IDENTIFIER_PEPPER ?? \"default-pepper\",\n apiKeyPepper: process.env.API_KEY_PEPPER ?? \"default-api-key-pepper\",\n otpCodePepper: process.env.PORTAL_OTP_CODE_PEPPER ?? \"default-otp-pepper\",\n // Trusted proxy setting for Fastify. Set to a comma-separated list of CIDRs/IPs in production\n // (e.g. \"10.0.0.0/8,172.16.0.0/12\") to restrict which upstream IPs may set X-Forwarded-* headers.\n // Defaults to true (trust all) for backward compatibility.\n trustedProxy: process.env.TRUSTED_PROXY ?? \"true\",\n superadminApiKeyHash: process.env.SUPERADMIN_API_KEY_HASH ?? \"\",\n // Default Redis port is 6379. If Redis is not available, the API should still boot;\n // the worker startup is handled defensively in `src/server.ts`.\n redisUrl: process.env.REDIS_URL ?? \"redis://localhost:6379\",\n mailjetApiKey: process.env.MAILJET_API_KEY ?? \"\",\n mailjetApiSecret: process.env.MAILJET_API_SECRET ?? \"\",\n mailjetFromEmail: process.env.MAILJET_FROM_EMAIL ?? \"\",\n mailjetFromName: process.env.MAILJET_FROM_NAME ?? \"\",\n mailgunApiKey: process.env.MAILGUN_API_KEY ?? \"\",\n mailgunDomain: process.env.MAILGUN_DOMAIN ?? \"\",\n mailgunFromEmail: process.env.MAILGUN_FROM_EMAIL ?? \"\",\n mailgunFromName: process.env.MAILGUN_FROM_NAME ?? \"\",\n mailgunApiBaseUrl: process.env.MAILGUN_API_BASE_URL ?? \"https://api.mailgun.net\",\n smtpHost: process.env.SMTP_HOST ?? \"\",\n smtpPort: parseNumberEnv(\"SMTP_PORT\", 587, { integer: true, min: 1, max: 65535 }),\n smtpUser: process.env.SMTP_USER ?? \"\",\n smtpPass: process.env.SMTP_PASS ?? \"\",\n smtpFrom: process.env.SMTP_FROM ?? \"\",\n smtpSecure: parseBooleanEnv(\"SMTP_SECURE\", false),\n emailProviderTimeoutMs: parseNumberEnv(\"EMAIL_PROVIDER_TIMEOUT_MS\", 10000, {\n integer: true,\n min: 1,\n }),\n storageProvider: parseStringEnumEnv(\"STORAGE_PROVIDER\", \"local\", [\"local\", \"s3\"]),\n storageRoot: process.env.STORAGE_ROOT ?? \"\",\n s3Endpoint: process.env.S3_ENDPOINT ?? \"\",\n s3Region: process.env.S3_REGION ?? \"us-east-1\",\n s3AccessKeyId: process.env.S3_ACCESS_KEY_ID ?? \"\",\n s3SecretAccessKey: process.env.S3_SECRET_ACCESS_KEY ?? \"\",\n s3Bucket: process.env.S3_BUCKET ?? \"\",\n s3ForcePathStyle: parseBooleanEnv(\"S3_FORCE_PATH_STYLE\", false),\n\n // Feature toggles / policies\n publicCatalogEnabled: parseBooleanEnv(\"PUBLIC_CATALOG_ENABLED\", false),\n // System user self-registration (tenant/publisher) endpoint guard.\n // Production default is disabled; enable only if explicit product flow requires it.\n systemRegisterEnabled: parseBooleanEnv(\n \"SYSTEM_REGISTER_ENABLED\",\n process.env.NODE_ENV !== \"production\",\n ),\n\n // CORS: comma-separated list of allowed origins. When empty, CORS is disabled.\n corsAllowedOrigins: (process.env.CORS_ALLOWED_ORIGINS ?? \"\")\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n\n // Publisher defenses\n publisherIpAllowlistEnabled: parseBooleanEnv(\"PUBLISHER_IP_ALLOWLIST_ENABLED\", false),\n // PRIVATE_EXECUTOR hard-enforcement: when true, dispatch to PRIVATE_EXECUTOR\n // endpoints will DNS-resolve the base_url and reject if the resolved IP is not\n // within the publisher's declared IP allowlist.\n privateExecutorEnforcementEnabled: parseBooleanEnv(\"PRIVATE_EXECUTOR_ENFORCEMENT_ENABLED\", false),\n widgetTokenAudienceEnforced: parseBooleanEnv(\n \"WIDGET_TOKEN_AUDIENCE_ENFORCED\",\n process.env.NODE_ENV === \"production\",\n ),\n\n // Demos / Test apps\n demosEnabled: parseBooleanEnv(\"DEMOS_ENABLED\", process.env.NODE_ENV !== \"production\"),\n // Core app route toggles for isolated deployments (single or split gateway topology).\n servePortalApp: parseBooleanEnv(\"SERVE_PORTAL_APP\", true),\n servePublisherApp: parseBooleanEnv(\"SERVE_PUBLISHER_APP\", true),\n serveSuperadminApp: parseBooleanEnv(\"SERVE_SUPERADMIN_APP\", true),\n serveDocsApp: parseBooleanEnv(\"SERVE_DOCS_APP\", true),\n servePaymentHostedApp: parseBooleanEnv(\"SERVE_PAYMENT_HOSTED_APP\", true),\n endpointCredentialRotationEnabled: parseBooleanEnv(\"ENDPOINT_CREDENTIAL_ROTATION_ENABLED\", true),\n endpointCredentialRotationIntervalMs: parseNumberEnv(\n \"ENDPOINT_CREDENTIAL_ROTATION_INTERVAL_MS\",\n 60 * 60 * 1000,\n { integer: true, min: 60_000 },\n ),\n endpointCredentialRotationExpiringDays: parseNumberEnv(\n \"ENDPOINT_CREDENTIAL_ROTATION_EXPIRING_DAYS\",\n 30,\n { integer: true, min: 1 },\n ),\n endpointCredentialRotationStaleDays: parseNumberEnv(\n \"ENDPOINT_CREDENTIAL_ROTATION_STALE_DAYS\",\n 90,\n { integer: true, min: 1 },\n ),\n endpointCredentialRotationValidityDays: parseNumberEnv(\n \"ENDPOINT_CREDENTIAL_ROTATION_VALIDITY_DAYS\",\n 365,\n { integer: true, min: 1 },\n ),\n endpointCredentialRotationMaxPerRun: parseNumberEnv(\n \"ENDPOINT_CREDENTIAL_ROTATION_MAX_PER_RUN\",\n 100,\n { integer: true, min: 1 },\n ),\n\n // Distributed rate limiting (Redis-backed with in-memory fallback on Redis errors/timeouts)\n distributedRateLimitEnabled: parseBooleanEnv(\"DISTRIBUTED_RATE_LIMIT_ENABLED\", true),\n rateLimitApiKeyInvalidPerMinute: parseNumberEnv(\"RATE_LIMIT_API_KEY_INVALID_PER_MINUTE\", 30, {\n integer: true,\n min: 1,\n }),\n rateLimitRequestsPerMinute: parseNumberEnv(\"RATE_LIMIT_REQUESTS_PER_MINUTE\", 120, {\n integer: true,\n min: 1,\n }),\n rateLimitRequestCallbacksPerMinute: parseNumberEnv(\n \"RATE_LIMIT_REQUEST_CALLBACKS_PER_MINUTE\",\n 240,\n { integer: true, min: 1 },\n ),\n rateLimitIntegratorProxyPerMinute: parseNumberEnv(\"RATE_LIMIT_INTEGRATOR_PROXY_PER_MINUTE\", 300, {\n integer: true,\n min: 1,\n }),\n rateLimitPublisherEgressPerMinute: parseNumberEnv(\"RATE_LIMIT_PUBLISHER_EGRESS_PER_MINUTE\", 300, {\n integer: true,\n min: 1,\n }),\n rateLimitPublisherBridgeTokenPerMinute: parseNumberEnv(\n \"RATE_LIMIT_PUBLISHER_BRIDGE_TOKEN_PER_MINUTE\",\n 60,\n { integer: true, min: 1 },\n ),\n rateLimitPublisherConnectivityWritesPerMinute: parseNumberEnv(\n \"RATE_LIMIT_PUBLISHER_CONNECTIVITY_WRITES_PER_MINUTE\",\n 120,\n { integer: true, min: 1 },\n ),\n rateLimitSuperadminConnectivityWritesPerMinute: parseNumberEnv(\n \"RATE_LIMIT_SUPERADMIN_CONNECTIVITY_WRITES_PER_MINUTE\",\n 180,\n { integer: true, min: 1 },\n ),\n endpointAuthNoneEnabled: parseBooleanEnv(\"ENDPOINT_AUTH_NONE_ENABLED\", false),\n // Predicate scope hooks (optional)\n predicateScopeHookUrl: process.env.PREDICATE_SCOPE_HOOK_URL ?? \"\",\n predicateScopeHookTimeoutMs: parseNumberEnv(\"PREDICATE_SCOPE_HOOK_TIMEOUT_MS\", 500, {\n integer: true,\n min: 1,\n }),\n predicateScopeHookSecret: process.env.PREDICATE_SCOPE_HOOK_SECRET ?? \"\",\n // Signature context migration: strict source-bound signing is now default-on.\n // Set `SIGNING_CONTEXT_STRICT=false` only as a temporary rollback during incident response.\n signingContextStrict: parseBooleanEnv(\"SIGNING_CONTEXT_STRICT\", true),\n // Signature context migration: when true, verifiers can still accept legacy signatures that\n // do not include source in the signed canonical payload.\n // Keep true by default for migration safety; set to false to fully enforce strict mode.\n signingContextAllowLegacyFallback: parseBooleanEnv(\"SIGNING_CONTEXT_ALLOW_LEGACY_FALLBACK\", true),\n // Secret resolution fallback policy:\n // true => allow `secret_ciphertext` fallback when `secret_ref` is unresolved/unsupported.\n // false => fail-closed on `secret_ref` errors.\n secretsAllowCiphertextFallback: parseBooleanEnv(\"SECRETS_ALLOW_CIPHERTEXT_FALLBACK\", true),\n // Guard policy-kind resolution:\n // true => keep compatibility slug fallback (subscription-check/payment-gate/stepup-auth/action-confirm).\n // false => strict contract mode (`config.policy.kind` / `guard_kind`) with no slug-based inference.\n guardExemplarSlugFallbackEnabled: parseBooleanEnv(\"GUARD_EXEMPLAR_SLUG_FALLBACK_ENABLED\", false),\n\n // IdP JWT -> exchange -> PASETO\n idpIssuer: process.env.IDP_ISSUER ?? \"\",\n idpAudience: process.env.IDP_AUDIENCE ?? \"\",\n idpJwksUrl: process.env.IDP_JWKS_URL ?? \"\",\n // Optional: inline JWK (JSON) to avoid remote fetch in some environments/tests.\n idpJwkJson: process.env.IDP_JWK_JSON ?? \"\",\n\n // Demo-only X-API integration. Kept out of the core API surface unless demos are enabled.\n demoXapiBaseUrl:\n process.env.DEMO_XAPI_BASE_URL ?? process.env.XAPI_BASE_URL ?? \"http://localhost:3001\",\n\n // Subject Signing Algorithm Policy (SEC-B20)\n signingAllowedAlgorithms: (process.env.SIGNING_ALLOWED_ALGORITHMS ?? \"ed25519\")\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n signingDeprecatedAlgorithms: (process.env.SIGNING_DEPRECATED_ALGORITHMS ?? \"\")\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n\n // WebAuthn (Subject Proof) defaults for localhost dev.\n // NOTE: In production these should be explicitly configured per environment.\n webauthnRpId: process.env.WEBAUTHN_RPID ?? \"localhost\",\n webauthnExpectedOrigins: (\n process.env.WEBAUTHN_EXPECTED_ORIGINS ??\n // Include the Gateway origin too (`:3000`) because some embed flows run WebAuthn\n // from pages served by the Gateway.\n \"http://localhost:3000,http://localhost:3300,http://localhost:5173,http://localhost:5174,http://localhost:5175,http://localhost:5177,http://localhost:5178,http://localhost:5179,http://localhost:5181,http://localhost:5182,http://localhost:5183\"\n )\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean),\n\n // Agent Tunnel\n agentTunnelEnabled: parseBooleanEnv(\"AGENT_TUNNEL_ENABLED\", false),\n agentTunnelHeartbeatIntervalMs: parseNumberEnv(\"AGENT_TUNNEL_HEARTBEAT_INTERVAL_MS\", 30_000, {\n integer: true,\n min: 1,\n }),\n agentTunnelHeartbeatTimeoutMs: parseNumberEnv(\"AGENT_TUNNEL_HEARTBEAT_TIMEOUT_MS\", 10_000, {\n integer: true,\n min: 1,\n }),\n agentTunnelSessionTtlMs: parseNumberEnv(\"AGENT_TUNNEL_SESSION_TTL_MS\", 4 * 60 * 60 * 1000, {\n integer: true,\n min: 1,\n }),\n};\n\nif (envValidationIssues.length > 0 && process.env.NODE_ENV !== \"test\") {\n bootstrapLogger.error(\n {\n issues: envValidationIssues,\n envFile: envFilePath(),\n },\n \"Invalid environment configuration\",\n );\n process.exit(1);\n}\n\n// Validate key material at startup (SEC-B24)\ntry {\n const kek = Buffer.from(env.keyEncryptionKey, \"base64\");\n if (kek.length !== 32) {\n throw new Error(\n `PLATFORM_KEY_ENCRYPTION_KEY must be a 32-byte base64 string (got ${kek.length} bytes)`,\n );\n }\n} catch (err: any) {\n if (process.env.NODE_ENV !== \"test\") {\n bootstrapLogger.error({ err }, \"Invalid key material\");\n process.exit(1);\n }\n}\n\nif (!env.databaseUrl && process.env.NODE_ENV !== \"test\") {\n throw new Error(\"DATABASE_URL is required\");\n}\n\n// Validate critical secrets are not defaults in production (SEC-HARDENING)\nif (process.env.NODE_ENV === \"production\") {\n const missing: string[] = [];\n if (!process.env.SUBJECT_IDENTIFIER_PEPPER) missing.push(\"SUBJECT_IDENTIFIER_PEPPER\");\n if (!process.env.API_KEY_PEPPER) missing.push(\"API_KEY_PEPPER\");\n if (!process.env.PORTAL_OTP_CODE_PEPPER) missing.push(\"PORTAL_OTP_CODE_PEPPER\");\n if (!process.env.SUPERADMIN_API_KEY_HASH) missing.push(\"SUPERADMIN_API_KEY_HASH\");\n if (missing.length > 0) {\n bootstrapLogger.error(\n {\n missing,\n },\n \"Missing required secrets in production\",\n );\n process.exit(1);\n }\n}\n", "import pino, { type LoggerOptions } from \"pino\";\nimport { createRequire } from \"node:module\";\n\nconst require = createRequire(import.meta.url);\nlet prettyUnavailableWarningEmitted = false;\n\nfunction shouldUsePrettyLogsFromProcessEnv(): boolean {\n return (\n String(process.env.LOG_PRETTY ?? \"false\").toLowerCase() === \"true\" &&\n process.env.NODE_ENV !== \"production\" &&\n process.env.VITEST !== \"true\"\n );\n}\n\nfunction resolvePrettyTransportTarget(): string | null {\n if (!shouldUsePrettyLogsFromProcessEnv()) {\n return null;\n }\n try {\n return require.resolve(\"pino-pretty\");\n } catch {\n if (!prettyUnavailableWarningEmitted) {\n prettyUnavailableWarningEmitted = true;\n process.stderr.write(\n \"[bootstrap-logger] LOG_PRETTY=true but pino-pretty is not installed; falling back to JSON logs.\\n\",\n );\n }\n return null;\n }\n}\n\nexport function buildBootstrapLoggerOptions(): LoggerOptions {\n const prettyTarget = resolvePrettyTransportTarget();\n if (!prettyTarget) {\n return {\n level: process.env.LOG_LEVEL ?? \"info\",\n };\n }\n\n return {\n level: process.env.LOG_LEVEL ?? \"info\",\n transport: {\n target: prettyTarget,\n options: {\n colorize: true,\n translateTime: \"SYS:standard\",\n ignore: \"pid,hostname\",\n },\n },\n };\n}\n\nexport const bootstrapLogger = pino(buildBootstrapLoggerOptions());\n", "export type NotificationDefinition = {\n name: string;\n channel?: string;\n provider_key?: string;\n providerKey?: string;\n execution_mode?: string;\n executionMode?: string;\n provider_scope?: string;\n providerScope?: string;\n failure_policy?: string;\n failurePolicy?: string;\n retry_policy?: {\n max_retries?: number;\n backoff?: \"none\" | \"linear\" | \"exponential\";\n };\n retryPolicy?: {\n maxRetries?: number;\n backoff?: \"none\" | \"linear\" | \"exponential\";\n };\n idempotency_scope?: string;\n idempotencyScope?: string;\n template_ref?: string;\n templateRef?: string;\n target?: Record<string, unknown>;\n template?: Record<string, unknown>;\n [key: string]: unknown;\n};\n\nexport type NotificationRefResolutionSource = \"consumer_manifest\" | \"owner_manifest\";\nexport type NotificationTemplateResolutionSource =\n | NotificationRefResolutionSource\n | \"owner_settings\";\n\nexport type NotificationTemplate = {\n name: string;\n channel?: string;\n subject?: string;\n text?: string;\n html?: string;\n [key: string]: unknown;\n};\n\nexport type NotificationRefResolution = {\n notification_ref: string;\n definition_name: string;\n source: NotificationRefResolutionSource;\n template_ref?: string | null;\n template_name?: string | null;\n template_source?: NotificationTemplateResolutionSource | null;\n};\n\nexport type ResolvedNotificationConfigResult =\n | {\n ok: true;\n config: Record<string, unknown>;\n resolution: NotificationRefResolution;\n }\n | {\n ok: false;\n reason: string;\n message: string;\n details: Record<string, unknown>;\n };\n\nexport function buildNotificationDefinitionRegistry(\n definitions: unknown,\n): Map<string, NotificationDefinition> {\n const registry = new Map<string, NotificationDefinition>();\n if (!Array.isArray(definitions)) return registry;\n for (const def of definitions) {\n if (!def || typeof def !== \"object\") continue;\n const name = String((def as any).name ?? \"\").trim();\n if (!name) continue;\n registry.set(name, def as NotificationDefinition);\n }\n return registry;\n}\n\nexport function buildNotificationTemplateRegistry(\n templates: unknown,\n): Map<string, NotificationTemplate> {\n const registry = new Map<string, NotificationTemplate>();\n if (!Array.isArray(templates)) return registry;\n for (const template of templates) {\n if (!template || typeof template !== \"object\") continue;\n const name = String((template as any).name ?? \"\").trim();\n if (!name) continue;\n registry.set(name, template as NotificationTemplate);\n }\n return registry;\n}\n\nexport function readNotificationRef(config: unknown): string {\n if (!config || typeof config !== \"object\" || Array.isArray(config)) return \"\";\n return String((config as any).notification_ref ?? (config as any).notificationRef ?? \"\").trim();\n}\n\nexport function readNotificationTemplateRef(config: unknown): string {\n if (!config || typeof config !== \"object\" || Array.isArray(config)) return \"\";\n return String((config as any).template_ref ?? (config as any).templateRef ?? \"\").trim();\n}\n\nfunction resolveNotificationTemplateConfig(input: {\n config: Record<string, unknown>;\n templates: Map<string, NotificationTemplate>;\n source: NotificationRefResolutionSource;\n baseResolution: NotificationRefResolution;\n}):\n | {\n ok: true;\n config: Record<string, unknown>;\n resolution: NotificationRefResolution;\n }\n | {\n ok: false;\n reason: string;\n message: string;\n details: Record<string, unknown>;\n } {\n const templateRef = readNotificationTemplateRef(input.config);\n if (!templateRef) {\n return {\n ok: true,\n config: input.config,\n resolution: {\n ...input.baseResolution,\n template_ref: null,\n template_name: null,\n template_source: null,\n },\n };\n }\n\n const template = input.templates.get(templateRef);\n if (!template) {\n return {\n ok: false,\n reason: \"notification_template_ref_unresolved\",\n message: `Notification template_ref \"${templateRef}\" cannot be resolved`,\n details: {\n notification_ref_resolution: input.baseResolution,\n template_ref: templateRef,\n template_source: input.source,\n },\n };\n }\n\n const merged: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(input.config)) {\n if (key === \"template_ref\" || key === \"templateRef\") continue;\n merged[key] = value;\n }\n\n const resolvedTemplate: Record<string, unknown> = {};\n if (typeof template.subject === \"string\") resolvedTemplate.subject = template.subject;\n if (typeof template.text === \"string\") resolvedTemplate.text = template.text;\n if (typeof template.html === \"string\") resolvedTemplate.html = template.html;\n const inlineTemplate =\n merged.template && typeof merged.template === \"object\" && !Array.isArray(merged.template)\n ? (merged.template as Record<string, unknown>)\n : {};\n merged.template = {\n ...resolvedTemplate,\n ...inlineTemplate,\n };\n\n return {\n ok: true,\n config: merged,\n resolution: {\n ...input.baseResolution,\n template_ref: templateRef,\n template_name: String(template.name || \"\").trim() || templateRef,\n template_source: input.source,\n },\n };\n}\n\nexport function resolveNotificationConfig(\n guardConfig: Record<string, unknown>,\n definitions: Map<string, NotificationDefinition>,\n templates?: Map<string, NotificationTemplate>,\n options?: { applyTemplates?: boolean },\n): Record<string, unknown> {\n const applyTemplates = options?.applyTemplates ?? true;\n const ref = readNotificationRef(guardConfig);\n if (!ref) {\n if (!applyTemplates) return guardConfig;\n const templateResolved = resolveNotificationTemplateConfig({\n config: guardConfig,\n templates: templates ?? new Map(),\n source: \"consumer_manifest\",\n baseResolution: {\n notification_ref: \"\",\n definition_name: \"\",\n source: \"consumer_manifest\",\n },\n });\n return templateResolved.ok ? templateResolved.config : guardConfig;\n }\n\n const definition = definitions.get(ref);\n if (!definition) {\n if (!applyTemplates) return guardConfig;\n const templateResolved = resolveNotificationTemplateConfig({\n config: guardConfig,\n templates: templates ?? new Map(),\n source: \"consumer_manifest\",\n baseResolution: {\n notification_ref: ref,\n definition_name: ref,\n source: \"consumer_manifest\",\n },\n });\n return templateResolved.ok ? templateResolved.config : guardConfig;\n }\n\n const merged: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(definition)) {\n if (key === \"name\") continue;\n merged[key] = value;\n }\n\n for (const [key, value] of Object.entries(guardConfig)) {\n if (key === \"notification_ref\" || key === \"notificationRef\") continue;\n if (value === undefined) continue;\n merged[key] = value;\n }\n\n if (!applyTemplates) {\n return merged;\n }\n const templateResolved = resolveNotificationTemplateConfig({\n config: merged,\n templates: templates ?? new Map(),\n source: \"consumer_manifest\",\n baseResolution: {\n notification_ref: ref,\n definition_name: String(definition.name || \"\").trim() || ref,\n source: \"consumer_manifest\",\n },\n });\n return templateResolved.ok ? templateResolved.config : merged;\n}\n\nexport function resolveNotificationConfigWithGovernance(input: {\n guardConfig: Record<string, unknown>;\n definition: NotificationDefinition;\n source: NotificationRefResolutionSource;\n templates?: Map<string, NotificationTemplate>;\n}): ResolvedNotificationConfigResult {\n const ref = readNotificationRef(input.guardConfig);\n const definitionName = String(input.definition.name || \"\").trim() || ref;\n const resolution: NotificationRefResolution = {\n notification_ref: ref,\n definition_name: definitionName,\n source: input.source,\n };\n\n if (input.source === \"owner_manifest\") {\n const disallowedOverridePaths = Object.keys(input.guardConfig).filter(\n (key) => key !== \"notification_ref\" && key !== \"notificationRef\",\n );\n if (disallowedOverridePaths.length > 0) {\n return {\n ok: false,\n reason: \"notification_override_not_allowed\",\n message: `Notification ref ${ref} does not allow guard-level overrides when resolved from owner manifest`,\n details: {\n notification_ref_resolution: resolution,\n disallowed_override_paths: disallowedOverridePaths,\n },\n };\n }\n }\n\n const templateResolved = resolveNotificationTemplateConfig({\n config: resolveNotificationConfig(\n input.guardConfig,\n new Map([[definitionName, input.definition]]),\n input.templates,\n { applyTemplates: false },\n ),\n templates: input.templates ?? new Map(),\n source: input.source,\n baseResolution: resolution,\n });\n if (!templateResolved.ok) {\n return templateResolved;\n }\n\n return {\n ok: true,\n config: templateResolved.config,\n resolution: templateResolved.resolution,\n };\n}\n", "export type InvoiceDefinition = {\n name: string;\n provider_key?: string;\n providerKey?: string;\n effect_kind?: string;\n effectKind?: string;\n execution_mode?: string;\n executionMode?: string;\n provider_scope?: string;\n providerScope?: string;\n provider_execution?: string;\n providerExecution?: string;\n failure_policy?: string;\n failurePolicy?: string;\n idempotency_scope?: string;\n idempotencyScope?: string;\n invoice_template_ref?: string;\n invoiceTemplateRef?: string;\n invoice?: Record<string, unknown>;\n template?: Record<string, unknown>;\n [key: string]: unknown;\n};\n\nexport type InvoiceRefResolutionSource = \"consumer_manifest\" | \"owner_manifest\";\nexport type InvoiceTemplateResolutionSource = InvoiceRefResolutionSource | \"owner_settings\";\n\nexport type InvoiceTemplate = {\n name: string;\n title?: string;\n text?: string;\n html?: string;\n [key: string]: unknown;\n};\n\nexport type InvoiceRefResolution = {\n invoice_ref: string;\n definition_name: string;\n source: InvoiceRefResolutionSource;\n invoice_template_ref?: string | null;\n template_name?: string | null;\n template_source?: InvoiceTemplateResolutionSource | null;\n};\n\nexport type ResolvedInvoiceConfigResult =\n | {\n ok: true;\n config: Record<string, unknown>;\n resolution: InvoiceRefResolution;\n }\n | {\n ok: false;\n reason: string;\n message: string;\n details: Record<string, unknown>;\n };\n\nexport function buildInvoiceDefinitionRegistry(\n definitions: unknown,\n): Map<string, InvoiceDefinition> {\n const registry = new Map<string, InvoiceDefinition>();\n if (!Array.isArray(definitions)) return registry;\n for (const def of definitions) {\n if (!def || typeof def !== \"object\") continue;\n const name = String((def as any).name ?? \"\").trim();\n if (!name) continue;\n registry.set(name, def as InvoiceDefinition);\n }\n return registry;\n}\n\nexport function buildInvoiceTemplateRegistry(templates: unknown): Map<string, InvoiceTemplate> {\n const registry = new Map<string, InvoiceTemplate>();\n if (!Array.isArray(templates)) return registry;\n for (const template of templates) {\n if (!template || typeof template !== \"object\") continue;\n const name = String((template as any).name ?? \"\").trim();\n if (!name) continue;\n registry.set(name, template as InvoiceTemplate);\n }\n return registry;\n}\n\nexport function readInvoiceRef(config: unknown): string {\n if (!config || typeof config !== \"object\" || Array.isArray(config)) return \"\";\n return String((config as any).invoice_ref ?? (config as any).invoiceRef ?? \"\").trim();\n}\n\nexport function readInvoiceTemplateRef(config: unknown): string {\n if (!config || typeof config !== \"object\" || Array.isArray(config)) return \"\";\n return String(\n (config as any).invoice_template_ref ?? (config as any).invoiceTemplateRef ?? \"\",\n ).trim();\n}\n\nfunction resolveInvoiceTemplateConfig(input: {\n config: Record<string, unknown>;\n templates: Map<string, InvoiceTemplate>;\n source: InvoiceRefResolutionSource;\n baseResolution: InvoiceRefResolution;\n}): ResolvedInvoiceConfigResult {\n const templateRef = readInvoiceTemplateRef(input.config);\n if (!templateRef) {\n return {\n ok: true,\n config: input.config,\n resolution: {\n ...input.baseResolution,\n invoice_template_ref: null,\n template_name: null,\n template_source: null,\n },\n };\n }\n\n const template = input.templates.get(templateRef);\n if (!template) {\n return {\n ok: false,\n reason: \"invoice_template_ref_unresolved\",\n message: `Invoice invoice_template_ref \"${templateRef}\" cannot be resolved`,\n details: {\n invoice_ref_resolution: input.baseResolution,\n invoice_template_ref: templateRef,\n template_source: input.source,\n },\n };\n }\n\n const merged: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(input.config)) {\n if (key === \"invoice_template_ref\" || key === \"invoiceTemplateRef\") continue;\n merged[key] = value;\n }\n\n const resolvedTemplate: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(template)) {\n if (key === \"name\" || value === undefined) continue;\n resolvedTemplate[key] = value;\n }\n\n const inlineTemplate =\n merged.template && typeof merged.template === \"object\" && !Array.isArray(merged.template)\n ? (merged.template as Record<string, unknown>)\n : {};\n merged.template = {\n ...resolvedTemplate,\n ...inlineTemplate,\n };\n\n return {\n ok: true,\n config: merged,\n resolution: {\n ...input.baseResolution,\n invoice_template_ref: templateRef,\n template_name: String(template.name || \"\").trim() || templateRef,\n template_source: input.source,\n },\n };\n}\n\nexport function resolveInvoiceConfig(\n guardConfig: Record<string, unknown>,\n definitions: Map<string, InvoiceDefinition>,\n templates?: Map<string, InvoiceTemplate>,\n options?: { applyTemplates?: boolean },\n): Record<string, unknown> {\n const applyTemplates = options?.applyTemplates ?? true;\n const ref = readInvoiceRef(guardConfig);\n if (!ref) {\n if (!applyTemplates) return guardConfig;\n const templateResolved = resolveInvoiceTemplateConfig({\n config: guardConfig,\n templates: templates ?? new Map(),\n source: \"consumer_manifest\",\n baseResolution: {\n invoice_ref: \"\",\n definition_name: \"\",\n source: \"consumer_manifest\",\n },\n });\n return templateResolved.ok ? templateResolved.config : guardConfig;\n }\n\n const definition = definitions.get(ref);\n if (!definition) {\n if (!applyTemplates) return guardConfig;\n const templateResolved = resolveInvoiceTemplateConfig({\n config: guardConfig,\n templates: templates ?? new Map(),\n source: \"consumer_manifest\",\n baseResolution: {\n invoice_ref: ref,\n definition_name: ref,\n source: \"consumer_manifest\",\n },\n });\n return templateResolved.ok ? templateResolved.config : guardConfig;\n }\n\n const merged: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(definition)) {\n if (key === \"name\") continue;\n merged[key] = value;\n }\n\n for (const [key, value] of Object.entries(guardConfig)) {\n if (key === \"invoice_ref\" || key === \"invoiceRef\") continue;\n if (value === undefined) continue;\n merged[key] = value;\n }\n\n if (!applyTemplates) return merged;\n const templateResolved = resolveInvoiceTemplateConfig({\n config: merged,\n templates: templates ?? new Map(),\n source: \"consumer_manifest\",\n baseResolution: {\n invoice_ref: ref,\n definition_name: String(definition.name || \"\").trim() || ref,\n source: \"consumer_manifest\",\n },\n });\n return templateResolved.ok ? templateResolved.config : merged;\n}\n\nexport function resolveInvoiceConfigWithGovernance(input: {\n guardConfig: Record<string, unknown>;\n definition: InvoiceDefinition;\n source: InvoiceRefResolutionSource;\n templates?: Map<string, InvoiceTemplate>;\n}): ResolvedInvoiceConfigResult {\n const ref = readInvoiceRef(input.guardConfig);\n const definitionName = String(input.definition.name || \"\").trim() || ref;\n const resolution: InvoiceRefResolution = {\n invoice_ref: ref,\n definition_name: definitionName,\n source: input.source,\n };\n\n if (input.source === \"owner_manifest\") {\n const disallowedOverridePaths = Object.keys(input.guardConfig).filter(\n (key) => key !== \"invoice_ref\" && key !== \"invoiceRef\",\n );\n if (disallowedOverridePaths.length > 0) {\n return {\n ok: false,\n reason: \"invoice_override_not_allowed\",\n message: `Invoice ref ${ref} does not allow guard-level overrides when resolved from owner manifest`,\n details: {\n invoice_ref_resolution: resolution,\n disallowed_override_paths: disallowedOverridePaths,\n },\n };\n }\n }\n\n const templateResolved = resolveInvoiceTemplateConfig({\n config: resolveInvoiceConfig(\n input.guardConfig,\n new Map([[definitionName, input.definition]]),\n input.templates,\n { applyTemplates: false },\n ),\n templates: input.templates ?? new Map(),\n source: input.source,\n baseResolution: resolution,\n });\n if (!templateResolved.ok) {\n return templateResolved;\n }\n\n return {\n ok: true,\n config: templateResolved.config,\n resolution: templateResolved.resolution,\n };\n}\n", "export type SubjectProfileGuardDefinition = {\n name: string;\n policy?: Record<string, unknown>;\n action?: Record<string, unknown>;\n tools?: string[];\n subject_profile_requirement?: Record<string, unknown>;\n subject_profile_remediation?: Record<string, unknown>;\n subject_profile_sources?: Record<string, unknown>;\n owner_override_allowlist?: string[];\n};\n\nexport type SubjectProfileGuardRefResolutionSource = \"consumer_manifest\" | \"owner_manifest\";\n\nexport type SubjectProfileGuardRefResolution = {\n subject_profile_guard_ref: string;\n definition_name: string;\n source: SubjectProfileGuardRefResolutionSource;\n};\n\nexport function buildSubjectProfileDefinitionRegistry(\n definitions: unknown,\n): Map<string, SubjectProfileGuardDefinition> {\n const registry = new Map<string, SubjectProfileGuardDefinition>();\n if (!Array.isArray(definitions)) return registry;\n for (const definition of definitions) {\n if (!definition || typeof definition !== \"object\") continue;\n const name = String((definition as any).name ?? \"\").trim();\n if (!name) continue;\n registry.set(name, definition as SubjectProfileGuardDefinition);\n }\n return registry;\n}\n\nexport function readSubjectProfileGuardRef(config: unknown): string {\n if (!config || typeof config !== \"object\" || Array.isArray(config)) return \"\";\n return String(\n (config as any).subject_profile_guard_ref ?? (config as any).subjectProfileGuardRef ?? \"\",\n ).trim();\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction mergeSubjectProfileGuardValue(\n baseValue: unknown,\n overrideValue: unknown,\n): Record<string, unknown> | unknown {\n if (!isPlainRecord(baseValue) || !isPlainRecord(overrideValue)) {\n return overrideValue;\n }\n const merged: Record<string, unknown> = { ...baseValue };\n for (const [key, value] of Object.entries(overrideValue)) {\n if (value === undefined) continue;\n merged[key] = mergeSubjectProfileGuardValue(merged[key], value);\n }\n return merged;\n}\n\nfunction resolveSubjectProfileGuardConfig(\n guardConfig: Record<string, unknown>,\n definitions: Map<string, SubjectProfileGuardDefinition>,\n): Record<string, unknown> {\n const ref = readSubjectProfileGuardRef(guardConfig);\n if (!ref) return guardConfig;\n const definition = definitions.get(ref);\n if (!definition) return guardConfig;\n const merged: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(definition)) {\n if (key === \"name\") continue;\n merged[key] = value;\n }\n for (const [key, value] of Object.entries(guardConfig)) {\n if (key === \"subject_profile_guard_ref\" || key === \"subjectProfileGuardRef\") continue;\n if (value === undefined) continue;\n merged[key] = mergeSubjectProfileGuardValue(merged[key], value);\n }\n return merged;\n}\n\nfunction collectOverridePaths(value: unknown, prefix = \"\", out = new Set<string>()): Set<string> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n if (prefix) out.add(prefix);\n return out;\n }\n const entries = Object.entries(value as Record<string, unknown>).filter(\n ([key, entry]) =>\n key !== \"subject_profile_guard_ref\" &&\n key !== \"subjectProfileGuardRef\" &&\n entry !== undefined,\n );\n if (!entries.length && prefix) out.add(prefix);\n for (const [key, entry] of entries) {\n const path = prefix ? `${prefix}.${key}` : key;\n if (entry && typeof entry === \"object\" && !Array.isArray(entry)) {\n collectOverridePaths(entry, path, out);\n } else {\n out.add(path);\n }\n }\n return out;\n}\n\nfunction isOverridePathAllowed(path: string, allowlist: string[]): boolean {\n return allowlist.some((entry) => {\n const normalized = String(entry || \"\").trim();\n if (!normalized) return false;\n if (normalized === path) return true;\n if (path.startsWith(`${normalized}.`)) return true;\n if (normalized.endsWith(\".*\")) {\n const prefix = normalized.slice(0, -2);\n return path === prefix || path.startsWith(`${prefix}.`);\n }\n return false;\n });\n}\n\nexport function resolveSubjectProfileGuardConfigWithGovernance(input: {\n guardConfig: Record<string, unknown>;\n definition: SubjectProfileGuardDefinition;\n source: SubjectProfileGuardRefResolutionSource;\n}):\n | {\n ok: true;\n config: Record<string, unknown>;\n resolution: SubjectProfileGuardRefResolution;\n }\n | {\n ok: false;\n reason: string;\n message: string;\n details: Record<string, unknown>;\n } {\n const ref = readSubjectProfileGuardRef(input.guardConfig);\n const definitionName = String(input.definition.name || \"\").trim() || ref;\n const resolution: SubjectProfileGuardRefResolution = {\n subject_profile_guard_ref: ref,\n definition_name: definitionName,\n source: input.source,\n };\n const baseDetails = {\n subject_profile_guard_ref_resolution: resolution,\n };\n\n if (input.source === \"owner_manifest\") {\n const allowlist = Array.isArray(input.definition.owner_override_allowlist)\n ? input.definition.owner_override_allowlist\n .map((value) => String(value || \"\").trim())\n .filter(Boolean)\n : [];\n if (allowlist.length > 0) {\n const overridePaths = Array.from(collectOverridePaths(input.guardConfig));\n const disallowed = overridePaths.filter((path) => !isOverridePathAllowed(path, allowlist));\n if (disallowed.length > 0) {\n return {\n ok: false,\n reason: \"subject_profile_guard_override_not_allowed\",\n message: `Guard override includes keys disallowed by owner policy: ${disallowed.join(\", \")}`,\n details: {\n ...baseDetails,\n disallowed_override_paths: disallowed,\n allowed_override_paths: allowlist,\n },\n };\n }\n }\n }\n\n return {\n ok: true,\n config: resolveSubjectProfileGuardConfig(\n input.guardConfig,\n new Map<string, SubjectProfileGuardDefinition>([[ref, input.definition]]),\n ),\n resolution,\n };\n}\n", "export type RequiredSubjectProfileFamily =\n | \"identity_basic\"\n | \"billing_individual\"\n | \"billing_business\";\n\nexport type SubjectProfileRequirement = {\n requiredProfileFamily: RequiredSubjectProfileFamily;\n requiredProfileFamilies: RequiredSubjectProfileFamily[];\n requiredProfileFields: string[];\n requiredProfileFieldsByFamily: Partial<Record<RequiredSubjectProfileFamily, string[]>>;\n};\n\nexport type SubjectProfileAllowedSource =\n | \"request_payload\"\n | \"tenant_subject_profile\"\n | \"publisher_subject_profile\"\n | \"subject_self_profile\";\n\nexport type SubjectProfileRemediationFlow =\n | \"internal_guard_ui\"\n | \"hosted_capture\"\n | \"external_endpoint\";\n\nexport type SubjectProfileCaptureMode = \"collect_only\" | \"collect_and_save\";\n\nexport type SubjectProfileSaveScope = \"none\" | \"subject_private\";\n\nexport type SubjectProfileShareTarget = \"tenant\" | \"publisher\" | \"app\";\n\nexport type SubjectProfileDirtyHandling = \"discard_incomplete\" | \"allow_incomplete_draft\";\n\nexport type SubjectProfileCapturePolicy = {\n captureMode: SubjectProfileCaptureMode;\n saveScope: SubjectProfileSaveScope;\n shareTargets: SubjectProfileShareTarget[];\n acceptanceRequiredFor: SubjectProfileShareTarget[];\n dirtyHandling: SubjectProfileDirtyHandling;\n};\n\nexport type SubjectProfileRemediationHandoff = {\n contractVersion: \"subject_profile_remediation_v1\";\n preferredFlow: SubjectProfileRemediationFlow;\n availableFlows: SubjectProfileRemediationFlow[];\n externalEndpointUrl: string | null;\n};\n\nexport type SubjectProfileRequirementResolution =\n | {\n ok: true;\n requirement: SubjectProfileRequirement | null;\n source: \"inline\" | \"nested\" | \"none\";\n }\n | {\n ok: false;\n reason: \"subject_profile_guard_misconfigured\";\n message: string;\n details: Record<string, unknown>;\n };\n\nfunction asObjectRecord(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : {};\n}\n\nfunction readStringArray(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.map((v) => String(v || \"\").trim()).filter(Boolean);\n}\n\nfunction dedupeStringArray(values: string[]): string[] {\n return Array.from(new Set(values.map((value) => String(value || \"\").trim()).filter(Boolean)));\n}\n\nfunction normalizeAllowedSource(value: unknown): SubjectProfileAllowedSource | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n if (\n [\"request_payload\", \"request-payload\", \"payload\", \"explicit_payload\", \"explicit\"].includes(\n normalized,\n )\n ) {\n return \"request_payload\";\n }\n if (\n [\"tenant_subject_profile\", \"tenant-subject-profile\", \"tenant_profile\", \"tenant\"].includes(\n normalized,\n )\n ) {\n return \"tenant_subject_profile\";\n }\n if (\n [\n \"publisher_subject_profile\",\n \"publisher-subject-profile\",\n \"publisher_profile\",\n \"publisher\",\n ].includes(normalized)\n ) {\n return \"publisher_subject_profile\";\n }\n if (\n [\"subject_self_profile\", \"subject-self-profile\", \"self_profile\", \"self\", \"subject\"].includes(\n normalized,\n )\n ) {\n return \"subject_self_profile\";\n }\n return null;\n}\n\nfunction isAllowedSource(value: unknown): value is SubjectProfileAllowedSource {\n return (\n value === \"request_payload\" ||\n value === \"tenant_subject_profile\" ||\n value === \"publisher_subject_profile\" ||\n value === \"subject_self_profile\"\n );\n}\n\nfunction normalizeRemediationFlow(value: unknown): SubjectProfileRemediationFlow | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n if (\n [\"internal_guard_ui\", \"internal-guard-ui\", \"internal\", \"guard_ui\", \"guard-ui\"].includes(\n normalized,\n )\n ) {\n return \"internal_guard_ui\";\n }\n if ([\"hosted_capture\", \"hosted-capture\", \"hosted\", \"capture\"].includes(normalized)) {\n return \"hosted_capture\";\n }\n if (\n [\n \"external_endpoint\",\n \"external-endpoint\",\n \"external\",\n \"endpoint\",\n \"third_party_endpoint\",\n ].includes(normalized)\n ) {\n return \"external_endpoint\";\n }\n return null;\n}\n\nfunction isRemediationFlow(value: unknown): value is SubjectProfileRemediationFlow {\n return (\n value === \"internal_guard_ui\" || value === \"hosted_capture\" || value === \"external_endpoint\"\n );\n}\n\nfunction normalizeCaptureMode(value: unknown): SubjectProfileCaptureMode | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n if ([\"collect_only\", \"collect-only\", \"collect\"].includes(normalized)) {\n return \"collect_only\";\n }\n if ([\"collect_and_save\", \"collect-and-save\", \"save\"].includes(normalized)) {\n return \"collect_and_save\";\n }\n return null;\n}\n\nfunction normalizeSaveScope(value: unknown): SubjectProfileSaveScope | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n if ([\"none\", \"no_save\", \"no-save\"].includes(normalized)) {\n return \"none\";\n }\n if (\n [\"subject_private\", \"subject-private\", \"subject\", \"subject_only\", \"subject-only\"].includes(\n normalized,\n )\n ) {\n return \"subject_private\";\n }\n return null;\n}\n\nfunction normalizeShareTarget(value: unknown): SubjectProfileShareTarget | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n if (normalized === \"tenant\") return \"tenant\";\n if (normalized === \"publisher\") return \"publisher\";\n if ([\"app\", \"xapp\"].includes(normalized)) return \"app\";\n return null;\n}\n\nfunction isShareTarget(value: unknown): value is SubjectProfileShareTarget {\n return value === \"tenant\" || value === \"publisher\" || value === \"app\";\n}\n\nfunction normalizeDirtyHandling(value: unknown): SubjectProfileDirtyHandling | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n if ([\"discard_incomplete\", \"discard-incomplete\", \"discard\"].includes(normalized)) {\n return \"discard_incomplete\";\n }\n if (\n [\"allow_incomplete_draft\", \"allow-incomplete-draft\", \"allow_draft\", \"draft\"].includes(\n normalized,\n )\n ) {\n return \"allow_incomplete_draft\";\n }\n return null;\n}\n\nfunction readString(value: unknown): string | null {\n const normalized = String(value ?? \"\").trim();\n return normalized || null;\n}\n\nexport function normalizeRequiredSubjectProfileFamily(\n value: unknown,\n): RequiredSubjectProfileFamily | null {\n const normalized = String(value ?? \"\")\n .trim()\n .toLowerCase();\n if ([\"identity_basic\", \"identity-basic\", \"identity\", \"basic_identity\"].includes(normalized)) {\n return \"identity_basic\";\n }\n if (\n [\"billing_individual\", \"billing-individual\", \"individual\", \"person\", \"natural_person\"].includes(\n normalized,\n )\n ) {\n return \"billing_individual\";\n }\n if (\n [\"billing_business\", \"billing-business\", \"business\", \"company\", \"organization\"].includes(\n normalized,\n )\n ) {\n return \"billing_business\";\n }\n return null;\n}\n\nexport function resolveSubjectProfileRequirement(\n config: Record<string, unknown>,\n): SubjectProfileRequirementResolution {\n const nested = asObjectRecord(\n config.subject_profile_requirement ??\n config.subjectProfileRequirement ??\n config.subject_profile ??\n config.subjectProfile,\n );\n const source =\n Object.keys(nested).length > 0 ? \"nested\" : Object.keys(config).length > 0 ? \"inline\" : \"none\";\n const base = Object.keys(nested).length > 0 ? nested : config;\n const rawRequiredProfileFamily =\n (base as any).required_profile_family ?? (base as any).requiredProfileFamily;\n const rawRequiredProfileFamilies =\n (base as any).required_profile_families ?? (base as any).requiredProfileFamilies;\n const rawRequiredProfileFields =\n (base as any).required_profile_fields ?? (base as any).requiredProfileFields;\n const rawRequiredProfileFieldsByFamily =\n (base as any).required_profile_fields_by_family ?? (base as any).requiredProfileFieldsByFamily;\n const normalizedFamily = normalizeRequiredSubjectProfileFamily(rawRequiredProfileFamily);\n const normalizedFamilies = Array.isArray(rawRequiredProfileFamilies)\n ? Array.from(\n new Set(\n rawRequiredProfileFamilies\n .map(normalizeRequiredSubjectProfileFamily)\n .filter((value): value is RequiredSubjectProfileFamily => Boolean(value)),\n ),\n )\n : [];\n const requiredProfileFamilies =\n normalizedFamilies.length > 0\n ? normalizedFamily && normalizedFamilies.includes(normalizedFamily)\n ? [normalizedFamily, ...normalizedFamilies.filter((family) => family !== normalizedFamily)]\n : normalizedFamilies\n : normalizedFamily\n ? [normalizedFamily]\n : [];\n const requiredProfileFields = dedupeStringArray(readStringArray(rawRequiredProfileFields));\n const fieldsByFamilyRecord =\n rawRequiredProfileFieldsByFamily &&\n typeof rawRequiredProfileFieldsByFamily === \"object\" &&\n !Array.isArray(rawRequiredProfileFieldsByFamily)\n ? (rawRequiredProfileFieldsByFamily as Record<string, unknown>)\n : {};\n const requiredProfileFieldsByFamily = Object.fromEntries(\n Object.entries(fieldsByFamilyRecord)\n .map(\n ([key, value]) =>\n [\n normalizeRequiredSubjectProfileFamily(key),\n dedupeStringArray(readStringArray(value)),\n ] as const,\n )\n .filter(\n (entry): entry is [RequiredSubjectProfileFamily, string[]] =>\n Boolean(entry[0]) && Array.isArray(entry[1]),\n ),\n ) as Partial<Record<RequiredSubjectProfileFamily, string[]>>;\n const hasRequirementKeys =\n rawRequiredProfileFamily !== undefined ||\n rawRequiredProfileFamilies !== undefined ||\n rawRequiredProfileFields !== undefined ||\n rawRequiredProfileFieldsByFamily !== undefined ||\n Object.keys(nested).length > 0;\n\n if (!hasRequirementKeys) {\n return { ok: true, requirement: null, source: \"none\" };\n }\n\n if (requiredProfileFamilies.length === 0) {\n return {\n ok: false,\n reason: \"subject_profile_guard_misconfigured\",\n message:\n \"subject-profile-check requires required_profile_family or required_profile_families\",\n details: {\n required_profile_family: rawRequiredProfileFamily ?? null,\n required_profile_families: Array.isArray(rawRequiredProfileFamilies)\n ? rawRequiredProfileFamilies\n : (rawRequiredProfileFamilies ?? null),\n },\n };\n }\n\n const preferredFamily = requiredProfileFamilies[0];\n\n return {\n ok: true,\n requirement: {\n requiredProfileFamily: preferredFamily,\n requiredProfileFamilies,\n requiredProfileFields,\n requiredProfileFieldsByFamily,\n },\n source,\n };\n}\n\nexport function resolveSubjectProfileAllowedSources(\n config: Record<string, unknown>,\n): SubjectProfileAllowedSource[] {\n const remediation = asObjectRecord(\n config.subject_profile_remediation ?? config.subjectProfileRemediation ?? config.remediation,\n );\n const raw =\n remediation.allowed_sources ??\n remediation.allowedSources ??\n config.allowed_sources ??\n config.allowedSources;\n const parsed = Array.isArray(raw) ? raw.map(normalizeAllowedSource).filter(isAllowedSource) : [];\n return parsed.length > 0\n ? Array.from(new Set(parsed))\n : [\n \"request_payload\",\n \"tenant_subject_profile\",\n \"publisher_subject_profile\",\n \"subject_self_profile\",\n ];\n}\n\nexport function resolveSubjectProfileCapturePolicy(\n config: Record<string, unknown>,\n): SubjectProfileCapturePolicy {\n const remediation = asObjectRecord(\n config.subject_profile_remediation ?? config.subjectProfileRemediation ?? config.remediation,\n );\n const captureMode =\n normalizeCaptureMode(remediation.capture_mode ?? remediation.captureMode) ?? \"collect_only\";\n const saveScope =\n normalizeSaveScope(remediation.save_scope ?? remediation.saveScope) ??\n (captureMode === \"collect_and_save\" ? \"subject_private\" : \"none\");\n const shareTargetsRaw = Array.isArray(remediation.share_targets ?? remediation.shareTargets)\n ? ((remediation.share_targets ?? remediation.shareTargets) as unknown[])\n : [];\n const shareTargets = Array.from(\n new Set(shareTargetsRaw.map(normalizeShareTarget).filter(isShareTarget)),\n );\n const acceptanceRequiredRaw = Array.isArray(\n remediation.acceptance_required_for ?? remediation.acceptanceRequiredFor,\n )\n ? ((remediation.acceptance_required_for ?? remediation.acceptanceRequiredFor) as unknown[])\n : shareTargetsRaw;\n const acceptanceRequiredFor = Array.from(\n new Set(acceptanceRequiredRaw.map(normalizeShareTarget).filter(isShareTarget)),\n );\n const dirtyHandling =\n normalizeDirtyHandling(\n remediation.dirty_profile_handling ?? remediation.dirtyProfileHandling,\n ) ?? (captureMode === \"collect_and_save\" ? \"allow_incomplete_draft\" : \"discard_incomplete\");\n\n return {\n captureMode,\n saveScope,\n shareTargets,\n acceptanceRequiredFor,\n dirtyHandling,\n };\n}\n\nexport function resolveSubjectProfileRemediationHandoff(\n config: Record<string, unknown>,\n): SubjectProfileRemediationHandoff {\n const remediation = asObjectRecord(\n config.subject_profile_remediation ?? config.subjectProfileRemediation ?? config.remediation,\n );\n const rawFlows = Array.isArray(remediation.available_flows ?? remediation.availableFlows)\n ? ((remediation.available_flows ?? remediation.availableFlows) as unknown[])\n : [];\n const availableFlows = Array.from(\n new Set(rawFlows.map(normalizeRemediationFlow).filter(isRemediationFlow)),\n );\n const preferredFlow =\n normalizeRemediationFlow(remediation.preferred_flow ?? remediation.preferredFlow) ??\n availableFlows[0] ??\n \"internal_guard_ui\";\n\n return {\n contractVersion: \"subject_profile_remediation_v1\",\n preferredFlow,\n availableFlows:\n availableFlows.length > 0\n ? availableFlows\n : preferredFlow === \"external_endpoint\"\n ? [\"external_endpoint\"]\n : [\"internal_guard_ui\", \"hosted_capture\"],\n externalEndpointUrl: readString(\n remediation.external_endpoint_url ?? remediation.externalEndpointUrl,\n ),\n };\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\n\ntype CliArgsLike = Record<string, string | boolean>;\ntype CliErrorFactory = (code: string, message: string, details?: Record<string, unknown>) => Error;\n\nexport type DevRefStatus = {\n key: string;\n path: string;\n exists: boolean;\n};\n\ntype DevStatusDeps = {\n argFlag: (args: CliArgsLike, key: string) => boolean;\n findRepoRoot: (startDir?: string) => string | null;\n makeCliError: CliErrorFactory;\n};\n\nexport function buildDevRefs(repoRoot: string): DevRefStatus[] {\n const refs = [\n [\"pm_readme\", \"dev/engineering/pm/README.md\"],\n [\"open_points\", \"dev/engineering/pm/OPEN_POINTS.md\"],\n [\"open_list\", \"dev/engineering/pm/OPEN_LIST.md\"],\n [\"open_list_v2\", \"dev/engineering/pm/OPEN_LIST_V2.md\"],\n [\"sprint_plan\", \"dev/engineering/pm/SPRINT_PLAN.md\"],\n [\"next_steps\", \"dev/engineering/pm/NEXT_STEPS.md\"],\n [\"done_points\", \"dev/engineering/pm/DONE_POINTS.md\"],\n [\"v1_review_audit\", \"dev/engineering/audits/V1_PRODUCTION_CODEBASE_REVIEW.md\"],\n [\"open067_phase1_plan\", \"dev/engineering/audits/OPEN_067_PHASE1_INTERNAL_REPO_PLAN.md\"],\n [\"sdk_cli_ai_checklist\", \"dev/engineering/checklists/SDK_CLI_AI_CHECKLIST.md\"],\n ] as const;\n return refs.map(([key, rel]) => ({\n key,\n path: rel,\n exists: fs.existsSync(path.join(repoRoot, rel)),\n }));\n}\n\nexport function runDevStatusRefsCommand(args: CliArgsLike, deps: DevStatusDeps) {\n const repoRoot = deps.findRepoRoot();\n if (!repoRoot) {\n throw deps.makeCliError(\n \"CLI_REPO_NOT_FOUND\",\n \"Could not locate repo root for xapps dev status refs\",\n );\n }\n const refs = buildDevRefs(repoRoot);\n const sampleXplace = {\n publisher: {\n server: \"apps/publishers/xplace/backend/server.js\",\n readme: \"apps/publishers/xplace/backend/README.md\",\n },\n xapp: {\n manifest: \"apps/publishers/xplace/xapps/xplace-certs/manifest.json\",\n ai_policy: \"apps/publishers/xplace/xapps/xplace-certs/ai/policy.readonly.internal-v1.json\",\n },\n };\n const sampleStatus = {\n xplace_certs: {\n publisher: Object.fromEntries(\n Object.entries(sampleXplace.publisher).map(([key, rel]) => [\n key,\n { path: rel, exists: fs.existsSync(path.join(repoRoot, rel)) },\n ]),\n ),\n xapp: Object.fromEntries(\n Object.entries(sampleXplace.xapp).map(([key, rel]) => [\n key,\n { path: rel, exists: fs.existsSync(path.join(repoRoot, rel)) },\n ]),\n ),\n defaults: {\n publisher_base_url: \"http://localhost:3012\",\n gateway_base_url: \"http://localhost:3000\",\n },\n },\n };\n const payload = {\n schema_version: \"xapps.dev.status.refs.v1\",\n ok: refs.every((ref) => ref.exists),\n repo_root: repoRoot,\n refs,\n samples: sampleStatus,\n };\n if (deps.argFlag(args, \"json\")) {\n console.log(JSON.stringify(payload, null, 2));\n return;\n }\n console.log(\n [\n `Repo root: ${repoRoot}`,\n ...refs.map((ref) => `${ref.exists ? \"OK\" : \"MISS\"} ${ref.key} -> ${ref.path}`),\n \"Sample refs:\",\n ...Object.entries(sampleStatus.xplace_certs.publisher).map(\n ([key, item]) =>\n `${(item as any).exists ? \"OK\" : \"MISS\"} xplace.publisher.${key} -> ${(item as any).path}`,\n ),\n ...Object.entries(sampleStatus.xplace_certs.xapp).map(\n ([key, item]) =>\n `${(item as any).exists ? \"OK\" : \"MISS\"} xplace.xapp.${key} -> ${(item as any).path}`,\n ),\n ].join(\"\\n\"),\n );\n}\n\nexport function runDevCheckV1Command(args: CliArgsLike, deps: DevStatusDeps) {\n const repoRoot = deps.findRepoRoot();\n if (!repoRoot) {\n throw deps.makeCliError(\n \"CLI_REPO_NOT_FOUND\",\n \"Could not locate repo root for xapps dev check v1\",\n );\n }\n const refs = buildDevRefs(repoRoot);\n const mustRead = (relPath: string) => fs.readFileSync(path.join(repoRoot, relPath), \"utf8\");\n const openList = mustRead(\"dev/engineering/pm/OPEN_LIST.md\");\n const sprintPlan = mustRead(\"dev/engineering/pm/SPRINT_PLAN.md\");\n const checks = [\n {\n key: \"refs_exist\",\n ok: refs.every((ref) => ref.exists),\n details: { missing: refs.filter((ref) => !ref.exists).map((ref) => ref.path) },\n },\n {\n key: \"v1_list_has_must_have_section\",\n ok: /Must Have for First Publisher \\/ xplace/i.test(openList),\n details: {},\n },\n {\n key: \"sprint_plan_has_scope_rules\",\n ok:\n /Scope Proposal Discipline Rule/i.test(sprintPlan) &&\n /Documentation Scope Rule/i.test(sprintPlan),\n details: {},\n },\n {\n key: \"pm_readme_exists\",\n ok: fs.existsSync(path.join(repoRoot, \"dev/engineering/pm/README.md\")),\n details: {},\n },\n ];\n const payload = {\n schema_version: \"xapps.dev.check.v1\",\n ok: checks.every((check) => check.ok),\n repo_root: repoRoot,\n checks,\n suggested_flows: [\"pay-per-request\", \"guard-orchestration\", \"xplace-certs\"],\n };\n if (deps.argFlag(args, \"json\")) {\n console.log(JSON.stringify(payload, null, 2));\n return;\n }\n console.log(\n [\n `V1 check: ${payload.ok ? \"PASS\" : \"FAIL\"}`,\n ...checks.map((check) => `${check.ok ? \"OK\" : \"FAIL\"} ${check.key}`),\n ].join(\"\\n\"),\n );\n if (!payload.ok) {\n throw deps.makeCliError(\"CLI_DEV_CHECK_FAILED\", \"xapps dev check v1 failed\", { checks });\n }\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { createHash } from \"node:crypto\";\nimport type { parseXappManifest } from \"../../../src/validation/xappManifest.js\";\nimport type { DevRefStatus } from \"./devStatus.js\";\n\ntype CliArgsLike = Record<string, string | boolean>;\ntype CliErrorFactory = (code: string, message: string, details?: Record<string, unknown>) => Error;\n\ntype ContextToolSummary = {\n tool_name: string;\n title: string;\n input_required: string[];\n output_properties: string[];\n};\n\ntype ContextWidgetSummary = {\n widget_name: string;\n type: string;\n renderer: string;\n bind_tool_name?: string;\n};\n\ntype ContextDeps = {\n argString: (args: CliArgsLike, ...keys: string[]) => string | undefined;\n findRepoRoot: (startDir?: string) => string | null;\n parseManifestFromFile: (from: string) => {\n manifest: ReturnType<typeof parseXappManifest>;\n filePath: string;\n };\n buildDevRefs: (repoRoot: string) => DevRefStatus[];\n canonicalizeJson: (value: unknown) => unknown;\n makeCliError: CliErrorFactory;\n};\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction collectContextTools(manifest: ReturnType<typeof parseXappManifest>): ContextToolSummary[] {\n return manifest.tools\n .map((tool) => {\n const inputSchema =\n tool.input_schema && typeof tool.input_schema === \"object\" ? tool.input_schema : {};\n const outputSchema =\n tool.output_schema && typeof tool.output_schema === \"object\" ? tool.output_schema : {};\n const requiredRaw = Array.isArray((inputSchema as any).required)\n ? ((inputSchema as any).required as unknown[])\n : [];\n const outputProps = isPlainObject((outputSchema as any).properties)\n ? Object.keys((outputSchema as any).properties)\n : [];\n return {\n tool_name: tool.tool_name,\n title: tool.title || \"\",\n input_required: requiredRaw\n .filter((item): item is string => typeof item === \"string\")\n .sort(),\n output_properties: outputProps.sort(),\n };\n })\n .sort((a, b) => a.tool_name.localeCompare(b.tool_name));\n}\n\nfunction collectContextWidgets(\n manifest: ReturnType<typeof parseXappManifest>,\n): ContextWidgetSummary[] {\n return manifest.widgets\n .map((widget) => ({\n widget_name: widget.widget_name,\n type: widget.type || \"\",\n renderer: widget.renderer || \"\",\n ...(widget.bind_tool_name ? { bind_tool_name: widget.bind_tool_name } : {}),\n }))\n .sort((a, b) => a.widget_name.localeCompare(b.widget_name));\n}\n\nexport function buildContextExportPayload(\n manifest: ReturnType<typeof parseXappManifest>,\n filePath: string,\n deps: Pick<ContextDeps, \"canonicalizeJson\">,\n): Record<string, unknown> {\n const manifestJson = JSON.stringify(manifest);\n const manifestSha256 = createHash(\"sha256\").update(manifestJson).digest(\"hex\");\n const tools = collectContextTools(manifest);\n const widgets = collectContextWidgets(manifest);\n return {\n schema_version: \"xapps.context.v1\",\n source: {\n manifest_path: filePath,\n manifest_sha256: manifestSha256,\n },\n summary: {\n name: manifest.name,\n slug: manifest.slug,\n version: manifest.version,\n tools: manifest.tools.length,\n widgets: manifest.widgets.length,\n },\n indexes: {\n tools,\n widgets,\n },\n manifest: deps.canonicalizeJson(manifest),\n };\n}\n\nexport function buildInternalV1ContextPreset(\n repoRoot: string,\n deps: Pick<ContextDeps, \"buildDevRefs\">,\n): Record<string, unknown> {\n return {\n name: \"internal-v1\",\n refs: deps.buildDevRefs(repoRoot),\n anchors: {\n specs: [\n \"docs/specifications/01-publisher-rendered-integration.md\",\n \"docs/specifications/02-platform-rendered-integration.md\",\n \"docs/specifications/04-guard-xapps.md\",\n \"docs/specifications/10-data-sharing-graph-policy-v2.md\",\n \"docs/specifications/13-ai-agent-xapp-authoring.md\",\n ],\n audits: [\n \"dev/engineering/audits/V1_PRODUCTION_CODEBASE_REVIEW.md\",\n \"dev/engineering/audits/OPEN_067_PHASE1_INTERNAL_REPO_PLAN.md\",\n ],\n tests: [\n \"src/__tests__/xappsCli.test.ts\",\n \"src/__tests__/guardBeforeToolRun.test.ts\",\n \"src/__tests__/openapiErrorContract.test.ts\",\n ],\n },\n };\n}\n\nexport function runContextExportCommand(args: CliArgsLike, deps: ContextDeps) {\n const from = deps.argString(args, \"from\");\n if (!from) {\n throw new Error(\"Missing required argument: --from <manifest.json>\");\n }\n const { manifest, filePath } = deps.parseManifestFromFile(from);\n const payload = buildContextExportPayload(manifest, filePath, deps) as Record<string, unknown>;\n const preset = deps.argString(args, \"preset\");\n if (preset) {\n const normalized = preset.trim().toLowerCase();\n if (normalized !== \"internal-v1\") {\n throw deps.makeCliError(\n \"CLI_INVALID_OPTION\",\n `Invalid --preset: ${preset} (expected internal-v1)`,\n {\n label: \"--preset\",\n value: preset,\n },\n );\n }\n const repoRoot = deps.findRepoRoot();\n if (!repoRoot) {\n throw deps.makeCliError(\n \"CLI_REPO_NOT_FOUND\",\n \"Could not locate repo root for xapps context export --preset internal-v1\",\n );\n }\n payload.preset = buildInternalV1ContextPreset(repoRoot, deps);\n }\n const outPath = deps.argString(args, \"out\");\n const rendered = `${JSON.stringify(payload, null, 2)}\\n`;\n if (outPath) {\n const target = path.resolve(process.cwd(), outPath);\n fs.mkdirSync(path.dirname(target), { recursive: true });\n fs.writeFileSync(target, rendered);\n console.log(`Context exported: ${target}`);\n return;\n }\n process.stdout.write(rendered);\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport {\n buildManifestFromOpenApiText,\n extractOpenApiInfoFromText,\n slugifyManifestName,\n} from \"../../../openapi-import/src/index.js\";\n\ntype CliArgValue = string | boolean | string[];\ntype CliArgs = Record<string, CliArgValue>;\n\ntype ParsedManifest = {\n slug: string;\n tools: Array<{\n tool_name: string;\n input_schema: unknown;\n output_schema: unknown;\n }>;\n widgets: Array<unknown>;\n};\n\ntype ManifestDeps = {\n argString: (args: CliArgs, ...keys: string[]) => string | undefined;\n argFlag: (args: CliArgs, key: string) => boolean;\n readInput: (from: string, fetchTimeoutMs: number) => Promise<string>;\n parsePositiveIntOrThrow: (value: string | undefined, fallback: number, label: string) => number;\n parseManifestFromFile: (from: string) => { manifest: ParsedManifest; filePath: string };\n readJsonFile: (file: string) => unknown;\n};\n\ntype ContractVector = {\n name?: string;\n tool_name?: string;\n input?: unknown;\n expected_output?: unknown;\n};\n\ntype ContractVectorSet = {\n vectors?: ContractVector[];\n};\n\nfunction buildInitManifestTemplate(input: {\n name: string;\n slug: string;\n version: string;\n}): Record<string, unknown> {\n return {\n name: input.name,\n slug: input.slug,\n version: input.version,\n target_client_id: \"REPLACE_CLIENT_ID\",\n description: \"Generated by xapps init\",\n tools: [\n {\n tool_name: \"example_tool\",\n title: \"Example Tool\",\n input_schema: {\n type: \"object\",\n properties: {\n message: { type: \"string\" },\n },\n required: [\"message\"],\n },\n output_schema: {\n type: \"object\",\n properties: {\n echoed: { type: \"string\" },\n },\n },\n },\n ],\n widgets: [\n {\n widget_name: \"example_widget\",\n type: \"write\",\n renderer: \"json-forms\",\n bind_tool_name: \"example_tool\",\n entry: {\n kind: \"platform_template\",\n template: \"write_form\",\n },\n },\n ],\n };\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction jsonTypeMatches(type: string, value: unknown): boolean {\n if (type === \"string\") return typeof value === \"string\";\n if (type === \"number\") return typeof value === \"number\";\n if (type === \"integer\") return typeof value === \"number\" && Number.isInteger(value);\n if (type === \"boolean\") return typeof value === \"boolean\";\n if (type === \"array\") return Array.isArray(value);\n if (type === \"object\") return isPlainObject(value);\n if (type === \"null\") return value === null;\n return true;\n}\n\nfunction validatePayloadAgainstSchema(schema: unknown, payload: unknown, label: string): string[] {\n if (!isPlainObject(schema)) return [];\n if (!isPlainObject(payload)) {\n return [`${label} must be a JSON object`];\n }\n\n const errors: string[] = [];\n const required = Array.isArray(schema.required) ? schema.required : [];\n for (const key of required) {\n if (typeof key === \"string\" && !(key in payload)) {\n errors.push(`${label} missing required field: ${key}`);\n }\n }\n\n const properties = isPlainObject(schema.properties) ? schema.properties : {};\n for (const [key, propSchema] of Object.entries(properties)) {\n if (!(key in payload)) continue;\n if (!isPlainObject(propSchema)) continue;\n const expectedType = typeof propSchema.type === \"string\" ? propSchema.type : \"\";\n if (expectedType && !jsonTypeMatches(expectedType, payload[key])) {\n errors.push(\n `${label}.${key} type mismatch (expected ${expectedType}, got ${Array.isArray(payload[key]) ? \"array\" : typeof payload[key]})`,\n );\n }\n }\n\n return errors;\n}\n\nexport async function runImportCommand(args: CliArgs, deps: ManifestDeps) {\n const from = deps.argString(args, \"from\");\n const out = deps.argString(args, \"out\");\n const fetchTimeoutMs = deps.parsePositiveIntOrThrow(\n deps.argString(args, \"fetch-timeout-ms\"),\n 10000,\n \"--fetch-timeout-ms\",\n );\n if (!from || !out) {\n throw new Error(\"Missing required arguments: --from and --out\");\n }\n\n const openApiText = await deps.readInput(from, fetchTimeoutMs);\n const fallbackInfo = extractOpenApiInfoFromText(openApiText);\n const name = deps.argString(args, \"name\") || fallbackInfo.title || \"OpenAPI Imported App\";\n const slug = deps.argString(args, \"slug\") || slugifyManifestName(name) || \"openapi-imported-app\";\n\n const manifest = buildManifestFromOpenApiText(openApiText, {\n name,\n slug,\n version: deps.argString(args, \"version\") || \"1.0.0\",\n description: deps.argString(args, \"description\") || fallbackInfo.description,\n endpointBaseUrl: deps.argString(args, \"endpoint\") || \"https://api.example.com\",\n endpointEnv: deps.argString(args, \"endpoint-env\") || \"prod\",\n });\n\n const outPath = path.resolve(process.cwd(), out);\n fs.mkdirSync(path.dirname(outPath), { recursive: true });\n fs.writeFileSync(outPath, JSON.stringify(manifest, null, 2));\n console.log(\n `Manifest generated: ${outPath}\\nTools: ${manifest.tools.length}\\nWidgets: ${manifest.widgets.length}`,\n );\n}\n\nexport function runValidateCommand(args: CliArgs, deps: ManifestDeps) {\n const from = deps.argString(args, \"from\");\n if (!from) {\n throw new Error(\"Missing required argument: --from <manifest.json>\");\n }\n\n const { manifest, filePath } = deps.parseManifestFromFile(from);\n console.log(\n `Manifest valid: ${filePath}\\nSlug: ${manifest.slug}\\nTools: ${manifest.tools.length}\\nWidgets: ${manifest.widgets.length}`,\n );\n}\n\nexport function runInitCommand(args: CliArgs, deps: ManifestDeps) {\n const out = deps.argString(args, \"out\");\n if (!out) {\n throw new Error(\"Missing required argument: --out <directory>\");\n }\n\n const outDir = path.resolve(process.cwd(), out);\n fs.mkdirSync(outDir, { recursive: true });\n\n const name = deps.argString(args, \"name\") || \"My Xapp\";\n const slug = deps.argString(args, \"slug\") || slugifyManifestName(name) || \"my-xapp\";\n const version = deps.argString(args, \"version\") || \"1.0.0\";\n const force = deps.argFlag(args, \"force\");\n\n const manifestPath = path.join(outDir, \"manifest.json\");\n const readmePath = path.join(outDir, \"README.md\");\n\n if (!force) {\n for (const filePath of [manifestPath, readmePath]) {\n if (fs.existsSync(filePath)) {\n throw new Error(`File already exists: ${filePath} (use --force to overwrite)`);\n }\n }\n }\n\n const manifest = buildInitManifestTemplate({ name, slug, version });\n fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));\n fs.writeFileSync(\n readmePath,\n `# ${name}\\n\\nGenerated by xapps init.\\n\\nNext steps:\\n\\n1. Edit manifest.json (set target_client_id to the tenant client ID)\\n2. Validate: xapps validate --from manifest.json\\n3. Import/OpenAPI: xapps import ...\\n`,\n );\n\n console.log(`Initialized xapp scaffold in: ${outDir}`);\n}\n\nexport function runTestCommand(args: CliArgs, deps: ManifestDeps) {\n const from = deps.argString(args, \"from\");\n const vectorsPath = deps.argString(args, \"vectors\");\n if (!from || !vectorsPath) {\n throw new Error(\n \"Missing required arguments: --from <manifest.json> and --vectors <vectors.json>\",\n );\n }\n\n const { manifest, filePath: manifestPath } = deps.parseManifestFromFile(from);\n const vectorsRaw = deps.readJsonFile(vectorsPath);\n if (!isPlainObject(vectorsRaw)) {\n throw new Error(\"Vector file must be a JSON object with a vectors[] field\");\n }\n const vectorsContainer = vectorsRaw as ContractVectorSet;\n if (!Array.isArray(vectorsContainer.vectors)) {\n throw new Error(\"Vector file must contain vectors[]\");\n }\n\n const failures: string[] = [];\n for (let index = 0; index < vectorsContainer.vectors.length; index += 1) {\n const vector = vectorsContainer.vectors[index];\n const name = typeof vector?.name === \"string\" ? vector.name : `vector_${index + 1}`;\n const toolName = typeof vector?.tool_name === \"string\" ? vector.tool_name : \"\";\n if (!toolName) {\n failures.push(`${name}: missing tool_name`);\n continue;\n }\n const tool = manifest.tools.find((item) => item.tool_name === toolName);\n if (!tool) {\n failures.push(`${name}: unknown tool_name '${toolName}'`);\n continue;\n }\n\n const inputErrors = validatePayloadAgainstSchema(\n tool.input_schema,\n vector.input || {},\n \"input\",\n );\n const outputErrors = validatePayloadAgainstSchema(\n tool.output_schema,\n vector.expected_output || {},\n \"expected_output\",\n );\n for (const error of [...inputErrors, ...outputErrors]) {\n failures.push(`${name}: ${error}`);\n }\n }\n\n if (failures.length) {\n throw new Error(\n `Contract test failed (${failures.length} issues)\\n${failures.map((f) => `- ${f}`).join(\"\\n\")}`,\n );\n }\n\n console.log(\n `Contract test passed: ${vectorsContainer.vectors.length} vector(s)\\nManifest: ${manifestPath}\\nVectors: ${path.resolve(process.cwd(), vectorsPath)}`,\n );\n}\n", "\n/*! js-yaml 4.1.1 https://github.com/nodeca/js-yaml @license MIT */\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nvar isNothing_1 = isNothing;\nvar isObject_1 = isObject;\nvar toArray_1 = toArray;\nvar repeat_1 = repeat;\nvar isNegativeZero_1 = isNegativeZero;\nvar extend_1 = extend;\n\nvar common = {\n\tisNothing: isNothing_1,\n\tisObject: isObject_1,\n\ttoArray: toArray_1,\n\trepeat: repeat_1,\n\tisNegativeZero: isNegativeZero_1,\n\textend: extend_1\n};\n\n// YAML error class. http://stackoverflow.com/questions/8458984\n\n\nfunction formatError(exception, compact) {\n var where = '', message = exception.reason || '(unknown reason)';\n\n if (!exception.mark) return message;\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" ';\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet;\n }\n\n return message + ' ' + where;\n}\n\n\nfunction YAMLException$1(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException$1.prototype = Object.create(Error.prototype);\nYAMLException$1.prototype.constructor = YAMLException$1;\n\n\nYAMLException$1.prototype.toString = function toString(compact) {\n return this.name + ': ' + formatError(this, compact);\n};\n\n\nvar exception = YAMLException$1;\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = '';\n var tail = '';\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... ';\n lineStart = position - maxHalfLength + head.length;\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...';\n lineEnd = position + maxHalfLength - tail.length;\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '\u2192') + tail,\n pos: position - lineStart + head.length // relative position\n };\n}\n\n\nfunction padStart(string, max) {\n return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n\n if (!mark.buffer) return null;\n\n if (!options.maxLength) options.maxLength = 79;\n if (typeof options.indent !== 'number') options.indent = 1;\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2;\n\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [ 0 ];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n var result = '', i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result;\n }\n\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n }\n\n return result.replace(/\\n$/, '');\n}\n\n\nvar snippet = makeSnippet;\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type$1(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new exception('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.options = options; // keep original options in case user wants to extend this type later\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.representName = options['representName'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.multi = options['multi'] || false;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new exception('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nvar type = Type$1;\n\n/*eslint-disable max-len*/\n\n\n\n\n\nfunction compileList(schema, name) {\n var result = [];\n\n schema[name].forEach(function (currentType) {\n var newIndex = result.length;\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n\n newIndex = previousIndex;\n }\n });\n\n result[newIndex] = currentType;\n });\n\n return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n\n function collectType(type) {\n if (type.multi) {\n result.multi[type.kind].push(type);\n result.multi['fallback'].push(type);\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema$1(definition) {\n return this.extend(definition);\n}\n\n\nSchema$1.prototype.extend = function extend(definition) {\n var implicit = [];\n var explicit = [];\n\n if (definition instanceof type) {\n // Schema.extend(type)\n explicit.push(definition);\n\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition);\n\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit);\n if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n } else {\n throw new exception('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })');\n }\n\n implicit.forEach(function (type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n if (type$1.loadKind && type$1.loadKind !== 'scalar') {\n throw new exception('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n\n if (type$1.multi) {\n throw new exception('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n }\n });\n\n explicit.forEach(function (type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n });\n\n var result = Object.create(Schema$1.prototype);\n\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n\n result.compiledImplicit = compileList(result, 'implicit');\n result.compiledExplicit = compileList(result, 'explicit');\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n return result;\n};\n\n\nvar schema = Schema$1;\n\nvar str = new type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n\nvar seq = new type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n\nvar map = new type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n\nvar failsafe = new schema({\n explicit: [\n str,\n seq,\n map\n ]\n});\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nvar _null = new type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; },\n empty: function () { return ''; }\n },\n defaultStyle: 'lowercase'\n});\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nvar bool = new type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'o') {\n // base 8\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n }\n\n // base 10 (except 0)\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n return true;\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nvar int = new type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nvar float = new type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n\nvar json = failsafe.extend({\n implicit: [\n _null,\n bool,\n int,\n float\n ]\n});\n\nvar core = json;\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nvar timestamp = new type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nvar merge = new type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n\n/*eslint-disable no-bitwise*/\n\n\n\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]';\n}\n\nvar binary = new type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n\nvar _hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nvar _toString$2 = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString$2.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty$3.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nvar omap = new type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n\nvar _toString$1 = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString$1.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nvar pairs = new type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n\nvar _hasOwnProperty$2 = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty$2.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nvar set = new type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n\nvar _default = core.extend({\n implicit: [\n timestamp,\n merge\n ],\n explicit: [\n binary,\n omap,\n pairs,\n set\n ]\n});\n\n/*eslint-disable max-len,no-use-before-define*/\n\n\n\n\n\n\n\nvar _hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\n// set a property of a literal object, while protecting against prototype pollution,\n// see https://github.com/nodeca/js-yaml/issues/164 for more details\nfunction setProperty(object, key, value) {\n // used for this specific key only because Object.defineProperty is slow\n if (key === '__proto__') {\n Object.defineProperty(object, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: value\n });\n } else {\n object[key] = value;\n }\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State$1(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || _default;\n this.onWarning = options['onWarning'] || null;\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false;\n\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n var mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n };\n\n mark.snippet = snippet(mark);\n\n return new exception(message, mark);\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty$1.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix);\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty$1.call(destination, key)) {\n setProperty(destination, key, source[key]);\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty$1.call(overridableKeys, keyNode) &&\n _hasOwnProperty$1.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.lineStart = startLineStart || state.lineStart;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n\n setProperty(_result, keyNode, valueNode);\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _lineStart,\n _pos,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = Object.create(null),\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\");\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line; // Save the current line.\n _lineStart = state.lineStart;\n _pos = state.position;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _keyLine,\n _keyLineStart,\n _keyPos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = Object.create(null),\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break;\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty$1.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty$1.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n typeList,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"!<?> [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty$1.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n } else {\n // looking for multi type\n type = null;\n typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex];\n break;\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result, state.tag);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = Object.create(null);\n state.anchorMap = Object.create(null);\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State$1(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll$1(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load$1(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new exception('expected a single document in the stream, but found more');\n}\n\n\nvar loadAll_1 = loadAll$1;\nvar load_1 = load$1;\n\nvar loader = {\n\tloadAll: loadAll_1,\n\tload: load_1\n};\n\n/*eslint-disable no-use-before-define*/\n\n\n\n\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM = 0xFEFF;\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new exception('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n this.schema = options['schema'] || _default;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n this.forceQuotes = options['forceQuotes'] || false;\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn\u2019t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n return isPrintable(c)\n && c !== CHAR_BOM\n // - b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out \u21D2 ns-plain-safe-out\n// c = flow-in \u21D2 ns-plain-safe-in\n// c = block-key \u21D2 ns-plain-safe-out\n// c = flow-key \u21D2 ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - \u201C:\u201D - \u201C#\u201D )\n// | ( /* An ns-char preceding */ \u201C#\u201D )\n// | ( \u201C:\u201D /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n return (\n // ns-plain-safe\n inblock ? // c = flow-in\n cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n )\n // ns-plain-char\n && c !== CHAR_SHARP // false on '#'\n && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( \u201C?\u201D | \u201C:\u201D | \u201C-\u201D ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) && c !== CHAR_BOM\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // \u201C-\u201D | \u201C?\u201D | \u201C:\u201D | \u201C,\u201D | \u201C[\u201D | \u201C]\u201D | \u201C{\u201D | \u201C}\u201D\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | \u201C#\u201D | \u201C&\u201D | \u201C*\u201D | \u201C!\u201D | \u201C|\u201D | \u201C=\u201D | \u201C>\u201D | \u201C'\u201D | \u201C\"\u201D\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | \u201C%\u201D | \u201C@\u201D | \u201C`\u201D)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n var first = string.charCodeAt(pos), second;\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n var i;\n var char = 0;\n var prevChar = null;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(codePointAt(string, 0))\n && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// \u2022 No ending newline => unaffected; already using strip \"-\" chomping.\n// \u2022 Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n }\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth \u2264 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string) + '\"';\n default:\n throw new exception('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines\u2014\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char = 0;\n var escapeSeq;\n\n for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i];\n if (char >= 0x10000) result += string[i + 1];\n } else {\n result += escapeSeq || encodeHex(char);\n }\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (_result !== '') pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new exception('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object);\n } else {\n state.tag = type.tag;\n }\n } else {\n state.tag = '?';\n }\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new exception('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n var inblock = block;\n var tagStr;\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact);\n } else {\n writeBlockSequence(state, level, state.dump, compact);\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock);\n }\n } else if (type === '[object Undefined]') {\n return false;\n } else {\n if (state.skipInvalid) return false;\n throw new exception('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | \u201C-\u201D\n // [39] ns-uri-char ::= \u201C%\u201D ns-hex-digit ns-hex-digit | ns-word-char | \u201C#\u201D\n // | \u201C;\u201D | \u201C/\u201D | \u201C?\u201D | \u201C:\u201D | \u201C@\u201D | \u201C&\u201D | \u201C=\u201D | \u201C+\u201D | \u201C$\u201D | \u201C,\u201D\n // | \u201C_\u201D | \u201C.\u201D | \u201C!\u201D | \u201C~\u201D | \u201C*\u201D | \u201C'\u201D | \u201C(\u201D | \u201C)\u201D | \u201C[\u201D | \u201C]\u201D\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21');\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr;\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18);\n } else {\n tagStr = '!<' + tagStr + '>';\n }\n\n state.dump = tagStr + ' ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump$1(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n var value = input;\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value);\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nvar dump_1 = dump$1;\n\nvar dumper = {\n\tdump: dump_1\n};\n\nfunction renamed(from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.');\n };\n}\n\n\nvar Type = type;\nvar Schema = schema;\nvar FAILSAFE_SCHEMA = failsafe;\nvar JSON_SCHEMA = json;\nvar CORE_SCHEMA = core;\nvar DEFAULT_SCHEMA = _default;\nvar load = loader.load;\nvar loadAll = loader.loadAll;\nvar dump = dumper.dump;\nvar YAMLException = exception;\n\n// Re-export all types in case user wants to create custom schema\nvar types = {\n binary: binary,\n float: float,\n map: map,\n null: _null,\n pairs: pairs,\n set: set,\n timestamp: timestamp,\n bool: bool,\n int: int,\n merge: merge,\n omap: omap,\n seq: seq,\n str: str\n};\n\n// Removed functions from JS-YAML 3.0.x\nvar safeLoad = renamed('safeLoad', 'load');\nvar safeLoadAll = renamed('safeLoadAll', 'loadAll');\nvar safeDump = renamed('safeDump', 'dump');\n\nvar jsYaml = {\n\tType: Type,\n\tSchema: Schema,\n\tFAILSAFE_SCHEMA: FAILSAFE_SCHEMA,\n\tJSON_SCHEMA: JSON_SCHEMA,\n\tCORE_SCHEMA: CORE_SCHEMA,\n\tDEFAULT_SCHEMA: DEFAULT_SCHEMA,\n\tload: load,\n\tloadAll: loadAll,\n\tdump: dump,\n\tYAMLException: YAMLException,\n\ttypes: types,\n\tsafeLoad: safeLoad,\n\tsafeLoadAll: safeLoadAll,\n\tsafeDump: safeDump\n};\n\nexport { CORE_SCHEMA, DEFAULT_SCHEMA, FAILSAFE_SCHEMA, JSON_SCHEMA, Schema, Type, YAMLException, jsYaml as default, dump, load, loadAll, safeDump, safeLoad, safeLoadAll, types };\n", "import yaml from \"js-yaml\";\n\ntype AnyRecord = Record<string, any>;\n\nexport type OpenApiDocumentInfo = {\n title?: string;\n description?: string;\n version?: string;\n};\n\nexport type OpenApiImportOptions = {\n name: string;\n slug: string;\n version?: string;\n description?: string;\n endpointBaseUrl: string;\n endpointEnv?: string;\n};\n\nconst HTTP_METHODS = [\"get\", \"post\", \"put\", \"patch\", \"delete\"] as const;\n\nfunction isRecord(value: unknown): value is AnyRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function slugifyManifestName(value: string): string {\n return String(value || \"\")\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 100);\n}\n\nfunction toSlug(value: string): string {\n return String(value || \"\")\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"_\")\n .replace(/^_+|_+$/g, \"\")\n .slice(0, 100);\n}\n\nfunction parseInputDocument(raw: string): AnyRecord {\n const trimmed = String(raw || \"\").trim();\n if (!trimmed) {\n throw new Error(\"OpenAPI input is empty\");\n }\n try {\n const parsedJson = JSON.parse(trimmed);\n if (!isRecord(parsedJson)) throw new Error(\"OpenAPI JSON must be an object\");\n return parsedJson;\n } catch {\n const parsedYaml = yaml.load(trimmed);\n if (!isRecord(parsedYaml)) throw new Error(\"OpenAPI YAML must be an object\");\n return parsedYaml;\n }\n}\n\nexport function extractOpenApiInfoFromText(raw: string): OpenApiDocumentInfo {\n const doc = parseInputDocument(raw);\n const info = isRecord(doc.info) ? doc.info : {};\n return {\n title: typeof info.title === \"string\" ? info.title : undefined,\n description: typeof info.description === \"string\" ? info.description : undefined,\n version: typeof info.version === \"string\" ? info.version : undefined,\n };\n}\n\nfunction resolveJsonPointer(root: AnyRecord, ref: string): unknown {\n if (!ref.startsWith(\"#/\")) {\n throw new Error(`Only local $ref values are supported. Received: ${ref}`);\n }\n const segments = ref\n .slice(2)\n .split(\"/\")\n .map((s) => s.replace(/~1/g, \"/\").replace(/~0/g, \"~\"));\n\n let cursor: unknown = root;\n for (const segment of segments) {\n if (!isRecord(cursor) && !Array.isArray(cursor)) return undefined;\n cursor = (cursor as any)[segment];\n }\n return cursor;\n}\n\nfunction resolveSchema(root: AnyRecord, schema: unknown, seen: Set<string> = new Set()): AnyRecord {\n if (!isRecord(schema)) {\n return { type: \"object\", additionalProperties: true };\n }\n\n if (typeof schema.$ref === \"string\" && schema.$ref.trim()) {\n const ref = schema.$ref.trim();\n if (seen.has(ref)) {\n throw new Error(`Circular $ref detected: ${ref}`);\n }\n const target = resolveJsonPointer(root, ref);\n if (!target) {\n throw new Error(`$ref not found: ${ref}`);\n }\n const nextSeen = new Set(seen);\n nextSeen.add(ref);\n return resolveSchema(root, target, nextSeen);\n }\n\n const resolved: AnyRecord = { ...schema };\n\n if (Array.isArray(schema.allOf) && schema.allOf.length > 0) {\n const merged: AnyRecord = { type: \"object\", properties: {}, required: [] as string[] };\n for (const part of schema.allOf) {\n const resolvedPart = resolveSchema(root, part, seen);\n if (isRecord(resolvedPart.properties)) {\n merged.properties = { ...(merged.properties || {}), ...resolvedPart.properties };\n }\n if (Array.isArray(resolvedPart.required)) {\n merged.required = Array.from(\n new Set([...(merged.required || []), ...resolvedPart.required]),\n );\n }\n if (resolvedPart.type && merged.type !== resolvedPart.type) {\n merged.type = resolvedPart.type;\n }\n }\n return merged;\n }\n\n if (isRecord(schema.properties)) {\n resolved.properties = {};\n for (const [key, prop] of Object.entries(schema.properties)) {\n resolved.properties[key] = resolveSchema(root, prop, seen);\n }\n }\n\n if (isRecord(schema.items)) {\n resolved.items = resolveSchema(root, schema.items, seen);\n }\n\n return resolved;\n}\n\nfunction pickRequestBodySchema(root: AnyRecord, operation: AnyRecord): AnyRecord | null {\n const requestBodyRaw = operation.requestBody;\n if (!requestBodyRaw) return null;\n const requestBody = resolveSchema(root, requestBodyRaw);\n const content = isRecord(requestBody.content) ? requestBody.content : {};\n const jsonLike =\n (content[\"application/json\"] as AnyRecord) ||\n (content[\"application/*+json\"] as AnyRecord) ||\n (content[\"*/*\"] as AnyRecord);\n if (!isRecord(jsonLike) || !jsonLike.schema) return null;\n return resolveSchema(root, jsonLike.schema);\n}\n\nfunction pickResponseSchema(root: AnyRecord, operation: AnyRecord): AnyRecord {\n const responses = isRecord(operation.responses) ? operation.responses : {};\n const candidates = [\"200\", \"201\", \"202\", \"default\"];\n for (const status of candidates) {\n const response = responses[status];\n if (!response) continue;\n const resolvedResponse = resolveSchema(root, response);\n const content = isRecord(resolvedResponse.content) ? resolvedResponse.content : {};\n const jsonLike =\n (content[\"application/json\"] as AnyRecord) ||\n (content[\"application/*+json\"] as AnyRecord) ||\n (content[\"*/*\"] as AnyRecord);\n if (isRecord(jsonLike) && jsonLike.schema) {\n return resolveSchema(root, jsonLike.schema);\n }\n }\n return { type: \"object\", additionalProperties: true };\n}\n\nfunction collectParameters(\n root: AnyRecord,\n pathItem: AnyRecord,\n operation: AnyRecord,\n): AnyRecord[] {\n const out: AnyRecord[] = [];\n const raw = [\n ...(Array.isArray(pathItem.parameters) ? pathItem.parameters : []),\n ...(Array.isArray(operation.parameters) ? operation.parameters : []),\n ];\n for (const param of raw) {\n const resolved = resolveSchema(root, param);\n if (!isRecord(resolved)) continue;\n if (!resolved.name || typeof resolved.name !== \"string\") continue;\n out.push(resolved);\n }\n return out;\n}\n\nfunction interpolatePath(pathTemplate: string): string {\n return String(pathTemplate || \"\").replace(\n /\\{([^}]+)\\}/g,\n (_m, name: string) => `{{ payload.${name} }}`,\n );\n}\n\nfunction buildResponseMapping(outputSchema: AnyRecord): AnyRecord | undefined {\n if (!isRecord(outputSchema) || String(outputSchema.type || \"\") !== \"object\") return undefined;\n if (!isRecord(outputSchema.properties)) return undefined;\n const mapping: AnyRecord = {};\n for (const key of Object.keys(outputSchema.properties)) {\n mapping[key] = `{{ response.${key} }}`;\n }\n return Object.keys(mapping).length ? mapping : undefined;\n}\n\nexport function buildManifestFromOpenApiDocument(\n openApiDocument: AnyRecord,\n options: OpenApiImportOptions,\n): AnyRecord {\n if (!isRecord(openApiDocument.openapi) && typeof openApiDocument.openapi !== \"string\") {\n // fall through; some specs provide swagger key only, but we still support path parsing.\n }\n const paths = isRecord(openApiDocument.paths) ? openApiDocument.paths : {};\n const tools: AnyRecord[] = [];\n\n for (const [pathName, pathItemRaw] of Object.entries(paths)) {\n if (!isRecord(pathItemRaw)) continue;\n const pathItem = pathItemRaw as AnyRecord;\n for (const method of HTTP_METHODS) {\n const operation = pathItem[method];\n if (!isRecord(operation)) continue;\n\n const fallbackToolName =\n toSlug(`${method}_${pathName.replace(/[{}]/g, \"\")}`) || `tool_${tools.length + 1}`;\n const operationId =\n typeof operation.operationId === \"string\" ? operation.operationId : fallbackToolName;\n const toolName = toSlug(operationId) || fallbackToolName;\n const title =\n (typeof operation.summary === \"string\" && operation.summary.trim()) ||\n (typeof operation.operationId === \"string\" && operation.operationId.trim()) ||\n `${method.toUpperCase()} ${pathName}`;\n\n const description =\n (typeof operation.description === \"string\" && operation.description.trim()) || undefined;\n\n const parameters = collectParameters(openApiDocument, pathItem, operation);\n const requestBodySchema = pickRequestBodySchema(openApiDocument, operation);\n\n const inputSchema: AnyRecord = { type: \"object\", properties: {}, required: [] as string[] };\n for (const param of parameters) {\n const paramName = String(param.name || \"\").trim();\n if (!paramName) continue;\n inputSchema.properties[paramName] = param.schema\n ? resolveSchema(openApiDocument, param.schema)\n : { type: \"string\" };\n if (param.required === true) {\n inputSchema.required.push(paramName);\n }\n }\n\n if (requestBodySchema) {\n if (\n String(requestBodySchema.type || \"\") === \"object\" &&\n isRecord(requestBodySchema.properties)\n ) {\n inputSchema.properties = {\n ...(inputSchema.properties || {}),\n ...requestBodySchema.properties,\n };\n if (Array.isArray(requestBodySchema.required)) {\n inputSchema.required = Array.from(\n new Set([...(inputSchema.required || []), ...requestBodySchema.required.map(String)]),\n );\n }\n } else {\n inputSchema.properties.body = requestBodySchema;\n }\n }\n if (!Object.keys(inputSchema.properties || {}).length) {\n inputSchema.additionalProperties = true;\n }\n if (!(inputSchema.required || []).length) {\n delete inputSchema.required;\n }\n\n const outputSchema = pickResponseSchema(openApiDocument, operation);\n\n const query: AnyRecord = {};\n const headers: AnyRecord = {};\n for (const param of parameters) {\n const paramName = String(param.name || \"\").trim();\n if (!paramName) continue;\n const where = String(param.in || \"\").trim();\n if (where === \"query\") query[paramName] = `{{ payload.${paramName} }}`;\n if (where === \"header\") headers[paramName] = `{{ payload.${paramName} }}`;\n }\n\n const adapter: AnyRecord = {\n method: method.toUpperCase(),\n path: interpolatePath(pathName),\n };\n if (Object.keys(query).length) adapter.query = query;\n if (Object.keys(headers).length) adapter.headers = headers;\n if (requestBodySchema && [\"post\", \"put\", \"patch\", \"delete\"].includes(method)) {\n adapter.body = \"{{ payload }}\";\n }\n const responseMapping = buildResponseMapping(outputSchema);\n if (responseMapping) adapter.response_mapping = responseMapping;\n\n tools.push({\n tool_name: toolName,\n title,\n ...(description ? { description } : {}),\n input_schema: inputSchema,\n output_schema: outputSchema,\n adapter,\n });\n }\n }\n\n if (!tools.length) {\n throw new Error(\"No OpenAPI operations found in paths.*\");\n }\n\n const widgets = tools.map((tool) => ({\n widget_name: `${tool.tool_name}_widget`.slice(0, 100),\n title: tool.title,\n type: \"write\",\n renderer: \"json-forms\",\n bind_tool_name: tool.tool_name,\n entry: { kind: \"platform_template\", template: \"write_form\" },\n }));\n\n const endpointEnv = String(options.endpointEnv || \"prod\").trim() || \"prod\";\n const manifest: AnyRecord = {\n name: options.name,\n slug: options.slug,\n version: options.version || \"1.0.0\",\n ...(options.description ? { description: options.description } : {}),\n tools,\n widgets,\n endpoints: {\n [endpointEnv]: {\n base_url: options.endpointBaseUrl,\n timeout_ms: 15000,\n retry_policy: { max_retries: 1, backoff: \"exponential\" },\n region: \"global\",\n labels: { profile: \"openapi-import\", env: endpointEnv },\n },\n },\n connectivity: {\n executor_mode: \"PUBLIC_EXECUTOR\",\n auth_mode: \"PUBLISHER_APP\",\n signing_policy: \"none\",\n proxy_policy: { egress_enabled: false },\n },\n };\n\n return manifest;\n}\n\nexport function buildManifestFromOpenApiText(\n rawText: string,\n options: OpenApiImportOptions,\n): AnyRecord {\n const document = parseInputDocument(rawText);\n return buildManifestFromOpenApiDocument(document, options);\n}\n", "import fs from \"node:fs\";\nimport http, { type IncomingMessage } from \"node:http\";\nimport path from \"node:path\";\nimport {\n buildDevFlowInitTemplate as buildDevFlowInitTemplateBase,\n lintDevFlowDefinition,\n parseDevFlowObject,\n} from \"../devFlow.js\";\nimport { buildBuiltInDevCheckFlows, executeDevCheckFlowCommands } from \"../devCheckFlow.js\";\nimport { runAiCheckCommand, runAiPlanCommand } from \"../aiCommands.js\";\nimport { runDevCheckV1Command, runDevStatusRefsCommand } from \"../devStatus.js\";\nimport { buildContextExportPayload, buildInternalV1ContextPreset } from \"../contextCommands.js\";\nimport {\n runPublisherEndpointCredentialEnsureCommand,\n runPublisherEndpointCredentialSetCommand,\n} from \"../publisherCommands.js\";\n\ntype CliArgValue = string | boolean | string[];\ntype CliArgs = Record<string, CliArgValue>;\n\ntype ParsedManifest = {\n slug: string;\n tools: Array<unknown>;\n widgets: Array<unknown>;\n};\n\ntype DevCommandDeps = {\n argString: (args: CliArgs, ...keys: string[]) => string | undefined;\n argFlag: (args: CliArgs, key: string) => boolean;\n shellEscapeArg: (value: string) => string;\n applyFlowCommandTemplates: (command: string, params: { artifactsDir: string }) => string;\n findRepoRoot: (startDir?: string) => string | null;\n readJsonFile: (file: string) => unknown;\n parseManifestFromFile: (from: string) => { manifest: ParsedManifest; filePath: string };\n runDryRun: (args: CliArgs, manifest: ParsedManifest) => void;\n buildDevRefs: (input: { repoRoot: string; manifestPath?: string | null }) => string[];\n canonicalizeJson: (value: unknown) => unknown;\n readRequestBody: (req: IncomingMessage) => Promise<unknown>;\n makeCliError: (code: string, message: string, details?: Record<string, unknown>) => Error;\n};\n\nexport function runDevStatusRefsCliCommand(args: CliArgs, deps: DevCommandDeps) {\n runDevStatusRefsCommand(args, {\n argFlag: deps.argFlag,\n findRepoRoot: deps.findRepoRoot,\n makeCliError: deps.makeCliError,\n });\n}\n\nexport function runDevCheckV1CliCommand(args: CliArgs, deps: DevCommandDeps) {\n runDevCheckV1Command(args, {\n argFlag: deps.argFlag,\n findRepoRoot: deps.findRepoRoot,\n makeCliError: deps.makeCliError,\n });\n}\n\nexport function runDevCheckFlowCliCommand(args: CliArgs, deps: DevCommandDeps) {\n const repoRoot = deps.findRepoRoot();\n if (!repoRoot) {\n throw deps.makeCliError(\n \"CLI_REPO_NOT_FOUND\",\n \"Could not locate repo root for xapps dev check flow\",\n );\n }\n const flowFile = deps.argString(args, \"from\");\n const flowName = deps.argString(args, \"name\");\n if (!flowFile && !flowName) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Missing required argument: --name <flow> or --from <flow.json>\",\n );\n }\n if (flowFile && flowName) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Use either --name <flow> or --from <flow.json>, not both\",\n );\n }\n const normalized = flowName ? flowName.trim().toLowerCase() : null;\n const artifactsDirRaw = deps.argString(args, \"artifacts-dir\");\n const artifactsDir = artifactsDirRaw\n ? path.resolve(repoRoot, String(artifactsDirRaw).trim())\n : \"/tmp\";\n const plans = buildBuiltInDevCheckFlows(artifactsDir);\n let selectedFlow:\n | { key: string; title: string; description: string; commands: string[]; refs: string[] }\n | undefined;\n const readFlowFromFile = (inputFlowFile: string) => {\n const filePath = path.resolve(repoRoot, inputFlowFile);\n const parsed = deps.readJsonFile(filePath);\n const parsedFlow = parseDevFlowObject(parsed, path.basename(filePath));\n if (parsedFlow.errors.length) {\n throw deps.makeCliError(\n \"CLI_INVALID_OPTION\",\n `Invalid flow file: ${inputFlowFile} (${parsedFlow.errors.join(\",\")})`,\n {\n label: \"--from\",\n value: inputFlowFile,\n errors: parsedFlow.errors,\n },\n );\n }\n return {\n filePath,\n flow: parsedFlow.flow,\n };\n };\n if (flowFile) {\n selectedFlow = readFlowFromFile(flowFile).flow;\n } else {\n const plan = normalized ? plans[normalized] : undefined;\n if (!plan) {\n throw deps.makeCliError(\"CLI_INVALID_OPTION\", `Unknown flow: ${flowName}`, {\n label: \"--name\",\n value: flowName,\n allowed: Object.keys(plans),\n });\n }\n selectedFlow = { key: normalized!, ...plan };\n }\n const resolvedCommands = selectedFlow.commands.map((cmd) =>\n deps.applyFlowCommandTemplates(cmd, { artifactsDir }),\n );\n const payload: Record<string, unknown> = {\n schema_version: \"xapps.dev.check.flow.v1\",\n ok: true,\n repo_root: repoRoot,\n flow: selectedFlow.key,\n artifacts_dir: artifactsDir,\n title: selectedFlow.title,\n description: selectedFlow.description,\n commands: resolvedCommands,\n refs: selectedFlow.refs,\n ...(flowFile ? { flow_file: path.relative(repoRoot, path.resolve(repoRoot, flowFile)) } : {}),\n };\n if (deps.argFlag(args, \"run\")) {\n try {\n fs.mkdirSync(artifactsDir, { recursive: true });\n } catch (error) {\n throw deps.makeCliError(\n \"CLI_DEV_CHECK_FAILED\",\n `Unable to prepare artifacts directory: ${artifactsDir}`,\n {\n flow: normalized || \"\",\n artifacts_dir: artifactsDir,\n error: String((error as Error)?.message || error),\n },\n );\n }\n }\n if (deps.argFlag(args, \"run\")) {\n const runs = executeDevCheckFlowCommands(resolvedCommands, repoRoot);\n const runSummary = {\n executed: true,\n ok: runs.every((run) => run.ok),\n runs,\n };\n payload.run = runSummary;\n payload.ok = runSummary.ok;\n }\n if (deps.argFlag(args, \"json\")) {\n console.log(JSON.stringify(payload, null, 2));\n if (!payload.ok) {\n throw deps.makeCliError(\n \"CLI_DEV_CHECK_FAILED\",\n `xapps dev check flow failed: ${String(selectedFlow.key || normalized || \"unknown\")}`,\n {\n flow: String(selectedFlow.key || normalized || \"\"),\n },\n );\n }\n return;\n }\n console.log(\n [\n `Flow check plan: ${payload.flow}`,\n `Title: ${payload.title}`,\n `Description: ${payload.description}`,\n \"Commands:\",\n ...(payload.commands as string[]).map((cmd) => `- ${cmd}`),\n ...(payload.run && typeof payload.run === \"object\" && Array.isArray((payload.run as any).runs)\n ? [\n \"Run results:\",\n ...((payload.run as any).runs as any[]).map(\n (run) => `- ${run.ok ? \"OK\" : \"FAIL\"} (${run.exit_code ?? \"?\"}) ${run.command}`,\n ),\n ]\n : []),\n \"Refs:\",\n ...(payload.refs as string[]).map((ref) => `- ${ref}`),\n ].join(\"\\n\"),\n );\n if (!payload.ok) {\n throw deps.makeCliError(\n \"CLI_DEV_CHECK_FAILED\",\n `xapps dev check flow failed: ${String(selectedFlow.key || normalized || \"unknown\")}`,\n {\n flow: String(selectedFlow.key || normalized || \"\"),\n },\n );\n }\n}\n\nexport function runDevCheckFlowLintCliCommand(args: CliArgs, deps: DevCommandDeps) {\n const repoRoot = deps.findRepoRoot();\n if (!repoRoot) {\n throw deps.makeCliError(\n \"CLI_REPO_NOT_FOUND\",\n \"Could not locate repo root for xapps dev check flow lint\",\n );\n }\n const flowFile = deps.argString(args, \"from\");\n if (!flowFile) {\n throw deps.makeCliError(\"CLI_INVALID_ARGS\", \"Missing required argument: --from <flow.json>\");\n }\n const filePath = path.resolve(repoRoot, flowFile);\n const parsed = deps.readJsonFile(filePath);\n const parsedFlow = parseDevFlowObject(parsed, path.basename(filePath));\n if (parsedFlow.errors.length) {\n throw deps.makeCliError(\n \"CLI_INVALID_OPTION\",\n `Invalid flow file: ${flowFile} (${parsedFlow.errors.join(\",\")})`,\n {\n label: \"--from\",\n value: flowFile,\n errors: parsedFlow.errors,\n },\n );\n }\n const checks = lintDevFlowDefinition(parsedFlow.flow);\n const payload = {\n schema_version: \"xapps.dev.check.flow.lint.v1\",\n ok: checks.every((c) => c.ok),\n repo_root: repoRoot,\n flow_file: path.relative(repoRoot, filePath),\n flow: parsedFlow.flow.key || null,\n checks,\n };\n if (deps.argFlag(args, \"json\")) {\n console.log(JSON.stringify(payload, null, 2));\n if (!payload.ok) {\n throw deps.makeCliError(\"CLI_DEV_CHECK_FAILED\", \"xapps dev check flow lint failed\", {\n flow_file: payload.flow_file,\n checks,\n });\n }\n return;\n }\n console.log(\n [\n `Flow lint: ${payload.ok ? \"PASS\" : \"FAIL\"}`,\n `Flow file: ${payload.flow_file}`,\n `Flow: ${payload.flow || \"n/a\"}`,\n ...checks.map((c) => `${c.ok ? \"OK\" : \"FAIL\"} ${c.key}`),\n ].join(\"\\n\"),\n );\n if (!payload.ok) {\n throw deps.makeCliError(\"CLI_DEV_CHECK_FAILED\", \"xapps dev check flow lint failed\", {\n flow_file: payload.flow_file,\n checks,\n });\n }\n}\n\nfunction buildDevFlowInitTemplate(type: string, makeCliError: DevCommandDeps[\"makeCliError\"]) {\n const template = buildDevFlowInitTemplateBase(type);\n if (template) return template;\n throw makeCliError(\"CLI_INVALID_OPTION\", `Unknown flow template type: ${type}`, {\n label: \"--type\",\n value: type,\n allowed: [\"ai-artifacts\", \"manual-loop\"],\n });\n}\n\nexport function runDevCheckFlowInitCliCommand(args: CliArgs, deps: DevCommandDeps) {\n const repoRoot = deps.findRepoRoot();\n if (!repoRoot) {\n throw deps.makeCliError(\n \"CLI_REPO_NOT_FOUND\",\n \"Could not locate repo root for xapps dev check flow init\",\n );\n }\n const out = deps.argString(args, \"out\");\n if (!out) {\n throw deps.makeCliError(\"CLI_INVALID_ARGS\", \"Missing required argument: --out <flow.json>\");\n }\n const type = deps.argString(args, \"type\");\n if (!type) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Missing required argument: --type <ai-artifacts|manual-loop>\",\n );\n }\n const normalizedType = String(type).trim().toLowerCase();\n const flowTemplate = buildDevFlowInitTemplate(type, deps.makeCliError);\n const flowId = deps.argString(args, \"flow-id\");\n if (flowId && String(flowId).trim()) {\n flowTemplate.flow = String(flowId).trim();\n }\n const manifestPathArg = deps.argString(args, \"manifest\");\n const policyPathArg = deps.argString(args, \"policy\");\n const smokeScriptArg = deps.argString(args, \"smoke-script\");\n if (normalizedType === \"ai-artifacts\") {\n const manifestPath = manifestPathArg ? String(manifestPathArg).trim() : \"\";\n const policyPath = policyPathArg ? String(policyPathArg).trim() : \"\";\n if (manifestPath) {\n flowTemplate.commands = flowTemplate.commands.map((cmd) =>\n cmd.replaceAll(\"./manifest.json\", manifestPath),\n );\n flowTemplate.refs = flowTemplate.refs.map((ref) =>\n ref === \"./manifest.json\" ? manifestPath : ref,\n );\n }\n if (policyPath) {\n flowTemplate.commands = flowTemplate.commands.map((cmd) =>\n cmd.replaceAll(\n \"--policy-preset internal-readonly\",\n `--policy ${deps.shellEscapeArg(policyPath)}`,\n ),\n );\n flowTemplate.refs = flowTemplate.refs.map((ref) =>\n ref === \"./ai/policy.readonly.internal-v1.json\" ? policyPath : ref,\n );\n }\n }\n if (normalizedType === \"manual-loop\") {\n const smokeScriptPath = smokeScriptArg ? String(smokeScriptArg).trim() : \"\";\n if (smokeScriptPath) {\n flowTemplate.commands = [`node ${deps.shellEscapeArg(smokeScriptPath)}`];\n flowTemplate.refs = flowTemplate.refs.map((ref) =>\n ref === \"./scripts/manual-loop-smoke.mjs\" ? smokeScriptPath : ref,\n );\n }\n }\n const target = path.resolve(process.cwd(), out);\n fs.mkdirSync(path.dirname(target), { recursive: true });\n const rendered = `${JSON.stringify(flowTemplate, null, 2)}\\n`;\n fs.writeFileSync(target, rendered);\n const payload = {\n schema_version: \"xapps.dev.check.flow.init.v1\",\n ok: true,\n type: String(type).trim().toLowerCase(),\n out: target,\n flow: flowTemplate.flow,\n ...(manifestPathArg ? { manifest: String(manifestPathArg).trim() } : {}),\n ...(policyPathArg ? { policy: String(policyPathArg).trim() } : {}),\n ...(smokeScriptArg ? { smoke_script: String(smokeScriptArg).trim() } : {}),\n };\n if (deps.argFlag(args, \"json\")) {\n console.log(JSON.stringify(payload, null, 2));\n return;\n }\n console.log(`Flow template created: ${target}\\nType: ${payload.type}\\nFlow: ${payload.flow}`);\n}\n\nexport async function runAiPlanCliCommand(args: CliArgs, deps: DevCommandDeps) {\n await runAiPlanCommand(args, {\n argString: deps.argString,\n argFlag: deps.argFlag,\n findRepoRoot: deps.findRepoRoot,\n parseManifestFromFile: deps.parseManifestFromFile,\n buildContextExportPayload: (manifest, filePath) =>\n buildContextExportPayload(manifest, filePath, {\n canonicalizeJson: deps.canonicalizeJson,\n }) as Record<string, unknown>,\n buildDevRefs: deps.buildDevRefs,\n buildInternalV1ContextPreset: (repoRoot) =>\n buildInternalV1ContextPreset(repoRoot, { buildDevRefs: deps.buildDevRefs }) as Record<\n string,\n unknown\n >,\n readJsonFile: deps.readJsonFile,\n makeCliError: deps.makeCliError,\n });\n}\n\nexport async function runAiCheckCliCommand(args: CliArgs, deps: DevCommandDeps) {\n await runAiCheckCommand(args, {\n argString: deps.argString,\n argFlag: deps.argFlag,\n findRepoRoot: deps.findRepoRoot,\n parseManifestFromFile: deps.parseManifestFromFile,\n buildContextExportPayload: (manifest, filePath) =>\n buildContextExportPayload(manifest, filePath, {\n canonicalizeJson: deps.canonicalizeJson,\n }) as Record<string, unknown>,\n buildDevRefs: deps.buildDevRefs,\n buildInternalV1ContextPreset: (repoRoot) =>\n buildInternalV1ContextPreset(repoRoot, { buildDevRefs: deps.buildDevRefs }) as Record<\n string,\n unknown\n >,\n readJsonFile: deps.readJsonFile,\n makeCliError: deps.makeCliError,\n });\n}\n\nexport async function runPublisherCliCommand(args: CliArgs, deps: DevCommandDeps) {\n const subcommand = deps.argString(args, \"_subcommand\");\n const subcommand2 = deps.argString(args, \"_subcommand2\");\n const subcommand3 = deps.argString(args, \"_subcommand3\");\n if (subcommand === \"endpoint\" && subcommand2 === \"credential\" && subcommand3 === \"set\") {\n await runPublisherEndpointCredentialSetCommand(args, {\n argString: deps.argString,\n argFlag: deps.argFlag,\n makeCliError: deps.makeCliError,\n });\n return;\n }\n if (subcommand === \"endpoint\" && subcommand2 === \"credential\" && subcommand3 === \"ensure\") {\n await runPublisherEndpointCredentialEnsureCommand(args, {\n argString: deps.argString,\n argFlag: deps.argFlag,\n makeCliError: deps.makeCliError,\n });\n return;\n }\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Missing required subcommand: publisher endpoint credential set|ensure\",\n );\n}\n\nexport async function runDevCommand(args: CliArgs, deps: DevCommandDeps) {\n const subcommand = deps.argString(args, \"_subcommand\");\n const subcommand2 = deps.argString(args, \"_subcommand2\");\n if (subcommand === \"status\" && subcommand2 === \"refs\") {\n runDevStatusRefsCliCommand(args, deps);\n return;\n }\n if (subcommand === \"check\" && subcommand2 === \"v1\") {\n runDevCheckV1CliCommand(args, deps);\n return;\n }\n if (subcommand === \"check\" && subcommand2 === \"flow\") {\n if (deps.argString(args, \"_subcommand3\") === \"init\") {\n runDevCheckFlowInitCliCommand(args, deps);\n return;\n }\n if (deps.argString(args, \"_subcommand3\") === \"lint\") {\n runDevCheckFlowLintCliCommand(args, deps);\n return;\n }\n runDevCheckFlowCliCommand(args, deps);\n return;\n }\n\n const from = deps.argString(args, \"from\");\n if (!from) {\n throw new Error(\"Missing required argument: --from <manifest.json>\");\n }\n\n const once = deps.argFlag(args, \"once\");\n const watchEnabled = !deps.argFlag(args, \"no-watch\");\n const host = deps.argString(args, \"host\") || \"127.0.0.1\";\n const port = Number(deps.argString(args, \"port\") || \"4011\");\n\n const first = deps.parseManifestFromFile(from);\n console.log(\n `Dev manifest loaded: ${first.filePath}\\nSlug: ${first.manifest.slug}\\nTools: ${first.manifest.tools.length}\\nWidgets: ${first.manifest.widgets.length}`,\n );\n deps.runDryRun(args, first.manifest);\n\n if (once) return;\n\n const manifestPath = first.filePath;\n let currentManifest = first.manifest;\n let watchTimer: NodeJS.Timeout | null = null;\n const watcher = watchEnabled\n ? fs.watch(manifestPath, () => {\n if (watchTimer) clearTimeout(watchTimer);\n watchTimer = setTimeout(() => {\n try {\n const parsed = deps.parseManifestFromFile(manifestPath);\n currentManifest = parsed.manifest;\n console.log(\n `Manifest revalidated: ${parsed.filePath}\\nSlug: ${parsed.manifest.slug}\\nTools: ${parsed.manifest.tools.length}\\nWidgets: ${parsed.manifest.widgets.length}`,\n );\n } catch (err: any) {\n console.error(`Manifest validation failed: ${err?.message || String(err)}`);\n }\n }, 120);\n })\n : null;\n\n const server = http.createServer(async (req, res) => {\n const method = (req.method || \"GET\").toUpperCase();\n const url = req.url || \"/\";\n const eventMatch = /^\\/v1\\/requests\\/([^/]+)\\/events\\/?$/.exec(url);\n const completeMatch = /^\\/v1\\/requests\\/([^/]+)\\/complete\\/?$/.exec(url);\n\n if (method === \"POST\" && (eventMatch || completeMatch)) {\n const requestId = decodeURIComponent((eventMatch || completeMatch)![1]);\n const payload = await deps.readRequestBody(req);\n const kind = eventMatch ? \"event\" : \"complete\";\n const payloadText = JSON.stringify(payload);\n console.log(\n `[dev-callback] ${kind} request_id=${requestId} slug=${currentManifest.slug} payload=${payloadText}`,\n );\n const response = {\n ok: true,\n simulated: true,\n kind,\n request_id: requestId,\n };\n res.statusCode = 200;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(JSON.stringify(response));\n return;\n }\n\n res.statusCode = 404;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(JSON.stringify({ ok: false, error: \"not_found\" }));\n });\n\n await new Promise<void>((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(port, host, () => {\n server.off(\"error\", reject);\n resolve();\n });\n });\n\n console.log(\n `xapps dev running\\nManifest watch: ${watchEnabled ? \"on\" : \"off\"}\\nMock callbacks: http://${host}:${port}\\nEndpoints: POST /v1/requests/:id/events and POST /v1/requests/:id/complete`,\n );\n\n await new Promise<void>((resolve) => {\n const shutdown = () => {\n if (watchTimer) {\n clearTimeout(watchTimer);\n }\n watcher?.close();\n server.close(() => resolve());\n };\n process.once(\"SIGINT\", shutdown);\n process.once(\"SIGTERM\", shutdown);\n });\n}\n", "export type DevFlowDefinition = {\n key: string;\n title: string;\n description: string;\n commands: string[];\n refs: string[];\n};\n\nexport type DevFlowLintCheck = {\n key: string;\n ok: boolean;\n details?: Record<string, unknown>;\n};\n\nexport function buildDevFlowInitTemplate(type: string): {\n flow: string;\n title: string;\n description: string;\n commands: string[];\n refs: string[];\n} | null {\n const normalized = String(type || \"\")\n .trim()\n .toLowerCase();\n if (normalized === \"ai-artifacts\") {\n return {\n flow: \"sample-ai-artifacts\",\n title: \"Sample AI plan/check artifacts workflow\",\n description:\n \"Edit paths for your app and policy. Uses {{ARTIFACTS_DIR}} for generated plan/check reports.\",\n commands: [\n \"npm run xapps -- validate --from ./manifest.json\",\n \"npm run xapps -- ai plan --mode internal --from ./manifest.json --preset internal-v1 --json --out {{ARTIFACTS_DIR}}/xapps.plan.json\",\n \"npm run xapps -- ai check --mode internal --plan {{ARTIFACTS_DIR}}/xapps.plan.json --policy-preset internal-readonly --json --out {{ARTIFACTS_DIR}}/xapps.check.json\",\n ],\n refs: [\n \"./manifest.json\",\n \"./ai/policy.readonly.internal-v1.json\",\n \"dev/engineering/checklists/SDK_CLI_AI_CHECKLIST.md\",\n ],\n };\n }\n if (normalized === \"manual-loop\") {\n return {\n flow: \"sample-manual-loop\",\n title: \"Sample publisher manual response loop smoke\",\n description:\n \"Edit the smoke script path for your publisher sample/workspace. Intended for async manual-response callback loops.\",\n commands: [\"node ./scripts/manual-loop-smoke.mjs\"],\n refs: [\"./scripts/manual-loop-smoke.mjs\", \"./README.md\"],\n };\n }\n return null;\n}\n\nexport function parseDevFlowObject(\n raw: unknown,\n fallbackFlowId = \"\",\n): { flow: DevFlowDefinition; errors: string[] } {\n const errors: string[] = [];\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) {\n return {\n flow: { key: \"\", title: \"\", description: \"\", commands: [], refs: [] },\n errors: [\"expected_object\"],\n };\n }\n const source = raw as Record<string, unknown>;\n const key = String(source.flow || source.key || fallbackFlowId || \"\")\n .trim()\n .toLowerCase();\n const title = String(source.title || \"\").trim();\n const description = String(source.description || \"\").trim();\n const commands = Array.isArray(source.commands)\n ? source.commands\n .filter((v): v is string => typeof v === \"string\")\n .map((v) => v.trim())\n .filter(Boolean)\n : [];\n const refs = Array.isArray(source.refs)\n ? source.refs\n .filter((v): v is string => typeof v === \"string\")\n .map((v) => v.trim())\n .filter(Boolean)\n : [];\n if (!key) errors.push(\"flow_id_missing\");\n if (!title) errors.push(\"title_missing\");\n if (!description) errors.push(\"description_missing\");\n if (!commands.length) errors.push(\"commands_missing\");\n return {\n flow: { key, title, description, commands, refs },\n errors,\n };\n}\n\nexport function lintDevFlowDefinition(flow: DevFlowDefinition): DevFlowLintCheck[] {\n const commands = Array.isArray(flow.commands) ? flow.commands : [];\n return [\n {\n key: \"flow_id_present\",\n ok: typeof flow.key === \"string\" && flow.key.trim().length > 0,\n details: { value: flow.key || null },\n },\n {\n key: \"title_present\",\n ok: typeof flow.title === \"string\" && flow.title.trim().length > 0,\n details: { value: flow.title || null },\n },\n {\n key: \"description_present\",\n ok: typeof flow.description === \"string\" && flow.description.trim().length > 0,\n details: { value: flow.description || null },\n },\n {\n key: \"commands_nonempty\",\n ok: commands.length > 0,\n details: { command_count: commands.length },\n },\n {\n key: \"commands_prefixed\",\n ok: commands.every((cmd) => /^(npm|npx|node|pnpm|yarn|bun)\\b/.test(String(cmd).trim())),\n details: {\n invalid_commands: commands.filter(\n (cmd) => !/^(npm|npx|node|pnpm|yarn|bun)\\b/.test(String(cmd).trim()),\n ),\n },\n },\n ];\n}\n", "import { spawnSync } from \"node:child_process\";\nimport path from \"node:path\";\nimport type { DevFlowDefinition } from \"./devFlow.js\";\n\nfunction shellEscapeArg(value: string): string {\n if (/^[A-Za-z0-9_./:-]+$/.test(value)) return value;\n return `'${String(value).replace(/'/g, `'\"'\"'`)}'`;\n}\n\nexport function buildBuiltInDevCheckFlows(\n artifactsDir: string,\n): Record<string, Omit<DevFlowDefinition, \"key\">> {\n const xplacePlanPath = path.join(artifactsDir, \"xapps-xplace-certs.plan.json\");\n const xplaceCheckPath = path.join(artifactsDir, \"xapps-xplace-certs.check.json\");\n return {\n \"pay-per-request\": {\n title: \"Pay-per-request baseline flow\",\n description:\n \"Verifies guarded payment orchestration baseline across widget/guards/contracts for V1.\",\n commands: [\n \"npm test -- src/__tests__/guardBeforeToolRun.test.ts\",\n \"npm test -- src/__tests__/widgetSdk.test.ts src/__tests__/extensionsLabJsonformsPayment.e2e.test.ts\",\n \"npm test -- src/__tests__/openapiErrorContract.test.ts\",\n ],\n refs: [\n \"dev/engineering/audits/V1_PRODUCTION_CODEBASE_REVIEW.md\",\n \"dev/engineering/pm/OPEN_LIST.md\",\n ],\n },\n \"guard-orchestration\": {\n title: \"Guard orchestration bridge flow\",\n description:\n \"Verifies blocked/confirm/payment orchestration bridge behavior across host/embed guard paths.\",\n commands: [\n \"npm test -- src/__tests__/guardContractParity.test.ts src/__tests__/integrationHostGuardContracts.test.ts\",\n \"npm test -- src/__tests__/widgetRuntime.guardBridge.test.ts\",\n \"npx playwright test e2e/extensions-guards.spec.ts --grep orchestration|guard\",\n ],\n refs: [\n \"dev/engineering/audits/V1_PRODUCTION_CODEBASE_REVIEW.md\",\n \"dev/engineering/pm/OPEN_POINTS.md\",\n ],\n },\n \"xplace-certs\": {\n title: \"xplace certs first-xapp internal workflow\",\n description:\n \"Validates and inspects the xplace-certs JSON Forms manifest using internal-repo CLI helpers.\",\n commands: [\n \"npm run xapps -- validate --from apps/publishers/xplace/xapps/xplace-certs/manifest.json\",\n `npm run xapps -- ai plan --mode internal --from apps/publishers/xplace/xapps/xplace-certs/manifest.json --preset internal-v1 --flow xplace-certs --json --out ${shellEscapeArg(xplacePlanPath)}`,\n `npm run xapps -- ai check --mode internal --plan ${shellEscapeArg(xplacePlanPath)} --policy apps/publishers/xplace/xapps/xplace-certs/ai/policy.readonly.internal-v1.json --json --out ${shellEscapeArg(xplaceCheckPath)}`,\n ],\n refs: [\n \"apps/publishers/xplace/xapps/xplace-certs/manifest.json\",\n \"apps/publishers/xplace/xapps/xplace-certs/ai/policy.readonly.internal-v1.json\",\n \"apps/publishers/xplace/backend/server.js\",\n \"dev/engineering/audits/OPEN_067_PHASE1_INTERNAL_REPO_PLAN.md\",\n ],\n },\n };\n}\n\nexport type DevCheckFlowRunResult = {\n command: string;\n ok: boolean;\n exit_code: number | null;\n signal: NodeJS.Signals | null;\n stdout: string;\n stderr: string;\n error: string | null;\n};\n\nexport function executeDevCheckFlowCommands(\n commands: string[],\n repoRoot: string,\n): DevCheckFlowRunResult[] {\n return commands.map((command) => {\n const parts = String(command).trim().split(/\\s+/).filter(Boolean);\n if (!parts.length) {\n return {\n command,\n ok: false,\n exit_code: null,\n signal: null,\n stdout: \"\",\n stderr: \"\",\n error: \"empty_command\",\n };\n }\n const result = spawnSync(parts[0], parts.slice(1), {\n cwd: repoRoot,\n encoding: \"utf8\",\n stdio: \"pipe\",\n });\n return {\n command,\n ok: (result.status ?? 1) === 0 && !result.error,\n exit_code: result.status ?? null,\n signal: result.signal ?? null,\n stdout: String(result.stdout || \"\"),\n stderr: String(result.stderr || \"\"),\n error: result.error ? String(result.error.message || result.error) : null,\n };\n });\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport readline from \"node:readline/promises\";\nimport { stdin as input, stdout as output } from \"node:process\";\nimport { parseXappManifest } from \"../../../src/validation/xappManifest.js\";\n\ntype CliArgsLike = Record<string, string | boolean>;\ntype DevRefLike = { key: string; path: string; exists: boolean };\ntype PlanRendererFamily = \"publisher-rendered\" | \"jsonforms\" | \"platform\";\ntype MockAssetKind = \"image\" | \"json\" | \"text\" | \"other\";\ntype MockAssetRef = { path: string; name: string; kind: MockAssetKind; bytes?: number };\n\ntype AiPlanPayload = {\n schema_version: \"xapps.ai.plan.v1\";\n ok: boolean;\n mode: \"internal\";\n read_only: true;\n source: {\n manifest_path: string;\n manifest_sha256?: string;\n };\n context: {\n summary: Record<string, unknown>;\n refs: DevRefLike[];\n };\n actions: Array<Record<string, unknown>>;\n warnings: string[];\n errors: Array<Record<string, unknown>>;\n};\n\ntype AiCheckPolicy = {\n schema_version?: string;\n require_read_only?: boolean;\n max_actions?: number;\n allow_action_kinds?: string[];\n};\n\ntype CliErrorFactory = (code: string, message: string, details?: Record<string, unknown>) => Error;\n\ntype AiCommandDeps = {\n argString: (args: CliArgsLike, ...keys: string[]) => string | undefined;\n argFlag: (args: CliArgsLike, key: string) => boolean;\n findRepoRoot: (startDir?: string) => string | null;\n parseManifestFromFile: (from: string) => {\n manifest: ReturnType<typeof parseXappManifest>;\n filePath: string;\n };\n buildContextExportPayload: (\n manifest: ReturnType<typeof parseXappManifest>,\n filePath: string,\n ) => Record<string, unknown>;\n buildDevRefs: (repoRoot: string) => DevRefLike[];\n buildInternalV1ContextPreset: (repoRoot: string) => Record<string, unknown>;\n readJsonFile: (filePath: string) => unknown;\n makeCliError: CliErrorFactory;\n};\ntype ParsedManifest = ReturnType<typeof parseXappManifest>;\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction parseAiMode(args: CliArgsLike, deps: AiCommandDeps): \"internal\" {\n const mode = String(deps.argString(args, \"mode\") || \"internal\")\n .trim()\n .toLowerCase();\n if (mode !== \"internal\") {\n throw deps.makeCliError(\n \"CLI_AI_MODE_UNSUPPORTED\",\n `Unsupported --mode: ${mode} (only internal is implemented in this phase)`,\n { label: \"--mode\", value: mode, supported: [\"internal\"] },\n );\n }\n return \"internal\";\n}\n\nfunction parsePositiveIntOptionOrThrow(\n value: string | undefined,\n fallback: number,\n label: string,\n deps: AiCommandDeps,\n): number {\n if (!value) return fallback;\n const parsed = Number(value);\n if (!Number.isFinite(parsed) || !Number.isInteger(parsed) || parsed <= 0) {\n throw deps.makeCliError(\n \"CLI_INVALID_OPTION\",\n `Invalid ${label}: ${value} (expected positive integer)`,\n { label, value },\n );\n }\n return parsed;\n}\n\nfunction detectPlanRendererFamilies(manifest: ParsedManifest): PlanRendererFamily[] {\n const found = new Set<PlanRendererFamily>();\n for (const widget of manifest.widgets || []) {\n const renderer = String((widget as any).renderer || \"\")\n .trim()\n .toLowerCase();\n if (renderer === \"publisher\") {\n found.add(\"publisher-rendered\");\n continue;\n }\n if (renderer === \"json-forms\") {\n found.add(\"jsonforms\");\n continue;\n }\n if (renderer === \"platform\") found.add(\"platform\");\n }\n return Array.from(found.values()).sort();\n}\n\nfunction normalizeLowerSet(values: string[]): Set<string> {\n return new Set(values.map((v) => v.trim().toLowerCase()).filter(Boolean));\n}\n\nfunction inferMockAssetKind(fileName: string): MockAssetKind {\n const lower = fileName.toLowerCase();\n if (/\\.(png|jpe?g|gif|webp|bmp|svg)$/.test(lower)) return \"image\";\n if (/\\.json$/.test(lower)) return \"json\";\n if (/\\.(txt|md|yaml|yml)$/.test(lower)) return \"text\";\n return \"other\";\n}\n\nfunction listMockAssets(\n manifestFilePath: string,\n args: CliArgsLike,\n deps: AiCommandDeps,\n): MockAssetRef[] {\n const rawMockDirs = [\n deps.argString(args, \"mocks\"),\n deps.argString(args, \"mocks-dir\"),\n path.join(path.dirname(manifestFilePath), \"mocks\"),\n ].filter((value): value is string => typeof value === \"string\" && value.trim().length > 0);\n const seenDirs = normalizeLowerSet([]);\n const out: MockAssetRef[] = [];\n for (const rawDir of rawMockDirs) {\n const dirPath = path.resolve(process.cwd(), rawDir);\n const dedupeKey = dirPath.toLowerCase();\n if (seenDirs.has(dedupeKey)) continue;\n seenDirs.add(dedupeKey);\n if (!fs.existsSync(dirPath)) continue;\n let entries: fs.Dirent[] = [];\n try {\n entries = fs.readdirSync(dirPath, { withFileTypes: true });\n } catch {\n continue;\n }\n for (const entry of entries) {\n if (!entry.isFile()) continue;\n const absPath = path.join(dirPath, entry.name);\n let size: number | undefined;\n try {\n size = fs.statSync(absPath).size;\n } catch {\n size = undefined;\n }\n out.push({\n path: path.relative(process.cwd(), absPath),\n name: entry.name,\n kind: inferMockAssetKind(entry.name),\n ...(typeof size === \"number\" ? { bytes: size } : {}),\n });\n }\n }\n return out.sort((a, b) => a.path.localeCompare(b.path));\n}\n\nfunction readAiGuidance(args: CliArgsLike, deps: AiCommandDeps): string | undefined {\n const inline = deps.argString(args, \"guidance\");\n const file = deps.argString(args, \"guidance-file\");\n if (inline && file) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Use either --guidance <text> or --guidance-file <path>, not both\",\n );\n }\n const raw = file\n ? fs.readFileSync(path.resolve(process.cwd(), file), \"utf8\")\n : typeof inline === \"string\"\n ? inline\n : \"\";\n const guidance = String(raw || \"\").trim();\n return guidance || undefined;\n}\n\nfunction getToolByName(manifest: ParsedManifest, toolName: string): Record<string, any> | null {\n for (const tool of manifest.tools || []) {\n if (String((tool as any).tool_name || \"\") === toolName) return tool as any;\n }\n return null;\n}\n\nfunction collectUiElements(uiSchema: any): any[] {\n if (!uiSchema || typeof uiSchema !== \"object\") return [];\n const stack: any[] = [uiSchema];\n const out: any[] = [];\n while (stack.length) {\n const node = stack.pop();\n if (!node || typeof node !== \"object\") continue;\n out.push(node);\n const elements = Array.isArray((node as any).elements) ? (node as any).elements : [];\n for (const child of elements) stack.push(child);\n }\n return out;\n}\n\nfunction hasStepperUiSchema(uiSchema: any): boolean {\n if (!uiSchema || typeof uiSchema !== \"object\") return false;\n if (String((uiSchema as any).type || \"\") !== \"Categorization\") return false;\n const options = (uiSchema as any).options;\n return (\n options &&\n typeof options === \"object\" &&\n String((options as any).variant || \"\").toLowerCase() === \"stepper\"\n );\n}\n\nfunction hasPreviewSections(uiSchema: any): boolean {\n return collectUiElements(uiSchema).some(\n (node) =>\n String((node as any).type || \"\") === \"XAppsDisplayPanel\" ||\n String((node as any).component || \"\")\n .toLowerCase()\n .includes(\"preview\"),\n );\n}\n\nfunction buildControlScope(propertyName: string) {\n return `#/properties/${propertyName}`;\n}\n\nfunction buildStepperUiSchemaSuggestion(\n inputSchema: any,\n options?: { includePreviewPanel?: boolean },\n) {\n const props =\n inputSchema &&\n typeof inputSchema === \"object\" &&\n inputSchema.properties &&\n typeof inputSchema.properties === \"object\"\n ? (inputSchema.properties as Record<string, any>)\n : {};\n const propertyNames = Object.keys(props);\n const nonAttachments: string[] = [];\n const attachments: string[] = [];\n for (const key of propertyNames) {\n const prop = props[key] || {};\n const isBinaryArray =\n String(prop.type || \"\") === \"array\" &&\n prop.items &&\n typeof prop.items === \"object\" &&\n String((prop.items as any).format || \"\").toLowerCase() === \"binary\";\n const isBinary = String(prop.format || \"\").toLowerCase() === \"binary\";\n if (isBinary || isBinaryArray) attachments.push(key);\n else nonAttachments.push(key);\n }\n\n const splitIndex =\n nonAttachments.length > 3 ? Math.ceil(nonAttachments.length / 2) : nonAttachments.length;\n const primary = nonAttachments.slice(0, splitIndex);\n const secondary = nonAttachments.slice(splitIndex);\n const categories: any[] = [];\n if (primary.length) {\n const elements = primary.map((key) => ({ type: \"Control\", scope: buildControlScope(key) }));\n if (options?.includePreviewPanel) {\n const previewScope = buildControlScope(attachments[0] || primary[0]);\n elements.push({\n type: \"XAppsDisplayPanel\",\n component: \"json-preview\",\n label: attachments[0] ? \"Attachments Preview\" : \"Form Preview\",\n scope: previewScope,\n });\n }\n categories.push({\n type: \"Category\",\n label: \"Basic Info\",\n elements,\n });\n }\n if (secondary.length) {\n categories.push({\n type: \"Category\",\n label: \"Details\",\n elements: secondary.map((key) => ({ type: \"Control\", scope: buildControlScope(key) })),\n });\n }\n if (attachments.length) {\n categories.push({\n type: \"Category\",\n label: \"Attachments\",\n elements: attachments.map((key) => ({ type: \"Control\", scope: buildControlScope(key) })),\n });\n }\n if (!categories.length) {\n categories.push({\n type: \"Category\",\n label: \"Form\",\n elements: options?.includePreviewPanel\n ? [\n {\n type: \"XAppsDisplayPanel\",\n component: \"json-preview\",\n label: \"Form Preview\",\n scope: \"#\",\n },\n ]\n : [],\n });\n }\n return {\n type: \"Categorization\",\n options: { variant: \"stepper\" },\n elements: categories,\n };\n}\n\nfunction buildPreviewSectionSuggestion(inputSchema: any) {\n const props =\n inputSchema &&\n typeof inputSchema === \"object\" &&\n inputSchema.properties &&\n typeof inputSchema.properties === \"object\"\n ? (inputSchema.properties as Record<string, any>)\n : {};\n const names = Object.keys(props);\n const attachmentKey = names.find((key) => {\n const prop = props[key] || {};\n return (\n (String(prop.type || \"\") === \"array\" &&\n prop.items &&\n typeof prop.items === \"object\" &&\n String((prop.items as any).format || \"\").toLowerCase() === \"binary\") ||\n String(prop.format || \"\").toLowerCase() === \"binary\"\n );\n });\n const fallbackKey = attachmentKey || names[0];\n return [\n {\n type: \"XAppsDisplayPanel\",\n component: \"json-preview\",\n label: attachmentKey ? \"Attachments Preview\" : \"Form Preview\",\n ...(fallbackKey ? { scope: buildControlScope(fallbackKey) } : { scope: \"#\" }),\n },\n ];\n}\n\nfunction buildManifestPatchHints(\n manifest: ParsedManifest,\n mockAssets: MockAssetRef[],\n guidance: string | undefined,\n): Array<Record<string, unknown>> {\n const hints: Array<Record<string, unknown>> = [];\n const guidanceLower = String(guidance || \"\").toLowerCase();\n const wantsStepper = /step(?:s|per)?|wizard/.test(guidanceLower);\n const wantsPreview = /preview|widget[- ]?preview|display panel/.test(guidanceLower);\n const hasImageMocks = mockAssets.some((asset) => asset.kind === \"image\");\n\n for (const widget of manifest.widgets || []) {\n const w: any = widget as any;\n if (String(w.renderer || \"\").toLowerCase() !== \"json-forms\") continue;\n const toolName = String(w.bind_tool_name || \"\").trim();\n if (!toolName) continue;\n const tool = getToolByName(manifest, toolName);\n if (!tool) continue;\n const uiSchema = (tool as any).input_ui_schema;\n const inputSchema = (tool as any).input_schema;\n const hasStepper = hasStepperUiSchema(uiSchema);\n const hasPreview = hasPreviewSections(uiSchema);\n const shouldSuggestStepper = !hasStepper && (wantsStepper || hasImageMocks);\n const shouldSuggestPreview = !hasPreview && (wantsPreview || hasImageMocks);\n if (!shouldSuggestStepper && !shouldSuggestPreview) continue;\n\n const proposedInputUiSchema = shouldSuggestStepper\n ? buildStepperUiSchemaSuggestion(inputSchema, { includePreviewPanel: shouldSuggestPreview })\n : undefined;\n const appendPreviewSections =\n !shouldSuggestStepper && shouldSuggestPreview\n ? buildPreviewSectionSuggestion(inputSchema)\n : undefined;\n\n hints.push({\n widget_name: String(w.widget_name || \"\"),\n bind_tool_name: toolName,\n reasons: [\n ...(hasImageMocks ? [\"mock_assets_detected\"] : []),\n ...(shouldSuggestStepper ? [\"missing_stepper_wizard_ui\"] : []),\n ...(shouldSuggestPreview ? [\"missing_preview_sections\"] : []),\n ],\n patch: {\n tool_name: toolName,\n field: \"input_ui_schema\",\n mode: shouldSuggestStepper ? \"replace\" : \"append_preview_sections\",\n ...(proposedInputUiSchema ? { value: proposedInputUiSchema } : {}),\n ...(appendPreviewSections ? { preview_sections: appendPreviewSections } : {}),\n },\n review_notes: [\n \"Review inferred step grouping and labels before applying.\",\n \"Preview panel suggestion is generic; customize component/scope for your UX.\",\n ],\n });\n }\n return hints;\n}\n\nfunction mimeTypeForMockAsset(fileName: string): string {\n const lower = fileName.toLowerCase();\n if (lower.endsWith(\".png\")) return \"image/png\";\n if (lower.endsWith(\".jpg\") || lower.endsWith(\".jpeg\")) return \"image/jpeg\";\n if (lower.endsWith(\".webp\")) return \"image/webp\";\n if (lower.endsWith(\".gif\")) return \"image/gif\";\n if (lower.endsWith(\".svg\")) return \"image/svg+xml\";\n return \"application/octet-stream\";\n}\n\nfunction toDataUrlFromFile(filePath: string): string {\n const abs = path.resolve(process.cwd(), filePath);\n const data = fs.readFileSync(abs);\n const mime = mimeTypeForMockAsset(filePath);\n return `data:${mime};base64,${data.toString(\"base64\")}`;\n}\n\nfunction extractJsonObjectFromText(text: string): Record<string, unknown> | null {\n const trimmed = String(text || \"\").trim();\n if (!trimmed) return null;\n try {\n const parsed = JSON.parse(trimmed);\n return isPlainObject(parsed) ? parsed : null;\n } catch {\n // try fenced code blocks\n }\n const fenceMatch = trimmed.match(/```(?:json)?\\s*([\\s\\S]*?)```/i);\n if (fenceMatch?.[1]) {\n try {\n const parsed = JSON.parse(fenceMatch[1].trim());\n return isPlainObject(parsed) ? parsed : null;\n } catch {\n return null;\n }\n }\n return null;\n}\n\nasync function buildLlmManifestPatchHints(\n manifest: ParsedManifest,\n mockAssets: MockAssetRef[],\n guidance: string | undefined,\n args: CliArgsLike,\n deps: AiCommandDeps,\n): Promise<{\n hints: Array<Record<string, unknown>>;\n provider: string;\n model: string;\n}> {\n const apiKey =\n deps.argString(args, \"llm-api-key\") ||\n process.env.OPENAI_API_KEY ||\n process.env.XAPPS_AI_API_KEY ||\n \"\";\n if (!apiKey) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Missing LLM API key. Provide --llm-api-key or set OPENAI_API_KEY/XAPPS_AI_API_KEY\",\n );\n }\n const baseUrl = String(\n deps.argString(args, \"llm-base-url\") ||\n process.env.OPENAI_BASE_URL ||\n \"https://api.openai.com/v1\",\n ).replace(/\\/+$/, \"\");\n const model = String(\n deps.argString(args, \"llm-model\") || process.env.XAPPS_AI_MODEL || \"gpt-5.2\",\n ).trim();\n const timeoutMs = parsePositiveIntOptionOrThrow(\n deps.argString(args, \"llm-timeout-ms\") || process.env.XAPPS_AI_TIMEOUT_MS,\n 30000,\n \"--llm-timeout-ms\",\n deps,\n );\n const imageAssets = mockAssets.filter((m) => m.kind === \"image\").slice(0, 4);\n const userContent: any[] = [\n {\n type: \"text\",\n text: [\n \"Analyze this xapp manifest and mock assets and propose JSON Forms manifest patch hints.\",\n \"Focus on json-forms widgets and infer complete form fields from mockups/guidance.\",\n \"When image mockups are provided, BOTH are needed: propose input_schema AND input_ui_schema (wizard + previews).\",\n 'Return STRICT JSON object only with shape: {\"hints\": [ ... ]}.',\n \"Each hint item must include: widget_name, bind_tool_name, reasons (array), patch (object), review_notes (array).\",\n \"Patch object must include tool_name, field, mode and target only input_schema or input_ui_schema.\",\n \"Supported patch modes: replace (for input_schema or input_ui_schema), append_preview_sections (input_ui_schema only).\",\n \"For image mockups, you MUST attempt complete input_schema inference first (best effort), then align input_ui_schema controls/previews to those fields.\",\n \"If confidence is low, still provide a best-effort input_schema and explain uncertainty in review_notes.\",\n \"For image mocks, prefer image-aware preview suggestions (e.g. attachment-scoped preview panels, data-view cards/list/table of image metadata, or publisher_preview-backed preview sections if endpoints already exist) instead of a generic form-level json-preview when possible.\",\n \"If you suggest preview sections, include component and any options needed (label, scope, options.view/options.dataSource, etc.).\",\n \"Use only supported preview/display components and views: components=[json-preview, location-map-preview, data-view]; data-view types=[key-value, list, table, badges, cards, json].\",\n \"Do not modify security/guards/connectivity.\",\n guidance ? `User guidance: ${guidance}` : \"User guidance: none\",\n `Manifest JSON:\\n${JSON.stringify(manifest, null, 2)}`,\n `Mock assets summary:\\n${JSON.stringify(mockAssets, null, 2)}`,\n ].join(\"\\n\\n\"),\n },\n ];\n for (const asset of imageAssets) {\n try {\n userContent.push({\n type: \"image_url\",\n image_url: { url: toDataUrlFromFile(asset.path) },\n });\n } catch {\n // skip unreadable asset\n }\n }\n\n const payload = {\n model,\n response_format: { type: \"json_object\" },\n messages: [\n {\n role: \"system\",\n content:\n \"You are an xapps manifest assistant. Propose minimal, safe JSON Forms manifest patch hints (input_schema and input_ui_schema only).\",\n },\n {\n role: \"user\",\n content: userContent,\n },\n ],\n temperature: 0.2,\n };\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n let response: Response;\n try {\n response = await fetch(`${baseUrl}/chat/completions`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(payload),\n signal: controller.signal,\n });\n } catch (err: any) {\n if (err?.name === \"AbortError\") {\n throw deps.makeCliError(\"CLI_RUNTIME_ERROR\", `LLM request timed out after ${timeoutMs}ms`, {\n provider: \"openai-compatible\",\n model,\n timeout_ms: timeoutMs,\n });\n }\n throw err;\n } finally {\n clearTimeout(timer);\n }\n const rawText = await response.text();\n if (!response.ok) {\n throw deps.makeCliError(\"CLI_RUNTIME_ERROR\", `LLM request failed: status=${response.status}`, {\n status: response.status,\n body: rawText.slice(0, 2000),\n provider: \"openai-compatible\",\n model,\n });\n }\n let parsedResp: any = null;\n try {\n parsedResp = JSON.parse(rawText);\n } catch {\n throw deps.makeCliError(\"CLI_RUNTIME_ERROR\", \"LLM returned non-JSON response envelope\", {\n provider: \"openai-compatible\",\n model,\n });\n }\n const content = String(parsedResp?.choices?.[0]?.message?.content || \"\");\n const llmJson = extractJsonObjectFromText(content);\n if (!llmJson || !Array.isArray((llmJson as any).hints)) {\n throw deps.makeCliError(\"CLI_RUNTIME_ERROR\", \"LLM response missing hints[] JSON payload\", {\n provider: \"openai-compatible\",\n model,\n });\n }\n const hints = ((llmJson as any).hints as unknown[]).filter((item) =>\n isPlainObject(item),\n ) as Array<Record<string, unknown>>;\n return { hints, provider: \"openai-compatible\", model };\n}\n\nfunction evaluateLlmHintCompleteness(\n hints: Array<Record<string, unknown>>,\n options: { requireInputSchema: boolean; requireInputUiSchema: boolean },\n): { ok: boolean; missing: string[] } {\n const fields = new Set<string>();\n for (const hint of hints) {\n const patch = isPlainObject(hint.patch) ? (hint.patch as Record<string, unknown>) : null;\n const field = String(patch?.field || \"\").trim();\n if (field) fields.add(field);\n }\n const missing: string[] = [];\n if (options.requireInputSchema && !fields.has(\"input_schema\")) missing.push(\"input_schema\");\n if (options.requireInputUiSchema && !fields.has(\"input_ui_schema\"))\n missing.push(\"input_ui_schema\");\n return { ok: missing.length === 0, missing };\n}\n\nasync function readAiGuidanceInteractiveIfRequested(\n args: CliArgsLike,\n deps: AiCommandDeps,\n): Promise<string | undefined> {\n const guidance = readAiGuidance(args, deps);\n if (guidance) return guidance;\n if (!deps.argFlag(args, \"ask-guidance\")) return undefined;\n if (!input.isTTY || !output.isTTY) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"--ask-guidance requires an interactive terminal (TTY) or use --guidance/--guidance-file\",\n );\n }\n const rl = readline.createInterface({ input, output });\n try {\n const answer = await rl.question(\n \"AI guidance (optional). Example: infer complete form fields from mockups, build a step wizard, add supported preview sections, and exclude payment screens because payment is handled by guards.\\n> \",\n );\n const trimmed = String(answer || \"\").trim();\n return trimmed || undefined;\n } finally {\n rl.close();\n }\n}\n\nfunction applySingleManifestPatchHint(\n manifest: Record<string, any>,\n hint: Record<string, unknown>,\n): { changed: boolean; summary: string } {\n const patch = isPlainObject(hint.patch) ? (hint.patch as Record<string, unknown>) : null;\n if (!patch) return { changed: false, summary: \"skip: missing patch object\" };\n const toolName = String(patch.tool_name || \"\").trim();\n const field = String(patch.field || \"\").trim();\n const mode = String(patch.mode || \"\").trim();\n if (!toolName || (field !== \"input_ui_schema\" && field !== \"input_schema\") || !mode) {\n return {\n changed: false,\n summary: `skip: unsupported patch target (${toolName || \"?\"}:${field}:${mode})`,\n };\n }\n const tools = Array.isArray((manifest as any).tools) ? ((manifest as any).tools as any[]) : [];\n const tool = tools.find((t) => String(t?.tool_name || \"\") === toolName);\n if (!tool || typeof tool !== \"object\") {\n return { changed: false, summary: `skip: tool not found (${toolName})` };\n }\n\n if (mode === \"replace\") {\n if (!isPlainObject(patch.value)) {\n return { changed: false, summary: `skip: replace patch missing object value (${toolName})` };\n }\n const before = JSON.stringify((tool as any)[field] ?? null);\n (tool as any)[field] = patch.value;\n const after = JSON.stringify((tool as any)[field] ?? null);\n return { changed: before !== after, summary: `replace ${toolName}.${field}` };\n }\n\n if (mode === \"append_preview_sections\") {\n if (field !== \"input_ui_schema\") {\n return {\n changed: false,\n summary: `skip: append_preview_sections only supports input_ui_schema (${toolName})`,\n };\n }\n const previewSections = Array.isArray(patch.preview_sections)\n ? (patch.preview_sections.filter((s) => isPlainObject(s)) as Record<string, unknown>[])\n : [];\n if (!previewSections.length) {\n return { changed: false, summary: `skip: no preview_sections (${toolName})` };\n }\n const ui = isPlainObject((tool as any)[field])\n ? ((tool as any)[field] as Record<string, any>)\n : null;\n if (!ui) {\n (tool as any)[field] = { type: \"VerticalLayout\", elements: [...previewSections] };\n return { changed: true, summary: `create ${toolName}.${field} with preview sections` };\n }\n const uiType = String((ui as any).type || \"\");\n if (uiType === \"Categorization\" && Array.isArray((ui as any).elements)) {\n const categories = (ui as any).elements as any[];\n const attachmentCategory = categories.find((cat) => {\n if (!cat || typeof cat !== \"object\") return false;\n const label = String((cat as any).label || \"\").toLowerCase();\n if (label.includes(\"attachment\")) return true;\n const els = Array.isArray((cat as any).elements) ? (cat as any).elements : [];\n return els.some(\n (el: any) =>\n String(el?.type || \"\") === \"Control\" &&\n String(el?.scope || \"\")\n .toLowerCase()\n .includes(\"/attachments\"),\n );\n });\n if (attachmentCategory) {\n if (!Array.isArray((attachmentCategory as any).elements))\n (attachmentCategory as any).elements = [];\n const targetEls = (attachmentCategory as any).elements as any[];\n const before = JSON.stringify(targetEls);\n for (const section of previewSections) targetEls.push(section);\n return {\n changed: before !== JSON.stringify(targetEls),\n summary: `append preview sections to attachment category in ${toolName}.${field}`,\n };\n }\n categories.push({\n type: \"Category\",\n label: \"Preview\",\n elements: [...previewSections],\n });\n return { changed: true, summary: `append Preview category to ${toolName}.${field}` };\n }\n if (!Array.isArray((ui as any).elements)) (ui as any).elements = [];\n const targetEls = (ui as any).elements as any[];\n const before = JSON.stringify(targetEls);\n for (const section of previewSections) targetEls.push(section);\n return {\n changed: before !== JSON.stringify(targetEls),\n summary: `append preview sections to ${toolName}.${field}`,\n };\n }\n\n return { changed: false, summary: `skip: unsupported patch mode (${mode})` };\n}\n\nfunction renderSimpleJsonDiff(beforeText: string, afterText: string): string {\n if (beforeText === afterText) return \"(no changes)\";\n const before = beforeText.split(\"\\n\");\n const after = afterText.split(\"\\n\");\n let prefix = 0;\n while (prefix < before.length && prefix < after.length && before[prefix] === after[prefix])\n prefix += 1;\n let suffix = 0;\n while (\n suffix < before.length - prefix &&\n suffix < after.length - prefix &&\n before[before.length - 1 - suffix] === after[after.length - 1 - suffix]\n ) {\n suffix += 1;\n }\n const beforeMid = before.slice(prefix, before.length - suffix);\n const afterMid = after.slice(prefix, after.length - suffix);\n const outLines: string[] = [];\n const startLine = prefix + 1;\n outLines.push(`@@ manifest.json:${startLine} @@`);\n for (const line of beforeMid) outLines.push(`- ${line}`);\n for (const line of afterMid) outLines.push(`+ ${line}`);\n return outLines.join(\"\\n\");\n}\n\nfunction applyManifestPatchHintsToFile(\n filePath: string,\n manifest: ParsedManifest,\n hints: Array<Record<string, unknown>>,\n): {\n applied: boolean;\n changed: boolean;\n file: string;\n applied_count: number;\n summaries: string[];\n diff: string;\n} {\n const beforeObj = JSON.parse(JSON.stringify(manifest)) as Record<string, any>;\n const beforeText = `${JSON.stringify(beforeObj, null, 2)}\\n`;\n const workObj = JSON.parse(beforeText) as Record<string, any>;\n const summaries: string[] = [];\n let appliedCount = 0;\n let changed = false;\n for (const hint of hints) {\n const result = applySingleManifestPatchHint(workObj, hint);\n summaries.push(result.summary);\n if (result.summary.startsWith(\"skip:\")) continue;\n appliedCount += 1;\n changed = changed || result.changed;\n }\n const afterText = `${JSON.stringify(workObj, null, 2)}\\n`;\n if (changed) {\n // validate before write\n parseXappManifest(workObj);\n fs.writeFileSync(filePath, afterText, \"utf8\");\n }\n return {\n applied: true,\n changed,\n file: filePath,\n applied_count: appliedCount,\n summaries,\n diff: renderSimpleJsonDiff(beforeText, afterText),\n };\n}\n\nfunction parseAiCheckPolicy(\n rawPolicy: unknown,\n policyFile: string,\n deps: AiCommandDeps,\n): AiCheckPolicy {\n if (!isPlainObject(rawPolicy)) {\n throw deps.makeCliError(\"CLI_AI_POLICY_INVALID\", \"Invalid AI policy JSON: expected object\", {\n file: policyFile,\n });\n }\n const policy = rawPolicy as Record<string, unknown>;\n const schemaVersion =\n typeof policy.schema_version === \"string\" ? String(policy.schema_version).trim() : \"\";\n if (schemaVersion && schemaVersion !== \"xapps.ai.policy.v1\") {\n throw deps.makeCliError(\n \"CLI_AI_POLICY_INVALID\",\n `Invalid AI policy schema_version: ${schemaVersion} (expected xapps.ai.policy.v1)`,\n { file: policyFile, schema_version: schemaVersion },\n );\n }\n if (\n Object.prototype.hasOwnProperty.call(policy, \"require_read_only\") &&\n typeof policy.require_read_only !== \"boolean\"\n ) {\n throw deps.makeCliError(\n \"CLI_AI_POLICY_INVALID\",\n \"AI policy require_read_only must be boolean\",\n {\n file: policyFile,\n },\n );\n }\n if (Object.prototype.hasOwnProperty.call(policy, \"max_actions\")) {\n const value = policy.max_actions;\n if (!Number.isInteger(value) || Number(value) < 0) {\n throw deps.makeCliError(\n \"CLI_AI_POLICY_INVALID\",\n \"AI policy max_actions must be a non-negative integer\",\n { file: policyFile },\n );\n }\n }\n if (Object.prototype.hasOwnProperty.call(policy, \"allow_action_kinds\")) {\n const value = policy.allow_action_kinds;\n if (\n !Array.isArray(value) ||\n value.some((item) => typeof item !== \"string\" || !String(item).trim())\n ) {\n throw deps.makeCliError(\n \"CLI_AI_POLICY_INVALID\",\n \"AI policy allow_action_kinds must be an array of non-empty strings\",\n { file: policyFile },\n );\n }\n }\n return rawPolicy as AiCheckPolicy;\n}\n\nfunction buildAiCheckPolicyPreset(name: string, deps: AiCommandDeps): AiCheckPolicy {\n const normalized = String(name || \"\")\n .trim()\n .toLowerCase();\n if (normalized !== \"internal-readonly\") {\n throw deps.makeCliError(\n \"CLI_INVALID_OPTION\",\n `Unknown --policy-preset: ${name} (expected internal-readonly)`,\n { label: \"--policy-preset\", value: name, allowed: [\"internal-readonly\"] },\n );\n }\n return {\n schema_version: \"xapps.ai.policy.v1\",\n require_read_only: true,\n max_actions: 16,\n allow_action_kinds: [\n \"analyze.manifest\",\n \"suggest.flow_checks\",\n \"analyze.renderers\",\n \"suggest.renderer_checks\",\n \"suggest.manifest_patch\",\n \"suggest.context_refresh\",\n \"suggest.ai_policy_check\",\n \"suggest.flow_run\",\n ],\n };\n}\n\nexport async function runAiPlanCommand(args: CliArgsLike, deps: AiCommandDeps) {\n const subcommand = deps.argString(args, \"_subcommand\");\n if (subcommand !== \"plan\") {\n throw deps.makeCliError(\"CLI_INVALID_ARGS\", \"Missing required subcommand: ai plan|check\");\n }\n const mode = parseAiMode(args, deps);\n const from = deps.argString(args, \"from\");\n if (!from) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Missing required argument: --from <manifest.json>\",\n );\n }\n const repoRoot = deps.findRepoRoot();\n if (!repoRoot) {\n throw deps.makeCliError(\"CLI_REPO_NOT_FOUND\", \"Could not locate repo root for xapps ai plan\");\n }\n const { manifest, filePath } = deps.parseManifestFromFile(from);\n const mockAssets = listMockAssets(filePath, args, deps);\n const guidance = await readAiGuidanceInteractiveIfRequested(args, deps);\n const context = deps.buildContextExportPayload(manifest, filePath);\n const refs = deps.buildDevRefs(repoRoot);\n const rendererFamilies = detectPlanRendererFamilies(manifest);\n const preset = deps.argString(args, \"preset\");\n let presetPayload: Record<string, unknown> | undefined;\n if (preset) {\n const normalizedPreset = preset.trim().toLowerCase();\n if (normalizedPreset !== \"internal-v1\") {\n throw deps.makeCliError(\n \"CLI_INVALID_OPTION\",\n `Invalid --preset: ${preset} (expected internal-v1)`,\n {\n label: \"--preset\",\n value: preset,\n },\n );\n }\n presetPayload = deps.buildInternalV1ContextPreset(repoRoot);\n }\n const flow = deps.argString(args, \"flow\");\n const normalizedFlow = flow ? flow.trim().toLowerCase() : undefined;\n const supportedFlows = new Set([\"pay-per-request\", \"guard-orchestration\", \"xplace-certs\"]);\n if (normalizedFlow && !supportedFlows.has(normalizedFlow)) {\n throw deps.makeCliError(\"CLI_INVALID_OPTION\", `Unknown --flow: ${flow}`, {\n label: \"--flow\",\n value: flow,\n allowed: Array.from(supportedFlows),\n });\n }\n\n const actions: Array<Record<string, unknown>> = [\n {\n kind: \"analyze.manifest\",\n status: \"proposed\",\n description: \"Review manifest/tools/widgets against V1 baseline contracts\",\n },\n {\n kind: \"suggest.flow_checks\",\n status: \"proposed\",\n flows: [\"pay-per-request\", \"guard-orchestration\", \"xplace-certs\"],\n },\n {\n kind: \"analyze.renderers\",\n status: \"proposed\",\n renderers: rendererFamilies,\n description:\n \"Classify widget renderer families and map to V1 checks (publisher-rendered, jsonforms, platform)\",\n },\n ];\n if (rendererFamilies.includes(\"jsonforms\")) {\n actions.push({\n kind: \"suggest.renderer_checks\",\n status: \"proposed\",\n renderer: \"jsonforms\",\n command:\n \"npm test -- src/__tests__/jsonformsEmbed.test.ts src/__tests__/jsonformsStepDispatch.test.ts src/__tests__/jsonformsFiles.test.ts\",\n });\n }\n if (rendererFamilies.includes(\"publisher-rendered\")) {\n actions.push({\n kind: \"suggest.renderer_checks\",\n status: \"proposed\",\n renderer: \"publisher-rendered\",\n command:\n \"npm test -- src/__tests__/embedWidgets.test.ts src/__tests__/guardContractParity.test.ts src/__tests__/integrationHostGuardContracts.test.ts\",\n });\n }\n if (presetPayload) {\n actions.push({\n kind: \"suggest.context_refresh\",\n status: \"proposed\",\n command: `xapps context export --from ${filePath} --preset internal-v1`,\n });\n actions.push({\n kind: \"suggest.ai_policy_check\",\n status: \"proposed\",\n command: \"xapps ai check --mode internal --plan <plan.json> --policy <policy.json> --json\",\n });\n }\n if (normalizedFlow) {\n actions.push({\n kind: \"suggest.flow_run\",\n status: \"proposed\",\n flow: normalizedFlow,\n command: `xapps dev check flow --name ${normalizedFlow} --run --json`,\n });\n }\n const heuristicManifestPatchHints = buildManifestPatchHints(manifest, mockAssets, guidance);\n let manifestPatchHints = heuristicManifestPatchHints;\n let llmInfo:\n | {\n provider: string;\n model: string;\n enabled: true;\n used: boolean;\n }\n | undefined;\n if (deps.argFlag(args, \"llm\")) {\n llmInfo = { provider: \"openai-compatible\", model: \"unknown\", enabled: true, used: false };\n try {\n const llmHints = await buildLlmManifestPatchHints(manifest, mockAssets, guidance, args, deps);\n llmInfo = {\n provider: llmHints.provider,\n model: llmHints.model,\n enabled: true,\n used: true,\n };\n if (llmHints.hints.length > 0) {\n const hasImageMocks = mockAssets.some((m) => m.kind === \"image\");\n const completeness = evaluateLlmHintCompleteness(llmHints.hints, {\n requireInputSchema: hasImageMocks,\n requireInputUiSchema: hasImageMocks,\n });\n if (!completeness.ok && hasImageMocks) {\n (heuristicManifestPatchHints as any).__llm_error =\n `LLM hints incomplete for image mocks (missing: ${completeness.missing.join(\", \")})`;\n } else {\n manifestPatchHints = llmHints.hints;\n }\n }\n } catch (err: any) {\n // Preserve deterministic plan output with a warning + fallback heuristic hints.\n const msg = String(err?.message || err || \"LLM manifest hint generation failed\");\n llmInfo = {\n ...(llmInfo || { provider: \"openai-compatible\", model: \"unknown\", enabled: true }),\n used: false,\n };\n (manifestPatchHints as any).__llm_error = msg;\n }\n }\n if (manifestPatchHints.length > 0) {\n actions.push({\n kind: \"suggest.manifest_patch\",\n status: \"proposed\",\n target: \"manifest.json\",\n description:\n \"Mock-aware JSON Forms manifest upgrade hints (stepper wizard + preview sections) generated for review\",\n hints: manifestPatchHints,\n ...(llmInfo\n ? {\n source: llmInfo.used ? \"llm\" : \"heuristic_fallback\",\n llm: llmInfo,\n }\n : { source: \"heuristic\" }),\n ...(((manifestPatchHints as any).__llm_error as string | undefined)\n ? { llm_error: (manifestPatchHints as any).__llm_error }\n : {}),\n });\n }\n\n const payload: AiPlanPayload = {\n schema_version: \"xapps.ai.plan.v1\",\n ok: true,\n mode,\n read_only: true,\n source: {\n manifest_path: filePath,\n manifest_sha256:\n context &&\n isPlainObject(context.source) &&\n typeof context.source.manifest_sha256 === \"string\"\n ? context.source.manifest_sha256\n : undefined,\n },\n context: {\n summary: isPlainObject(context.summary) ? (context.summary as Record<string, unknown>) : {},\n refs,\n ...(guidance\n ? {\n ai_inputs: {\n guidance,\n },\n }\n : {}),\n ...(mockAssets.length > 0\n ? {\n mock_assets: {\n count: mockAssets.length,\n kinds: Array.from(new Set(mockAssets.map((item) => item.kind))).sort(),\n items: mockAssets,\n },\n }\n : {}),\n ...(llmInfo ? { llm: llmInfo } : {}),\n ...(presetPayload ? { preset: presetPayload } : {}),\n },\n actions,\n warnings: [\n ...(refs.every((ref) => ref.exists) ? [] : [\"Some internal engineering refs are missing\"]),\n ...(((manifestPatchHints as any).__llm_error as string | undefined)\n ? [\n `LLM manifest hint generation failed, heuristic fallback used: ${(manifestPatchHints as any).__llm_error}`,\n ]\n : []),\n ],\n errors: [],\n };\n if (normalizedFlow) (payload as any).flow = normalizedFlow;\n (payload as any).coverage = {\n renderers: rendererFamilies,\n flows_supported: Array.from(supportedFlows.values()),\n flow_selected: normalizedFlow || null,\n preset_selected: presetPayload ? \"internal-v1\" : null,\n };\n\n if (deps.argFlag(args, \"apply-manifest-hints\")) {\n const patchAction = actions.find((a) => a.kind === \"suggest.manifest_patch\");\n const hints = Array.isArray((patchAction as any)?.hints)\n ? (((patchAction as any).hints as unknown[]).filter((h) => isPlainObject(h)) as Array<\n Record<string, unknown>\n >)\n : [];\n if (!hints.length) {\n (payload as any).manifest_apply = {\n applied: true,\n changed: false,\n file: filePath,\n applied_count: 0,\n summaries: [\"skip: no manifest patch hints available\"],\n diff: \"(no changes)\",\n };\n } else {\n (payload as any).manifest_apply = applyManifestPatchHintsToFile(filePath, manifest, hints);\n }\n }\n\n const outPath = deps.argString(args, \"out\");\n const rendered = `${JSON.stringify(payload, null, 2)}\\n`;\n if (outPath) {\n const target = path.resolve(process.cwd(), outPath);\n fs.mkdirSync(path.dirname(target), { recursive: true });\n fs.writeFileSync(target, rendered);\n console.log(`AI plan exported: ${target}`);\n return;\n }\n if (deps.argFlag(args, \"json\")) {\n console.log(rendered.trimEnd());\n return;\n }\n if ((payload as any).manifest_apply) {\n const apply = (payload as any).manifest_apply as Record<string, unknown>;\n console.log(\n [\n \"Manifest hints apply:\",\n `File: ${String(apply.file || filePath)}`,\n `Changed: ${String(Boolean(apply.changed))}`,\n `Applied hints: ${String(apply.applied_count || 0)}`,\n ...(Array.isArray(apply.summaries)\n ? (apply.summaries as unknown[]).map((s) => `- ${String(s)}`)\n : []),\n \"Diff:\",\n String(apply.diff || \"(no diff)\"),\n \"\",\n ].join(\"\\n\"),\n );\n }\n console.log(\n [\n `AI plan (${mode}, read-only)`,\n `Manifest: ${payload.source.manifest_path}`,\n `Slug: ${String(payload.context.summary.slug || \"n/a\")}`,\n `Proposed actions: ${payload.actions.length}`,\n ].join(\"\\n\"),\n );\n}\n\nexport function runAiCheckCommand(args: CliArgsLike, deps: AiCommandDeps) {\n const subcommand = deps.argString(args, \"_subcommand\");\n if (subcommand !== \"check\") {\n throw deps.makeCliError(\"CLI_INVALID_ARGS\", \"Missing required subcommand: ai plan|check\");\n }\n const mode = parseAiMode(args, deps);\n const planFile = deps.argString(args, \"plan\");\n if (!planFile) {\n throw deps.makeCliError(\"CLI_INVALID_ARGS\", \"Missing required argument: --plan <plan.json>\");\n }\n const payload = deps.readJsonFile(planFile);\n const policyFile = deps.argString(args, \"policy\");\n const policyPreset = deps.argString(args, \"policy-preset\");\n if (policyFile && policyPreset) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Use either --policy <policy.json> or --policy-preset <name>, not both\",\n );\n }\n let policy: AiCheckPolicy | null = null;\n if (policyFile) {\n policy = parseAiCheckPolicy(deps.readJsonFile(policyFile), policyFile, deps);\n } else if (policyPreset) {\n policy = buildAiCheckPolicyPreset(policyPreset, deps);\n }\n\n const checks: Array<{ key: string; ok: boolean; details?: Record<string, unknown> }> = [];\n const plan = isPlainObject(payload) ? payload : {};\n checks.push({\n key: \"schema_version\",\n ok: plan.schema_version === \"xapps.ai.plan.v1\",\n details: { actual: plan.schema_version || null },\n });\n checks.push({\n key: \"mode\",\n ok: plan.mode === mode,\n details: { actual: plan.mode || null, expected: mode },\n });\n checks.push({\n key: \"read_only\",\n ok: plan.read_only === true,\n details: { actual: plan.read_only ?? null },\n });\n checks.push({\n key: \"actions_array\",\n ok: Array.isArray(plan.actions),\n details: { actualType: Array.isArray(plan.actions) ? \"array\" : typeof plan.actions },\n });\n\n if (policy) {\n const requireReadOnly = policy.require_read_only !== false;\n checks.push({\n key: \"policy_require_read_only\",\n ok: !requireReadOnly || plan.read_only === true,\n details: { required: requireReadOnly, actual: plan.read_only ?? null },\n });\n if (typeof policy.max_actions === \"number\" && Number.isFinite(policy.max_actions)) {\n const actionCount = Array.isArray(plan.actions) ? plan.actions.length : 0;\n checks.push({\n key: \"policy_max_actions\",\n ok: actionCount <= policy.max_actions,\n details: { max_actions: policy.max_actions, actual: actionCount },\n });\n }\n if (Array.isArray(policy.allow_action_kinds)) {\n const allowed = new Set(\n policy.allow_action_kinds\n .filter((item): item is string => typeof item === \"string\")\n .map((item) => item.trim())\n .filter(Boolean),\n );\n const disallowedKinds = Array.isArray(plan.actions)\n ? plan.actions\n .filter((item): item is Record<string, unknown> => isPlainObject(item))\n .map((item) => String(item.kind || \"\").trim())\n .filter((kind) => kind && !allowed.has(kind))\n : [];\n checks.push({\n key: \"policy_allow_action_kinds\",\n ok: disallowedKinds.length === 0,\n details: { disallowed_kinds: disallowedKinds },\n });\n }\n }\n\n const result = {\n schema_version: \"xapps.ai.check.v1\",\n ok: checks.every((check) => check.ok),\n mode,\n read_only: true,\n checks,\n errors: checks\n .filter((check) => !check.ok)\n .map((check) => ({ code: \"CLI_AI_PLAN_INVALID\", check: check.key })),\n ...(policy\n ? {\n policy: {\n applied: true,\n ...(policyFile ? { source: path.resolve(process.cwd(), policyFile) } : {}),\n ...(policyPreset ? { preset: String(policyPreset).trim().toLowerCase() } : {}),\n },\n }\n : {}),\n };\n const outPath = deps.argString(args, \"out\");\n const rendered = `${JSON.stringify(result, null, 2)}\\n`;\n if (outPath) {\n const target = path.resolve(process.cwd(), outPath);\n fs.mkdirSync(path.dirname(target), { recursive: true });\n fs.writeFileSync(target, rendered);\n console.log(`AI check exported: ${target}`);\n } else if (deps.argFlag(args, \"json\")) {\n console.log(rendered.trimEnd());\n } else {\n console.log(\n [\n `AI check (${mode}) ${result.ok ? \"PASS\" : \"FAIL\"}`,\n ...checks.map((check) => `${check.ok ? \"OK\" : \"FAIL\"} ${check.key}`),\n ].join(\"\\n\"),\n );\n }\n if (!result.ok) {\n throw deps.makeCliError(\"CLI_AI_PLAN_INVALID\", \"xapps ai check failed: invalid plan contract\", {\n checks,\n });\n }\n}\n", "import { createPublisherApiClient, PublisherApiClientError } from \"../../server-sdk/src/index.js\";\nimport fs from \"node:fs\";\n\ntype CliArgs = Record<string, string | boolean>;\n\ntype CliErrorFactory = (code: string, message: string, details?: Record<string, unknown>) => Error;\n\ntype PublisherCommandDeps = {\n argString: (args: CliArgs, ...keys: string[]) => string | undefined;\n argFlag: (args: CliArgs, key: string) => boolean;\n makeCliError: CliErrorFactory;\n};\n\nfunction normalizePublisherGatewayApiBaseUrl(input: string): string {\n const raw = String(input || \"\").trim();\n if (!raw) return \"\";\n const parsed = new URL(raw);\n const pathname = parsed.pathname || \"/\";\n if (pathname === \"/\" || pathname === \"\") {\n parsed.pathname = \"/v1\";\n }\n return parsed.toString().replace(/\\/+$/g, \"\");\n}\n\nfunction parseHttpUrlOrThrow(value: string, flagName: string): string {\n const trimmed = String(value || \"\").trim();\n if (!trimmed) throw new Error(`Invalid ${flagName}: empty`);\n try {\n const url = new URL(trimmed);\n if (!/^https?:$/.test(url.protocol)) {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n return url.toString();\n } catch (err: any) {\n throw new Error(`Invalid ${flagName}: ${err?.message || String(err)}`);\n }\n}\n\nfunction resolveSecretInput(\n args: CliArgs,\n deps: PublisherCommandDeps,\n): {\n secret?: string;\n secretRef?: string;\n source: \"env\" | \"stdin\" | \"secret_ref\";\n sourceName?: string;\n} {\n const secretRef = deps.argString(args, \"secret-ref\");\n const secretEnvName = deps.argString(args, \"secret-env\");\n const secretStdin = deps.argFlag(args, \"secret-stdin\");\n const selected = [Boolean(secretRef), Boolean(secretEnvName), Boolean(secretStdin)].filter(\n Boolean,\n ).length;\n if (selected !== 1) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Provide exactly one of --secret-ref, --secret-env, or --secret-stdin\",\n );\n }\n if (secretRef) {\n return { secretRef, source: \"secret_ref\" };\n }\n if (secretEnvName) {\n const envValue = String(process.env[secretEnvName] || \"\");\n if (!envValue.trim()) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n `Environment variable is empty or missing for --secret-env ${secretEnvName}`,\n );\n }\n return { secret: envValue, source: \"env\", sourceName: secretEnvName };\n }\n // Read from fd 0 synchronously to keep CLI code simple/deterministic for scripts.\n const secret = fs.readFileSync(0, \"utf8\");\n if (!String(secret || \"\").trim()) {\n throw deps.makeCliError(\"CLI_INVALID_ARGS\", \"--secret-stdin provided but stdin is empty\");\n }\n return { secret, source: \"stdin\" };\n}\n\nfunction pickLatestVersion(items: Array<Record<string, unknown>>): Record<string, unknown> | null {\n if (!Array.isArray(items) || items.length === 0) return null;\n const published = items.filter((v) => String((v as any).status || \"\") === \"published\");\n const target = published.length > 0 ? published : items;\n return [...target].sort((a, b) =>\n String((b as any).published_at || (b as any).created_at || \"\").localeCompare(\n String((a as any).published_at || (a as any).created_at || \"\"),\n ),\n )[0] as Record<string, unknown>;\n}\n\nasync function resolveEndpointIdOrThrow(\n args: CliArgs,\n deps: PublisherCommandDeps,\n client: ReturnType<typeof createPublisherApiClient>,\n): Promise<{ endpointId: string; endpointEnv: string; xappSlug?: string }> {\n const endpointIdArg = deps.argString(args, \"endpoint-id\");\n const xappSlug = deps.argString(args, \"xapp-slug\");\n const targetClientSlug = deps.argString(args, \"target-client-slug\", \"target_client_slug\");\n const endpointEnv = deps.argString(args, \"env\") || \"prod\";\n if (endpointIdArg) {\n return { endpointId: endpointIdArg, endpointEnv, ...(xappSlug ? { xappSlug } : {}) };\n }\n if (!xappSlug) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Provide --endpoint-id or (--xapp-slug and optional --env)\",\n );\n }\n let targetClientId = \"\";\n if (targetClientSlug) {\n const clients = await client.listClients();\n const matches = (clients.items || []).filter(\n (item) => String((item as any).slug || \"\") === targetClientSlug,\n );\n if (matches.length === 0) {\n throw deps.makeCliError(\n \"CLI_NOT_FOUND\",\n `Publisher client not found for slug=${targetClientSlug}`,\n );\n }\n if (matches.length > 1) {\n throw deps.makeCliError(\n \"CLI_CONFLICT\",\n `Publisher client slug matched multiple rows: ${targetClientSlug}`,\n );\n }\n targetClientId = String((matches[0] as any).id || \"\").trim();\n if (!targetClientId) {\n throw deps.makeCliError(\n \"CLI_INVALID_RESPONSE\",\n `Resolved client id is missing for slug=${targetClientSlug}`,\n );\n }\n }\n const xapps = await client.listXapps();\n const candidates = (xapps.items || []).filter((item) => {\n if (String((item as any).slug || \"\") !== xappSlug) return false;\n if (!targetClientId) return true;\n return String((item as any).target_client_id || \"\") === targetClientId;\n });\n if (candidates.length === 0) {\n throw deps.makeCliError(\n \"CLI_NOT_FOUND\",\n targetClientId\n ? `Publisher xapp not found for slug=${xappSlug} target_client_slug=${targetClientSlug}`\n : `Publisher xapp not found for slug=${xappSlug}`,\n );\n }\n if (candidates.length > 1) {\n throw deps.makeCliError(\n \"CLI_CONFLICT\",\n targetClientId\n ? `Multiple publisher xapps matched slug=${xappSlug} target_client_slug=${targetClientSlug}`\n : `Multiple publisher xapps matched slug=${xappSlug}; pass --target-client-slug`,\n );\n }\n const xapp = candidates[0] as Record<string, unknown>;\n if (!String((xapp as any).id || \"\")) {\n throw deps.makeCliError(\"CLI_NOT_FOUND\", `Publisher xapp not found for slug=${xappSlug}`);\n }\n const versions = await client.listXappVersions(String((xapp as any).id));\n const version = pickLatestVersion(versions.items as Array<Record<string, unknown>>);\n if (!version || !String((version as any).id || \"\")) {\n throw deps.makeCliError(\n \"CLI_NOT_FOUND\",\n `No publisher xapp versions found for slug=${xappSlug}`,\n );\n }\n const endpoints = await client.listEndpoints(String((version as any).id));\n const endpoint = endpoints.items.find(\n (item) => String((item as any).env || \"\").trim() === endpointEnv,\n );\n if (!endpoint || !String((endpoint as any).id || \"\")) {\n throw deps.makeCliError(\n \"CLI_NOT_FOUND\",\n `Endpoint not found for xapp=${xappSlug} env=${endpointEnv}`,\n );\n }\n return { endpointId: String((endpoint as any).id), endpointEnv, xappSlug };\n}\n\nfunction normalizeAuthTypeForMatch(input: unknown): string {\n const raw = String(input || \"\")\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]/g, \"\");\n if (!raw) return \"\";\n if (raw === \"none\") return \"none\";\n if (raw.includes(\"api\") && raw.includes(\"key\")) return \"api_key_header\";\n if (raw === \"header\") return \"header\";\n if (raw === \"hmac\" || raw === \"hmacsha256\") return \"hmac\";\n return raw;\n}\n\nfunction readCredentialHeaderName(item: Record<string, unknown>): string {\n const direct = (item as any).auth_header_name;\n if (typeof direct === \"string\" && direct.trim()) return direct.trim();\n const configRaw = (item as any).config ?? (item as any).config_jsonb;\n const cfg =\n configRaw && typeof configRaw === \"string\"\n ? (() => {\n try {\n return JSON.parse(configRaw);\n } catch {\n return null;\n }\n })()\n : configRaw;\n if (cfg && typeof cfg === \"object\") {\n const header = (cfg as any).headerName ?? (cfg as any).header_name;\n if (typeof header === \"string\" && header.trim()) return header.trim();\n }\n return \"\";\n}\n\nfunction findMatchingEndpointCredential(\n items: Array<Record<string, unknown>>,\n input: { authType: string; headerName: string },\n): Record<string, unknown> | null {\n const wantAuth = normalizeAuthTypeForMatch(input.authType);\n const wantHeader = String(input.headerName || \"\")\n .trim()\n .toLowerCase();\n for (const item of items) {\n const authMatch = normalizeAuthTypeForMatch((item as any).auth_type) === wantAuth;\n if (!authMatch) continue;\n if (wantAuth === \"api_key_header\" || wantAuth === \"header\") {\n const existingHeader = readCredentialHeaderName(item).toLowerCase();\n if (wantHeader && existingHeader !== wantHeader) continue;\n }\n return item;\n }\n return null;\n}\n\nexport async function runPublisherEndpointCredentialSetCommand(\n args: CliArgs,\n deps: PublisherCommandDeps,\n) {\n const gatewayUrlRaw =\n deps.argString(args, \"gateway-url\", \"publisher-gateway-url\") ||\n process.env.XAPPS_CLI_PUBLISHER_GATEWAY_URL;\n if (!gatewayUrlRaw) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Missing required argument: --gateway-url <url> (or --publisher-gateway-url)\",\n );\n }\n const gatewayUrl = normalizePublisherGatewayApiBaseUrl(\n parseHttpUrlOrThrow(gatewayUrlRaw, \"--gateway-url\"),\n );\n const apiKey = deps.argString(args, \"api-key\", \"apiKey\") || process.env.XAPPS_CLI_API_KEY || \"\";\n const token = deps.argString(args, \"token\") || process.env.XAPPS_CLI_TOKEN || \"\";\n if (!apiKey && !token) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Missing auth: provide --api-key or --token (or XAPPS_CLI_API_KEY/XAPPS_CLI_TOKEN)\",\n );\n }\n\n let endpointId = \"\";\n\n const authType = deps.argString(args, \"auth-type\") || \"api-key\";\n const headerName = deps.argString(args, \"header-name\") || \"x-xplace-api-key\";\n const keyStatus = deps.argString(args, \"key-status\") || \"active\";\n const keyAlgorithm = deps.argString(args, \"key-algorithm\") || \"hmac-sha256\";\n const secretInput = resolveSecretInput(args, deps);\n\n const client = createPublisherApiClient({ baseUrl: gatewayUrl, apiKey, token });\n\n try {\n endpointId = (await resolveEndpointIdOrThrow(args, deps, client)).endpointId;\n\n const result = await client.createEndpointCredential(endpointId, {\n authType,\n config: {\n headerName,\n },\n initialKey: {\n ...(secretInput.secret ? { secret: secretInput.secret } : {}),\n ...(secretInput.secretRef ? { secretRef: secretInput.secretRef } : {}),\n status: keyStatus,\n algorithm: keyAlgorithm,\n },\n });\n\n const credential = (result as any).credential || {};\n const output = {\n ok: true,\n gateway_url: gatewayUrl,\n endpoint_id: endpointId,\n auth_type: String((credential as any).auth_type || authType),\n credential_id: String((credential as any).id || \"\"),\n active_kid: String((credential as any).active_kid || \"\"),\n secret_source: secretInput.source,\n ...(secretInput.sourceName ? { secret_env: secretInput.sourceName } : {}),\n header_name: headerName,\n };\n if (deps.argFlag(args, \"json\")) {\n console.log(JSON.stringify(output, null, 2));\n return;\n }\n console.log(\n `Publisher endpoint credential set: endpoint=${output.endpoint_id} credential=${output.credential_id || \"-\"} auth=${output.auth_type} header=${output.header_name} secret_source=${output.secret_source}`,\n );\n } catch (err: any) {\n if (err instanceof PublisherApiClientError) {\n throw deps.makeCliError(\n `CLI_${err.code}`,\n `Publisher endpoint credential set failed: ${err.message}`,\n { status: err.status, details: err.details, gateway_url: gatewayUrl },\n );\n }\n throw err;\n }\n}\n\nexport async function runPublisherEndpointCredentialEnsureCommand(\n args: CliArgs,\n deps: PublisherCommandDeps,\n) {\n const gatewayUrlRaw =\n deps.argString(args, \"gateway-url\", \"publisher-gateway-url\") ||\n process.env.XAPPS_CLI_PUBLISHER_GATEWAY_URL;\n if (!gatewayUrlRaw) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Missing required argument: --gateway-url <url> (or --publisher-gateway-url)\",\n );\n }\n const gatewayUrl = normalizePublisherGatewayApiBaseUrl(\n parseHttpUrlOrThrow(gatewayUrlRaw, \"--gateway-url\"),\n );\n const apiKey = deps.argString(args, \"api-key\", \"apiKey\") || process.env.XAPPS_CLI_API_KEY || \"\";\n const token = deps.argString(args, \"token\") || process.env.XAPPS_CLI_TOKEN || \"\";\n if (!apiKey && !token) {\n throw deps.makeCliError(\n \"CLI_INVALID_ARGS\",\n \"Missing auth: provide --api-key or --token (or XAPPS_CLI_API_KEY/XAPPS_CLI_TOKEN)\",\n );\n }\n\n const authType = deps.argString(args, \"auth-type\") || \"api-key\";\n const headerName = deps.argString(args, \"header-name\") || \"x-xplace-api-key\";\n const keyStatus = deps.argString(args, \"key-status\") || \"active\";\n const keyAlgorithm = deps.argString(args, \"key-algorithm\") || \"hmac-sha256\";\n\n const client = createPublisherApiClient({ baseUrl: gatewayUrl, apiKey, token });\n\n try {\n const resolved = await resolveEndpointIdOrThrow(args, deps, client);\n const endpointId = resolved.endpointId;\n const existing = await client.listEndpointCredentials(endpointId);\n const match = findMatchingEndpointCredential(existing.items as Array<Record<string, unknown>>, {\n authType,\n headerName,\n });\n if (match) {\n const output = {\n ok: true,\n ensured: true,\n created: false,\n gateway_url: gatewayUrl,\n endpoint_id: endpointId,\n credential_id: String((match as any).id || \"\"),\n auth_type: String((match as any).auth_type || authType),\n header_name: readCredentialHeaderName(match) || headerName,\n active_kid: String((match as any).active_kid || \"\"),\n };\n if (deps.argFlag(args, \"json\")) {\n console.log(JSON.stringify(output, null, 2));\n return;\n }\n console.log(\n `Publisher endpoint credential ensure: endpoint=${output.endpoint_id} credential=${output.credential_id || \"-\"} auth=${output.auth_type} header=${output.header_name} outcome=existing`,\n );\n return;\n }\n\n const secretInput = resolveSecretInput(args, deps);\n const result = await client.createEndpointCredential(endpointId, {\n authType,\n config: {\n headerName,\n },\n initialKey: {\n ...(secretInput.secret ? { secret: secretInput.secret } : {}),\n ...(secretInput.secretRef ? { secretRef: secretInput.secretRef } : {}),\n status: keyStatus,\n algorithm: keyAlgorithm,\n },\n });\n const credential = (result as any).credential || {};\n const output = {\n ok: true,\n ensured: true,\n created: true,\n gateway_url: gatewayUrl,\n endpoint_id: endpointId,\n auth_type: String((credential as any).auth_type || authType),\n credential_id: String((credential as any).id || \"\"),\n active_kid: String((credential as any).active_kid || \"\"),\n secret_source: secretInput.source,\n ...(secretInput.sourceName ? { secret_env: secretInput.sourceName } : {}),\n header_name: headerName,\n };\n if (deps.argFlag(args, \"json\")) {\n console.log(JSON.stringify(output, null, 2));\n return;\n }\n console.log(\n `Publisher endpoint credential ensure: endpoint=${output.endpoint_id} credential=${output.credential_id || \"-\"} auth=${output.auth_type} header=${output.header_name} outcome=created secret_source=${output.secret_source}`,\n );\n } catch (err: any) {\n if (err instanceof PublisherApiClientError) {\n throw deps.makeCliError(\n `CLI_${err.code}`,\n `Publisher endpoint credential ensure failed: ${err.message}`,\n { status: err.status, details: err.details, gateway_url: gatewayUrl },\n );\n }\n throw err;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["str", "UsedValueState", "schema", "str", "Type", "schema", "schema", "type", "DataType", "schema", "types", "schema", "schema", "validate", "_a", "schema", "schema", "str", "schema", "schema", "types", "type", "env", "schema", "validate", "resolveSchema", "input", "output", "str", "path", "path", "http", "https", "str", "Ajv", "schema", "logger", "env", "core", "str", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "schema", "DiscrError", "schema", "Ajv", "validate", "str", "ajv", "ajv", "addFormats", "fs", "toString", "err", "toString", "err", "path", "path", "cloned", "str", "path", "str", "type", "sleep", "fs", "path", "sleep", "err", "n", "releasedBufObj", "FinalizationRegistry", "WeakRef", "createRequire", "sleep", "onExit", "fixTarget", "str", "stringify", "_", "bindings", "str", "value", "tmp", "key", "res", "join", "stringify", "streamLevels", "os", "pino", "serializers", "timestamp", "time", "require_package", "fs", "path", "os", "fs", "createHash", "http", "path", "readline", "input", "input", "import_pino", "createRequire", "require", "pino", "dotenv", "require", "createRequire", "prettyUnavailableWarningEmitted", "resolvePrettyTransportTarget", "pino", "input", "templateResolved", "input", "templateResolved", "path", "input", "AjvImport", "addFormatsImport", "path", "input", "fs", "fs", "path", "isPlainObject", "fs", "path", "exception", "map", "schema", "type", "extend", "input", "str", "string", "isRecord", "schema", "input", "isPlainObject", "type", "schema", "path", "fs", "fs", "http", "path", "type", "path", "fs", "path", "isPlainObject", "path", "fs", "isBinary", "targetEls", "before", "fs", "input", "output", "path", "fs", "buildDevFlowInitTemplate", "type", "http", "path", "shellEscapeArg", "input", "normalizePublisherGatewayApiBaseUrl", "fs", "isPlainObject", "readline", "parseHttpUrlOrThrow", "createHash", "json", "leaseId", "checkpoint", "http"]
7
+ }