@zipbul/baker 5.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +11 -14
- package/dist/index.d.ts +0 -3
- package/dist/index.js +1 -1
- package/dist/src/baker.d.ts +19 -8
- package/dist/src/baker.js +1 -1
- package/dist/src/functions/deserialize.d.ts +5 -17
- package/dist/src/functions/deserialize.js +1 -1
- package/dist/src/functions/serialize.d.ts +8 -13
- package/dist/src/functions/serialize.js +1 -1
- package/dist/src/functions/validate.d.ts +5 -16
- package/dist/src/functions/validate.js +1 -1
- package/dist/src/meta-access.d.ts +1 -8
- package/dist/src/meta-access.js +1 -1
- package/dist/src/seal/deserialize-builder.d.ts +4 -4
- package/dist/src/seal/deserialize-builder.js +243 -243
- package/dist/src/seal/seal.d.ts +13 -14
- package/dist/src/seal/seal.js +1 -1
- package/dist/src/seal/serialize-builder.d.ts +2 -2
- package/dist/src/seal/serialize-builder.js +48 -48
- package/dist/src/symbols.d.ts +2 -4
- package/dist/src/symbols.js +1 -1
- package/package.json +1 -1
|
@@ -1,265 +1,265 @@
|
|
|
1
|
-
import{err as
|
|
2
|
-
if(${
|
|
3
|
-
else{var ${$}={path:${W},code:${
|
|
4
|
-
if(${
|
|
5
|
-
if(${
|
|
1
|
+
import{err as t,isErr as r}from"@zipbul/result";import{CacheKey as V,CollectionType as m}from"../enums.js";import{BakerError as n}from"../errors.js";import{emitRulePlan as a}from"../rule-plan.js";import{sanitizeKey as b,buildGroupsHasExpr as y}from"./codegen-utils.js";import{GuardKey as I}from"./enums.js";const X={field:"__bk$f_",index:"__bk$i_",setIdx:"__bk$si_",setVal:"__bk$sv_",mapIdx:"__bk$mi_",mapVal:"__bk$mv_",mark:"__bk$mark_",skip:"__bk$skip_",result:"__bk$r_",errors:"__bk$re_",arr:"__bk$arr_",disc:"__bk$dt_",nestedIdx:"__bk$j_",out:"__bk$out",errList:"__bk$errors",groups:"__bk$groups",group0:"__bk$group0",groupsSet:"__bk$groupsSet",key:"__bk$k"};function g(Z,W,Y,$){const _=`${$}_e`;return`var ${_}=${Y};
|
|
2
|
+
if(${_}.message===undefined&&${_}.context===undefined){${Z}.push({path:${W},code:${_}.code});}
|
|
3
|
+
else{var ${$}={path:${W},code:${_}.code};
|
|
4
|
+
if(${_}.message!==undefined)${$}.message=${_}.message;
|
|
5
|
+
if(${_}.context!==undefined)${$}.context=${_}.context;
|
|
6
6
|
${Z}.push(${$});}
|
|
7
|
-
`}function
|
|
8
|
-
`:`return err(${
|
|
9
|
-
`;return`if(${W}.message===undefined&&${W}.context===undefined)${
|
|
10
|
-
if(${W}.message!==undefined)${
|
|
11
|
-
if(${W}.context!==undefined)${
|
|
12
|
-
${
|
|
13
|
-
`;if(
|
|
14
|
-
`}else
|
|
7
|
+
`}function E(Z,W,Y,$){const _=(L)=>$?`return ${L};
|
|
8
|
+
`:`return err(${L});
|
|
9
|
+
`;return`if(${W}.message===undefined&&${W}.context===undefined)${_(`[{path:${Z},code:${W}.code}]`)} var ${Y}={path:${Z},code:${W}.code};
|
|
10
|
+
if(${W}.message!==undefined)${Y}.message=${W}.message;
|
|
11
|
+
if(${W}.context!==undefined)${Y}.context=${W}.context;
|
|
12
|
+
${_(`[${Y}]`)}`}function e(Z,W){return X.field+(W||"")+b(Z)}function o(Z,W){const Y=W.find((_)=>_.deserializeOnly&&_.name);if(Y)return Y.name;const $=W.find((_)=>!_.deserializeOnly&&!_.serializeOnly&&_.name);if($)return $.name;return Z}function l(Z){let W=null;for(const Y of Z){if(Y.serializeOnly)continue;if(!Y.groups||Y.groups.length===0)return;if(W===null)W=new Set;for(const $ of Y.groups)W.add($)}return W===null?void 0:[...W]}function buildDeserializeCode(Z,W,Y,$,_,L,z=!1){const Q=Y?.stopAtFirstError??!1,q=!Q,j=Y?.exposeDefaultValues??!1,F=[],H=[],D=[],B=z?(w)=>w:(w)=>`err(${w})`;let U=`'use strict';
|
|
13
|
+
`;if(z){if(j)U+=`var __bk$defs = new _Cls();
|
|
14
|
+
`}else U+=j?`var ${X.out} = new _Cls();
|
|
15
15
|
`:`var ${X.out} = Object.create(_Cls.prototype);
|
|
16
|
-
`;if(
|
|
17
|
-
`;
|
|
18
|
-
`;if($){
|
|
19
|
-
`;
|
|
20
|
-
`;
|
|
21
|
-
`;
|
|
22
|
-
`;
|
|
23
|
-
`}if(
|
|
24
|
-
`;else
|
|
25
|
-
`}let
|
|
26
|
-
`;
|
|
27
|
-
`;
|
|
28
|
-
`}for(const[
|
|
29
|
-
`;
|
|
30
|
-
`;if($)
|
|
31
|
-
`;const
|
|
32
|
-
`;const
|
|
16
|
+
`;if(q)U+=`var ${X.errList} = [];
|
|
17
|
+
`;U+=`if (input == null || typeof input !== 'object' || Array.isArray(input)) return ${B("[{path:'',code:'invalidInput'}]")};
|
|
18
|
+
`;if($){U+=`var __seen = (opts && opts[__SEEN_KEY]) || null;
|
|
19
|
+
`;U+=`if (__seen === null) { __seen = new WeakSet(); opts = opts ? { ...opts, [__SEEN_KEY]: __seen } : { [__SEEN_KEY]: __seen }; }
|
|
20
|
+
`;U+=`if (__seen.has(input)) return ${B("[{path:'',code:'circular'}]")};
|
|
21
|
+
`;U+=`__seen.add(input);
|
|
22
|
+
`;U+=`try {
|
|
23
|
+
`}if(Y?.whitelist){const w=new Set;for(const[S,T]of Object.entries(W)){const G=o(S,T.expose);w.add(G)}const R=H.length;H.push(w);if(q)U+=`{var __wlk=Object.keys(input);for(var __wli=0;__wli<__wlk.length;__wli++){var ${X.key}=__wlk[__wli];if(!refs[${R}].has(${X.key}))${X.errList}.push({path:${X.key},code:'whitelistViolation'});}}
|
|
24
|
+
`;else U+=`{var __wlk=Object.keys(input);for(var __wli=0;__wli<__wlk.length;__wli++){var ${X.key}=__wlk[__wli];if(!refs[${R}].has(${X.key}))return ${B(`[{path:${X.key},code:'whitelistViolation'}]`)};}}
|
|
25
|
+
`}let M=!1;for(const w in W){const R=W[w],S=l(R.expose);if(S&&S.length>0){M=!0;break}let T=!1;for(const G of R.validation)if(G.groups&&G.groups.length>0){T=!0;break}if(T){M=!0;break}}if(M){U+=`var ${X.groups} = opts && opts.groups;
|
|
26
|
+
`;U+=`var ${X.group0} = ${X.groups} && ${X.groups}.length === 1 ? ${X.groups}[0] : null;
|
|
27
|
+
`;U+=`var ${X.groupsSet} = ${X.groups} && ${X.groups}.length > 1 ? new Set(${X.groups}) : null;
|
|
28
|
+
`}for(const[w,R]of Object.entries(W)){const S=s(w,R,{stopAtFirstError:Q,collectErrors:q,exposeDefaultValues:j,isAsync:_,regexes:F,refs:H,execs:D,options:Y,validateOnly:z,resolve:L});U+=S}if(q)U+=`if (${X.errList}.length) return ${z?X.errList:`err(${X.errList})`};
|
|
29
|
+
`;U+=`return ${z?"null":X.out};
|
|
30
|
+
`;if($)U+=`} finally { __seen.delete(input); }
|
|
31
|
+
`;const O=Z.name.replace(/[^\w$.-]/g,"_");U+=`//# sourceURL=baker://${O}/${z?"validate":"deserialize"}
|
|
32
|
+
`;const J=_?"async function":"function",A=Symbol.for("baker:circular-seen");return Function("_Cls","re","refs","execs","err","isErr","__SEEN_KEY",`return ${J}(input, opts) { `+U+" }")(Z,F,H,D,t,r,A)}function buildValidateCode(Z,W,Y,$,_,L){return buildDeserializeCode(Z,W,Y,$,_,L,!0)}function QQ(Z,W,Y){if(Z&&W)return I.NullableOptional;if(Z)return I.Nullable;if(Y)return I.Defined;if(W)return I.Optional;return I.Default}const WQ={[I.NullableOptional]({varName:Z,assignNull:W,validationCode:Y}){let $=`if (${Z} === null) { ${W}}
|
|
33
33
|
`;$+=`else if (${Z} !== undefined) {
|
|
34
|
-
`;$+=
|
|
35
|
-
`;return $},[
|
|
36
|
-
`;
|
|
37
|
-
`;
|
|
38
|
-
`;return
|
|
39
|
-
`;$+=
|
|
40
|
-
`;
|
|
41
|
-
`;return
|
|
34
|
+
`;$+=Y;$+=`}
|
|
35
|
+
`;return $},[I.Nullable]({varName:Z,emitCtx:W,assignNull:Y,validationCode:$}){let _=`if (${Z} === undefined) ${W.fail("isDefined")};
|
|
36
|
+
`;_+=`else if (${Z} !== null) {
|
|
37
|
+
`;_+=$;_+=`} else { ${Y}}
|
|
38
|
+
`;return _},[I.Defined]({varName:Z,emitCtx:W,validationCode:Y}){let $=`if (${Z} === undefined) ${W.fail("isDefined")};
|
|
39
|
+
`;$+=Y;return $},[I.Optional]({varName:Z,validationCode:W}){let Y=`if (${Z} !== undefined && ${Z} !== null) {
|
|
40
|
+
`;Y+=W;Y+=`}
|
|
41
|
+
`;return Y},[I.Default]({varName:Z,emitCtx:W,validationCode:Y}){let $=`if (${Z} === undefined || ${Z} === null) ${W.fail("isDefined")};
|
|
42
42
|
`;$+=`else {
|
|
43
|
-
`;$+=
|
|
44
|
-
`;return $}};function
|
|
45
|
-
`}return""}}if(W.expose.length>0&&W.expose.every((
|
|
46
|
-
`;return""}const
|
|
47
|
-
`}else
|
|
48
|
-
`;let
|
|
49
|
-
`;
|
|
50
|
-
`}let O=
|
|
51
|
-
`,
|
|
43
|
+
`;$+=Y;$+=`}
|
|
44
|
+
`;return $}};function s(Z,W,Y){const{exposeDefaultValues:$}=Y;if(W.exclude){if(!W.exclude.serializeOnly){if(Y.options?.debug){const S=W.exclude.deserializeOnly?"deserializeOnly":"bidirectional";return`// [baker] field ${JSON.stringify(Z)} excluded (${S} @Exclude)
|
|
45
|
+
`}return""}}if(W.expose.length>0&&W.expose.every((S)=>S.serializeOnly)){if(Y.options?.debug)return`// [baker] field ${JSON.stringify(Z)} excluded (all @Expose entries are serializeOnly)
|
|
46
|
+
`;return""}const _=e(Z,Y.varPrefix),L=o(Z,W.expose),z=l(W.expose),Q=Y.inputExpr||"input",q=ZQ(W,Z,_,Y),j=MQ(Z,Y,q);let F="",H=null;if(W.flags.validateIf){H=Y.refs.length;Y.refs.push(W.flags.validateIf)}let D;const B=JSON.stringify(L);if($&&!W.flags.isOptional){const S=Y.validateOnly?"__bk$defs":X.out;D=`var ${_} = Object.hasOwn(${Q}, ${B}) ? ${Q}[${B}] : ${S}[${JSON.stringify(Z)}];
|
|
47
|
+
`}else D=`var ${_} = ${Q}[${B}];
|
|
48
|
+
`;let U="",M="";if(z&&z.length>0){U=`if ((${X.group0} !== null || ${X.groupsSet}) && (${y(X.group0,X.groupsSet,z)})) {
|
|
49
|
+
`;M=`}
|
|
50
|
+
`}let O=D;const J=!!(W.flags.isOptional&&!W.flags.isDefined),A=W.flags.isNullable===!0,P=XQ(Z,_,W,Y,j,z),w=Y.validateOnly?"":`${X.out}[${JSON.stringify(Z)}] = null;
|
|
51
|
+
`,R=QQ(A,J,W.flags.isDefined??!1);O+=WQ[R]({varName:_,emitCtx:j,assignNull:w,validationCode:P});if(H!==null)F+=U+`if (refs[${H}](${Q})) {
|
|
52
52
|
`+O+`}
|
|
53
|
-
`+
|
|
54
|
-
`}else if(
|
|
55
|
-
`}else for(const
|
|
56
|
-
`}}if(
|
|
57
|
-
`;return Q}Q+=
|
|
58
|
-
`;if(
|
|
59
|
-
`;for(const
|
|
60
|
-
`+
|
|
61
|
-
`}return
|
|
53
|
+
`+M;else F+=U+O+M;return F}function XQ(Z,W,Y,$,_,L){const{collectErrors:z}=$;let Q="";const q=Y.transform.filter((j)=>!j.options?.serializeOnly);if(q.length>0){const j=JSON.stringify(Z),F=$.inputExpr||"input";if(q.length===1){const H=q[0],D=$.refs.length;$.refs.push(H.fn);const B=`refs[${D}]({value:${W},key:${j},obj:${F}})`;Q+=`${W} = ${H.isAsync?"await ":""}${B};
|
|
54
|
+
`}else if(q.length===2){const H=q[0],D=q[1],B=$.refs.length;$.refs.push(H.fn);const U=$.refs.length;$.refs.push(D.fn);const M=`refs[${B}]({value:${W},key:${j},obj:${F}})`,O=H.isAsync?`await ${M}`:M,J=`refs[${U}]({value:${O},key:${j},obj:${F}})`;Q+=`${W} = ${D.isAsync?"await ":""}${J};
|
|
55
|
+
`}else for(const H of q){const D=$.refs.length;$.refs.push(H.fn);const B=`refs[${D}]({value:${W},key:${j},obj:${F}})`;Q+=`${W} = ${H.isAsync?"await ":""}${B};
|
|
56
|
+
`}}if(Y.type?.collection){Q+=$.validateOnly?DQ(Z,W,Y,$,_):BQ(Z,W,Y,$,_);return Q}if(Y.flags.validateNested&&Y.type?.fn){Q+=$.validateOnly?JQ(Z,W,Y,$,_):FQ(Z,W,Y,$,_);return Q}if(Y.validation.length===0){if(!$.validateOnly)Q+=`${X.out}[${JSON.stringify(Z)}] = ${W};
|
|
57
|
+
`;return Q}Q+=zQ(Z,W,Y.validation,z,_,$,Y,L);return Q}function i(Z,W,Y,$,_,L){let z="";if(typeof Z==="string")z+=`,message:${JSON.stringify(Z)}`;else if(typeof Z==="function"){const Q=L.refs.length;L.refs.push(Z);const q=Y();z+=`,message:refs[${Q}]({property:${JSON.stringify($)},value:${_},constraints:${q}})`}if(W!==void 0){const Q=L.refs.length;L.refs.push(W);z+=`,context:refs[${Q}]`}return z}function K(Z,W,Y,$){return i(Z.message,Z.context,()=>{const _=$.refs.length;$.refs.push(Z.rule.constraints??{});return`refs[${_}]`},W,Y,$)}function ZQ(Z,W,Y,$){return i(Z.message,Z.context,()=>"{}",W,Y,$)}function c(Z,W,Y,$,_){const L=K($,W,Y,_);if(!L)return Z;const z=Z.pathExpr??JSON.stringify(W);return{...Z,fail(Q){if(Z.collectErrors)return`${X.errList}.push({path:${z},code:${JSON.stringify(Q)}${L}})`;else if(_.validateOnly)return`return [{path:${z},code:${JSON.stringify(Q)}${L}}]`;return`return err([{path:${z},code:${JSON.stringify(Q)}${L}}])`}}}function h(Z,W,Y,$,_,L,z,Q){let q="",j=0,F=0;for(const U of Y){if(!N(U.groups,z))continue;if(U.rule.plan?.cacheKey===V.Length)j+=1;else if(U.rule.plan?.cacheKey===V.Time)F+=1}const H=b(Z),D=j>1?`${X.arr}${H}len`:null,B=F>1?`${X.arr}${H}time`:null;if(D)q+=`${L}var ${D} = ${W}.length;
|
|
58
|
+
`;if(B)q+=`${L}var ${B} = ${W}.getTime();
|
|
59
|
+
`;for(const U of Y){const M=N(U.groups,z),O=c($,Z,W,U,_),J=Q?{...O,insideTypeGate:!0}:O;let A;if(M&&U.rule.plan&&(D||B)){const w={};if(U.rule.plan.cacheKey===V.Length&&D)w.length=D;if(U.rule.plan.cacheKey===V.Time&&B)w.time=B;A=a(W,J,U.rule.ruleName,U.rule.plan,w,Q)}else A=U.rule.emit(W,J);if(!A)continue;const P=M?A:$Q(U,A);q+=L+P.replace(/\n/g,`
|
|
60
|
+
`+L)+`
|
|
61
|
+
`}return q}function $Q(Z,W){if(!Z.groups||Z.groups.length===0)return W;return`if ((${X.group0} === null && !${X.groupsSet}) || ${y(X.group0,X.groupsSet,Z.groups)}) {
|
|
62
62
|
${W}
|
|
63
63
|
}
|
|
64
|
-
`}function
|
|
64
|
+
`}function N(Z,W){if(!Z||Z.length===0)return!W||W.length===0;if(!W||Z.length!==W.length)return!1;for(let Y=0;Y<Z.length;Y++)if(Z[Y]!==W[Y])return!1;return!0}function p(Z,W,Y,$,_,L){const z=_?`${L.fail("conversionFailed")}; ${$} = true;`:L.fail("conversionFailed")+";";switch(Z){case"string":return` ${W} = String(${W});
|
|
65
65
|
`;case"number":return` ${W} = Number(${W});
|
|
66
|
-
if (isNaN(${W})) { ${
|
|
66
|
+
if (isNaN(${W})) { ${z} }
|
|
67
67
|
`;case"boolean":return` if (${W} === 'true' || ${W} === '1' || ${W} === 1) ${W} = true;
|
|
68
68
|
else if (${W} === 'false' || ${W} === '0' || ${W} === 0) ${W} = false;
|
|
69
|
-
else { ${
|
|
69
|
+
else { ${z} }
|
|
70
70
|
`;case"date":return` ${W} = new Date(${W});
|
|
71
|
-
if (isNaN(${W}.getTime())) { ${
|
|
72
|
-
`;default:throw new
|
|
73
|
-
`;Q+=`if (${
|
|
74
|
-
`;Q+=
|
|
75
|
-
`;Q+=`if (!${
|
|
76
|
-
`;if(
|
|
77
|
-
`;Q+=
|
|
71
|
+
if (isNaN(${W}.getTime())) { ${z} }
|
|
72
|
+
`;default:throw new n(`Unknown implicit conversion type: "${Z}" for field "${Y}"`)}}const UQ={Number:"number",Boolean:"boolean",String:"string",Date:"date"};const f={isString:"string",isNumber:"number",isBoolean:"boolean",isDate:"date",isInt:"number",isArray:"array",isObject:"object"};const YQ=new Set(["isString","isBoolean","isDate","isArray","isObject"]);function qQ(Z,W){const Y=[],$=[],_={string:[],number:[],boolean:[],date:[],array:[],object:[]};for(const Q of W){if(Q.each){Y.push(Q);continue}const q=Q.rule.requiresType;if(q!==void 0)_[q].push(Q);else $.push(Q)}let L=void 0,z=null;for(const Q of["string","number","boolean","date","array","object"]){const q=_[Q];if(q.length===0)continue;if(L){if(z===null)z=[L.type];z.push(Q)}else L={type:Q,deps:q}}if(z)throw new n(`Field "${Z}" has conflicting requiresType: ${z.join(", ")}`);return{each:Y,generalRules:$,typedDeps:L}}function _Q(Z,W,Y,$){const{generalRules:_,typedDeps:L}=W,z=!!L,Q=L?.type??null,q=L?.deps??[];let j=-1;if(Q)j=_.findIndex((U)=>f[U.rule.ruleName]===Q);const F=!!$.options?.enableImplicitConversion&&!Y?.transform.some((U)=>!U.options?.serializeOnly);let H=null;if(!z&&F&&j<0)for(let U=0;U<_.length;U++){const M=f[_[U].rule.ruleName];if(M){j=U;H=M;break}}const D=j>=0?_[j]:void 0;let B=null;if(!z&&!H&&F&&Y?.type?.fn)try{const U=Y.type.fn(),M=Array.isArray(U)?U[0]:U;B=M?UQ[M.name]??null:null}catch(U){throw new n(`field "${Z}": @Field type function threw: ${U.message}`,{cause:U})}return{effectiveGateType:Q??H??B,gateDeps:q,typeAsserterIdx:j,typeAsserter:D,enableConversion:F,asserterInferredGate:H,typeHintGate:B}}function HQ(Z,W,Y,$,_,L,z){let Q="";const q=b(Z),{effectiveGateType:j,gateCondition:F,gateErrorCode:H,gateEmitCtx:D,otherGeneral:B,gateDeps:U,typeAsserter:M,enableConversion:O}=L,J=(A)=>{const P=[];if(M&&!YQ.has(M.rule.ruleName))P.push(M);P.push(...B,...U);return h(Z,W,P,$,_,A,z,!0)};if(Y)if(O&&(j==="string"||j==="number"||j==="boolean"||j==="date")){const P=`${X.skip}${q}`;Q+=`var ${P} = false;
|
|
73
|
+
`;Q+=`if (${F}) {
|
|
74
|
+
`;Q+=p(j,W,Z,P,!0,$);Q+=`}
|
|
75
|
+
`;Q+=`if (!${P}) {
|
|
76
|
+
`;if(_.validateOnly)Q+=J(" ");else{const w=`${X.mark}${q}`;Q+=` var ${w} = ${X.errList}.length;
|
|
77
|
+
`;Q+=J(" ");Q+=` if (${X.errList}.length === ${w}) ${X.out}[${JSON.stringify(Z)}] = ${W};
|
|
78
78
|
`}Q+=`}
|
|
79
|
-
`}else{Q+=`if (${
|
|
79
|
+
`}else{Q+=`if (${F}) ${D.fail(H)};
|
|
80
80
|
`;Q+=`else {
|
|
81
|
-
`;if(
|
|
82
|
-
`;Q+=
|
|
81
|
+
`;if(_.validateOnly)Q+=J(" ");else{const P=`${X.mark}${q}`;Q+=` var ${P} = ${X.errList}.length;
|
|
82
|
+
`;Q+=J(" ");Q+=` if (${X.errList}.length === ${P}) ${X.out}[${JSON.stringify(Z)}] = ${W};
|
|
83
83
|
`}Q+=`}
|
|
84
|
-
`}else if(O&&(
|
|
85
|
-
`;Q+=
|
|
86
|
-
`;Q+=
|
|
87
|
-
`}else{Q+=`if (${
|
|
88
|
-
`;Q+=
|
|
89
|
-
`}return Q}function
|
|
90
|
-
`}else if(
|
|
91
|
-
`;Q+=
|
|
92
|
-
`}else{Q+=
|
|
93
|
-
`}return Q}function
|
|
94
|
-
`;Q+=`var ${
|
|
95
|
-
`;Q+=`if (${O} === 0) ${
|
|
96
|
-
`;for(const
|
|
97
|
-
`:"",
|
|
98
|
-
`:"",
|
|
99
|
-
`,counterInc:`${_}++;
|
|
100
|
-
`},{guard:`${W} instanceof Map`,idxVar:H,elemExpr:q,loopHeader:`for (var ${q} of ${W}.values())`,counterDecl:`var ${H} = 0;
|
|
84
|
+
`}else if(O&&(j==="string"||j==="number"||j==="boolean"||j==="date")){Q+=`if (${F}) {
|
|
85
|
+
`;Q+=p(j,W,Z,null,!1,$);Q+=`}
|
|
86
|
+
`;Q+=J("");if(!_.validateOnly)Q+=`${X.out}[${JSON.stringify(Z)}] = ${W};
|
|
87
|
+
`}else{Q+=`if (${F}) ${D.fail(H)};
|
|
88
|
+
`;Q+=J("");if(!_.validateOnly)Q+=`${X.out}[${JSON.stringify(Z)}] = ${W};
|
|
89
|
+
`}return Q}function LQ(Z,W,Y,$,_,L,z){let Q="";if($)if(Y.length===0){if(!L.validateOnly)Q+=`${X.out}[${JSON.stringify(Z)}] = ${W};
|
|
90
|
+
`}else if(L.validateOnly)Q+=h(Z,W,Y,_,L,"",z);else{const q=`${X.mark}${b(Z)}`;Q+=`var ${q} = ${X.errList}.length;
|
|
91
|
+
`;Q+=h(Z,W,Y,_,L,"",z);Q+=`if (${X.errList}.length === ${q}) ${X.out}[${JSON.stringify(Z)}] = ${W};
|
|
92
|
+
`}else{Q+=h(Z,W,Y,_,L,"",z);if(!L.validateOnly)Q+=`${X.out}[${JSON.stringify(Z)}] = ${W};
|
|
93
|
+
`}return Q}function jQ(Z,W,Y,$,_,L,z){let Q="";if(Y.length===0)return Q;const q=L.pathPrefix?`${L.pathPrefix}+${JSON.stringify(Z)}`:JSON.stringify(Z),j=b(Z),F=`${X.index}${j}`,H=`${X.setIdx}${j}`,D=`${X.setVal}${j}`,B=`${X.mapIdx}${j}`,U=`${X.mapVal}${j}`,M=`__bk$ep_${j}`,O=`__bk$ck${j}`;Q+=`var ${O} = Array.isArray(${W})?1:(${W} instanceof Set?2:(${W} instanceof Map?3:0));
|
|
94
|
+
`;Q+=`var ${M} = ${q}+'[';
|
|
95
|
+
`;Q+=`if (${O} === 0) ${_.fail("isArray")};
|
|
96
|
+
`;for(const J of Y){const A=K(J,Z,W,L),P=J.groups&&J.groups.length>0&&!N(J.groups,z)?J.groups:null,w=P?`if ((${X.group0} === null && !${X.groupsSet}) || ${y(X.group0,X.groupsSet,P)}) {
|
|
97
|
+
`:"",R=P?`}
|
|
98
|
+
`:"",S=[{guard:`Array.isArray(${W})`,idxVar:F,elemExpr:`${W}[${F}]`,loopHeader:`for (var ${F}=0; ${F}<${W}.length; ${F}++)`,counterDecl:"",counterInc:""},{guard:`${W} instanceof Set`,idxVar:H,elemExpr:D,loopHeader:`for (var ${D} of ${W})`,counterDecl:`var ${H} = 0;
|
|
101
99
|
`,counterInc:`${H}++;
|
|
102
|
-
`}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
`;
|
|
106
|
-
`;
|
|
107
|
-
`;Q+=
|
|
108
|
-
`;Q+=T(
|
|
109
|
-
`;Q+=S
|
|
110
|
-
`;
|
|
111
|
-
`;_
|
|
112
|
-
`;_
|
|
113
|
-
`;
|
|
114
|
-
`;
|
|
115
|
-
`;
|
|
116
|
-
`;
|
|
117
|
-
`;
|
|
118
|
-
|
|
119
|
-
`;
|
|
120
|
-
|
|
121
|
-
`;
|
|
122
|
-
`;
|
|
123
|
-
|
|
124
|
-
`;
|
|
125
|
-
|
|
126
|
-
`;
|
|
127
|
-
|
|
128
|
-
`;_+=`
|
|
129
|
-
`}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
`;
|
|
134
|
-
`;
|
|
135
|
-
`;
|
|
136
|
-
`;
|
|
137
|
-
`;
|
|
138
|
-
`;
|
|
139
|
-
`;
|
|
140
|
-
`;
|
|
141
|
-
|
|
142
|
-
`;
|
|
143
|
-
|
|
144
|
-
`;
|
|
145
|
-
`;
|
|
146
|
-
|
|
147
|
-
`;
|
|
148
|
-
`;
|
|
149
|
-
`;
|
|
150
|
-
`;
|
|
151
|
-
`;
|
|
152
|
-
`;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
`;
|
|
158
|
-
`;Q+=`
|
|
159
|
-
`;
|
|
160
|
-
|
|
161
|
-
`;
|
|
162
|
-
`;
|
|
100
|
+
`},{guard:`${W} instanceof Map`,idxVar:B,elemExpr:U,loopHeader:`for (var ${U} of ${W}.values())`,counterDecl:`var ${B} = 0;
|
|
101
|
+
`,counterInc:`${B}++;
|
|
102
|
+
`}],T=(G)=>{const d={..._,fail:(k)=>$?`${X.errList}.push({path:${M}+${G.idxVar}+']',code:${JSON.stringify(k)}${A}})`:L.validateOnly?`return [{path:${M}+${G.idxVar}+']',code:${JSON.stringify(k)}${A}}]`:`return err([{path:${M}+${G.idxVar}+']',code:${JSON.stringify(k)}${A}}])`};let u="";u+=` ${G.counterDecl}`;u+=` ${G.loopHeader} {
|
|
103
|
+
`;u+=" "+J.rule.emit(G.elemExpr,d)+`
|
|
104
|
+
`;if(G.counterInc)u+=` ${G.counterInc}`;u+=` }
|
|
105
|
+
`;return u};Q+=w;Q+=`if (${O} === 1) {
|
|
106
|
+
`;Q+=T(S[0]);Q+=`} else if (${O} === 2) {
|
|
107
|
+
`;Q+=T(S[1]);Q+=`} else if (${O} === 3) {
|
|
108
|
+
`;Q+=T(S[2]);Q+=`}
|
|
109
|
+
`;Q+=R}return Q}function zQ(Z,W,Y,$,_,L,z,Q){const q=qQ(Z,Y),j=_Q(Z,q,z,L);let F="";if(!!q.typedDeps||j.asserterInferredGate||j.typeHintGate){const D=j.typeAsserter?q.generalRules.filter((O,J)=>J!==j.typeAsserterIdx):q.generalRules;let B,U;if(j.typeAsserter)U=j.typeAsserter.rule.ruleName;else if(j.gateDeps.length>0)U=j.gateDeps[0].rule.ruleName;else U="conversionFailed";if(j.effectiveGateType==="date")B=`!(${W} instanceof Date) || isNaN(${W}.getTime())`;else if(j.effectiveGateType==="array")B=`!Array.isArray(${W})`;else if(j.effectiveGateType==="object")B=`typeof ${W} !== 'object' || ${W} === null || Array.isArray(${W})`;else if(j.effectiveGateType==="number")B=`typeof ${W} !== 'number' || isNaN(${W})`;else B=`typeof ${W} !== '${j.effectiveGateType}'`;const M=j.typeAsserter?c(_,Z,W,j.typeAsserter,L):_;F+=HQ(Z,W,$,_,L,{effectiveGateType:j.effectiveGateType,gateCondition:B,gateErrorCode:U,gateEmitCtx:M,otherGeneral:D,gateDeps:j.gateDeps,typeAsserter:j.typeAsserter,enableConversion:j.enableConversion},Q)}else F+=LQ(Z,W,q.generalRules,$,_,L,Q);F+=jQ(Z,W,q.each,$,_,L,Q);return F}function BQ(Z,W,Y,$,_){const{collectErrors:L,execs:z}=$,Q=b(Z),q=Y.type.collection,j=$.isAsync?"await ":"";let F=-1;if(Y.type.resolvedCollectionValue){const D=$.resolve(Y.type.resolvedCollectionValue);F=z.length;z.push(D)}let H="";if(q===m.Set){H+=`if (Array.isArray(${W})) {
|
|
110
|
+
`;const D=Y.validation.filter((U)=>!U.each);H+=h(Z,W,D,_,$," ");if(F>=0){const U=`${X.index}${Q}`;H+=` var ${X.arr}${Q} = new Set();
|
|
111
|
+
`;H+=` for (var ${U}=0; ${U}<${W}.length; ${U}++) {
|
|
112
|
+
`;H+=` var ${X.result}${Q} = ${j}execs[${F}].deserialize(${W}[${U}], opts);
|
|
113
|
+
`;H+=` if (isErr(${X.result}${Q})) {
|
|
114
|
+
`;if(L){H+=` var ${X.errors}${Q} = ${X.result}${Q}.data;
|
|
115
|
+
`;H+=` var __bk$pp${Q} = ${JSON.stringify(Z)}+'['+${U}+'].';
|
|
116
|
+
`;H+=` for (var ${X.nestedIdx}${Q}=0; ${X.nestedIdx}${Q}<${X.errors}${Q}.length; ${X.nestedIdx}${Q}++) {
|
|
117
|
+
`;H+=" "+g(X.errList,`__bk$pp${Q}+${X.errors}${Q}[${X.nestedIdx}${Q}].path`,`${X.errors}${Q}[${X.nestedIdx}${Q}]`,`__ne${Q}`);H+=` }
|
|
118
|
+
`}else{H+=` var ${X.errors}${Q} = ${X.result}${Q}.data;
|
|
119
|
+
`;H+=` var __bk$pp${Q} = ${JSON.stringify(Z)}+'['+${U}+'].';
|
|
120
|
+
`;H+=" "+E(`__bk$pp${Q}+${X.errors}${Q}[0].path`,`${X.errors}${Q}[0]`,`__ne${Q}`)}H+=` } else { ${X.arr}${Q}.add(${X.result}${Q}); }
|
|
121
|
+
`;H+=` }
|
|
122
|
+
`;H+=` ${X.out}[${JSON.stringify(Z)}] = ${X.arr}${Q};
|
|
123
|
+
`}else H+=` ${X.out}[${JSON.stringify(Z)}] = new Set(${W});
|
|
124
|
+
`;const B=Y.validation.filter((U)=>U.each);if(B.length>0){const U=`${X.setIdx}${Q}`,M=`${X.setVal}${Q}`;H+=` var ${U} = 0;
|
|
125
|
+
`;H+=` for (var ${M} of ${X.out}[${JSON.stringify(Z)}]) {
|
|
126
|
+
`;for(const O of B){const J=K(O,Z,W,$),P={..._,fail:(w)=>L?`${X.errList}.push({path:${JSON.stringify(Z)}+'['+${U}+']',code:${JSON.stringify(w)}${J}})`:`return err([{path:${JSON.stringify(Z)}+'['+${U}+']',code:${JSON.stringify(w)}${J}}])`};H+=` ${O.rule.emit(M,P)}
|
|
127
|
+
`}H+=` ${U}++;
|
|
128
|
+
`;H+=` }
|
|
129
|
+
`}H+=`} else { ${_.fail("isArray")}; }
|
|
130
|
+
`}else{H+=`if (${W} != null && typeof ${W} === 'object' && !Array.isArray(${W})) {
|
|
131
|
+
`;if(F>=0){const D=`${X.key}${Q}`,B=`__bk$mk${Q}`,U=`__bk$mi${Q}`;H+=` var ${X.arr}${Q} = new Map();
|
|
132
|
+
`;H+=` var ${B} = Object.keys(${W});
|
|
133
|
+
`;H+=` for (var ${U}=0; ${U}<${B}.length; ${U}++) {
|
|
134
|
+
`;H+=` var ${D} = ${B}[${U}];
|
|
135
|
+
`;H+=` var ${X.result}${Q} = ${j}execs[${F}].deserialize(${W}[${D}], opts);
|
|
136
|
+
`;H+=` if (isErr(${X.result}${Q})) {
|
|
137
|
+
`;if(L){H+=` var ${X.errors}${Q} = ${X.result}${Q}.data;
|
|
138
|
+
`;H+=` var __bk$pp${Q} = ${JSON.stringify(Z)}+'['+${D}+'].';
|
|
139
|
+
`;H+=` for (var ${X.nestedIdx}${Q}=0; ${X.nestedIdx}${Q}<${X.errors}${Q}.length; ${X.nestedIdx}${Q}++) {
|
|
140
|
+
`;H+=" "+g(X.errList,`__bk$pp${Q}+${X.errors}${Q}[${X.nestedIdx}${Q}].path`,`${X.errors}${Q}[${X.nestedIdx}${Q}]`,`__ne${Q}`);H+=` }
|
|
141
|
+
`}else{H+=` var ${X.errors}${Q} = ${X.result}${Q}.data;
|
|
142
|
+
`;H+=` var __bk$pp${Q} = ${JSON.stringify(Z)}+'['+${D}+'].';
|
|
143
|
+
`;H+=" "+E(`__bk$pp${Q}+${X.errors}${Q}[0].path`,`${X.errors}${Q}[0]`,`__ne${Q}`)}H+=` } else { ${X.arr}${Q}.set(${D}, ${X.result}${Q}); }
|
|
144
|
+
`;H+=` }
|
|
145
|
+
`;H+=` ${X.out}[${JSON.stringify(Z)}] = ${X.arr}${Q};
|
|
146
|
+
`}else{const D=`__bk$mk${Q}`,B=`__bk$mi${Q}`;H+=` var ${X.arr}${Q} = new Map();
|
|
147
|
+
`;H+=` var ${D} = Object.keys(${W});
|
|
148
|
+
`;H+=` for (var ${B}=0; ${B}<${D}.length; ${B}++) {
|
|
149
|
+
`;H+=` var ${X.key}${Q} = ${D}[${B}];
|
|
150
|
+
`;H+=` ${X.arr}${Q}.set(${X.key}${Q}, ${W}[${X.key}${Q}]);
|
|
151
|
+
`;H+=` }
|
|
152
|
+
`;H+=` ${X.out}[${JSON.stringify(Z)}] = ${X.arr}${Q};
|
|
153
|
+
`}H+=`} else { ${_.fail("isObject")}; }
|
|
154
|
+
`}return H}function FQ(Z,W,Y,$,_){const{collectErrors:L,execs:z}=$;if(!Y.type)return`${X.out}[${JSON.stringify(Z)}] = ${W};
|
|
155
|
+
`;let Q="";const q=b(Z);if(Y.type.discriminator){const j=JSON.stringify(Y.type.discriminator.property);Q+=`var ${X.disc}${q} = ${W} && ${W}[${j}];
|
|
156
|
+
`;Q+=`switch (${X.disc}${q}) {
|
|
157
|
+
`;for(const B of Y.type.discriminator.subTypes){const U=$.resolve(B.value),M=z.length;z.push(U);const O=$.isAsync?"await ":"";Q+=` case ${JSON.stringify(B.name)}:
|
|
158
|
+
`;Q+=` var ${X.result}${q} = ${O}execs[${M}].deserialize(${W}, opts);
|
|
159
|
+
`;Q+=v(Z,`${X.result}${q}`,L,$.pathPrefix);Q+=` break;
|
|
160
|
+
`}const F=JSON.stringify(Y.type.discriminator.subTypes.map((B)=>B.name)),H=_.pathExpr??JSON.stringify(Z),D=`${X.disc}${q}`;if(L)Q+=` default: ${X.errList}.push({path:${H},code:'invalidDiscriminator',context:{received:${D},validSubTypes:${F}}});
|
|
161
|
+
`;else if($.validateOnly)Q+=` default: return [{path:${H},code:'invalidDiscriminator',context:{received:${D},validSubTypes:${F}}}];
|
|
162
|
+
`;else Q+=` default: return err([{path:${H},code:'invalidDiscriminator',context:{received:${D},validSubTypes:${F}}}]);
|
|
163
163
|
`;Q+=`}
|
|
164
|
-
`;if(
|
|
165
|
-
`}}else{const
|
|
166
|
-
`;const
|
|
167
|
-
`;Q+=` for (var ${
|
|
168
|
-
`;Q+=` var ${X.result}${
|
|
169
|
-
`;Q+=` if (isErr(${X.result}${
|
|
170
|
-
`;if(
|
|
171
|
-
`;Q+=` var __bk$pp${
|
|
172
|
-
`;Q+=` for (var ${X.nestedIdx}${
|
|
173
|
-
`;Q+=" "+
|
|
174
|
-
`}else{Q+=` var ${X.errors}${
|
|
175
|
-
`;Q+=` var __bk$pp${
|
|
176
|
-
`;Q+=" "+
|
|
164
|
+
`;if(Y.type.keepDiscriminatorProperty){const B=JSON.stringify(Z);Q+=`{var __dh=${X.out}[${B}]; if(__dh!=null) __dh[${j}]=${X.disc}${q};}
|
|
165
|
+
`}}else{const j=Y.type.resolvedClass??Y.type.fn(),F=$.resolve(j),H=z.length;z.push(F);if(Y.type.isArray||Y.flags.validateNestedEach||Y.validation.some((B)=>B.each)){const B=`${X.index}${q}`,U=$.isAsync?"await ":"";Q+=`if (Array.isArray(${W})) {
|
|
166
|
+
`;const M=Y.validation.filter((O)=>!O.each);Q+=h(Z,W,M,_,$," ");Q+=` var ${X.arr}${q} = [];
|
|
167
|
+
`;Q+=` for (var ${B}=0; ${B}<${W}.length; ${B}++) {
|
|
168
|
+
`;Q+=` var ${X.result}${q} = ${U}execs[${H}].deserialize(${W}[${B}], opts);
|
|
169
|
+
`;Q+=` if (isErr(${X.result}${q})) {
|
|
170
|
+
`;if(L){Q+=` var ${X.errors}${q} = ${X.result}${q}.data;
|
|
171
|
+
`;Q+=` var __bk$pp${q} = ${JSON.stringify(Z)}+'['+${B}+'].';
|
|
172
|
+
`;Q+=` for (var ${X.nestedIdx}${q}=0; ${X.nestedIdx}${q}<${X.errors}${q}.length; ${X.nestedIdx}${q}++) {
|
|
173
|
+
`;Q+=" "+g(X.errList,`__bk$pp${q}+${X.errors}${q}[${X.nestedIdx}${q}].path`,`${X.errors}${q}[${X.nestedIdx}${q}]`,`__ne${q}`);Q+=` }
|
|
174
|
+
`}else{Q+=` var ${X.errors}${q} = ${X.result}${q}.data;
|
|
175
|
+
`;Q+=` var __bk$pp${q} = ${JSON.stringify(Z)}+'['+${B}+'].';
|
|
176
|
+
`;Q+=" "+E(`__bk$pp${q}+${X.errors}${q}[0].path`,`${X.errors}${q}[0]`,`__ne${q}`)}Q+=` } else { ${X.arr}${q}.push(${X.result}${q}); }
|
|
177
177
|
`;Q+=` }
|
|
178
|
-
`;Q+=` ${X.out}[${JSON.stringify(Z)}] = ${X.arr}${
|
|
179
|
-
`;Q+=`} else { ${
|
|
180
|
-
`}else{const
|
|
181
|
-
`;Q+=` var ${X.result}${
|
|
182
|
-
`;Q+=
|
|
183
|
-
`}}return Q}function
|
|
184
|
-
var ${X.errors}${
|
|
185
|
-
var __bk$pp${
|
|
186
|
-
for (var ${X.nestedIdx}${
|
|
187
|
-
`+
|
|
178
|
+
`;Q+=` ${X.out}[${JSON.stringify(Z)}] = ${X.arr}${q};
|
|
179
|
+
`;Q+=`} else { ${_.fail("isArray")}; }
|
|
180
|
+
`}else{const B=$.isAsync?"await ":"";Q+=`if (${W} != null && typeof ${W} === 'object' && !Array.isArray(${W})) {
|
|
181
|
+
`;Q+=` var ${X.result}${q} = ${B}execs[${H}].deserialize(${W}, opts);
|
|
182
|
+
`;Q+=v(Z,`${X.result}${q}`,L,$.pathPrefix);Q+=`} else { ${_.fail("isObject")}; }
|
|
183
|
+
`}}return Q}function v(Z,W,Y,$){const _=b(Z),L=$?`${$}+${JSON.stringify(Z+".")}`:JSON.stringify(Z+".");if(Y){const Q=`${X.errors}${_}[${X.nestedIdx}${_}]`;return` if (isErr(${W})) {
|
|
184
|
+
var ${X.errors}${_} = ${W}.data;
|
|
185
|
+
var __bk$pp${_} = ${L};
|
|
186
|
+
for (var ${X.nestedIdx}${_}=0; ${X.nestedIdx}${_}<${X.errors}${_}.length; ${X.nestedIdx}${_}++) {
|
|
187
|
+
`+g(X.errList,`__bk$pp${_}+${Q}.path`,Q,`__ne${_}`)+` }
|
|
188
188
|
} else { ${X.out}[${JSON.stringify(Z)}] = ${W}; }
|
|
189
|
-
`}const
|
|
190
|
-
var ${X.errors}${
|
|
191
|
-
var __bk$pp${
|
|
192
|
-
`+
|
|
193
|
-
`}function
|
|
194
|
-
`;
|
|
195
|
-
`;for(const
|
|
196
|
-
`;if(O){const
|
|
197
|
-
`;
|
|
198
|
-
`}const
|
|
199
|
-
`;else
|
|
200
|
-
`;
|
|
201
|
-
`}else{const
|
|
202
|
-
`;const
|
|
203
|
-
`;if(
|
|
204
|
-
`;
|
|
205
|
-
`;
|
|
206
|
-
`;else
|
|
207
|
-
`;Y+=` else {
|
|
208
|
-
`;Y+=k(_,B,O,w,P,$);Y+=` }
|
|
209
|
-
`}else{const O=F.length;F.push(J);const M=$.isAsync?"await ":"";Y+=` var ${X.result}${Q} = ${M}execs[${O}].validate(${W}[${q}], opts);
|
|
210
|
-
`;Y+=` if (${X.result}${Q} !== null) {
|
|
211
|
-
`;const w=`__bk$pp${Q}`,D=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z)}+'['+${q}+'].'`:`${JSON.stringify(Z)}+'['+${q}+'].'`;Y+=` var ${w} = ${D};
|
|
212
|
-
`;if(j){Y+=` for (var ${X.nestedIdx}${Q}=0; ${X.nestedIdx}${Q}<${X.result}${Q}.length; ${X.nestedIdx}${Q}++) {
|
|
213
|
-
`;Y+=" "+u(X.errList,`${w}+${X.result}${Q}[${X.nestedIdx}${Q}].path`,`${X.result}${Q}[${X.nestedIdx}${Q}]`,`__ne${Q}`);Y+=` }
|
|
214
|
-
`}else Y+=" "+C(`${w}+${X.result}${Q}[0].path`,`${X.result}${Q}[0]`,`__ne${Q}`,!0);Y+=` }
|
|
215
|
-
`}Y+=` }
|
|
216
|
-
`;Y+=`} else { ${L.fail("isArray")}; }
|
|
217
|
-
`}else{Y+=`if (${W} != null && typeof ${W} === 'object' && !Array.isArray(${W})) {
|
|
218
|
-
`;if(H){const q=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z+".")}`:JSON.stringify(Z+"."),z=`${Q}_`;Y+=k(_,B,W,q,z,$)}else{const q=F.length;F.push(J);const z=$.isAsync?"await ":"";Y+=` var ${X.result}${Q} = ${z}execs[${q}].validate(${W}, opts);
|
|
219
|
-
`;Y+=m(Z,`${X.result}${Q}`,j,$.pathPrefix)}Y+=`} else { ${L.fail("isObject")}; }
|
|
220
|
-
`}}return Y}function m(Z,W,U,$){const L=b(Z),j=`__bk$pp${L}`,F=$?`${$}+${JSON.stringify(Z+".")}`:JSON.stringify(Z+".");if(U){const Y=`${W}[${X.nestedIdx}${L}]`;return` if (${W} !== null) {
|
|
221
|
-
var ${j} = ${F};
|
|
222
|
-
for (var ${X.nestedIdx}${L}=0; ${X.nestedIdx}${L}<${W}.length; ${X.nestedIdx}${L}++) {
|
|
223
|
-
`+u(X.errList,`${j}+${Y}.path`,Y,`__ne${L}`)+` }
|
|
224
|
-
}
|
|
225
|
-
`}const Q=`${W}[0]`;return` if (${W} !== null) {
|
|
226
|
-
var ${j} = ${F};
|
|
227
|
-
`+C(`${j}+${Q}.path`,Q,`__ne${L}`,!0)+` }
|
|
228
|
-
`}function DQ(Z,W,U,$,L){const{collectErrors:j,execs:F}=$,Q=($.varPrefix||"")+b(Z),Y=U.type.collection,B=$.isAsync?"await ":"";if(!$.inlineNestedClasses)$.inlineNestedClasses=new Set;let J,_,A;if(U.type.resolvedCollectionValue){J=U.type.resolvedCollectionValue;_=K(J);A=_.merged}const H=J&&A&&!$.inlineNestedClasses.has(J);let q="";if(Y===o.Set){q+=`if (Array.isArray(${W})) {
|
|
229
|
-
`;const z=U.validation.filter((M)=>!M.each);q+=g(Z,W,z,L,$," ");if(_){const M=`${X.index}${Q}`;q+=` for (var ${M}=0; ${M}<${W}.length; ${M}++) {
|
|
230
|
-
`;if(H){const w=`__il$${Q}ci`,D=`__bk$pp${Q}`,P=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z)}+'['+${M}+'].'`:`${JSON.stringify(Z)}+'['+${M}+'].'`,S=`${Q}c_`;q+=` var ${w} = ${W}[${M}];
|
|
231
|
-
`;q+=` var ${D} = ${P};
|
|
232
|
-
`;q+=` if (${w} == null || typeof ${w} !== 'object' || Array.isArray(${w})) `;if(j)q+=`${X.errList}.push({path:${D},code:'invalidInput'});
|
|
233
|
-
`;else q+=`return [{path:${D},code:'invalidInput'}];
|
|
189
|
+
`}const z=`${X.errors}${_}[0]`;return` if (isErr(${W})) {
|
|
190
|
+
var ${X.errors}${_} = ${W}.data;
|
|
191
|
+
var __bk$pp${_} = ${L};
|
|
192
|
+
`+E(`__bk$pp${_}+${z}.path`,z,`__ne${_}`)+` } else { ${X.out}[${JSON.stringify(Z)}] = ${W}; }
|
|
193
|
+
`}function C(Z,W,Y,$,_,L){const z=L.inlineNestedClasses;z.add(W);const Q={...L,pathPrefix:$,varPrefix:_,inputExpr:Y,exposeDefaultValues:!1,resolve:L.resolve};let q="";for(const[j,F]of Object.entries(Z))q+=s(j,F,Q);z.delete(W);return q}function JQ(Z,W,Y,$,_){const{collectErrors:L,execs:z}=$;if(!Y.type)return"";const Q=($.varPrefix||"")+b(Z);let q="";if(!$.inlineNestedClasses)$.inlineNestedClasses=new Set;if(Y.type.discriminator){const j=JSON.stringify(Y.type.discriminator.property);q+=`var ${X.disc}${Q} = ${W} && ${W}[${j}];
|
|
194
|
+
`;q+=`switch (${X.disc}${Q}) {
|
|
195
|
+
`;for(const B of Y.type.discriminator.subTypes){const U=$.resolve(B.value),M=U.merged,O=M&&!$.inlineNestedClasses.has(B.value);q+=` case ${JSON.stringify(B.name)}:
|
|
196
|
+
`;if(O){const J=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z+".")}`:JSON.stringify(Z+"."),A=`${Q}_d${b(B.name)}_`;q+=C(M,B.value,W,J,A,$)}else{const J=z.length;z.push(U);const A=$.isAsync?"await ":"";q+=` var ${X.result}${Q} = ${A}execs[${J}].validate(${W}, opts);
|
|
197
|
+
`;q+=x(Z,`${X.result}${Q}`,L,$.pathPrefix)}q+=` break;
|
|
198
|
+
`}const F=JSON.stringify(Y.type.discriminator.subTypes.map((B)=>B.name)),H=_.pathExpr??JSON.stringify(Z),D=`${X.disc}${Q}`;if(L)q+=` default: ${X.errList}.push({path:${H},code:'invalidDiscriminator',context:{received:${D},validSubTypes:${F}}});
|
|
199
|
+
`;else q+=` default: return [{path:${H},code:'invalidDiscriminator',context:{received:${D},validSubTypes:${F}}}];
|
|
200
|
+
`;q+=`}
|
|
201
|
+
`}else{const j=Y.type.resolvedClass??Y.type.fn(),F=$.resolve(j),H=F.merged,D=Y.type.isArray||Y.flags.validateNestedEach||Y.validation.some((U)=>U.each),B=H&&!$.inlineNestedClasses.has(j);if(D){const U=`${X.index}${Q}`;q+=`if (Array.isArray(${W})) {
|
|
202
|
+
`;const M=Y.validation.filter((O)=>!O.each);q+=h(Z,W,M,_,$," ");q+=` for (var ${U}=0; ${U}<${W}.length; ${U}++) {
|
|
203
|
+
`;if(B){const O=`__il$${Q}item`,J=`__bk$pp${Q}`,A=J,P=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z)}+'['+${U}+'].'`:`${JSON.stringify(Z)}+'['+${U}+'].'`,w=`${Q}i_`;q+=` var ${O} = ${W}[${U}];
|
|
204
|
+
`;q+=` var ${J} = ${P};
|
|
205
|
+
`;q+=` if (${O} == null || typeof ${O} !== 'object' || Array.isArray(${O})) `;if(L)q+=`${X.errList}.push({path:${J},code:'invalidInput'});
|
|
206
|
+
`;else q+=`return [{path:${J},code:'invalidInput'}];
|
|
234
207
|
`;q+=` else {
|
|
235
|
-
`;q+=
|
|
236
|
-
`}else{const
|
|
208
|
+
`;q+=C(H,j,O,A,w,$);q+=` }
|
|
209
|
+
`}else{const O=z.length;z.push(F);const J=$.isAsync?"await ":"";q+=` var ${X.result}${Q} = ${J}execs[${O}].validate(${W}[${U}], opts);
|
|
237
210
|
`;q+=` if (${X.result}${Q} !== null) {
|
|
238
|
-
`;const
|
|
239
|
-
`;if(
|
|
240
|
-
`;q+=" "+
|
|
241
|
-
`}else q+=" "+
|
|
211
|
+
`;const A=`__bk$pp${Q}`,P=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z)}+'['+${U}+'].'`:`${JSON.stringify(Z)}+'['+${U}+'].'`;q+=` var ${A} = ${P};
|
|
212
|
+
`;if(L){q+=` for (var ${X.nestedIdx}${Q}=0; ${X.nestedIdx}${Q}<${X.result}${Q}.length; ${X.nestedIdx}${Q}++) {
|
|
213
|
+
`;q+=" "+g(X.errList,`${A}+${X.result}${Q}[${X.nestedIdx}${Q}].path`,`${X.result}${Q}[${X.nestedIdx}${Q}]`,`__ne${Q}`);q+=` }
|
|
214
|
+
`}else q+=" "+E(`${A}+${X.result}${Q}[0].path`,`${X.result}${Q}[0]`,`__ne${Q}`,!0);q+=` }
|
|
242
215
|
`}q+=` }
|
|
243
|
-
|
|
244
|
-
`;for(const w of O){const D=`__bk$ep_${Q}`,P=n(w,Z,W,$),R={...L,fail:(T)=>j?`${X.errList}.push({path:${D}+${M}+']',code:${JSON.stringify(T)}${P}})`:`return [{path:${D}+${M}+']',code:${JSON.stringify(T)}${P}}]`};if(!q.includes(`var ${D}`)){const T=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z)}+'['`:`${JSON.stringify(Z)}+'['`;q+=` var ${D} = ${T};
|
|
245
|
-
`}q+=` ${w.rule.emit(`${W}[${M}]`,R)}
|
|
246
|
-
`}q+=` }
|
|
247
|
-
`}q+=`} else { ${L.fail("isArray")}; }
|
|
216
|
+
`;q+=`} else { ${_.fail("isArray")}; }
|
|
248
217
|
`}else{q+=`if (${W} != null && typeof ${W} === 'object' && !Array.isArray(${W})) {
|
|
249
|
-
`;if(
|
|
250
|
-
`;q
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
`;
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
`;if(
|
|
261
|
-
`;
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
218
|
+
`;if(B){const U=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z+".")}`:JSON.stringify(Z+"."),M=`${Q}_`;q+=C(H,j,W,U,M,$)}else{const U=z.length;z.push(F);const M=$.isAsync?"await ":"";q+=` var ${X.result}${Q} = ${M}execs[${U}].validate(${W}, opts);
|
|
219
|
+
`;q+=x(Z,`${X.result}${Q}`,L,$.pathPrefix)}q+=`} else { ${_.fail("isObject")}; }
|
|
220
|
+
`}}return q}function x(Z,W,Y,$){const _=b(Z),L=`__bk$pp${_}`,z=$?`${$}+${JSON.stringify(Z+".")}`:JSON.stringify(Z+".");if(Y){const q=`${W}[${X.nestedIdx}${_}]`;return` if (${W} !== null) {
|
|
221
|
+
var ${L} = ${z};
|
|
222
|
+
for (var ${X.nestedIdx}${_}=0; ${X.nestedIdx}${_}<${W}.length; ${X.nestedIdx}${_}++) {
|
|
223
|
+
`+g(X.errList,`${L}+${q}.path`,q,`__ne${_}`)+` }
|
|
224
|
+
}
|
|
225
|
+
`}const Q=`${W}[0]`;return` if (${W} !== null) {
|
|
226
|
+
var ${L} = ${z};
|
|
227
|
+
`+E(`${L}+${Q}.path`,Q,`__ne${_}`,!0)+` }
|
|
228
|
+
`}function DQ(Z,W,Y,$,_){const{collectErrors:L,execs:z}=$,Q=($.varPrefix||"")+b(Z),q=Y.type.collection,j=$.isAsync?"await ":"";if(!$.inlineNestedClasses)$.inlineNestedClasses=new Set;let F,H,D;if(Y.type.resolvedCollectionValue){F=Y.type.resolvedCollectionValue;H=$.resolve(F);D=H.merged}const B=F&&D&&!$.inlineNestedClasses.has(F);let U="";if(q===m.Set){U+=`if (Array.isArray(${W})) {
|
|
229
|
+
`;const M=Y.validation.filter((J)=>!J.each);U+=h(Z,W,M,_,$," ");if(H){const J=`${X.index}${Q}`;U+=` for (var ${J}=0; ${J}<${W}.length; ${J}++) {
|
|
230
|
+
`;if(B){const A=`__il$${Q}ci`,P=`__bk$pp${Q}`,w=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z)}+'['+${J}+'].'`:`${JSON.stringify(Z)}+'['+${J}+'].'`,R=`${Q}c_`;U+=` var ${A} = ${W}[${J}];
|
|
231
|
+
`;U+=` var ${P} = ${w};
|
|
232
|
+
`;U+=` if (${A} == null || typeof ${A} !== 'object' || Array.isArray(${A})) `;if(L)U+=`${X.errList}.push({path:${P},code:'invalidInput'});
|
|
233
|
+
`;else U+=`return [{path:${P},code:'invalidInput'}];
|
|
234
|
+
`;U+=` else {
|
|
235
|
+
`;U+=C(D,F,A,P,R,$);U+=` }
|
|
236
|
+
`}else{const A=z.length;z.push(H);U+=` var ${X.result}${Q} = ${j}execs[${A}].validate(${W}[${J}], opts);
|
|
237
|
+
`;U+=` if (${X.result}${Q} !== null) {
|
|
238
|
+
`;const P=`__bk$pp${Q}`,w=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z)}+'['+${J}+'].'`:`${JSON.stringify(Z)}+'['+${J}+'].'`;U+=` var ${P} = ${w};
|
|
239
|
+
`;if(L){U+=` for (var ${X.nestedIdx}${Q}=0; ${X.nestedIdx}${Q}<${X.result}${Q}.length; ${X.nestedIdx}${Q}++) {
|
|
240
|
+
`;U+=" "+g(X.errList,`${P}+${X.result}${Q}[${X.nestedIdx}${Q}].path`,`${X.result}${Q}[${X.nestedIdx}${Q}]`,`__ne${Q}`);U+=` }
|
|
241
|
+
`}else U+=" "+E(`${P}+${X.result}${Q}[0].path`,`${X.result}${Q}[0]`,`__ne${Q}`,!0);U+=` }
|
|
242
|
+
`}U+=` }
|
|
243
|
+
`}const O=Y.validation.filter((J)=>J.each);if(O.length>0){const J=`${X.index}${Q}e`;U+=` for (var ${J}=0; ${J}<${W}.length; ${J}++) {
|
|
244
|
+
`;for(const A of O){const P=`__bk$ep_${Q}`,w=K(A,Z,W,$),S={..._,fail:(T)=>L?`${X.errList}.push({path:${P}+${J}+']',code:${JSON.stringify(T)}${w}})`:`return [{path:${P}+${J}+']',code:${JSON.stringify(T)}${w}}]`};if(!U.includes(`var ${P}`)){const T=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z)}+'['`:`${JSON.stringify(Z)}+'['`;U+=` var ${P} = ${T};
|
|
245
|
+
`}U+=` ${A.rule.emit(`${W}[${J}]`,S)}
|
|
246
|
+
`}U+=` }
|
|
247
|
+
`}U+=`} else { ${_.fail("isArray")}; }
|
|
248
|
+
`}else{U+=`if (${W} != null && typeof ${W} === 'object' && !Array.isArray(${W})) {
|
|
249
|
+
`;if(H){const M=`${X.key}${Q}`,O=`__bk$vk${Q}`,J=`__bk$vi${Q}`;U+=` var ${O} = Object.keys(${W});
|
|
250
|
+
`;U+=` for (var ${J}=0; ${J}<${O}.length; ${J}++) {
|
|
251
|
+
`;U+=` var ${M} = ${O}[${J}];
|
|
252
|
+
`;if(B){const A=`__il$${Q}mi`,P=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z)}+'['+${M}+'].'`:`${JSON.stringify(Z)}+'['+${M}+'].'`,w=`${Q}m_`,R=P;U+=` var ${A} = ${W}[${M}];
|
|
253
|
+
`;U+=` if (${A} == null || typeof ${A} !== 'object' || Array.isArray(${A})) `;if(L)U+=`${X.errList}.push({path:${R},code:'invalidInput'});
|
|
254
|
+
`;else U+=`return [{path:${R},code:'invalidInput'}];
|
|
255
|
+
`;U+=` else {
|
|
256
|
+
`;U+=C(D,F,A,P,w,$);U+=` }
|
|
257
|
+
`}else{const A=z.length;z.push(H);U+=` var ${X.result}${Q} = ${j}execs[${A}].validate(${W}[${M}], opts);
|
|
258
|
+
`;U+=` if (${X.result}${Q} !== null) {
|
|
259
|
+
`;const P=`__bk$pp${Q}`,w=$.pathPrefix?`${$.pathPrefix}+${JSON.stringify(Z)}+'['+${M}+'].'`:`${JSON.stringify(Z)}+'['+${M}+'].'`;U+=` var ${P} = ${w};
|
|
260
|
+
`;if(L){U+=` for (var ${X.nestedIdx}${Q}=0; ${X.nestedIdx}${Q}<${X.result}${Q}.length; ${X.nestedIdx}${Q}++) {
|
|
261
|
+
`;U+=" "+g(X.errList,`${P}+${X.result}${Q}[${X.nestedIdx}${Q}].path`,`${X.result}${Q}[${X.nestedIdx}${Q}]`,`__ne${Q}`);U+=` }
|
|
262
|
+
`}else U+=" "+E(`${P}+${X.result}${Q}[0].path`,`${X.result}${Q}[0]`,`__ne${Q}`,!0);U+=` }
|
|
263
|
+
`}U+=` }
|
|
264
|
+
`}U+=`} else { ${_.fail("isObject")}; }
|
|
265
|
+
`}return U}function MQ(Z,W,Y=""){const{collectErrors:$,regexes:_,refs:L,execs:z,validateOnly:Q,pathPrefix:q}=W,j=q?`${q}+${JSON.stringify(Z)}`:JSON.stringify(Z);return{addRegex(F){_.push(F);return _.length-1},addRef(F){L.push(F);return L.length-1},addExecutor(F){z.push(F);return z.length-1},fail(F){if($)return`${X.errList}.push({path:${j},code:${JSON.stringify(F)}${Y}})`;else if(Q)return`return [{path:${j},code:${JSON.stringify(F)}${Y}}]`;return`return err([{path:${j},code:${JSON.stringify(F)}${Y}}])`},collectErrors:$,pathExpr:j}}export{buildDeserializeCode,buildValidateCode};
|