@zipbul/baker 2.0.0 → 2.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/README.md +158 -110
- package/dist/index-fnv35wrf.js +3 -0
- package/dist/index-k3d659ad.js +3 -0
- package/dist/index-s0n74vx1.js +3 -0
- package/dist/index-xdn55cz3.js +0 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +125 -127
- package/dist/src/decorators/field.d.ts +4 -12
- package/dist/src/decorators/index.d.ts +1 -1
- package/dist/src/decorators/index.js +1 -4
- package/dist/src/rules/index.d.ts +1 -1
- package/dist/src/rules/index.js +3 -6
- package/dist/src/rules/string.d.ts +2 -0
- package/dist/src/symbols.js +1 -4
- package/dist/src/transformers/collection.transformer.d.ts +3 -0
- package/dist/src/transformers/date.transformer.d.ts +4 -0
- package/dist/src/transformers/index.d.ts +8 -0
- package/dist/src/transformers/index.js +2 -0
- package/dist/src/transformers/luxon.transformer.d.ts +6 -0
- package/dist/src/transformers/moment.transformer.d.ts +5 -0
- package/dist/src/transformers/number.transformer.d.ts +2 -0
- package/dist/src/transformers/string.transformer.d.ts +4 -0
- package/dist/src/types.d.ts +7 -5
- package/package.json +28 -4
- package/dist/index-btgens0c.js +0 -6
- package/dist/index-k369bbht.js +0 -6
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import"./index-xdn55cz3.js";import{a as G,b as
|
|
2
|
+
import"./index-xdn55cz3.js";import{a as G,b as dJ,c as sJ}from"./index-k3d659ad.js";import{d as k,e as R}from"./index-fnv35wrf.js";import"./index-s0n74vx1.js";import{isErr as HJ}from"@zipbul/result";var l=Symbol.for("baker:error");function WJ(Q){return Q!=null&&typeof Q==="object"&&l in Q}function K(Q){return{[l]:!0,errors:Q}}class O extends Error{constructor(Q){super(Q);this.name="SealError"}}var d={};function LJ(Q){let J=[];if(s())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 d={enableImplicitConversion:Q.autoConvert??!1,exposeDefaultValues:Q.allowClassDefaults??!1,stopAtFirstError:Q.stopAtFirstError??!1,whitelist:Q.forbidUnknown??!1,debug:Q.debug??!1},{warnings:J}}function c(){return d}import{err as zJ,isErr as wJ}from"@zipbul/result";function b(Q){return Q[Symbol.toStringTag]==="AsyncFunction"}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 A(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
3
|
if(${$}.message!==undefined)${X}.message=${$}.message;
|
|
4
4
|
if(${$}.context!==undefined)${X}.context=${$}.context;
|
|
5
5
|
${Q}.push(${X});
|
|
@@ -7,23 +7,23 @@ import"./index-xdn55cz3.js";import{a as G,b as g,c as iJ,d as lJ}from"./index-bt
|
|
|
7
7
|
if(${J}.message!==undefined)${$}.message=${J}.message;
|
|
8
8
|
if(${J}.context!==undefined)${$}.context=${J}.context;
|
|
9
9
|
return _err([${$}]);
|
|
10
|
-
`}function
|
|
10
|
+
`}function _J(Q){return U.field+A(Q)}function e(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 JJ(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 QJ(Q,J,$,X,Y){let B=$?.stopAtFirstError??!1,q=!B,Z=$?.exposeDefaultValues??!1,M=[],F=[],H=[],j=`'use strict';
|
|
11
11
|
`;if(j+=Z?`var ${U.out} = new _Cls();
|
|
12
12
|
`:`var ${U.out} = Object.create(_Cls.prototype);
|
|
13
13
|
`,q)j+=`var ${U.errList} = [];
|
|
14
14
|
`;j+=`if (input == null || typeof input !== 'object' || Array.isArray(input)) return _err([{path:'',code:'invalidInput'}]);
|
|
15
|
-
`;let z=-1;if(X)
|
|
15
|
+
`;let z=-1;if(X)F.push(new WeakSet),z=F.length-1,j+=`if (_refs[${z}].has(input)) return _err([{path:'',code:'circular'}]);
|
|
16
16
|
`,j+=`_refs[${z}].add(input);
|
|
17
17
|
`,j+=`try {
|
|
18
|
-
`;if($?.whitelist){let
|
|
18
|
+
`;if($?.whitelist){let W=new Set;for(let[w,h]of Object.entries(J)){let T=e(w,h.expose);W.add(T)}let D=F.length;if(F.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
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((
|
|
20
|
+
`}if(Object.values(J).some((W)=>{let D=JJ(W.expose);if(D&&D.length>0)return!0;if(W.validation.some((w)=>w.groups&&w.groups.length>0))return!0;return!1}))j+=`var ${U.groups} = _opts && _opts.groups;
|
|
21
21
|
`,j+=`var ${U.groupsSet} = ${U.groups} ? new Set(${U.groups}) : null;
|
|
22
|
-
`;for(let[
|
|
22
|
+
`;for(let[W,D]of Object.entries(J)){let w=OJ(W,D,{stopAtFirstError:B,collectErrors:q,exposeDefaultValues:Z,isAsync:Y,regexes:M,refs:F,execs:H,options:$});j+=w}if(q)j+=`if (${U.errList}.length) return _err(${U.errList});
|
|
23
23
|
`;if(j+=`return ${U.out};
|
|
24
24
|
`,X)j+=`} finally { _refs[${z}].delete(input); }
|
|
25
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,
|
|
26
|
+
`,Function("_Cls","_re","_refs","_execs","_err","_isErr",`return ${Y?"async function":"function"}(input, _opts) { `+j+" }")(Q,M,F,H,zJ,wJ)}function DJ(Q,J,$){if(Q&&J)return"nullable+optional";if(Q)return"nullable";if($)return"defined";if(J)return"optional";return"default"}var hJ={"nullable+optional"({varName:Q,assignNull:J,validationCode:$}){let X=`if (${Q} === null) { ${J}}
|
|
27
27
|
`;return X+=`else if (${Q} !== undefined) {
|
|
28
28
|
`,X+=$,X+=`}
|
|
29
29
|
`,X},nullable({varName:Q,emitCtx:J,assignNull:$,validationCode:X}){let Y=`if (${Q} === undefined) ${J.fail("isDefined")};
|
|
@@ -35,21 +35,21 @@ import"./index-xdn55cz3.js";import{a as G,b as g,c as iJ,d as lJ}from"./index-bt
|
|
|
35
35
|
`,$},default({varName:Q,emitCtx:J,validationCode:$}){let X=`if (${Q} === undefined || ${Q} === null) ${J.fail("isDefined")};
|
|
36
36
|
`;return X+=`else {
|
|
37
37
|
`,X+=$,X+=`}
|
|
38
|
-
`,X}};function
|
|
39
|
-
`}return""}}if(J.expose.length>0&&J.expose.every((
|
|
40
|
-
`;return""}let
|
|
41
|
-
`;else j=`var ${
|
|
42
|
-
`;let z="",
|
|
43
|
-
`,
|
|
44
|
-
`}let
|
|
45
|
-
`,
|
|
46
|
-
`+
|
|
47
|
-
`+
|
|
48
|
-
`}if($.type?.collection)return Z+=
|
|
49
|
-
`,Z;return Z+=
|
|
38
|
+
`,X}};function OJ(Q,J,$){let{collectErrors:X,exposeDefaultValues:Y}=$;if(J.exclude){if(!J.exclude.serializeOnly){if($.options?.debug){let T=J.exclude.deserializeOnly?"deserializeOnly":"bidirectional";return`// [baker] field "${Q}" excluded (${T} @Exclude)
|
|
39
|
+
`}return""}}if(J.expose.length>0&&J.expose.every((T)=>T.serializeOnly)){if($.options?.debug)return`// [baker] field "${Q}" excluded (all @Expose entries are serializeOnly)
|
|
40
|
+
`;return""}let B=_J(Q),q=e(Q,J.expose),Z=JJ(J.expose),M=CJ(Q,$),F="",H=null;if(J.flags.validateIf)H=$.refs.length,$.refs.push(J.flags.validateIf);let j;if(Y&&!J.flags.isOptional)j=`var ${B} = (${JSON.stringify(q)} in input) ? input[${JSON.stringify(q)}] : ${U.out}[${JSON.stringify(Q)}];
|
|
41
|
+
`;else j=`var ${B} = input[${JSON.stringify(q)}];
|
|
42
|
+
`;let z="",L="";if(Z&&Z.length>0){let T=JSON.stringify(Z);z=`if (${U.groupsSet} && ${T}.some(function(g){return ${U.groupsSet}.has(g);})) {
|
|
43
|
+
`,L=`}
|
|
44
|
+
`}let P=j,_=!!(J.flags.isOptional&&!J.flags.isDefined),W=J.flags.isNullable===!0,D=TJ(Q,B,J,$,M),w=`${U.out}[${JSON.stringify(Q)}] = null;
|
|
45
|
+
`,h=DJ(W,_,J.flags.isDefined??!1);if(P+=hJ[h]({varName:B,emitCtx:M,assignNull:w,validationCode:D}),H!==null)F+=z+`if (_refs[${H}](input)) {
|
|
46
|
+
`+P+`}
|
|
47
|
+
`+L;else F+=z+P+L;return F}function TJ(Q,J,$,X,Y){let{collectErrors:B,execs:q}=X,Z="",M=$.transform.filter((F)=>!F.options?.serializeOnly);if(M.length>0)for(let F of M){let H=X.refs.length;X.refs.push(F.fn);let j=X.isAsync&&b(F.fn),z=`_refs[${H}]({value:${J},key:${JSON.stringify(Q)},obj:input})`;Z+=`${J} = ${j?"await ":""}${z};
|
|
48
|
+
`}if($.type?.collection)return Z+=GJ(Q,J,$,X,Y),Z;if($.flags.validateNested&&$.type?.fn)return Z+=KJ(Q,J,$,X,Y),Z;if($.validation.length===0)return Z+=`${U.out}[${JSON.stringify(Q)}] = ${J};
|
|
49
|
+
`,Z;return Z+=gJ(Q,J,$.validation,B,Y,X,$),Z}function XJ(Q,J,$,X){let Y="";if(typeof Q.message==="string")Y+=`,message:${JSON.stringify(Q.message)}`;else if(typeof Q.message==="function"){let B=X.refs.length;X.refs.push(Q.message);let q=X.refs.length;X.refs.push(Q.rule.constraints??{}),Y+=`,message:_refs[${B}]({property:${JSON.stringify(J)},value:${$},constraints:_refs[${q}]})`}if(Q.context!==void 0){let B=X.refs.length;X.refs.push(Q.context),Y+=`,context:_refs[${B}]`}return Y}function g(Q,J,$,X,Y){let B=XJ(X,J,$,Y);if(!B)return Q;return{...Q,fail(q){if(Q.collectErrors)return`${U.errList}.push({path:${JSON.stringify(J)},code:${JSON.stringify(q)}${B}})`;else return`return _err([{path:${JSON.stringify(J)},code:${JSON.stringify(q)}${B}}])`}}}function C(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);})) {
|
|
50
50
|
${J}
|
|
51
51
|
}
|
|
52
|
-
`}function
|
|
52
|
+
`}function t(Q,J,$,X,Y,B){let q=Y?`${U.errList}.push({path:${JSON.stringify($)},code:'conversionFailed'}); ${X} = true;`:B.fail("conversionFailed")+";";switch(Q){case"string":return` ${J} = String(${J});
|
|
53
53
|
`;case"number":return` ${J} = Number(${J});
|
|
54
54
|
if (isNaN(${J})) { ${q} }
|
|
55
55
|
`;case"boolean":return` if (${J} === 'true' || ${J} === '1' || ${J} === 1) ${J} = true;
|
|
@@ -57,80 +57,80 @@ ${J}
|
|
|
57
57
|
else { ${q} }
|
|
58
58
|
`;case"date":return` ${J} = new Date(${J});
|
|
59
59
|
if (isNaN(${J}.getTime())) { ${q} }
|
|
60
|
-
`;default:throw new
|
|
61
|
-
`+
|
|
62
|
-
`}for(let
|
|
63
|
-
`+
|
|
64
|
-
`}for(let
|
|
65
|
-
`+
|
|
66
|
-
`}return D};if($)if(
|
|
60
|
+
`;default:throw new O(`Unknown implicit conversion type: "${Q}" for field "${$}"`)}}var RJ={Number:"number",Boolean:"boolean",String:"string",Date:"date"},r={isString:"string",isNumber:"number",isBoolean:"boolean",isDate:"date",isInt:"number"},SJ=new Set(["isString","isBoolean"]);function VJ(Q,J){let $=J.filter((H)=>H.each),X=J.filter((H)=>!H.each),Y=X.filter((H)=>H.rule.requiresType==="string"),B=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),F=[{type:"string",deps:Y},{type:"number",deps:B},{type:"boolean",deps:q},{type:"date",deps:Z}].filter((H)=>H.deps.length>0);if(F.length>1)throw new O(`Field "${Q}" has conflicting requiresType: ${F.map((H)=>H.type).join(", ")}`);return{each:$,generalRules:M,typedDeps:F.length>0?F[0]:void 0}}function IJ(Q,J,$,X){let{generalRules:Y,typedDeps:B}=J,q=!!B,Z=B?.type??null,M=B?.deps??[],F=-1;if(Z)F=Y.findIndex((P)=>r[P.rule.ruleName]===Z);let H=!!X.options?.enableImplicitConversion&&!$?.transform.some((P)=>!P.options?.serializeOnly),j=null;if(!q&&H&&F<0)for(let P=0;P<Y.length;P++){let _=r[Y[P].rule.ruleName];if(_){F=P,j=_;break}}let z=F>=0?Y[F]:void 0,L=null;if(!q&&!j&&H&&$?.type?.fn)try{let P=$.type.fn(),_=Array.isArray(P)?P[0]:P;L=_?RJ[_.name]??null:null}catch(P){throw new O(`field "${Q}": @Field type function threw: ${P.message}`)}return{effectiveGateType:Z??j??L,gateDeps:M,typeAsserterIdx:F,typeAsserter:z,enableConversion:H,asserterInferredGate:j,typeHintGate:L}}function bJ(Q,J,$,X,Y,B){let q="",{effectiveGateType:Z,gateCondition:M,gateErrorCode:F,gateEmitCtx:H,otherGeneral:j,gateDeps:z,typeAsserter:L,enableConversion:P}=B,_=(W)=>{let D="";if(L&&!SJ.has(L.rule.ruleName)){let w=C(L,L.rule.emit(J,g(X,Q,J,L,Y)));D+=W+w.replace(/\n/g,`
|
|
61
|
+
`+W)+`
|
|
62
|
+
`}for(let w of j){let h=C(w,w.rule.emit(J,g(X,Q,J,w,Y)));D+=W+h.replace(/\n/g,`
|
|
63
|
+
`+W)+`
|
|
64
|
+
`}for(let w of z){let h=C(w,w.rule.emit(J,g(X,Q,J,w,Y)));D+=W+h.replace(/\n/g,`
|
|
65
|
+
`+W)+`
|
|
66
|
+
`}return D};if($)if(P){let W=`${U.skip}${A(Q)}`;q+=`var ${W} = false;
|
|
67
67
|
`,q+=`if (${M}) {
|
|
68
|
-
`,q+=
|
|
69
|
-
`,q+=`if (!${
|
|
70
|
-
`;let D=`${U.mark}${
|
|
71
|
-
`,q+=
|
|
68
|
+
`,q+=t(Z,J,Q,W,!0,X),q+=`}
|
|
69
|
+
`,q+=`if (!${W}) {
|
|
70
|
+
`;let D=`${U.mark}${A(Q)}`;q+=` var ${D} = ${U.errList}.length;
|
|
71
|
+
`,q+=_(" "),q+=` if (${U.errList}.length === ${D}) ${U.out}[${JSON.stringify(Q)}] = ${J};
|
|
72
72
|
`,q+=`}
|
|
73
|
-
`}else{q+=`if (${M}) ${H.fail(
|
|
73
|
+
`}else{q+=`if (${M}) ${H.fail(F)};
|
|
74
74
|
`,q+=`else {
|
|
75
|
-
`;let
|
|
76
|
-
`,q+=
|
|
75
|
+
`;let W=`${U.mark}${A(Q)}`;q+=` var ${W} = ${U.errList}.length;
|
|
76
|
+
`,q+=_(" "),q+=` if (${U.errList}.length === ${W}) ${U.out}[${JSON.stringify(Q)}] = ${J};
|
|
77
77
|
`,q+=`}
|
|
78
|
-
`}else if(
|
|
79
|
-
`,q+=
|
|
80
|
-
`,q+=
|
|
81
|
-
`;else q+=`if (${M}) ${H.fail(
|
|
82
|
-
`,q+=
|
|
83
|
-
`;return q}function
|
|
84
|
-
`;else{let Z=`${U.mark}${
|
|
85
|
-
`;for(let M of $)q+=
|
|
78
|
+
`}else if(P)q+=`if (${M}) {
|
|
79
|
+
`,q+=t(Z,J,Q,null,!1,X),q+=`}
|
|
80
|
+
`,q+=_(""),q+=`${U.out}[${JSON.stringify(Q)}] = ${J};
|
|
81
|
+
`;else q+=`if (${M}) ${H.fail(F)};
|
|
82
|
+
`,q+=_(""),q+=`${U.out}[${JSON.stringify(Q)}] = ${J};
|
|
83
|
+
`;return q}function AJ(Q,J,$,X,Y,B){let q="";if(X)if($.length===0)q+=`${U.out}[${JSON.stringify(Q)}] = ${J};
|
|
84
|
+
`;else{let Z=`${U.mark}${A(Q)}`;q+=`var ${Z} = ${U.errList}.length;
|
|
85
|
+
`;for(let M of $)q+=C(M,M.rule.emit(J,g(Y,Q,J,M,B)))+`
|
|
86
86
|
`;q+=`if (${U.errList}.length === ${Z}) ${U.out}[${JSON.stringify(Q)}] = ${J};
|
|
87
|
-
`}else{for(let Z of $)q+=
|
|
87
|
+
`}else{for(let Z of $)q+=C(Z,Z.rule.emit(J,g(Y,Q,J,Z,B)))+`
|
|
88
88
|
`;q+=`${U.out}[${JSON.stringify(Q)}] = ${J};
|
|
89
|
-
`}return q}function
|
|
89
|
+
`}return q}function kJ(Q,J,$,X,Y,B){let q="";for(let Z of $){let M=JSON.stringify(Q),F=A(Q),H=`${U.index}${F}`,j=`${U.setIdx}${F}`,z=`${U.setVal}${F}`,L=`${U.mapIdx}${F}`,P=`${U.mapVal}${F}`,_=XJ(Z,Q,J,B),W=Z.groups&&Z.groups.length>0?`if (!${U.groupsSet} || ${JSON.stringify(Z.groups)}.some(function(g){return ${U.groupsSet}.has(g);})) {
|
|
90
90
|
`:"",D=Z.groups&&Z.groups.length>0?`}
|
|
91
|
-
`:"",
|
|
91
|
+
`:"",w=[{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
92
|
`,counterInc:`${j}++;
|
|
93
|
-
`},{guard:`${J} instanceof Map`,idxVar:
|
|
94
|
-
`,counterInc:`${
|
|
95
|
-
`}],
|
|
96
|
-
`,
|
|
97
|
-
`,
|
|
98
|
-
`,
|
|
99
|
-
`,q+=
|
|
100
|
-
`,q+=
|
|
101
|
-
`,q+=
|
|
102
|
-
`;else q+=`if (!${
|
|
103
|
-
`,q+=`if (${
|
|
104
|
-
`,q+=
|
|
105
|
-
`,q+=
|
|
106
|
-
`,q+=
|
|
107
|
-
`;q+=D}return q}function
|
|
108
|
-
`;let z=$.validation.filter((
|
|
109
|
-
`}if(H>=0){let
|
|
110
|
-
`,j+=` for (var ${
|
|
111
|
-
`,j+=` var ${U.result}${Z} = ${
|
|
93
|
+
`},{guard:`${J} instanceof Map`,idxVar:L,elemExpr:P,loopHeader:`for (var ${P} of ${J}.values())`,counterDecl:`var ${L} = 0;
|
|
94
|
+
`,counterInc:`${L}++;
|
|
95
|
+
`}],h=(T)=>{let V={...Y,fail:(I)=>X?`${U.errList}.push({path:${M}+'['+${T.idxVar}+']',code:${JSON.stringify(I)}${_}})`:`return _err([{path:${M}+'['+${T.idxVar}+']',code:${JSON.stringify(I)}${_}}])`},S="";if(S+=` ${T.counterDecl}`,S+=` ${T.loopHeader} {
|
|
96
|
+
`,S+=" "+Z.rule.emit(T.elemExpr,V)+`
|
|
97
|
+
`,T.counterInc)S+=` ${T.counterInc}`;return S+=` }
|
|
98
|
+
`,S};if(q+=W,X)q+=`if (${w[0].guard}) {
|
|
99
|
+
`,q+=h(w[0]),q+=`} else if (${w[1].guard}) {
|
|
100
|
+
`,q+=h(w[1]),q+=`} else if (${w[2].guard}) {
|
|
101
|
+
`,q+=h(w[2]),q+=`} else { ${U.errList}.push({path:${M},code:'isArray'}); }
|
|
102
|
+
`;else q+=`if (!${w[0].guard} && !(${J} instanceof Set) && !(${J} instanceof Map)) ${Y.fail("isArray")};
|
|
103
|
+
`,q+=`if (${w[0].guard}) {
|
|
104
|
+
`,q+=h(w[0]),q+=`} else if (${w[1].guard}) {
|
|
105
|
+
`,q+=h(w[1]),q+=`} else if (${w[2].guard}) {
|
|
106
|
+
`,q+=h(w[2]),q+=`}
|
|
107
|
+
`;q+=D}return q}function gJ(Q,J,$,X,Y,B,q){let Z=VJ(Q,$),M=IJ(Q,Z,q,B),F="";if(!!Z.typedDeps||M.asserterInferredGate||M.typeHintGate){let j=M.typeAsserter?Z.generalRules.filter((_,W)=>W!==M.typeAsserterIdx):Z.generalRules,z,L;if(M.typeAsserter)L=M.typeAsserter.rule.ruleName;else if(M.gateDeps.length>0)L=M.gateDeps[0].rule.ruleName;else L="conversionFailed";if(M.effectiveGateType==="date")z=`!(${J} instanceof Date)`;else z=`typeof ${J} !== '${M.effectiveGateType}'`;let P=M.typeAsserter?g(Y,Q,J,M.typeAsserter,B):Y;F+=bJ(Q,J,X,Y,B,{effectiveGateType:M.effectiveGateType,gateCondition:z,gateErrorCode:L,gateEmitCtx:P,otherGeneral:j,gateDeps:M.gateDeps,typeAsserter:M.typeAsserter,enableConversion:M.enableConversion})}else F+=AJ(Q,J,Z.generalRules,X,Y,B);return F+=kJ(Q,J,Z.each,X,Y,B),F}function GJ(Q,J,$,X,Y){let{collectErrors:B,execs:q}=X,Z=A(Q),M=$.type.collection,F=X.isAsync?"await ":"",H=-1;if($.type.resolvedCollectionValue){let z=$.type.resolvedCollectionValue[R];H=q.length,q.push(z)}let j="";if(M==="Set"){j+=`if (Array.isArray(${J})) {
|
|
108
|
+
`;let z=$.validation.filter((P)=>!P.each);for(let P of z){let _=g(Y,Q,J,P,X);j+=` ${P.rule.emit(J,_)}
|
|
109
|
+
`}if(H>=0){let P=`${U.index}${Z}`;if(j+=` var ${U.arr}${Z} = new Set();
|
|
110
|
+
`,j+=` for (var ${P}=0; ${P}<${J}.length; ${P}++) {
|
|
111
|
+
`,j+=` var ${U.result}${Z} = ${F}_execs[${H}]._deserialize(${J}[${P}], _opts);
|
|
112
112
|
`,j+=` if (_isErr(${U.result}${Z})) {
|
|
113
|
-
`,
|
|
113
|
+
`,B)j+=` var ${U.errors}${Z} = ${U.result}${Z}.data;
|
|
114
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)}+'['+${
|
|
115
|
+
`,j+=" "+u(U.errList,`${JSON.stringify(Q)}+'['+${P}+'].'+${U.errors}${Z}[${U.nestedIdx}${Z}].path`,`${U.errors}${Z}[${U.nestedIdx}${Z}]`,`__ne${Z}`),j+=` }
|
|
116
116
|
`;else j+=` var ${U.errors}${Z} = ${U.result}${Z}.data;
|
|
117
|
-
`,j+=" "+f(`${JSON.stringify(Q)}+'['+${
|
|
117
|
+
`,j+=" "+f(`${JSON.stringify(Q)}+'['+${P}+'].'+${U.errors}${Z}[0].path`,`${U.errors}${Z}[0]`,`__ne${Z}`);j+=` } else { ${U.arr}${Z}.add(${U.result}${Z}); }
|
|
118
118
|
`,j+=` }
|
|
119
119
|
`,j+=` ${U.out}[${JSON.stringify(Q)}] = ${U.arr}${Z};
|
|
120
120
|
`}else j+=` ${U.out}[${JSON.stringify(Q)}] = new Set(${J});
|
|
121
|
-
`;let
|
|
122
|
-
`,j+=` for (var ${
|
|
123
|
-
`;for(let
|
|
124
|
-
`}j+=` ${
|
|
121
|
+
`;let L=$.validation.filter((P)=>P.each);if(L.length>0){let P=`${U.setIdx}${Z}`,_=`${U.setVal}${Z}`;j+=` var ${P} = 0;
|
|
122
|
+
`,j+=` for (var ${_} of ${U.out}[${JSON.stringify(Q)}]) {
|
|
123
|
+
`;for(let W of L){let w={...Y,fail:(h)=>B?`${U.errList}.push({path:${JSON.stringify(Q)}+'['+${P}+']',code:${JSON.stringify(h)}})`:`return _err([{path:${JSON.stringify(Q)}+'['+${P}+']',code:${JSON.stringify(h)}}])`};j+=` ${W.rule.emit(_,w)}
|
|
124
|
+
`}j+=` ${P}++;
|
|
125
125
|
`,j+=` }
|
|
126
126
|
`}j+=`} else { ${Y.fail("isArray")}; }
|
|
127
127
|
`}else{if(j+=`if (${J} != null && typeof ${J} === 'object' && !Array.isArray(${J})) {
|
|
128
128
|
`,H>=0){let z=`${U.key}${Z}`;if(j+=` var ${U.arr}${Z} = new Map();
|
|
129
129
|
`,j+=` for (var ${z} in ${J}) {
|
|
130
130
|
`,j+=` if (!Object.prototype.hasOwnProperty.call(${J}, ${z})) continue;
|
|
131
|
-
`,j+=` var ${U.result}${Z} = ${
|
|
131
|
+
`,j+=` var ${U.result}${Z} = ${F}_execs[${H}]._deserialize(${J}[${z}], _opts);
|
|
132
132
|
`,j+=` if (_isErr(${U.result}${Z})) {
|
|
133
|
-
`,
|
|
133
|
+
`,B)j+=` var ${U.errors}${Z} = ${U.result}${Z}.data;
|
|
134
134
|
`,j+=` for (var ${U.nestedIdx}${Z}=0; ${U.nestedIdx}${Z}<${U.errors}${Z}.length; ${U.nestedIdx}${Z}++) {
|
|
135
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
136
|
`;else j+=` var ${U.errors}${Z} = ${U.result}${Z}.data;
|
|
@@ -143,33 +143,33 @@ ${J}
|
|
|
143
143
|
`,j+=` }
|
|
144
144
|
`,j+=` ${U.out}[${JSON.stringify(Q)}] = ${U.arr}${Z};
|
|
145
145
|
`;j+=`} else { ${Y.fail("isObject")}; }
|
|
146
|
-
`}return j}function
|
|
147
|
-
`;let Z="",M=
|
|
146
|
+
`}return j}function KJ(Q,J,$,X,Y){let{collectErrors:B,execs:q}=X;if(!$.type)return`${U.out}[${JSON.stringify(Q)}] = ${J};
|
|
147
|
+
`;let Z="",M=A(Q);if($.type.discriminator){let F=JSON.stringify($.type.discriminator.property);Z+=`var ${U.disc}${M} = ${J} && ${J}[${F}];
|
|
148
148
|
`,Z+=`switch (${U.disc}${M}) {
|
|
149
|
-
`;for(let H of $.type.discriminator.subTypes){let j=H.value[
|
|
150
|
-
`,Z+=` var ${U.result}${M} = ${
|
|
151
|
-
`,Z+=
|
|
149
|
+
`;for(let H of $.type.discriminator.subTypes){let j=H.value[R],z=q.length;q.push(j);let L=X.isAsync?"await ":"";Z+=` case ${JSON.stringify(H.name)}:
|
|
150
|
+
`,Z+=` var ${U.result}${M} = ${L}_execs[${z}]._deserialize(${J}, _opts);
|
|
151
|
+
`,Z+=a(Q,`${U.result}${M}`,B),Z+=` break;
|
|
152
152
|
`}if(Z+=` default: ${Y.fail("invalidDiscriminator")};
|
|
153
153
|
`,Z+=`}
|
|
154
|
-
`,$.type.keepDiscriminatorProperty)Z+=`if (${U.out}[${JSON.stringify(Q)}] != null) ${U.out}[${JSON.stringify(Q)}][${
|
|
155
|
-
`}else{let H=($.type.resolvedClass??$.type.fn())[
|
|
156
|
-
`;let
|
|
154
|
+
`,$.type.keepDiscriminatorProperty)Z+=`if (${U.out}[${JSON.stringify(Q)}] != null) ${U.out}[${JSON.stringify(Q)}][${F}] = ${U.disc}${M};
|
|
155
|
+
`}else{let H=($.type.resolvedClass??$.type.fn())[R],j=q.length;if(q.push(H),$.type?.isArray||$.flags.validateNestedEach||$.validation.some((L)=>L.each)){let L=`${U.index}${M}`,P=X.isAsync?"await ":"";Z+=`if (Array.isArray(${J})) {
|
|
156
|
+
`;let _=$.validation.filter((W)=>!W.each);for(let W of _){let D=g(Y,Q,J,W,X),w=W.rule.emit(J,D);Z+=` ${w}
|
|
157
157
|
`}if(Z+=` var ${U.arr}${M} = [];
|
|
158
|
-
`,Z+=` for (var ${
|
|
159
|
-
`,Z+=` var ${U.result}${M} = ${
|
|
158
|
+
`,Z+=` for (var ${L}=0; ${L}<${J}.length; ${L}++) {
|
|
159
|
+
`,Z+=` var ${U.result}${M} = ${P}_execs[${j}]._deserialize(${J}[${L}], _opts);
|
|
160
160
|
`,Z+=` if (_isErr(${U.result}${M})) {
|
|
161
|
-
`,
|
|
161
|
+
`,B)Z+=` var ${U.errors}${M} = ${U.result}${M}.data;
|
|
162
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)}+'['+${
|
|
163
|
+
`,Z+=" "+u(U.errList,`${JSON.stringify(Q)}+'['+${L}+'].'+${U.errors}${M}[${U.nestedIdx}${M}].path`,`${U.errors}${M}[${U.nestedIdx}${M}]`,`__ne${M}`),Z+=` }
|
|
164
164
|
`;else Z+=` var ${U.errors}${M} = ${U.result}${M}.data;
|
|
165
|
-
`,Z+=" "+f(`${JSON.stringify(Q)}+'['+${
|
|
165
|
+
`,Z+=" "+f(`${JSON.stringify(Q)}+'['+${L}+'].'+${U.errors}${M}[0].path`,`${U.errors}${M}[0]`,`__ne${M}`);Z+=` } else { ${U.arr}${M}.push(${U.result}${M}); }
|
|
166
166
|
`,Z+=` }
|
|
167
167
|
`,Z+=` ${U.out}[${JSON.stringify(Q)}] = ${U.arr}${M};
|
|
168
168
|
`,Z+=`} else { ${Y.fail("isArray")}; }
|
|
169
|
-
`}else{let
|
|
170
|
-
`,Z+=` var ${U.result}${M} = ${
|
|
171
|
-
`,Z+=
|
|
172
|
-
`}}return Z}function
|
|
169
|
+
`}else{let L=X.isAsync?"await ":"";Z+=`if (${J} != null && typeof ${J} === 'object') {
|
|
170
|
+
`,Z+=` var ${U.result}${M} = ${L}_execs[${j}]._deserialize(${J}, _opts);
|
|
171
|
+
`,Z+=a(Q,`${U.result}${M}`,B),Z+=`} else { ${Y.fail("isObject")}; }
|
|
172
|
+
`}}return Z}function a(Q,J,$){let X=A(Q);if($){let Y=`${U.errors}${X}[${U.nestedIdx}${X}]`;return` if (_isErr(${J})) {
|
|
173
173
|
var ${U.errors}${X} = ${J}.data;
|
|
174
174
|
for (var ${U.nestedIdx}${X}=0; ${U.nestedIdx}${X}<${U.errors}${X}.length; ${U.nestedIdx}${X}++) {
|
|
175
175
|
`+u(U.errList,`${JSON.stringify(Q+".")}+${Y}.path`,Y,`__ne${X}`)+` }
|
|
@@ -177,55 +177,53 @@ ${J}
|
|
|
177
177
|
`}else{let Y=`${U.errors}${X}[0]`;return` if (_isErr(${J})) {
|
|
178
178
|
var ${U.errors}${X} = ${J}.data;
|
|
179
179
|
`+f(`${JSON.stringify(Q+".")}+${Y}.path`,Y,`__ne${X}`)+` } else { ${U.out}[${JSON.stringify(Q)}] = ${J}; }
|
|
180
|
-
`}}function
|
|
180
|
+
`}}function CJ(Q,J){let{collectErrors:$,regexes:X,refs:Y,execs:B}=J;return{addRegex(q){return X.push(q),X.length-1},addRef(q){return Y.push(q),Y.length-1},addExecutor(q){return B.push(q),B.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 vJ(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 $J(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,Y){if($.length===0)return"";let B=[...$].reverse(),q=Q;for(let Z of B){let M=X.length;X.push(Z.fn);let F=`_refs[${M}]({value:${q},key:${JSON.stringify(J)},obj:instance})`;q=Y&&b(Z.fn)?`(await ${F})`:F}return`
|
|
181
|
+
${Q} = ${q};`}function UJ(Q,J,$,X){let Y=[],B=[],q=`'use strict';
|
|
181
182
|
`;if(q+=`var __bk$out = {};
|
|
182
|
-
`,Object.values(J).some((H)=>{let j
|
|
183
|
+
`,Object.values(J).some((H)=>{let j=$J(H.expose);return j&&j.length>0}))q+=`var __bk$groups = _opts && _opts.groups;
|
|
183
184
|
`,q+=`var __bk$groupsSet = __bk$groups ? new Set(__bk$groups) : null;
|
|
184
|
-
`;for(let[H,j]of Object.entries(J))q+=
|
|
185
|
+
`;for(let[H,j]of Object.entries(J))q+=xJ(H,j,Y,B,X,$);return q+=`return __bk$out;
|
|
185
186
|
`,q+=`//# sourceURL=baker://${Q.name}/serialize
|
|
186
|
-
`,Function("_refs","_execs",`return ${X?"async function":"function"}(instance, _opts) { `+q+" }")(Y,
|
|
187
|
-
`}return""}}if(J.expose.length>0&&J.expose.every((
|
|
188
|
-
`;return""}let q=
|
|
187
|
+
`,Function("_refs","_execs",`return ${X?"async function":"function"}(instance, _opts) { `+q+" }")(Y,B)}function xJ(Q,J,$,X,Y,B){if(J.exclude){if(!J.exclude.deserializeOnly){if(B?.debug){let P=J.exclude.serializeOnly?"serializeOnly":"bidirectional";return`// [baker] field "${Q}" excluded (${P} @Exclude)
|
|
188
|
+
`}return""}}if(J.expose.length>0&&J.expose.every((P)=>P.deserializeOnly)){if(B?.debug)return`// [baker] field "${Q}" excluded (all @Expose entries are deserializeOnly)
|
|
189
|
+
`;return""}let q=vJ(Q,J.expose),Z=$J(J.expose),M="",F="",H="";if(Z&&Z.length>0)F=`if (__bk$groupsSet && ${JSON.stringify(Z)}.some(function(g){return __bk$groupsSet.has(g);})) {
|
|
189
190
|
`,H=`}
|
|
190
|
-
`;let j="",z=J.flags.isOptional
|
|
191
|
-
`,
|
|
192
|
-
`,
|
|
193
|
-
`,
|
|
194
|
-
`,
|
|
195
|
-
${
|
|
191
|
+
`;let j="",z=J.flags.isOptional,L=J.transform.filter((P)=>!P.options?.deserializeOnly);if(J.type?.collection){let P=`__bk$out[${JSON.stringify(q)}]`,_=J.type.collection,W;if(_==="Set")if(J.type.resolvedCollectionValue){let D=J.type.resolvedCollectionValue[R],w=X.length;if(X.push(D),Y)W=`${P} = await Promise.all(Array.from(instance[${JSON.stringify(Q)}]).map(async function(__ser_item) { return __ser_item == null ? __ser_item : await _execs[${w}]._serialize(__ser_item, _opts); }));`;else W=`${P} = Array.from(instance[${JSON.stringify(Q)}]).map(function(__ser_item) { return __ser_item == null ? __ser_item : _execs[${w}]._serialize(__ser_item, _opts); });`}else W=`${P} = Array.from(instance[${JSON.stringify(Q)}]);`;else if(J.type.resolvedCollectionValue){let D=J.type.resolvedCollectionValue[R],w=X.length;X.push(D);let h=Y?"await ":"";W=`var __bk$m = {};
|
|
192
|
+
`,W+=` for (var __bk$me of instance[${JSON.stringify(Q)}]) {
|
|
193
|
+
`,W+=` __bk$m[__bk$me[0]] = __bk$me[1] == null ? __bk$me[1] : ${h}_execs[${w}]._serialize(__bk$me[1], _opts);
|
|
194
|
+
`,W+=` }
|
|
195
|
+
`,W+=` ${P} = __bk$m;`}else W=`${P} = Object.fromEntries(instance[${JSON.stringify(Q)}]);`;if(W+=ZJ(P,Q,L,$,Y),z)j=`if (instance[${JSON.stringify(Q)}] !== undefined && instance[${JSON.stringify(Q)}] !== null) {
|
|
196
|
+
${W}
|
|
196
197
|
} else if (instance[${JSON.stringify(Q)}] === null) {
|
|
197
|
-
${
|
|
198
|
+
${P} = null;
|
|
198
199
|
}
|
|
199
200
|
`;else j=`if (instance[${JSON.stringify(Q)}] != null) {
|
|
200
|
-
${
|
|
201
|
+
${W}
|
|
201
202
|
} else {
|
|
202
|
-
${
|
|
203
|
+
${P} = instance[${JSON.stringify(Q)}];
|
|
203
204
|
}
|
|
204
|
-
`;return M+=
|
|
205
|
-
`,
|
|
206
|
-
`,
|
|
207
|
-
`;
|
|
208
|
-
`}return
|
|
209
|
-
`,
|
|
210
|
-
`;else
|
|
211
|
-
`;
|
|
212
|
-
`,
|
|
213
|
-
`,
|
|
214
|
-
`,
|
|
215
|
-
${
|
|
205
|
+
`;return M+=F+j+H,M}if(J.type?.resolvedClass||J.type?.discriminator||J.type?.fn&&J.flags.validateNested){let P=J.type?.isArray||J.flags.validateNestedEach||J.validation.some((D)=>D.each),_=`__bk$out[${JSON.stringify(q)}]`,W;if(J.type.discriminator){let{property:D,subTypes:w}=J.type.discriminator,h=J.type.keepDiscriminatorProperty!==!1,T=[...w].sort((V,S)=>{if(V.value.prototype instanceof S.value)return-1;if(S.value.prototype instanceof V.value)return 1;return 0}),n=(V,S)=>{let I="";for(let x=0;x<T.length;x++){let m=T[x],FJ=m.value[R],BJ=X.length;X.push(FJ);let PJ=$.length;if($.push(m.value),I+=`${x===0?"if":"} else if"} (${V} instanceof _refs[${PJ}]) {
|
|
206
|
+
`,I+=` var __bk$sr = ${S}_execs[${BJ}]._serialize(${V}, _opts);
|
|
207
|
+
`,h)I+=` __bk$sr[${JSON.stringify(D)}] = ${JSON.stringify(m.name)};
|
|
208
|
+
`;I+=` __bk$out_item = __bk$sr;
|
|
209
|
+
`}return I+="} else { __bk$out_item = "+V+`; }
|
|
210
|
+
`,I};if(P){let V=Y?"await ":"";if(Y)W=`${_} = await Promise.all(instance[${JSON.stringify(Q)}].map(async function(__ser_item) {
|
|
211
|
+
`;else W=`${_} = instance[${JSON.stringify(Q)}].map(function(__ser_item) {
|
|
212
|
+
`;W+=` var __bk$out_item;
|
|
213
|
+
`,W+=n("__ser_item",V),W+=` return __bk$out_item;
|
|
214
|
+
`,W+=Y?"}));":"});"}else{let V=Y?"await ":"",S=JSON.stringify(Q);W=`var __bk$out_item;
|
|
215
|
+
`,W+=n(`instance[${S}]`,V),W+=`${_} = __bk$out_item;`}}else{let w=(J.type.resolvedClass??J.type.fn())[R],h=X.length;if(X.push(w),P)if(Y)W=`${_} = await Promise.all(instance[${JSON.stringify(Q)}].map(async function(__ser_item) { return __ser_item == null ? __ser_item : await _execs[${h}]._serialize(__ser_item, _opts); }));`;else W=`${_} = instance[${JSON.stringify(Q)}].map(function(__ser_item) { return __ser_item == null ? __ser_item : _execs[${h}]._serialize(__ser_item, _opts); });`;else W=`${_} = ${Y?"await ":""}_execs[${h}]._serialize(instance[${JSON.stringify(Q)}], _opts);`}if(W+=ZJ(_,Q,L,$,Y),z)j=`if (instance[${JSON.stringify(Q)}] !== undefined && instance[${JSON.stringify(Q)}] !== null) {
|
|
216
|
+
${W}
|
|
216
217
|
} else if (instance[${JSON.stringify(Q)}] === null) {
|
|
217
|
-
${
|
|
218
|
+
${_} = null;
|
|
218
219
|
}
|
|
219
220
|
`;else j=`if (instance[${JSON.stringify(Q)}] != null) {
|
|
220
|
-
${
|
|
221
|
+
${W}
|
|
221
222
|
} else {
|
|
222
|
-
${
|
|
223
|
+
${_} = instance[${JSON.stringify(Q)}];
|
|
223
224
|
}
|
|
224
|
-
`}else{let
|
|
225
|
-
`,j+=" "+
|
|
225
|
+
`}else{let P=uJ(Q,q,J,$,Y);if(z)j+=`if (instance[${JSON.stringify(Q)}] !== undefined) {
|
|
226
|
+
`,j+=" "+P+`
|
|
226
227
|
`,j+=`}
|
|
227
|
-
`;else j+=
|
|
228
|
-
`}return M+=
|
|
229
|
-
|
|
230
|
-
//# debugId=38F7CB290623284064756E2164756E21
|
|
231
|
-
//# sourceMappingURL=index.js.map
|
|
228
|
+
`;else j+=P+`
|
|
229
|
+
`}return M+=F+j+H,M}function uJ(Q,J,$,X,Y){let B=`__bk$out[${JSON.stringify(J)}]`,q=$.transform.filter((Z)=>!Z.options?.deserializeOnly);if(q.length>0){let Z=[...q].reverse(),M=`instance[${JSON.stringify(Q)}]`;for(let F of Z){let H=X.length;X.push(F.fn);let j=`_refs[${H}]({value:${M},key:${JSON.stringify(Q)},obj:instance})`;M=Y&&b(F.fn)?`(await ${j})`:j}return`${B} = ${M};`}return`${B} = instance[${JSON.stringify(Q)}];`}function qJ(Q){let J=new Set;function $(X){if(J.has(X))return!0;J.add(X);let Y=X[k];if(Y)for(let B of Object.values(Y)){if(B.type?.fn){let q;try{q=B.type.fn()}catch(M){throw new O(`${X.name}: type function threw: ${M.message}`)}let Z=Array.isArray(q)?q[0]:q;if($(Z))return!0}if(B.type?.discriminator){for(let q of B.type.discriminator.subTypes)if($(q.value))return!0}}return J.delete(X),!1}return $(Q)}function jJ(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 O(`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 B=Y.expose.filter((Z)=>!Z.serializeOnly),q=Y.expose.filter((Z)=>!Z.deserializeOnly);YJ($+X,B,"deserialize"),YJ($+X,q,"serialize")}}function YJ(Q,J,$){for(let X=0;X<J.length;X++)for(let Y=X+1;Y<J.length;Y++){let B=J[X].groups??[],q=J[Y].groups??[];if(fJ(B,q)){let Z=new Set(q),M=B.length===0?[]:B.filter((F)=>Z.has(F));throw new O(`@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 fJ(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 pJ=new Set(["__proto__","constructor","prototype"]),MJ=new Set([Number,String,Boolean,Date]);function EJ(Q){let J=`Circular dependency during seal: ${Q} is still being sealed`;return{_deserialize(){throw new O(J)},_serialize(){throw new O(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)=>b(q.fn)))return!0;if(Y.type?.resolvedClass){let q=Y.type.resolvedClass;if(!X.has(q)){X.add(q);let Z=i(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=i(q.value);if(E(Z,J,X))return!0}}}return!1}var o=!1;function s(){return o}var p=new Set;function NJ(){if(o)return;let Q=c();try{for(let J of G)v(J,Q)}catch(J){for(let $ of G)if(Object.hasOwn($,R))delete $[R];throw J}for(let J of G)p.add(J),Object.freeze(J[k]);G.clear(),o=!0}function yJ(Q){if(Object.hasOwn(Q,R))return;if(!Object.hasOwn(Q,k))return;let J=new Set(p),$=c();v(Q,$),p.add(Q),Object.freeze(Q[k]),G.delete(Q);let X=[...G].filter((Y)=>Object.hasOwn(Y,R)&&!J.has(Y));for(let Y of X)p.add(Y),Object.freeze(Y[k]),G.delete(Y)}function N(Q){let J=Q[R];if(!J)NJ(),J=Q[R];if(!J)yJ(Q),J=Q[R];if(!J)throw new O(`${Q.name} has no @Field decorators`);return J}function v(Q,J){if(Object.hasOwn(Q,R))return;let $=EJ(Q.name);Q[R]=$;let X=i(Q);for(let F of Object.keys(X))if(pJ.has(F))throw new O(`${Q.name}: field name '${F}' is not allowed (reserved property name)`);for(let[F,H]of Object.entries(X)){if(!H.type?.fn)continue;let j=H.type.fn();if(j===Map||j===Set){let _=j===Map?"Map":"Set",W={...H.type,collection:_,isArray:!1};if(H.type.collectionValue){let D=H.type.collectionValue();if(D!=null&&typeof D==="function"&&!MJ.has(D))W.resolvedCollectionValue=D}X[F]={...H,type:W};continue}let z=Array.isArray(j),L=z?j[0]:j;if(L==null||typeof L!=="function")throw new O(`${Q.name}: @Type/@Field type must return a constructor or [constructor], got ${String(L)}`);let P={...H.type,isArray:z};if(!MJ.has(L)){if(P.resolvedClass=L,!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[F]={...H,type:P}}jJ(X,Q.name);let Y=qJ(Q);for(let F of Object.values(X)){if(F.type?.resolvedClass)v(F.type.resolvedClass,J);if(F.type?.resolvedCollectionValue)v(F.type.resolvedCollectionValue,J);if(F.type?.discriminator)for(let H of F.type.discriminator.subTypes)v(H.value,J)}let B=E(X,"deserialize"),q=E(X,"serialize"),Z=QJ(Q,X,J,Y,B),M=UJ(Q,X,J,q);Object.assign($,{_deserialize:Z,_serialize:M,_isAsync:B,_isSerializeAsync:q,_merged:X})}function i(Q){let J=[],$=Q;while($&&$!==Object){if(Object.hasOwn($,k))J.push($);let Y=Object.getPrototypeOf($);$=Y===$?null:Y}let X=Object.create(null);for(let Y of J){let B=Y[k];for(let[q,Z]of Object.entries(B))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],F=Z;for(let z of F.validation)if(!M.validation.some((L)=>L.rule===z.rule))M.validation.push(z);if(M.transform.length===0&&F.transform.length>0)M.transform=[...F.transform];if(M.expose.length===0&&F.expose.length>0)M.expose=[...F.expose];if(M.exclude===null&&F.exclude!==null)M.exclude=F.exclude;if(M.type===null&&F.type!==null)M.type=F.type;let H=M.flags,j=F.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(HJ(q))return K(q.data);return X(q)});let B=Y._deserialize(J,$);if(HJ(B))return K(B.data);return X(B)}function nJ(Q,J,$){return y(Q,J,$,(X)=>X)}function mJ(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 cJ(Q,J)}function cJ(Q,J){if(J.some((Y)=>Y.isAsync))return oJ(Q,J);let X=[];for(let Y of J)if(!Y(Q))X.push({path:"",code:Y.ruleName});return X.length?K(X):!0}async function oJ(Q,J){let $=[];for(let X of J)if(!await X(Q))$.push({path:"",code:X.ruleName});return $.length?K($):!0}function iJ(Q,J){if(Q==null||typeof Q!=="object")throw new O("serialize: expected a class instance, got "+(Q===null?"null":typeof Q));let $=Q.constructor;if(typeof $!=="function")throw new O("serialize: instance has no constructor");let X=N($);if(X._isSerializeAsync)return X._serialize(Q,J);return X._serialize(Q,J)}function lJ(Q,J){let $=typeof Q==="string"?Q:Q.name,X=typeof Q==="string"?J:Q.validate,Y=typeof Q==="object"?Q.constraints:void 0,B=typeof Q==="object"?Q.requiresType:void 0,q=b(X),Z=function(M){return X(M)};if(Z.emit=function(M,F){let H=F.addRef(X);if(q)return`if(!(await _refs[${H}](${M}))) ${F.fail($)};`;return`if(!_refs[${H}](${M})) ${F.fail($)};`},Z.ruleName=$,Z.isAsync=q,Y)Z.constraints=Y;if(B)Z.requiresType=B;return Z}export{mJ as validate,iJ as serialize,WJ as isBakerError,nJ as deserialize,lJ as createRule,LJ as configure,dJ as arrayOf,O as SealError,sJ as Field};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EmittableRule } from '../types';
|
|
1
|
+
import type { EmittableRule, Transformer } from '../types';
|
|
2
2
|
export interface ArrayOfMarker {
|
|
3
3
|
readonly [key: symbol]: true;
|
|
4
4
|
readonly rules: EmittableRule[];
|
|
@@ -11,12 +11,6 @@ export interface ArrayOfMarker {
|
|
|
11
11
|
* tags!: string[];
|
|
12
12
|
*/
|
|
13
13
|
export declare function arrayOf(...rules: EmittableRule[]): ArrayOfMarker;
|
|
14
|
-
export interface FieldTransformParams {
|
|
15
|
-
value: unknown;
|
|
16
|
-
key: string;
|
|
17
|
-
obj: Record<string, unknown>;
|
|
18
|
-
direction: 'deserialize' | 'serialize';
|
|
19
|
-
}
|
|
20
14
|
export interface FieldOptions {
|
|
21
15
|
/** Nested DTO type. Thunk — supports circular references. [Dto] for arrays. */
|
|
22
16
|
type?: () => (new (...args: any[]) => any) | (new (...args: any[]) => any)[];
|
|
@@ -47,11 +41,9 @@ export interface FieldOptions {
|
|
|
47
41
|
/** Groups — field visibility control + conditional validation rule application */
|
|
48
42
|
groups?: string[];
|
|
49
43
|
/** Conditional validation — skip all field validation when false */
|
|
50
|
-
when?: (obj: any) => boolean;
|
|
51
|
-
/**
|
|
52
|
-
transform?:
|
|
53
|
-
/** Transform direction restriction */
|
|
54
|
-
transformDirection?: 'deserializeOnly' | 'serializeOnly';
|
|
44
|
+
when?: (obj: Record<string, any>) => boolean;
|
|
45
|
+
/** Transformer or array of transformers (serialize direction applies in reverse order) */
|
|
46
|
+
transform?: Transformer | Transformer[];
|
|
55
47
|
/** Error message on validation failure — applied to all rules of the field (rule's own message takes precedence) */
|
|
56
48
|
message?: string | ((args: {
|
|
57
49
|
property: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { Field, arrayOf } from './field';
|
|
2
|
-
export type { FieldOptions,
|
|
2
|
+
export type { FieldOptions, ArrayOfMarker } from './field';
|
|
@@ -1,5 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import"../../index-xdn55cz3.js";import{
|
|
3
|
-
|
|
4
|
-
//# debugId=9E4BFE621FA3997464756E2164756E21
|
|
5
|
-
//# sourceMappingURL=index.js.map
|
|
2
|
+
import"../../index-xdn55cz3.js";import{b as a,c as b}from"../../index-k3d659ad.js";import"../../index-fnv35wrf.js";import"../../index-s0n74vx1.js";export{a as arrayOf,b as Field};
|
|
@@ -3,7 +3,7 @@ export type { IsNumberOptions } from './typechecker';
|
|
|
3
3
|
export { min, max, isPositive, isNegative, isDivisibleBy } from './number';
|
|
4
4
|
export { minDate, maxDate } from './date';
|
|
5
5
|
export { equals, notEquals, isEmpty, isNotEmpty, isIn, isNotIn } from './common';
|
|
6
|
-
export { minLength, maxLength, length, contains, notContains, matches, isLowercase, isUppercase, isAscii, isAlpha, isAlphanumeric, isBooleanString, isNumberString, isDecimal, isFullWidth, isHalfWidth, isVariableWidth, isMultibyte, isSurrogatePair, isHexadecimal, isOctal, isEmail, isURL, isUUID, isIP, isHexColor, isRgbColor, isHSL, isMACAddress, isISBN, isISIN, isISO8601, isISRC, isISSN, isJWT, isLatLong, isLocale, isDataURI, isFQDN, isPort, isEAN, isISO31661Alpha2, isISO31661Alpha3, isBIC, isFirebasePushId, isSemVer, isMongoId, isJSON, isBase32, isBase58, isBase64, isDateString, isMimeType, isCurrency, isMagnetURI, isCreditCard, isIBAN, isByteLength, isHash, isRFC3339, isMilitaryTime, isLatitude, isLongitude, isEthereumAddress, isBtcAddress, isISO4217CurrencyCode, isPhoneNumber, isStrongPassword, isTaxId, } from './string';
|
|
6
|
+
export { minLength, maxLength, length, contains, notContains, matches, isLowercase, isUppercase, isAscii, isAlpha, isAlphanumeric, isBooleanString, isNumberString, isDecimal, isFullWidth, isHalfWidth, isVariableWidth, isMultibyte, isSurrogatePair, isHexadecimal, isOctal, isEmail, isURL, isUUID, isIP, isHexColor, isRgbColor, isHSL, isMACAddress, isISBN, isISIN, isISO8601, isISRC, isISSN, isJWT, isLatLong, isLocale, isDataURI, isFQDN, isPort, isEAN, isISO31661Alpha2, isISO31661Alpha3, isBIC, isFirebasePushId, isSemVer, isMongoId, isJSON, isBase32, isBase58, isBase64, isDateString, isMimeType, isCurrency, isMagnetURI, isCreditCard, isIBAN, isByteLength, isHash, isRFC3339, isMilitaryTime, isLatitude, isLongitude, isEthereumAddress, isBtcAddress, isISO4217CurrencyCode, isPhoneNumber, isStrongPassword, isTaxId, isULID, isCUID2, } from './string';
|
|
7
7
|
export type { IsURLOptions, IsBase64Options, IsMACAddressOptions, IsIBANOptions, IsISSNOptions, IsFQDNOptions, IsISO8601Options, IsNumberStringOptions, IsStrongPasswordOptions, } from './string';
|
|
8
8
|
export { arrayContains, arrayNotContains, arrayMinSize, arrayMaxSize, arrayUnique, arrayNotEmpty, } from './array';
|
|
9
9
|
export { isNotEmptyObject, isInstance } from './object';
|