@schmock/validation 1.1.0 → 1.2.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.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -100
- package/package.json +3 -3
- package/src/index.ts +2 -3
- package/src/steps/validation-plugin.steps.ts +27 -0
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,UAAU,eAAe;IACvB,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,OAAO,CAAC,EAAE,WAAW,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,WAAW,CAAC;KACpB,CAAC;CACH;AAED,UAAU,uBAAwB,SAAQ,eAAe;IACvD,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,MAAM,CAiHhB"}
|
package/dist/index.js
CHANGED
|
@@ -1,100 +1,8 @@
|
|
|
1
|
-
/// <reference path="../../../types/schmock.d.ts" />
|
|
2
|
-
import Ajv from "ajv";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const responseErrorStatus = options.responseErrorStatus ?? 500;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const validators = {};
|
|
9
|
-
if (options.request?.body) {
|
|
10
|
-
validators.requestBody = ajv.compile(options.request.body);
|
|
11
|
-
}
|
|
12
|
-
if (options.request?.query) {
|
|
13
|
-
validators.requestQuery = ajv.compile(options.request.query);
|
|
14
|
-
}
|
|
15
|
-
if (options.request?.headers) {
|
|
16
|
-
validators.requestHeaders = ajv.compile(options.request.headers);
|
|
17
|
-
}
|
|
18
|
-
if (options.response?.body) {
|
|
19
|
-
validators.responseBody = ajv.compile(options.response.body);
|
|
20
|
-
}
|
|
21
|
-
return {
|
|
22
|
-
name: "validation",
|
|
23
|
-
version: "1.0.0",
|
|
24
|
-
process(context, response) {
|
|
25
|
-
// Validate request body (skip when no body provided, e.g. GET requests)
|
|
26
|
-
if (validators.requestBody && context.body !== undefined) {
|
|
27
|
-
if (!validators.requestBody(context.body)) {
|
|
28
|
-
return {
|
|
29
|
-
context,
|
|
30
|
-
response: {
|
|
31
|
-
status: requestErrorStatus,
|
|
32
|
-
body: {
|
|
33
|
-
error: "Request validation failed",
|
|
34
|
-
code: "REQUEST_VALIDATION_ERROR",
|
|
35
|
-
details: validators.requestBody.errors,
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
// Validate request query parameters
|
|
42
|
-
if (validators.requestQuery && context.query) {
|
|
43
|
-
if (!validators.requestQuery(context.query)) {
|
|
44
|
-
return {
|
|
45
|
-
context,
|
|
46
|
-
response: {
|
|
47
|
-
status: requestErrorStatus,
|
|
48
|
-
body: {
|
|
49
|
-
error: "Query parameter validation failed",
|
|
50
|
-
code: "QUERY_VALIDATION_ERROR",
|
|
51
|
-
details: validators.requestQuery.errors,
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
// Validate request headers
|
|
58
|
-
if (validators.requestHeaders && context.headers) {
|
|
59
|
-
// Lowercase all header names for comparison
|
|
60
|
-
const normalizedHeaders = {};
|
|
61
|
-
for (const [key, value] of Object.entries(context.headers)) {
|
|
62
|
-
normalizedHeaders[key.toLowerCase()] = value;
|
|
63
|
-
}
|
|
64
|
-
if (!validators.requestHeaders(normalizedHeaders)) {
|
|
65
|
-
return {
|
|
66
|
-
context,
|
|
67
|
-
response: {
|
|
68
|
-
status: requestErrorStatus,
|
|
69
|
-
body: {
|
|
70
|
-
error: "Header validation failed",
|
|
71
|
-
code: "HEADER_VALIDATION_ERROR",
|
|
72
|
-
details: validators.requestHeaders.errors,
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
// Validate response body (if response exists)
|
|
79
|
-
if (validators.responseBody && response !== undefined) {
|
|
80
|
-
// Unwrap tuple responses: [status, body] or [status, body, headers]
|
|
81
|
-
const isTuple = Array.isArray(response) && typeof response[0] === "number";
|
|
82
|
-
const responseBody = isTuple ? response[1] : response;
|
|
83
|
-
if (!validators.responseBody(responseBody)) {
|
|
84
|
-
return {
|
|
85
|
-
context,
|
|
86
|
-
response: {
|
|
87
|
-
status: responseErrorStatus,
|
|
88
|
-
body: {
|
|
89
|
-
error: "Response validation failed",
|
|
90
|
-
code: "RESPONSE_VALIDATION_ERROR",
|
|
91
|
-
details: validators.responseBody.errors,
|
|
92
|
-
},
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return { context, response };
|
|
98
|
-
},
|
|
99
|
-
};
|
|
100
|
-
}
|
|
1
|
+
var rZ=Object.create;var{getPrototypeOf:sZ,defineProperty:S4,getOwnPropertyNames:aZ}=Object;var tZ=Object.prototype.hasOwnProperty;var oZ=(Q,Y,Z)=>{Z=Q!=null?rZ(sZ(Q)):{};let X=Y||!Q||!Q.__esModule?S4(Z,"default",{value:Q,enumerable:!0}):Z;for(let W of aZ(Q))if(!tZ.call(X,W))S4(X,W,{get:()=>Q[W],enumerable:!0});return X};var A=(Q,Y)=>()=>(Y||Q((Y={exports:{}}).exports,Y),Y.exports);var w0=A((v4)=>{Object.defineProperty(v4,"__esModule",{value:!0});v4.regexpCode=v4.getEsmExportName=v4.getProperty=v4.safeStringify=v4.stringify=v4.strConcat=v4.addCodeArg=v4.str=v4._=v4.nil=v4._Code=v4.Name=v4.IDENTIFIER=v4._CodeOrName=void 0;class s0{}v4._CodeOrName=s0;v4.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class L0 extends s0{constructor(Q){super();if(!v4.IDENTIFIER.test(Q))throw Error("CodeGen: name must be a valid identifier");this.str=Q}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}v4.Name=L0;class i extends s0{constructor(Q){super();this._items=typeof Q==="string"?[Q]:Q}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let Q=this._items[0];return Q===""||Q==='""'}get str(){var Q;return(Q=this._str)!==null&&Q!==void 0?Q:this._str=this._items.reduce((Y,Z)=>`${Y}${Z}`,"")}get names(){var Q;return(Q=this._names)!==null&&Q!==void 0?Q:this._names=this._items.reduce((Y,Z)=>{if(Z instanceof L0)Y[Z.str]=(Y[Z.str]||0)+1;return Y},{})}}v4._Code=i;v4.nil=new i("");function C4(Q,...Y){let Z=[Q[0]],X=0;while(X<Y.length)x1(Z,Y[X]),Z.push(Q[++X]);return new i(Z)}v4._=C4;var f1=new i("+");function k4(Q,...Y){let Z=[R0(Q[0])],X=0;while(X<Y.length)Z.push(f1),x1(Z,Y[X]),Z.push(f1,R0(Q[++X]));return $5(Z),new i(Z)}v4.str=k4;function x1(Q,Y){if(Y instanceof i)Q.push(...Y._items);else if(Y instanceof L0)Q.push(Y);else Q.push(z5(Y))}v4.addCodeArg=x1;function $5(Q){let Y=1;while(Y<Q.length-1){if(Q[Y]===f1){let Z=G5(Q[Y-1],Q[Y+1]);if(Z!==void 0){Q.splice(Y-1,3,Z);continue}Q[Y++]="+"}Y++}}function G5(Q,Y){if(Y==='""')return Q;if(Q==='""')return Y;if(typeof Q=="string"){if(Y instanceof L0||Q[Q.length-1]!=='"')return;if(typeof Y!="string")return`${Q.slice(0,-1)}${Y}"`;if(Y[0]==='"')return Q.slice(0,-1)+Y.slice(1);return}if(typeof Y=="string"&&Y[0]==='"'&&!(Q instanceof L0))return`"${Q}${Y.slice(1)}`;return}function J5(Q,Y){return Y.emptyStr()?Q:Q.emptyStr()?Y:k4`${Q}${Y}`}v4.strConcat=J5;function z5(Q){return typeof Q=="number"||typeof Q=="boolean"||Q===null?Q:R0(Array.isArray(Q)?Q.join(","):Q)}function H5(Q){return new i(R0(Q))}v4.stringify=H5;function R0(Q){return JSON.stringify(Q).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}v4.safeStringify=R0;function q5(Q){return typeof Q=="string"&&v4.IDENTIFIER.test(Q)?new i(`.${Q}`):C4`[${Q}]`}v4.getProperty=q5;function F5(Q){if(typeof Q=="string"&&v4.IDENTIFIER.test(Q))return new i(`${Q}`);throw Error(`CodeGen: invalid export name: ${Q}, use explicit $id name mapping`)}v4.getEsmExportName=F5;function B5(Q){return new i(Q.toString())}v4.regexpCode=B5});var l1=A((_4)=>{Object.defineProperty(_4,"__esModule",{value:!0});_4.ValueScope=_4.ValueScopeName=_4.Scope=_4.varKinds=_4.UsedValueState=void 0;var _=w0();class f4 extends Error{constructor(Q){super(`CodeGen: "code" for ${Q} not defined`);this.value=Q.value}}var t0;(function(Q){Q[Q.Started=0]="Started",Q[Q.Completed=1]="Completed"})(t0||(_4.UsedValueState=t0={}));_4.varKinds={const:new _.Name("const"),let:new _.Name("let"),var:new _.Name("var")};class u1{constructor({prefixes:Q,parent:Y}={}){this._names={},this._prefixes=Q,this._parent=Y}toName(Q){return Q instanceof _.Name?Q:this.name(Q)}name(Q){return new _.Name(this._newName(Q))}_newName(Q){let Y=this._names[Q]||this._nameGroup(Q);return`${Q}${Y.index++}`}_nameGroup(Q){var Y,Z;if(((Z=(Y=this._parent)===null||Y===void 0?void 0:Y._prefixes)===null||Z===void 0?void 0:Z.has(Q))||this._prefixes&&!this._prefixes.has(Q))throw Error(`CodeGen: prefix "${Q}" is not allowed in this scope`);return this._names[Q]={prefix:Q,index:0}}}_4.Scope=u1;class g1 extends _.Name{constructor(Q,Y){super(Y);this.prefix=Q}setValue(Q,{property:Y,itemIndex:Z}){this.value=Q,this.scopePath=_._`.${new _.Name(Y)}[${Z}]`}}_4.ValueScopeName=g1;var E5=_._`\n`;class x4 extends u1{constructor(Q){super(Q);this._values={},this._scope=Q.scope,this.opts={...Q,_n:Q.lines?E5:_.nil}}get(){return this._scope}name(Q){return new g1(Q,this._newName(Q))}value(Q,Y){var Z;if(Y.ref===void 0)throw Error("CodeGen: ref must be passed in value");let X=this.toName(Q),{prefix:W}=X,$=(Z=Y.key)!==null&&Z!==void 0?Z:Y.ref,G=this._values[W];if(G){let H=G.get($);if(H)return H}else G=this._values[W]=new Map;G.set($,X);let J=this._scope[W]||(this._scope[W]=[]),z=J.length;return J[z]=Y.ref,X.setValue(Y,{property:W,itemIndex:z}),X}getValue(Q,Y){let Z=this._values[Q];if(!Z)return;return Z.get(Y)}scopeRefs(Q,Y=this._values){return this._reduceValues(Y,(Z)=>{if(Z.scopePath===void 0)throw Error(`CodeGen: name "${Z}" has no value`);return _._`${Q}${Z.scopePath}`})}scopeCode(Q=this._values,Y,Z){return this._reduceValues(Q,(X)=>{if(X.value===void 0)throw Error(`CodeGen: name "${X}" has no value`);return X.value.code},Y,Z)}_reduceValues(Q,Y,Z={},X){let W=_.nil;for(let $ in Q){let G=Q[$];if(!G)continue;let J=Z[$]=Z[$]||new Map;G.forEach((z)=>{if(J.has(z))return;J.set(z,t0.Started);let H=Y(z);if(H){let q=this.opts.es5?_4.varKinds.var:_4.varKinds.const;W=_._`${W}${q} ${z} = ${H};${this.opts._n}`}else if(H=X===null||X===void 0?void 0:X(z))W=_._`${W}${H}${this.opts._n}`;else throw new f4(z);J.set(z,t0.Completed)})}return W}}_4.ValueScope=x4});var I=A((u)=>{Object.defineProperty(u,"__esModule",{value:!0});u.or=u.and=u.not=u.CodeGen=u.operators=u.varKinds=u.ValueScopeName=u.ValueScope=u.Scope=u.Name=u.regexpCode=u.stringify=u.getProperty=u.nil=u.strConcat=u.str=u._=void 0;var E=w0(),d=l1(),X0=w0();Object.defineProperty(u,"_",{enumerable:!0,get:function(){return X0._}});Object.defineProperty(u,"str",{enumerable:!0,get:function(){return X0.str}});Object.defineProperty(u,"strConcat",{enumerable:!0,get:function(){return X0.strConcat}});Object.defineProperty(u,"nil",{enumerable:!0,get:function(){return X0.nil}});Object.defineProperty(u,"getProperty",{enumerable:!0,get:function(){return X0.getProperty}});Object.defineProperty(u,"stringify",{enumerable:!0,get:function(){return X0.stringify}});Object.defineProperty(u,"regexpCode",{enumerable:!0,get:function(){return X0.regexpCode}});Object.defineProperty(u,"Name",{enumerable:!0,get:function(){return X0.Name}});var X1=l1();Object.defineProperty(u,"Scope",{enumerable:!0,get:function(){return X1.Scope}});Object.defineProperty(u,"ValueScope",{enumerable:!0,get:function(){return X1.ValueScope}});Object.defineProperty(u,"ValueScopeName",{enumerable:!0,get:function(){return X1.ValueScopeName}});Object.defineProperty(u,"varKinds",{enumerable:!0,get:function(){return X1.varKinds}});u.operators={GT:new E._Code(">"),GTE:new E._Code(">="),LT:new E._Code("<"),LTE:new E._Code("<="),EQ:new E._Code("==="),NEQ:new E._Code("!=="),NOT:new E._Code("!"),OR:new E._Code("||"),AND:new E._Code("&&"),ADD:new E._Code("+")};class W0{optimizeNodes(){return this}optimizeNames(Q,Y){return this}}class g4 extends W0{constructor(Q,Y,Z){super();this.varKind=Q,this.name=Y,this.rhs=Z}render({es5:Q,_n:Y}){let Z=Q?d.varKinds.var:this.varKind,X=this.rhs===void 0?"":` = ${this.rhs}`;return`${Z} ${this.name}${X};`+Y}optimizeNames(Q,Y){if(!Q[this.name.str])return;if(this.rhs)this.rhs=A0(this.rhs,Q,Y);return this}get names(){return this.rhs instanceof E._CodeOrName?this.rhs.names:{}}}class i1 extends W0{constructor(Q,Y,Z){super();this.lhs=Q,this.rhs=Y,this.sideEffects=Z}render({_n:Q}){return`${this.lhs} = ${this.rhs};`+Q}optimizeNames(Q,Y){if(this.lhs instanceof E.Name&&!Q[this.lhs.str]&&!this.sideEffects)return;return this.rhs=A0(this.rhs,Q,Y),this}get names(){let Q=this.lhs instanceof E.Name?{}:{...this.lhs.names};return Z1(Q,this.rhs)}}class l4 extends i1{constructor(Q,Y,Z,X){super(Q,Z,X);this.op=Y}render({_n:Q}){return`${this.lhs} ${this.op}= ${this.rhs};`+Q}}class h4 extends W0{constructor(Q){super();this.label=Q,this.names={}}render({_n:Q}){return`${this.label}:`+Q}}class m4 extends W0{constructor(Q){super();this.label=Q,this.names={}}render({_n:Q}){return`break${this.label?` ${this.label}`:""};`+Q}}class i4 extends W0{constructor(Q){super();this.error=Q}render({_n:Q}){return`throw ${this.error};`+Q}get names(){return this.error.names}}class d4 extends W0{constructor(Q){super();this.code=Q}render({_n:Q}){return`${this.code};`+Q}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(Q,Y){return this.code=A0(this.code,Q,Y),this}get names(){return this.code instanceof E._CodeOrName?this.code.names:{}}}class W1 extends W0{constructor(Q=[]){super();this.nodes=Q}render(Q){return this.nodes.reduce((Y,Z)=>Y+Z.render(Q),"")}optimizeNodes(){let{nodes:Q}=this,Y=Q.length;while(Y--){let Z=Q[Y].optimizeNodes();if(Array.isArray(Z))Q.splice(Y,1,...Z);else if(Z)Q[Y]=Z;else Q.splice(Y,1)}return Q.length>0?this:void 0}optimizeNames(Q,Y){let{nodes:Z}=this,X=Z.length;while(X--){let W=Z[X];if(W.optimizeNames(Q,Y))continue;b5(Q,W.names),Z.splice(X,1)}return Z.length>0?this:void 0}get names(){return this.nodes.reduce((Q,Y)=>H0(Q,Y.names),{})}}class $0 extends W1{render(Q){return"{"+Q._n+super.render(Q)+"}"+Q._n}}class p4 extends W1{}class P0 extends $0{}P0.kind="else";class o extends $0{constructor(Q,Y){super(Y);this.condition=Q}render(Q){let Y=`if(${this.condition})`+super.render(Q);if(this.else)Y+="else "+this.else.render(Q);return Y}optimizeNodes(){super.optimizeNodes();let Q=this.condition;if(Q===!0)return this.nodes;let Y=this.else;if(Y){let Z=Y.optimizeNodes();Y=this.else=Array.isArray(Z)?new P0(Z):Z}if(Y){if(Q===!1)return Y instanceof o?Y:Y.nodes;if(this.nodes.length)return this;return new o(a4(Q),Y instanceof o?[Y]:Y.nodes)}if(Q===!1||!this.nodes.length)return;return this}optimizeNames(Q,Y){var Z;if(this.else=(Z=this.else)===null||Z===void 0?void 0:Z.optimizeNames(Q,Y),!(super.optimizeNames(Q,Y)||this.else))return;return this.condition=A0(this.condition,Q,Y),this}get names(){let Q=super.names;if(Z1(Q,this.condition),this.else)H0(Q,this.else.names);return Q}}o.kind="if";class U0 extends $0{}U0.kind="for";class c4 extends U0{constructor(Q){super();this.iteration=Q}render(Q){return`for(${this.iteration})`+super.render(Q)}optimizeNames(Q,Y){if(!super.optimizeNames(Q,Y))return;return this.iteration=A0(this.iteration,Q,Y),this}get names(){return H0(super.names,this.iteration.names)}}class n4 extends U0{constructor(Q,Y,Z,X){super();this.varKind=Q,this.name=Y,this.from=Z,this.to=X}render(Q){let Y=Q.es5?d.varKinds.var:this.varKind,{name:Z,from:X,to:W}=this;return`for(${Y} ${Z}=${X}; ${Z}<${W}; ${Z}++)`+super.render(Q)}get names(){let Q=Z1(super.names,this.from);return Z1(Q,this.to)}}class h1 extends U0{constructor(Q,Y,Z,X){super();this.loop=Q,this.varKind=Y,this.name=Z,this.iterable=X}render(Q){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(Q)}optimizeNames(Q,Y){if(!super.optimizeNames(Q,Y))return;return this.iterable=A0(this.iterable,Q,Y),this}get names(){return H0(super.names,this.iterable.names)}}class o0 extends $0{constructor(Q,Y,Z){super();this.name=Q,this.args=Y,this.async=Z}render(Q){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(Q)}}o0.kind="func";class e0 extends W1{render(Q){return"return "+super.render(Q)}}e0.kind="return";class r4 extends $0{render(Q){let Y="try"+super.render(Q);if(this.catch)Y+=this.catch.render(Q);if(this.finally)Y+=this.finally.render(Q);return Y}optimizeNodes(){var Q,Y;return super.optimizeNodes(),(Q=this.catch)===null||Q===void 0||Q.optimizeNodes(),(Y=this.finally)===null||Y===void 0||Y.optimizeNodes(),this}optimizeNames(Q,Y){var Z,X;return super.optimizeNames(Q,Y),(Z=this.catch)===null||Z===void 0||Z.optimizeNames(Q,Y),(X=this.finally)===null||X===void 0||X.optimizeNames(Q,Y),this}get names(){let Q=super.names;if(this.catch)H0(Q,this.catch.names);if(this.finally)H0(Q,this.finally.names);return Q}}class Q1 extends $0{constructor(Q){super();this.error=Q}render(Q){return`catch(${this.error})`+super.render(Q)}}Q1.kind="catch";class Y1 extends $0{render(Q){return"finally"+super.render(Q)}}Y1.kind="finally";class s4{constructor(Q,Y={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...Y,_n:Y.lines?`
|
|
2
|
+
`:""},this._extScope=Q,this._scope=new d.Scope({parent:Q}),this._nodes=[new p4]}toString(){return this._root.render(this.opts)}name(Q){return this._scope.name(Q)}scopeName(Q){return this._extScope.name(Q)}scopeValue(Q,Y){let Z=this._extScope.value(Q,Y);return(this._values[Z.prefix]||(this._values[Z.prefix]=new Set)).add(Z),Z}getScopeValue(Q,Y){return this._extScope.getValue(Q,Y)}scopeRefs(Q){return this._extScope.scopeRefs(Q,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(Q,Y,Z,X){let W=this._scope.toName(Y);if(Z!==void 0&&X)this._constants[W.str]=Z;return this._leafNode(new g4(Q,W,Z)),W}const(Q,Y,Z){return this._def(d.varKinds.const,Q,Y,Z)}let(Q,Y,Z){return this._def(d.varKinds.let,Q,Y,Z)}var(Q,Y,Z){return this._def(d.varKinds.var,Q,Y,Z)}assign(Q,Y,Z){return this._leafNode(new i1(Q,Y,Z))}add(Q,Y){return this._leafNode(new l4(Q,u.operators.ADD,Y))}code(Q){if(typeof Q=="function")Q();else if(Q!==E.nil)this._leafNode(new d4(Q));return this}object(...Q){let Y=["{"];for(let[Z,X]of Q){if(Y.length>1)Y.push(",");if(Y.push(Z),Z!==X||this.opts.es5)Y.push(":"),(0,E.addCodeArg)(Y,X)}return Y.push("}"),new E._Code(Y)}if(Q,Y,Z){if(this._blockNode(new o(Q)),Y&&Z)this.code(Y).else().code(Z).endIf();else if(Y)this.code(Y).endIf();else if(Z)throw Error('CodeGen: "else" body without "then" body');return this}elseIf(Q){return this._elseNode(new o(Q))}else(){return this._elseNode(new P0)}endIf(){return this._endBlockNode(o,P0)}_for(Q,Y){if(this._blockNode(Q),Y)this.code(Y).endFor();return this}for(Q,Y){return this._for(new c4(Q),Y)}forRange(Q,Y,Z,X,W=this.opts.es5?d.varKinds.var:d.varKinds.let){let $=this._scope.toName(Q);return this._for(new n4(W,$,Y,Z),()=>X($))}forOf(Q,Y,Z,X=d.varKinds.const){let W=this._scope.toName(Q);if(this.opts.es5){let $=Y instanceof E.Name?Y:this.var("_arr",Y);return this.forRange("_i",0,E._`${$}.length`,(G)=>{this.var(W,E._`${$}[${G}]`),Z(W)})}return this._for(new h1("of",X,W,Y),()=>Z(W))}forIn(Q,Y,Z,X=this.opts.es5?d.varKinds.var:d.varKinds.const){if(this.opts.ownProperties)return this.forOf(Q,E._`Object.keys(${Y})`,Z);let W=this._scope.toName(Q);return this._for(new h1("in",X,W,Y),()=>Z(W))}endFor(){return this._endBlockNode(U0)}label(Q){return this._leafNode(new h4(Q))}break(Q){return this._leafNode(new m4(Q))}return(Q){let Y=new e0;if(this._blockNode(Y),this.code(Q),Y.nodes.length!==1)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(e0)}try(Q,Y,Z){if(!Y&&!Z)throw Error('CodeGen: "try" without "catch" and "finally"');let X=new r4;if(this._blockNode(X),this.code(Q),Y){let W=this.name("e");this._currNode=X.catch=new Q1(W),Y(W)}if(Z)this._currNode=X.finally=new Y1,this.code(Z);return this._endBlockNode(Q1,Y1)}throw(Q){return this._leafNode(new i4(Q))}block(Q,Y){if(this._blockStarts.push(this._nodes.length),Q)this.code(Q).endBlock(Y);return this}endBlock(Q){let Y=this._blockStarts.pop();if(Y===void 0)throw Error("CodeGen: not in self-balancing block");let Z=this._nodes.length-Y;if(Z<0||Q!==void 0&&Z!==Q)throw Error(`CodeGen: wrong number of nodes: ${Z} vs ${Q} expected`);return this._nodes.length=Y,this}func(Q,Y=E.nil,Z,X){if(this._blockNode(new o0(Q,Y,Z)),X)this.code(X).endFunc();return this}endFunc(){return this._endBlockNode(o0)}optimize(Q=1){while(Q-- >0)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(Q){return this._currNode.nodes.push(Q),this}_blockNode(Q){this._currNode.nodes.push(Q),this._nodes.push(Q)}_endBlockNode(Q,Y){let Z=this._currNode;if(Z instanceof Q||Y&&Z instanceof Y)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${Y?`${Q.kind}/${Y.kind}`:Q.kind}"`)}_elseNode(Q){let Y=this._currNode;if(!(Y instanceof o))throw Error('CodeGen: "else" without "if"');return this._currNode=Y.else=Q,this}get _root(){return this._nodes[0]}get _currNode(){let Q=this._nodes;return Q[Q.length-1]}set _currNode(Q){let Y=this._nodes;Y[Y.length-1]=Q}}u.CodeGen=s4;function H0(Q,Y){for(let Z in Y)Q[Z]=(Q[Z]||0)+(Y[Z]||0);return Q}function Z1(Q,Y){return Y instanceof E._CodeOrName?H0(Q,Y.names):Q}function A0(Q,Y,Z){if(Q instanceof E.Name)return X(Q);if(!W(Q))return Q;return new E._Code(Q._items.reduce(($,G)=>{if(G instanceof E.Name)G=X(G);if(G instanceof E._Code)$.push(...G._items);else $.push(G);return $},[]));function X($){let G=Z[$.str];if(G===void 0||Y[$.str]!==1)return $;return delete Y[$.str],G}function W($){return $ instanceof E._Code&&$._items.some((G)=>G instanceof E.Name&&Y[G.str]===1&&Z[G.str]!==void 0)}}function b5(Q,Y){for(let Z in Y)Q[Z]=(Q[Z]||0)-(Y[Z]||0)}function a4(Q){return typeof Q=="boolean"||typeof Q=="number"||Q===null?!Q:E._`!${m1(Q)}`}u.not=a4;var S5=t4(u.operators.AND);function C5(...Q){return Q.reduce(S5)}u.and=C5;var k5=t4(u.operators.OR);function v5(...Q){return Q.reduce(k5)}u.or=v5;function t4(Q){return(Y,Z)=>Y===E.nil?Z:Z===E.nil?Y:E._`${m1(Y)} ${Q} ${m1(Z)}`}function m1(Q){return Q instanceof E.Name?Q:E._`(${Q})`}});var P=A((G9)=>{Object.defineProperty(G9,"__esModule",{value:!0});G9.checkStrictMode=G9.getErrorPath=G9.Type=G9.useFunc=G9.setEvaluated=G9.evaluatedPropsToName=G9.mergeEvaluated=G9.eachItem=G9.unescapeJsonPointer=G9.escapeJsonPointer=G9.escapeFragment=G9.unescapeFragment=G9.schemaRefOrVal=G9.schemaHasRulesButRef=G9.schemaHasRules=G9.checkUnknownRules=G9.alwaysValidSchema=G9.toHash=void 0;var b=I(),_5=w0();function u5(Q){let Y={};for(let Z of Q)Y[Z]=!0;return Y}G9.toHash=u5;function g5(Q,Y){if(typeof Y=="boolean")return Y;if(Object.keys(Y).length===0)return!0;return Y9(Q,Y),!Z9(Y,Q.self.RULES.all)}G9.alwaysValidSchema=g5;function Y9(Q,Y=Q.schema){let{opts:Z,self:X}=Q;if(!Z.strictSchema)return;if(typeof Y==="boolean")return;let W=X.RULES.keywords;for(let $ in Y)if(!W[$])$9(Q,`unknown keyword: "${$}"`)}G9.checkUnknownRules=Y9;function Z9(Q,Y){if(typeof Q=="boolean")return!Q;for(let Z in Q)if(Y[Z])return!0;return!1}G9.schemaHasRules=Z9;function l5(Q,Y){if(typeof Q=="boolean")return!Q;for(let Z in Q)if(Z!=="$ref"&&Y.all[Z])return!0;return!1}G9.schemaHasRulesButRef=l5;function h5({topSchemaRef:Q,schemaPath:Y},Z,X,W){if(!W){if(typeof Z=="number"||typeof Z=="boolean")return Z;if(typeof Z=="string")return b._`${Z}`}return b._`${Q}${Y}${(0,b.getProperty)(X)}`}G9.schemaRefOrVal=h5;function m5(Q){return X9(decodeURIComponent(Q))}G9.unescapeFragment=m5;function i5(Q){return encodeURIComponent(p1(Q))}G9.escapeFragment=i5;function p1(Q){if(typeof Q=="number")return`${Q}`;return Q.replace(/~/g,"~0").replace(/\//g,"~1")}G9.escapeJsonPointer=p1;function X9(Q){return Q.replace(/~1/g,"/").replace(/~0/g,"~")}G9.unescapeJsonPointer=X9;function d5(Q,Y){if(Array.isArray(Q))for(let Z of Q)Y(Z);else Y(Q)}G9.eachItem=d5;function e4({mergeNames:Q,mergeToName:Y,mergeValues:Z,resultToName:X}){return(W,$,G,J)=>{let z=G===void 0?$:G instanceof b.Name?($ instanceof b.Name?Q(W,$,G):Y(W,$,G),G):$ instanceof b.Name?(Y(W,G,$),$):Z($,G);return J===b.Name&&!(z instanceof b.Name)?X(W,z):z}}G9.mergeEvaluated={props:e4({mergeNames:(Q,Y,Z)=>Q.if(b._`${Z} !== true && ${Y} !== undefined`,()=>{Q.if(b._`${Y} === true`,()=>Q.assign(Z,!0),()=>Q.assign(Z,b._`${Z} || {}`).code(b._`Object.assign(${Z}, ${Y})`))}),mergeToName:(Q,Y,Z)=>Q.if(b._`${Z} !== true`,()=>{if(Y===!0)Q.assign(Z,!0);else Q.assign(Z,b._`${Z} || {}`),c1(Q,Z,Y)}),mergeValues:(Q,Y)=>Q===!0?!0:{...Q,...Y},resultToName:W9}),items:e4({mergeNames:(Q,Y,Z)=>Q.if(b._`${Z} !== true && ${Y} !== undefined`,()=>Q.assign(Z,b._`${Y} === true ? true : ${Z} > ${Y} ? ${Z} : ${Y}`)),mergeToName:(Q,Y,Z)=>Q.if(b._`${Z} !== true`,()=>Q.assign(Z,Y===!0?!0:b._`${Z} > ${Y} ? ${Z} : ${Y}`)),mergeValues:(Q,Y)=>Q===!0?!0:Math.max(Q,Y),resultToName:(Q,Y)=>Q.var("items",Y)})};function W9(Q,Y){if(Y===!0)return Q.var("props",!0);let Z=Q.var("props",b._`{}`);if(Y!==void 0)c1(Q,Z,Y);return Z}G9.evaluatedPropsToName=W9;function c1(Q,Y,Z){Object.keys(Z).forEach((X)=>Q.assign(b._`${Y}${(0,b.getProperty)(X)}`,!0))}G9.setEvaluated=c1;var Q9={};function p5(Q,Y){return Q.scopeValue("func",{ref:Y,code:Q9[Y.code]||(Q9[Y.code]=new _5._Code(Y.code))})}G9.useFunc=p5;var d1;(function(Q){Q[Q.Num=0]="Num",Q[Q.Str=1]="Str"})(d1||(G9.Type=d1={}));function c5(Q,Y,Z){if(Q instanceof b.Name){let X=Y===d1.Num;return Z?X?b._`"[" + ${Q} + "]"`:b._`"['" + ${Q} + "']"`:X?b._`"/" + ${Q}`:b._`"/" + ${Q}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return Z?(0,b.getProperty)(Q).toString():"/"+p1(Q)}G9.getErrorPath=c5;function $9(Q,Y,Z=Q.opts.strictSchema){if(!Z)return;if(Y=`strict mode: ${Y}`,Z===!0)throw Error(Y);Q.self.logger.warn(Y)}G9.checkStrictMode=$9});var e=A((z9)=>{Object.defineProperty(z9,"__esModule",{value:!0});var y=I(),q8={data:new y.Name("data"),valCxt:new y.Name("valCxt"),instancePath:new y.Name("instancePath"),parentData:new y.Name("parentData"),parentDataProperty:new y.Name("parentDataProperty"),rootData:new y.Name("rootData"),dynamicAnchors:new y.Name("dynamicAnchors"),vErrors:new y.Name("vErrors"),errors:new y.Name("errors"),this:new y.Name("this"),self:new y.Name("self"),scope:new y.Name("scope"),json:new y.Name("json"),jsonPos:new y.Name("jsonPos"),jsonLen:new y.Name("jsonLen"),jsonPart:new y.Name("jsonPart")};z9.default=q8});var b0=A((B9)=>{Object.defineProperty(B9,"__esModule",{value:!0});B9.extendErrors=B9.resetErrorsCount=B9.reportExtraError=B9.reportError=B9.keyword$DataError=B9.keywordError=void 0;var w=I(),G1=P(),f=e();B9.keywordError={message:({keyword:Q})=>w.str`must pass "${Q}" keyword validation`};B9.keyword$DataError={message:({keyword:Q,schemaType:Y})=>Y?w.str`"${Q}" keyword must be ${Y} ($data)`:w.str`"${Q}" keyword is invalid ($data)`};function B8(Q,Y=B9.keywordError,Z,X){let{it:W}=Q,{gen:$,compositeRule:G,allErrors:J}=W,z=F9(Q,Y,Z);if(X!==null&&X!==void 0?X:G||J)H9($,z);else q9(W,w._`[${z}]`)}B9.reportError=B8;function V8(Q,Y=B9.keywordError,Z){let{it:X}=Q,{gen:W,compositeRule:$,allErrors:G}=X,J=F9(Q,Y,Z);if(H9(W,J),!($||G))q9(X,f.default.vErrors)}B9.reportExtraError=V8;function K8(Q,Y){Q.assign(f.default.errors,Y),Q.if(w._`${f.default.vErrors} !== null`,()=>Q.if(Y,()=>Q.assign(w._`${f.default.vErrors}.length`,Y),()=>Q.assign(f.default.vErrors,null)))}B9.resetErrorsCount=K8;function L8({gen:Q,keyword:Y,schemaValue:Z,data:X,errsCount:W,it:$}){if(W===void 0)throw Error("ajv implementation error");let G=Q.name("err");Q.forRange("i",W,f.default.errors,(J)=>{if(Q.const(G,w._`${f.default.vErrors}[${J}]`),Q.if(w._`${G}.instancePath === undefined`,()=>Q.assign(w._`${G}.instancePath`,(0,w.strConcat)(f.default.instancePath,$.errorPath))),Q.assign(w._`${G}.schemaPath`,w.str`${$.errSchemaPath}/${Y}`),$.opts.verbose)Q.assign(w._`${G}.schema`,Z),Q.assign(w._`${G}.data`,X)})}B9.extendErrors=L8;function H9(Q,Y){let Z=Q.const("err",Y);Q.if(w._`${f.default.vErrors} === null`,()=>Q.assign(f.default.vErrors,w._`[${Z}]`),w._`${f.default.vErrors}.push(${Z})`),Q.code(w._`${f.default.errors}++`)}function q9(Q,Y){let{gen:Z,validateName:X,schemaEnv:W}=Q;if(W.$async)Z.throw(w._`new ${Q.ValidationError}(${Y})`);else Z.assign(w._`${X}.errors`,Y),Z.return(!1)}var q0={keyword:new w.Name("keyword"),schemaPath:new w.Name("schemaPath"),params:new w.Name("params"),propertyName:new w.Name("propertyName"),message:new w.Name("message"),schema:new w.Name("schema"),parentSchema:new w.Name("parentSchema")};function F9(Q,Y,Z){let{createErrors:X}=Q.it;if(X===!1)return w._`{}`;return U8(Q,Y,Z)}function U8(Q,Y,Z={}){let{gen:X,it:W}=Q,$=[A8(W,Z),M8(Q,Z)];return j8(Q,Y,$),X.object(...$)}function A8({errorPath:Q},{instancePath:Y}){let Z=Y?w.str`${Q}${(0,G1.getErrorPath)(Y,G1.Type.Str)}`:Q;return[f.default.instancePath,(0,w.strConcat)(f.default.instancePath,Z)]}function M8({keyword:Q,it:{errSchemaPath:Y}},{schemaPath:Z,parentSchema:X}){let W=X?Y:w.str`${Y}/${Q}`;if(Z)W=w.str`${W}${(0,G1.getErrorPath)(Z,G1.Type.Str)}`;return[q0.schemaPath,W]}function j8(Q,{params:Y,message:Z},X){let{keyword:W,data:$,schemaValue:G,it:J}=Q,{opts:z,propertyName:H,topSchemaRef:q,schemaPath:F}=J;if(X.push([q0.keyword,W],[q0.params,typeof Y=="function"?Y(Q):Y||w._`{}`]),z.messages)X.push([q0.message,typeof Z=="function"?Z(Q):Z]);if(z.verbose)X.push([q0.schema,G],[q0.parentSchema,w._`${q}${F}`],[f.default.data,$]);if(H)X.push([q0.propertyName,H])}});var A9=A((L9)=>{Object.defineProperty(L9,"__esModule",{value:!0});L9.boolOrEmptySchema=L9.topBoolOrEmptySchema=void 0;var T8=b0(),E8=I(),R8=e(),w8={message:"boolean schema is false"};function P8(Q){let{gen:Y,schema:Z,validateName:X}=Q;if(Z===!1)K9(Q,!1);else if(typeof Z=="object"&&Z.$async===!0)Y.return(R8.default.data);else Y.assign(E8._`${X}.errors`,null),Y.return(!0)}L9.topBoolOrEmptySchema=P8;function b8(Q,Y){let{gen:Z,schema:X}=Q;if(X===!1)Z.var(Y,!1),K9(Q);else Z.var(Y,!0)}L9.boolOrEmptySchema=b8;function K9(Q,Y){let{gen:Z,data:X}=Q,W={gen:Z,keyword:"false schema",data:X,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:Q};(0,T8.reportError)(W,w8,void 0,Y)}});var r1=A((M9)=>{Object.defineProperty(M9,"__esModule",{value:!0});M9.getRules=M9.isJSONType=void 0;var C8=["string","number","integer","boolean","null","object","array"],k8=new Set(C8);function v8(Q){return typeof Q=="string"&&k8.has(Q)}M9.isJSONType=v8;function y8(){let Q={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...Q,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},Q.number,Q.string,Q.array,Q.object],post:{rules:[]},all:{},keywords:{}}}M9.getRules=y8});var s1=A((N9)=>{Object.defineProperty(N9,"__esModule",{value:!0});N9.shouldUseRule=N9.shouldUseGroup=N9.schemaHasRulesForType=void 0;function x8({schema:Q,self:Y},Z){let X=Y.RULES.types[Z];return X&&X!==!0&&O9(Q,X)}N9.schemaHasRulesForType=x8;function O9(Q,Y){return Y.rules.some((Z)=>D9(Q,Z))}N9.shouldUseGroup=O9;function D9(Q,Y){var Z;return Q[Y.keyword]!==void 0||((Z=Y.definition.implements)===null||Z===void 0?void 0:Z.some((X)=>Q[X]!==void 0))}N9.shouldUseRule=D9});var S0=A((w9)=>{Object.defineProperty(w9,"__esModule",{value:!0});w9.reportTypeError=w9.checkDataTypes=w9.checkDataType=w9.coerceAndCheckDataType=w9.getJSONTypes=w9.getSchemaTypes=w9.DataType=void 0;var g8=r1(),l8=s1(),h8=b0(),N=I(),T9=P(),M0;(function(Q){Q[Q.Correct=0]="Correct",Q[Q.Wrong=1]="Wrong"})(M0||(w9.DataType=M0={}));function m8(Q){let Y=E9(Q.type);if(Y.includes("null")){if(Q.nullable===!1)throw Error("type: null contradicts nullable: false")}else{if(!Y.length&&Q.nullable!==void 0)throw Error('"nullable" cannot be used without "type"');if(Q.nullable===!0)Y.push("null")}return Y}w9.getSchemaTypes=m8;function E9(Q){let Y=Array.isArray(Q)?Q:Q?[Q]:[];if(Y.every(g8.isJSONType))return Y;throw Error("type must be JSONType or JSONType[]: "+Y.join(","))}w9.getJSONTypes=E9;function i8(Q,Y){let{gen:Z,data:X,opts:W}=Q,$=d8(Y,W.coerceTypes),G=Y.length>0&&!($.length===0&&Y.length===1&&(0,l8.schemaHasRulesForType)(Q,Y[0]));if(G){let J=t1(Y,X,W.strictNumbers,M0.Wrong);Z.if(J,()=>{if($.length)p8(Q,Y,$);else o1(Q)})}return G}w9.coerceAndCheckDataType=i8;var R9=new Set(["string","number","integer","boolean","null"]);function d8(Q,Y){return Y?Q.filter((Z)=>R9.has(Z)||Y==="array"&&Z==="array"):[]}function p8(Q,Y,Z){let{gen:X,data:W,opts:$}=Q,G=X.let("dataType",N._`typeof ${W}`),J=X.let("coerced",N._`undefined`);if($.coerceTypes==="array")X.if(N._`${G} == 'object' && Array.isArray(${W}) && ${W}.length == 1`,()=>X.assign(W,N._`${W}[0]`).assign(G,N._`typeof ${W}`).if(t1(Y,W,$.strictNumbers),()=>X.assign(J,W)));X.if(N._`${J} !== undefined`);for(let H of Z)if(R9.has(H)||H==="array"&&$.coerceTypes==="array")z(H);X.else(),o1(Q),X.endIf(),X.if(N._`${J} !== undefined`,()=>{X.assign(W,J),c8(Q,J)});function z(H){switch(H){case"string":X.elseIf(N._`${G} == "number" || ${G} == "boolean"`).assign(J,N._`"" + ${W}`).elseIf(N._`${W} === null`).assign(J,N._`""`);return;case"number":X.elseIf(N._`${G} == "boolean" || ${W} === null
|
|
3
|
+
|| (${G} == "string" && ${W} && ${W} == +${W})`).assign(J,N._`+${W}`);return;case"integer":X.elseIf(N._`${G} === "boolean" || ${W} === null
|
|
4
|
+
|| (${G} === "string" && ${W} && ${W} == +${W} && !(${W} % 1))`).assign(J,N._`+${W}`);return;case"boolean":X.elseIf(N._`${W} === "false" || ${W} === 0 || ${W} === null`).assign(J,!1).elseIf(N._`${W} === "true" || ${W} === 1`).assign(J,!0);return;case"null":X.elseIf(N._`${W} === "" || ${W} === 0 || ${W} === false`),X.assign(J,null);return;case"array":X.elseIf(N._`${G} === "string" || ${G} === "number"
|
|
5
|
+
|| ${G} === "boolean" || ${W} === null`).assign(J,N._`[${W}]`)}}}function c8({gen:Q,parentData:Y,parentDataProperty:Z},X){Q.if(N._`${Y} !== undefined`,()=>Q.assign(N._`${Y}[${Z}]`,X))}function a1(Q,Y,Z,X=M0.Correct){let W=X===M0.Correct?N.operators.EQ:N.operators.NEQ,$;switch(Q){case"null":return N._`${Y} ${W} null`;case"array":$=N._`Array.isArray(${Y})`;break;case"object":$=N._`${Y} && typeof ${Y} == "object" && !Array.isArray(${Y})`;break;case"integer":$=G(N._`!(${Y} % 1) && !isNaN(${Y})`);break;case"number":$=G();break;default:return N._`typeof ${Y} ${W} ${Q}`}return X===M0.Correct?$:(0,N.not)($);function G(J=N.nil){return(0,N.and)(N._`typeof ${Y} == "number"`,J,Z?N._`isFinite(${Y})`:N.nil)}}w9.checkDataType=a1;function t1(Q,Y,Z,X){if(Q.length===1)return a1(Q[0],Y,Z,X);let W,$=(0,T9.toHash)(Q);if($.array&&$.object){let G=N._`typeof ${Y} != "object"`;W=$.null?G:N._`!${Y} || ${G}`,delete $.null,delete $.array,delete $.object}else W=N.nil;if($.number)delete $.integer;for(let G in $)W=(0,N.and)(W,a1(G,Y,Z,X));return W}w9.checkDataTypes=t1;var n8={message:({schema:Q})=>`must be ${Q}`,params:({schema:Q,schemaValue:Y})=>typeof Q=="string"?N._`{type: ${Q}}`:N._`{type: ${Y}}`};function o1(Q){let Y=r8(Q);(0,h8.reportError)(Y,n8)}w9.reportTypeError=o1;function r8(Q){let{gen:Y,data:Z,schema:X}=Q,W=(0,T9.schemaRefOrVal)(Q,X,"type");return{gen:Y,keyword:"type",data:Z,schema:X.type,schemaCode:W,schemaValue:W,parentSchema:X,params:{},it:Q}}});var k9=A((S9)=>{Object.defineProperty(S9,"__esModule",{value:!0});S9.assignDefaults=void 0;var j0=I(),YX=P();function ZX(Q,Y){let{properties:Z,items:X}=Q.schema;if(Y==="object"&&Z)for(let W in Z)b9(Q,W,Z[W].default);else if(Y==="array"&&Array.isArray(X))X.forEach((W,$)=>b9(Q,$,W.default))}S9.assignDefaults=ZX;function b9(Q,Y,Z){let{gen:X,compositeRule:W,data:$,opts:G}=Q;if(Z===void 0)return;let J=j0._`${$}${(0,j0.getProperty)(Y)}`;if(W){(0,YX.checkStrictMode)(Q,`default is ignored for: ${J}`);return}let z=j0._`${J} === undefined`;if(G.useDefaults==="empty")z=j0._`${z} || ${J} === null || ${J} === ""`;X.if(z,j0._`${J} = ${(0,j0.stringify)(Z)}`)}});var h=A((f9)=>{Object.defineProperty(f9,"__esModule",{value:!0});f9.validateUnion=f9.validateArray=f9.usePattern=f9.callValidateCode=f9.schemaProperties=f9.allSchemaProperties=f9.noPropertyInData=f9.propertyInData=f9.isOwnProperty=f9.hasPropFunc=f9.reportMissingProp=f9.checkMissingProp=f9.checkReportMissingProp=void 0;var C=I(),e1=P(),G0=e(),XX=P();function WX(Q,Y){let{gen:Z,data:X,it:W}=Q;Z.if(Y4(Z,X,Y,W.opts.ownProperties),()=>{Q.setParams({missingProperty:C._`${Y}`},!0),Q.error()})}f9.checkReportMissingProp=WX;function $X({gen:Q,data:Y,it:{opts:Z}},X,W){return(0,C.or)(...X.map(($)=>(0,C.and)(Y4(Q,Y,$,Z.ownProperties),C._`${W} = ${$}`)))}f9.checkMissingProp=$X;function GX(Q,Y){Q.setParams({missingProperty:Y},!0),Q.error()}f9.reportMissingProp=GX;function v9(Q){return Q.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:C._`Object.prototype.hasOwnProperty`})}f9.hasPropFunc=v9;function Q4(Q,Y,Z){return C._`${v9(Q)}.call(${Y}, ${Z})`}f9.isOwnProperty=Q4;function JX(Q,Y,Z,X){let W=C._`${Y}${(0,C.getProperty)(Z)} !== undefined`;return X?C._`${W} && ${Q4(Q,Y,Z)}`:W}f9.propertyInData=JX;function Y4(Q,Y,Z,X){let W=C._`${Y}${(0,C.getProperty)(Z)} === undefined`;return X?(0,C.or)(W,(0,C.not)(Q4(Q,Y,Z))):W}f9.noPropertyInData=Y4;function y9(Q){return Q?Object.keys(Q).filter((Y)=>Y!=="__proto__"):[]}f9.allSchemaProperties=y9;function zX(Q,Y){return y9(Y).filter((Z)=>!(0,e1.alwaysValidSchema)(Q,Y[Z]))}f9.schemaProperties=zX;function HX({schemaCode:Q,data:Y,it:{gen:Z,topSchemaRef:X,schemaPath:W,errorPath:$},it:G},J,z,H){let q=H?C._`${Q}, ${Y}, ${X}${W}`:Y,F=[[G0.default.instancePath,(0,C.strConcat)(G0.default.instancePath,$)],[G0.default.parentData,G.parentData],[G0.default.parentDataProperty,G.parentDataProperty],[G0.default.rootData,G0.default.rootData]];if(G.opts.dynamicRef)F.push([G0.default.dynamicAnchors,G0.default.dynamicAnchors]);let M=C._`${q}, ${Z.object(...F)}`;return z!==C.nil?C._`${J}.call(${z}, ${M})`:C._`${J}(${M})`}f9.callValidateCode=HX;var qX=C._`new RegExp`;function FX({gen:Q,it:{opts:Y}},Z){let X=Y.unicodeRegExp?"u":"",{regExp:W}=Y.code,$=W(Z,X);return Q.scopeValue("pattern",{key:$.toString(),ref:$,code:C._`${W.code==="new RegExp"?qX:(0,XX.useFunc)(Q,W)}(${Z}, ${X})`})}f9.usePattern=FX;function BX(Q){let{gen:Y,data:Z,keyword:X,it:W}=Q,$=Y.name("valid");if(W.allErrors){let J=Y.let("valid",!0);return G(()=>Y.assign(J,!1)),J}return Y.var($,!0),G(()=>Y.break()),$;function G(J){let z=Y.const("len",C._`${Z}.length`);Y.forRange("i",0,z,(H)=>{Q.subschema({keyword:X,dataProp:H,dataPropType:e1.Type.Num},$),Y.if((0,C.not)($),J)})}}f9.validateArray=BX;function VX(Q){let{gen:Y,schema:Z,keyword:X,it:W}=Q;if(!Array.isArray(Z))throw Error("ajv implementation error");if(Z.some((z)=>(0,e1.alwaysValidSchema)(W,z))&&!W.opts.unevaluated)return;let G=Y.let("valid",!1),J=Y.name("_valid");Y.block(()=>Z.forEach((z,H)=>{let q=Q.subschema({keyword:X,schemaProp:H,compositeRule:!0},J);if(Y.assign(G,C._`${G} || ${J}`),!Q.mergeValidEvaluated(q,J))Y.if((0,C.not)(G))})),Q.result(G,()=>Q.reset(),()=>Q.error(!0))}f9.validateUnion=VX});var h9=A((g9)=>{Object.defineProperty(g9,"__esModule",{value:!0});g9.validateKeywordUsage=g9.validSchemaType=g9.funcKeywordCode=g9.macroKeywordCode=void 0;var x=I(),F0=e(),RX=h(),wX=b0();function PX(Q,Y){let{gen:Z,keyword:X,schema:W,parentSchema:$,it:G}=Q,J=Y.macro.call(G.self,W,$,G),z=u9(Z,X,J);if(G.opts.validateSchema!==!1)G.self.validateSchema(J,!0);let H=Z.name("valid");Q.subschema({schema:J,schemaPath:x.nil,errSchemaPath:`${G.errSchemaPath}/${X}`,topSchemaRef:z,compositeRule:!0},H),Q.pass(H,()=>Q.error(!0))}g9.macroKeywordCode=PX;function bX(Q,Y){var Z;let{gen:X,keyword:W,schema:$,parentSchema:G,$data:J,it:z}=Q;CX(z,Y);let H=!J&&Y.compile?Y.compile.call(z.self,$,G,z):Y.validate,q=u9(X,W,H),F=X.let("valid");Q.block$data(F,M),Q.ok((Z=Y.valid)!==null&&Z!==void 0?Z:F);function M(){if(Y.errors===!1){if(B(),Y.modifying)_9(Q);K(()=>Q.error())}else{let U=Y.async?L():V();if(Y.modifying)_9(Q);K(()=>SX(Q,U))}}function L(){let U=X.let("ruleErrs",null);return X.try(()=>B(x._`await `),(R)=>X.assign(F,!1).if(x._`${R} instanceof ${z.ValidationError}`,()=>X.assign(U,x._`${R}.errors`),()=>X.throw(R))),U}function V(){let U=x._`${q}.errors`;return X.assign(U,null),B(x.nil),U}function B(U=Y.async?x._`await `:x.nil){let R=z.opts.passContext?F0.default.this:F0.default.self,T=!(("compile"in Y)&&!J||Y.schema===!1);X.assign(F,x._`${U}${(0,RX.callValidateCode)(Q,q,R,T)}`,Y.modifying)}function K(U){var R;X.if((0,x.not)((R=Y.valid)!==null&&R!==void 0?R:F),U)}}g9.funcKeywordCode=bX;function _9(Q){let{gen:Y,data:Z,it:X}=Q;Y.if(X.parentData,()=>Y.assign(Z,x._`${X.parentData}[${X.parentDataProperty}]`))}function SX(Q,Y){let{gen:Z}=Q;Z.if(x._`Array.isArray(${Y})`,()=>{Z.assign(F0.default.vErrors,x._`${F0.default.vErrors} === null ? ${Y} : ${F0.default.vErrors}.concat(${Y})`).assign(F0.default.errors,x._`${F0.default.vErrors}.length`),(0,wX.extendErrors)(Q)},()=>Q.error())}function CX({schemaEnv:Q},Y){if(Y.async&&!Q.$async)throw Error("async keyword in sync schema")}function u9(Q,Y,Z){if(Z===void 0)throw Error(`keyword "${Y}" failed to compile`);return Q.scopeValue("keyword",typeof Z=="function"?{ref:Z}:{ref:Z,code:(0,x.stringify)(Z)})}function kX(Q,Y,Z=!1){return!Y.length||Y.some((X)=>X==="array"?Array.isArray(Q):X==="object"?Q&&typeof Q=="object"&&!Array.isArray(Q):typeof Q==X||Z&&typeof Q>"u")}g9.validSchemaType=kX;function vX({schema:Q,opts:Y,self:Z,errSchemaPath:X},W,$){if(Array.isArray(W.keyword)?!W.keyword.includes($):W.keyword!==$)throw Error("ajv implementation error");let G=W.dependencies;if(G===null||G===void 0?void 0:G.some((J)=>!Object.prototype.hasOwnProperty.call(Q,J)))throw Error(`parent schema must have dependencies of ${$}: ${G.join(",")}`);if(W.validateSchema){if(!W.validateSchema(Q[$])){let z=`keyword "${$}" value is invalid at path "${X}": `+Z.errorsText(W.validateSchema.errors);if(Y.validateSchema==="log")Z.logger.error(z);else throw Error(z)}}}g9.validateKeywordUsage=vX});var p9=A((i9)=>{Object.defineProperty(i9,"__esModule",{value:!0});i9.extendSubschemaMode=i9.extendSubschemaData=i9.getSubschema=void 0;var s=I(),m9=P();function _X(Q,{keyword:Y,schemaProp:Z,schema:X,schemaPath:W,errSchemaPath:$,topSchemaRef:G}){if(Y!==void 0&&X!==void 0)throw Error('both "keyword" and "schema" passed, only one allowed');if(Y!==void 0){let J=Q.schema[Y];return Z===void 0?{schema:J,schemaPath:s._`${Q.schemaPath}${(0,s.getProperty)(Y)}`,errSchemaPath:`${Q.errSchemaPath}/${Y}`}:{schema:J[Z],schemaPath:s._`${Q.schemaPath}${(0,s.getProperty)(Y)}${(0,s.getProperty)(Z)}`,errSchemaPath:`${Q.errSchemaPath}/${Y}/${(0,m9.escapeFragment)(Z)}`}}if(X!==void 0){if(W===void 0||$===void 0||G===void 0)throw Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:X,schemaPath:W,topSchemaRef:G,errSchemaPath:$}}throw Error('either "keyword" or "schema" must be passed')}i9.getSubschema=_X;function uX(Q,Y,{dataProp:Z,dataPropType:X,data:W,dataTypes:$,propertyName:G}){if(W!==void 0&&Z!==void 0)throw Error('both "data" and "dataProp" passed, only one allowed');let{gen:J}=Y;if(Z!==void 0){let{errorPath:H,dataPathArr:q,opts:F}=Y,M=J.let("data",s._`${Y.data}${(0,s.getProperty)(Z)}`,!0);z(M),Q.errorPath=s.str`${H}${(0,m9.getErrorPath)(Z,X,F.jsPropertySyntax)}`,Q.parentDataProperty=s._`${Z}`,Q.dataPathArr=[...q,Q.parentDataProperty]}if(W!==void 0){let H=W instanceof s.Name?W:J.let("data",W,!0);if(z(H),G!==void 0)Q.propertyName=G}if($)Q.dataTypes=$;function z(H){Q.data=H,Q.dataLevel=Y.dataLevel+1,Q.dataTypes=[],Y.definedProperties=new Set,Q.parentData=Y.data,Q.dataNames=[...Y.dataNames,H]}}i9.extendSubschemaData=uX;function gX(Q,{jtdDiscriminator:Y,jtdMetadata:Z,compositeRule:X,createErrors:W,allErrors:$}){if(X!==void 0)Q.compositeRule=X;if(W!==void 0)Q.createErrors=W;if($!==void 0)Q.allErrors=$;Q.jtdDiscriminator=Y,Q.jtdMetadata=Z}i9.extendSubschemaMode=gX});var Z4=A((mJ,c9)=>{c9.exports=function Q(Y,Z){if(Y===Z)return!0;if(Y&&Z&&typeof Y=="object"&&typeof Z=="object"){if(Y.constructor!==Z.constructor)return!1;var X,W,$;if(Array.isArray(Y)){if(X=Y.length,X!=Z.length)return!1;for(W=X;W--!==0;)if(!Q(Y[W],Z[W]))return!1;return!0}if(Y.constructor===RegExp)return Y.source===Z.source&&Y.flags===Z.flags;if(Y.valueOf!==Object.prototype.valueOf)return Y.valueOf()===Z.valueOf();if(Y.toString!==Object.prototype.toString)return Y.toString()===Z.toString();if($=Object.keys(Y),X=$.length,X!==Object.keys(Z).length)return!1;for(W=X;W--!==0;)if(!Object.prototype.hasOwnProperty.call(Z,$[W]))return!1;for(W=X;W--!==0;){var G=$[W];if(!Q(Y[G],Z[G]))return!1}return!0}return Y!==Y&&Z!==Z}});var r9=A((iJ,n9)=>{var J0=n9.exports=function(Q,Y,Z){if(typeof Y=="function")Z=Y,Y={};Z=Y.cb||Z;var X=typeof Z=="function"?Z:Z.pre||function(){},W=Z.post||function(){};J1(Y,X,W,Q,"",Q)};J0.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};J0.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};J0.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};J0.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function J1(Q,Y,Z,X,W,$,G,J,z,H){if(X&&typeof X=="object"&&!Array.isArray(X)){Y(X,W,$,G,J,z,H);for(var q in X){var F=X[q];if(Array.isArray(F)){if(q in J0.arrayKeywords)for(var M=0;M<F.length;M++)J1(Q,Y,Z,F[M],W+"/"+q+"/"+M,$,W,q,X,M)}else if(q in J0.propsKeywords){if(F&&typeof F=="object")for(var L in F)J1(Q,Y,Z,F[L],W+"/"+q+"/"+mX(L),$,W,q,X,L)}else if(q in J0.keywords||Q.allKeys&&!(q in J0.skipKeywords))J1(Q,Y,Z,F,W+"/"+q,$,W,q,X)}Z(X,W,$,G,J,z,H)}}function mX(Q){return Q.replace(/~/g,"~0").replace(/\//g,"~1")}});var C0=A((o9)=>{Object.defineProperty(o9,"__esModule",{value:!0});o9.getSchemaRefs=o9.resolveUrl=o9.normalizeId=o9._getFullPath=o9.getFullPath=o9.inlineRef=void 0;var iX=P(),dX=Z4(),pX=r9(),cX=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function nX(Q,Y=!0){if(typeof Q=="boolean")return!0;if(Y===!0)return!X4(Q);if(!Y)return!1;return s9(Q)<=Y}o9.inlineRef=nX;var rX=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function X4(Q){for(let Y in Q){if(rX.has(Y))return!0;let Z=Q[Y];if(Array.isArray(Z)&&Z.some(X4))return!0;if(typeof Z=="object"&&X4(Z))return!0}return!1}function s9(Q){let Y=0;for(let Z in Q){if(Z==="$ref")return 1/0;if(Y++,cX.has(Z))continue;if(typeof Q[Z]=="object")(0,iX.eachItem)(Q[Z],(X)=>Y+=s9(X));if(Y===1/0)return 1/0}return Y}function a9(Q,Y="",Z){if(Z!==!1)Y=O0(Y);let X=Q.parse(Y);return t9(Q,X)}o9.getFullPath=a9;function t9(Q,Y){return Q.serialize(Y).split("#")[0]+"#"}o9._getFullPath=t9;var sX=/#\/?$/;function O0(Q){return Q?Q.replace(sX,""):""}o9.normalizeId=O0;function aX(Q,Y,Z){return Z=O0(Z),Q.resolve(Y,Z)}o9.resolveUrl=aX;var tX=/^[a-z_][-a-z0-9._]*$/i;function oX(Q,Y){if(typeof Q=="boolean")return{};let{schemaId:Z,uriResolver:X}=this.opts,W=O0(Q[Z]||Y),$={"":W},G=a9(X,W,!1),J={},z=new Set;return pX(Q,{allKeys:!0},(F,M,L,V)=>{if(V===void 0)return;let B=G+M,K=$[V];if(typeof F[Z]=="string")K=U.call(this,F[Z]);R.call(this,F.$anchor),R.call(this,F.$dynamicAnchor),$[M]=K;function U(T){let S=this.opts.uriResolver.resolve;if(T=O0(K?S(K,T):T),z.has(T))throw q(T);z.add(T);let D=this.refs[T];if(typeof D=="string")D=this.refs[D];if(typeof D=="object")H(F,D.schema,T);else if(T!==O0(B))if(T[0]==="#")H(F,J[T],T),J[T]=F;else this.refs[T]=B;return T}function R(T){if(typeof T=="string"){if(!tX.test(T))throw Error(`invalid anchor "${T}"`);U.call(this,`#${T}`)}}}),J;function H(F,M,L){if(M!==void 0&&!dX(F,M))throw q(L)}function q(F){return Error(`reference "${F}" resolves to more than one schema`)}}o9.getSchemaRefs=oX});var y0=A((KQ)=>{Object.defineProperty(KQ,"__esModule",{value:!0});KQ.getData=KQ.KeywordCxt=KQ.validateFunctionCode=void 0;var WQ=A9(),QQ=S0(),$4=s1(),z1=S0(),W6=k9(),v0=h9(),W4=p9(),j=I(),O=e(),$6=C0(),Q0=P(),k0=b0();function G6(Q){if(JQ(Q)){if(zQ(Q),GQ(Q)){H6(Q);return}}$Q(Q,()=>(0,WQ.topBoolOrEmptySchema)(Q))}KQ.validateFunctionCode=G6;function $Q({gen:Q,validateName:Y,schema:Z,schemaEnv:X,opts:W},$){if(W.code.es5)Q.func(Y,j._`${O.default.data}, ${O.default.valCxt}`,X.$async,()=>{Q.code(j._`"use strict"; ${YQ(Z,W)}`),z6(Q,W),Q.code($)});else Q.func(Y,j._`${O.default.data}, ${J6(W)}`,X.$async,()=>Q.code(YQ(Z,W)).code($))}function J6(Q){return j._`{${O.default.instancePath}="", ${O.default.parentData}, ${O.default.parentDataProperty}, ${O.default.rootData}=${O.default.data}${Q.dynamicRef?j._`, ${O.default.dynamicAnchors}={}`:j.nil}}={}`}function z6(Q,Y){Q.if(O.default.valCxt,()=>{if(Q.var(O.default.instancePath,j._`${O.default.valCxt}.${O.default.instancePath}`),Q.var(O.default.parentData,j._`${O.default.valCxt}.${O.default.parentData}`),Q.var(O.default.parentDataProperty,j._`${O.default.valCxt}.${O.default.parentDataProperty}`),Q.var(O.default.rootData,j._`${O.default.valCxt}.${O.default.rootData}`),Y.dynamicRef)Q.var(O.default.dynamicAnchors,j._`${O.default.valCxt}.${O.default.dynamicAnchors}`)},()=>{if(Q.var(O.default.instancePath,j._`""`),Q.var(O.default.parentData,j._`undefined`),Q.var(O.default.parentDataProperty,j._`undefined`),Q.var(O.default.rootData,O.default.data),Y.dynamicRef)Q.var(O.default.dynamicAnchors,j._`{}`)})}function H6(Q){let{schema:Y,opts:Z,gen:X}=Q;$Q(Q,()=>{if(Z.$comment&&Y.$comment)qQ(Q);if(K6(Q),X.let(O.default.vErrors,null),X.let(O.default.errors,0),Z.unevaluated)q6(Q);HQ(Q),A6(Q)});return}function q6(Q){let{gen:Y,validateName:Z}=Q;Q.evaluated=Y.const("evaluated",j._`${Z}.evaluated`),Y.if(j._`${Q.evaluated}.dynamicProps`,()=>Y.assign(j._`${Q.evaluated}.props`,j._`undefined`)),Y.if(j._`${Q.evaluated}.dynamicItems`,()=>Y.assign(j._`${Q.evaluated}.items`,j._`undefined`))}function YQ(Q,Y){let Z=typeof Q=="object"&&Q[Y.schemaId];return Z&&(Y.code.source||Y.code.process)?j._`/*# sourceURL=${Z} */`:j.nil}function F6(Q,Y){if(JQ(Q)){if(zQ(Q),GQ(Q)){B6(Q,Y);return}}(0,WQ.boolOrEmptySchema)(Q,Y)}function GQ({schema:Q,self:Y}){if(typeof Q=="boolean")return!Q;for(let Z in Q)if(Y.RULES.all[Z])return!0;return!1}function JQ(Q){return typeof Q.schema!="boolean"}function B6(Q,Y){let{schema:Z,gen:X,opts:W}=Q;if(W.$comment&&Z.$comment)qQ(Q);L6(Q),U6(Q);let $=X.const("_errs",O.default.errors);HQ(Q,$),X.var(Y,j._`${$} === ${O.default.errors}`)}function zQ(Q){(0,Q0.checkUnknownRules)(Q),V6(Q)}function HQ(Q,Y){if(Q.opts.jtd)return ZQ(Q,[],!1,Y);let Z=(0,QQ.getSchemaTypes)(Q.schema),X=(0,QQ.coerceAndCheckDataType)(Q,Z);ZQ(Q,Z,!X,Y)}function V6(Q){let{schema:Y,errSchemaPath:Z,opts:X,self:W}=Q;if(Y.$ref&&X.ignoreKeywordsWithRef&&(0,Q0.schemaHasRulesButRef)(Y,W.RULES))W.logger.warn(`$ref: keywords ignored in schema at path "${Z}"`)}function K6(Q){let{schema:Y,opts:Z}=Q;if(Y.default!==void 0&&Z.useDefaults&&Z.strictSchema)(0,Q0.checkStrictMode)(Q,"default is ignored in the schema root")}function L6(Q){let Y=Q.schema[Q.opts.schemaId];if(Y)Q.baseId=(0,$6.resolveUrl)(Q.opts.uriResolver,Q.baseId,Y)}function U6(Q){if(Q.schema.$async&&!Q.schemaEnv.$async)throw Error("async schema in sync schema")}function qQ({gen:Q,schemaEnv:Y,schema:Z,errSchemaPath:X,opts:W}){let $=Z.$comment;if(W.$comment===!0)Q.code(j._`${O.default.self}.logger.log(${$})`);else if(typeof W.$comment=="function"){let G=j.str`${X}/$comment`,J=Q.scopeValue("root",{ref:Y.root});Q.code(j._`${O.default.self}.opts.$comment(${$}, ${G}, ${J}.schema)`)}}function A6(Q){let{gen:Y,schemaEnv:Z,validateName:X,ValidationError:W,opts:$}=Q;if(Z.$async)Y.if(j._`${O.default.errors} === 0`,()=>Y.return(O.default.data),()=>Y.throw(j._`new ${W}(${O.default.vErrors})`));else{if(Y.assign(j._`${X}.errors`,O.default.vErrors),$.unevaluated)M6(Q);Y.return(j._`${O.default.errors} === 0`)}}function M6({gen:Q,evaluated:Y,props:Z,items:X}){if(Z instanceof j.Name)Q.assign(j._`${Y}.props`,Z);if(X instanceof j.Name)Q.assign(j._`${Y}.items`,X)}function ZQ(Q,Y,Z,X){let{gen:W,schema:$,data:G,allErrors:J,opts:z,self:H}=Q,{RULES:q}=H;if($.$ref&&(z.ignoreKeywordsWithRef||!(0,Q0.schemaHasRulesButRef)($,q))){W.block(()=>BQ(Q,"$ref",q.all.$ref.definition));return}if(!z.jtd)j6(Q,Y);W.block(()=>{for(let M of q.rules)F(M);F(q.post)});function F(M){if(!(0,$4.shouldUseGroup)($,M))return;if(M.type){if(W.if((0,z1.checkDataType)(M.type,G,z.strictNumbers)),XQ(Q,M),Y.length===1&&Y[0]===M.type&&Z)W.else(),(0,z1.reportTypeError)(Q);W.endIf()}else XQ(Q,M);if(!J)W.if(j._`${O.default.errors} === ${X||0}`)}}function XQ(Q,Y){let{gen:Z,schema:X,opts:{useDefaults:W}}=Q;if(W)(0,W6.assignDefaults)(Q,Y.type);Z.block(()=>{for(let $ of Y.rules)if((0,$4.shouldUseRule)(X,$))BQ(Q,$.keyword,$.definition,Y.type)})}function j6(Q,Y){if(Q.schemaEnv.meta||!Q.opts.strictTypes)return;if(O6(Q,Y),!Q.opts.allowUnionTypes)D6(Q,Y);N6(Q,Q.dataTypes)}function O6(Q,Y){if(!Y.length)return;if(!Q.dataTypes.length){Q.dataTypes=Y;return}Y.forEach((Z)=>{if(!FQ(Q.dataTypes,Z))G4(Q,`type "${Z}" not allowed by context "${Q.dataTypes.join(",")}"`)}),T6(Q,Y)}function D6(Q,Y){if(Y.length>1&&!(Y.length===2&&Y.includes("null")))G4(Q,"use allowUnionTypes to allow union type keyword")}function N6(Q,Y){let Z=Q.self.RULES.all;for(let X in Z){let W=Z[X];if(typeof W=="object"&&(0,$4.shouldUseRule)(Q.schema,W)){let{type:$}=W.definition;if($.length&&!$.some((G)=>I6(Y,G)))G4(Q,`missing type "${$.join(",")}" for keyword "${X}"`)}}}function I6(Q,Y){return Q.includes(Y)||Y==="number"&&Q.includes("integer")}function FQ(Q,Y){return Q.includes(Y)||Y==="integer"&&Q.includes("number")}function T6(Q,Y){let Z=[];for(let X of Q.dataTypes)if(FQ(Y,X))Z.push(X);else if(Y.includes("integer")&&X==="number")Z.push("integer");Q.dataTypes=Z}function G4(Q,Y){let Z=Q.schemaEnv.baseId+Q.errSchemaPath;Y+=` at "${Z}" (strictTypes)`,(0,Q0.checkStrictMode)(Q,Y,Q.opts.strictTypes)}class J4{constructor(Q,Y,Z){if((0,v0.validateKeywordUsage)(Q,Y,Z),this.gen=Q.gen,this.allErrors=Q.allErrors,this.keyword=Z,this.data=Q.data,this.schema=Q.schema[Z],this.$data=Y.$data&&Q.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,Q0.schemaRefOrVal)(Q,this.schema,Z,this.$data),this.schemaType=Y.schemaType,this.parentSchema=Q.schema,this.params={},this.it=Q,this.def=Y,this.$data)this.schemaCode=Q.gen.const("vSchema",VQ(this.$data,Q));else if(this.schemaCode=this.schemaValue,!(0,v0.validSchemaType)(this.schema,Y.schemaType,Y.allowUndefined))throw Error(`${Z} value must be ${JSON.stringify(Y.schemaType)}`);if("code"in Y?Y.trackErrors:Y.errors!==!1)this.errsCount=Q.gen.const("_errs",O.default.errors)}result(Q,Y,Z){this.failResult((0,j.not)(Q),Y,Z)}failResult(Q,Y,Z){if(this.gen.if(Q),Z)Z();else this.error();if(Y){if(this.gen.else(),Y(),this.allErrors)this.gen.endIf()}else if(this.allErrors)this.gen.endIf();else this.gen.else()}pass(Q,Y){this.failResult((0,j.not)(Q),void 0,Y)}fail(Q){if(Q===void 0){if(this.error(),!this.allErrors)this.gen.if(!1);return}if(this.gen.if(Q),this.error(),this.allErrors)this.gen.endIf();else this.gen.else()}fail$data(Q){if(!this.$data)return this.fail(Q);let{schemaCode:Y}=this;this.fail(j._`${Y} !== undefined && (${(0,j.or)(this.invalid$data(),Q)})`)}error(Q,Y,Z){if(Y){this.setParams(Y),this._error(Q,Z),this.setParams({});return}this._error(Q,Z)}_error(Q,Y){(Q?k0.reportExtraError:k0.reportError)(this,this.def.error,Y)}$dataError(){(0,k0.reportError)(this,this.def.$dataError||k0.keyword$DataError)}reset(){if(this.errsCount===void 0)throw Error('add "trackErrors" to keyword definition');(0,k0.resetErrorsCount)(this.gen,this.errsCount)}ok(Q){if(!this.allErrors)this.gen.if(Q)}setParams(Q,Y){if(Y)Object.assign(this.params,Q);else this.params=Q}block$data(Q,Y,Z=j.nil){this.gen.block(()=>{this.check$data(Q,Z),Y()})}check$data(Q=j.nil,Y=j.nil){if(!this.$data)return;let{gen:Z,schemaCode:X,schemaType:W,def:$}=this;if(Z.if((0,j.or)(j._`${X} === undefined`,Y)),Q!==j.nil)Z.assign(Q,!0);if(W.length||$.validateSchema){if(Z.elseIf(this.invalid$data()),this.$dataError(),Q!==j.nil)Z.assign(Q,!1)}Z.else()}invalid$data(){let{gen:Q,schemaCode:Y,schemaType:Z,def:X,it:W}=this;return(0,j.or)($(),G());function $(){if(Z.length){if(!(Y instanceof j.Name))throw Error("ajv implementation error");let J=Array.isArray(Z)?Z:[Z];return j._`${(0,z1.checkDataTypes)(J,Y,W.opts.strictNumbers,z1.DataType.Wrong)}`}return j.nil}function G(){if(X.validateSchema){let J=Q.scopeValue("validate$data",{ref:X.validateSchema});return j._`!${J}(${Y})`}return j.nil}}subschema(Q,Y){let Z=(0,W4.getSubschema)(this.it,Q);(0,W4.extendSubschemaData)(Z,this.it,Q),(0,W4.extendSubschemaMode)(Z,Q);let X={...this.it,...Z,items:void 0,props:void 0};return F6(X,Y),X}mergeEvaluated(Q,Y){let{it:Z,gen:X}=this;if(!Z.opts.unevaluated)return;if(Z.props!==!0&&Q.props!==void 0)Z.props=Q0.mergeEvaluated.props(X,Q.props,Z.props,Y);if(Z.items!==!0&&Q.items!==void 0)Z.items=Q0.mergeEvaluated.items(X,Q.items,Z.items,Y)}mergeValidEvaluated(Q,Y){let{it:Z,gen:X}=this;if(Z.opts.unevaluated&&(Z.props!==!0||Z.items!==!0))return X.if(Y,()=>this.mergeEvaluated(Q,j.Name)),!0}}KQ.KeywordCxt=J4;function BQ(Q,Y,Z,X){let W=new J4(Q,Z,Y);if("code"in Z)Z.code(W,X);else if(W.$data&&Z.validate)(0,v0.funcKeywordCode)(W,Z);else if("macro"in Z)(0,v0.macroKeywordCode)(W,Z);else if(Z.compile||Z.validate)(0,v0.funcKeywordCode)(W,Z)}var E6=/^\/(?:[^~]|~0|~1)*$/,R6=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function VQ(Q,{dataLevel:Y,dataNames:Z,dataPathArr:X}){let W,$;if(Q==="")return O.default.rootData;if(Q[0]==="/"){if(!E6.test(Q))throw Error(`Invalid JSON-pointer: ${Q}`);W=Q,$=O.default.rootData}else{let H=R6.exec(Q);if(!H)throw Error(`Invalid JSON-pointer: ${Q}`);let q=+H[1];if(W=H[2],W==="#"){if(q>=Y)throw Error(z("property/index",q));return X[Y-q]}if(q>Y)throw Error(z("data",q));if($=Z[Y-q],!W)return $}let G=$,J=W.split("/");for(let H of J)if(H)$=j._`${$}${(0,j.getProperty)((0,Q0.unescapeJsonPointer)(H))}`,G=j._`${G} && ${$}`;return G;function z(H,q){return`Cannot access ${H} ${q} levels up, current level is ${Y}`}}KQ.getData=VQ});var H1=A((AQ)=>{Object.defineProperty(AQ,"__esModule",{value:!0});class UQ extends Error{constructor(Q){super("validation failed");this.errors=Q,this.ajv=this.validation=!0}}AQ.default=UQ});var f0=A((jQ)=>{Object.defineProperty(jQ,"__esModule",{value:!0});var z4=C0();class MQ extends Error{constructor(Q,Y,Z,X){super(X||`can't resolve reference ${Z} from id ${Y}`);this.missingRef=(0,z4.resolveUrl)(Q,Y,Z),this.missingSchema=(0,z4.normalizeId)((0,z4.getFullPath)(Q,this.missingRef))}}jQ.default=MQ});var F1=A((NQ)=>{Object.defineProperty(NQ,"__esModule",{value:!0});NQ.resolveSchema=NQ.getCompilingSchema=NQ.resolveRef=NQ.compileSchema=NQ.SchemaEnv=void 0;var p=I(),C6=H1(),B0=e(),c=C0(),OQ=P(),k6=y0();class x0{constructor(Q){var Y;this.refs={},this.dynamicAnchors={};let Z;if(typeof Q.schema=="object")Z=Q.schema;this.schema=Q.schema,this.schemaId=Q.schemaId,this.root=Q.root||this,this.baseId=(Y=Q.baseId)!==null&&Y!==void 0?Y:(0,c.normalizeId)(Z===null||Z===void 0?void 0:Z[Q.schemaId||"$id"]),this.schemaPath=Q.schemaPath,this.localRefs=Q.localRefs,this.meta=Q.meta,this.$async=Z===null||Z===void 0?void 0:Z.$async,this.refs={}}}NQ.SchemaEnv=x0;function q4(Q){let Y=DQ.call(this,Q);if(Y)return Y;let Z=(0,c.getFullPath)(this.opts.uriResolver,Q.root.baseId),{es5:X,lines:W}=this.opts.code,{ownProperties:$}=this.opts,G=new p.CodeGen(this.scope,{es5:X,lines:W,ownProperties:$}),J;if(Q.$async)J=G.scopeValue("Error",{ref:C6.default,code:p._`require("ajv/dist/runtime/validation_error").default`});let z=G.scopeName("validate");Q.validateName=z;let H={gen:G,allErrors:this.opts.allErrors,data:B0.default.data,parentData:B0.default.parentData,parentDataProperty:B0.default.parentDataProperty,dataNames:[B0.default.data],dataPathArr:[p.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:G.scopeValue("schema",this.opts.code.source===!0?{ref:Q.schema,code:(0,p.stringify)(Q.schema)}:{ref:Q.schema}),validateName:z,ValidationError:J,schema:Q.schema,schemaEnv:Q,rootId:Z,baseId:Q.baseId||Z,schemaPath:p.nil,errSchemaPath:Q.schemaPath||(this.opts.jtd?"":"#"),errorPath:p._`""`,opts:this.opts,self:this},q;try{this._compilations.add(Q),(0,k6.validateFunctionCode)(H),G.optimize(this.opts.code.optimize);let F=G.toString();if(q=`${G.scopeRefs(B0.default.scope)}return ${F}`,this.opts.code.process)q=this.opts.code.process(q,Q);let L=Function(`${B0.default.self}`,`${B0.default.scope}`,q)(this,this.scope.get());if(this.scope.value(z,{ref:L}),L.errors=null,L.schema=Q.schema,L.schemaEnv=Q,Q.$async)L.$async=!0;if(this.opts.code.source===!0)L.source={validateName:z,validateCode:F,scopeValues:G._values};if(this.opts.unevaluated){let{props:V,items:B}=H;if(L.evaluated={props:V instanceof p.Name?void 0:V,items:B instanceof p.Name?void 0:B,dynamicProps:V instanceof p.Name,dynamicItems:B instanceof p.Name},L.source)L.source.evaluated=(0,p.stringify)(L.evaluated)}return Q.validate=L,Q}catch(F){if(delete Q.validate,delete Q.validateName,q)this.logger.error("Error compiling schema, function code:",q);throw F}finally{this._compilations.delete(Q)}}NQ.compileSchema=q4;function v6(Q,Y,Z){var X;Z=(0,c.resolveUrl)(this.opts.uriResolver,Y,Z);let W=Q.refs[Z];if(W)return W;let $=x6.call(this,Q,Z);if($===void 0){let G=(X=Q.localRefs)===null||X===void 0?void 0:X[Z],{schemaId:J}=this.opts;if(G)$=new x0({schema:G,schemaId:J,root:Q,baseId:Y})}if($===void 0)return;return Q.refs[Z]=y6.call(this,$)}NQ.resolveRef=v6;function y6(Q){if((0,c.inlineRef)(Q.schema,this.opts.inlineRefs))return Q.schema;return Q.validate?Q:q4.call(this,Q)}function DQ(Q){for(let Y of this._compilations)if(f6(Y,Q))return Y}NQ.getCompilingSchema=DQ;function f6(Q,Y){return Q.schema===Y.schema&&Q.root===Y.root&&Q.baseId===Y.baseId}function x6(Q,Y){let Z;while(typeof(Z=this.refs[Y])=="string")Y=Z;return Z||this.schemas[Y]||q1.call(this,Q,Y)}function q1(Q,Y){let Z=this.opts.uriResolver.parse(Y),X=(0,c._getFullPath)(this.opts.uriResolver,Z),W=(0,c.getFullPath)(this.opts.uriResolver,Q.baseId,void 0);if(Object.keys(Q.schema).length>0&&X===W)return H4.call(this,Z,Q);let $=(0,c.normalizeId)(X),G=this.refs[$]||this.schemas[$];if(typeof G=="string"){let J=q1.call(this,Q,G);if(typeof(J===null||J===void 0?void 0:J.schema)!=="object")return;return H4.call(this,Z,J)}if(typeof(G===null||G===void 0?void 0:G.schema)!=="object")return;if(!G.validate)q4.call(this,G);if($===(0,c.normalizeId)(Y)){let{schema:J}=G,{schemaId:z}=this.opts,H=J[z];if(H)W=(0,c.resolveUrl)(this.opts.uriResolver,W,H);return new x0({schema:J,schemaId:z,root:Q,baseId:W})}return H4.call(this,Z,G)}NQ.resolveSchema=q1;var _6=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function H4(Q,{baseId:Y,schema:Z,root:X}){var W;if(((W=Q.fragment)===null||W===void 0?void 0:W[0])!=="/")return;for(let J of Q.fragment.slice(1).split("/")){if(typeof Z==="boolean")return;let z=Z[(0,OQ.unescapeFragment)(J)];if(z===void 0)return;Z=z;let H=typeof Z==="object"&&Z[this.opts.schemaId];if(!_6.has(J)&&H)Y=(0,c.resolveUrl)(this.opts.uriResolver,Y,H)}let $;if(typeof Z!="boolean"&&Z.$ref&&!(0,OQ.schemaHasRulesButRef)(Z,this.RULES)){let J=(0,c.resolveUrl)(this.opts.uriResolver,Y,Z.$ref);$=q1.call(this,X,J)}let{schemaId:G}=this.opts;if($=$||new x0({schema:Z,schemaId:G,root:X,baseId:Y}),$.schema!==$.root.schema)return $;return}});var TQ=A((sJ,m6)=>{m6.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var B4=A((aJ,PQ)=>{var i6=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),RQ=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);function F4(Q){let Y="",Z=0,X=0;for(X=0;X<Q.length;X++){if(Z=Q[X].charCodeAt(0),Z===48)continue;if(!(Z>=48&&Z<=57||Z>=65&&Z<=70||Z>=97&&Z<=102))return"";Y+=Q[X];break}for(X+=1;X<Q.length;X++){if(Z=Q[X].charCodeAt(0),!(Z>=48&&Z<=57||Z>=65&&Z<=70||Z>=97&&Z<=102))return"";Y+=Q[X]}return Y}var d6=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function EQ(Q){return Q.length=0,!0}function p6(Q,Y,Z){if(Q.length){let X=F4(Q);if(X!=="")Y.push(X);else return Z.error=!0,!1;Q.length=0}return!0}function c6(Q){let Y=0,Z={error:!1,address:"",zone:""},X=[],W=[],$=!1,G=!1,J=p6;for(let z=0;z<Q.length;z++){let H=Q[z];if(H==="["||H==="]")continue;if(H===":"){if($===!0)G=!0;if(!J(W,X,Z))break;if(++Y>7){Z.error=!0;break}if(z>0&&Q[z-1]===":")$=!0;X.push(":");continue}else if(H==="%"){if(!J(W,X,Z))break;J=EQ}else{W.push(H);continue}}if(W.length)if(J===EQ)Z.zone=W.join("");else if(G)X.push(W.join(""));else X.push(F4(W));return Z.address=X.join(""),Z}function wQ(Q){if(n6(Q,":")<2)return{host:Q,isIPV6:!1};let Y=c6(Q);if(!Y.error){let{address:Z,address:X}=Y;if(Y.zone)Z+="%"+Y.zone,X+="%25"+Y.zone;return{host:Z,isIPV6:!0,escapedHost:X}}else return{host:Q,isIPV6:!1}}function n6(Q,Y){let Z=0;for(let X=0;X<Q.length;X++)if(Q[X]===Y)Z++;return Z}function r6(Q){let Y=Q,Z=[],X=-1,W=0;while(W=Y.length){if(W===1)if(Y===".")break;else if(Y==="/"){Z.push("/");break}else{Z.push(Y);break}else if(W===2){if(Y[0]==="."){if(Y[1]===".")break;else if(Y[1]==="/"){Y=Y.slice(2);continue}}else if(Y[0]==="/"){if(Y[1]==="."||Y[1]==="/"){Z.push("/");break}}}else if(W===3){if(Y==="/.."){if(Z.length!==0)Z.pop();Z.push("/");break}}if(Y[0]==="."){if(Y[1]==="."){if(Y[2]==="/"){Y=Y.slice(3);continue}}else if(Y[1]==="/"){Y=Y.slice(2);continue}}else if(Y[0]==="/"){if(Y[1]==="."){if(Y[2]==="/"){Y=Y.slice(2);continue}else if(Y[2]==="."){if(Y[3]==="/"){if(Y=Y.slice(3),Z.length!==0)Z.pop();continue}}}}if((X=Y.indexOf("/",1))===-1){Z.push(Y);break}else Z.push(Y.slice(0,X)),Y=Y.slice(X)}return Z.join("")}function s6(Q,Y){let Z=Y!==!0?escape:unescape;if(Q.scheme!==void 0)Q.scheme=Z(Q.scheme);if(Q.userinfo!==void 0)Q.userinfo=Z(Q.userinfo);if(Q.host!==void 0)Q.host=Z(Q.host);if(Q.path!==void 0)Q.path=Z(Q.path);if(Q.query!==void 0)Q.query=Z(Q.query);if(Q.fragment!==void 0)Q.fragment=Z(Q.fragment);return Q}function a6(Q){let Y=[];if(Q.userinfo!==void 0)Y.push(Q.userinfo),Y.push("@");if(Q.host!==void 0){let Z=unescape(Q.host);if(!RQ(Z)){let X=wQ(Z);if(X.isIPV6===!0)Z=`[${X.escapedHost}]`;else Z=Q.host}Y.push(Z)}if(typeof Q.port==="number"||typeof Q.port==="string")Y.push(":"),Y.push(String(Q.port));return Y.length?Y.join(""):void 0}PQ.exports={nonSimpleDomain:d6,recomposeAuthority:a6,normalizeComponentEncoding:s6,removeDotSegments:r6,isIPv4:RQ,isUUID:i6,normalizeIPv6:wQ,stringArrayToHexStripped:F4}});var vQ=A((tJ,kQ)=>{var{isUUID:t6}=B4(),o6=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,e6=["http","https","ws","wss","urn","urn:uuid"];function QW(Q){return e6.indexOf(Q)!==-1}function V4(Q){if(Q.secure===!0)return!0;else if(Q.secure===!1)return!1;else if(Q.scheme)return Q.scheme.length===3&&(Q.scheme[0]==="w"||Q.scheme[0]==="W")&&(Q.scheme[1]==="s"||Q.scheme[1]==="S")&&(Q.scheme[2]==="s"||Q.scheme[2]==="S");else return!1}function bQ(Q){if(!Q.host)Q.error=Q.error||"HTTP URIs must have a host.";return Q}function SQ(Q){let Y=String(Q.scheme).toLowerCase()==="https";if(Q.port===(Y?443:80)||Q.port==="")Q.port=void 0;if(!Q.path)Q.path="/";return Q}function YW(Q){return Q.secure=V4(Q),Q.resourceName=(Q.path||"/")+(Q.query?"?"+Q.query:""),Q.path=void 0,Q.query=void 0,Q}function ZW(Q){if(Q.port===(V4(Q)?443:80)||Q.port==="")Q.port=void 0;if(typeof Q.secure==="boolean")Q.scheme=Q.secure?"wss":"ws",Q.secure=void 0;if(Q.resourceName){let[Y,Z]=Q.resourceName.split("?");Q.path=Y&&Y!=="/"?Y:void 0,Q.query=Z,Q.resourceName=void 0}return Q.fragment=void 0,Q}function XW(Q,Y){if(!Q.path)return Q.error="URN can not be parsed",Q;let Z=Q.path.match(o6);if(Z){let X=Y.scheme||Q.scheme||"urn";Q.nid=Z[1].toLowerCase(),Q.nss=Z[2];let W=`${X}:${Y.nid||Q.nid}`,$=K4(W);if(Q.path=void 0,$)Q=$.parse(Q,Y)}else Q.error=Q.error||"URN can not be parsed.";return Q}function WW(Q,Y){if(Q.nid===void 0)throw Error("URN without nid cannot be serialized");let Z=Y.scheme||Q.scheme||"urn",X=Q.nid.toLowerCase(),W=`${Z}:${Y.nid||X}`,$=K4(W);if($)Q=$.serialize(Q,Y);let G=Q,J=Q.nss;return G.path=`${X||Y.nid}:${J}`,Y.skipEscape=!0,G}function $W(Q,Y){let Z=Q;if(Z.uuid=Z.nss,Z.nss=void 0,!Y.tolerant&&(!Z.uuid||!t6(Z.uuid)))Z.error=Z.error||"UUID is not valid.";return Z}function GW(Q){let Y=Q;return Y.nss=(Q.uuid||"").toLowerCase(),Y}var CQ={scheme:"http",domainHost:!0,parse:bQ,serialize:SQ},JW={scheme:"https",domainHost:CQ.domainHost,parse:bQ,serialize:SQ},B1={scheme:"ws",domainHost:!0,parse:YW,serialize:ZW},zW={scheme:"wss",domainHost:B1.domainHost,parse:B1.parse,serialize:B1.serialize},HW={scheme:"urn",parse:XW,serialize:WW,skipNormalize:!0},qW={scheme:"urn:uuid",parse:$W,serialize:GW,skipNormalize:!0},V1={http:CQ,https:JW,ws:B1,wss:zW,urn:HW,"urn:uuid":qW};Object.setPrototypeOf(V1,null);function K4(Q){return Q&&(V1[Q]||V1[Q.toLowerCase()])||void 0}kQ.exports={wsIsSecure:V4,SCHEMES:V1,isValidSchemeName:QW,getSchemeHandler:K4}});var xQ=A((oJ,L1)=>{var{normalizeIPv6:FW,removeDotSegments:_0,recomposeAuthority:BW,normalizeComponentEncoding:K1,isIPv4:VW,nonSimpleDomain:KW}=B4(),{SCHEMES:LW,getSchemeHandler:yQ}=vQ();function UW(Q,Y){if(typeof Q==="string")Q=a(Y0(Q,Y),Y);else if(typeof Q==="object")Q=Y0(a(Q,Y),Y);return Q}function AW(Q,Y,Z){let X=Z?Object.assign({scheme:"null"},Z):{scheme:"null"},W=fQ(Y0(Q,X),Y0(Y,X),X,!0);return X.skipEscape=!0,a(W,X)}function fQ(Q,Y,Z,X){let W={};if(!X)Q=Y0(a(Q,Z),Z),Y=Y0(a(Y,Z),Z);if(Z=Z||{},!Z.tolerant&&Y.scheme)W.scheme=Y.scheme,W.userinfo=Y.userinfo,W.host=Y.host,W.port=Y.port,W.path=_0(Y.path||""),W.query=Y.query;else{if(Y.userinfo!==void 0||Y.host!==void 0||Y.port!==void 0)W.userinfo=Y.userinfo,W.host=Y.host,W.port=Y.port,W.path=_0(Y.path||""),W.query=Y.query;else{if(!Y.path)if(W.path=Q.path,Y.query!==void 0)W.query=Y.query;else W.query=Q.query;else{if(Y.path[0]==="/")W.path=_0(Y.path);else{if((Q.userinfo!==void 0||Q.host!==void 0||Q.port!==void 0)&&!Q.path)W.path="/"+Y.path;else if(!Q.path)W.path=Y.path;else W.path=Q.path.slice(0,Q.path.lastIndexOf("/")+1)+Y.path;W.path=_0(W.path)}W.query=Y.query}W.userinfo=Q.userinfo,W.host=Q.host,W.port=Q.port}W.scheme=Q.scheme}return W.fragment=Y.fragment,W}function MW(Q,Y,Z){if(typeof Q==="string")Q=unescape(Q),Q=a(K1(Y0(Q,Z),!0),{...Z,skipEscape:!0});else if(typeof Q==="object")Q=a(K1(Q,!0),{...Z,skipEscape:!0});if(typeof Y==="string")Y=unescape(Y),Y=a(K1(Y0(Y,Z),!0),{...Z,skipEscape:!0});else if(typeof Y==="object")Y=a(K1(Y,!0),{...Z,skipEscape:!0});return Q.toLowerCase()===Y.toLowerCase()}function a(Q,Y){let Z={host:Q.host,scheme:Q.scheme,userinfo:Q.userinfo,port:Q.port,path:Q.path,query:Q.query,nid:Q.nid,nss:Q.nss,uuid:Q.uuid,fragment:Q.fragment,reference:Q.reference,resourceName:Q.resourceName,secure:Q.secure,error:""},X=Object.assign({},Y),W=[],$=yQ(X.scheme||Z.scheme);if($&&$.serialize)$.serialize(Z,X);if(Z.path!==void 0)if(!X.skipEscape){if(Z.path=escape(Z.path),Z.scheme!==void 0)Z.path=Z.path.split("%3A").join(":")}else Z.path=unescape(Z.path);if(X.reference!=="suffix"&&Z.scheme)W.push(Z.scheme,":");let G=BW(Z);if(G!==void 0){if(X.reference!=="suffix")W.push("//");if(W.push(G),Z.path&&Z.path[0]!=="/")W.push("/")}if(Z.path!==void 0){let J=Z.path;if(!X.absolutePath&&(!$||!$.absolutePath))J=_0(J);if(G===void 0&&J[0]==="/"&&J[1]==="/")J="/%2F"+J.slice(2);W.push(J)}if(Z.query!==void 0)W.push("?",Z.query);if(Z.fragment!==void 0)W.push("#",Z.fragment);return W.join("")}var jW=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function Y0(Q,Y){let Z=Object.assign({},Y),X={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},W=!1;if(Z.reference==="suffix")if(Z.scheme)Q=Z.scheme+":"+Q;else Q="//"+Q;let $=Q.match(jW);if($){if(X.scheme=$[1],X.userinfo=$[3],X.host=$[4],X.port=parseInt($[5],10),X.path=$[6]||"",X.query=$[7],X.fragment=$[8],isNaN(X.port))X.port=$[5];if(X.host)if(VW(X.host)===!1){let z=FW(X.host);X.host=z.host.toLowerCase(),W=z.isIPV6}else W=!0;if(X.scheme===void 0&&X.userinfo===void 0&&X.host===void 0&&X.port===void 0&&X.query===void 0&&!X.path)X.reference="same-document";else if(X.scheme===void 0)X.reference="relative";else if(X.fragment===void 0)X.reference="absolute";else X.reference="uri";if(Z.reference&&Z.reference!=="suffix"&&Z.reference!==X.reference)X.error=X.error||"URI is not a "+Z.reference+" reference.";let G=yQ(Z.scheme||X.scheme);if(!Z.unicodeSupport&&(!G||!G.unicodeSupport)){if(X.host&&(Z.domainHost||G&&G.domainHost)&&W===!1&&KW(X.host))try{X.host=URL.domainToASCII(X.host.toLowerCase())}catch(J){X.error=X.error||"Host's domain name can not be converted to ASCII: "+J}}if(!G||G&&!G.skipNormalize){if(Q.indexOf("%")!==-1){if(X.scheme!==void 0)X.scheme=unescape(X.scheme);if(X.host!==void 0)X.host=unescape(X.host)}if(X.path)X.path=escape(unescape(X.path));if(X.fragment)X.fragment=encodeURI(decodeURIComponent(X.fragment))}if(G&&G.parse)G.parse(X,Z)}else X.error=X.error||"URI can not be parsed.";return X}var L4={SCHEMES:LW,normalize:UW,resolve:AW,resolveComponent:fQ,equal:MW,serialize:a,parse:Y0};L1.exports=L4;L1.exports.default=L4;L1.exports.fastUri=L4});var gQ=A((uQ)=>{Object.defineProperty(uQ,"__esModule",{value:!0});var _Q=xQ();_Q.code='require("ajv/dist/runtime/uri").default';uQ.default=_Q});var nQ=A((Z0)=>{Object.defineProperty(Z0,"__esModule",{value:!0});Z0.CodeGen=Z0.Name=Z0.nil=Z0.stringify=Z0.str=Z0._=Z0.KeywordCxt=void 0;var DW=y0();Object.defineProperty(Z0,"KeywordCxt",{enumerable:!0,get:function(){return DW.KeywordCxt}});var D0=I();Object.defineProperty(Z0,"_",{enumerable:!0,get:function(){return D0._}});Object.defineProperty(Z0,"str",{enumerable:!0,get:function(){return D0.str}});Object.defineProperty(Z0,"stringify",{enumerable:!0,get:function(){return D0.stringify}});Object.defineProperty(Z0,"nil",{enumerable:!0,get:function(){return D0.nil}});Object.defineProperty(Z0,"Name",{enumerable:!0,get:function(){return D0.Name}});Object.defineProperty(Z0,"CodeGen",{enumerable:!0,get:function(){return D0.CodeGen}});var NW=H1(),dQ=f0(),IW=r1(),u0=F1(),TW=I(),g0=C0(),U1=S0(),A4=P(),lQ=TQ(),EW=gQ(),pQ=(Q,Y)=>new RegExp(Q,Y);pQ.code="new RegExp";var RW=["removeAdditional","useDefaults","coerceTypes"],wW=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),PW={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},bW={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},hQ=200;function SW(Q){var Y,Z,X,W,$,G,J,z,H,q,F,M,L,V,B,K,U,R,T,S,D,r,t,k1,v1;let E0=Q.strict,y1=(Y=Q.code)===null||Y===void 0?void 0:Y.optimize,P4=y1===!0||y1===void 0?1:y1||0,b4=(X=(Z=Q.code)===null||Z===void 0?void 0:Z.regExp)!==null&&X!==void 0?X:pQ,nZ=(W=Q.uriResolver)!==null&&W!==void 0?W:EW.default;return{strictSchema:(G=($=Q.strictSchema)!==null&&$!==void 0?$:E0)!==null&&G!==void 0?G:!0,strictNumbers:(z=(J=Q.strictNumbers)!==null&&J!==void 0?J:E0)!==null&&z!==void 0?z:!0,strictTypes:(q=(H=Q.strictTypes)!==null&&H!==void 0?H:E0)!==null&&q!==void 0?q:"log",strictTuples:(M=(F=Q.strictTuples)!==null&&F!==void 0?F:E0)!==null&&M!==void 0?M:"log",strictRequired:(V=(L=Q.strictRequired)!==null&&L!==void 0?L:E0)!==null&&V!==void 0?V:!1,code:Q.code?{...Q.code,optimize:P4,regExp:b4}:{optimize:P4,regExp:b4},loopRequired:(B=Q.loopRequired)!==null&&B!==void 0?B:hQ,loopEnum:(K=Q.loopEnum)!==null&&K!==void 0?K:hQ,meta:(U=Q.meta)!==null&&U!==void 0?U:!0,messages:(R=Q.messages)!==null&&R!==void 0?R:!0,inlineRefs:(T=Q.inlineRefs)!==null&&T!==void 0?T:!0,schemaId:(S=Q.schemaId)!==null&&S!==void 0?S:"$id",addUsedSchema:(D=Q.addUsedSchema)!==null&&D!==void 0?D:!0,validateSchema:(r=Q.validateSchema)!==null&&r!==void 0?r:!0,validateFormats:(t=Q.validateFormats)!==null&&t!==void 0?t:!0,unicodeRegExp:(k1=Q.unicodeRegExp)!==null&&k1!==void 0?k1:!0,int32range:(v1=Q.int32range)!==null&&v1!==void 0?v1:!0,uriResolver:nZ}}class A1{constructor(Q={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,Q=this.opts={...Q,...SW(Q)};let{es5:Y,lines:Z}=this.opts.code;this.scope=new TW.ValueScope({scope:{},prefixes:wW,es5:Y,lines:Z}),this.logger=xW(Q.logger);let X=Q.validateFormats;if(Q.validateFormats=!1,this.RULES=(0,IW.getRules)(),mQ.call(this,PW,Q,"NOT SUPPORTED"),mQ.call(this,bW,Q,"DEPRECATED","warn"),this._metaOpts=yW.call(this),Q.formats)kW.call(this);if(this._addVocabularies(),this._addDefaultMetaSchema(),Q.keywords)vW.call(this,Q.keywords);if(typeof Q.meta=="object")this.addMetaSchema(Q.meta);CW.call(this),Q.validateFormats=X}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:Q,meta:Y,schemaId:Z}=this.opts,X=lQ;if(Z==="id")X={...lQ},X.id=X.$id,delete X.$id;if(Y&&Q)this.addMetaSchema(X,X[Z],!1)}defaultMeta(){let{meta:Q,schemaId:Y}=this.opts;return this.opts.defaultMeta=typeof Q=="object"?Q[Y]||Q:void 0}validate(Q,Y){let Z;if(typeof Q=="string"){if(Z=this.getSchema(Q),!Z)throw Error(`no schema with key or ref "${Q}"`)}else Z=this.compile(Q);let X=Z(Y);if(!("$async"in Z))this.errors=Z.errors;return X}compile(Q,Y){let Z=this._addSchema(Q,Y);return Z.validate||this._compileSchemaEnv(Z)}compileAsync(Q,Y){if(typeof this.opts.loadSchema!="function")throw Error("options.loadSchema should be a function");let{loadSchema:Z}=this.opts;return X.call(this,Q,Y);async function X(H,q){await W.call(this,H.$schema);let F=this._addSchema(H,q);return F.validate||$.call(this,F)}async function W(H){if(H&&!this.getSchema(H))await X.call(this,{$ref:H},!0)}async function $(H){try{return this._compileSchemaEnv(H)}catch(q){if(!(q instanceof dQ.default))throw q;return G.call(this,q),await J.call(this,q.missingSchema),$.call(this,H)}}function G({missingSchema:H,missingRef:q}){if(this.refs[H])throw Error(`AnySchema ${H} is loaded but ${q} cannot be resolved`)}async function J(H){let q=await z.call(this,H);if(!this.refs[H])await W.call(this,q.$schema);if(!this.refs[H])this.addSchema(q,H,Y)}async function z(H){let q=this._loading[H];if(q)return q;try{return await(this._loading[H]=Z(H))}finally{delete this._loading[H]}}}addSchema(Q,Y,Z,X=this.opts.validateSchema){if(Array.isArray(Q)){for(let $ of Q)this.addSchema($,void 0,Z,X);return this}let W;if(typeof Q==="object"){let{schemaId:$}=this.opts;if(W=Q[$],W!==void 0&&typeof W!="string")throw Error(`schema ${$} must be string`)}return Y=(0,g0.normalizeId)(Y||W),this._checkUnique(Y),this.schemas[Y]=this._addSchema(Q,Z,Y,X,!0),this}addMetaSchema(Q,Y,Z=this.opts.validateSchema){return this.addSchema(Q,Y,!0,Z),this}validateSchema(Q,Y){if(typeof Q=="boolean")return!0;let Z;if(Z=Q.$schema,Z!==void 0&&typeof Z!="string")throw Error("$schema must be a string");if(Z=Z||this.opts.defaultMeta||this.defaultMeta(),!Z)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let X=this.validate(Z,Q);if(!X&&Y){let W="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(W);else throw Error(W)}return X}getSchema(Q){let Y;while(typeof(Y=iQ.call(this,Q))=="string")Q=Y;if(Y===void 0){let{schemaId:Z}=this.opts,X=new u0.SchemaEnv({schema:{},schemaId:Z});if(Y=u0.resolveSchema.call(this,X,Q),!Y)return;this.refs[Q]=Y}return Y.validate||this._compileSchemaEnv(Y)}removeSchema(Q){if(Q instanceof RegExp)return this._removeAllSchemas(this.schemas,Q),this._removeAllSchemas(this.refs,Q),this;switch(typeof Q){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let Y=iQ.call(this,Q);if(typeof Y=="object")this._cache.delete(Y.schema);return delete this.schemas[Q],delete this.refs[Q],this}case"object":{let Y=Q;this._cache.delete(Y);let Z=Q[this.opts.schemaId];if(Z)Z=(0,g0.normalizeId)(Z),delete this.schemas[Z],delete this.refs[Z];return this}default:throw Error("ajv.removeSchema: invalid parameter")}}addVocabulary(Q){for(let Y of Q)this.addKeyword(Y);return this}addKeyword(Q,Y){let Z;if(typeof Q=="string"){if(Z=Q,typeof Y=="object")this.logger.warn("these parameters are deprecated, see docs for addKeyword"),Y.keyword=Z}else if(typeof Q=="object"&&Y===void 0){if(Y=Q,Z=Y.keyword,Array.isArray(Z)&&!Z.length)throw Error("addKeywords: keyword must be string or non-empty array")}else throw Error("invalid addKeywords parameters");if(uW.call(this,Z,Y),!Y)return(0,A4.eachItem)(Z,(W)=>U4.call(this,W)),this;lW.call(this,Y);let X={...Y,type:(0,U1.getJSONTypes)(Y.type),schemaType:(0,U1.getJSONTypes)(Y.schemaType)};return(0,A4.eachItem)(Z,X.type.length===0?(W)=>U4.call(this,W,X):(W)=>X.type.forEach(($)=>U4.call(this,W,X,$))),this}getKeyword(Q){let Y=this.RULES.all[Q];return typeof Y=="object"?Y.definition:!!Y}removeKeyword(Q){let{RULES:Y}=this;delete Y.keywords[Q],delete Y.all[Q];for(let Z of Y.rules){let X=Z.rules.findIndex((W)=>W.keyword===Q);if(X>=0)Z.rules.splice(X,1)}return this}addFormat(Q,Y){if(typeof Y=="string")Y=new RegExp(Y);return this.formats[Q]=Y,this}errorsText(Q=this.errors,{separator:Y=", ",dataVar:Z="data"}={}){if(!Q||Q.length===0)return"No errors";return Q.map((X)=>`${Z}${X.instancePath} ${X.message}`).reduce((X,W)=>X+Y+W)}$dataMetaSchema(Q,Y){let Z=this.RULES.all;Q=JSON.parse(JSON.stringify(Q));for(let X of Y){let W=X.split("/").slice(1),$=Q;for(let G of W)$=$[G];for(let G in Z){let J=Z[G];if(typeof J!="object")continue;let{$data:z}=J.definition,H=$[G];if(z&&H)$[G]=cQ(H)}}return Q}_removeAllSchemas(Q,Y){for(let Z in Q){let X=Q[Z];if(!Y||Y.test(Z)){if(typeof X=="string")delete Q[Z];else if(X&&!X.meta)this._cache.delete(X.schema),delete Q[Z]}}}_addSchema(Q,Y,Z,X=this.opts.validateSchema,W=this.opts.addUsedSchema){let $,{schemaId:G}=this.opts;if(typeof Q=="object")$=Q[G];else if(this.opts.jtd)throw Error("schema must be object");else if(typeof Q!="boolean")throw Error("schema must be object or boolean");let J=this._cache.get(Q);if(J!==void 0)return J;Z=(0,g0.normalizeId)($||Z);let z=g0.getSchemaRefs.call(this,Q,Z);if(J=new u0.SchemaEnv({schema:Q,schemaId:G,meta:Y,baseId:Z,localRefs:z}),this._cache.set(J.schema,J),W&&!Z.startsWith("#")){if(Z)this._checkUnique(Z);this.refs[Z]=J}if(X)this.validateSchema(Q,!0);return J}_checkUnique(Q){if(this.schemas[Q]||this.refs[Q])throw Error(`schema with key or id "${Q}" already exists`)}_compileSchemaEnv(Q){if(Q.meta)this._compileMetaSchema(Q);else u0.compileSchema.call(this,Q);if(!Q.validate)throw Error("ajv implementation error");return Q.validate}_compileMetaSchema(Q){let Y=this.opts;this.opts=this._metaOpts;try{u0.compileSchema.call(this,Q)}finally{this.opts=Y}}}A1.ValidationError=NW.default;A1.MissingRefError=dQ.default;Z0.default=A1;function mQ(Q,Y,Z,X="error"){for(let W in Q){let $=W;if($ in Y)this.logger[X](`${Z}: option ${W}. ${Q[$]}`)}}function iQ(Q){return Q=(0,g0.normalizeId)(Q),this.schemas[Q]||this.refs[Q]}function CW(){let Q=this.opts.schemas;if(!Q)return;if(Array.isArray(Q))this.addSchema(Q);else for(let Y in Q)this.addSchema(Q[Y],Y)}function kW(){for(let Q in this.opts.formats){let Y=this.opts.formats[Q];if(Y)this.addFormat(Q,Y)}}function vW(Q){if(Array.isArray(Q)){this.addVocabulary(Q);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let Y in Q){let Z=Q[Y];if(!Z.keyword)Z.keyword=Y;this.addKeyword(Z)}}function yW(){let Q={...this.opts};for(let Y of RW)delete Q[Y];return Q}var fW={log(){},warn(){},error(){}};function xW(Q){if(Q===!1)return fW;if(Q===void 0)return console;if(Q.log&&Q.warn&&Q.error)return Q;throw Error("logger must implement log, warn and error methods")}var _W=/^[a-z_$][a-z0-9_$:-]*$/i;function uW(Q,Y){let{RULES:Z}=this;if((0,A4.eachItem)(Q,(X)=>{if(Z.keywords[X])throw Error(`Keyword ${X} is already defined`);if(!_W.test(X))throw Error(`Keyword ${X} has invalid name`)}),!Y)return;if(Y.$data&&!(("code"in Y)||("validate"in Y)))throw Error('$data keyword must have "code" or "validate" function')}function U4(Q,Y,Z){var X;let W=Y===null||Y===void 0?void 0:Y.post;if(Z&&W)throw Error('keyword with "post" flag cannot have "type"');let{RULES:$}=this,G=W?$.post:$.rules.find(({type:z})=>z===Z);if(!G)G={type:Z,rules:[]},$.rules.push(G);if($.keywords[Q]=!0,!Y)return;let J={keyword:Q,definition:{...Y,type:(0,U1.getJSONTypes)(Y.type),schemaType:(0,U1.getJSONTypes)(Y.schemaType)}};if(Y.before)gW.call(this,G,J,Y.before);else G.rules.push(J);$.all[Q]=J,(X=Y.implements)===null||X===void 0||X.forEach((z)=>this.addKeyword(z))}function gW(Q,Y,Z){let X=Q.rules.findIndex((W)=>W.keyword===Z);if(X>=0)Q.rules.splice(X,0,Y);else Q.rules.push(Y),this.logger.warn(`rule ${Z} is not defined`)}function lW(Q){let{metaSchema:Y}=Q;if(Y===void 0)return;if(Q.$data&&this.opts.$data)Y=cQ(Y);Q.validateSchema=this.compile(Y,!0)}var hW={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function cQ(Q){return{anyOf:[Q,hW]}}});var sQ=A((rQ)=>{Object.defineProperty(rQ,"__esModule",{value:!0});var dW={keyword:"id",code(){throw Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};rQ.default=dW});var YY=A((eQ)=>{Object.defineProperty(eQ,"__esModule",{value:!0});eQ.callRef=eQ.getValidate=void 0;var cW=f0(),aQ=h(),g=I(),N0=e(),tQ=F1(),M1=P(),nW={keyword:"$ref",schemaType:"string",code(Q){let{gen:Y,schema:Z,it:X}=Q,{baseId:W,schemaEnv:$,validateName:G,opts:J,self:z}=X,{root:H}=$;if((Z==="#"||Z==="#/")&&W===H.baseId)return F();let q=tQ.resolveRef.call(z,H,W,Z);if(q===void 0)throw new cW.default(X.opts.uriResolver,W,Z);if(q instanceof tQ.SchemaEnv)return M(q);return L(q);function F(){if($===H)return j1(Q,G,$,$.$async);let V=Y.scopeValue("root",{ref:H});return j1(Q,g._`${V}.validate`,H,H.$async)}function M(V){let B=oQ(Q,V);j1(Q,B,V,V.$async)}function L(V){let B=Y.scopeValue("schema",J.code.source===!0?{ref:V,code:(0,g.stringify)(V)}:{ref:V}),K=Y.name("valid"),U=Q.subschema({schema:V,dataTypes:[],schemaPath:g.nil,topSchemaRef:B,errSchemaPath:Z},K);Q.mergeEvaluated(U),Q.ok(K)}}};function oQ(Q,Y){let{gen:Z}=Q;return Y.validate?Z.scopeValue("validate",{ref:Y.validate}):g._`${Z.scopeValue("wrapper",{ref:Y})}.validate`}eQ.getValidate=oQ;function j1(Q,Y,Z,X){let{gen:W,it:$}=Q,{allErrors:G,schemaEnv:J,opts:z}=$,H=z.passContext?N0.default.this:g.nil;if(X)q();else F();function q(){if(!J.$async)throw Error("async schema referenced by sync schema");let V=W.let("valid");W.try(()=>{if(W.code(g._`await ${(0,aQ.callValidateCode)(Q,Y,H)}`),L(Y),!G)W.assign(V,!0)},(B)=>{if(W.if(g._`!(${B} instanceof ${$.ValidationError})`,()=>W.throw(B)),M(B),!G)W.assign(V,!1)}),Q.ok(V)}function F(){Q.result((0,aQ.callValidateCode)(Q,Y,H),()=>L(Y),()=>M(Y))}function M(V){let B=g._`${V}.errors`;W.assign(N0.default.vErrors,g._`${N0.default.vErrors} === null ? ${B} : ${N0.default.vErrors}.concat(${B})`),W.assign(N0.default.errors,g._`${N0.default.vErrors}.length`)}function L(V){var B;if(!$.opts.unevaluated)return;let K=(B=Z===null||Z===void 0?void 0:Z.validate)===null||B===void 0?void 0:B.evaluated;if($.props!==!0)if(K&&!K.dynamicProps){if(K.props!==void 0)$.props=M1.mergeEvaluated.props(W,K.props,$.props)}else{let U=W.var("props",g._`${V}.evaluated.props`);$.props=M1.mergeEvaluated.props(W,U,$.props,g.Name)}if($.items!==!0)if(K&&!K.dynamicItems){if(K.items!==void 0)$.items=M1.mergeEvaluated.items(W,K.items,$.items)}else{let U=W.var("items",g._`${V}.evaluated.items`);$.items=M1.mergeEvaluated.items(W,U,$.items,g.Name)}}}eQ.callRef=j1;eQ.default=nW});var XY=A((ZY)=>{Object.defineProperty(ZY,"__esModule",{value:!0});var aW=sQ(),tW=YY(),oW=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",aW.default,tW.default];ZY.default=oW});var $Y=A((WY)=>{Object.defineProperty(WY,"__esModule",{value:!0});var O1=I(),z0=O1.operators,D1={maximum:{okStr:"<=",ok:z0.LTE,fail:z0.GT},minimum:{okStr:">=",ok:z0.GTE,fail:z0.LT},exclusiveMaximum:{okStr:"<",ok:z0.LT,fail:z0.GTE},exclusiveMinimum:{okStr:">",ok:z0.GT,fail:z0.LTE}},Q$={message:({keyword:Q,schemaCode:Y})=>O1.str`must be ${D1[Q].okStr} ${Y}`,params:({keyword:Q,schemaCode:Y})=>O1._`{comparison: ${D1[Q].okStr}, limit: ${Y}}`},Y$={keyword:Object.keys(D1),type:"number",schemaType:"number",$data:!0,error:Q$,code(Q){let{keyword:Y,data:Z,schemaCode:X}=Q;Q.fail$data(O1._`${Z} ${D1[Y].fail} ${X} || isNaN(${Z})`)}};WY.default=Y$});var JY=A((GY)=>{Object.defineProperty(GY,"__esModule",{value:!0});var l0=I(),X$={message:({schemaCode:Q})=>l0.str`must be multiple of ${Q}`,params:({schemaCode:Q})=>l0._`{multipleOf: ${Q}}`},W$={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:X$,code(Q){let{gen:Y,data:Z,schemaCode:X,it:W}=Q,$=W.opts.multipleOfPrecision,G=Y.let("res"),J=$?l0._`Math.abs(Math.round(${G}) - ${G}) > 1e-${$}`:l0._`${G} !== parseInt(${G})`;Q.fail$data(l0._`(${X} === 0 || (${G} = ${Z}/${X}, ${J}))`)}};GY.default=W$});var qY=A((HY)=>{Object.defineProperty(HY,"__esModule",{value:!0});function zY(Q){let Y=Q.length,Z=0,X=0,W;while(X<Y)if(Z++,W=Q.charCodeAt(X++),W>=55296&&W<=56319&&X<Y){if(W=Q.charCodeAt(X),(W&64512)===56320)X++}return Z}HY.default=zY;zY.code='require("ajv/dist/runtime/ucs2length").default'});var BY=A((FY)=>{Object.defineProperty(FY,"__esModule",{value:!0});var V0=I(),J$=P(),z$=qY(),H$={message({keyword:Q,schemaCode:Y}){let Z=Q==="maxLength"?"more":"fewer";return V0.str`must NOT have ${Z} than ${Y} characters`},params:({schemaCode:Q})=>V0._`{limit: ${Q}}`},q$={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:H$,code(Q){let{keyword:Y,data:Z,schemaCode:X,it:W}=Q,$=Y==="maxLength"?V0.operators.GT:V0.operators.LT,G=W.opts.unicode===!1?V0._`${Z}.length`:V0._`${(0,J$.useFunc)(Q.gen,z$.default)}(${Z})`;Q.fail$data(V0._`${G} ${$} ${X}`)}};FY.default=q$});var KY=A((VY)=>{Object.defineProperty(VY,"__esModule",{value:!0});var B$=h(),N1=I(),V$={message:({schemaCode:Q})=>N1.str`must match pattern "${Q}"`,params:({schemaCode:Q})=>N1._`{pattern: ${Q}}`},K$={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:V$,code(Q){let{data:Y,$data:Z,schema:X,schemaCode:W,it:$}=Q,G=$.opts.unicodeRegExp?"u":"",J=Z?N1._`(new RegExp(${W}, ${G}))`:(0,B$.usePattern)(Q,X);Q.fail$data(N1._`!${J}.test(${Y})`)}};VY.default=K$});var UY=A((LY)=>{Object.defineProperty(LY,"__esModule",{value:!0});var h0=I(),U$={message({keyword:Q,schemaCode:Y}){let Z=Q==="maxProperties"?"more":"fewer";return h0.str`must NOT have ${Z} than ${Y} properties`},params:({schemaCode:Q})=>h0._`{limit: ${Q}}`},A$={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:U$,code(Q){let{keyword:Y,data:Z,schemaCode:X}=Q,W=Y==="maxProperties"?h0.operators.GT:h0.operators.LT;Q.fail$data(h0._`Object.keys(${Z}).length ${W} ${X}`)}};LY.default=A$});var MY=A((AY)=>{Object.defineProperty(AY,"__esModule",{value:!0});var m0=h(),i0=I(),j$=P(),O$={message:({params:{missingProperty:Q}})=>i0.str`must have required property '${Q}'`,params:({params:{missingProperty:Q}})=>i0._`{missingProperty: ${Q}}`},D$={keyword:"required",type:"object",schemaType:"array",$data:!0,error:O$,code(Q){let{gen:Y,schema:Z,schemaCode:X,data:W,$data:$,it:G}=Q,{opts:J}=G;if(!$&&Z.length===0)return;let z=Z.length>=J.loopRequired;if(G.allErrors)H();else q();if(J.strictRequired){let L=Q.parentSchema.properties,{definedProperties:V}=Q.it;for(let B of Z)if((L===null||L===void 0?void 0:L[B])===void 0&&!V.has(B)){let K=G.schemaEnv.baseId+G.errSchemaPath,U=`required property "${B}" is not defined at "${K}" (strictRequired)`;(0,j$.checkStrictMode)(G,U,G.opts.strictRequired)}}function H(){if(z||$)Q.block$data(i0.nil,F);else for(let L of Z)(0,m0.checkReportMissingProp)(Q,L)}function q(){let L=Y.let("missing");if(z||$){let V=Y.let("valid",!0);Q.block$data(V,()=>M(L,V)),Q.ok(V)}else Y.if((0,m0.checkMissingProp)(Q,Z,L)),(0,m0.reportMissingProp)(Q,L),Y.else()}function F(){Y.forOf("prop",X,(L)=>{Q.setParams({missingProperty:L}),Y.if((0,m0.noPropertyInData)(Y,W,L,J.ownProperties),()=>Q.error())})}function M(L,V){Q.setParams({missingProperty:L}),Y.forOf(L,X,()=>{Y.assign(V,(0,m0.propertyInData)(Y,W,L,J.ownProperties)),Y.if((0,i0.not)(V),()=>{Q.error(),Y.break()})},i0.nil)}}};AY.default=D$});var OY=A((jY)=>{Object.defineProperty(jY,"__esModule",{value:!0});var d0=I(),I$={message({keyword:Q,schemaCode:Y}){let Z=Q==="maxItems"?"more":"fewer";return d0.str`must NOT have ${Z} than ${Y} items`},params:({schemaCode:Q})=>d0._`{limit: ${Q}}`},T$={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:I$,code(Q){let{keyword:Y,data:Z,schemaCode:X}=Q,W=Y==="maxItems"?d0.operators.GT:d0.operators.LT;Q.fail$data(d0._`${Z}.length ${W} ${X}`)}};jY.default=T$});var I1=A((NY)=>{Object.defineProperty(NY,"__esModule",{value:!0});var DY=Z4();DY.code='require("ajv/dist/runtime/equal").default';NY.default=DY});var TY=A((IY)=>{Object.defineProperty(IY,"__esModule",{value:!0});var M4=S0(),v=I(),w$=P(),P$=I1(),b$={message:({params:{i:Q,j:Y}})=>v.str`must NOT have duplicate items (items ## ${Y} and ${Q} are identical)`,params:({params:{i:Q,j:Y}})=>v._`{i: ${Q}, j: ${Y}}`},S$={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:b$,code(Q){let{gen:Y,data:Z,$data:X,schema:W,parentSchema:$,schemaCode:G,it:J}=Q;if(!X&&!W)return;let z=Y.let("valid"),H=$.items?(0,M4.getSchemaTypes)($.items):[];Q.block$data(z,q,v._`${G} === false`),Q.ok(z);function q(){let V=Y.let("i",v._`${Z}.length`),B=Y.let("j");Q.setParams({i:V,j:B}),Y.assign(z,!0),Y.if(v._`${V} > 1`,()=>(F()?M:L)(V,B))}function F(){return H.length>0&&!H.some((V)=>V==="object"||V==="array")}function M(V,B){let K=Y.name("item"),U=(0,M4.checkDataTypes)(H,K,J.opts.strictNumbers,M4.DataType.Wrong),R=Y.const("indices",v._`{}`);Y.for(v._`;${V}--;`,()=>{if(Y.let(K,v._`${Z}[${V}]`),Y.if(U,v._`continue`),H.length>1)Y.if(v._`typeof ${K} == "string"`,v._`${K} += "_"`);Y.if(v._`typeof ${R}[${K}] == "number"`,()=>{Y.assign(B,v._`${R}[${K}]`),Q.error(),Y.assign(z,!1).break()}).code(v._`${R}[${K}] = ${V}`)})}function L(V,B){let K=(0,w$.useFunc)(Y,P$.default),U=Y.name("outer");Y.label(U).for(v._`;${V}--;`,()=>Y.for(v._`${B} = ${V}; ${B}--;`,()=>Y.if(v._`${K}(${Z}[${V}], ${Z}[${B}])`,()=>{Q.error(),Y.assign(z,!1).break(U)})))}}};IY.default=S$});var RY=A((EY)=>{Object.defineProperty(EY,"__esModule",{value:!0});var j4=I(),k$=P(),v$=I1(),y$={message:"must be equal to constant",params:({schemaCode:Q})=>j4._`{allowedValue: ${Q}}`},f$={keyword:"const",$data:!0,error:y$,code(Q){let{gen:Y,data:Z,$data:X,schemaCode:W,schema:$}=Q;if(X||$&&typeof $=="object")Q.fail$data(j4._`!${(0,k$.useFunc)(Y,v$.default)}(${Z}, ${W})`);else Q.fail(j4._`${$} !== ${Z}`)}};EY.default=f$});var PY=A((wY)=>{Object.defineProperty(wY,"__esModule",{value:!0});var p0=I(),_$=P(),u$=I1(),g$={message:"must be equal to one of the allowed values",params:({schemaCode:Q})=>p0._`{allowedValues: ${Q}}`},l$={keyword:"enum",schemaType:"array",$data:!0,error:g$,code(Q){let{gen:Y,data:Z,$data:X,schema:W,schemaCode:$,it:G}=Q;if(!X&&W.length===0)throw Error("enum must have non-empty array");let J=W.length>=G.opts.loopEnum,z,H=()=>z!==null&&z!==void 0?z:z=(0,_$.useFunc)(Y,u$.default),q;if(J||X)q=Y.let("valid"),Q.block$data(q,F);else{if(!Array.isArray(W))throw Error("ajv implementation error");let L=Y.const("vSchema",$);q=(0,p0.or)(...W.map((V,B)=>M(L,B)))}Q.pass(q);function F(){Y.assign(q,!1),Y.forOf("v",$,(L)=>Y.if(p0._`${H()}(${Z}, ${L})`,()=>Y.assign(q,!0).break()))}function M(L,V){let B=W[V];return typeof B==="object"&&B!==null?p0._`${H()}(${Z}, ${L}[${V}])`:p0._`${Z} === ${B}`}}};wY.default=l$});var SY=A((bY)=>{Object.defineProperty(bY,"__esModule",{value:!0});var m$=$Y(),i$=JY(),d$=BY(),p$=KY(),c$=UY(),n$=MY(),r$=OY(),s$=TY(),a$=RY(),t$=PY(),o$=[m$.default,i$.default,d$.default,p$.default,c$.default,n$.default,r$.default,s$.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},a$.default,t$.default];bY.default=o$});var D4=A((kY)=>{Object.defineProperty(kY,"__esModule",{value:!0});kY.validateAdditionalItems=void 0;var K0=I(),O4=P(),Q7={message:({params:{len:Q}})=>K0.str`must NOT have more than ${Q} items`,params:({params:{len:Q}})=>K0._`{limit: ${Q}}`},Y7={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:Q7,code(Q){let{parentSchema:Y,it:Z}=Q,{items:X}=Y;if(!Array.isArray(X)){(0,O4.checkStrictMode)(Z,'"additionalItems" is ignored when "items" is not an array of schemas');return}CY(Q,X)}};function CY(Q,Y){let{gen:Z,schema:X,data:W,keyword:$,it:G}=Q;G.items=!0;let J=Z.const("len",K0._`${W}.length`);if(X===!1)Q.setParams({len:Y.length}),Q.pass(K0._`${J} <= ${Y.length}`);else if(typeof X=="object"&&!(0,O4.alwaysValidSchema)(G,X)){let H=Z.var("valid",K0._`${J} <= ${Y.length}`);Z.if((0,K0.not)(H),()=>z(H)),Q.ok(H)}function z(H){Z.forRange("i",Y.length,J,(q)=>{if(Q.subschema({keyword:$,dataProp:q,dataPropType:O4.Type.Num},H),!G.allErrors)Z.if((0,K0.not)(H),()=>Z.break())})}}kY.validateAdditionalItems=CY;kY.default=Y7});var N4=A((xY)=>{Object.defineProperty(xY,"__esModule",{value:!0});xY.validateTuple=void 0;var yY=I(),T1=P(),X7=h(),W7={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(Q){let{schema:Y,it:Z}=Q;if(Array.isArray(Y))return fY(Q,"additionalItems",Y);if(Z.items=!0,(0,T1.alwaysValidSchema)(Z,Y))return;Q.ok((0,X7.validateArray)(Q))}};function fY(Q,Y,Z=Q.schema){let{gen:X,parentSchema:W,data:$,keyword:G,it:J}=Q;if(q(W),J.opts.unevaluated&&Z.length&&J.items!==!0)J.items=T1.mergeEvaluated.items(X,Z.length,J.items);let z=X.name("valid"),H=X.const("len",yY._`${$}.length`);Z.forEach((F,M)=>{if((0,T1.alwaysValidSchema)(J,F))return;X.if(yY._`${H} > ${M}`,()=>Q.subschema({keyword:G,schemaProp:M,dataProp:M},z)),Q.ok(z)});function q(F){let{opts:M,errSchemaPath:L}=J,V=Z.length,B=V===F.minItems&&(V===F.maxItems||F[Y]===!1);if(M.strictTuples&&!B){let K=`"${G}" is ${V}-tuple, but minItems or maxItems/${Y} are not specified or different at path "${L}"`;(0,T1.checkStrictMode)(J,K,M.strictTuples)}}}xY.validateTuple=fY;xY.default=W7});var gY=A((uY)=>{Object.defineProperty(uY,"__esModule",{value:!0});var G7=N4(),J7={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:(Q)=>(0,G7.validateTuple)(Q,"items")};uY.default=J7});var mY=A((hY)=>{Object.defineProperty(hY,"__esModule",{value:!0});var lY=I(),H7=P(),q7=h(),F7=D4(),B7={message:({params:{len:Q}})=>lY.str`must NOT have more than ${Q} items`,params:({params:{len:Q}})=>lY._`{limit: ${Q}}`},V7={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:B7,code(Q){let{schema:Y,parentSchema:Z,it:X}=Q,{prefixItems:W}=Z;if(X.items=!0,(0,H7.alwaysValidSchema)(X,Y))return;if(W)(0,F7.validateAdditionalItems)(Q,W);else Q.ok((0,q7.validateArray)(Q))}};hY.default=V7});var dY=A((iY)=>{Object.defineProperty(iY,"__esModule",{value:!0});var m=I(),E1=P(),L7={message:({params:{min:Q,max:Y}})=>Y===void 0?m.str`must contain at least ${Q} valid item(s)`:m.str`must contain at least ${Q} and no more than ${Y} valid item(s)`,params:({params:{min:Q,max:Y}})=>Y===void 0?m._`{minContains: ${Q}}`:m._`{minContains: ${Q}, maxContains: ${Y}}`},U7={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:L7,code(Q){let{gen:Y,schema:Z,parentSchema:X,data:W,it:$}=Q,G,J,{minContains:z,maxContains:H}=X;if($.opts.next)G=z===void 0?1:z,J=H;else G=1;let q=Y.const("len",m._`${W}.length`);if(Q.setParams({min:G,max:J}),J===void 0&&G===0){(0,E1.checkStrictMode)($,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(J!==void 0&&G>J){(0,E1.checkStrictMode)($,'"minContains" > "maxContains" is always invalid'),Q.fail();return}if((0,E1.alwaysValidSchema)($,Z)){let B=m._`${q} >= ${G}`;if(J!==void 0)B=m._`${B} && ${q} <= ${J}`;Q.pass(B);return}$.items=!0;let F=Y.name("valid");if(J===void 0&&G===1)L(F,()=>Y.if(F,()=>Y.break()));else if(G===0){if(Y.let(F,!0),J!==void 0)Y.if(m._`${W}.length > 0`,M)}else Y.let(F,!1),M();Q.result(F,()=>Q.reset());function M(){let B=Y.name("_valid"),K=Y.let("count",0);L(B,()=>Y.if(B,()=>V(K)))}function L(B,K){Y.forRange("i",0,q,(U)=>{Q.subschema({keyword:"contains",dataProp:U,dataPropType:E1.Type.Num,compositeRule:!0},B),K()})}function V(B){if(Y.code(m._`${B}++`),J===void 0)Y.if(m._`${B} >= ${G}`,()=>Y.assign(F,!0).break());else if(Y.if(m._`${B} > ${J}`,()=>Y.assign(F,!1).break()),G===1)Y.assign(F,!0);else Y.if(m._`${B} >= ${G}`,()=>Y.assign(F,!0))}}};iY.default=U7});var aY=A((nY)=>{Object.defineProperty(nY,"__esModule",{value:!0});nY.validateSchemaDeps=nY.validatePropertyDeps=nY.error=void 0;var I4=I(),M7=P(),c0=h();nY.error={message:({params:{property:Q,depsCount:Y,deps:Z}})=>{let X=Y===1?"property":"properties";return I4.str`must have ${X} ${Z} when property ${Q} is present`},params:({params:{property:Q,depsCount:Y,deps:Z,missingProperty:X}})=>I4._`{property: ${Q},
|
|
6
|
+
missingProperty: ${X},
|
|
7
|
+
depsCount: ${Y},
|
|
8
|
+
deps: ${Z}}`};var j7={keyword:"dependencies",type:"object",schemaType:"object",error:nY.error,code(Q){let[Y,Z]=O7(Q);pY(Q,Y),cY(Q,Z)}};function O7({schema:Q}){let Y={},Z={};for(let X in Q){if(X==="__proto__")continue;let W=Array.isArray(Q[X])?Y:Z;W[X]=Q[X]}return[Y,Z]}function pY(Q,Y=Q.schema){let{gen:Z,data:X,it:W}=Q;if(Object.keys(Y).length===0)return;let $=Z.let("missing");for(let G in Y){let J=Y[G];if(J.length===0)continue;let z=(0,c0.propertyInData)(Z,X,G,W.opts.ownProperties);if(Q.setParams({property:G,depsCount:J.length,deps:J.join(", ")}),W.allErrors)Z.if(z,()=>{for(let H of J)(0,c0.checkReportMissingProp)(Q,H)});else Z.if(I4._`${z} && (${(0,c0.checkMissingProp)(Q,J,$)})`),(0,c0.reportMissingProp)(Q,$),Z.else()}}nY.validatePropertyDeps=pY;function cY(Q,Y=Q.schema){let{gen:Z,data:X,keyword:W,it:$}=Q,G=Z.name("valid");for(let J in Y){if((0,M7.alwaysValidSchema)($,Y[J]))continue;Z.if((0,c0.propertyInData)(Z,X,J,$.opts.ownProperties),()=>{let z=Q.subschema({keyword:W,schemaProp:J},G);Q.mergeValidEvaluated(z,G)},()=>Z.var(G,!0)),Q.ok(G)}}nY.validateSchemaDeps=cY;nY.default=j7});var eY=A((oY)=>{Object.defineProperty(oY,"__esModule",{value:!0});var tY=I(),I7=P(),T7={message:"property name must be valid",params:({params:Q})=>tY._`{propertyName: ${Q.propertyName}}`},E7={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:T7,code(Q){let{gen:Y,schema:Z,data:X,it:W}=Q;if((0,I7.alwaysValidSchema)(W,Z))return;let $=Y.name("valid");Y.forIn("key",X,(G)=>{Q.setParams({propertyName:G}),Q.subschema({keyword:"propertyNames",data:G,dataTypes:["string"],propertyName:G,compositeRule:!0},$),Y.if((0,tY.not)($),()=>{if(Q.error(!0),!W.allErrors)Y.break()})}),Q.ok($)}};oY.default=E7});var T4=A((QZ)=>{Object.defineProperty(QZ,"__esModule",{value:!0});var R1=h(),n=I(),w7=e(),w1=P(),P7={message:"must NOT have additional properties",params:({params:Q})=>n._`{additionalProperty: ${Q.additionalProperty}}`},b7={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:P7,code(Q){let{gen:Y,schema:Z,parentSchema:X,data:W,errsCount:$,it:G}=Q;if(!$)throw Error("ajv implementation error");let{allErrors:J,opts:z}=G;if(G.props=!0,z.removeAdditional!=="all"&&(0,w1.alwaysValidSchema)(G,Z))return;let H=(0,R1.allSchemaProperties)(X.properties),q=(0,R1.allSchemaProperties)(X.patternProperties);F(),Q.ok(n._`${$} === ${w7.default.errors}`);function F(){Y.forIn("key",W,(K)=>{if(!H.length&&!q.length)V(K);else Y.if(M(K),()=>V(K))})}function M(K){let U;if(H.length>8){let R=(0,w1.schemaRefOrVal)(G,X.properties,"properties");U=(0,R1.isOwnProperty)(Y,R,K)}else if(H.length)U=(0,n.or)(...H.map((R)=>n._`${K} === ${R}`));else U=n.nil;if(q.length)U=(0,n.or)(U,...q.map((R)=>n._`${(0,R1.usePattern)(Q,R)}.test(${K})`));return(0,n.not)(U)}function L(K){Y.code(n._`delete ${W}[${K}]`)}function V(K){if(z.removeAdditional==="all"||z.removeAdditional&&Z===!1){L(K);return}if(Z===!1){if(Q.setParams({additionalProperty:K}),Q.error(),!J)Y.break();return}if(typeof Z=="object"&&!(0,w1.alwaysValidSchema)(G,Z)){let U=Y.name("valid");if(z.removeAdditional==="failing")B(K,U,!1),Y.if((0,n.not)(U),()=>{Q.reset(),L(K)});else if(B(K,U),!J)Y.if((0,n.not)(U),()=>Y.break())}}function B(K,U,R){let T={keyword:"additionalProperties",dataProp:K,dataPropType:w1.Type.Str};if(R===!1)Object.assign(T,{compositeRule:!0,createErrors:!1,allErrors:!1});Q.subschema(T,U)}}};QZ.default=b7});var WZ=A((XZ)=>{Object.defineProperty(XZ,"__esModule",{value:!0});var C7=y0(),YZ=h(),E4=P(),ZZ=T4(),k7={keyword:"properties",type:"object",schemaType:"object",code(Q){let{gen:Y,schema:Z,parentSchema:X,data:W,it:$}=Q;if($.opts.removeAdditional==="all"&&X.additionalProperties===void 0)ZZ.default.code(new C7.KeywordCxt($,ZZ.default,"additionalProperties"));let G=(0,YZ.allSchemaProperties)(Z);for(let F of G)$.definedProperties.add(F);if($.opts.unevaluated&&G.length&&$.props!==!0)$.props=E4.mergeEvaluated.props(Y,(0,E4.toHash)(G),$.props);let J=G.filter((F)=>!(0,E4.alwaysValidSchema)($,Z[F]));if(J.length===0)return;let z=Y.name("valid");for(let F of J){if(H(F))q(F);else{if(Y.if((0,YZ.propertyInData)(Y,W,F,$.opts.ownProperties)),q(F),!$.allErrors)Y.else().var(z,!0);Y.endIf()}Q.it.definedProperties.add(F),Q.ok(z)}function H(F){return $.opts.useDefaults&&!$.compositeRule&&Z[F].default!==void 0}function q(F){Q.subschema({keyword:"properties",schemaProp:F,dataProp:F},z)}}};XZ.default=k7});var HZ=A((zZ)=>{Object.defineProperty(zZ,"__esModule",{value:!0});var $Z=h(),P1=I(),GZ=P(),JZ=P(),y7={keyword:"patternProperties",type:"object",schemaType:"object",code(Q){let{gen:Y,schema:Z,data:X,parentSchema:W,it:$}=Q,{opts:G}=$,J=(0,$Z.allSchemaProperties)(Z),z=J.filter((B)=>(0,GZ.alwaysValidSchema)($,Z[B]));if(J.length===0||z.length===J.length&&(!$.opts.unevaluated||$.props===!0))return;let H=G.strictSchema&&!G.allowMatchingProperties&&W.properties,q=Y.name("valid");if($.props!==!0&&!($.props instanceof P1.Name))$.props=(0,JZ.evaluatedPropsToName)(Y,$.props);let{props:F}=$;M();function M(){for(let B of J){if(H)L(B);if($.allErrors)V(B);else Y.var(q,!0),V(B),Y.if(q)}}function L(B){for(let K in H)if(new RegExp(B).test(K))(0,GZ.checkStrictMode)($,`property ${K} matches pattern ${B} (use allowMatchingProperties)`)}function V(B){Y.forIn("key",X,(K)=>{Y.if(P1._`${(0,$Z.usePattern)(Q,B)}.test(${K})`,()=>{let U=z.includes(B);if(!U)Q.subschema({keyword:"patternProperties",schemaProp:B,dataProp:K,dataPropType:JZ.Type.Str},q);if($.opts.unevaluated&&F!==!0)Y.assign(P1._`${F}[${K}]`,!0);else if(!U&&!$.allErrors)Y.if((0,P1.not)(q),()=>Y.break())})})}}};zZ.default=y7});var FZ=A((qZ)=>{Object.defineProperty(qZ,"__esModule",{value:!0});var x7=P(),_7={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(Q){let{gen:Y,schema:Z,it:X}=Q;if((0,x7.alwaysValidSchema)(X,Z)){Q.fail();return}let W=Y.name("valid");Q.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},W),Q.failResult(W,()=>Q.reset(),()=>Q.error())},error:{message:"must NOT be valid"}};qZ.default=_7});var VZ=A((BZ)=>{Object.defineProperty(BZ,"__esModule",{value:!0});var g7=h(),l7={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:g7.validateUnion,error:{message:"must match a schema in anyOf"}};BZ.default=l7});var LZ=A((KZ)=>{Object.defineProperty(KZ,"__esModule",{value:!0});var b1=I(),m7=P(),i7={message:"must match exactly one schema in oneOf",params:({params:Q})=>b1._`{passingSchemas: ${Q.passing}}`},d7={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:i7,code(Q){let{gen:Y,schema:Z,parentSchema:X,it:W}=Q;if(!Array.isArray(Z))throw Error("ajv implementation error");if(W.opts.discriminator&&X.discriminator)return;let $=Z,G=Y.let("valid",!1),J=Y.let("passing",null),z=Y.name("_valid");Q.setParams({passing:J}),Y.block(H),Q.result(G,()=>Q.reset(),()=>Q.error(!0));function H(){$.forEach((q,F)=>{let M;if((0,m7.alwaysValidSchema)(W,q))Y.var(z,!0);else M=Q.subschema({keyword:"oneOf",schemaProp:F,compositeRule:!0},z);if(F>0)Y.if(b1._`${z} && ${G}`).assign(G,!1).assign(J,b1._`[${J}, ${F}]`).else();Y.if(z,()=>{if(Y.assign(G,!0),Y.assign(J,F),M)Q.mergeEvaluated(M,b1.Name)})})}}};KZ.default=d7});var AZ=A((UZ)=>{Object.defineProperty(UZ,"__esModule",{value:!0});var c7=P(),n7={keyword:"allOf",schemaType:"array",code(Q){let{gen:Y,schema:Z,it:X}=Q;if(!Array.isArray(Z))throw Error("ajv implementation error");let W=Y.name("valid");Z.forEach(($,G)=>{if((0,c7.alwaysValidSchema)(X,$))return;let J=Q.subschema({keyword:"allOf",schemaProp:G},W);Q.ok(W),Q.mergeEvaluated(J)})}};UZ.default=n7});var DZ=A((OZ)=>{Object.defineProperty(OZ,"__esModule",{value:!0});var S1=I(),jZ=P(),s7={message:({params:Q})=>S1.str`must match "${Q.ifClause}" schema`,params:({params:Q})=>S1._`{failingKeyword: ${Q.ifClause}}`},a7={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:s7,code(Q){let{gen:Y,parentSchema:Z,it:X}=Q;if(Z.then===void 0&&Z.else===void 0)(0,jZ.checkStrictMode)(X,'"if" without "then" and "else" is ignored');let W=MZ(X,"then"),$=MZ(X,"else");if(!W&&!$)return;let G=Y.let("valid",!0),J=Y.name("_valid");if(z(),Q.reset(),W&&$){let q=Y.let("ifClause");Q.setParams({ifClause:q}),Y.if(J,H("then",q),H("else",q))}else if(W)Y.if(J,H("then"));else Y.if((0,S1.not)(J),H("else"));Q.pass(G,()=>Q.error(!0));function z(){let q=Q.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},J);Q.mergeEvaluated(q)}function H(q,F){return()=>{let M=Q.subschema({keyword:q},J);if(Y.assign(G,J),Q.mergeValidEvaluated(M,G),F)Y.assign(F,S1._`${q}`);else Q.setParams({ifClause:q})}}}};function MZ(Q,Y){let Z=Q.schema[Y];return Z!==void 0&&!(0,jZ.alwaysValidSchema)(Q,Z)}OZ.default=a7});var IZ=A((NZ)=>{Object.defineProperty(NZ,"__esModule",{value:!0});var o7=P(),e7={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:Q,parentSchema:Y,it:Z}){if(Y.if===void 0)(0,o7.checkStrictMode)(Z,`"${Q}" without "if" is ignored`)}};NZ.default=e7});var EZ=A((TZ)=>{Object.defineProperty(TZ,"__esModule",{value:!0});var YG=D4(),ZG=gY(),XG=N4(),WG=mY(),$G=dY(),GG=aY(),JG=eY(),zG=T4(),HG=WZ(),qG=HZ(),FG=FZ(),BG=VZ(),VG=LZ(),KG=AZ(),LG=DZ(),UG=IZ();function AG(Q=!1){let Y=[FG.default,BG.default,VG.default,KG.default,LG.default,UG.default,JG.default,zG.default,GG.default,HG.default,qG.default];if(Q)Y.push(ZG.default,WG.default);else Y.push(YG.default,XG.default);return Y.push($G.default),Y}TZ.default=AG});var wZ=A((RZ)=>{Object.defineProperty(RZ,"__esModule",{value:!0});var k=I(),jG={message:({schemaCode:Q})=>k.str`must match format "${Q}"`,params:({schemaCode:Q})=>k._`{format: ${Q}}`},OG={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:jG,code(Q,Y){let{gen:Z,data:X,$data:W,schema:$,schemaCode:G,it:J}=Q,{opts:z,errSchemaPath:H,schemaEnv:q,self:F}=J;if(!z.validateFormats)return;if(W)M();else L();function M(){let V=Z.scopeValue("formats",{ref:F.formats,code:z.code.formats}),B=Z.const("fDef",k._`${V}[${G}]`),K=Z.let("fType"),U=Z.let("format");Z.if(k._`typeof ${B} == "object" && !(${B} instanceof RegExp)`,()=>Z.assign(K,k._`${B}.type || "string"`).assign(U,k._`${B}.validate`),()=>Z.assign(K,k._`"string"`).assign(U,B)),Q.fail$data((0,k.or)(R(),T()));function R(){if(z.strictSchema===!1)return k.nil;return k._`${G} && !${U}`}function T(){let S=q.$async?k._`(${B}.async ? await ${U}(${X}) : ${U}(${X}))`:k._`${U}(${X})`,D=k._`(typeof ${U} == "function" ? ${S} : ${U}.test(${X}))`;return k._`${U} && ${U} !== true && ${K} === ${Y} && !${D}`}}function L(){let V=F.formats[$];if(!V){R();return}if(V===!0)return;let[B,K,U]=T(V);if(B===Y)Q.pass(S());function R(){if(z.strictSchema===!1){F.logger.warn(D());return}throw Error(D());function D(){return`unknown format "${$}" ignored in schema at path "${H}"`}}function T(D){let r=D instanceof RegExp?(0,k.regexpCode)(D):z.code.formats?k._`${z.code.formats}${(0,k.getProperty)($)}`:void 0,t=Z.scopeValue("formats",{key:$,ref:D,code:r});if(typeof D=="object"&&!(D instanceof RegExp))return[D.type||"string",D.validate,k._`${t}.validate`];return["string",D,t]}function S(){if(typeof V=="object"&&!(V instanceof RegExp)&&V.async){if(!q.$async)throw Error("async format in sync schema");return k._`await ${U}(${X})`}return typeof K=="function"?k._`${U}(${X})`:k._`${U}.test(${X})`}}}};RZ.default=OG});var bZ=A((PZ)=>{Object.defineProperty(PZ,"__esModule",{value:!0});var NG=wZ(),IG=[NG.default];PZ.default=IG});var kZ=A((SZ)=>{Object.defineProperty(SZ,"__esModule",{value:!0});SZ.contentVocabulary=SZ.metadataVocabulary=void 0;SZ.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];SZ.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var fZ=A((yZ)=>{Object.defineProperty(yZ,"__esModule",{value:!0});var RG=XY(),wG=SY(),PG=EZ(),bG=bZ(),vZ=kZ(),SG=[RG.default,wG.default,(0,PG.default)(),bG.default,vZ.metadataVocabulary,vZ.contentVocabulary];yZ.default=SG});var gZ=A((_Z)=>{Object.defineProperty(_Z,"__esModule",{value:!0});_Z.DiscrError=void 0;var xZ;(function(Q){Q.Tag="tag",Q.Mapping="mapping"})(xZ||(_Z.DiscrError=xZ={}))});var mZ=A((hZ)=>{Object.defineProperty(hZ,"__esModule",{value:!0});var I0=I(),R4=gZ(),lZ=F1(),kG=f0(),vG=P(),yG={message:({params:{discrError:Q,tagName:Y}})=>Q===R4.DiscrError.Tag?`tag "${Y}" must be string`:`value of tag "${Y}" must be in oneOf`,params:({params:{discrError:Q,tag:Y,tagName:Z}})=>I0._`{error: ${Q}, tag: ${Z}, tagValue: ${Y}}`},fG={keyword:"discriminator",type:"object",schemaType:"object",error:yG,code(Q){let{gen:Y,data:Z,schema:X,parentSchema:W,it:$}=Q,{oneOf:G}=W;if(!$.opts.discriminator)throw Error("discriminator: requires discriminator option");let J=X.propertyName;if(typeof J!="string")throw Error("discriminator: requires propertyName");if(X.mapping)throw Error("discriminator: mapping is not supported");if(!G)throw Error("discriminator: requires oneOf keyword");let z=Y.let("valid",!1),H=Y.const("tag",I0._`${Z}${(0,I0.getProperty)(J)}`);Y.if(I0._`typeof ${H} == "string"`,()=>q(),()=>Q.error(!1,{discrError:R4.DiscrError.Tag,tag:H,tagName:J})),Q.ok(z);function q(){let L=M();Y.if(!1);for(let V in L)Y.elseIf(I0._`${H} === ${V}`),Y.assign(z,F(L[V]));Y.else(),Q.error(!1,{discrError:R4.DiscrError.Mapping,tag:H,tagName:J}),Y.endIf()}function F(L){let V=Y.name("valid"),B=Q.subschema({keyword:"oneOf",schemaProp:L},V);return Q.mergeEvaluated(B,I0.Name),V}function M(){var L;let V={},B=U(W),K=!0;for(let S=0;S<G.length;S++){let D=G[S];if((D===null||D===void 0?void 0:D.$ref)&&!(0,vG.schemaHasRulesButRef)(D,$.self.RULES)){let t=D.$ref;if(D=lZ.resolveRef.call($.self,$.schemaEnv.root,$.baseId,t),D instanceof lZ.SchemaEnv)D=D.schema;if(D===void 0)throw new kG.default($.opts.uriResolver,$.baseId,t)}let r=(L=D===null||D===void 0?void 0:D.properties)===null||L===void 0?void 0:L[J];if(typeof r!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${J}"`);K=K&&(B||U(D)),R(r,S)}if(!K)throw Error(`discriminator: "${J}" must be required`);return V;function U({required:S}){return Array.isArray(S)&&S.includes(J)}function R(S,D){if(S.const)T(S.const,D);else if(S.enum)for(let r of S.enum)T(r,D);else throw Error(`discriminator: "properties/${J}" must have "const" or "enum"`)}function T(S,D){if(typeof S!="string"||S in V)throw Error(`discriminator: "${J}" values must be unique strings`);V[S]=D}}}};hZ.default=fG});var iZ=A((cz,_G)=>{_G.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var pZ=A((l,w4)=>{Object.defineProperty(l,"__esModule",{value:!0});l.MissingRefError=l.ValidationError=l.CodeGen=l.Name=l.nil=l.stringify=l.str=l._=l.KeywordCxt=l.Ajv=void 0;var uG=nQ(),gG=fZ(),lG=mZ(),dZ=iZ(),hG=["/properties"],C1="http://json-schema.org/draft-07/schema";class n0 extends uG.default{_addVocabularies(){if(super._addVocabularies(),gG.default.forEach((Q)=>this.addVocabulary(Q)),this.opts.discriminator)this.addKeyword(lG.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let Q=this.opts.$data?this.$dataMetaSchema(dZ,hG):dZ;this.addMetaSchema(Q,C1,!1),this.refs["http://json-schema.org/schema"]=C1}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(C1)?C1:void 0)}}l.Ajv=n0;w4.exports=l=n0;w4.exports.Ajv=n0;Object.defineProperty(l,"__esModule",{value:!0});l.default=n0;var mG=y0();Object.defineProperty(l,"KeywordCxt",{enumerable:!0,get:function(){return mG.KeywordCxt}});var T0=I();Object.defineProperty(l,"_",{enumerable:!0,get:function(){return T0._}});Object.defineProperty(l,"str",{enumerable:!0,get:function(){return T0.str}});Object.defineProperty(l,"stringify",{enumerable:!0,get:function(){return T0.stringify}});Object.defineProperty(l,"nil",{enumerable:!0,get:function(){return T0.nil}});Object.defineProperty(l,"Name",{enumerable:!0,get:function(){return T0.Name}});Object.defineProperty(l,"CodeGen",{enumerable:!0,get:function(){return T0.CodeGen}});var iG=H1();Object.defineProperty(l,"ValidationError",{enumerable:!0,get:function(){return iG.default}});var dG=f0();Object.defineProperty(l,"MissingRefError",{enumerable:!0,get:function(){return dG.default}})});function r0(Q){return Array.isArray(Q)&&(Q.length===2||Q.length===3)&&typeof Q[0]==="number"&&Q[0]>=100&&Q[0]<=599}var cZ=oZ(pZ(),1);function Z3(Q){let Y=Q.requestErrorStatus??400,Z=Q.responseErrorStatus??500,X=new cZ.default({allErrors:!0}),W={};if(Q.request?.body)W.requestBody=X.compile(Q.request.body);if(Q.request?.query)W.requestQuery=X.compile(Q.request.query);if(Q.request?.headers)W.requestHeaders=X.compile(Q.request.headers);if(Q.response?.body)W.responseBody=X.compile(Q.response.body);return{name:"validation",version:"1.0.0",process($,G){if(W.requestBody&&$.body!==void 0){if(!W.requestBody($.body))return{context:$,response:{status:Y,body:{error:"Request validation failed",code:"REQUEST_VALIDATION_ERROR",details:W.requestBody.errors}}}}if(W.requestQuery&&$.query){if(!W.requestQuery($.query))return{context:$,response:{status:Y,body:{error:"Query parameter validation failed",code:"QUERY_VALIDATION_ERROR",details:W.requestQuery.errors}}}}if(W.requestHeaders&&$.headers){let J={};for(let[z,H]of Object.entries($.headers))J[z.toLowerCase()]=H;if(!W.requestHeaders(J))return{context:$,response:{status:Y,body:{error:"Header validation failed",code:"HEADER_VALIDATION_ERROR",details:W.requestHeaders.errors}}}}if(W.responseBody&&G!==void 0){let J=r0(G)?G[1]:G;if(!W.responseBody(J))return{context:$,response:{status:Z,body:{error:"Response validation failed",code:"RESPONSE_VALIDATION_ERROR",details:W.responseBody.errors}}}}return{context:$,response:G}}}}export{Z3 as validationPlugin};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schmock/validation",
|
|
3
3
|
"description": "Request/response validation plugin for Schmock",
|
|
4
|
-
"version": "1.1
|
|
4
|
+
"version": "1.2.1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@amiceli/vitest-cucumber": "^6.2.0",
|
|
39
39
|
"@types/json-schema": "^7.0.15",
|
|
40
|
-
"@types/node": "^25.1
|
|
41
|
-
"vitest": "^4.0.
|
|
40
|
+
"@types/node": "^25.2.1",
|
|
41
|
+
"vitest": "^4.0.18"
|
|
42
42
|
}
|
|
43
43
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference path="../../../types/schmock.d.ts" />
|
|
2
2
|
|
|
3
|
+
import { isStatusTuple } from "@schmock/core";
|
|
3
4
|
import Ajv, { type ValidateFunction } from "ajv";
|
|
4
5
|
import type { JSONSchema7 } from "json-schema";
|
|
5
6
|
|
|
@@ -116,9 +117,7 @@ export function validationPlugin(
|
|
|
116
117
|
// Validate response body (if response exists)
|
|
117
118
|
if (validators.responseBody && response !== undefined) {
|
|
118
119
|
// Unwrap tuple responses: [status, body] or [status, body, headers]
|
|
119
|
-
const
|
|
120
|
-
Array.isArray(response) && typeof response[0] === "number";
|
|
121
|
-
const responseBody = isTuple ? response[1] : response;
|
|
120
|
+
const responseBody = isStatusTuple(response) ? response[1] : response;
|
|
122
121
|
|
|
123
122
|
if (!validators.responseBody(responseBody)) {
|
|
124
123
|
return {
|
|
@@ -237,6 +237,33 @@ describeFeature(feature, ({ Scenario }) => {
|
|
|
237
237
|
});
|
|
238
238
|
});
|
|
239
239
|
|
|
240
|
+
Scenario("Numeric array response is not misinterpreted as status tuple", ({ Given, When, Then, And }) => {
|
|
241
|
+
Given("I create a mock returning numeric array with response validation", () => {
|
|
242
|
+
mock = schmock();
|
|
243
|
+
mock("GET /numbers", [1, 2, 3])
|
|
244
|
+
.pipe(validationPlugin({
|
|
245
|
+
response: {
|
|
246
|
+
body: {
|
|
247
|
+
type: "array",
|
|
248
|
+
items: { type: "number" },
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
}));
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
When("I request the numeric array endpoint", async () => {
|
|
255
|
+
response = await mock.handle("GET", "/numbers");
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
Then("the status should be {int}", (_, status: number) => {
|
|
259
|
+
expect(response.status).toBe(status);
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
And("the response body should be the array [1, 2, 3]", () => {
|
|
263
|
+
expect(response.body).toEqual([1, 2, 3]);
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
|
|
240
267
|
Scenario("Custom error status codes", ({ Given, When, Then }) => {
|
|
241
268
|
Given("I create a validated mock with custom error status {int}", (_, status: number) => {
|
|
242
269
|
mock = schmock();
|