@zipbul/baker 2.0.0 → 2.2.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.
Files changed (42) hide show
  1. package/README.md +155 -107
  2. package/dist/index-03cysbck.js +3 -0
  3. package/dist/index-dcbd798a.js +3 -0
  4. package/dist/index-jp2yjd6g.js +3 -0
  5. package/dist/index-mw7met6r.js +3 -0
  6. package/dist/index-xdn55cz3.js +0 -3
  7. package/dist/index.d.ts +3 -3
  8. package/dist/index.js +296 -206
  9. package/dist/src/configure.d.ts +1 -6
  10. package/dist/src/create-rule.d.ts +1 -1
  11. package/dist/src/decorators/field.d.ts +4 -12
  12. package/dist/src/decorators/index.d.ts +1 -1
  13. package/dist/src/decorators/index.js +1 -4
  14. package/dist/src/errors.d.ts +4 -3
  15. package/dist/src/functions/deserialize.d.ts +4 -3
  16. package/dist/src/functions/serialize.d.ts +3 -2
  17. package/dist/src/functions/validate.d.ts +6 -4
  18. package/dist/src/rule-plan.d.ts +30 -0
  19. package/dist/src/rules/array.d.ts +1 -1
  20. package/dist/src/rules/common.d.ts +2 -2
  21. package/dist/src/rules/index.d.ts +1 -1
  22. package/dist/src/rules/index.js +18 -11
  23. package/dist/src/rules/number.d.ts +2 -2
  24. package/dist/src/rules/string.d.ts +11 -9
  25. package/dist/src/rules/typechecker.d.ts +6 -6
  26. package/dist/src/seal/codegen-utils.d.ts +7 -0
  27. package/dist/src/seal/deserialize-builder.d.ts +2 -1
  28. package/dist/src/seal/seal.d.ts +1 -1
  29. package/dist/src/symbols.js +1 -4
  30. package/dist/src/transformers/collection.transformer.d.ts +3 -0
  31. package/dist/src/transformers/date.transformer.d.ts +4 -0
  32. package/dist/src/transformers/index.d.ts +8 -0
  33. package/dist/src/transformers/index.js +2 -0
  34. package/dist/src/transformers/luxon.transformer.d.ts +6 -0
  35. package/dist/src/transformers/moment.transformer.d.ts +5 -0
  36. package/dist/src/transformers/number.transformer.d.ts +2 -0
  37. package/dist/src/transformers/string.transformer.d.ts +4 -0
  38. package/dist/src/types.d.ts +48 -8
  39. package/dist/src/utils.d.ts +2 -0
  40. package/package.json +28 -4
  41. package/dist/index-btgens0c.js +0 -6
  42. package/dist/index-k369bbht.js +0 -6
package/dist/index.js CHANGED
@@ -1,231 +1,321 @@
1
1
  // @bun
2
- import"./index-xdn55cz3.js";import{a as G,b as g,c as iJ,d as lJ}from"./index-btgens0c.js";import{e as A,f as O}from"./index-k369bbht.js";import{isErr as jJ}from"@zipbul/result";var i=Symbol.for("baker:error");function FJ(Q){return Q!=null&&typeof Q==="object"&&i in Q}function C(Q){return{[i]:!0,errors:Q}}class h extends Error{constructor(Q){super(Q);this.name="SealError"}}var l={};function BJ(Q){let J=[];if(d())J.push("[baker] configure() called after auto-seal. Already-sealed classes are not affected. Call configure() before the first deserialize/serialize."),console.warn("[baker] configure() called after auto-seal. Already-sealed classes are not affected. Call configure() before the first deserialize/serialize.");return l={enableImplicitConversion:Q.autoConvert??!1,exposeDefaultValues:Q.allowClassDefaults??!1,stopAtFirstError:Q.stopAtFirstError??!1,whitelist:Q.forbidUnknown??!1,debug:Q.debug??!1},{warnings:J}}function m(){return l}import{err as WJ,isErr as LJ}from"@zipbul/result";var U={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",groupsSet:"__bk$groupsSet",key:"__bk$k"};function S(Q){return Q.replace(/[^a-zA-Z0-9_]/g,(J)=>`$${J.charCodeAt(0)}$`)}function u(Q,J,$,X){return`var ${X}={path:${J},code:${$}.code};
3
- if(${$}.message!==undefined)${X}.message=${$}.message;
4
- if(${$}.context!==undefined)${X}.context=${$}.context;
5
- ${Q}.push(${X});
6
- `}function f(Q,J,$){return`var ${$}={path:${Q},code:${J}.code};
7
- if(${J}.message!==undefined)${$}.message=${J}.message;
8
- if(${J}.context!==undefined)${$}.context=${J}.context;
9
- return _err([${$}]);
10
- `}function zJ(Q){return U.field+S(Q)}function a(Q,J){let $=J.find((Y)=>Y.deserializeOnly&&Y.name);if($)return $.name;let X=J.find((Y)=>!Y.deserializeOnly&&!Y.serializeOnly&&Y.name);if(X)return X.name;return Q}function e(Q){let J=Q.filter((X)=>!X.serializeOnly);if(J.length===0)return;if(J.some((X)=>!X.groups||X.groups.length===0))return;let $=new Set;for(let X of J)for(let Y of X.groups)$.add(Y);return[...$]}function JJ(Q,J,$,X,Y){let F=$?.stopAtFirstError??!1,q=!F,Z=$?.exposeDefaultValues??!1,M=[],P=[],H=[],j=`'use strict';
11
- `;if(j+=Z?`var ${U.out} = new _Cls();
12
- `:`var ${U.out} = Object.create(_Cls.prototype);
13
- `,q)j+=`var ${U.errList} = [];
14
- `;j+=`if (input == null || typeof input !== 'object' || Array.isArray(input)) return _err([{path:'',code:'invalidInput'}]);
15
- `;let z=-1;if(X)P.push(new WeakSet),z=P.length-1,j+=`if (_refs[${z}].has(input)) return _err([{path:'',code:'circular'}]);
16
- `,j+=`_refs[${z}].add(input);
17
- `,j+=`try {
18
- `;if($?.whitelist){let w=new Set;for(let[_,T]of Object.entries(J)){let R=a(_,T.expose);w.add(R)}let D=P.length;if(P.push(w),q)j+=`for (var ${U.key} of Object.keys(input)) { if (!_refs[${D}].has(${U.key})) ${U.errList}.push({path:${U.key},code:'whitelistViolation'}); }
19
- `;else j+=`for (var ${U.key} of Object.keys(input)) { if (!_refs[${D}].has(${U.key})) return _err([{path:${U.key},code:'whitelistViolation'}]); }
20
- `}if(Object.values(J).some((w)=>{let D=e(w.expose);if(D&&D.length>0)return!0;if(w.validation.some((_)=>_.groups&&_.groups.length>0))return!0;return!1}))j+=`var ${U.groups} = _opts && _opts.groups;
21
- `,j+=`var ${U.groupsSet} = ${U.groups} ? new Set(${U.groups}) : null;
22
- `;for(let[w,D]of Object.entries(J)){let _=DJ(w,D,{stopAtFirstError:F,collectErrors:q,exposeDefaultValues:Z,isAsync:Y,regexes:M,refs:P,execs:H,options:$});j+=_}if(q)j+=`if (${U.errList}.length) return _err(${U.errList});
23
- `;if(j+=`return ${U.out};
24
- `,X)j+=`} finally { _refs[${z}].delete(input); }
25
- `;return j+=`//# sourceURL=baker://${Q.name}/deserialize
26
- `,Function("_Cls","_re","_refs","_execs","_err","_isErr",`return ${Y?"async function":"function"}(input, _opts) { `+j+" }")(Q,M,P,H,WJ,LJ)}function wJ(Q,J,$){if(Q&&J)return"nullable+optional";if(Q)return"nullable";if($)return"defined";if(J)return"optional";return"default"}var _J={"nullable+optional"({varName:Q,assignNull:J,validationCode:$}){let X=`if (${Q} === null) { ${J}}
27
- `;return X+=`else if (${Q} !== undefined) {
28
- `,X+=$,X+=`}
29
- `,X},nullable({varName:Q,emitCtx:J,assignNull:$,validationCode:X}){let Y=`if (${Q} === undefined) ${J.fail("isDefined")};
30
- `;return Y+=`else if (${Q} !== null) {
31
- `,Y+=X,Y+=`} else { ${$}}
32
- `,Y},defined({varName:Q,emitCtx:J,validationCode:$}){let X=`if (${Q} === undefined) ${J.fail("isDefined")};
33
- `;return X+=$,X},optional({varName:Q,validationCode:J}){let $=`if (${Q} !== undefined && ${Q} !== null) {
34
- `;return $+=J,$+=`}
35
- `,$},default({varName:Q,emitCtx:J,validationCode:$}){let X=`if (${Q} === undefined || ${Q} === null) ${J.fail("isDefined")};
36
- `;return X+=`else {
37
- `,X+=$,X+=`}
38
- `,X}};function DJ(Q,J,$){let{collectErrors:X,exposeDefaultValues:Y}=$;if(J.exclude){if(!J.exclude.serializeOnly){if($.options?.debug){let R=J.exclude.deserializeOnly?"deserializeOnly":"bidirectional";return`// [baker] field "${Q}" excluded (${R} @Exclude)
39
- `}return""}}if(J.expose.length>0&&J.expose.every((R)=>R.serializeOnly)){if($.options?.debug)return`// [baker] field "${Q}" excluded (all @Expose entries are serializeOnly)
40
- `;return""}let F=zJ(Q),q=a(Q,J.expose),Z=e(J.expose),M=GJ(Q,$),P="",H=null;if(J.flags.validateIf)H=$.refs.length,$.refs.push(J.flags.validateIf);let j;if(Y&&!J.flags.isOptional)j=`var ${F} = (${JSON.stringify(q)} in input) ? input[${JSON.stringify(q)}] : ${U.out}[${JSON.stringify(Q)}];
41
- `;else j=`var ${F} = input[${JSON.stringify(q)}];
42
- `;let z="",B="";if(Z&&Z.length>0){let R=JSON.stringify(Z);z=`if (${U.groupsSet} && ${R}.some(function(g){return ${U.groupsSet}.has(g);})) {
43
- `,B=`}
44
- `}let W=j,L=!!(J.flags.isOptional&&!J.flags.isDefined),w=J.flags.isNullable===!0,D=TJ(Q,F,J,$,M),_=`${U.out}[${JSON.stringify(Q)}] = null;
45
- `,T=wJ(w,L,J.flags.isDefined??!1);if(W+=_J[T]({varName:F,emitCtx:M,assignNull:_,validationCode:D}),H!==null)P+=z+`if (_refs[${H}](input)) {
46
- `+W+`}
47
- `+B;else P+=z+W+B;return P}function TJ(Q,J,$,X,Y){let{collectErrors:F,execs:q}=X,Z="",M=$.transform.filter((P)=>!P.options?.serializeOnly);if(M.length>0)for(let P of M){let H=X.refs.length;X.refs.push(P.fn);let j=X.isAsync&&g(P.fn),z=`_refs[${H}]({value:${J},key:${JSON.stringify(Q)},obj:input,type:'deserialize'})`;Z+=`${J} = ${j?"await ":""}${z};
48
- `}if($.type?.collection)return Z+=kJ(Q,J,$,X,Y),Z;if($.flags.validateNested&&$.type?.fn)return Z+=gJ(Q,J,$,X,Y),Z;if($.validation.length===0)return Z+=`${U.out}[${JSON.stringify(Q)}] = ${J};
49
- `,Z;return Z+=bJ(Q,J,$.validation,F,Y,X,$),Z}function QJ(Q,J,$,X){let Y="";if(typeof Q.message==="string")Y+=`,message:${JSON.stringify(Q.message)}`;else if(typeof Q.message==="function"){let F=X.refs.length;X.refs.push(Q.message);let q=X.refs.length;X.refs.push(Q.rule.constraints??{}),Y+=`,message:_refs[${F}]({property:${JSON.stringify(J)},value:${$},constraints:_refs[${q}]})`}if(Q.context!==void 0){let F=X.refs.length;X.refs.push(Q.context),Y+=`,context:_refs[${F}]`}return Y}function k(Q,J,$,X,Y){let F=QJ(X,J,$,Y);if(!F)return Q;return{...Q,fail(q){if(Q.collectErrors)return`${U.errList}.push({path:${JSON.stringify(J)},code:${JSON.stringify(q)}${F}})`;else return`return _err([{path:${JSON.stringify(J)},code:${JSON.stringify(q)}${F}}])`}}}function v(Q,J){if(!Q.groups||Q.groups.length===0)return J;let $=JSON.stringify(Q.groups);return`if (!${U.groupsSet} || ${$}.some(function(g){return ${U.groupsSet}.has(g);})) {
2
+ import"./index-xdn55cz3.js";import{i as qJ}from"./index-dcbd798a.js";import{j as v,k as i,l as TJ,m as HQ,n as jQ}from"./index-03cysbck.js";import{o as K,p as h}from"./index-jp2yjd6g.js";import"./index-mw7met6r.js";import{isErr as AJ}from"@zipbul/result";var JJ=Symbol.for("baker:error");function IJ(X){return X!=null&&typeof X==="object"&&JJ in X}function g(X){return{[JJ]:!0,errors:X}}class O extends Error{constructor(X){super(X);this.name="SealError"}}var QJ={};function bJ(X){if(XJ())throw new O("[baker] configure() called after auto-seal. Already-sealed classes are not affected. Call configure() before the first deserialize/serialize/validate.");QJ={enableImplicitConversion:X.autoConvert??!1,exposeDefaultValues:X.allowClassDefaults??!1,stopAtFirstError:X.stopAtFirstError??!1,whitelist:X.forbidUnknown??!1,debug:X.debug??!1}}function d(){return QJ}import{err as GJ,isErr as VJ}from"@zipbul/result";function I(X){return X.replace(/[^a-zA-Z0-9_]/g,(J)=>`$${J.charCodeAt(0)}$`)}function y(X,J,U){return U.map((Y)=>{let W=JSON.stringify(Y);return`(${X}===${W} || (${J} && ${J}.has(${W})))`}).join(" || ")}var $={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 C(X,J,U,Z){return`if(${U}.message===undefined&&${U}.context===undefined){${X}.push({path:${J},code:${U}.code});}
3
+ else{var ${Z}={path:${J},code:${U}.code};
4
+ if(${U}.message!==undefined)${Z}.message=${U}.message;
5
+ if(${U}.context!==undefined)${Z}.context=${U}.context;
6
+ ${X}.push(${Z});}
7
+ `}function N(X,J,U,Z){let Y=(W)=>Z?`return ${W};
8
+ `:`return _err(${W});
9
+ `;return`if(${J}.message===undefined&&${J}.context===undefined)${Y(`[{path:${X},code:${J}.code}]`)} var ${U}={path:${X},code:${J}.code};
10
+ if(${J}.message!==undefined)${U}.message=${J}.message;
11
+ if(${J}.context!==undefined)${U}.context=${J}.context;
12
+ ${Y(`[${U}]`)}`}function gJ(X,J){return $.field+(J||"")+I(X)}function HJ(X,J){let U=J.find((Y)=>Y.deserializeOnly&&Y.name);if(U)return U.name;let Z=J.find((Y)=>!Y.deserializeOnly&&!Y.serializeOnly&&Y.name);if(Z)return Z.name;return X}function jJ(X){let J=X.filter((Z)=>!Z.serializeOnly);if(J.length===0)return;if(J.some((Z)=>!Z.groups||Z.groups.length===0))return;let U=new Set;for(let Z of J)for(let Y of Z.groups)U.add(Y);return[...U]}function t(X,J,U,Z,Y,W=!1){let F=U?.stopAtFirstError??!1,Q=!F,q=U?.exposeDefaultValues??!1,B=[],M=[],j=[],P=W?(L)=>L:(L)=>`_err(${L})`,z=`'use strict';
13
+ `;if(W){if(q)z+=`var __bk$defs = new _Cls();
14
+ `}else z+=q?`var ${$.out} = new _Cls();
15
+ `:`var ${$.out} = Object.create(_Cls.prototype);
16
+ `;if(Q)z+=`var ${$.errList} = [];
17
+ `;z+=`if (input == null || typeof input !== 'object' || Array.isArray(input)) return ${P("[{path:'',code:'invalidInput'}]")};
18
+ `;let H=-1;if(Z)M.push(new WeakSet),H=M.length-1,z+=`if (_refs[${H}].has(input)) return ${P("[{path:'',code:'circular'}]")};
19
+ `,z+=`_refs[${H}].add(input);
20
+ `,z+=`try {
21
+ `;if(U?.whitelist){let L=new Set;for(let[T,S]of Object.entries(J)){let b=HJ(T,S.expose);L.add(b)}let A=M.length;if(M.push(L),Q)z+=`for (var ${$.key} of Object.keys(input)) { if (!_refs[${A}].has(${$.key})) ${$.errList}.push({path:${$.key},code:'whitelistViolation'}); }
22
+ `;else z+=`for (var ${$.key} of Object.keys(input)) { if (!_refs[${A}].has(${$.key})) return ${P(`[{path:${$.key},code:'whitelistViolation'}]`)}; }
23
+ `}if(Object.values(J).some((L)=>{let A=jJ(L.expose);if(A&&A.length>0)return!0;if(L.validation.some((T)=>T.groups&&T.groups.length>0))return!0;return!1}))z+=`var ${$.groups} = _opts && _opts.groups;
24
+ `,z+=`var ${$.group0} = ${$.groups} && ${$.groups}.length === 1 ? ${$.groups}[0] : null;
25
+ `,z+=`var ${$.groupsSet} = ${$.groups} && ${$.groups}.length > 1 ? new Set(${$.groups}) : null;
26
+ `;for(let[L,A]of Object.entries(J)){let T=WJ(L,A,{stopAtFirstError:F,collectErrors:Q,exposeDefaultValues:q,isAsync:Y,regexes:B,refs:M,execs:j,options:U,validateOnly:W});z+=T}if(Q)z+=`if (${$.errList}.length) return ${W?$.errList:`_err(${$.errList})`};
27
+ `;if(z+=`return ${W?"null":$.out};
28
+ `,Z)z+=`} finally { _refs[${H}].delete(input); }
29
+ `;return z+=`//# sourceURL=baker://${X.name}/${W?"validate":"deserialize"}
30
+ `,Function("_Cls","_re","_refs","_execs","_err","_isErr",`return ${Y?"async function":"function"}(input, _opts) { `+z+" }")(X,B,M,j,GJ,VJ)}function FJ(X,J,U,Z,Y){return t(X,J,U,Z,Y,!0)}function kJ(X,J,U){if(X&&J)return"nullable+optional";if(X)return"nullable";if(U)return"defined";if(J)return"optional";return"default"}var KJ={"nullable+optional"({varName:X,assignNull:J,validationCode:U}){let Z=`if (${X} === null) { ${J}}
31
+ `;return Z+=`else if (${X} !== undefined) {
32
+ `,Z+=U,Z+=`}
33
+ `,Z},nullable({varName:X,emitCtx:J,assignNull:U,validationCode:Z}){let Y=`if (${X} === undefined) ${J.fail("isDefined")};
34
+ `;return Y+=`else if (${X} !== null) {
35
+ `,Y+=Z,Y+=`} else { ${U}}
36
+ `,Y},defined({varName:X,emitCtx:J,validationCode:U}){let Z=`if (${X} === undefined) ${J.fail("isDefined")};
37
+ `;return Z+=U,Z},optional({varName:X,validationCode:J}){let U=`if (${X} !== undefined && ${X} !== null) {
38
+ `;return U+=J,U+=`}
39
+ `,U},default({varName:X,emitCtx:J,validationCode:U}){let Z=`if (${X} === undefined || ${X} === null) ${J.fail("isDefined")};
40
+ `;return Z+=`else {
41
+ `,Z+=U,Z+=`}
42
+ `,Z}};function WJ(X,J,U){let{collectErrors:Z,exposeDefaultValues:Y}=U;if(J.exclude){if(!J.exclude.serializeOnly){if(U.options?.debug){let S=J.exclude.deserializeOnly?"deserializeOnly":"bidirectional";return`// [baker] field "${X}" excluded (${S} @Exclude)
43
+ `}return""}}if(J.expose.length>0&&J.expose.every((S)=>S.serializeOnly)){if(U.options?.debug)return`// [baker] field "${X}" excluded (all @Expose entries are serializeOnly)
44
+ `;return""}let W=gJ(X,U.varPrefix),F=HJ(X,J.expose),Q=jJ(J.expose),q=U.inputExpr||"input",B=lJ(X,U),M="",j=null;if(J.flags.validateIf)j=U.refs.length,U.refs.push(J.flags.validateIf);let P;if(Y&&!J.flags.isOptional){let S=U.validateOnly?"__bk$defs":$.out;P=`var ${W} = (${JSON.stringify(F)} in ${q}) ? ${q}[${JSON.stringify(F)}] : ${S}[${JSON.stringify(X)}];
45
+ `}else P=`var ${W} = ${q}[${JSON.stringify(F)}];
46
+ `;let z="",H="";if(Q&&Q.length>0)z=`if ((${$.group0} !== null || ${$.groupsSet}) && (${y($.group0,$.groupsSet,Q)})) {
47
+ `,H=`}
48
+ `;let R=P,_=!!(J.flags.isOptional&&!J.flags.isDefined),D=J.flags.isNullable===!0,L=EJ(X,W,J,U,B,Q),A=U.validateOnly?"":`${$.out}[${JSON.stringify(X)}] = null;
49
+ `,T=kJ(D,_,J.flags.isDefined??!1);if(R+=KJ[T]({varName:W,emitCtx:B,assignNull:A,validationCode:L}),j!==null)M+=z+`if (_refs[${j}](${q})) {
50
+ `+R+`}
51
+ `+H;else M+=z+R+H;return M}function EJ(X,J,U,Z,Y,W){let{collectErrors:F,execs:Q}=Z,q="",B=U.transform.filter((M)=>!M.options?.serializeOnly);if(B.length>0)if(B.length===1){let M=B[0],j=Z.refs.length;Z.refs.push(M.fn);let P=`_refs[${j}]({value:${J},key:${JSON.stringify(X)},obj:${Z.inputExpr||"input"}})`;q+=`${J} = ${M.isAsync?"await ":""}${P};
52
+ `}else if(B.length===2){let M=B[0],j=B[1],P=Z.refs.length;Z.refs.push(M.fn);let z=Z.refs.length;Z.refs.push(j.fn);let H=`_refs[${P}]({value:${J},key:${JSON.stringify(X)},obj:${Z.inputExpr||"input"}})`,R=M.isAsync?`await ${H}`:H,_=`_refs[${z}]({value:${R},key:${JSON.stringify(X)},obj:${Z.inputExpr||"input"}})`;q+=`${J} = ${j.isAsync?"await ":""}${_};
53
+ `}else for(let M of B){let j=Z.refs.length;Z.refs.push(M.fn);let P=`_refs[${j}]({value:${J},key:${JSON.stringify(X)},obj:${Z.inputExpr||"input"}})`;q+=`${J} = ${M.isAsync?"await ":""}${P};
54
+ `}if(U.type?.collection)return q+=Z.validateOnly?iJ(X,J,U,Z,Y):mJ(X,J,U,Z,Y),q;if(U.flags.validateNested&&U.type?.fn)return q+=Z.validateOnly?oJ(X,J,U,Z,Y):cJ(X,J,U,Z,Y),q;if(U.validation.length===0){if(!Z.validateOnly)q+=`${$.out}[${JSON.stringify(X)}] = ${J};
55
+ `;return q}return q+=nJ(X,J,U.validation,F,Y,Z,U,W),q}function r(X,J,U,Z){let Y="";if(typeof X.message==="string")Y+=`,message:${JSON.stringify(X.message)}`;else if(typeof X.message==="function"){let W=Z.refs.length;Z.refs.push(X.message);let F=Z.refs.length;Z.refs.push(X.rule.constraints??{}),Y+=`,message:_refs[${W}]({property:${JSON.stringify(J)},value:${U},constraints:_refs[${F}]})`}if(X.context!==void 0){let W=Z.refs.length;Z.refs.push(X.context),Y+=`,context:_refs[${W}]`}return Y}function BJ(X,J,U,Z,Y){let W=r(Z,J,U,Y);if(!W)return X;let F=X._pathExpr??JSON.stringify(J);return{...X,fail(Q){if(X.collectErrors)return`${$.errList}.push({path:${F},code:${JSON.stringify(Q)}${W}})`;else if(Y.validateOnly)return`return [{path:${F},code:${JSON.stringify(Q)}${W}}]`;else return`return _err([{path:${F},code:${JSON.stringify(Q)}${W}}])`}}}function E(X,J,U,Z,Y,W,F,Q){let q="",B=U.filter((H)=>p(H.groups,F)),M=B.filter((H)=>H.rule.plan?.cacheKey==="length").length,j=B.filter((H)=>H.rule.plan?.cacheKey==="time").length,P=M>1?`${$.arr}${I(X)}_len`:null,z=j>1?`${$.arr}${I(X)}_time`:null;if(P)q+=`${W}var ${P} = ${J}.length;
56
+ `;if(z)q+=`${W}var ${z} = ${J}.getTime();
57
+ `;for(let H of U){let R=BJ(Z,X,J,H,Y),_=Q?{...R,insideTypeGate:!0}:R,D=p(H.groups,F)&&H.rule.plan&&(P||z)?qJ(J,_,H.rule.ruleName,H.rule.plan,{length:H.rule.plan.cacheKey==="length"?P??void 0:void 0,time:H.rule.plan.cacheKey==="time"?z??void 0:void 0},Q):H.rule.emit(J,_);if(!D)continue;let L=p(H.groups,F)?D:CJ(H,D);q+=W+L.replace(/\n/g,`
58
+ `+W)+`
59
+ `}return q}function CJ(X,J){if(!X.groups||X.groups.length===0)return J;return`if ((${$.group0} === null && !${$.groupsSet}) || ${y($.group0,$.groupsSet,X.groups)}) {
50
60
  ${J}
51
61
  }
52
- `}function s(Q,J,$,X,Y,F){let q=Y?`${U.errList}.push({path:${JSON.stringify($)},code:'conversionFailed'}); ${X} = true;`:F.fail("conversionFailed")+";";switch(Q){case"string":return` ${J} = String(${J});
62
+ `}function p(X,J){if(!X||X.length===0)return!J||J.length===0;if(!J||X.length!==J.length)return!1;for(let U=0;U<X.length;U++)if(X[U]!==J[U])return!1;return!0}function ZJ(X,J,U,Z,Y,W){let F=Y?`${W.fail("conversionFailed")}; ${Z} = true;`:W.fail("conversionFailed")+";";switch(X){case"string":return` ${J} = String(${J});
53
63
  `;case"number":return` ${J} = Number(${J});
54
- if (isNaN(${J})) { ${q} }
64
+ if (isNaN(${J})) { ${F} }
55
65
  `;case"boolean":return` if (${J} === 'true' || ${J} === '1' || ${J} === 1) ${J} = true;
56
66
  else if (${J} === 'false' || ${J} === '0' || ${J} === 0) ${J} = false;
57
- else { ${q} }
67
+ else { ${F} }
58
68
  `;case"date":return` ${J} = new Date(${J});
59
- if (isNaN(${J}.getTime())) { ${q} }
60
- `;default:throw new h(`Unknown implicit conversion type: "${Q}" for field "${$}"`)}}var hJ={Number:"number",Boolean:"boolean",String:"string",Date:"date"},t={isString:"string",isNumber:"number",isBoolean:"boolean",isDate:"date",isInt:"number"},OJ=new Set(["isString","isBoolean"]);function RJ(Q,J){let $=J.filter((H)=>H.each),X=J.filter((H)=>!H.each),Y=X.filter((H)=>H.rule.requiresType==="string"),F=X.filter((H)=>H.rule.requiresType==="number"),q=X.filter((H)=>H.rule.requiresType==="boolean"),Z=X.filter((H)=>H.rule.requiresType==="date"),M=X.filter((H)=>!H.rule.requiresType),P=[{type:"string",deps:Y},{type:"number",deps:F},{type:"boolean",deps:q},{type:"date",deps:Z}].filter((H)=>H.deps.length>0);if(P.length>1)throw new h(`Field "${Q}" has conflicting requiresType: ${P.map((H)=>H.type).join(", ")}`);return{each:$,generalRules:M,typedDeps:P.length>0?P[0]:void 0}}function VJ(Q,J,$,X){let{generalRules:Y,typedDeps:F}=J,q=!!F,Z=F?.type??null,M=F?.deps??[],P=-1;if(Z)P=Y.findIndex((W)=>t[W.rule.ruleName]===Z);let H=!!X.options?.enableImplicitConversion&&!$?.transform.some((W)=>!W.options?.serializeOnly),j=null;if(!q&&H&&P<0)for(let W=0;W<Y.length;W++){let L=t[Y[W].rule.ruleName];if(L){P=W,j=L;break}}let z=P>=0?Y[P]:void 0,B=null;if(!q&&!j&&H&&$?.type?.fn)try{let W=$.type.fn(),L=Array.isArray(W)?W[0]:W;B=L?hJ[L.name]??null:null}catch(W){throw new h(`field "${Q}": @Field type function threw: ${W.message}`)}return{effectiveGateType:Z??j??B,gateDeps:M,typeAsserterIdx:P,typeAsserter:z,enableConversion:H,asserterInferredGate:j,typeHintGate:B}}function IJ(Q,J,$,X,Y,F){let q="",{effectiveGateType:Z,gateCondition:M,gateErrorCode:P,gateEmitCtx:H,otherGeneral:j,gateDeps:z,typeAsserter:B,enableConversion:W}=F,L=(w)=>{let D="";if(B&&!OJ.has(B.rule.ruleName)){let _=v(B,B.rule.emit(J,k(X,Q,J,B,Y)));D+=w+_.replace(/\n/g,`
61
- `+w)+`
62
- `}for(let _ of j){let T=v(_,_.rule.emit(J,k(X,Q,J,_,Y)));D+=w+T.replace(/\n/g,`
63
- `+w)+`
64
- `}for(let _ of z){let T=v(_,_.rule.emit(J,k(X,Q,J,_,Y)));D+=w+T.replace(/\n/g,`
65
- `+w)+`
66
- `}return D};if($)if(W){let w=`${U.skip}${S(Q)}`;q+=`var ${w} = false;
67
- `,q+=`if (${M}) {
68
- `,q+=s(Z,J,Q,w,!0,X),q+=`}
69
- `,q+=`if (!${w}) {
70
- `;let D=`${U.mark}${S(Q)}`;q+=` var ${D} = ${U.errList}.length;
71
- `,q+=L(" "),q+=` if (${U.errList}.length === ${D}) ${U.out}[${JSON.stringify(Q)}] = ${J};
72
- `,q+=`}
73
- `}else{q+=`if (${M}) ${H.fail(P)};
74
- `,q+=`else {
75
- `;let w=`${U.mark}${S(Q)}`;q+=` var ${w} = ${U.errList}.length;
76
- `,q+=L(" "),q+=` if (${U.errList}.length === ${w}) ${U.out}[${JSON.stringify(Q)}] = ${J};
77
- `,q+=`}
78
- `}else if(W)q+=`if (${M}) {
79
- `,q+=s(Z,J,Q,null,!1,X),q+=`}
80
- `,q+=L(""),q+=`${U.out}[${JSON.stringify(Q)}] = ${J};
81
- `;else q+=`if (${M}) ${H.fail(P)};
82
- `,q+=L(""),q+=`${U.out}[${JSON.stringify(Q)}] = ${J};
83
- `;return q}function SJ(Q,J,$,X,Y,F){let q="";if(X)if($.length===0)q+=`${U.out}[${JSON.stringify(Q)}] = ${J};
84
- `;else{let Z=`${U.mark}${S(Q)}`;q+=`var ${Z} = ${U.errList}.length;
85
- `;for(let M of $)q+=v(M,M.rule.emit(J,k(Y,Q,J,M,F)))+`
86
- `;q+=`if (${U.errList}.length === ${Z}) ${U.out}[${JSON.stringify(Q)}] = ${J};
87
- `}else{for(let Z of $)q+=v(Z,Z.rule.emit(J,k(Y,Q,J,Z,F)))+`
88
- `;q+=`${U.out}[${JSON.stringify(Q)}] = ${J};
89
- `}return q}function AJ(Q,J,$,X,Y,F){let q="";for(let Z of $){let M=JSON.stringify(Q),P=S(Q),H=`${U.index}${P}`,j=`${U.setIdx}${P}`,z=`${U.setVal}${P}`,B=`${U.mapIdx}${P}`,W=`${U.mapVal}${P}`,L=QJ(Z,Q,J,F),w=Z.groups&&Z.groups.length>0?`if (!${U.groupsSet} || ${JSON.stringify(Z.groups)}.some(function(g){return ${U.groupsSet}.has(g);})) {
90
- `:"",D=Z.groups&&Z.groups.length>0?`}
91
- `:"",_=[{guard:`Array.isArray(${J})`,idxVar:H,elemExpr:`${J}[${H}]`,loopHeader:`for (var ${H}=0; ${H}<${J}.length; ${H}++)`,counterDecl:"",counterInc:""},{guard:`${J} instanceof Set`,idxVar:j,elemExpr:z,loopHeader:`for (var ${z} of ${J})`,counterDecl:`var ${j} = 0;
92
- `,counterInc:`${j}++;
93
- `},{guard:`${J} instanceof Map`,idxVar:B,elemExpr:W,loopHeader:`for (var ${W} of ${J}.values())`,counterDecl:`var ${B} = 0;
94
- `,counterInc:`${B}++;
95
- `}],T=(R)=>{let b={...Y,fail:(K)=>X?`${U.errList}.push({path:${M}+'['+${R.idxVar}+']',code:${JSON.stringify(K)}${L}})`:`return _err([{path:${M}+'['+${R.idxVar}+']',code:${JSON.stringify(K)}${L}}])`},V="";if(V+=` ${R.counterDecl}`,V+=` ${R.loopHeader} {
96
- `,V+=" "+Z.rule.emit(R.elemExpr,b)+`
97
- `,R.counterInc)V+=` ${R.counterInc}`;return V+=` }
98
- `,V};if(q+=w,X)q+=`if (${_[0].guard}) {
99
- `,q+=T(_[0]),q+=`} else if (${_[1].guard}) {
100
- `,q+=T(_[1]),q+=`} else if (${_[2].guard}) {
101
- `,q+=T(_[2]),q+=`} else { ${U.errList}.push({path:${M},code:'isArray'}); }
102
- `;else q+=`if (!${_[0].guard} && !(${J} instanceof Set) && !(${J} instanceof Map)) ${Y.fail("isArray")};
103
- `,q+=`if (${_[0].guard}) {
104
- `,q+=T(_[0]),q+=`} else if (${_[1].guard}) {
105
- `,q+=T(_[1]),q+=`} else if (${_[2].guard}) {
106
- `,q+=T(_[2]),q+=`}
107
- `;q+=D}return q}function bJ(Q,J,$,X,Y,F,q){let Z=RJ(Q,$),M=VJ(Q,Z,q,F),P="";if(!!Z.typedDeps||M.asserterInferredGate||M.typeHintGate){let j=M.typeAsserter?Z.generalRules.filter((L,w)=>w!==M.typeAsserterIdx):Z.generalRules,z,B;if(M.typeAsserter)B=M.typeAsserter.rule.ruleName;else if(M.gateDeps.length>0)B=M.gateDeps[0].rule.ruleName;else B="conversionFailed";if(M.effectiveGateType==="date")z=`!(${J} instanceof Date)`;else z=`typeof ${J} !== '${M.effectiveGateType}'`;let W=M.typeAsserter?k(Y,Q,J,M.typeAsserter,F):Y;P+=IJ(Q,J,X,Y,F,{effectiveGateType:M.effectiveGateType,gateCondition:z,gateErrorCode:B,gateEmitCtx:W,otherGeneral:j,gateDeps:M.gateDeps,typeAsserter:M.typeAsserter,enableConversion:M.enableConversion})}else P+=SJ(Q,J,Z.generalRules,X,Y,F);return P+=AJ(Q,J,Z.each,X,Y,F),P}function kJ(Q,J,$,X,Y){let{collectErrors:F,execs:q}=X,Z=S(Q),M=$.type.collection,P=X.isAsync?"await ":"",H=-1;if($.type.resolvedCollectionValue){let z=$.type.resolvedCollectionValue[O];H=q.length,q.push(z)}let j="";if(M==="Set"){j+=`if (Array.isArray(${J})) {
108
- `;let z=$.validation.filter((W)=>!W.each);for(let W of z){let L=k(Y,Q,J,W,X);j+=` ${W.rule.emit(J,L)}
109
- `}if(H>=0){let W=`${U.index}${Z}`;if(j+=` var ${U.arr}${Z} = new Set();
110
- `,j+=` for (var ${W}=0; ${W}<${J}.length; ${W}++) {
111
- `,j+=` var ${U.result}${Z} = ${P}_execs[${H}]._deserialize(${J}[${W}], _opts);
112
- `,j+=` if (_isErr(${U.result}${Z})) {
113
- `,F)j+=` var ${U.errors}${Z} = ${U.result}${Z}.data;
114
- `,j+=` for (var ${U.nestedIdx}${Z}=0; ${U.nestedIdx}${Z}<${U.errors}${Z}.length; ${U.nestedIdx}${Z}++) {
115
- `,j+=" "+u(U.errList,`${JSON.stringify(Q)}+'['+${W}+'].'+${U.errors}${Z}[${U.nestedIdx}${Z}].path`,`${U.errors}${Z}[${U.nestedIdx}${Z}]`,`__ne${Z}`),j+=` }
116
- `;else j+=` var ${U.errors}${Z} = ${U.result}${Z}.data;
117
- `,j+=" "+f(`${JSON.stringify(Q)}+'['+${W}+'].'+${U.errors}${Z}[0].path`,`${U.errors}${Z}[0]`,`__ne${Z}`);j+=` } else { ${U.arr}${Z}.add(${U.result}${Z}); }
69
+ if (isNaN(${J}.getTime())) { ${F} }
70
+ `;default:throw new O(`Unknown implicit conversion type: "${X}" for field "${U}"`)}}var NJ={Number:"number",Boolean:"boolean",String:"string",Date:"date"},$J={isString:"string",isNumber:"number",isBoolean:"boolean",isDate:"date",isInt:"number",isArray:"array",isObject:"object"},vJ=new Set(["isString","isBoolean","isDate","isArray","isObject"]);function uJ(X,J){let U=J.filter((P)=>P.each),Z=J.filter((P)=>!P.each),Y=Z.filter((P)=>P.rule.requiresType==="string"),W=Z.filter((P)=>P.rule.requiresType==="number"),F=Z.filter((P)=>P.rule.requiresType==="boolean"),Q=Z.filter((P)=>P.rule.requiresType==="date"),q=Z.filter((P)=>P.rule.requiresType==="array"),B=Z.filter((P)=>P.rule.requiresType==="object"),M=Z.filter((P)=>!P.rule.requiresType),j=[{type:"string",deps:Y},{type:"number",deps:W},{type:"boolean",deps:F},{type:"date",deps:Q},{type:"array",deps:q},{type:"object",deps:B}].filter((P)=>P.deps.length>0);if(j.length>1)throw new O(`Field "${X}" has conflicting requiresType: ${j.map((P)=>P.type).join(", ")}`);return{each:U,generalRules:M,typedDeps:j.length>0?j[0]:void 0}}function yJ(X,J,U,Z){let{generalRules:Y,typedDeps:W}=J,F=!!W,Q=W?.type??null,q=W?.deps??[],B=-1;if(Q)B=Y.findIndex((H)=>$J[H.rule.ruleName]===Q);let M=!!Z.options?.enableImplicitConversion&&!U?.transform.some((H)=>!H.options?.serializeOnly),j=null;if(!F&&M&&B<0)for(let H=0;H<Y.length;H++){let R=$J[Y[H].rule.ruleName];if(R){B=H,j=R;break}}let P=B>=0?Y[B]:void 0,z=null;if(!F&&!j&&M&&U?.type?.fn)try{let H=U.type.fn(),R=Array.isArray(H)?H[0]:H;z=R?NJ[R.name]??null:null}catch(H){throw new O(`field "${X}": @Field type function threw: ${H.message}`)}return{effectiveGateType:Q??j??z,gateDeps:q,typeAsserterIdx:B,typeAsserter:P,enableConversion:M,asserterInferredGate:j,typeHintGate:z}}function fJ(X,J,U,Z,Y,W,F){let Q="",{effectiveGateType:q,gateCondition:B,gateErrorCode:M,gateEmitCtx:j,otherGeneral:P,gateDeps:z,typeAsserter:H,enableConversion:R}=W,_=(D)=>{let L=[];if(H&&!vJ.has(H.rule.ruleName))L.push(H);return L.push(...P,...z),E(X,J,L,Z,Y,D,F,!0)};if(U)if(R&&(q==="string"||q==="number"||q==="boolean"||q==="date")){let L=`${$.skip}${I(X)}`;if(Q+=`var ${L} = false;
71
+ `,Q+=`if (${B}) {
72
+ `,Q+=ZJ(q,J,X,L,!0,Z),Q+=`}
73
+ `,Q+=`if (!${L}) {
74
+ `,Y.validateOnly)Q+=_(" ");else{let A=`${$.mark}${I(X)}`;Q+=` var ${A} = ${$.errList}.length;
75
+ `,Q+=_(" "),Q+=` if (${$.errList}.length === ${A}) ${$.out}[${JSON.stringify(X)}] = ${J};
76
+ `}Q+=`}
77
+ `}else{if(Q+=`if (${B}) ${j.fail(M)};
78
+ `,Q+=`else {
79
+ `,Y.validateOnly)Q+=_(" ");else{let L=`${$.mark}${I(X)}`;Q+=` var ${L} = ${$.errList}.length;
80
+ `,Q+=_(" "),Q+=` if (${$.errList}.length === ${L}) ${$.out}[${JSON.stringify(X)}] = ${J};
81
+ `}Q+=`}
82
+ `}else if(R&&(q==="string"||q==="number"||q==="boolean"||q==="date")){if(Q+=`if (${B}) {
83
+ `,Q+=ZJ(q,J,X,null,!1,Z),Q+=`}
84
+ `,Q+=_(""),!Y.validateOnly)Q+=`${$.out}[${JSON.stringify(X)}] = ${J};
85
+ `}else if(Q+=`if (${B}) ${j.fail(M)};
86
+ `,Q+=_(""),!Y.validateOnly)Q+=`${$.out}[${JSON.stringify(X)}] = ${J};
87
+ `;return Q}function pJ(X,J,U,Z,Y,W,F){let Q="";if(Z)if(U.length===0){if(!W.validateOnly)Q+=`${$.out}[${JSON.stringify(X)}] = ${J};
88
+ `}else if(W.validateOnly)Q+=E(X,J,U,Y,W,"",F);else{let q=`${$.mark}${I(X)}`;Q+=`var ${q} = ${$.errList}.length;
89
+ `,Q+=E(X,J,U,Y,W,"",F),Q+=`if (${$.errList}.length === ${q}) ${$.out}[${JSON.stringify(X)}] = ${J};
90
+ `}else if(Q+=E(X,J,U,Y,W,"",F),!W.validateOnly)Q+=`${$.out}[${JSON.stringify(X)}] = ${J};
91
+ `;return Q}function xJ(X,J,U,Z,Y,W,F){let Q="";for(let q of U){let B=JSON.stringify(X),M=I(X),j=`${$.index}${M}`,P=`${$.setIdx}${M}`,z=`${$.setVal}${M}`,H=`${$.mapIdx}${M}`,R=`${$.mapVal}${M}`,_=r(q,X,J,W),D=q.groups&&q.groups.length>0&&!p(q.groups,F)?`if ((${$.group0} === null && !${$.groupsSet}) || ${y($.group0,$.groupsSet,q.groups)}) {
92
+ `:"",L=q.groups&&q.groups.length>0&&!p(q.groups,F)?`}
93
+ `:"",A=[{guard:`Array.isArray(${J})`,idxVar:j,elemExpr:`${J}[${j}]`,loopHeader:`for (var ${j}=0; ${j}<${J}.length; ${j}++)`,counterDecl:"",counterInc:""},{guard:`${J} instanceof Set`,idxVar:P,elemExpr:z,loopHeader:`for (var ${z} of ${J})`,counterDecl:`var ${P} = 0;
94
+ `,counterInc:`${P}++;
95
+ `},{guard:`${J} instanceof Map`,idxVar:H,elemExpr:R,loopHeader:`for (var ${R} of ${J}.values())`,counterDecl:`var ${H} = 0;
96
+ `,counterInc:`${H}++;
97
+ `}],T=(S)=>{let b=`__bk$ep_${I(S.idxVar)}`,G={...Y,fail:(k)=>Z?`${$.errList}.push({path:${b}+${S.idxVar}+']',code:${JSON.stringify(k)}${_}})`:W.validateOnly?`return [{path:${b}+${S.idxVar}+']',code:${JSON.stringify(k)}${_}}]`:`return _err([{path:${b}+${S.idxVar}+']',code:${JSON.stringify(k)}${_}}])`},V="";if(V+=` var ${b} = ${B}+'[';
98
+ `,V+=` ${S.counterDecl}`,V+=` ${S.loopHeader} {
99
+ `,V+=" "+q.rule.emit(S.elemExpr,G)+`
100
+ `,S.counterInc)V+=` ${S.counterInc}`;return V+=` }
101
+ `,V};if(Q+=D,Z)Q+=`if (${A[0].guard}) {
102
+ `,Q+=T(A[0]),Q+=`} else if (${A[1].guard}) {
103
+ `,Q+=T(A[1]),Q+=`} else if (${A[2].guard}) {
104
+ `,Q+=T(A[2]),Q+=`} else { ${$.errList}.push({path:${B},code:'isArray'}); }
105
+ `;else Q+=`if (!${A[0].guard} && !(${J} instanceof Set) && !(${J} instanceof Map)) ${Y.fail("isArray")};
106
+ `,Q+=`if (${A[0].guard}) {
107
+ `,Q+=T(A[0]),Q+=`} else if (${A[1].guard}) {
108
+ `,Q+=T(A[1]),Q+=`} else if (${A[2].guard}) {
109
+ `,Q+=T(A[2]),Q+=`}
110
+ `;Q+=L}return Q}function nJ(X,J,U,Z,Y,W,F,Q){let q=uJ(X,U),B=yJ(X,q,F,W),M="";if(!!q.typedDeps||B.asserterInferredGate||B.typeHintGate){let P=B.typeAsserter?q.generalRules.filter((_,D)=>D!==B.typeAsserterIdx):q.generalRules,z,H;if(B.typeAsserter)H=B.typeAsserter.rule.ruleName;else if(B.gateDeps.length>0)H=B.gateDeps[0].rule.ruleName;else H="conversionFailed";if(B.effectiveGateType==="date")z=`!(${J} instanceof Date) || isNaN(${J}.getTime())`;else if(B.effectiveGateType==="array")z=`!Array.isArray(${J})`;else if(B.effectiveGateType==="object")z=`typeof ${J} !== 'object' || ${J} === null || Array.isArray(${J})`;else if(B.effectiveGateType==="number")z=`typeof ${J} !== 'number' || isNaN(${J})`;else z=`typeof ${J} !== '${B.effectiveGateType}'`;let R=B.typeAsserter?BJ(Y,X,J,B.typeAsserter,W):Y;M+=fJ(X,J,Z,Y,W,{effectiveGateType:B.effectiveGateType,gateCondition:z,gateErrorCode:H,gateEmitCtx:R,otherGeneral:P,gateDeps:B.gateDeps,typeAsserter:B.typeAsserter,enableConversion:B.enableConversion},Q)}else M+=pJ(X,J,q.generalRules,Z,Y,W,Q);return M+=xJ(X,J,q.each,Z,Y,W,Q),M}function mJ(X,J,U,Z,Y){let{collectErrors:W,execs:F}=Z,Q=I(X),q=U.type.collection,B=Z.isAsync?"await ":"",M=-1;if(U.type.resolvedCollectionValue){let P=U.type.resolvedCollectionValue[h];M=F.length,F.push(P)}let j="";if(q==="Set"){j+=`if (Array.isArray(${J})) {
111
+ `;let P=U.validation.filter((H)=>!H.each);if(j+=E(X,J,P,Y,Z," "),M>=0){let H=`${$.index}${Q}`;if(j+=` var ${$.arr}${Q} = new Set();
112
+ `,j+=` for (var ${H}=0; ${H}<${J}.length; ${H}++) {
113
+ `,j+=` var ${$.result}${Q} = ${B}_execs[${M}]._deserialize(${J}[${H}], _opts);
114
+ `,j+=` if (_isErr(${$.result}${Q})) {
115
+ `,W)j+=` var ${$.errors}${Q} = ${$.result}${Q}.data;
116
+ `,j+=` var __bk$pp${Q} = ${JSON.stringify(X)}+'['+${H}+'].';
117
+ `,j+=` for (var ${$.nestedIdx}${Q}=0; ${$.nestedIdx}${Q}<${$.errors}${Q}.length; ${$.nestedIdx}${Q}++) {
118
+ `,j+=" "+C($.errList,`__bk$pp${Q}+${$.errors}${Q}[${$.nestedIdx}${Q}].path`,`${$.errors}${Q}[${$.nestedIdx}${Q}]`,`__ne${Q}`),j+=` }
119
+ `;else j+=` var ${$.errors}${Q} = ${$.result}${Q}.data;
120
+ `,j+=` var __bk$pp${Q} = ${JSON.stringify(X)}+'['+${H}+'].';
121
+ `,j+=" "+N(`__bk$pp${Q}+${$.errors}${Q}[0].path`,`${$.errors}${Q}[0]`,`__ne${Q}`);j+=` } else { ${$.arr}${Q}.add(${$.result}${Q}); }
118
122
  `,j+=` }
119
- `,j+=` ${U.out}[${JSON.stringify(Q)}] = ${U.arr}${Z};
120
- `}else j+=` ${U.out}[${JSON.stringify(Q)}] = new Set(${J});
121
- `;let B=$.validation.filter((W)=>W.each);if(B.length>0){let W=`${U.setIdx}${Z}`,L=`${U.setVal}${Z}`;j+=` var ${W} = 0;
122
- `,j+=` for (var ${L} of ${U.out}[${JSON.stringify(Q)}]) {
123
- `;for(let w of B){let _={...Y,fail:(T)=>F?`${U.errList}.push({path:${JSON.stringify(Q)}+'['+${W}+']',code:${JSON.stringify(T)}})`:`return _err([{path:${JSON.stringify(Q)}+'['+${W}+']',code:${JSON.stringify(T)}}])`};j+=` ${w.rule.emit(L,_)}
124
- `}j+=` ${W}++;
123
+ `,j+=` ${$.out}[${JSON.stringify(X)}] = ${$.arr}${Q};
124
+ `}else j+=` ${$.out}[${JSON.stringify(X)}] = new Set(${J});
125
+ `;let z=U.validation.filter((H)=>H.each);if(z.length>0){let H=`${$.setIdx}${Q}`,R=`${$.setVal}${Q}`;j+=` var ${H} = 0;
126
+ `,j+=` for (var ${R} of ${$.out}[${JSON.stringify(X)}]) {
127
+ `;for(let _ of z){let L={...Y,fail:(A)=>W?`${$.errList}.push({path:${JSON.stringify(X)}+'['+${H}+']',code:${JSON.stringify(A)}})`:`return _err([{path:${JSON.stringify(X)}+'['+${H}+']',code:${JSON.stringify(A)}}])`};j+=` ${_.rule.emit(R,L)}
128
+ `}j+=` ${H}++;
125
129
  `,j+=` }
126
130
  `}j+=`} else { ${Y.fail("isArray")}; }
127
131
  `}else{if(j+=`if (${J} != null && typeof ${J} === 'object' && !Array.isArray(${J})) {
128
- `,H>=0){let z=`${U.key}${Z}`;if(j+=` var ${U.arr}${Z} = new Map();
129
- `,j+=` for (var ${z} in ${J}) {
130
- `,j+=` if (!Object.prototype.hasOwnProperty.call(${J}, ${z})) continue;
131
- `,j+=` var ${U.result}${Z} = ${P}_execs[${H}]._deserialize(${J}[${z}], _opts);
132
- `,j+=` if (_isErr(${U.result}${Z})) {
133
- `,F)j+=` var ${U.errors}${Z} = ${U.result}${Z}.data;
134
- `,j+=` for (var ${U.nestedIdx}${Z}=0; ${U.nestedIdx}${Z}<${U.errors}${Z}.length; ${U.nestedIdx}${Z}++) {
135
- `,j+=" "+u(U.errList,`${JSON.stringify(Q)}+'['+${z}+'].'+${U.errors}${Z}[${U.nestedIdx}${Z}].path`,`${U.errors}${Z}[${U.nestedIdx}${Z}]`,`__ne${Z}`),j+=` }
136
- `;else j+=` var ${U.errors}${Z} = ${U.result}${Z}.data;
137
- `,j+=" "+f(`${JSON.stringify(Q)}+'['+${z}+'].'+${U.errors}${Z}[0].path`,`${U.errors}${Z}[0]`,`__ne${Z}`);j+=` } else { ${U.arr}${Z}.set(${z}, ${U.result}${Z}); }
132
+ `,M>=0){let P=`${$.key}${Q}`;if(j+=` var ${$.arr}${Q} = new Map();
133
+ `,j+=` for (var ${P} in ${J}) {
134
+ `,j+=` if (!Object.prototype.hasOwnProperty.call(${J}, ${P})) continue;
135
+ `,j+=` var ${$.result}${Q} = ${B}_execs[${M}]._deserialize(${J}[${P}], _opts);
136
+ `,j+=` if (_isErr(${$.result}${Q})) {
137
+ `,W)j+=` var ${$.errors}${Q} = ${$.result}${Q}.data;
138
+ `,j+=` var __bk$pp${Q} = ${JSON.stringify(X)}+'['+${P}+'].';
139
+ `,j+=` for (var ${$.nestedIdx}${Q}=0; ${$.nestedIdx}${Q}<${$.errors}${Q}.length; ${$.nestedIdx}${Q}++) {
140
+ `,j+=" "+C($.errList,`__bk$pp${Q}+${$.errors}${Q}[${$.nestedIdx}${Q}].path`,`${$.errors}${Q}[${$.nestedIdx}${Q}]`,`__ne${Q}`),j+=` }
141
+ `;else j+=` var ${$.errors}${Q} = ${$.result}${Q}.data;
142
+ `,j+=` var __bk$pp${Q} = ${JSON.stringify(X)}+'['+${P}+'].';
143
+ `,j+=" "+N(`__bk$pp${Q}+${$.errors}${Q}[0].path`,`${$.errors}${Q}[0]`,`__ne${Q}`);j+=` } else { ${$.arr}${Q}.set(${P}, ${$.result}${Q}); }
138
144
  `,j+=` }
139
- `,j+=` ${U.out}[${JSON.stringify(Q)}] = ${U.arr}${Z};
140
- `}else j+=` var ${U.arr}${Z} = new Map();
141
- `,j+=` for (var ${U.key}${Z} in ${J}) {
142
- `,j+=` if (Object.prototype.hasOwnProperty.call(${J}, ${U.key}${Z})) ${U.arr}${Z}.set(${U.key}${Z}, ${J}[${U.key}${Z}]);
145
+ `,j+=` ${$.out}[${JSON.stringify(X)}] = ${$.arr}${Q};
146
+ `}else j+=` var ${$.arr}${Q} = new Map();
147
+ `,j+=` for (var ${$.key}${Q} in ${J}) {
148
+ `,j+=` if (Object.prototype.hasOwnProperty.call(${J}, ${$.key}${Q})) ${$.arr}${Q}.set(${$.key}${Q}, ${J}[${$.key}${Q}]);
143
149
  `,j+=` }
144
- `,j+=` ${U.out}[${JSON.stringify(Q)}] = ${U.arr}${Z};
150
+ `,j+=` ${$.out}[${JSON.stringify(X)}] = ${$.arr}${Q};
145
151
  `;j+=`} else { ${Y.fail("isObject")}; }
146
- `}return j}function gJ(Q,J,$,X,Y){let{collectErrors:F,execs:q}=X;if(!$.type)return`${U.out}[${JSON.stringify(Q)}] = ${J};
147
- `;let Z="",M=S(Q);if($.type.discriminator){let P=JSON.stringify($.type.discriminator.property);Z+=`var ${U.disc}${M} = ${J} && ${J}[${P}];
148
- `,Z+=`switch (${U.disc}${M}) {
149
- `;for(let H of $.type.discriminator.subTypes){let j=H.value[O],z=q.length;q.push(j);let B=X.isAsync?"await ":"";Z+=` case ${JSON.stringify(H.name)}:
150
- `,Z+=` var ${U.result}${M} = ${B}_execs[${z}]._deserialize(${J}, _opts);
151
- `,Z+=r(Q,`${U.result}${M}`,F),Z+=` break;
152
- `}if(Z+=` default: ${Y.fail("invalidDiscriminator")};
153
- `,Z+=`}
154
- `,$.type.keepDiscriminatorProperty)Z+=`if (${U.out}[${JSON.stringify(Q)}] != null) ${U.out}[${JSON.stringify(Q)}][${P}] = ${U.disc}${M};
155
- `}else{let H=($.type.resolvedClass??$.type.fn())[O],j=q.length;if(q.push(H),$.type?.isArray||$.flags.validateNestedEach||$.validation.some((B)=>B.each)){let B=`${U.index}${M}`,W=X.isAsync?"await ":"";Z+=`if (Array.isArray(${J})) {
156
- `;let L=$.validation.filter((w)=>!w.each);for(let w of L){let D=k(Y,Q,J,w,X),_=w.rule.emit(J,D);Z+=` ${_}
157
- `}if(Z+=` var ${U.arr}${M} = [];
158
- `,Z+=` for (var ${B}=0; ${B}<${J}.length; ${B}++) {
159
- `,Z+=` var ${U.result}${M} = ${W}_execs[${j}]._deserialize(${J}[${B}], _opts);
160
- `,Z+=` if (_isErr(${U.result}${M})) {
161
- `,F)Z+=` var ${U.errors}${M} = ${U.result}${M}.data;
162
- `,Z+=` for (var ${U.nestedIdx}${M}=0; ${U.nestedIdx}${M}<${U.errors}${M}.length; ${U.nestedIdx}${M}++) {
163
- `,Z+=" "+u(U.errList,`${JSON.stringify(Q)}+'['+${B}+'].'+${U.errors}${M}[${U.nestedIdx}${M}].path`,`${U.errors}${M}[${U.nestedIdx}${M}]`,`__ne${M}`),Z+=` }
164
- `;else Z+=` var ${U.errors}${M} = ${U.result}${M}.data;
165
- `,Z+=" "+f(`${JSON.stringify(Q)}+'['+${B}+'].'+${U.errors}${M}[0].path`,`${U.errors}${M}[0]`,`__ne${M}`);Z+=` } else { ${U.arr}${M}.push(${U.result}${M}); }
166
- `,Z+=` }
167
- `,Z+=` ${U.out}[${JSON.stringify(Q)}] = ${U.arr}${M};
168
- `,Z+=`} else { ${Y.fail("isArray")}; }
169
- `}else{let B=X.isAsync?"await ":"";Z+=`if (${J} != null && typeof ${J} === 'object') {
170
- `,Z+=` var ${U.result}${M} = ${B}_execs[${j}]._deserialize(${J}, _opts);
171
- `,Z+=r(Q,`${U.result}${M}`,F),Z+=`} else { ${Y.fail("isObject")}; }
172
- `}}return Z}function r(Q,J,$){let X=S(Q);if($){let Y=`${U.errors}${X}[${U.nestedIdx}${X}]`;return` if (_isErr(${J})) {
173
- var ${U.errors}${X} = ${J}.data;
174
- for (var ${U.nestedIdx}${X}=0; ${U.nestedIdx}${X}<${U.errors}${X}.length; ${U.nestedIdx}${X}++) {
175
- `+u(U.errList,`${JSON.stringify(Q+".")}+${Y}.path`,Y,`__ne${X}`)+` }
176
- } else { ${U.out}[${JSON.stringify(Q)}] = ${J}; }
177
- `}else{let Y=`${U.errors}${X}[0]`;return` if (_isErr(${J})) {
178
- var ${U.errors}${X} = ${J}.data;
179
- `+f(`${JSON.stringify(Q+".")}+${Y}.path`,Y,`__ne${X}`)+` } else { ${U.out}[${JSON.stringify(Q)}] = ${J}; }
180
- `}}function GJ(Q,J){let{collectErrors:$,regexes:X,refs:Y,execs:F}=J;return{addRegex(q){return X.push(q),X.length-1},addRef(q){return Y.push(q),Y.length-1},addExecutor(q){return F.push(q),F.length-1},fail(q){if($)return`${U.errList}.push({path:${JSON.stringify(Q)},code:${JSON.stringify(q)}})`;else return`return _err([{path:${JSON.stringify(Q)},code:${JSON.stringify(q)}}])`},collectErrors:$}}function KJ(Q,J){let $=J.find((Y)=>Y.serializeOnly&&Y.name);if($)return $.name;let X=J.find((Y)=>!Y.deserializeOnly&&!Y.serializeOnly&&Y.name);if(X)return X.name;return Q}function XJ(Q){let J=Q.filter((X)=>!X.deserializeOnly);if(J.length===0)return;if(J.some((X)=>!X.groups||X.groups.length===0))return;let $=new Set;for(let X of J)for(let Y of X.groups)$.add(Y);return[...$]}function ZJ(Q,J,$,X){let Y=[],F=[],q=`'use strict';
181
- `;if(q+=`var __bk$out = {};
182
- `,Object.values(J).some((H)=>{let j=XJ(H.expose);return j&&j.length>0}))q+=`var __bk$groups = _opts && _opts.groups;
183
- `,q+=`var __bk$groupsSet = __bk$groups ? new Set(__bk$groups) : null;
184
- `;for(let[H,j]of Object.entries(J))q+=CJ(H,j,Y,F,X,$);return q+=`return __bk$out;
185
- `,q+=`//# sourceURL=baker://${Q.name}/serialize
186
- `,Function("_refs","_execs",`return ${X?"async function":"function"}(instance, _opts) { `+q+" }")(Y,F)}function CJ(Q,J,$,X,Y,F){if(J.exclude){if(!J.exclude.deserializeOnly){if(F?.debug){let B=J.exclude.serializeOnly?"serializeOnly":"bidirectional";return`// [baker] field "${Q}" excluded (${B} @Exclude)
187
- `}return""}}if(J.expose.length>0&&J.expose.every((B)=>B.deserializeOnly)){if(F?.debug)return`// [baker] field "${Q}" excluded (all @Expose entries are deserializeOnly)
188
- `;return""}let q=KJ(Q,J.expose),Z=XJ(J.expose),M="",P="",H="";if(Z&&Z.length>0)P=`if (__bk$groupsSet && ${JSON.stringify(Z)}.some(function(g){return __bk$groupsSet.has(g);})) {
189
- `,H=`}
190
- `;let j="",z=J.flags.isOptional;if(J.type?.collection&&!J.transform.filter((B)=>!B.options?.deserializeOnly).length){let B=`__bk$out[${JSON.stringify(q)}]`,W=J.type.collection,L;if(W==="Set")if(J.type.resolvedCollectionValue){let w=J.type.resolvedCollectionValue[O],D=X.length;if(X.push(w),Y)L=`${B} = await Promise.all(Array.from(instance[${JSON.stringify(Q)}]).map(async function(__ser_item) { return __ser_item == null ? __ser_item : await _execs[${D}]._serialize(__ser_item, _opts); }));`;else L=`${B} = Array.from(instance[${JSON.stringify(Q)}]).map(function(__ser_item) { return __ser_item == null ? __ser_item : _execs[${D}]._serialize(__ser_item, _opts); });`}else L=`${B} = Array.from(instance[${JSON.stringify(Q)}]);`;else if(J.type.resolvedCollectionValue){let w=J.type.resolvedCollectionValue[O],D=X.length;X.push(w);let _=Y?"await ":"";L=`var __bk$m = {};
191
- `,L+=` for (var __bk$me of instance[${JSON.stringify(Q)}]) {
192
- `,L+=` __bk$m[__bk$me[0]] = __bk$me[1] == null ? __bk$me[1] : ${_}_execs[${D}]._serialize(__bk$me[1], _opts);
152
+ `}return j}function cJ(X,J,U,Z,Y){let{collectErrors:W,execs:F}=Z;if(!U.type)return`${$.out}[${JSON.stringify(X)}] = ${J};
153
+ `;let Q="",q=I(X);if(U.type.discriminator){let B=JSON.stringify(U.type.discriminator.property);Q+=`var ${$.disc}${q} = ${J} && ${J}[${B}];
154
+ `,Q+=`switch (${$.disc}${q}) {
155
+ `;for(let M of U.type.discriminator.subTypes){let j=M.value[h],P=F.length;F.push(j);let z=Z.isAsync?"await ":"";Q+=` case ${JSON.stringify(M.name)}:
156
+ `,Q+=` var ${$.result}${q} = ${z}_execs[${P}]._deserialize(${J}, _opts);
157
+ `,Q+=UJ(X,`${$.result}${q}`,W),Q+=` break;
158
+ `}if(Q+=` default: ${Y.fail("invalidDiscriminator")};
159
+ `,Q+=`}
160
+ `,U.type.keepDiscriminatorProperty)Q+=`if (${$.out}[${JSON.stringify(X)}] != null) ${$.out}[${JSON.stringify(X)}][${B}] = ${$.disc}${q};
161
+ `}else{let M=(U.type.resolvedClass??U.type.fn())[h],j=F.length;if(F.push(M),U.type?.isArray||U.flags.validateNestedEach||U.validation.some((z)=>z.each)){let z=`${$.index}${q}`,H=Z.isAsync?"await ":"";Q+=`if (Array.isArray(${J})) {
162
+ `;let R=U.validation.filter((_)=>!_.each);if(Q+=E(X,J,R,Y,Z," "),Q+=` var ${$.arr}${q} = [];
163
+ `,Q+=` for (var ${z}=0; ${z}<${J}.length; ${z}++) {
164
+ `,Q+=` var ${$.result}${q} = ${H}_execs[${j}]._deserialize(${J}[${z}], _opts);
165
+ `,Q+=` if (_isErr(${$.result}${q})) {
166
+ `,W)Q+=` var ${$.errors}${q} = ${$.result}${q}.data;
167
+ `,Q+=` var __bk$pp${q} = ${JSON.stringify(X)}+'['+${z}+'].';
168
+ `,Q+=` for (var ${$.nestedIdx}${q}=0; ${$.nestedIdx}${q}<${$.errors}${q}.length; ${$.nestedIdx}${q}++) {
169
+ `,Q+=" "+C($.errList,`__bk$pp${q}+${$.errors}${q}[${$.nestedIdx}${q}].path`,`${$.errors}${q}[${$.nestedIdx}${q}]`,`__ne${q}`),Q+=` }
170
+ `;else Q+=` var ${$.errors}${q} = ${$.result}${q}.data;
171
+ `,Q+=` var __bk$pp${q} = ${JSON.stringify(X)}+'['+${z}+'].';
172
+ `,Q+=" "+N(`__bk$pp${q}+${$.errors}${q}[0].path`,`${$.errors}${q}[0]`,`__ne${q}`);Q+=` } else { ${$.arr}${q}.push(${$.result}${q}); }
173
+ `,Q+=` }
174
+ `,Q+=` ${$.out}[${JSON.stringify(X)}] = ${$.arr}${q};
175
+ `,Q+=`} else { ${Y.fail("isArray")}; }
176
+ `}else{let z=Z.isAsync?"await ":"";Q+=`if (${J} != null && typeof ${J} === 'object') {
177
+ `,Q+=` var ${$.result}${q} = ${z}_execs[${j}]._deserialize(${J}, _opts);
178
+ `,Q+=UJ(X,`${$.result}${q}`,W),Q+=`} else { ${Y.fail("isObject")}; }
179
+ `}}return Q}function UJ(X,J,U){let Z=I(X);if(U){let Y=`${$.errors}${Z}[${$.nestedIdx}${Z}]`;return` if (_isErr(${J})) {
180
+ var ${$.errors}${Z} = ${J}.data;
181
+ var __bk$pp${Z} = ${JSON.stringify(X+".")};
182
+ for (var ${$.nestedIdx}${Z}=0; ${$.nestedIdx}${Z}<${$.errors}${Z}.length; ${$.nestedIdx}${Z}++) {
183
+ `+C($.errList,`__bk$pp${Z}+${Y}.path`,Y,`__ne${Z}`)+` }
184
+ } else { ${$.out}[${JSON.stringify(X)}] = ${J}; }
185
+ `}else{let Y=`${$.errors}${Z}[0]`;return` if (_isErr(${J})) {
186
+ var ${$.errors}${Z} = ${J}.data;
187
+ var __bk$pp${Z} = ${JSON.stringify(X+".")};
188
+ `+N(`__bk$pp${Z}+${Y}.path`,Y,`__ne${Z}`)+` } else { ${$.out}[${JSON.stringify(X)}] = ${J}; }
189
+ `}}function s(X,J,U){if(U.has(J))return!1;return!0}function x(X,J,U,Z,Y,W){let F=W.inlineNestedClasses;F.add(J);let Q={...W,pathPrefix:Z,varPrefix:Y,inputExpr:U,exposeDefaultValues:!1},q="";for(let[B,M]of Object.entries(X))q+=WJ(B,M,Q);return F.delete(J),q}function oJ(X,J,U,Z,Y){let{collectErrors:W,execs:F}=Z;if(!U.type)return"";let Q=(Z.varPrefix||"")+I(X),q="";if(!Z.inlineNestedClasses)Z.inlineNestedClasses=new Set;if(U.type.discriminator){let B=JSON.stringify(U.type.discriminator.property);q+=`var ${$.disc}${Q} = ${J} && ${J}[${B}];
190
+ `,q+=`switch (${$.disc}${Q}) {
191
+ `;for(let M of U.type.discriminator.subTypes){let j=M.value[h],P=j._merged,z=P&&s(P,M.value,Z.inlineNestedClasses);if(q+=` case ${JSON.stringify(M.name)}:
192
+ `,z){let H=Z.pathPrefix?`${Z.pathPrefix}+${JSON.stringify(X+".")}`:JSON.stringify(X+"."),R=`${Q}_d${I(M.name)}_`;q+=x(P,M.value,J,H,R,Z)}else{let H=F.length;F.push(j);let R=Z.isAsync?"await ":"";q+=` var ${$.result}${Q} = ${R}_execs[${H}]._validate(${J}, _opts);
193
+ `,q+=YJ(X,`${$.result}${Q}`,W)}q+=` break;
194
+ `}q+=` default: ${Y.fail("invalidDiscriminator")};
195
+ `,q+=`}
196
+ `}else{let B=U.type.resolvedClass??U.type.fn(),M=B[h],j=M._merged,P=U.type?.isArray||U.flags.validateNestedEach||U.validation.some((H)=>H.each),z=j&&s(j,B,Z.inlineNestedClasses);if(P){let H=`${$.index}${Q}`;q+=`if (Array.isArray(${J})) {
197
+ `;let R=U.validation.filter((_)=>!_.each);if(q+=E(X,J,R,Y,Z," "),q+=` for (var ${H}=0; ${H}<${J}.length; ${H}++) {
198
+ `,z){let _=`__il$${Q}_item`,D=Z.pathPrefix?`${Z.pathPrefix}+${JSON.stringify(X)}+'['+${H}+'].'`:`${JSON.stringify(X)}+'['+${H}+'].'`,L=`${Q}${H}_`;q+=` var ${_} = ${J}[${H}];
199
+ `;let A=Z.pathPrefix?`${Z.pathPrefix}+${JSON.stringify(X)}+'['+${H}+'].'`:`${JSON.stringify(X)}+'['+${H}+'].'`;if(q+=` if (${_} == null || typeof ${_} !== 'object' || Array.isArray(${_})) `,W)q+=`${$.errList}.push({path:${A},code:'invalidInput'});
200
+ `;else q+=`return [{path:${A},code:'invalidInput'}];
201
+ `;q+=` else {
202
+ `,q+=x(j,B,_,D,L,Z),q+=` }
203
+ `}else{let _=F.length;F.push(M);let D=Z.isAsync?"await ":"";q+=` var ${$.result}${Q} = ${D}_execs[${_}]._validate(${J}[${H}], _opts);
204
+ `,q+=` if (${$.result}${Q} !== null) {
205
+ `;let L=`__bk$pp${Q}`;if(q+=` var ${L} = ${JSON.stringify(X)}+'['+${H}+'].';
206
+ `,W)q+=` for (var ${$.nestedIdx}${Q}=0; ${$.nestedIdx}${Q}<${$.result}${Q}.length; ${$.nestedIdx}${Q}++) {
207
+ `,q+=" "+C($.errList,`${L}+${$.result}${Q}[${$.nestedIdx}${Q}].path`,`${$.result}${Q}[${$.nestedIdx}${Q}]`,`__ne${Q}`),q+=` }
208
+ `;else q+=" "+N(`${L}+${$.result}${Q}[0].path`,`${$.result}${Q}[0]`,`__ne${Q}`,!0);q+=` }
209
+ `}q+=` }
210
+ `,q+=`} else { ${Y.fail("isArray")}; }
211
+ `}else{if(q+=`if (${J} != null && typeof ${J} === 'object') {
212
+ `,z){let H=Z.pathPrefix?`${Z.pathPrefix}+${JSON.stringify(X+".")}`:JSON.stringify(X+"."),R=`${Q}_`;q+=x(j,B,J,H,R,Z)}else{let H=F.length;F.push(M);let R=Z.isAsync?"await ":"";q+=` var ${$.result}${Q} = ${R}_execs[${H}]._validate(${J}, _opts);
213
+ `,q+=YJ(X,`${$.result}${Q}`,W)}q+=`} else { ${Y.fail("isObject")}; }
214
+ `}}return q}function YJ(X,J,U){let Z=I(X),Y=`__bk$pp${Z}`;if(U){let W=`${J}[${$.nestedIdx}${Z}]`;return` if (${J} !== null) {
215
+ var ${Y} = ${JSON.stringify(X+".")};
216
+ for (var ${$.nestedIdx}${Z}=0; ${$.nestedIdx}${Z}<${J}.length; ${$.nestedIdx}${Z}++) {
217
+ `+C($.errList,`${Y}+${W}.path`,W,`__ne${Z}`)+` }
218
+ }
219
+ `}else{let W=`${J}[0]`;return` if (${J} !== null) {
220
+ var ${Y} = ${JSON.stringify(X+".")};
221
+ `+N(`${Y}+${W}.path`,W,`__ne${Z}`,!0)+` }
222
+ `}}function iJ(X,J,U,Z,Y){let{collectErrors:W,execs:F}=Z,Q=(Z.varPrefix||"")+I(X),q=U.type.collection,B=Z.isAsync?"await ":"";if(!Z.inlineNestedClasses)Z.inlineNestedClasses=new Set;let M,j,P;if(U.type.resolvedCollectionValue)M=U.type.resolvedCollectionValue,j=M[h],P=j._merged;let z=M&&P&&s(P,M,Z.inlineNestedClasses),H="";if(q==="Set"){H+=`if (Array.isArray(${J})) {
223
+ `;let R=U.validation.filter((D)=>!D.each);if(H+=E(X,J,R,Y,Z," "),j){let D=`${$.index}${Q}`;if(H+=` for (var ${D}=0; ${D}<${J}.length; ${D}++) {
224
+ `,z){let L=`__il$${Q}_ci`,A=Z.pathPrefix?`${Z.pathPrefix}+${JSON.stringify(X)}+'['+${D}+'].'`:`${JSON.stringify(X)}+'['+${D}+'].'`,T=`${Q}c${D}_`,S=Z.pathPrefix?`${Z.pathPrefix}+${JSON.stringify(X)}+'['+${D}+'].'`:`${JSON.stringify(X)}+'['+${D}+'].'`;if(H+=` var ${L} = ${J}[${D}];
225
+ `,H+=` if (${L} == null || typeof ${L} !== 'object' || Array.isArray(${L})) `,W)H+=`${$.errList}.push({path:${S},code:'invalidInput'});
226
+ `;else H+=`return [{path:${S},code:'invalidInput'}];
227
+ `;H+=` else {
228
+ `,H+=x(P,M,L,A,T,Z),H+=` }
229
+ `}else{let L=F.length;F.push(j),H+=` var ${$.result}${Q} = ${B}_execs[${L}]._validate(${J}[${D}], _opts);
230
+ `,H+=` if (${$.result}${Q} !== null) {
231
+ `;let A=`__bk$pp${Q}`;if(H+=` var ${A} = ${JSON.stringify(X)}+'['+${D}+'].';
232
+ `,W)H+=` for (var ${$.nestedIdx}${Q}=0; ${$.nestedIdx}${Q}<${$.result}${Q}.length; ${$.nestedIdx}${Q}++) {
233
+ `,H+=" "+C($.errList,`${A}+${$.result}${Q}[${$.nestedIdx}${Q}].path`,`${$.result}${Q}[${$.nestedIdx}${Q}]`,`__ne${Q}`),H+=` }
234
+ `;else H+=" "+N(`${A}+${$.result}${Q}[0].path`,`${$.result}${Q}[0]`,`__ne${Q}`,!0);H+=` }
235
+ `}H+=` }
236
+ `}let _=U.validation.filter((D)=>D.each);if(_.length>0){let D=`${$.index}${Q}_e`;H+=` for (var ${D}=0; ${D}<${J}.length; ${D}++) {
237
+ `;for(let L of _){let A=`__bk$ep_${Q}`,T=r(L,X,J,Z),b={...Y,fail:(u)=>W?`${$.errList}.push({path:${A}+${D}+']',code:${JSON.stringify(u)}${T}})`:`return [{path:${A}+${D}+']',code:${JSON.stringify(u)}${T}}]`};if(!H.includes(`var ${A}`))H+=` var ${A} = ${JSON.stringify(X)}+'[';
238
+ `;H+=` ${L.rule.emit(`${J}[${D}]`,b)}
239
+ `}H+=` }
240
+ `}H+=`} else { ${Y.fail("isArray")}; }
241
+ `}else{if(H+=`if (${J} != null && typeof ${J} === 'object' && !Array.isArray(${J})) {
242
+ `,j){let R=`${$.key}${Q}`;if(H+=` for (var ${R} in ${J}) {
243
+ `,H+=` if (!Object.prototype.hasOwnProperty.call(${J}, ${R})) continue;
244
+ `,z){let _=`__il$${Q}_mi`,D=Z.pathPrefix?`${Z.pathPrefix}+${JSON.stringify(X)}+'['+${R}+'].'`:`${JSON.stringify(X)}+'['+${R}+'].'`,L=`${Q}m${R}_`,A=D;if(H+=` var ${_} = ${J}[${R}];
245
+ `,H+=` if (${_} == null || typeof ${_} !== 'object' || Array.isArray(${_})) `,W)H+=`${$.errList}.push({path:${A},code:'invalidInput'});
246
+ `;else H+=`return [{path:${A},code:'invalidInput'}];
247
+ `;H+=` else {
248
+ `,H+=x(P,M,_,D,L,Z),H+=` }
249
+ `}else{let _=F.length;F.push(j),H+=` var ${$.result}${Q} = ${B}_execs[${_}]._validate(${J}[${R}], _opts);
250
+ `,H+=` if (${$.result}${Q} !== null) {
251
+ `;let D=`__bk$pp${Q}`;if(H+=` var ${D} = ${JSON.stringify(X)}+'['+${R}+'].';
252
+ `,W)H+=` for (var ${$.nestedIdx}${Q}=0; ${$.nestedIdx}${Q}<${$.result}${Q}.length; ${$.nestedIdx}${Q}++) {
253
+ `,H+=" "+C($.errList,`${D}+${$.result}${Q}[${$.nestedIdx}${Q}].path`,`${$.result}${Q}[${$.nestedIdx}${Q}]`,`__ne${Q}`),H+=` }
254
+ `;else H+=" "+N(`${D}+${$.result}${Q}[0].path`,`${$.result}${Q}[0]`,`__ne${Q}`,!0);H+=` }
255
+ `}H+=` }
256
+ `}H+=`} else { ${Y.fail("isObject")}; }
257
+ `}return H}function lJ(X,J){let{collectErrors:U,regexes:Z,refs:Y,execs:W,validateOnly:F,pathPrefix:Q}=J,q=Q?`${Q}+${JSON.stringify(X)}`:JSON.stringify(X);return{addRegex(B){return Z.push(B),Z.length-1},addRef(B){return Y.push(B),Y.length-1},addExecutor(B){return W.push(B),W.length-1},fail(B){if(U)return`${$.errList}.push({path:${q},code:${JSON.stringify(B)}})`;else if(F)return`return [{path:${q},code:${JSON.stringify(B)}}]`;else return`return _err([{path:${q},code:${JSON.stringify(B)}}])`},collectErrors:U,_pathExpr:q}}var w={out:"__bk$out",fieldVal:"__bk$fv_",groups:"__bk$groups",group0:"__bk$group0",groupsSet:"__bk$groupsSet",setArr:"__bk$sa",setItem:"__bk$si",mapObj:"__bk$m",mapEntry:"__bk$me",serResult:"__bk$sr",outItem:"__bk$out_item",discArr:"__bk$da",discIdx:"__bk$di",nestedArr:"__bk$na",nestedIdx:"__bk$ni",nestedItem:"__bk$nitem"};function dJ(X,J){let U=J.find((Y)=>Y.serializeOnly&&Y.name);if(U)return U.name;let Z=J.find((Y)=>!Y.deserializeOnly&&!Y.serializeOnly&&Y.name);if(Z)return Z.name;return X}function LJ(X){let J=X.filter((Z)=>!Z.deserializeOnly);if(J.length===0)return;if(J.some((Z)=>!Z.groups||Z.groups.length===0))return;let U=new Set;for(let Z of J)for(let Y of Z.groups)U.add(Y);return[...U]}function PJ(X,J,U,Z){if(U.length===0)return null;if(U.length===1){let F=U[0],Q=Z.length;Z.push(F.fn);let q=`_refs[${Q}]({value:${X},key:${JSON.stringify(J)},obj:instance})`;return F.isAsync?`(await ${q})`:q}if(U.length===2){let F=U[1],Q=U[0],q=Z.length;Z.push(F.fn);let B=Z.length;Z.push(Q.fn);let M=`_refs[${q}]({value:${X},key:${JSON.stringify(J)},obj:instance})`,j=F.isAsync?`(await ${M})`:M,P=`_refs[${B}]({value:${j},key:${JSON.stringify(J)},obj:instance})`;return Q.isAsync?`(await ${P})`:P}let Y=[...U].reverse(),W=X;for(let F of Y){let Q=Z.length;Z.push(F.fn);let q=`_refs[${Q}]({value:${W},key:${JSON.stringify(J)},obj:instance})`;W=F.isAsync?`(await ${q})`:q}return W}function MJ(X,J,U,Z){let Y=PJ(X,J,U,Z);return Y?`
258
+ ${X} = ${Y};`:""}function zJ(X,J,U,Z){let Y=[],W=[],F=`'use strict';
259
+ `;if(F+=`var ${w.out} = {};
260
+ `,Object.values(J).some((M)=>{let j=LJ(M.expose);return j&&j.length>0}))F+=`var ${w.groups} = _opts && _opts.groups;
261
+ `,F+=`var ${w.group0} = ${w.groups} && ${w.groups}.length === 1 ? ${w.groups}[0] : null;
262
+ `,F+=`var ${w.groupsSet} = ${w.groups} && ${w.groups}.length > 1 ? new Set(${w.groups}) : null;
263
+ `;for(let[M,j]of Object.entries(J))F+=sJ(M,j,Y,W,Z,U);return F+=`return ${w.out};
264
+ `,F+=`//# sourceURL=baker://${X.name}/serialize
265
+ `,Function("_refs","_execs",`return ${Z?"async function":"function"}(instance, _opts) { `+F+" }")(Y,W)}function sJ(X,J,U,Z,Y,W){if(J.exclude){if(!J.exclude.deserializeOnly){if(W?.debug){let _=J.exclude.serializeOnly?"serializeOnly":"bidirectional";return`// [baker] field "${X}" excluded (${_} @Exclude)
266
+ `}return""}}if(J.expose.length>0&&J.expose.every((_)=>_.deserializeOnly)){if(W?.debug)return`// [baker] field "${X}" excluded (all @Expose entries are deserializeOnly)
267
+ `;return""}let F=dJ(X,J.expose),Q=LJ(J.expose),q=I(X),B=`${w.fieldVal}${q}`,M="";M+=`var ${B} = instance[${JSON.stringify(X)}];
268
+ `;let j="",P="";if(Q&&Q.length>0)j=`if ((${w.group0} !== null || ${w.groupsSet}) && (${y(w.group0,w.groupsSet,Q)})) {
269
+ `,P=`}
270
+ `;let z="",H=J.flags.isOptional,R=J.transform.filter((_)=>!_.options?.deserializeOnly);if(J.type?.collection){let _=`${w.out}[${JSON.stringify(F)}]`,D=J.type.collection,L;if(D==="Set")if(J.type.resolvedCollectionValue){let A=J.type.resolvedCollectionValue[h],T=Z.length;if(Z.push(A),Y)L=`${_} = await Promise.all(Array.from(${B}).map(async function(__ser_item) { return __ser_item == null ? __ser_item : await _execs[${T}]._serialize(__ser_item, _opts); }));`;else L=`var ${w.setArr} = [];
271
+ `,L+=` for (var ${w.setItem} of ${B}) {
272
+ `,L+=` ${w.setArr}.push(${w.setItem} == null ? ${w.setItem} : _execs[${T}]._serialize(${w.setItem}, _opts));
273
+ `,L+=` }
274
+ `,L+=` ${_} = ${w.setArr};`}else L=`${_} = Array.from(${B});`;else if(J.type.resolvedCollectionValue){let A=J.type.resolvedCollectionValue[h],T=Z.length;Z.push(A);let S=Y?"await ":"";L=`var ${w.mapObj} = {};
275
+ `,L+=` for (var ${w.mapEntry} of ${B}) {
276
+ `,L+=` ${w.mapObj}[${w.mapEntry}[0]] = ${w.mapEntry}[1] == null ? ${w.mapEntry}[1] : ${S}_execs[${T}]._serialize(${w.mapEntry}[1], _opts);
193
277
  `,L+=` }
194
- `,L+=` ${B} = __bk$m;`}else L=`${B} = Object.fromEntries(instance[${JSON.stringify(Q)}]);`;if(z)j=`if (instance[${JSON.stringify(Q)}] !== undefined && instance[${JSON.stringify(Q)}] !== null) {
278
+ `,L+=` ${_} = ${w.mapObj};`}else L=`${_} = Object.fromEntries(${B});`;if(L+=MJ(_,X,R,U),H)z=`if (${B} !== undefined && ${B} !== null) {
195
279
  ${L}
196
- } else if (instance[${JSON.stringify(Q)}] === null) {
197
- ${B} = null;
280
+ } else if (${B} === null) {
281
+ ${_} = null;
198
282
  }
199
- `;else j=`if (instance[${JSON.stringify(Q)}] != null) {
283
+ `;else z=`if (${B} != null) {
200
284
  ${L}
201
285
  } else {
202
- ${B} = instance[${JSON.stringify(Q)}];
286
+ ${_} = ${B};
203
287
  }
204
- `;return M+=P+j+H,M}if((J.type?.resolvedClass||J.type?.discriminator||J.type?.fn&&J.flags.validateNested)&&!J.transform.filter((B)=>!B.options?.deserializeOnly).length){let B=J.type?.isArray||J.flags.validateNestedEach||J.validation.some((w)=>w.each),W=`__bk$out[${JSON.stringify(q)}]`,L;if(J.type.discriminator){let{property:w,subTypes:D}=J.type.discriminator,_=J.type.keepDiscriminatorProperty!==!1,T=[...D].sort((I,b)=>{if(I.value.prototype instanceof b.value)return-1;if(b.value.prototype instanceof I.value)return 1;return 0}),R=(I,b)=>{let V="";for(let K=0;K<T.length;K++){let n=T[K],MJ=n.value[O],HJ=X.length;X.push(MJ);let PJ=$.length;if($.push(n.value),V+=`${K===0?"if":"} else if"} (${I} instanceof _refs[${PJ}]) {
205
- `,V+=` var __bk$sr = ${b}_execs[${HJ}]._serialize(${I}, _opts);
206
- `,_)V+=` __bk$sr[${JSON.stringify(w)}] = ${JSON.stringify(n.name)};
207
- `;V+=` __bk$out_item = __bk$sr;
208
- `}return V+="} else { __bk$out_item = "+I+`; }
209
- `,V};if(B){let I=Y?"await ":"";if(Y)L=`${W} = await Promise.all(instance[${JSON.stringify(Q)}].map(async function(__ser_item) {
210
- `;else L=`${W} = instance[${JSON.stringify(Q)}].map(function(__ser_item) {
211
- `;L+=` var __bk$out_item;
212
- `,L+=R("__ser_item",I),L+=` return __bk$out_item;
213
- `,L+=Y?"}));":"});"}else{let I=Y?"await ":"",b=JSON.stringify(Q);L=`var __bk$out_item;
214
- `,L+=R(`instance[${b}]`,I),L+=`${W} = __bk$out_item;`}}else{let D=(J.type.resolvedClass??J.type.fn())[O],_=X.length;if(X.push(D),B)if(Y)L=`${W} = await Promise.all(instance[${JSON.stringify(Q)}].map(async function(__ser_item) { return __ser_item == null ? __ser_item : await _execs[${_}]._serialize(__ser_item, _opts); }));`;else L=`${W} = instance[${JSON.stringify(Q)}].map(function(__ser_item) { return __ser_item == null ? __ser_item : _execs[${_}]._serialize(__ser_item, _opts); });`;else L=`${W} = ${Y?"await ":""}_execs[${_}]._serialize(instance[${JSON.stringify(Q)}], _opts);`}if(z)j=`if (instance[${JSON.stringify(Q)}] !== undefined && instance[${JSON.stringify(Q)}] !== null) {
288
+ `;return M+=j+z+P,M}if(J.type?.resolvedClass||J.type?.discriminator||J.type?.fn&&J.flags.validateNested){let _=J.type?.isArray||J.flags.validateNestedEach||J.validation.some((A)=>A.each),D=`${w.out}[${JSON.stringify(F)}]`,L;if(J.type.discriminator){let{property:A,subTypes:T}=J.type.discriminator,S=J.type.keepDiscriminatorProperty!==!1,b=[...T].sort((G,V)=>{if(G.value.prototype instanceof V.value)return-1;if(V.value.prototype instanceof G.value)return 1;return 0}),u=(G,V)=>{let k="";for(let m=0;m<b.length;m++){let l=b[m],SJ=l.value[h],OJ=Z.length;Z.push(SJ);let hJ=U.length;if(U.push(l.value),k+=`${m===0?"if":"} else if"} (${G} instanceof _refs[${hJ}]) {
289
+ `,k+=` var ${w.serResult} = ${V}_execs[${OJ}]._serialize(${G}, _opts);
290
+ `,S)k+=` ${w.serResult}[${JSON.stringify(A)}] = ${JSON.stringify(l.name)};
291
+ `;k+=` ${w.outItem} = ${w.serResult};
292
+ `}return k+=`} else { ${w.outItem} = `+G+`; }
293
+ `,k};if(_){let G=Y?"await ":"";if(Y)L=`${D} = await Promise.all(${B}.map(async function(__ser_item) {
294
+ `;else L=`var ${w.discArr} = [];
295
+ `,L+=` for (var ${w.discIdx}=0; ${w.discIdx}<${B}.length; ${w.discIdx}++) {
296
+ `,L+=` var __ser_item = ${B}[${w.discIdx}];
297
+ `;if(L+=` var ${w.outItem};
298
+ `,L+=u("__ser_item",G),Y)L+=` return ${w.outItem};
299
+ `,L+="}));";else L+=` ${w.discArr}.push(${w.outItem});
300
+ `,L+=` }
301
+ `,L+=` ${D} = ${w.discArr};`}else{let G=Y?"await ":"";L=`var ${w.outItem};
302
+ `,L+=u(B,G),L+=`${D} = ${w.outItem};`}}else{let T=(J.type.resolvedClass??J.type.fn())[h],S=Z.length;if(Z.push(T),_)if(Y)L=`${D} = await Promise.all(${B}.map(async function(__ser_item) { return __ser_item == null ? __ser_item : await _execs[${S}]._serialize(__ser_item, _opts); }));`;else L=`var ${w.nestedArr} = [];
303
+ `,L+=` for (var ${w.nestedIdx}=0; ${w.nestedIdx}<${B}.length; ${w.nestedIdx}++) {
304
+ `,L+=` var ${w.nestedItem} = ${B}[${w.nestedIdx}];
305
+ `,L+=` ${w.nestedArr}.push(${w.nestedItem} == null ? ${w.nestedItem} : _execs[${S}]._serialize(${w.nestedItem}, _opts));
306
+ `,L+=` }
307
+ `,L+=` ${D} = ${w.nestedArr};`;else L=`${D} = ${Y?"await ":""}_execs[${S}]._serialize(${B}, _opts);`}if(L+=MJ(D,X,R,U),H)z=`if (${B} !== undefined && ${B} !== null) {
215
308
  ${L}
216
- } else if (instance[${JSON.stringify(Q)}] === null) {
217
- ${W} = null;
309
+ } else if (${B} === null) {
310
+ ${D} = null;
218
311
  }
219
- `;else j=`if (instance[${JSON.stringify(Q)}] != null) {
312
+ `;else z=`if (${B} != null) {
220
313
  ${L}
221
314
  } else {
222
- ${W} = instance[${JSON.stringify(Q)}];
315
+ ${D} = ${B};
223
316
  }
224
- `}else{let B=vJ(Q,q,J,$,Y);if(z)j+=`if (instance[${JSON.stringify(Q)}] !== undefined) {
225
- `,j+=" "+B+`
226
- `,j+=`}
227
- `;else j+=B+`
228
- `}return M+=P+j+H,M}function vJ(Q,J,$,X,Y){let F=`__bk$out[${JSON.stringify(J)}]`,q=$.transform.filter((Z)=>!Z.options?.deserializeOnly);if(q.length>0){let Z=`instance[${JSON.stringify(Q)}]`;for(let M of q){let P=X.length;X.push(M.fn);let H=`_refs[${P}]({value:${Z},key:${JSON.stringify(Q)},obj:instance,type:'serialize'})`;Z=Y&&g(M.fn)?`(await ${H})`:H}return`${F} = ${Z};`}return`${F} = instance[${JSON.stringify(Q)}];`}function $J(Q){let J=new Set;function $(X){if(J.has(X))return!0;J.add(X);let Y=X[A];if(Y)for(let F of Object.values(Y)){if(F.type?.fn){let q;try{q=F.type.fn()}catch(M){throw new h(`${X.name}: type function threw: ${M.message}`)}let Z=Array.isArray(q)?q[0]:q;if($(Z))return!0}if(F.type?.discriminator){for(let q of F.type.discriminator.subTypes)if($(q.value))return!0}}return J.delete(X),!1}return $(Q)}function qJ(Q,J){let $=J?`${J}.`:"";for(let[X,Y]of Object.entries(Q)){for(let Z of Y.expose)if(Z.deserializeOnly&&Z.serializeOnly)throw new h(`Invalid @Expose on field '${$}${X}': cannot have both deserializeOnly:true and serializeOnly:true on the same @Expose entry. Use separate @Expose decorators for each direction.`);let F=Y.expose.filter((Z)=>!Z.serializeOnly),q=Y.expose.filter((Z)=>!Z.deserializeOnly);UJ($+X,F,"deserialize"),UJ($+X,q,"serialize")}}function UJ(Q,J,$){for(let X=0;X<J.length;X++)for(let Y=X+1;Y<J.length;Y++){let F=J[X].groups??[],q=J[Y].groups??[];if(xJ(F,q)){let Z=new Set(q),M=F.length===0?[]:F.filter((P)=>Z.has(P));throw new h(`@Expose conflict on '${Q}': 2 @Expose stacks with '${$}' direction and overlapping groups [${M.join(", ")}]. Each direction must have at most one @Expose per group set.`)}}}function xJ(Q,J){if(Q.length===0&&J.length===0)return!0;if(Q.length===0||J.length===0)return!1;return Q.some(($)=>J.includes($))}var uJ=new Set(["__proto__","constructor","prototype"]),YJ=new Set([Number,String,Boolean,Date]);function fJ(Q){let J=`Circular dependency during seal: ${Q} is still being sealed`;return{_deserialize(){throw new h(J)},_serialize(){throw new h(J)},_isAsync:!1,_isSerializeAsync:!1}}function E(Q,J,$){let X=$??new Set;for(let Y of Object.values(Q)){if(J==="deserialize"&&Y.validation.some((q)=>q.rule.isAsync))return!0;if((J==="deserialize"?Y.transform.filter((q)=>!q.options?.serializeOnly):Y.transform.filter((q)=>!q.options?.deserializeOnly)).some((q)=>g(q.fn)))return!0;if(Y.type?.resolvedClass){let q=Y.type.resolvedClass;if(!X.has(q)){X.add(q);let Z=o(q);if(E(Z,J,X))return!0}}if(Y.type?.discriminator){for(let q of Y.type.discriminator.subTypes)if(!X.has(q.value)){X.add(q.value);let Z=o(q.value);if(E(Z,J,X))return!0}}}return!1}var c=!1;function d(){return c}var p=new Set;function pJ(){if(c)return;let Q=m();try{for(let J of G)x(J,Q)}catch(J){for(let $ of G)if(Object.hasOwn($,O))delete $[O];throw J}for(let J of G)p.add(J),Object.freeze(J[A]);G.clear(),c=!0}function EJ(Q){if(Object.hasOwn(Q,O))return;if(!Object.hasOwn(Q,A))return;let J=new Set(p),$=m();x(Q,$),p.add(Q),Object.freeze(Q[A]),G.delete(Q);let X=[...G].filter((Y)=>Object.hasOwn(Y,O)&&!J.has(Y));for(let Y of X)p.add(Y),Object.freeze(Y[A]),G.delete(Y)}function N(Q){let J=Q[O];if(!J)pJ(),J=Q[O];if(!J)EJ(Q),J=Q[O];if(!J)throw new h(`${Q.name} has no @Field decorators`);return J}function x(Q,J){if(Object.hasOwn(Q,O))return;let $=fJ(Q.name);Q[O]=$;let X=o(Q);for(let P of Object.keys(X))if(uJ.has(P))throw new h(`${Q.name}: field name '${P}' is not allowed (reserved property name)`);for(let[P,H]of Object.entries(X)){if(!H.type?.fn)continue;let j=H.type.fn();if(j===Map||j===Set){let L=j===Map?"Map":"Set",w={...H.type,collection:L,isArray:!1};if(H.type.collectionValue){let D=H.type.collectionValue();if(D!=null&&typeof D==="function"&&!YJ.has(D))w.resolvedCollectionValue=D}X[P]={...H,type:w};continue}let z=Array.isArray(j),B=z?j[0]:j;if(B==null||typeof B!=="function")throw new h(`${Q.name}: @Type/@Field type must return a constructor or [constructor], got ${String(B)}`);let W={...H.type,isArray:z};if(!YJ.has(B)){if(W.resolvedClass=B,!H.flags.validateNested||!H.flags.validateNestedEach){if(H.flags={...H.flags},!H.flags.validateNested)H.flags.validateNested=!0;if(z&&!H.flags.validateNestedEach)H.flags.validateNestedEach=!0}}X[P]={...H,type:W}}qJ(X,Q.name);let Y=$J(Q);for(let P of Object.values(X)){if(P.type?.resolvedClass)x(P.type.resolvedClass,J);if(P.type?.resolvedCollectionValue)x(P.type.resolvedCollectionValue,J);if(P.type?.discriminator)for(let H of P.type.discriminator.subTypes)x(H.value,J)}let F=E(X,"deserialize"),q=E(X,"serialize"),Z=JJ(Q,X,J,Y,F),M=ZJ(Q,X,J,q);Object.assign($,{_deserialize:Z,_serialize:M,_isAsync:F,_isSerializeAsync:q,_merged:X})}function o(Q){let J=[],$=Q;while($&&$!==Object){if(Object.hasOwn($,A))J.push($);let Y=Object.getPrototypeOf($);$=Y===$?null:Y}let X=Object.create(null);for(let Y of J){let F=Y[A];for(let[q,Z]of Object.entries(F))if(!X[q])X[q]={validation:[...Z.validation],transform:[...Z.transform],expose:[...Z.expose],exclude:Z.exclude,type:Z.type,flags:{...Z.flags}};else{let M=X[q],P=Z;for(let z of P.validation)if(!M.validation.some((B)=>B.rule===z.rule))M.validation.push(z);if(M.transform.length===0&&P.transform.length>0)M.transform=[...P.transform];if(M.expose.length===0&&P.expose.length>0)M.expose=[...P.expose];if(M.exclude===null&&P.exclude!==null)M.exclude=P.exclude;if(M.type===null&&P.type!==null)M.type=P.type;let H=M.flags,j=P.flags;if(j.isOptional!==void 0&&H.isOptional===void 0)H.isOptional=j.isOptional;if(j.isDefined!==void 0&&H.isDefined===void 0)H.isDefined=j.isDefined;if(j.validateIf!==void 0&&H.validateIf===void 0)H.validateIf=j.validateIf;if(j.isNullable!==void 0&&H.isNullable===void 0)H.isNullable=j.isNullable;if(j.validateNested!==void 0&&H.validateNested===void 0)H.validateNested=j.validateNested;if(j.validateNestedEach!==void 0&&H.validateNestedEach===void 0)H.validateNestedEach=j.validateNestedEach}}return X}function y(Q,J,$,X){let Y=N(Q);if(Y._isAsync)return Y._deserialize(J,$).then((q)=>{if(jJ(q))return C(q.data);return X(q)});let F=Y._deserialize(J,$);if(jJ(F))return C(F.data);return X(F)}function NJ(Q,J,$){return y(Q,J,$,(X)=>X)}function yJ(Q,...J){if(typeof Q==="function"&&J.length>=1){let $=J[0];if(!($!=null&&typeof $==="function"&&("emit"in $)&&("ruleName"in $)))return y(Q,$,J[1],()=>!0)}return nJ(Q,J)}function nJ(Q,J){if(J.some((Y)=>Y.isAsync))return mJ(Q,J);let X=[];for(let Y of J)if(!Y(Q))X.push({path:"",code:Y.ruleName});return X.length?C(X):!0}async function mJ(Q,J){let $=[];for(let X of J)if(!await X(Q))$.push({path:"",code:X.ruleName});return $.length?C($):!0}function cJ(Q,J){if(Q==null||typeof Q!=="object")throw new h("serialize: expected a class instance, got "+(Q===null?"null":typeof Q));let $=Q.constructor;if(typeof $!=="function")throw new h("serialize: instance has no constructor");let X=N($);if(X._isSerializeAsync)return X._serialize(Q,J);return X._serialize(Q,J)}function oJ(Q,J){let $=typeof Q==="string"?Q:Q.name,X=typeof Q==="string"?J:Q.validate,Y=typeof Q==="object"?Q.constraints:void 0,F=typeof Q==="object"?Q.requiresType:void 0,q=g(X),Z=function(M){return X(M)};if(Z.emit=function(M,P){let H=P.addRef(X);if(q)return`if(!(await _refs[${H}](${M}))) ${P.fail($)};`;return`if(!_refs[${H}](${M})) ${P.fail($)};`},Z.ruleName=$,Z.isAsync=q,Y)Z.constraints=Y;if(F)Z.requiresType=F;return Z}export{yJ as validate,cJ as serialize,FJ as isBakerError,NJ as deserialize,oJ as createRule,BJ as configure,iJ as arrayOf,h as SealError,lJ as Field};
229
-
230
- //# debugId=38F7CB290623284064756E2164756E21
231
- //# sourceMappingURL=index.js.map
317
+ `}else{let _=tJ(X,F,B,J,U,Y);if(H)z+=`if (${B} !== undefined) {
318
+ `,z+=" "+_+`
319
+ `,z+=`}
320
+ `;else z+=_+`
321
+ `}return M+=j+z+P,M}function tJ(X,J,U,Z,Y,W){let F=`${w.out}[${JSON.stringify(J)}]`,Q=Z.transform.filter((q)=>!q.options?.deserializeOnly);if(Q.length>0){let q=PJ(U,X,Q,Y);return`${F} = ${q};`}return`${F} = ${U};`}function _J(X){let J=new Set;function U(Z){if(J.has(Z))return!0;J.add(Z);let Y=Z[K];if(Y)for(let W of Object.values(Y)){if(W.type?.fn){let F;try{F=W.type.fn()}catch(q){throw new O(`${Z.name}: type function threw: ${q.message}`)}let Q=Array.isArray(F)?F[0]:F;if(U(Q))return!0}if(W.type?.discriminator){for(let F of W.type.discriminator.subTypes)if(U(F.value))return!0}}return J.delete(Z),!1}return U(X)}function wJ(X,J){let U=J?`${J}.`:"";for(let[Z,Y]of Object.entries(X)){for(let Q of Y.expose)if(Q.deserializeOnly&&Q.serializeOnly)throw new O(`Invalid @Expose on field '${U}${Z}': cannot have both deserializeOnly:true and serializeOnly:true on the same @Expose entry. Use separate @Expose decorators for each direction.`);let W=Y.expose.filter((Q)=>!Q.serializeOnly),F=Y.expose.filter((Q)=>!Q.deserializeOnly);DJ(U+Z,W,"deserialize"),DJ(U+Z,F,"serialize")}}function DJ(X,J,U){for(let Z=0;Z<J.length;Z++)for(let Y=Z+1;Y<J.length;Y++){let W=J[Z].groups??[],F=J[Y].groups??[];if(rJ(W,F)){let Q=new Set(F),q=W.length===0?[]:W.filter((B)=>Q.has(B));throw new O(`@Expose conflict on '${X}': 2 @Expose stacks with '${U}' direction and overlapping groups [${q.join(", ")}]. Each direction must have at most one @Expose per group set.`)}}}function rJ(X,J){if(X.length===0&&J.length===0)return!0;if(X.length===0||J.length===0)return!1;return X.some((U)=>J.includes(U))}var aJ=new Set(["__proto__","constructor","prototype"]),RJ=new Set([Number,String,Boolean,Date]);function eJ(X){let J=`Circular dependency during seal: ${X} is still being sealed`;return{_deserialize(){throw new O(J)},_serialize(){throw new O(J)},_validate(){throw new O(J)},_isAsync:!1,_isSerializeAsync:!1}}function o(X,J,U){let Z=U??new Set;for(let Y of Object.values(X)){if(J==="deserialize"&&Y.validation.some((F)=>F.rule.isAsync))return!0;if((J==="deserialize"?Y.transform.filter((F)=>!F.options?.serializeOnly):Y.transform.filter((F)=>!F.options?.deserializeOnly)).some((F)=>F.isAsync??i(F.fn)))return!0;if(Y.type?.resolvedClass){let F=Y.type.resolvedClass;if(!Z.has(F)){Z.add(F);let Q=e(F);if(o(Q,J,Z))return!0}}if(Y.type?.discriminator){for(let F of Y.type.discriminator.subTypes)if(!Z.has(F.value)){Z.add(F.value);let Q=e(F.value);if(o(Q,J,Z))return!0}}}return!1}var a=!1;function XJ(){return a}var c=new Set;function JQ(){if(a)return;let X=d();try{for(let J of v)n(J,X)}catch(J){for(let U of v)if(Object.hasOwn(U,h))delete U[h];throw J}for(let J of v)c.add(J),Object.freeze(J[K]);v.clear(),a=!0}function QQ(X){if(Object.hasOwn(X,h))return;if(!Object.hasOwn(X,K))return;let J=new Set(c),U=d();n(X,U),c.add(X),Object.freeze(X[K]),v.delete(X);let Z=[...v].filter((Y)=>Object.hasOwn(Y,h)&&!J.has(Y));for(let Y of Z)c.add(Y),Object.freeze(Y[K]),v.delete(Y)}function f(X){let J=X[h];if(!J)JQ(),J=X[h];if(!J)QQ(X),J=X[h];if(!J)throw new O(`${X.name} has no @Field decorators`);return J}function n(X,J){if(Object.hasOwn(X,h))return;let U=eJ(X.name);X[h]=U;let Z=e(X);for(let M of Object.keys(Z))if(aJ.has(M))throw new O(`${X.name}: field name '${M}' is not allowed (reserved property name)`);for(let[M,j]of Object.entries(Z)){if(!j.type?.fn)continue;let P=j.type.fn();if(P===Map||P===Set){let _=P===Map?"Map":"Set",D={...j.type,collection:_,isArray:!1};if(j.type.collectionValue){let L=j.type.collectionValue();if(L!=null&&typeof L==="function"&&!RJ.has(L))D.resolvedCollectionValue=L}Z[M]={...j,type:D};continue}let z=Array.isArray(P),H=z?P[0]:P;if(H==null||typeof H!=="function")throw new O(`${X.name}: @Type/@Field type must return a constructor or [constructor], got ${String(H)}`);let R={...j.type,isArray:z};if(!RJ.has(H)){if(R.resolvedClass=H,!j.flags.validateNested||!j.flags.validateNestedEach){if(j.flags={...j.flags},!j.flags.validateNested)j.flags.validateNested=!0;if(z&&!j.flags.validateNestedEach)j.flags.validateNestedEach=!0}}Z[M]={...j,type:R}}wJ(Z,X.name);let Y=_J(X);for(let M of Object.values(Z)){if(M.type?.resolvedClass)n(M.type.resolvedClass,J);if(M.type?.resolvedCollectionValue)n(M.type.resolvedCollectionValue,J);if(M.type?.discriminator)for(let j of M.type.discriminator.subTypes)n(j.value,J)}let W=o(Z,"deserialize"),F=o(Z,"serialize"),Q=t(X,Z,J,Y,W),q=FJ(X,Z,J,Y,W),B=zJ(X,Z,J,F);Object.assign(U,{_deserialize:Q,_serialize:B,_validate:q,_isAsync:W,_isSerializeAsync:F,_merged:Z})}function e(X){let J=[],U=X;while(U&&U!==Object){if(Object.hasOwn(U,K))J.push(U);let Y=Object.getPrototypeOf(U);U=Y===U?null:Y}let Z=Object.create(null);for(let Y of J){let W=Y[K];for(let[F,Q]of Object.entries(W))if(!Z[F])Z[F]={validation:[...Q.validation],transform:[...Q.transform],expose:[...Q.expose],exclude:Q.exclude,type:Q.type,flags:{...Q.flags}};else{let q=Z[F],B=Q;for(let P of B.validation)if(!q.validation.some((z)=>z.rule===P.rule))q.validation.push(P);if(q.transform.length===0&&B.transform.length>0)q.transform=[...B.transform];if(q.expose.length===0&&B.expose.length>0)q.expose=[...B.expose];if(q.exclude===null&&B.exclude!==null)q.exclude=B.exclude;if(q.type===null&&B.type!==null)q.type=B.type;let M=q.flags,j=B.flags;if(j.isOptional!==void 0&&M.isOptional===void 0)M.isOptional=j.isOptional;if(j.isDefined!==void 0&&M.isDefined===void 0)M.isDefined=j.isDefined;if(j.validateIf!==void 0&&M.validateIf===void 0)M.validateIf=j.validateIf;if(j.isNullable!==void 0&&M.isNullable===void 0)M.isNullable=j.isNullable;if(j.validateNested!==void 0&&M.validateNested===void 0)M.validateNested=j.validateNested;if(j.validateNestedEach!==void 0&&M.validateNestedEach===void 0)M.validateNestedEach=j.validateNestedEach}}return Z}function XQ(X,J,U){let Z=f(X);if(Z._isAsync)return Z._deserialize(J,U).then((W)=>{if(AJ(W))return g(W.data);return W});let Y=Z._deserialize(J,U);if(AJ(Y))return g(Y.data);return Y}function ZQ(X,...J){if(typeof X==="function"&&J.length>=1){let U=J[0];if(!(U!=null&&typeof U==="function"&&("emit"in U)&&("ruleName"in U))){let Y=f(X),W=J[1];if(Y._isAsync)return Y._validate(U,W).then((Q)=>Q===null?!0:g(Q));let F=Y._validate(U,W);return F===null?!0:g(F)}}return $Q(X,J)}function $Q(X,J){if(J.length===0)return!0;if(J.some((Y)=>Y.isAsync))return UQ(X,J);if(J.length===1){let Y=J[0];return Y(X)?!0:g([{path:"",code:Y.ruleName}])}if(J.length===2){let Y=J[0],W=J[1],F=Y(X),Q=W(X);if(F&&Q)return!0;let q=[];if(!F)q.push({path:"",code:Y.ruleName});if(!Q)q.push({path:"",code:W.ruleName});return g(q)}if(J.length===3){let Y=J[0],W=J[1],F=J[2],Q=Y(X),q=W(X),B=F(X);if(Q&&q&&B)return!0;let M=[];if(!Q)M.push({path:"",code:Y.ruleName});if(!q)M.push({path:"",code:W.ruleName});if(!B)M.push({path:"",code:F.ruleName});return g(M)}let Z=[];for(let Y of J)if(!Y(X))Z.push({path:"",code:Y.ruleName});return Z.length?g(Z):!0}async function UQ(X,J){let U=[];for(let Z of J)if(!await Z(X))U.push({path:"",code:Z.ruleName});return U.length?g(U):!0}function YQ(X,J){if(X==null||typeof X!=="object")throw new O("serialize: expected a class instance, got "+(X===null?"null":typeof X));let U=X.constructor;if(typeof U!=="function")throw new O("serialize: instance has no constructor");let Z=f(U);if(Z._isSerializeAsync)return Z._serialize(X,J);return Z._serialize(X,J)}function qQ(X,J){let U=typeof X==="string"?X:X.name,Z=typeof X==="string"?J:X.validate,Y=typeof X==="object"?X.constraints:void 0,W=typeof X==="object"?X.requiresType:void 0,F=i(Z),Q=function(q){let B=Z(q);if(!F&&TJ(B))throw Error(`createRule(${U}): sync rule returned Promise. Declare the validator with async if it is asynchronous.`);return B};if(Q.emit=function(q,B){let M=B.addRef(Q);return`if(!(${F?"await ":""}_refs[${M}](${q}))) ${B.fail(U)};`},Q.ruleName=U,Q.isAsync=F,Y)Q.constraints=Y;if(W)Q.requiresType=W;return Q}export{ZQ as validate,YQ as serialize,IJ as isBakerError,XQ as deserialize,qQ as createRule,bJ as configure,HQ as arrayOf,O as SealError,jQ as Field};