@zipbul/baker 1.0.0 → 2.0.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 +150 -471
- package/dist/index-btgens0c.js +6 -0
- package/dist/index-k369bbht.js +6 -0
- package/dist/index.d.ts +5 -6
- package/dist/index.js +221 -161
- package/dist/src/collect.d.ts +3 -5
- package/dist/src/configure.d.ts +10 -16
- package/dist/src/create-rule.d.ts +7 -7
- package/dist/src/decorators/field.d.ts +31 -28
- package/dist/src/decorators/index.d.ts +1 -1
- package/dist/src/decorators/index.js +1 -1
- package/dist/src/errors.d.ts +33 -22
- package/dist/src/functions/_run-sealed.d.ts +7 -0
- package/dist/src/functions/deserialize.d.ts +8 -6
- package/dist/src/functions/index.d.ts +1 -2
- package/dist/src/functions/serialize.d.ts +6 -5
- package/dist/src/functions/validate.d.ts +13 -0
- package/dist/src/interfaces.d.ts +7 -7
- package/dist/src/registry.d.ts +4 -4
- package/dist/src/rules/index.d.ts +1 -1
- package/dist/src/rules/index.js +9 -9
- package/dist/src/rules/object.d.ts +1 -1
- package/dist/src/rules/string.d.ts +6 -48
- package/dist/src/seal/circular-analyzer.d.ts +4 -4
- package/dist/src/seal/expose-validator.d.ts +6 -6
- package/dist/src/seal/seal.d.ts +16 -16
- package/dist/src/seal/serialize-builder.d.ts +2 -2
- package/dist/src/symbols.d.ts +4 -6
- package/dist/src/symbols.js +2 -2
- package/dist/src/types.d.ts +34 -84
- package/package.json +13 -3
- package/README.ko.md +0 -588
- package/dist/index-57gr0v18.js +0 -6
- package/dist/index-aegrb1kn.js +0 -6
- package/dist/src/functions/to-json-schema.d.ts +0 -20
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{e as v}from"./index-k369bbht.js";var z=new Set;function B(h,S){if(!Object.prototype.hasOwnProperty.call(h,v))h[v]=Object.create(null),z.add(h);let b=h[v];return b[S]??={validation:[],transform:[],expose:[],exclude:null,type:null,flags:{}}}function C(h){return h[Symbol.toStringTag]==="AsyncFunction"}var J=Symbol.for("baker:arrayOf");function E(...h){let S={rules:h};return S[J]=!0,S}function Q(h){return typeof h==="object"&&h!==null&&h[J]===!0}var T=new Set(["type","discriminator","keepDiscriminatorProperty","rules","optional","nullable","name","deserializeName","serializeName","exclude","groups","when","transform","transformDirection","message","context","mapValue","setValue"]);function H(h){if(typeof h==="function")return!1;if(typeof h!=="object"||h===null)return!1;if(Q(h))return!1;let S=Object.keys(h);if(S.length===0)return!0;return S.some((b)=>T.has(b))}function U(h){if(h.length===0)return{rules:[],options:{}};if(h.length===1&&H(h[0])){let b=h[0];return{rules:b.rules??[],options:b}}let S=h[h.length-1];if(H(S)){let b=S,j=h.slice(0,-1);if(b.rules)j=[...j,...b.rules];return{rules:j,options:b}}return{rules:h,options:{}}}function X(h,S,b){for(let j of S)if(Q(j))for(let q of j.rules){let c={rule:q,each:!0,groups:b.groups};if(b.message!==void 0)c.message=b.message;if(b.context!==void 0)c.context=b.context;h.validation.push(c)}else{let q={rule:j,groups:b.groups};if(b.message!==void 0)q.message=b.message;if(b.context!==void 0)q.context=b.context;h.validation.push(q)}}function Z(h,S){if(S.name)h.expose.push({name:S.name,groups:S.groups});else if(S.deserializeName||S.serializeName){if(S.deserializeName)h.expose.push({name:S.deserializeName,deserializeOnly:!0,groups:S.groups});if(S.serializeName)h.expose.push({name:S.serializeName,serializeOnly:!0,groups:S.groups})}else if(S.groups)h.expose.push({groups:S.groups});else h.expose.push({})}function $(h,S){if(!S.transform)return;let b=S.transform,q=C(b)?async(G)=>b({value:G.value,key:G.key,obj:G.obj,direction:G.type}):(G)=>b({value:G.value,key:G.key,obj:G.obj,direction:G.type}),c={};if(S.transformDirection==="deserializeOnly")c.deserializeOnly=!0;if(S.transformDirection==="serializeOnly")c.serializeOnly=!0;h.transform.push({fn:q,options:Object.keys(c).length>0?c:void 0})}function W(...h){return(S,b)=>{let j=S.constructor,c=B(j,b),{rules:G,options:w}=U(h);if(X(c,G,w),w.optional)c.flags.isOptional=!0;if(w.nullable)c.flags.isNullable=!0;if(w.when)c.flags.validateIf=w.when;if(w.type)c.type={fn:w.type,discriminator:w.discriminator,keepDiscriminatorProperty:w.keepDiscriminatorProperty,collectionValue:w.mapValue??w.setValue};if(Z(c,w),w.exclude){if(w.exclude===!0)c.exclude={};else if(w.exclude==="deserializeOnly")c.exclude={deserializeOnly:!0};else if(w.exclude==="serializeOnly")c.exclude={serializeOnly:!0}}$(c,w)}}
|
|
3
|
+
export{z as a,C as b,E as c,W as d};
|
|
4
|
+
|
|
5
|
+
//# debugId=97D01B7065BCEE5B64756E2164756E21
|
|
6
|
+
//# sourceMappingURL=index-btgens0c.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
export { deserialize } from './src/functions/deserialize';
|
|
2
|
+
export { validate } from './src/functions/validate';
|
|
2
3
|
export { serialize } from './src/functions/serialize';
|
|
3
|
-
export { toJsonSchema } from './src/functions/to-json-schema';
|
|
4
4
|
export { configure } from './src/configure';
|
|
5
5
|
export { createRule } from './src/create-rule';
|
|
6
6
|
export { Field, arrayOf } from './src/decorators/index';
|
|
7
|
-
export type { FieldOptions, FieldTransformParams,
|
|
8
|
-
export type { BakerError } from './src/errors';
|
|
9
|
-
export {
|
|
10
|
-
export type {
|
|
7
|
+
export type { FieldOptions, FieldTransformParams, ArrayOfMarker } from './src/decorators/index';
|
|
8
|
+
export type { BakerError, BakerErrors } from './src/errors';
|
|
9
|
+
export { isBakerError, SealError } from './src/errors';
|
|
10
|
+
export type { EmittableRule } from './src/types';
|
|
11
11
|
export type { BakerConfig, ConfigureResult } from './src/configure';
|
|
12
12
|
export type { RuntimeOptions } from './src/interfaces';
|
|
13
|
-
export type { ToJsonSchemaOptions } from './src/functions/to-json-schema';
|
package/dist/index.js
CHANGED
|
@@ -1,171 +1,231 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import"./index-xdn55cz3.js";import{a as G,b as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
`}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
`,
|
|
18
|
-
|
|
19
|
-
`;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
`;
|
|
23
|
-
`;return
|
|
24
|
-
`,X}
|
|
25
|
-
`;return
|
|
26
|
-
`,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
`;else
|
|
31
|
-
|
|
32
|
-
`,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
`,
|
|
39
|
-
${Q}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
`;
|
|
43
|
-
if (isNaN(${Q})) { ${j} }
|
|
44
|
-
`;case"boolean":return` if (${Q} === 'true' || ${Q} === '1' || ${Q} === 1) ${Q} = true;
|
|
45
|
-
else if (${Q} === 'false' || ${Q} === '0' || ${Q} === 0) ${Q} = false;
|
|
46
|
-
else { ${j} }
|
|
47
|
-
`;case"date":return` ${Q} = new Date(${Q});
|
|
48
|
-
if (isNaN(${Q}.getTime())) { ${j} }
|
|
49
|
-
`;default:throw new T(`Unknown implicit conversion type: "${J}" for field "${X}"`)}}var OJ={Number:"number",Boolean:"boolean",String:"string",Date:"date"},r={isString:"string",isNumber:"number",isBoolean:"boolean",isDate:"date",isInt:"number"},RJ=new Set(["isString","isBoolean"]);function AJ(J,Q){let X=Q.filter((B)=>B.each),Z=Q.filter((B)=>!B.each),$=Z.filter((B)=>B.rule.requiresType==="string"),U=Z.filter((B)=>B.rule.requiresType==="number"),j=Z.filter((B)=>B.rule.requiresType==="boolean"),Y=Z.filter((B)=>B.rule.requiresType==="date"),q=Z.filter((B)=>!B.rule.requiresType),M=[{type:"string",deps:$},{type:"number",deps:U},{type:"boolean",deps:j},{type:"date",deps:Y}].filter((B)=>B.deps.length>0);if(M.length>1)throw new T(`Field "${J}" has conflicting requiresType: ${M.map((B)=>B.type).join(", ")}`);return{each:X,generalRules:q,typedDeps:M.length>0?M[0]:void 0}}function bJ(J,Q,X,Z){let{generalRules:$,typedDeps:U}=Q,j=!!U,Y=U?.type??null,q=U?.deps??[],M=-1;if(Y)M=$.findIndex((F)=>r[F.rule.ruleName]===Y);let B=!!Z.options?.enableImplicitConversion&&!X?.transform.some((F)=>!F.options?.serializeOnly),P=null;if(!j&&B&&M<0)for(let F=0;F<$.length;F++){let L=r[$[F].rule.ruleName];if(L){M=F,P=L;break}}let z=M>=0?$[M]:void 0,W=null;if(!j&&!P&&B&&X?.type?.fn)try{let F=X.type.fn(),L=Array.isArray(F)?F[0]:F;W=L?OJ[L.name]??null:null}catch(F){throw new T(`field "${J}": @Field type function threw: ${F.message}`)}return{effectiveGateType:Y??P??W,gateDeps:q,typeAsserterIdx:M,typeAsserter:z,enableConversion:B,asserterInferredGate:P,typeHintGate:W}}function kJ(J,Q,X,Z,$,U){let j="",{effectiveGateType:Y,gateCondition:q,gateErrorCode:M,gateEmitCtx:B,otherGeneral:P,gateDeps:z,typeAsserter:W,enableConversion:F}=U,L=(_)=>{let D="";if(W&&!RJ.has(W.rule.ruleName)){let w=v(W,W.rule.emit(Q,K(Z,J,Q,W,$)));D+=_+w.replace(/\n/g,`
|
|
50
|
-
`+_)+`
|
|
51
|
-
`}for(let w of P){let I=v(w,w.rule.emit(Q,K(Z,J,Q,w,$)));D+=_+I.replace(/\n/g,`
|
|
52
|
-
`+_)+`
|
|
53
|
-
`}for(let w of z){let I=v(w,w.rule.emit(Q,K(Z,J,Q,w,$)));D+=_+I.replace(/\n/g,`
|
|
54
|
-
`+_)+`
|
|
55
|
-
`}return D};if(X)if(F){let _=`${H.skip}${h(J)}`;j+=`var ${_} = false;
|
|
56
|
-
`,j+=`if (${q}) {
|
|
57
|
-
`,j+=s(Y,Q,J,_,!0,Z),j+=`}
|
|
58
|
-
`,j+=`if (!${_}) {
|
|
59
|
-
`;let D=`${H.mark}${h(J)}`;j+=` var ${D} = ${H.errList}.length;
|
|
60
|
-
`,j+=L(" "),j+=` if (${H.errList}.length === ${D}) ${H.out}[${JSON.stringify(J)}] = ${Q};
|
|
61
|
-
`,j+=`}
|
|
62
|
-
`}else{j+=`if (${q}) ${B.fail(M)};
|
|
63
|
-
`,j+=`else {
|
|
64
|
-
`;let _=`${H.mark}${h(J)}`;j+=` var ${_} = ${H.errList}.length;
|
|
65
|
-
`,j+=L(" "),j+=` if (${H.errList}.length === ${_}) ${H.out}[${JSON.stringify(J)}] = ${Q};
|
|
66
|
-
`,j+=`}
|
|
67
|
-
`}else if(F)j+=`if (${q}) {
|
|
68
|
-
`,j+=s(Y,Q,J,null,!1,Z),j+=`}
|
|
69
|
-
`,j+=L(""),j+=`${H.out}[${JSON.stringify(J)}] = ${Q};
|
|
70
|
-
`;else j+=`if (${q}) ${B.fail(M)};
|
|
71
|
-
`,j+=L(""),j+=`${H.out}[${JSON.stringify(J)}] = ${Q};
|
|
72
|
-
`;return j}function hJ(J,Q,X,Z,$,U){let j="";if(Z)if(X.length===0)j+=`${H.out}[${JSON.stringify(J)}] = ${Q};
|
|
73
|
-
`;else{let Y=`${H.mark}${h(J)}`;j+=`var ${Y} = ${H.errList}.length;
|
|
74
|
-
`;for(let q of X)j+=v(q,q.rule.emit(Q,K($,J,Q,q,U)))+`
|
|
75
|
-
`;j+=`if (${H.errList}.length === ${Y}) ${H.out}[${JSON.stringify(J)}] = ${Q};
|
|
76
|
-
`}else{for(let Y of X)j+=v(Y,Y.rule.emit(Q,K($,J,Q,Y,U)))+`
|
|
77
|
-
`;j+=`${H.out}[${JSON.stringify(J)}] = ${Q};
|
|
78
|
-
`}return j}function SJ(J,Q,X,Z,$,U){let j="";for(let Y of X){let q=JSON.stringify(J),M=h(J),B=`${H.index}${M}`,P=`${H.setIdx}${M}`,z=`${H.setVal}${M}`,W=`${H.mapIdx}${M}`,F=`${H.mapVal}${M}`,L=QJ(Y,J,Q,U),_=Y.groups&&Y.groups.length>0?`if (!${H.groupsSet} || ${JSON.stringify(Y.groups)}.some(function(g){return ${H.groupsSet}.has(g);})) {
|
|
79
|
-
`:"",D=Y.groups&&Y.groups.length>0?`}
|
|
80
|
-
`:"",w=[{guard:`Array.isArray(${Q})`,idxVar:B,elemExpr:`${Q}[${B}]`,loopHeader:`for (var ${B}=0; ${B}<${Q}.length; ${B}++)`,counterDecl:"",counterInc:""},{guard:`${Q} instanceof Set`,idxVar:P,elemExpr:z,loopHeader:`for (var ${z} of ${Q})`,counterDecl:`var ${P} = 0;
|
|
81
|
-
`,counterInc:`${P}++;
|
|
82
|
-
`},{guard:`${Q} instanceof Map`,idxVar:W,elemExpr:F,loopHeader:`for (var ${F} of ${Q}.values())`,counterDecl:`var ${W} = 0;
|
|
83
|
-
`,counterInc:`${W}++;
|
|
84
|
-
`}],I=(O)=>{let k={...$,fail:(g)=>Z?`${H.errList}.push({path:${q}+'['+${O.idxVar}+']',code:${JSON.stringify(g)}${L}})`:`return _err([{path:${q}+'['+${O.idxVar}+']',code:${JSON.stringify(g)}${L}}])`},R="";if(R+=` ${O.counterDecl}`,R+=` ${O.loopHeader} {
|
|
85
|
-
`,R+=" "+Y.rule.emit(O.elemExpr,k)+`
|
|
86
|
-
`,O.counterInc)R+=` ${O.counterInc}`;return R+=` }
|
|
87
|
-
`,R};if(j+=_,Z)j+=`if (${w[0].guard}) {
|
|
88
|
-
`,j+=I(w[0]),j+=`} else if (${w[1].guard}) {
|
|
89
|
-
`,j+=I(w[1]),j+=`} else if (${w[2].guard}) {
|
|
90
|
-
`,j+=I(w[2]),j+=`} else { ${H.errList}.push({path:${q},code:'isArray'}); }
|
|
91
|
-
`;else j+=`if (!${w[0].guard} && !(${Q} instanceof Set) && !(${Q} instanceof Map)) ${$.fail("isArray")};
|
|
92
|
-
`,j+=`if (${w[0].guard}) {
|
|
93
|
-
`,j+=I(w[0]),j+=`} else if (${w[1].guard}) {
|
|
94
|
-
`,j+=I(w[1]),j+=`} else if (${w[2].guard}) {
|
|
95
|
-
`,j+=I(w[2]),j+=`}
|
|
96
|
-
`;j+=D}return j}function GJ(J,Q,X,Z,$,U,j){let Y=AJ(J,X),q=bJ(J,Y,j,U),M="";if(!!Y.typedDeps||q.asserterInferredGate||q.typeHintGate){let P=q.typeAsserter?Y.generalRules.filter((L,_)=>_!==q.typeAsserterIdx):Y.generalRules,z,W;if(q.typeAsserter)W=q.typeAsserter.rule.ruleName;else if(q.gateDeps.length>0)W=q.gateDeps[0].rule.ruleName;else W="conversionFailed";if(q.effectiveGateType==="date")z=`!(${Q} instanceof Date)`;else z=`typeof ${Q} !== '${q.effectiveGateType}'`;let F=q.typeAsserter?K($,J,Q,q.typeAsserter,U):$;M+=kJ(J,Q,Z,$,U,{effectiveGateType:q.effectiveGateType,gateCondition:z,gateErrorCode:W,gateEmitCtx:F,otherGeneral:P,gateDeps:q.gateDeps,typeAsserter:q.typeAsserter,enableConversion:q.enableConversion})}else M+=hJ(J,Q,Y.generalRules,Z,$,U);return M+=SJ(J,Q,Y.each,Z,$,U),M}function gJ(J,Q,X,Z,$){let{collectErrors:U,execs:j}=Z;if(!X.type)return`${H.out}[${JSON.stringify(J)}] = ${Q};
|
|
97
|
-
`;let Y="",q=h(J);if(X.type.discriminator){let M=JSON.stringify(X.type.discriminator.property);Y+=`var ${H.disc}${q} = ${Q} && ${Q}[${M}];
|
|
98
|
-
`,Y+=`switch (${H.disc}${q}) {
|
|
99
|
-
`;for(let B of X.type.discriminator.subTypes){let P=B.value[V],z=j.length;j.push(P);let W=Z.isAsync?"await ":"";Y+=` case ${JSON.stringify(B.name)}:
|
|
100
|
-
`,Y+=` var ${H.result}${q} = ${W}_execs[${z}]._deserialize(${Q}, _opts);
|
|
101
|
-
`,Y+=t(J,Q,`${H.result}${q}`,U),Y+=` break;
|
|
102
|
-
`}if(Y+=` default: ${$.fail("invalidDiscriminator")};
|
|
103
|
-
`,Y+=`}
|
|
104
|
-
`,X.type.keepDiscriminatorProperty)Y+=`if (${H.out}[${JSON.stringify(J)}] != null) ${H.out}[${JSON.stringify(J)}][${M}] = ${H.disc}${q};
|
|
105
|
-
`}else{let B=(X.type.resolvedClass??X.type.fn())[V],P=j.length;if(j.push(B),X.type?.isArray||X.flags.validateNestedEach||X.validation.some((W)=>W.each)){let W=`${H.index}${q}`,F=Z.isAsync?"await ":"";Y+=`if (Array.isArray(${Q})) {
|
|
106
|
-
`;let L=X.validation.filter((_)=>!_.each);for(let _ of L){let D=K($,J,Q,_,Z),w=_.rule.emit(Q,D);Y+=` ${w}
|
|
107
|
-
`}if(Y+=` var ${H.arr}${q} = [];
|
|
108
|
-
`,Y+=` for (var ${W}=0; ${W}<${Q}.length; ${W}++) {
|
|
109
|
-
`,Y+=` var ${H.result}${q} = ${F}_execs[${P}]._deserialize(${Q}[${W}], _opts);
|
|
110
|
-
`,Y+=` if (_isErr(${H.result}${q})) {
|
|
111
|
-
`,U)Y+=` var ${H.errors}${q} = ${H.result}${q}.data;
|
|
112
|
-
`,Y+=` for (var ${H.nestedIdx}${q}=0; ${H.nestedIdx}${q}<${H.errors}${q}.length; ${H.nestedIdx}${q}++) {
|
|
113
|
-
`,Y+=` ${H.errList}.push({path:${JSON.stringify(J)}+'['+${W}+'].'+${H.errors}${q}[${H.nestedIdx}${q}].path,code:${H.errors}${q}[${H.nestedIdx}${q}].code});
|
|
114
|
-
`,Y+=` }
|
|
115
|
-
`;else Y+=` var ${H.errors}${q} = ${H.result}${q}.data;
|
|
116
|
-
`,Y+=` return _err([{path:${JSON.stringify(J)}+'['+${W}+'].'+${H.errors}${q}[0].path,code:${H.errors}${q}[0].code}]);
|
|
117
|
-
`;Y+=` } else { ${H.arr}${q}.push(${H.result}${q}); }
|
|
118
|
-
`,Y+=` }
|
|
119
|
-
`,Y+=` ${H.out}[${JSON.stringify(J)}] = ${H.arr}${q};
|
|
120
|
-
`,Y+=`} else { ${$.fail("isArray")}; }
|
|
121
|
-
`}else{let W=Z.isAsync?"await ":"";Y+=`if (${Q} != null && typeof ${Q} === 'object') {
|
|
122
|
-
`,Y+=` var ${H.result}${q} = ${W}_execs[${P}]._deserialize(${Q}, _opts);
|
|
123
|
-
`,Y+=t(J,Q,`${H.result}${q}`,U),Y+=`} else { ${$.fail("isObject")}; }
|
|
124
|
-
`}}return Y}function t(J,Q,X,Z){let $=h(J);if(Z)return` if (_isErr(${X})) {
|
|
125
|
-
var ${H.errors}${$} = ${X}.data;
|
|
126
|
-
for (var ${H.nestedIdx}${$}=0; ${H.nestedIdx}${$}<${H.errors}${$}.length; ${H.nestedIdx}${$}++) {
|
|
127
|
-
${H.errList}.push({path:${JSON.stringify(J+".")}+${H.errors}${$}[${H.nestedIdx}${$}].path,code:${H.errors}${$}[${H.nestedIdx}${$}].code});
|
|
128
|
-
}
|
|
129
|
-
} else { ${H.out}[${JSON.stringify(J)}] = ${X}; }
|
|
130
|
-
`;else return` if (_isErr(${X})) {
|
|
131
|
-
var ${H.errors}${$} = ${X}.data;
|
|
132
|
-
return _err([{path:${JSON.stringify(J+".")}+${H.errors}${$}[0].path,code:${H.errors}${$}[0].code}]);
|
|
133
|
-
} else { ${H.out}[${JSON.stringify(J)}] = ${X}; }
|
|
134
|
-
`}function KJ(J,Q){let{collectErrors:X,regexes:Z,refs:$,execs:U}=Q;return{addRegex(j){return Z.push(j),Z.length-1},addRef(j){return $.push(j),$.length-1},addExecutor(j){return U.push(j),U.length-1},fail(j){if(X)return`${H.errList}.push({path:${JSON.stringify(J)},code:${JSON.stringify(j)}})`;else return`return _err([{path:${JSON.stringify(J)},code:${JSON.stringify(j)}}])`},collectErrors:X}}function vJ(J,Q){let X=Q.find(($)=>$.serializeOnly&&$.name);if(X)return X.name;let Z=Q.find(($)=>!$.deserializeOnly&&!$.serializeOnly&&$.name);if(Z)return Z.name;return J}function XJ(J){let Q=J.filter((Z)=>!Z.deserializeOnly);if(Q.length===0)return;if(Q.some((Z)=>!Z.groups||Z.groups.length===0))return;let X=new Set;for(let Z of Q)for(let $ of Z.groups)X.add($);return[...X]}function ZJ(J,Q,X,Z){let $=[],U=[],j=`'use strict';
|
|
135
|
-
`;if(j+=`var __bk$out = {};
|
|
136
|
-
`,Object.values(Q).some((B)=>{let P=XJ(B.expose);return P&&P.length>0}))j+=`var __bk$groups = _opts && _opts.groups;
|
|
137
|
-
`,j+=`var __bk$groupsSet = __bk$groups ? new Set(__bk$groups) : null;
|
|
138
|
-
`;for(let[B,P]of Object.entries(Q))j+=EJ(B,P,$,U,Z,X);return j+=`return __bk$out;
|
|
139
|
-
`,j+=`//# sourceURL=baker://${J.name}/serialize
|
|
140
|
-
`,Function("_refs","_execs",`return ${Z?"async function":"function"}(instance, _opts) { `+j+" }")($,U)}function EJ(J,Q,X,Z,$,U){if(Q.exclude){if(!Q.exclude.deserializeOnly){if(U?.debug){let W=Q.exclude.serializeOnly?"serializeOnly":"bidirectional";return`// [baker] field "${J}" excluded (${W} @Exclude)
|
|
141
|
-
`}return""}}if(Q.expose.length>0&&Q.expose.every((W)=>W.deserializeOnly)){if(U?.debug)return`// [baker] field "${J}" excluded (all @Expose entries are deserializeOnly)
|
|
142
|
-
`;return""}let j=vJ(J,Q.expose),Y=XJ(Q.expose),q="",M="",B="";if(Y&&Y.length>0)M=`if (__bk$groupsSet && ${JSON.stringify(Y)}.some(function(g){return __bk$groupsSet.has(g);})) {
|
|
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);})) {
|
|
143
43
|
`,B=`}
|
|
144
|
-
|
|
145
|
-
`,
|
|
146
|
-
|
|
147
|
-
`;
|
|
148
|
-
`}return
|
|
149
|
-
`,
|
|
150
|
-
|
|
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);})) {
|
|
50
|
+
${J}
|
|
51
|
+
}
|
|
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});
|
|
53
|
+
`;case"number":return` ${J} = Number(${J});
|
|
54
|
+
if (isNaN(${J})) { ${q} }
|
|
55
|
+
`;case"boolean":return` if (${J} === 'true' || ${J} === '1' || ${J} === 1) ${J} = true;
|
|
56
|
+
else if (${J} === 'false' || ${J} === '0' || ${J} === 0) ${J} = false;
|
|
57
|
+
else { ${q} }
|
|
58
|
+
`;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}); }
|
|
118
|
+
`,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}++;
|
|
125
|
+
`,j+=` }
|
|
126
|
+
`}j+=`} else { ${Y.fail("isArray")}; }
|
|
127
|
+
`}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}); }
|
|
138
|
+
`,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}]);
|
|
143
|
+
`,j+=` }
|
|
144
|
+
`,j+=` ${U.out}[${JSON.stringify(Q)}] = ${U.arr}${Z};
|
|
145
|
+
`;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);
|
|
193
|
+
`,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) {
|
|
195
|
+
${L}
|
|
196
|
+
} else if (instance[${JSON.stringify(Q)}] === null) {
|
|
197
|
+
${B} = null;
|
|
198
|
+
}
|
|
199
|
+
`;else j=`if (instance[${JSON.stringify(Q)}] != null) {
|
|
200
|
+
${L}
|
|
201
|
+
} else {
|
|
202
|
+
${B} = instance[${JSON.stringify(Q)}];
|
|
203
|
+
}
|
|
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) {
|
|
151
211
|
`;L+=` var __bk$out_item;
|
|
152
|
-
`,L+=
|
|
153
|
-
`,L+="});"}else{let
|
|
154
|
-
`,L+=
|
|
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) {
|
|
155
215
|
${L}
|
|
156
|
-
} else if (instance[${JSON.stringify(
|
|
157
|
-
${
|
|
216
|
+
} else if (instance[${JSON.stringify(Q)}] === null) {
|
|
217
|
+
${W} = null;
|
|
158
218
|
}
|
|
159
|
-
`;else
|
|
219
|
+
`;else j=`if (instance[${JSON.stringify(Q)}] != null) {
|
|
160
220
|
${L}
|
|
161
221
|
} else {
|
|
162
|
-
${
|
|
222
|
+
${W} = instance[${JSON.stringify(Q)}];
|
|
163
223
|
}
|
|
164
|
-
`}else{let
|
|
165
|
-
`,
|
|
166
|
-
`,
|
|
167
|
-
`;else
|
|
168
|
-
`}return q+=M+P+B,q}function uJ(J,Q,X,Z,$){let U=`__bk$out[${JSON.stringify(Q)}]`,j=X.transform.filter((Y)=>!Y.options?.deserializeOnly);if(j.length>0){let Y=`instance[${JSON.stringify(J)}]`;for(let q of j){let M=Z.length;Z.push(q.fn);let B=`_refs[${M}]({value:${Y},key:${JSON.stringify(J)},obj:instance,type:'serialize'})`;Y=$&&S(q.fn)?`(await ${B})`:B}return`${U} = ${Y};`}return`${U} = instance[${JSON.stringify(J)}];`}function $J(J){let Q=new Set;function X(Z){if(Q.has(Z))return!0;Q.add(Z);let $=Z[b];if($)for(let U of Object.values($)){if(U.type?.fn){let j;try{j=U.type.fn()}catch(q){throw new T(`${Z.name}: type function threw: ${q.message}`)}let Y=Array.isArray(j)?j[0]:j;if(X(Y))return!0}if(U.type?.discriminator){for(let j of U.type.discriminator.subTypes)if(X(j.value))return!0}}return Q.delete(Z),!1}return X(J)}function YJ(J,Q){let X=Q?`${Q}.`:"";for(let[Z,$]of Object.entries(J)){for(let Y of $.expose)if(Y.deserializeOnly&&Y.serializeOnly)throw new T(`Invalid @Expose on field '${X}${Z}': cannot have both deserializeOnly:true and serializeOnly:true on the same @Expose entry. Use separate @Expose decorators for each direction.`);let U=$.expose.filter((Y)=>!Y.serializeOnly),j=$.expose.filter((Y)=>!Y.deserializeOnly);jJ(X+Z,U,"deserialize"),jJ(X+Z,j,"serialize")}}function jJ(J,Q,X){for(let Z=0;Z<Q.length;Z++)for(let $=Z+1;$<Q.length;$++){let U=Q[Z].groups??[],j=Q[$].groups??[];if(CJ(U,j)){let Y=new Set(j),q=U.length===0?[]:U.filter((M)=>Y.has(M));throw new T(`@Expose conflict on '${J}': 2 @Expose stacks with '${X}' direction and overlapping groups [${q.join(", ")}]. Each direction must have at most one @Expose per group set.`)}}}function CJ(J,Q){if(J.length===0&&Q.length===0)return!0;if(J.length===0||Q.length===0)return!1;return J.some((X)=>Q.includes(X))}var fJ=new Set(["__proto__","constructor","prototype"]),NJ=new Set([Number,String,Boolean,Date]);function pJ(J){let Q=`Circular dependency during seal: ${J} is still being sealed`;return{_deserialize(){throw new T(Q)},_serialize(){throw new T(Q)},_isAsync:!1,_isSerializeAsync:!1}}function f(J,Q,X){let Z=X??new Set;for(let $ of Object.values(J)){if(Q==="deserialize"&&$.validation.some((j)=>j.rule.isAsync))return!0;if((Q==="deserialize"?$.transform.filter((j)=>!j.options?.serializeOnly):$.transform.filter((j)=>!j.options?.deserializeOnly)).some((j)=>S(j.fn)))return!0;if($.type?.resolvedClass||$.type?.fn){let j;if($.type.resolvedClass)j=$.type.resolvedClass;else try{j=$.type.fn()}catch(Y){throw new T(`type function threw: ${Y.message}`)}if(!Z.has(j)){Z.add(j);let Y=E(j);if(f(Y,Q,Z))return!0}}if($.type?.discriminator){for(let j of $.type.discriminator.subTypes)if(!Z.has(j.value)){Z.add(j.value);let Y=E(j.value);if(f(Y,Q,Z))return!0}}}return!1}var n=!1;function d(){return n}var C=new Set;function xJ(){if(n)return;let J=y();try{for(let Q of G)N(Q,J)}catch(Q){for(let X of G)if(Object.hasOwn(X,V))delete X[V];throw Q}for(let Q of G)C.add(Q),Object.freeze(Q[b]);G.clear(),n=!0}function yJ(J){if(Object.hasOwn(J,V))return;if(!Object.hasOwn(J,b))return;let Q=new Set(C),X=y();N(J,X),C.add(J),Object.freeze(J[b]),G.delete(J);let Z=[...G].filter(($)=>Object.hasOwn($,V)&&!Q.has($));for(let $ of Z)C.add($),Object.freeze($[b]),G.delete($)}function p(J){let Q=J[V];if(!Q)xJ(),Q=J[V];if(!Q)yJ(J),Q=J[V];if(!Q)throw new T(`${J.name} has no @Field decorators`);return Q}function N(J,Q){if(Object.hasOwn(J,V))return;let X=pJ(J.name);J[V]=X;let Z=E(J);for(let M of Object.keys(Z))if(fJ.has(M))throw new T(`${J.name}: field name '${M}' is not allowed (reserved property name)`);for(let[M,B]of Object.entries(Z)){if(!B.type?.fn)continue;let P=B.type.fn(),z=Array.isArray(P),W=z?P[0]:P;if(W==null||typeof W!=="function")throw new T(`${J.name}: @Type/@Field type must return a constructor or [constructor], got ${String(W)}`);let F={...B.type,isArray:z};if(!NJ.has(W)){if(F.resolvedClass=W,!B.flags.validateNested||!B.flags.validateNestedEach){if(B.flags={...B.flags},!B.flags.validateNested)B.flags.validateNested=!0;if(z&&!B.flags.validateNestedEach)B.flags.validateNestedEach=!0}}Z[M]={...B,type:F}}YJ(Z,J.name);let $=$J(J);for(let M of Object.values(Z)){if(M.type?.resolvedClass)N(M.type.resolvedClass,Q);if(M.type?.discriminator)for(let B of M.type.discriminator.subTypes)N(B.value,Q)}let U=f(Z,"deserialize"),j=f(Z,"serialize"),Y=JJ(J,Z,Q,$,U),q=ZJ(J,Z,Q,j);Object.assign(X,{_deserialize:Y,_serialize:q,_isAsync:U,_isSerializeAsync:j,_merged:Z})}function E(J){let Q=[],X=J;while(X&&X!==Object){if(Object.hasOwn(X,b))Q.push(X);let $=Object.getPrototypeOf(X);X=$===X?null:$}let Z=Object.create(null);for(let $ of Q){let U=$[b];for(let[j,Y]of Object.entries(U))if(!Z[j])Z[j]={validation:[...Y.validation],transform:[...Y.transform],expose:[...Y.expose],exclude:Y.exclude,type:Y.type,flags:{...Y.flags},schema:typeof Y.schema==="function"?Y.schema:Y.schema?{...Y.schema}:null};else{let q=Z[j],M=Y;for(let z of M.validation)if(!q.validation.some((W)=>W.rule===z.rule))q.validation.push(z);if(q.transform.length===0&&M.transform.length>0)q.transform=[...M.transform];if(q.expose.length===0&&M.expose.length>0)q.expose=[...M.expose];if(q.exclude===null&&M.exclude!==null)q.exclude=M.exclude;if(q.type===null&&M.type!==null)q.type=M.type;let B=q.flags,P=M.flags;if(P.isOptional!==void 0&&B.isOptional===void 0)B.isOptional=P.isOptional;if(P.isDefined!==void 0&&B.isDefined===void 0)B.isDefined=P.isDefined;if(P.validateIf!==void 0&&B.validateIf===void 0)B.validateIf=P.validateIf;if(P.isNullable!==void 0&&B.isNullable===void 0)B.isNullable=P.isNullable;if(P.validateNested!==void 0&&B.validateNested===void 0)B.validateNested=P.validateNested;if(P.validateNestedEach!==void 0&&B.validateNestedEach===void 0)B.validateNestedEach=P.validateNestedEach;if(q.schema==null&&M.schema!=null)q.schema=typeof M.schema==="function"?M.schema:{...M.schema};else if(q.schema!=null&&M.schema!=null){if(typeof q.schema==="function");else if(typeof M.schema==="function");else for(let[z,W]of Object.entries(M.schema))if(!(z in q.schema))q.schema[z]=W}}}return Z}async function mJ(J,Q,X){let $=await p(J)._deserialize(Q,X);if(nJ($))throw new u($.data,J.name);return $}async function cJ(J,Q){let X=J.constructor;return await p(X)._serialize(J,Q)}var qJ=new Set,oJ=new Set(["allOf","anyOf","oneOf","not","if","then","else"]),iJ={isString:()=>({type:"string"}),isNumber:()=>({type:"number"}),isInt:()=>({type:"integer"}),isBoolean:()=>({type:"boolean"}),isDate:()=>({type:"string",format:"date-time"}),isArray:()=>({type:"array"}),isObject:()=>({type:"object"}),isEnum:(J)=>({enum:J.values}),isIn:(J)=>({enum:J.values}),equals:(J)=>({const:J.value}),notEquals:(J)=>({not:{const:J.value}}),isNotIn:(J)=>({not:{enum:J.values}}),min:(J)=>J.exclusive?{exclusiveMinimum:J.min}:{minimum:J.min},max:(J)=>J.exclusive?{exclusiveMaximum:J.max}:{maximum:J.max},isPositive:()=>({exclusiveMinimum:0}),isNegative:()=>({exclusiveMaximum:0}),isDivisibleBy:(J)=>({multipleOf:J.divisor}),minLength:(J)=>({minLength:J.min}),maxLength:(J)=>({maxLength:J.max}),length:(J)=>({minLength:J.min,maxLength:J.max}),matches:(J)=>({pattern:J.pattern}),isEmail:()=>({format:"email"}),isURL:()=>({format:"uri"}),isUUID:()=>({format:"uuid"}),isISO8601:()=>({format:"date-time"}),isIP:(J)=>{if(J.version===4)return{format:"ipv4"};if(J.version===6)return{format:"ipv6"};return null},arrayMinSize:(J)=>({minItems:J.min}),arrayMaxSize:(J)=>({maxItems:J.max}),arrayUnique:()=>({uniqueItems:!0}),arrayNotEmpty:()=>({minItems:1}),arrayContains:(J)=>({contains:{enum:J.values}}),isNotEmptyObject:()=>({minProperties:1})};function lJ(J,Q){let X={direction:Q?.direction??"deserialize",groups:Q?.groups,whitelist:Q?.whitelist,processing:new Set,defKeyMap:new Map,defs:{},nameCounter:new Map,onUnmappedRule:Q?.onUnmappedRule};X.processing.add(J);let Z=BJ(J,X);if(X.processing.delete(J),X.defKeyMap.has(J))X.defs[X.defKeyMap.get(J)]=Z;let $={...Z};if($.$schema="https://json-schema.org/draft/2020-12/schema",Object.keys(X.defs).length>0)$.$defs=X.defs;let U=J[MJ];if(U)for(let[j,Y]of Object.entries(U))if(j==="properties"||j==="$defs")$[j]={...$[j]??{},...Y};else if(j==="required")$.required=[...new Set([...$.required??[],...Y])];else $[j]=Y;if(Q?.title)$.title=Q.title;if(Q?.description)$.description=Q.description;if(Q?.$id)$.$id=Q.$id;return $}function UJ(J,Q){let X=Q.defKeyMap.get(J);if(X!==void 0)return X;let Z=J.name||"Anonymous",$=Q.nameCounter.get(Z)??0;Q.nameCounter.set(Z,$+1);let U=$===0?Z:`${Z}_${$+1}`;return Q.defKeyMap.set(J,U),U}function HJ(J,Q){let X=Q.defKeyMap.get(J);if(X!==void 0&&X in Q.defs)return{$ref:`#/$defs/${X}`};if(Q.processing.has(J))return{$ref:`#/$defs/${UJ(J,Q)}`};let Z=UJ(J,Q);Q.processing.add(J);let $=BJ(J,Q);return Q.processing.delete(J),Q.defs[Z]=$,{$ref:`#/$defs/${Z}`}}function BJ(J,Q){let Z=J[V]?._merged??E(J),$={},U=[];for(let[Y,q]of Object.entries(Z)){let M=dJ(q,Y,Q.direction);if(M===null)continue;if(Q.groups){let P=q.expose.filter((z)=>{if(Q.direction==="deserialize"&&z.serializeOnly)return!1;if(Q.direction==="serialize"&&z.deserializeOnly)return!1;return!0});if(P.length>0){if(!P.some((W)=>{if(!W.groups||W.groups.length===0)return!0;return W.groups.some((F)=>Q.groups.includes(F))}))continue}else if(q.validation.length>0&&q.validation.every((z)=>z.groups&&z.groups.length>0)){if(!q.validation.some((W)=>W.groups.some((F)=>Q.groups.includes(F))))continue}}let B=sJ(q,Q,Y);if($[M]=B,!q.flags.isOptional)U.push(M)}let j={type:"object",properties:$};if(U.length>0)j.required=U;if(Q.whitelist)j.unevaluatedProperties=!1;return j}function dJ(J,Q,X){if(J.exclude){if(!J.exclude.deserializeOnly&&!J.exclude.serializeOnly)return null;if(X==="deserialize"&&!J.exclude.serializeOnly)return null;if(X==="serialize"&&!J.exclude.deserializeOnly)return null}return J.expose.find(($)=>{if(X==="deserialize"&&$.serializeOnly)return!1;if(X==="serialize"&&$.deserializeOnly)return!1;return!0})?.name??Q}function sJ(J,Q,X){if(J.type)return rJ(J,Q,X);let Z=m(J.validation.filter((j)=>!j.each),Q.groups),$=m(J.validation.filter((j)=>j.each),Q.groups),U=c(Z,Q,X);if($.length>0){let j=c($,Q,X);if(Object.keys(j).length>0)U.items=j}if(J.flags.isNullable)o(U);return i(J,U)}function rJ(J,Q,X){let Z;if(J.type.discriminator){let{property:U,subTypes:j}=J.type.discriminator;Z={oneOf:j.map((q)=>{return{allOf:[HJ(q.value,Q),{properties:{[U]:{const:q.name}},required:[U]}]}})}}else{let U=J.type.resolvedClass??J.type.fn();Z=HJ(U,Q)}if(J.type?.isArray||J.flags.validateNestedEach){let U={type:"array",items:Z},j=m(J.validation.filter((q)=>!q.each),Q.groups),Y=c(j,Q,X);if(Y.minItems!==void 0)U.minItems=Y.minItems;if(Y.maxItems!==void 0)U.maxItems=Y.maxItems;if(Y.uniqueItems!==void 0)U.uniqueItems=Y.uniqueItems;if(J.flags.isNullable)o(U);return i(J,U)}if(J.flags.isNullable)if(Z.$ref)Z={oneOf:[Z,{type:"null"}]};else if(Z.oneOf)Z={oneOf:[...Z.oneOf,{type:"null"}]};else o(Z);return i(J,Z)}function m(J,Q){if(!Q)return J;return J.filter((X)=>{if(!X.groups||X.groups.length===0)return!0;return X.groups.some((Z)=>Q.includes(Z))})}function c(J,Q,X){let Z={};for(let $ of J){let U=iJ[$.rule.ruleName];if(!U){let Y=$.rule.ruleName;if(Q?.onUnmappedRule)Q.onUnmappedRule(Y,X??"<unknown>");else if(!qJ.has(Y))qJ.add(Y),console.warn(`[baker] No JSON Schema mapping for rule "${Y}"`);continue}let j=U($.rule.constraints??{});if(!j)continue;Object.assign(Z,j)}return Z}function o(J){if(J.type)if(Array.isArray(J.type)){if(!J.type.includes("null"))J.type=[...J.type,"null"]}else J.type=J.type==="null"?["null"]:[J.type,"null"];else J.type=["null"]}function i(J,Q){if(J.schema==null)return Q;if(typeof J.schema==="function")return J.schema(Q);let X=J.schema;return Object.keys(X).some(($)=>oJ.has($))?{...Q,...X}:{...Q,...X}}function tJ(J,Q){let X=typeof J==="string"?J:J.name,Z=typeof J==="string"?Q:J.validate,$=typeof J==="object"?J.constraints:void 0,U=typeof J==="object"?J.requiresType:void 0,j=S(Z),Y=function(q){return Z(q)};if(Y.emit=function(q,M){let B=M.addRef(Z);if(j)return`if(!(await _refs[${B}](${q}))) ${M.fail(X)};`;return`if(!_refs[${B}](${q})) ${M.fail(X)};`},Y.ruleName=X,Y.isAsync=j,$)Y.constraints=$;if(U)Y.requiresType=U;return Y}export{lJ as toJsonSchema,cJ as serialize,mJ as deserialize,tJ as createRule,LJ as configure,aJ as arrayOf,T as SealError,eJ as Field,u as BakerValidationError};
|
|
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};
|
|
169
229
|
|
|
170
|
-
//# debugId=
|
|
230
|
+
//# debugId=38F7CB290623284064756E2164756E21
|
|
171
231
|
//# sourceMappingURL=index.js.map
|
package/dist/src/collect.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { RawPropertyMeta, RuleDef, TransformDef, ExposeDef, ExcludeDef, TypeDef } from './types';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* -
|
|
5
|
-
* -
|
|
3
|
+
* Returns the RawPropertyMeta for the given propertyKey on ctor.
|
|
4
|
+
* - Creates with default values if it doesn't exist.
|
|
5
|
+
* - Automatically registers ctor in the global registry (registered if at least one decorator exists).
|
|
6
6
|
*/
|
|
7
7
|
export declare function ensureMeta(ctor: Function, key: string): RawPropertyMeta;
|
|
8
8
|
export declare function collectValidation(target: object, key: string, ruleDef: RuleDef): void;
|
|
@@ -10,5 +10,3 @@ export declare function collectTransform(target: object, key: string, transformD
|
|
|
10
10
|
export declare function collectExpose(target: object, key: string, exposeDef: ExposeDef): void;
|
|
11
11
|
export declare function collectExclude(target: object, key: string, excludeDef: ExcludeDef): void;
|
|
12
12
|
export declare function collectType(target: object, key: string, typeDef: TypeDef): void;
|
|
13
|
-
export declare function collectSchema(target: object, key: string, schemaDef: Record<string, unknown> | ((auto: Record<string, unknown>) => Record<string, unknown>)): void;
|
|
14
|
-
export declare function collectClassSchema(target: Function, schema: Record<string, unknown>): void;
|
package/dist/src/configure.d.ts
CHANGED
|
@@ -1,33 +1,27 @@
|
|
|
1
1
|
import type { SealOptions } from './interfaces';
|
|
2
2
|
export interface BakerConfig {
|
|
3
|
-
/**
|
|
3
|
+
/** Automatic type conversion ("123" → 123). @default false */
|
|
4
4
|
autoConvert?: boolean;
|
|
5
|
-
/**
|
|
5
|
+
/** Use class default values when key is missing from input. @default false */
|
|
6
6
|
allowClassDefaults?: boolean;
|
|
7
|
-
/**
|
|
7
|
+
/** Stop at first error. @default false */
|
|
8
8
|
stopAtFirstError?: boolean;
|
|
9
|
-
/**
|
|
9
|
+
/** Reject undeclared fields with an error. @default false */
|
|
10
10
|
forbidUnknown?: boolean;
|
|
11
|
-
/**
|
|
12
|
-
* @deprecated `forbidUnknown`으로 이름이 변경됨. 이 옵션은 실제로 unknown 필드를
|
|
13
|
-
* 조용히 제거하는 것이 아니라 에러를 발생시킴. `forbidUnknown`을 사용할 것.
|
|
14
|
-
* `forbidUnknown`이 명시되면 `stripUnknown`은 무시됨.
|
|
15
|
-
*/
|
|
16
|
-
stripUnknown?: boolean;
|
|
17
|
-
/** 생성 코드에 필드 제외 사유를 주석으로 포함. @default false */
|
|
11
|
+
/** Include field exclusion reasons as comments in generated code. @default false */
|
|
18
12
|
debug?: boolean;
|
|
19
13
|
}
|
|
20
14
|
export interface ConfigureResult {
|
|
21
15
|
warnings: string[];
|
|
22
16
|
}
|
|
23
17
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
18
|
+
* Baker global configuration. Call before the first auto-seal.
|
|
19
|
+
* If not called, defaults are applied.
|
|
26
20
|
*
|
|
27
|
-
* @returns `{ warnings }` —
|
|
21
|
+
* @returns `{ warnings }` — contains warning messages if called after seal.
|
|
28
22
|
*/
|
|
29
23
|
export declare function configure(config: BakerConfig): ConfigureResult;
|
|
30
|
-
/** @internal — seal
|
|
24
|
+
/** @internal — used by seal */
|
|
31
25
|
export declare function _getGlobalOptions(): SealOptions;
|
|
32
|
-
/** @internal —
|
|
26
|
+
/** @internal — reset to defaults on unseal */
|
|
33
27
|
export declare function _resetConfigForTesting(): void;
|