@tsed/json-mapper 7.68.1 → 7.68.2

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.
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@tsed/core"),require("@tsed/schema")):"function"==typeof define&&define.amd?define(["@tsed/core","@tsed/schema"],t):"object"==typeof exports?exports["@tsed/json-mapper"]=t(require("@tsed/core"),require("@tsed/schema")):e["@tsed/json-mapper"]=t(e["@tsed/core"],e["@tsed/schema"])}(self,((__WEBPACK_EXTERNAL_MODULE__803__,__WEBPACK_EXTERNAL_MODULE__953__)=>(()=>{"use strict";var __webpack_modules__={405:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{S:()=>JsonMapperCompiler});var _tsed_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(803),_tsed_core__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_tsed_core__WEBPACK_IMPORTED_MODULE_0__);class JsonMapperCompiler{cache=new Map;mappers={};schemes={};constructors={};globals={isCollection:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isCollection,isClass:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isClass,isObject:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isObject,classOf:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.classOf,nameOf:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.nameOf,hasJsonMethod:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.hasJsonMethod,isMongooseObject:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isMongooseObject,isNil:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isNil,isDate:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isDate,objectKeys:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.objectKeys,isMomentObject:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isMomentObject};constructor(){this.addGlobal("alterIgnore",this.alterIgnore.bind(this)),this.addGlobal("alterValue",this.alterValue.bind(this)),this.addGlobal("execMapper",this.execMapper.bind(this)),this.addGlobal("compileAndMap",this.map.bind(this))}addTypeMapper(e,t){const r=(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.nameOf)(e);return this.cache.set(e,(new Map).set("typeMapper",{id:r,fn:t})),this.mappers[r]=t,this}removeTypeMapper(e){const t=this.cache.get(e);if(t){const{id:r}=t.get("typeMapper");delete this.mappers[r],this.cache.delete(e)}}addGlobal(e,t){return this.globals[e]=t,this}eval(mapper,{id,groupsId,model}){this.addGlobal("cache",this.cache);const{globals,schemes}=this,injectGlobals=Object.keys(globals).map((e=>`const ${e} = globals.${e};`)).join("\n");eval(`${injectGlobals};\n\n cache.get(model).set(groupsId, { id: '${id}', fn: ${mapper} })`);const store=this.cache.get(model).get(groupsId);return this.mappers[id]=store.fn,store}createContext(e){const{cache:t}=this;return{...e,cache:t}}compile(e,t,r={}){const s=(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isString)(e)?e:this.getType(e),i=this.getGroupsId(t);let n=this.cache.get(s)||this.cache.get((0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.nameOf)(s));if(n||(n=new Map,this.cache.set(s,n)),n.has("typeMapper"))return n.get("typeMapper");if(!n.has(i)){const o=this.getId(s,i);n.set(i,{id:o});const a=r.mapper?r.mapper(o,t):this.createMapper(s,o,t);try{return this.eval(a,{id:o,model:s,groupsId:i})}catch(t){throw new Error(`Fail to compile mapper for ${(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.nameOf)(e)}. See the error above: ${t.message}.\n${a}`)}}return n.get(i)}execMapper(e,t,r){return(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isObjectID)(t)?t.toString():this.mappers[e](t,r)}getType(e){if(!e)return Object;if((0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isClass)(e)&&!(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isCollection)(e)){const t=[Array,Map,Set].find((t=>(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.ancestorsOf)(e).includes(t)));if(t)return t}return e}alterIgnore(e,t){let r=this.schemes[e]?.$hooks?.alter("ignore",!1,[t]);if(r)return r}alterGroups(e,t){return!1!==t&&e.$hooks.alter("groups",!1,[t])}getGroupsId(e){return!1===e?"default":0===e.length?"-":e.join(",")}getId(e,t){return`${(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isString)(e)?e:(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.nameOf)(e)}:${(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.getRandomId)()}:${t}`}getSchemaId(e,t){return`${e}:${t}`}}},803:e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__803__},953:e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__953__}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};return(()=>{function e(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o}__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{AfterDeserialize:()=>u,BeforeDeserialize:()=>d,CastError:()=>p,DateMapper:()=>o,JsonDeserializer:()=>P,JsonMapper:()=>n,JsonMapperCompiler:()=>g.S,JsonMapperSettings:()=>O,JsonSerializer:()=>A,OnDeserialize:()=>h,OnSerialize:()=>m,PrimitiveMapper:()=>c,SymbolMapper:()=>_,Writer:()=>y,alterAfterDeserialize:()=>f,alterBeforeDeserialize:()=>b,alterOnDeserialize:()=>M,alterOnSerialize:()=>S,deserialize:()=>I,getJsonMapperTypes:()=>i,getObjectProperties:()=>w,registerJsonTypeMapper:()=>s,serialize:()=>C}),Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var t=__webpack_require__(803);const r=new Map;function s(e,t){r.set(e,new t)}function i(){return r}function n(...e){return t=>{e.forEach((e=>{s(e,t)}))}}let o=class{deserialize(e){return(0,t.isBoolean)(e)||null==e?e:new Date(e)}serialize(e){return e?new Date(e).toISOString():e}};function a(e){return[null,"null"].includes(e)}o=e([n(Date)],o);class p extends Error{name="CAST_ERROR";constructor(e){super(`Cast error. ${e}`)}}let c=class{deserialize(e,r){return this[(0,t.nameOf)(r.type)]?this[(0,t.nameOf)(r.type)](e,r):void 0}serialize(e){return e}String(e){return null===e?null:""+e}Boolean(e){return!!["true","1",!0].includes(e)||!["false","0",!1].includes(e)&&(a(e)?null:void 0!==e?!!e:void 0)}Number(e){if(a(e))return null;const t=+e;if(isNaN(t))throw new p("Expression value is not a number.");return t}BigInt(e){return a(e)?null:BigInt(e)}};c=e([n(String,Number,Boolean,BigInt)],c);let _=class{deserialize(e){return Symbol.for(e)}serialize(e){return e.toString().replace("Symbol(","").replace(")","")}};_=e([n(Symbol)],_);var l=__webpack_require__(953);function u(e){return(0,l.JsonEntityFn)((t=>{t.schema.$hooks.on("afterDeserialize",e)}))}function d(e){return(0,l.JsonEntityFn)((t=>{t.schema.$hooks.on("beforeDeserialize",e)}))}function h(e){return(0,l.JsonEntityFn)((t=>{t.schema.$hooks.on("onDeserialize",e)}))}function m(e){return(0,l.JsonEntityFn)((t=>{t.schema.$hooks.on("onSerialize",e)}))}function f(e,t,r){return t?.$hooks?.alter("afterDeserialize",e,[r])}function b(e,t,r){return t?.$hooks?.alter("beforeDeserialize",e,[r])}function M(e,t,r){return e.$hooks.alter("onDeserialize",t,[r])}var g=__webpack_require__(405);const O={disableUnsecureConstructor:!0,additionalProperties:!1};class y{static object={assign:(...e)=>`{ ${e.filter(Boolean).join(", ")} }`};_root;body=[];_indent;constructor(e){this._root=e}static indent(e){return e.map((e=>`\t${e}`))}static mapper(e,t,r){return`execMapper('${e}', ${t}, ${r})`}static mapperFrom(e,t){return`execMapper(nameOf(classOf(${e})), ${e}, ${t})`}static options(...e){return(e=e.filter(Boolean)).length?y.object.assign("...options",...e):"options"}add(...e){return(e=e.filter((e=>void 0!==e))).length&&this.body.push(...e),this}arrow(...e){this.add(`(${e}) => {`);const t=this.new();return this.add("}"),t}build(){const e=this.body.flatMap((e=>e instanceof y?e.build():e));return this._indent?e.map((e=>"\t"+e)):e}callMapper(e,t,...r){return this.set(t,y.mapper(e,t,y.options(...r)))}returnCallMapper(e,t,...r){return this.return(y.mapper(e,t,y.options(...r)))}const(e,t){return this.add(`const ${e} = ${t};`),this}each(e,t=[]){const r=this.add(e+".forEach(("+t.join(", ")+") => {").new();return this.add("});"),r}if(e){const t=new $(e,this);return this.add(t),t}switch(e){const t=new E(e);return this.add(t),t}indent(e){return this._indent=e,this}new(e=!0){const t=new y(this.root());return t.indent(e),this.add(t),t}return(e){return this.add(`return ${e};`),this.root()}root(){return this._root||this}set(e,t){return this.add(`${e} = ${t};`),this}toString(){return this.build().join("\n")}}class $ extends y{condition;elseWriter;constructor(e,t){super(),this.condition=e,this._root=t}else(){const e=new y(this._root);return this.elseWriter=e,e}build(){return[`if (${this.condition}) {`,...y.indent(super.build()),"}",this.elseWriter?["else {",...y.indent(this.elseWriter.build()),"}"]:[]].flat()}}class E extends y{input;#e=new Map;constructor(e){super(),this.input=e}case(e){const t=new y;return this.#e.set(e,t),t}build(){return[`switch (${this.input}) {`,...y.indent(Array.from(this.#e.entries()).flatMap((([e,t])=>["default"===e?`${e}:`:`case ${e}:`,...y.indent(t.build())]))),"}"].flat()}}function D(e){return`__${e}`}class P extends g.S{constructors={};constructor(){super(),this.addGlobal("newInstanceOf",this.newInstanceOf.bind(this)),this.addGlobal("alterBeforeDeserialize",this.alterBeforeDeserialize.bind(this)),this.addGlobal("alterAfterDeserialize",this.alterAfterDeserialize.bind(this)),this.addTypeMapper(Object,this.mapObject.bind(this)),this.addTypeMapper(Array,this.mapArray.bind(this)),this.addTypeMapper(Map,this.mapMap.bind(this)),this.addTypeMapper(Set,this.mapSet.bind(this)),this.addTypeMapper("ObjectId",(e=>String(e)))}map(e,r={}){if(!function(e,r){return!(r.collectionType&&(0,t.isNil)(e)||void 0===e||(0,t.isEmpty)(r.type)||r.type===Object&&!r.collectionType)}(e,r=this.mapOptions(r)))return e;!r.collectionType&&(0,t.isArray)(e)&&(r.collectionType=Array);const s=r.type||(0,t.classOf)(e),i=this.compile(s,r.groups);return r.collectionType?this.compile(r.collectionType,r.groups).fn(e,{...r,id:i.id}):i.fn(e,this.createContext(r))}compile(e,r){if([WeakMap,WeakSet].includes(e))throw new Error(`${(0,t.nameOf)(e)} is not supported by JsonMapper.`);return super.compile(e,r)}eval(e,{id:t,groupsId:r,model:s}){return this.constructors[t]=s,super.eval(e,{id:t,groupsId:r,model:s})}newInstanceOf(e,t,r){try{return new this.constructors[e](r.disableUnsecureConstructor?{}:t)}catch(e){return t}}createMapper(e,r,s){const i=l.JsonEntityStore.from(e),n=new Set,o=[...(0,l.getPropertiesStores)(i).values()],a=(new y).arrow("input","options");return a.if("isNil(input)").return("input"),i.schema.hasDiscriminator&&a.add(this.mapDiscriminator(i,s)),i.schema.$hooks?.has("beforeDeserialize")&&(this.schemes[r]=i.schema,a.set("input",`alterBeforeDeserialize('${r}', input, options)`)),a.const("generics","options.generics[0]"),i.schema.genericLabels?.length?a.set("options","{...options, self: input, generics: [...options.generics].slice(1)}"):a.set("options","{...options, self: input}"),a.const("obj",`newInstanceOf('${r}', input, options)`),a.add(...o.flatMap((e=>{const i=e.propertyName;if(n.add(String(e.parent.schema.getAliasOf(i)||i)),!(e.schema?.$ignore&&(0,t.isBoolean)(e.schema?.$ignore)||e.isGetterOnly()||e.schema?.$hooks?.has("groups")&&this.alterGroups(e.schema,s)))return this.mapProperty(e,r,s)}))),a.add(this.mapAdditionalProperties(i,n,s)),i.schema.$hooks?.has("afterDeserialize")?(this.schemes[r]=i.schema,a.return(`alterAfterDeserialize('${r}', obj, options)`).root().toString()):a.return("obj").root().toString()}alterValue(e,t,r){return M(this.schemes[e],t,r)}mapDiscriminator(e,t){const r=new y,s=e.schema.discriminator(),i=r.switch(`input['${s.propertyName}']`);return s.values.forEach(((e,r)=>{const s=this.compile(e,t);i.case(`'${r}'`).returnCallMapper(s.id,"input")})),r}mapProperty(e,t,r){const s=String(e.propertyKey),i=String(e.parent.schema.getAliasOf(s)||s),n=this.getSchemaId(t,s),o=e.itemSchema.get("format"),a=o&&`options: {format: '${o}'}`;let p=(new y).add(`// Map ${s} ${t} ${r||""}`);const c=s!==i?`options.useAlias ? '${i}' : '${s}'`:`'${s}'`;e.schema?.$hooks?.has("ignore")&&(this.schemes[n]=e.schema,p=p.if(`!alterIgnore('${n}', {...options, self: input})`));const _=e.schema?.$hooks?.has("onDeserialize");let l=`input[${c}]`;_&&(this.schemes[n]=e.schema,l=`alterValue('${n}', input[${c}], ${y.options(a)})`);const u=p.set(`let ${D(s)}`,l).if(`${D(s)} !== undefined`);return this.getPropertyFiller(e,t,r,a)(_?u.if(`${D(s)} === input.${s}`):u),u.set(`obj.${s}`,D(s)),r&&r.includes("partial")&&u.else().add(`delete obj.${s}`),p.root()}getPropertyFiller(e,r,s,i){const n=String(e.propertyKey),o=this.getSchemaId(r,n),a=e.itemSchema.nestedGenerics;if(e.itemSchema.isGeneric&&!a?.length){const t=function(e){return e.parent.schema.genericLabels.indexOf(e.itemSchema.genericType)}(e),r=y.options(i,`type: generics[${t}]`);return e=>e.set(D(n),`compileAndMap(${D(n)}, ${r})`)}const p=e.itemSchema.hasDiscriminator?e.itemSchema.discriminator().base:e.getBestType(),c=this.compile(p,s);return e.isCollection?r=>r.callMapper((0,t.nameOf)(e.collectionType),D(n),`id: '${c.id}'`,i):a?.length?(this.schemes[o]=e.schema,e=>e.callMapper(c.id,D(n),i,`generics: schemes['${o}'].nestedGenerics`)):e=>e.callMapper(c.id,D(n),i)}mapOptions({groups:e=!1,useAlias:r=!0,types:s,...n}){return n.store instanceof l.JsonParameterStore?this.mapOptions(function(e,t){return{...t,store:void 0,type:e.getBestType(),collectionType:e.collectionType,groups:e.parameter.groups,generics:e.nestedGenerics}}(n.store,n)):((s=s||i()).forEach(((e,r)=>{if(![Array,Set,Map].includes(r)){const s=(0,t.nameOf)(r);(0,t.nameOf)(r)in e?this.addTypeMapper(r,e[s].bind(e)):this.addTypeMapper(r,((t,s)=>e.deserialize(t,{...s,type:r})))}})),{...n,additionalProperties:(0,t.getValue)(n,"additionalProperties",O.additionalProperties),disableUnsecureConstructor:(0,t.getValue)(n,"disableUnsecureConstructor",O.disableUnsecureConstructor),groups:e,useAlias:r,customMappers:{},generics:n.generics||[]})}mapAdditionalProperties(e,r,s){const i=e.schema.get("additionalProperties"),n=[...r.values()].map((e=>`'${e}'`)).join(", "),o=new y;o.add("// add additional properties");let a=o.each("objectKeys(input)",["key"]);if(n.length&&(a=a.if(`![${n}].includes(key)`)),(0,t.isClass)(i)){const e=this.compile(i.getComputedType(),s);return a.set("obj[key]",y.mapper(e.id,"input[key]","options")),o}return i?(a.set("obj[key]","input[key]"),o):(a.if("options.additionalProperties && obj[key] === undefined").set("obj[key]","input[key]"),o)}mapObject(e,t){return e}mapSet(e,r){if((0,t.isNil)(e))return e;const s=new Set;return(0,t.objectKeys)(e).forEach((t=>{s.add(this.mapItem(e[t],r))})),s}mapArray(e,r){return(0,t.isNil)(e)?e:[].concat(e).map((e=>this.mapItem(e,r)))}mapMap(e,r){if((0,t.isNil)(e))return e;const s=new Map;return(0,t.objectKeys)(e).forEach((t=>{s.set(t,this.mapItem(e[t],r))})),s}mapItem(e,{id:t,...r}){return this.execMapper(t,e,r)}alterBeforeDeserialize(e,t,r){return b(t,this.schemes[e],r)}alterAfterDeserialize(e,t,r){return f(t,this.schemes[e],r)}}function S(e,t,r){return e.$hooks.alter("onSerialize",t,[r])}function w(e){return Object.entries(e).filter((([,e])=>!(0,t.isFunction)(e)))}function j(e){return`__${e}`}class A extends g.S{constructor(){super(),this.addTypeMapper(Object,this.mapObject.bind(this)),this.addTypeMapper(Array,this.mapArray.bind(this)),this.addTypeMapper(Map,this.mapMap.bind(this)),this.addTypeMapper(Set,this.mapSet.bind(this)),this.addGlobal("mapJSON",this.mapJSON.bind(this)),this.addTypeMapper("ObjectId",(e=>String(e)))}map(e,r={}){if((0,t.isNil)(e))return e;const s=function(e,r){const s=(0,t.classOf)(r);return!s||(0,t.isClassObject)(s)||(0,t.isCollection)(r)?e||Object:s}((r=this.mapOptions(r)).type,e);return this.compile(s,r.groups).fn(e,this.createContext(r))}alterValue(e,t,r){return S(this.schemes[e],t,r)}createMapper(e,r,s){const i=l.JsonEntityStore.from(e),n=new Set,o=[...(0,l.getPropertiesStores)(i).values()],a=(new y).arrow("input","options");return a.if("isNil(input)").return("input"),a.const("obj","{}"),a.set("options","{...options, self: input}"),a.add(this.mapPrecondition(r)),o.length?(a.add(...o.flatMap((e=>{if(n.add(e.propertyKey),!(e.schema?.$ignore&&(0,t.isBoolean)(e.schema?.$ignore)||e.schema?.$hooks?.has("groups")&&this.alterGroups(e.schema,s)))return this.mapProperty(e,r,s)}))),a.add(this.mapDiscriminatorKeyValue(i)),a.add(this.mapAdditionalProperties(i,n)),a.return("obj").root().toString()):a.return("isObject(input) ? {...input} : input").root().toString()}mapOptions({groups:e=!1,useAlias:t=!0,types:r,...s}){return(r=r||i()).forEach(((e,t)=>{[Array,Set,Map].includes(t)||this.addTypeMapper(t,e.serialize.bind(e))})),{...s,groups:e,useAlias:t,customMappers:{}}}mapProperty(e,t,r){const s=String(e.propertyKey),i=String(e.parent.schema.getAliasOf(s)||s),n=this.getSchemaId(t,s),o=e.itemSchema.get("format"),a=o&&`options: {format: '${o}'}`;let p=(new y).add(`// Map ${s} ${t} ${r||""}`);e.schema?.$hooks?.has("ignore")&&(this.schemes[n]=e.schema,p=p.if(`!alterIgnore('${n}', {...options, self: input})`));const c=e.schema?.$hooks?.has("onSerialize");let _=`input.${s}`;c&&(this.schemes[n]=e.schema,_=`alterValue('${n}', input.${s}, ${y.options(a)})`),p=p.set(`let ${j(s)}`,_).if(`${j(s)} !== undefined`);return this.getPropertyFiller(e,s,r,a)(c?p.if(`${j(s)} === input.${s}`):p),i!==s?p.set(`obj[options.useAlias ? '${i}' : '${s}']`,j(s)):p.set(`obj.${s}`,j(s)),p.root()}getPropertyFiller(e,r,s,i){const n=e.itemSchema.isGeneric,o=e.itemSchema.hasDiscriminator;if(e.isCollection){const a=e.getBestType();let p;if(o){const t=e.parent.targetName;p=this.compile(`Discriminator:${t}:${r}`,s,{mapper:()=>this.createDiscriminatorMapper(e,s)})}else p=n?{id:""}:this.compile(a,s);return s=>s.callMapper((0,t.nameOf)(e.collectionType),j(r),`id: '${p.id}'`,i)}if(n)return e=>e.set(j(r),`compileAndMap(${j(r)}, options)`);let a;if(o){const t=e.parent.targetName;a=this.compile(`Discriminator:${t}:${r}`,s,{mapper:()=>this.createDiscriminatorMapper(e,s)})}else a=this.compile(e.getBestType(),s);return e=>e.callMapper(a.id,j(r),i)}createDiscriminatorMapper(e,r){const s=e.itemSchema.discriminator(),i=(new y).arrow("input","options"),n=i.switch("nameOf(classOf(input))");return s.values.forEach(((e,s)=>{const i=this.compile(e,r);n.case(`'${(0,t.nameOf)(e)}'`).returnCallMapper(i.id,"input")})),i.root().toString()}mapPrecondition(e){const t=new y;return t.if("input && isCollection(input)").return(y.mapperFrom("input",`{...options, id: '${e}'}`)),t.if("hasJsonMethod(input)").return(`mapJSON(input, {...options, id: '${e}'})`),t}mapDiscriminatorKeyValue(e){if(e.discriminatorAncestor){const t=e.discriminatorAncestor.schema.discriminator(),r=t.getDefaultValue(e.target);if(r){const e=new y;return e.if(`!obj.${t.propertyName}`).set(`obj.${t.propertyName}`,`'${r}'`),e}}}mapAdditionalProperties(e,t){if(e.schema.get("additionalProperties")){const e=[...t.values()].map((e=>`'${e}'`)).join(", "),r=new y;return r.add("// add additional properties"),r.each("objectKeys(input)",["key"]).if(`![${e}].includes(key)`).set("obj[key]","input[key]"),r}}mapObject(e,{type:r,...s}){return e&&(0,t.isPrimitive)(e)||!e?e:e&&(0,t.isCollection)(e)?this.execMapper((e=>(0,t.isArray)(e)?"Array":e instanceof Set?"Set":e instanceof Map?"Map":void 0)(e),e,s):(0,t.hasJsonMethod)(e)?this.mapJSON(e,s):w(e).filter((([,e])=>void 0!==e)).reduce(((e,[r,i])=>{if((0,t.isNil)(i))return{...e,[r]:i};const n=this.compile((0,t.classOf)(i),s.groups);return{...e,[r]:n.fn(i,s)}}),{})}mapSet(e,r){return(0,t.isNil)(e)?e:[...e.values()].map((e=>this.mapItem(e,r)))}mapArray(e,r){return(0,t.isNil)(e)?e:[].concat(e).map((e=>this.mapItem(e,r)))}mapMap(e,r){return(0,t.isNil)(e)?e:[...e.entries()].reduce(((e,[t,s])=>({...e,[t]:this.mapItem(s,r)})),{})}mapItem(e,{id:r,...s}){return!r&&e?this.compile((0,t.classOf)(e),s.groups).fn(e,s):r?this.execMapper(r,e,s):e}mapJSON(e,{id:r,...s}){return(0,t.isMongooseObject)(e)?e.toJSON({...s,id:r}):(r=r||(0,t.nameOf)((0,t.classOf)(e)),this.mappers[r]&&((0,t.isDate)(e)||(0,t.isMomentObject)(e))?this.execMapper(r,e,s):(e=e.toJSON(),(0,t.isObject)(e)?this.execMapper(r,e,s):e))}}const T=new P;function I(e,t){return T.map(e,t)}const k=new A;function C(e,t){return k.map(e,t)}})(),__webpack_exports__})()));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@tsed/core"),require("@tsed/schema")):"function"==typeof define&&define.amd?define(["@tsed/core","@tsed/schema"],t):"object"==typeof exports?exports["@tsed/json-mapper"]=t(require("@tsed/core"),require("@tsed/schema")):e["@tsed/json-mapper"]=t(e["@tsed/core"],e["@tsed/schema"])}(self,((__WEBPACK_EXTERNAL_MODULE__803__,__WEBPACK_EXTERNAL_MODULE__953__)=>(()=>{"use strict";var __webpack_modules__={405:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{S:()=>JsonMapperCompiler});var _tsed_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(803),_tsed_core__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_tsed_core__WEBPACK_IMPORTED_MODULE_0__);class JsonMapperCompiler{cache=new Map;mappers={};schemes={};constructors={};globals={isCollection:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isCollection,isClass:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isClass,isObject:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isObject,classOf:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.classOf,nameOf:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.nameOf,hasJsonMethod:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.hasJsonMethod,isMongooseObject:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isMongooseObject,isNil:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isNil,isDate:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isDate,objectKeys:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.objectKeys,isMomentObject:_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isMomentObject};constructor(){this.addGlobal("alterIgnore",this.alterIgnore.bind(this)),this.addGlobal("alterValue",this.alterValue.bind(this)),this.addGlobal("execMapper",this.execMapper.bind(this)),this.addGlobal("compileAndMap",this.map.bind(this))}addTypeMapper(e,t){const r=(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.nameOf)(e);return this.cache.set(e,(new Map).set("typeMapper",{id:r,fn:t})),this.mappers[r]=t,this}removeTypeMapper(e){const t=this.cache.get(e);if(t){const{id:r}=t.get("typeMapper");delete this.mappers[r],this.cache.delete(e)}}addGlobal(e,t){return this.globals[e]=t,this}eval(mapper,{id,groupsId,model}){this.addGlobal("cache",this.cache);const{globals,schemes}=this,injectGlobals=Object.keys(globals).map((e=>`const ${e} = globals.${e};`)).join("\n");eval(`${injectGlobals};\n\n cache.get(model).set(groupsId, { id: '${id}', fn: ${mapper} })`);const store=this.cache.get(model).get(groupsId);return this.mappers[id]=store.fn,store}createContext(e){const{cache:t}=this;return{...e,cache:t}}compile(e,t,r={}){const s=(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isString)(e)?e:this.getType(e),i=this.getGroupsId(t);let n=this.cache.get(s)||this.cache.get((0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.nameOf)(s));if(n||(n=new Map,this.cache.set(s,n)),n.has("typeMapper"))return n.get("typeMapper");if(!n.has(i)){const o=this.getId(s,i);n.set(i,{id:o});const a=r.mapper?r.mapper(o,t):this.createMapper(s,o,t);try{return this.eval(a,{id:o,model:s,groupsId:i})}catch(t){throw new Error(`Fail to compile mapper for ${(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.nameOf)(e)}. See the error above: ${t.message}.\n${a}`)}}return n.get(i)}execMapper(e,t,r){return(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isObjectID)(t)?t.toString():this.mappers[e](t,r)}getType(e){if(!e)return Object;if((0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isClass)(e)&&!(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isCollection)(e)){const t=[Array,Map,Set].find((t=>(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.ancestorsOf)(e).includes(t)));if(t)return t}return e}alterIgnore(e,t){let r=this.schemes[e]?.$hooks?.alter("ignore",!1,[t]);if(r)return r}alterGroups(e,t){return!1!==t&&e.$hooks.alter("groups",!1,[t])}getGroupsId(e){return!1===e?"default":0===e.length?"-":e.join(",")}getId(e,t){return`${(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.isString)(e)?e:(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.nameOf)(e)}:${(0,_tsed_core__WEBPACK_IMPORTED_MODULE_0__.getRandomId)()}:${t}`}getSchemaId(e,t){return`${e}:${t}`}}},803:e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__803__},953:e=>{e.exports=__WEBPACK_EXTERNAL_MODULE__953__}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};return(()=>{function e(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o}__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{AfterDeserialize:()=>u,BeforeDeserialize:()=>d,CastError:()=>p,DateMapper:()=>o,JsonDeserializer:()=>P,JsonMapper:()=>n,JsonMapperCompiler:()=>y.S,JsonMapperSettings:()=>O,JsonSerializer:()=>A,OnDeserialize:()=>h,OnSerialize:()=>m,PrimitiveMapper:()=>c,SymbolMapper:()=>_,Writer:()=>g,alterAfterDeserialize:()=>f,alterBeforeDeserialize:()=>b,alterOnDeserialize:()=>M,alterOnSerialize:()=>S,deserialize:()=>I,getJsonMapperTypes:()=>i,getObjectProperties:()=>w,registerJsonTypeMapper:()=>s,serialize:()=>C}),Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var t=__webpack_require__(803);const r=new Map;function s(e,t){r.set(e,new t)}function i(){return r}function n(...e){return t=>{e.forEach((e=>{s(e,t)}))}}let o=class{deserialize(e){return(0,t.isBoolean)(e)||null==e?e:new Date(e)}serialize(e){return e?new Date(e).toISOString():e}};function a(e){return[null,"null"].includes(e)}o=e([n(Date)],o);class p extends Error{name="CAST_ERROR";constructor(e){super(`Cast error. ${e}`)}}let c=class{deserialize(e,r){return this[(0,t.nameOf)(r.type)]?this[(0,t.nameOf)(r.type)](e,r):void 0}serialize(e,r){return this[(0,t.nameOf)(r?.type)]&&"object"!=typeof e?this[(0,t.nameOf)(r.type)](e,r):e}String(e){return null===e?null:""+e}Boolean(e){return!!["true","1",!0].includes(e)||!["false","0",!1].includes(e)&&(a(e)?null:void 0!==e?!!e:void 0)}Number(e){if(a(e))return null;if(void 0===e)return e;const t=+e;if(isNaN(t))throw new p("Expression value is not a number.");return t}BigInt(e){return a(e)?null:BigInt(e)}};c=e([n(String,Number,Boolean,BigInt)],c);let _=class{deserialize(e){return Symbol.for(e)}serialize(e){return e.toString().replace("Symbol(","").replace(")","")}};_=e([n(Symbol)],_);var l=__webpack_require__(953);function u(e){return(0,l.JsonEntityFn)((t=>{t.schema.$hooks.on("afterDeserialize",e)}))}function d(e){return(0,l.JsonEntityFn)((t=>{t.schema.$hooks.on("beforeDeserialize",e)}))}function h(e){return(0,l.JsonEntityFn)((t=>{t.schema.$hooks.on("onDeserialize",e)}))}function m(e){return(0,l.JsonEntityFn)((t=>{t.schema.$hooks.on("onSerialize",e)}))}function f(e,t,r){return t?.$hooks?.alter("afterDeserialize",e,[r])}function b(e,t,r){return t?.$hooks?.alter("beforeDeserialize",e,[r])}function M(e,t,r){return e.$hooks.alter("onDeserialize",t,[r])}var y=__webpack_require__(405);const O={disableUnsecureConstructor:!0,additionalProperties:!1};class g{static object={assign:(...e)=>`{ ${e.filter(Boolean).join(", ")} }`};_root;body=[];_indent;constructor(e){this._root=e}static indent(e){return e.map((e=>`\t${e}`))}static mapper(e,t,r){return`execMapper('${e}', ${t}, ${r})`}static mapperFrom(e,t){return`execMapper(nameOf(classOf(${e})), ${e}, ${t})`}static options(...e){return(e=e.filter(Boolean)).length?g.object.assign("...options",...e):"options"}add(...e){return(e=e.filter((e=>void 0!==e))).length&&this.body.push(...e),this}arrow(...e){this.add(`(${e}) => {`);const t=this.new();return this.add("}"),t}build(){const e=this.body.flatMap((e=>e instanceof g?e.build():e));return this._indent?e.map((e=>"\t"+e)):e}callMapper(e,t,...r){return this.set(t,g.mapper(e,t,g.options(...r)))}returnCallMapper(e,t,...r){return this.return(g.mapper(e,t,g.options(...r)))}const(e,t){return this.add(`const ${e} = ${t};`),this}each(e,t=[]){const r=this.add(e+".forEach(("+t.join(", ")+") => {").new();return this.add("});"),r}if(e){const t=new $(e,this);return this.add(t),t}switch(e){const t=new E(e);return this.add(t),t}indent(e){return this._indent=e,this}new(e=!0){const t=new g(this.root());return t.indent(e),this.add(t),t}return(e){return this.add(`return ${e};`),this.root()}root(){return this._root||this}set(e,t){return this.add(`${e} = ${t};`),this}toString(){return this.build().join("\n")}}class $ extends g{condition;elseWriter;constructor(e,t){super(),this.condition=e,this._root=t}else(){const e=new g(this._root);return this.elseWriter=e,e}build(){return[`if (${this.condition}) {`,...g.indent(super.build()),"}",this.elseWriter?["else {",...g.indent(this.elseWriter.build()),"}"]:[]].flat()}}class E extends g{input;#e=new Map;constructor(e){super(),this.input=e}case(e){const t=new g;return this.#e.set(e,t),t}build(){return[`switch (${this.input}) {`,...g.indent(Array.from(this.#e.entries()).flatMap((([e,t])=>["default"===e?`${e}:`:`case ${e}:`,...g.indent(t.build())]))),"}"].flat()}}function D(e){return`__${e}`}class P extends y.S{constructors={};constructor(){super(),this.addGlobal("newInstanceOf",this.newInstanceOf.bind(this)),this.addGlobal("alterBeforeDeserialize",this.alterBeforeDeserialize.bind(this)),this.addGlobal("alterAfterDeserialize",this.alterAfterDeserialize.bind(this)),this.addTypeMapper(Object,this.mapObject.bind(this)),this.addTypeMapper(Array,this.mapArray.bind(this)),this.addTypeMapper(Map,this.mapMap.bind(this)),this.addTypeMapper(Set,this.mapSet.bind(this)),this.addTypeMapper("ObjectId",(e=>String(e)))}map(e,r={}){if(!function(e,r){return!(r.collectionType&&(0,t.isNil)(e)||void 0===e||(0,t.isEmpty)(r.type)||r.type===Object&&!r.collectionType)}(e,r=this.mapOptions(r)))return e;!r.collectionType&&(0,t.isArray)(e)&&(r.collectionType=Array);const s=r.type||(0,t.classOf)(e),i=this.compile(s,r.groups);return r.collectionType?this.compile(r.collectionType,r.groups).fn(e,{...r,id:i.id}):i.fn(e,this.createContext(r))}compile(e,r){if([WeakMap,WeakSet].includes(e))throw new Error(`${(0,t.nameOf)(e)} is not supported by JsonMapper.`);return super.compile(e,r)}eval(e,{id:t,groupsId:r,model:s}){return this.constructors[t]=s,super.eval(e,{id:t,groupsId:r,model:s})}newInstanceOf(e,t,r){try{return new this.constructors[e](r.disableUnsecureConstructor?{}:t)}catch(e){return t}}createMapper(e,r,s){const i=l.JsonEntityStore.from(e),n=new Set,o=[...(0,l.getPropertiesStores)(i).values()],a=(new g).arrow("input","options");return a.if("isNil(input)").return("input"),i.schema.hasDiscriminator&&a.add(this.mapDiscriminator(i,s)),i.schema.$hooks?.has("beforeDeserialize")&&(this.schemes[r]=i.schema,a.set("input",`alterBeforeDeserialize('${r}', input, options)`)),a.const("generics","options.generics[0]"),i.schema.genericLabels?.length?a.set("options","{...options, self: input, generics: [...options.generics].slice(1)}"):a.set("options","{...options, self: input}"),a.const("obj",`newInstanceOf('${r}', input, options)`),a.add(...o.flatMap((e=>{const i=e.propertyName;if(n.add(String(e.parent.schema.getAliasOf(i)||i)),!(e.schema?.$ignore&&(0,t.isBoolean)(e.schema?.$ignore)||e.isGetterOnly()||e.schema?.$hooks?.has("groups")&&this.alterGroups(e.schema,s)))return this.mapProperty(e,r,s)}))),a.add(this.mapAdditionalProperties(i,n,s)),i.schema.$hooks?.has("afterDeserialize")?(this.schemes[r]=i.schema,a.return(`alterAfterDeserialize('${r}', obj, options)`).root().toString()):a.return("obj").root().toString()}alterValue(e,t,r){return M(this.schemes[e],t,r)}mapDiscriminator(e,t){const r=new g,s=e.schema.discriminator(),i=r.switch(`input['${s.propertyName}']`);return s.values.forEach(((e,r)=>{const s=this.compile(e,t);i.case(`'${r}'`).returnCallMapper(s.id,"input")})),r}mapProperty(e,t,r){const s=String(e.propertyKey),i=String(e.parent.schema.getAliasOf(s)||s),n=this.getSchemaId(t,s),o=e.itemSchema.get("format"),a=o&&`options: {format: '${o}'}`;let p=(new g).add(`// Map ${s} ${t} ${r||""}`);const c=s!==i?`options.useAlias ? '${i}' : '${s}'`:`'${s}'`;e.schema?.$hooks?.has("ignore")&&(this.schemes[n]=e.schema,p=p.if(`!alterIgnore('${n}', {...options, self: input})`));const _=e.schema?.$hooks?.has("onDeserialize");let l=`input[${c}]`;_&&(this.schemes[n]=e.schema,l=`alterValue('${n}', input[${c}], ${g.options(a)})`);const u=p.set(`let ${D(s)}`,l).if(`${D(s)} !== undefined`);return this.getPropertyFiller(e,t,r,a)(_?u.if(`${D(s)} === input.${s}`):u),u.set(`obj.${s}`,D(s)),r&&r.includes("partial")&&u.else().add(`delete obj.${s}`),p.root()}getPropertyFiller(e,r,s,i){const n=String(e.propertyKey),o=this.getSchemaId(r,n),a=e.itemSchema.nestedGenerics;if(e.itemSchema.isGeneric&&!a?.length){const t=function(e){return e.parent.schema.genericLabels.indexOf(e.itemSchema.genericType)}(e),r=g.options(i,`type: generics[${t}]`);return e=>e.set(D(n),`compileAndMap(${D(n)}, ${r})`)}const p=e.itemSchema.hasDiscriminator?e.itemSchema.discriminator().base:e.getBestType(),c=this.compile(p,s);return e.isCollection?r=>r.callMapper((0,t.nameOf)(e.collectionType),D(n),`id: '${c.id}'`,i):a?.length?(this.schemes[o]=e.schema,e=>e.callMapper(c.id,D(n),i,`generics: schemes['${o}'].nestedGenerics`)):e=>e.callMapper(c.id,D(n),i)}mapOptions({groups:e=!1,useAlias:r=!0,types:s,...n}){return n.store instanceof l.JsonParameterStore?this.mapOptions(function(e,t){return{...t,store:void 0,type:e.getBestType(),collectionType:e.collectionType,groups:e.parameter.groups,generics:e.nestedGenerics}}(n.store,n)):((s=s||i()).forEach(((e,r)=>{if(![Array,Set,Map].includes(r)){const s=(0,t.nameOf)(r);(0,t.nameOf)(r)in e?this.addTypeMapper(r,e[s].bind(e)):this.addTypeMapper(r,((t,s)=>e.deserialize(t,{...s,type:r})))}})),{...n,additionalProperties:(0,t.getValue)(n,"additionalProperties",O.additionalProperties),disableUnsecureConstructor:(0,t.getValue)(n,"disableUnsecureConstructor",O.disableUnsecureConstructor),groups:e,useAlias:r,customMappers:{},generics:n.generics||[]})}mapAdditionalProperties(e,r,s){const i=e.schema.get("additionalProperties"),n=[...r.values()].map((e=>`'${e}'`)).join(", "),o=new g;o.add("// add additional properties");let a=o.each("objectKeys(input)",["key"]);if(n.length&&(a=a.if(`![${n}].includes(key)`)),(0,t.isClass)(i)){const e=this.compile(i.getComputedType(),s);return a.set("obj[key]",g.mapper(e.id,"input[key]","options")),o}return i?(a.set("obj[key]","input[key]"),o):(a.if("options.additionalProperties && obj[key] === undefined").set("obj[key]","input[key]"),o)}mapObject(e,t){return e}mapSet(e,r){if((0,t.isNil)(e))return e;const s=new Set;return(0,t.objectKeys)(e).forEach((t=>{s.add(this.mapItem(e[t],r))})),s}mapArray(e,r){return(0,t.isNil)(e)?e:[].concat(e).map((e=>this.mapItem(e,r)))}mapMap(e,r){if((0,t.isNil)(e))return e;const s=new Map;return(0,t.objectKeys)(e).forEach((t=>{s.set(t,this.mapItem(e[t],r))})),s}mapItem(e,{id:t,...r}){return this.execMapper(t,e,r)}alterBeforeDeserialize(e,t,r){return b(t,this.schemes[e],r)}alterAfterDeserialize(e,t,r){return f(t,this.schemes[e],r)}}function S(e,t,r){return e.$hooks.alter("onSerialize",t,[r])}function w(e){return Object.entries(e).filter((([,e])=>!(0,t.isFunction)(e)))}function j(e){return`__${e}`}class A extends y.S{constructor(){super(),this.addTypeMapper(Object,this.mapObject.bind(this)),this.addTypeMapper(Array,this.mapArray.bind(this)),this.addTypeMapper(Map,this.mapMap.bind(this)),this.addTypeMapper(Set,this.mapSet.bind(this)),this.addGlobal("mapJSON",this.mapJSON.bind(this)),this.addTypeMapper("ObjectId",(e=>String(e)))}map(e,r={}){if((0,t.isNil)(e))return e;const s=function(e,r){const s=(0,t.classOf)(r);return!s||(0,t.isClassObject)(s)||(0,t.isCollection)(r)?e||Object:s}((r=this.mapOptions(r)).type,e);return this.compile(s,r.groups).fn(e,this.createContext(r))}alterValue(e,t,r){return S(this.schemes[e],t,r)}createMapper(e,r,s){const i=l.JsonEntityStore.from(e),n=new Set,o=[...(0,l.getPropertiesStores)(i).values()],a=(new g).arrow("input","options");return a.if("isNil(input)").return("input"),a.const("obj","{}"),a.set("options","{...options, self: input}"),a.add(this.mapPrecondition(r)),o.length?(a.add(...o.flatMap((e=>{if(n.add(e.propertyKey),!(e.schema?.$ignore&&(0,t.isBoolean)(e.schema?.$ignore)||e.schema?.$hooks?.has("groups")&&this.alterGroups(e.schema,s)))return this.mapProperty(e,r,s)}))),a.add(this.mapDiscriminatorKeyValue(i)),a.add(this.mapAdditionalProperties(i,n)),a.return("obj").root().toString()):a.return("isObject(input) ? {...input} : input").root().toString()}mapOptions({groups:e=!1,useAlias:t=!0,types:r,...s}){return(r=r||i()).forEach(((e,t)=>{[Array,Set,Map].includes(t)||this.addTypeMapper(t,((r,s)=>e.serialize(r,{...s,type:t})))})),{...s,groups:e,useAlias:t,customMappers:{}}}mapProperty(e,t,r){const s=String(e.propertyKey),i=String(e.parent.schema.getAliasOf(s)||s),n=this.getSchemaId(t,s),o=e.itemSchema.get("format"),a=o&&`options: {format: '${o}'}`;let p=(new g).add(`// Map ${s} ${t} ${r||""}`);e.schema?.$hooks?.has("ignore")&&(this.schemes[n]=e.schema,p=p.if(`!alterIgnore('${n}', {...options, self: input})`));const c=e.schema?.$hooks?.has("onSerialize");let _=`input.${s}`;c&&(this.schemes[n]=e.schema,_=`alterValue('${n}', input.${s}, ${g.options(a)})`),p=p.set(`let ${j(s)}`,_).if(`${j(s)} !== undefined`);return this.getPropertyFiller(e,s,r,a)(c?p.if(`${j(s)} === input.${s}`):p),i!==s?p.set(`obj[options.useAlias ? '${i}' : '${s}']`,j(s)):p.set(`obj.${s}`,j(s)),p.root()}getPropertyFiller(e,r,s,i){const n=e.itemSchema.isGeneric,o=e.itemSchema.hasDiscriminator;if(e.isCollection){const a=e.getBestType();let p;if(o){const t=e.parent.targetName;p=this.compile(`Discriminator:${t}:${r}`,s,{mapper:()=>this.createDiscriminatorMapper(e,s)})}else p=n?{id:""}:this.compile(a,s);return s=>s.callMapper((0,t.nameOf)(e.collectionType),j(r),`id: '${p.id}'`,i)}if(n)return e=>e.set(j(r),`compileAndMap(${j(r)}, options)`);let a;if(o){const t=e.parent.targetName;a=this.compile(`Discriminator:${t}:${r}`,s,{mapper:()=>this.createDiscriminatorMapper(e,s)})}else a=this.compile(e.getBestType(),s);return e=>e.callMapper(a.id,j(r),i)}createDiscriminatorMapper(e,r){const s=e.itemSchema.discriminator(),i=(new g).arrow("input","options"),n=i.switch("nameOf(classOf(input))");return s.values.forEach(((e,s)=>{const i=this.compile(e,r);n.case(`'${(0,t.nameOf)(e)}'`).returnCallMapper(i.id,"input")})),i.root().toString()}mapPrecondition(e){const t=new g;return t.if("input && isCollection(input)").return(g.mapperFrom("input",`{...options, id: '${e}'}`)),t.if("hasJsonMethod(input)").return(`mapJSON(input, {...options, id: '${e}'})`),t}mapDiscriminatorKeyValue(e){if(e.discriminatorAncestor){const t=e.discriminatorAncestor.schema.discriminator(),r=t.getDefaultValue(e.target);if(r){const e=new g;return e.if(`!obj.${t.propertyName}`).set(`obj.${t.propertyName}`,`'${r}'`),e}}}mapAdditionalProperties(e,t){if(e.schema.get("additionalProperties")){const e=[...t.values()].map((e=>`'${e}'`)).join(", "),r=new g;return r.add("// add additional properties"),r.each("objectKeys(input)",["key"]).if(`![${e}].includes(key)`).set("obj[key]","input[key]"),r}}mapObject(e,{type:r,...s}){return e&&(0,t.isPrimitive)(e)||!e?e:e&&(0,t.isCollection)(e)?this.execMapper((e=>(0,t.isArray)(e)?"Array":e instanceof Set?"Set":e instanceof Map?"Map":void 0)(e),e,s):(0,t.hasJsonMethod)(e)?this.mapJSON(e,s):w(e).filter((([,e])=>void 0!==e)).reduce(((e,[r,i])=>{if((0,t.isNil)(i))return{...e,[r]:i};const n=this.compile((0,t.classOf)(i),s.groups);return{...e,[r]:n.fn(i,s)}}),{})}mapSet(e,r){return(0,t.isNil)(e)?e:[...e.values()].map((e=>this.mapItem(e,r)))}mapArray(e,r){return(0,t.isNil)(e)?e:[].concat(e).map((e=>this.mapItem(e,r)))}mapMap(e,r){return(0,t.isNil)(e)?e:[...e.entries()].reduce(((e,[t,s])=>({...e,[t]:this.mapItem(s,r)})),{})}mapItem(e,{id:r,...s}){return!r&&e?this.compile((0,t.classOf)(e),s.groups).fn(e,s):r?this.execMapper(r,e,s):e}mapJSON(e,{id:r,...s}){return(0,t.isMongooseObject)(e)?e.toJSON({...s,id:r}):(r=r||(0,t.nameOf)((0,t.classOf)(e)),this.mappers[r]&&((0,t.isDate)(e)||(0,t.isMomentObject)(e))?this.execMapper(r,e,s):(e=e.toJSON(),(0,t.isObject)(e)?this.execMapper(r,e,s):e))}}const T=new P;function I(e,t){return T.map(e,t)}const k=new A;function C(e,t){return k.map(e,t)}})(),__webpack_exports__})()));
2
2
  //# sourceMappingURL=json-mapper.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-mapper.umd.min.js","mappings":"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","sources":["webpack://@tsed/json-mapper/webpack/universalModuleDefinition","webpack://@tsed/json-mapper/./src/domain/JsonMapperCompiler.ts","webpack://@tsed/json-mapper/external umd \"@tsed/core\"","webpack://@tsed/json-mapper/external umd \"@tsed/schema\"","webpack://@tsed/json-mapper/webpack/bootstrap","webpack://@tsed/json-mapper/webpack/runtime/compat get default export","webpack://@tsed/json-mapper/webpack/runtime/define property getters","webpack://@tsed/json-mapper/webpack/runtime/hasOwnProperty shorthand","webpack://@tsed/json-mapper/webpack/runtime/make namespace object","webpack://@tsed/json-mapper/../../../node_modules/tslib/tslib.es6.mjs","webpack://@tsed/json-mapper/./src/domain/JsonMapperTypesContainer.ts","webpack://@tsed/json-mapper/./src/decorators/jsonMapper.ts","webpack://@tsed/json-mapper/./src/components/DateMapper.ts","webpack://@tsed/json-mapper/./src/components/PrimitiveMapper.ts","webpack://@tsed/json-mapper/./src/components/SymbolMapper.ts","webpack://@tsed/json-mapper/./src/decorators/afterDeserialize.ts","webpack://@tsed/json-mapper/./src/decorators/beforeDeserialize.ts","webpack://@tsed/json-mapper/./src/decorators/onDeserialize.ts","webpack://@tsed/json-mapper/./src/decorators/onSerialize.ts","webpack://@tsed/json-mapper/./src/hooks/alterAfterDeserialize.ts","webpack://@tsed/json-mapper/./src/hooks/alterBeforeDeserialize.ts","webpack://@tsed/json-mapper/./src/hooks/alterOnDeserialize.ts","webpack://@tsed/json-mapper/./src/domain/JsonMapperSettings.ts","webpack://@tsed/json-mapper/./src/domain/Writer.ts","webpack://@tsed/json-mapper/./src/domain/JsonDeserializer.ts","webpack://@tsed/json-mapper/./src/hooks/alterOnSerialize.ts","webpack://@tsed/json-mapper/./src/utils/getObjectProperties.ts","webpack://@tsed/json-mapper/./src/domain/JsonSerializer.ts","webpack://@tsed/json-mapper/./src/utils/deserialize.ts","webpack://@tsed/json-mapper/./src/utils/serialize.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@tsed/core\"), require(\"@tsed/schema\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@tsed/core\", \"@tsed/schema\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@tsed/json-mapper\"] = factory(require(\"@tsed/core\"), require(\"@tsed/schema\"));\n\telse\n\t\troot[\"@tsed/json-mapper\"] = factory(root[\"@tsed/core\"], root[\"@tsed/schema\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__803__, __WEBPACK_EXTERNAL_MODULE__953__) => {\nreturn ","import { ancestorsOf, classOf, getRandomId, hasJsonMethod, isClass, isCollection, isDate, isMomentObject, isMongooseObject, isNil, isObject, isObjectID, isString, nameOf, objectKeys } from \"@tsed/core\";\nexport class JsonMapperCompiler {\n /**\n * Cached mappers metadata\n * @protected\n */\n cache = new Map();\n /**\n * Cached executable mappers by his id\n * @protected\n */\n mappers = {};\n /**\n * Cached schemas\n * @protected\n */\n schemes = {};\n /**\n * Cached classes by his id\n * @protected\n */\n constructors = {};\n /**\n * Global variables available in the mapper\n * @protected\n */\n globals = {\n isCollection,\n isClass,\n isObject,\n classOf,\n nameOf,\n hasJsonMethod,\n isMongooseObject,\n isNil,\n isDate,\n objectKeys,\n isMomentObject\n };\n constructor() {\n this.addGlobal(\"alterIgnore\", this.alterIgnore.bind(this));\n this.addGlobal(\"alterValue\", this.alterValue.bind(this));\n this.addGlobal(\"execMapper\", this.execMapper.bind(this));\n this.addGlobal(\"compileAndMap\", this.map.bind(this));\n }\n addTypeMapper(model, fn) {\n const id = nameOf(model);\n this.cache.set(model, new Map().set(\"typeMapper\", {\n id,\n fn\n }));\n this.mappers[id] = fn;\n return this;\n }\n removeTypeMapper(model) {\n const store = this.cache.get(model);\n if (store) {\n const { id } = store.get(\"typeMapper\");\n delete this.mappers[id];\n this.cache.delete(model);\n }\n }\n addGlobal(key, value) {\n this.globals[key] = value;\n return this;\n }\n eval(mapper, { id, groupsId, model }) {\n this.addGlobal(\"cache\", this.cache);\n const { globals, schemes } = this;\n const injectGlobals = Object.keys(globals)\n .map((name) => {\n return `const ${name} = globals.${name};`;\n })\n .join(\"\\n\");\n eval(`${injectGlobals};\n\n cache.get(model).set(groupsId, { id: '${id}', fn: ${mapper} })`);\n const store = this.cache.get(model).get(groupsId);\n this.mappers[id] = store.fn;\n return store;\n }\n createContext(options) {\n const { cache } = this;\n return {\n ...options,\n cache\n };\n }\n compile(model, groups, opts = {}) {\n const token = isString(model) ? model : this.getType(model);\n const groupsId = this.getGroupsId(groups);\n let storeGroups = this.cache.get(token) || this.cache.get(nameOf(token));\n if (!storeGroups) {\n storeGroups = new Map();\n this.cache.set(token, storeGroups);\n }\n if (storeGroups.has(\"typeMapper\")) {\n return storeGroups.get(\"typeMapper\");\n }\n // generate mapper for the given groups\n if (!storeGroups.has(groupsId)) {\n const id = this.getId(token, groupsId);\n // prevent circular dependencies\n storeGroups.set(groupsId, {\n id\n });\n const mapper = opts.mapper ? opts.mapper(id, groups) : this.createMapper(token, id, groups);\n try {\n return this.eval(mapper, { id, model: token, groupsId });\n }\n catch (err) {\n throw new Error(`Fail to compile mapper for ${nameOf(model)}. See the error above: ${err.message}.\\n${mapper}`);\n }\n }\n return storeGroups.get(groupsId);\n }\n execMapper(id, value, options) {\n if (isObjectID(value)) {\n return value.toString();\n }\n return this.mappers[id](value, options);\n }\n getType(model) {\n if (!model) {\n return Object;\n }\n if (isClass(model) && !isCollection(model)) {\n const type = [Array, Map, Set].find((t) => ancestorsOf(model).includes(t));\n if (type) {\n return type;\n }\n }\n return model;\n }\n alterIgnore(id, options) {\n let result = this.schemes[id]?.$hooks?.alter(\"ignore\", false, [options]);\n if (result) {\n return result;\n }\n }\n alterGroups(schema, groups) {\n if (groups !== false) {\n return schema.$hooks.alter(\"groups\", false, [groups]);\n }\n return false;\n }\n getGroupsId(groups) {\n if (groups === false) {\n return \"default\";\n }\n if (groups.length === 0) {\n return \"-\";\n }\n return groups.join(\",\");\n }\n getId(model, groupsId) {\n return `${isString(model) ? model : nameOf(model)}:${getRandomId()}:${groupsId}`;\n }\n getSchemaId(id, propertyKey) {\n return `${id}:${propertyKey}`;\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__803__;","module.exports = __WEBPACK_EXTERNAL_MODULE__953__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/**\n * @ignore\n */\n// tslint:disable-next-line:variable-name\nconst JsonMapperTypesContainer = new Map();\n/**\n * @ignore\n */\nexport function registerJsonTypeMapper(type, token) {\n JsonMapperTypesContainer.set(type, new token());\n}\n/**\n * @ignore\n */\nexport function getJsonMapperTypes() {\n return JsonMapperTypesContainer;\n}\n","import { registerJsonTypeMapper } from \"../domain/JsonMapperTypesContainer\";\n/**\n * Register a new JsonMapper Type\n * @param types\n * @constructor\n */\nexport function JsonMapper(...types) {\n return (target) => {\n types.forEach((type) => {\n registerJsonTypeMapper(type, target);\n });\n };\n}\n","import { __decorate } from \"tslib\";\nimport { isBoolean } from \"@tsed/core\";\nimport { JsonMapper } from \"../decorators/jsonMapper\";\n/**\n * Mapper for `Date` type.\n * @jsonmapper\n * @component\n */\nlet DateMapper = class DateMapper {\n deserialize(data) {\n // don't convert unexpected data. In normal case, Ajv reject unexpected data.\n // But by default, we have to skip data deserialization and let user to apply\n // the right mapping\n if (isBoolean(data) || data === null || data === undefined) {\n return data;\n }\n return new Date(data);\n }\n serialize(object) {\n return object ? new Date(object).toISOString() : object;\n }\n};\nDateMapper = __decorate([\n JsonMapper(Date)\n], DateMapper);\nexport { DateMapper };\n","import { __decorate } from \"tslib\";\nimport { nameOf } from \"@tsed/core\";\nimport { JsonMapper } from \"../decorators/jsonMapper\";\nfunction isNullish(data) {\n return [null, \"null\"].includes(data);\n}\nexport class CastError extends Error {\n name = \"CAST_ERROR\";\n constructor(message) {\n super(`Cast error. ${message}`);\n }\n}\n/**\n * Mapper for the `String`, `Number`, `BigInt` and `Boolean` types.\n * @jsonmapper\n * @component\n */\nlet PrimitiveMapper = class PrimitiveMapper {\n deserialize(data, ctx) {\n return this[nameOf(ctx.type)] ? this[nameOf(ctx.type)](data, ctx) : undefined;\n }\n serialize(object) {\n return object;\n }\n String(data) {\n return data === null ? null : \"\" + data;\n }\n Boolean(data) {\n if ([\"true\", \"1\", true].includes(data))\n return true;\n if ([\"false\", \"0\", false].includes(data))\n return false;\n if (isNullish(data))\n return null;\n if (data === undefined)\n return undefined;\n return !!data;\n }\n Number(data) {\n if (isNullish(data))\n return null;\n const n = +data;\n if (isNaN(n)) {\n throw new CastError(\"Expression value is not a number.\");\n }\n return n;\n }\n BigInt(data) {\n if (isNullish(data))\n return null;\n return BigInt(data);\n }\n};\nPrimitiveMapper = __decorate([\n JsonMapper(String, Number, Boolean, BigInt)\n], PrimitiveMapper);\nexport { PrimitiveMapper };\n","import { __decorate } from \"tslib\";\nimport { JsonMapper } from \"../decorators/jsonMapper\";\n/**\n * Mapper for the `Symbol` type.\n *\n * @jsonmapper\n * @component\n */\nlet SymbolMapper = class SymbolMapper {\n deserialize(data) {\n return Symbol.for(data);\n }\n serialize(object) {\n return object.toString().replace(\"Symbol(\", \"\").replace(\")\", \"\");\n }\n};\nSymbolMapper = __decorate([\n JsonMapper(Symbol)\n], SymbolMapper);\nexport { SymbolMapper };\n","import { JsonEntityFn } from \"@tsed/schema\";\n/**\n * Call the function after JsonMapper.\n *\n * ## Example\n *\n * ```typescript\n * @AfterDeserialize((data: Model) => { // After deserialize get the instance class\n * if (data.prop1 === 'VALUE' && data.prop2 !== 'VALUE2') {\n * throw BadRequest('MyMessage'); // or throw a ValidationError\n * } else {\n * data.prop2 = 'VALUE2';\n * return data;\n * }\n * })\n * class Model {\n * @Property()\n * prop1: string;\n * @Property()\n * prop2: string;\n * }\n * ```\n *\n * @returns {Function}\n * @decorator\n * @schema\n * @property\n * @param cb\n */\nexport function AfterDeserialize(cb) {\n return JsonEntityFn((storedJson) => {\n storedJson.schema.$hooks.on(\"afterDeserialize\", cb);\n });\n}\n","import { JsonEntityFn } from \"@tsed/schema\";\n/**\n * Call the function before JsonMapper.\n *\n * ## Example\n *\n * ```typescript\n * @BeforeDeserialize((data: Record<string, unknown>) => { // Before deserialize get the data\n * if (data.prop1 === 'VALUE' && data.prop2 !== 'VALUE2') {\n * throw BadRequest('MyMessage'); // or throw a ValidationError\n * } else {\n * data.prop2 = 'VALUE2';\n * return data;\n * }\n * })\n * class Model {\n * @Property()\n * prop1: string;\n * @Property()\n * prop2: string;\n * }\n * ```\n *\n * @returns {Function}\n * @decorator\n * @schema\n * @property\n * @param cb\n */\nexport function BeforeDeserialize(cb) {\n return JsonEntityFn((storedJson) => {\n storedJson.schema.$hooks.on(\"beforeDeserialize\", cb);\n });\n}\n","import { JsonEntityFn } from \"@tsed/schema\";\n/**\n * Call the function before property deserialization.\n *\n * ## Example\n *\n * ```typescript\n * class Model {\n * @OnDeserialize(v => v + 1)\n * property: string;\n * }\n * ```\n *\n * @returns {Function}\n * @decorator\n * @schema\n * @property\n * @param cb\n */\nexport function OnDeserialize(cb) {\n return JsonEntityFn((storedJson) => {\n storedJson.schema.$hooks.on(\"onDeserialize\", cb);\n });\n}\n","import { JsonEntityFn } from \"@tsed/schema\";\n/**\n * Call the function before property serialization.\n *\n * ## Example\n *\n * ```typescript\n * class Model {\n * @OnSerialize(v => v + 1)\n * property: string;\n * }\n * ```\n *\n * @returns {Function}\n * @decorator\n * @schema\n * @property\n * @param cb\n */\nexport function OnSerialize(cb) {\n return JsonEntityFn((storedJson) => {\n storedJson.schema.$hooks.on(\"onSerialize\", cb);\n });\n}\n","export function alterAfterDeserialize(data, schema, options) {\n return schema?.$hooks?.alter(\"afterDeserialize\", data, [options]);\n}\n","export function alterBeforeDeserialize(data, schema, options) {\n return schema?.$hooks?.alter(\"beforeDeserialize\", data, [options]);\n}\n","export function alterOnDeserialize(schema, value, options) {\n return schema.$hooks.alter(\"onDeserialize\", value, [options]);\n}\n","export const JsonMapperSettings = {\n disableUnsecureConstructor: true,\n additionalProperties: false\n};\n","export class Writer {\n static object = {\n assign(...args) {\n return `{ ${args.filter(Boolean).join(\", \")} }`;\n }\n };\n _root;\n body = [];\n _indent;\n constructor(root) {\n this._root = root;\n }\n static indent(lines) {\n return lines.map((p) => `\\t${p}`);\n }\n static mapper(mapperId, key, options) {\n return `execMapper('${mapperId}', ${key}, ${options})`;\n }\n static mapperFrom(key, options) {\n return `execMapper(nameOf(classOf(${key})), ${key}, ${options})`;\n }\n static options(...args) {\n args = args.filter(Boolean);\n return !args.length ? \"options\" : Writer.object.assign(\"...options\", ...args);\n }\n add(...lines) {\n lines = lines.filter((line) => line !== undefined);\n lines.length && this.body.push(...lines);\n return this;\n }\n arrow(...args) {\n this.add(`(${args}) => {`);\n const writer = this.new();\n this.add(\"}\");\n return writer;\n }\n build() {\n const result = this.body.flatMap((line) => {\n return line instanceof Writer ? line.build() : line;\n });\n return this._indent ? result.map((item) => \"\\t\" + item) : result;\n }\n callMapper(id, key, ...options) {\n return this.set(key, Writer.mapper(id, key, Writer.options(...options)));\n }\n returnCallMapper(id, key, ...options) {\n return this.return(Writer.mapper(id, key, Writer.options(...options)));\n }\n const(name, line) {\n this.add(`const ${name} = ${line};`);\n return this;\n }\n each(iterable, args = []) {\n const writer = this.add(iterable + \".forEach((\" + args.join(\", \") + \") => {\").new();\n this.add(\"});\");\n return writer;\n }\n if(condition) {\n const writer = new IfWriter(condition, this);\n this.add(writer);\n return writer;\n }\n switch(input) {\n const sw = new SwitchWriter(input);\n this.add(sw);\n return sw;\n }\n indent(indent) {\n this._indent = indent;\n return this;\n }\n new(indent = true) {\n const writer = new Writer(this.root());\n writer.indent(indent);\n this.add(writer);\n return writer;\n }\n return(line) {\n this.add(`return ${line};`);\n return this.root();\n }\n root() {\n return this._root || this;\n }\n set(left, right) {\n this.add(`${left} = ${right};`);\n return this;\n }\n toString() {\n return this.build().join(\"\\n\");\n }\n}\nclass IfWriter extends Writer {\n condition;\n elseWriter;\n constructor(condition, root) {\n super();\n this.condition = condition;\n this._root = root;\n }\n else() {\n const writer = new Writer(this._root);\n this.elseWriter = writer;\n return writer;\n }\n build() {\n return [\n `if (${this.condition}) {`,\n ...Writer.indent(super.build()),\n \"}\",\n this.elseWriter ? [`else {`, ...Writer.indent(this.elseWriter.build()), \"}\"] : []\n ].flat();\n }\n}\nclass SwitchWriter extends Writer {\n input;\n #map = new Map();\n constructor(input) {\n super();\n this.input = input;\n }\n case(condition) {\n const writer = new Writer();\n this.#map.set(condition, writer);\n return writer;\n }\n build() {\n return [\n `switch (${this.input}) {`,\n ...Writer.indent(Array.from(this.#map.entries()).flatMap(([condition, writer]) => {\n return [condition === \"default\" ? `${condition}:` : `case ${condition}:`, ...Writer.indent(writer.build())];\n })),\n \"}\"\n ].flat();\n }\n}\n","import { classOf, getValue, isArray, isBoolean, isClass, isEmpty, isNil, nameOf, objectKeys } from \"@tsed/core\";\nimport { getPropertiesStores, JsonEntityStore, JsonParameterStore } from \"@tsed/schema\";\nimport { alterAfterDeserialize } from \"../hooks/alterAfterDeserialize\";\nimport { alterBeforeDeserialize } from \"../hooks/alterBeforeDeserialize\";\nimport { alterOnDeserialize } from \"../hooks/alterOnDeserialize\";\nimport { JsonMapperCompiler } from \"./JsonMapperCompiler\";\nimport { JsonMapperSettings } from \"./JsonMapperSettings\";\nimport { getJsonMapperTypes } from \"./JsonMapperTypesContainer\";\nimport { Writer } from \"./Writer\";\nfunction isDeserializable(obj, options) {\n if ((!!options.collectionType && isNil(obj)) || obj === undefined) {\n return false;\n }\n return !(isEmpty(options.type) || (options.type === Object && !options.collectionType));\n}\nfunction varKey(k) {\n return `__${k}`;\n}\nfunction mapParamStoreOptions(store, options) {\n return {\n ...options,\n store: undefined,\n type: store.getBestType(),\n collectionType: store.collectionType,\n groups: store.parameter.groups,\n // genericTypes: store.nestedGenerics[0],\n generics: store.nestedGenerics\n };\n}\nfunction getGenericIndex(propertyStore) {\n return propertyStore.parent.schema.genericLabels.indexOf(propertyStore.itemSchema.genericType);\n}\nexport class JsonDeserializer extends JsonMapperCompiler {\n /**\n * Cached classes by his id\n * @protected\n */\n constructors = {};\n constructor() {\n super();\n this.addGlobal(\"newInstanceOf\", this.newInstanceOf.bind(this));\n this.addGlobal(\"alterBeforeDeserialize\", this.alterBeforeDeserialize.bind(this));\n this.addGlobal(\"alterAfterDeserialize\", this.alterAfterDeserialize.bind(this));\n this.addTypeMapper(Object, this.mapObject.bind(this));\n this.addTypeMapper(Array, this.mapArray.bind(this));\n this.addTypeMapper(Map, this.mapMap.bind(this));\n this.addTypeMapper(Set, this.mapSet.bind(this));\n this.addTypeMapper(\"ObjectId\", (value) => String(value));\n }\n map(input, options = {}) {\n options = this.mapOptions(options);\n if (!isDeserializable(input, options)) {\n return input;\n }\n if (!options.collectionType && isArray(input)) {\n options.collectionType = Array;\n }\n const model = options.type || classOf(input);\n const mapper = this.compile(model, options.groups);\n if (options.collectionType) {\n const collectionMapper = this.compile(options.collectionType, options.groups);\n return collectionMapper.fn(input, { ...options, id: mapper.id });\n }\n return mapper.fn(input, this.createContext(options));\n }\n compile(model, groups) {\n if ([WeakMap, WeakSet].includes(model)) {\n throw new Error(`${nameOf(model)} is not supported by JsonMapper.`);\n }\n return super.compile(model, groups);\n }\n eval(mapper, { id, groupsId, model }) {\n this.constructors[id] = model;\n return super.eval(mapper, { id, groupsId, model });\n }\n newInstanceOf(id, obj, options) {\n try {\n return new this.constructors[id](options.disableUnsecureConstructor ? {} : obj);\n }\n catch (er) {\n return obj;\n }\n }\n createMapper(model, id, groups) {\n const entity = JsonEntityStore.from(model);\n const properties = new Set();\n const schemaProperties = [...getPropertiesStores(entity).values()];\n const writer = new Writer().arrow(\"input\", \"options\");\n writer.if(\"isNil(input)\").return(\"input\");\n if (entity.schema.hasDiscriminator) {\n writer.add(this.mapDiscriminator(entity, groups));\n }\n // pre hook\n if (entity.schema.$hooks?.has(\"beforeDeserialize\")) {\n this.schemes[id] = entity.schema;\n writer.set(\"input\", `alterBeforeDeserialize('${id}', input, options)`);\n }\n // generics and options\n writer.const(\"generics\", \"options.generics[0]\");\n if (entity.schema.genericLabels?.length) {\n writer.set(\"options\", \"{...options, self: input, generics: [...options.generics].slice(1)}\");\n }\n else {\n writer.set(\"options\", \"{...options, self: input}\");\n }\n writer.const(\"obj\", `newInstanceOf('${id}', input, options)`);\n // properties\n writer.add(...schemaProperties.flatMap((propertyStore) => {\n const key = propertyStore.propertyName;\n // TODO V8 add this line: properties.add(key as string);\n properties.add(String(propertyStore.parent.schema.getAliasOf(key) || key));\n if ((propertyStore.schema?.$ignore && isBoolean(propertyStore.schema?.$ignore)) ||\n propertyStore.isGetterOnly() ||\n (propertyStore.schema?.$hooks?.has(\"groups\") && this.alterGroups(propertyStore.schema, groups))) {\n return;\n }\n return this.mapProperty(propertyStore, id, groups);\n }));\n // additional properties\n writer.add(this.mapAdditionalProperties(entity, properties, groups));\n // post hook\n if (entity.schema.$hooks?.has(\"afterDeserialize\")) {\n this.schemes[id] = entity.schema;\n return writer.return(`alterAfterDeserialize('${id}', obj, options)`).root().toString();\n }\n return writer.return(\"obj\").root().toString();\n }\n alterValue(schemaId, value, options) {\n return alterOnDeserialize(this.schemes[schemaId], value, options);\n }\n mapDiscriminator(entity, groups) {\n const writer = new Writer();\n const discriminator = entity.schema.discriminator();\n const sw = writer.switch(`input['${discriminator.propertyName}']`);\n discriminator.values.forEach((value, kind) => {\n const nestedMapper = this.compile(value, groups);\n sw.case(`'${kind}'`).returnCallMapper(nestedMapper.id, \"input\");\n });\n return writer;\n }\n mapProperty(propertyStore, id, groups) {\n const key = String(propertyStore.propertyKey);\n const aliasKey = String(propertyStore.parent.schema.getAliasOf(key) || key);\n const schemaId = this.getSchemaId(id, key);\n const format = propertyStore.itemSchema.get(\"format\");\n const formatOpts = format && `options: {format: '${format}'}`;\n let writer = new Writer().add(`// Map ${key} ${id} ${groups || \"\"}`);\n const pick = key !== aliasKey ? `options.useAlias ? '${aliasKey}' : '${key}'` : `'${key}'`;\n // ignore hook (deprecated)\n if (propertyStore.schema?.$hooks?.has(\"ignore\")) {\n this.schemes[schemaId] = propertyStore.schema;\n writer = writer.if(`!alterIgnore('${schemaId}', {...options, self: input})`);\n }\n // pre hook\n const hasDeserializer = propertyStore.schema?.$hooks?.has(\"onDeserialize\");\n let getter = `input[${pick}]`;\n if (hasDeserializer) {\n this.schemes[schemaId] = propertyStore.schema;\n const opts = Writer.options(formatOpts);\n getter = `alterValue('${schemaId}', input[${pick}], ${opts})`;\n }\n const ifWriter = writer.set(`let ${varKey(key)}`, getter).if(`${varKey(key)} !== undefined`);\n const fill = this.getPropertyFiller(propertyStore, id, groups, formatOpts);\n if (hasDeserializer) {\n fill(ifWriter.if(`${varKey(key)} === input.${key}`));\n }\n else {\n fill(ifWriter);\n }\n ifWriter.set(`obj.${key}`, varKey(key));\n if (groups && groups.includes(\"partial\")) {\n ifWriter.else().add(`delete obj.${key}`);\n }\n return writer.root();\n }\n getPropertyFiller(propertyStore, id, groups, formatOpts) {\n const key = String(propertyStore.propertyKey);\n const schemaId = this.getSchemaId(id, key);\n const generics = propertyStore.itemSchema.nestedGenerics;\n const isGeneric = propertyStore.itemSchema.isGeneric && !generics?.length;\n if (isGeneric) {\n const index = getGenericIndex(propertyStore);\n const opts = Writer.options(formatOpts, `type: generics[${index}]`);\n return (writer) => writer.set(varKey(key), `compileAndMap(${varKey(key)}, ${opts})`);\n }\n const type = propertyStore.itemSchema.hasDiscriminator ? propertyStore.itemSchema.discriminator().base : propertyStore.getBestType();\n const nestedMapper = this.compile(type, groups);\n if (propertyStore.isCollection) {\n return (writer) => writer.callMapper(nameOf(propertyStore.collectionType), varKey(key), `id: '${nestedMapper.id}'`, formatOpts);\n }\n if (generics?.length) {\n this.schemes[schemaId] = propertyStore.schema;\n return (writer) => writer.callMapper(nestedMapper.id, varKey(key), formatOpts, `generics: schemes['${schemaId}'].nestedGenerics`);\n }\n return (writer) => writer.callMapper(nestedMapper.id, varKey(key), formatOpts);\n }\n mapOptions({ groups = false, useAlias = true, types, ...options }) {\n if (options.store instanceof JsonParameterStore) {\n return this.mapOptions(mapParamStoreOptions(options.store, options));\n }\n const customMappers = {};\n types = types || getJsonMapperTypes();\n types.forEach((mapper, model) => {\n if (![Array, Set, Map].includes(model)) {\n const typeName = nameOf(model);\n if (nameOf(model) in mapper) {\n this.addTypeMapper(model, mapper[typeName].bind(mapper));\n }\n else {\n this.addTypeMapper(model, (value, options) => mapper.deserialize(value, {\n ...options,\n type: model\n }));\n }\n }\n });\n return {\n ...options,\n additionalProperties: getValue(options, \"additionalProperties\", JsonMapperSettings.additionalProperties),\n disableUnsecureConstructor: getValue(options, \"disableUnsecureConstructor\", JsonMapperSettings.disableUnsecureConstructor),\n groups,\n useAlias,\n customMappers,\n generics: options.generics || []\n };\n }\n mapAdditionalProperties(entity, properties, groups) {\n const additionalProperties = entity.schema.get(\"additionalProperties\");\n const exclude = [...properties.values()].map((key) => `'${key}'`).join(\", \");\n const writer = new Writer();\n writer.add(\"// add additional properties\");\n let each = writer.each(\"objectKeys(input)\", [\"key\"]);\n if (exclude.length) {\n each = each.if(`![${exclude}].includes(key)`);\n }\n if (isClass(additionalProperties)) {\n const nestedMapper = this.compile(additionalProperties.getComputedType(), groups);\n each.set(\"obj[key]\", Writer.mapper(nestedMapper.id, \"input[key]\", \"options\"));\n return writer;\n }\n if (additionalProperties) {\n each.set(\"obj[key]\", \"input[key]\");\n return writer;\n }\n // dynamic additional properties options\n each.if(`options.additionalProperties && obj[key] === undefined`).set(\"obj[key]\", \"input[key]\");\n return writer;\n }\n mapObject(input, options) {\n return input;\n }\n mapSet(input, options) {\n if (isNil(input)) {\n return input;\n }\n const obj = new Set();\n objectKeys(input).forEach((key) => {\n obj.add(this.mapItem(input[key], options));\n });\n return obj;\n }\n mapArray(input, options) {\n if (isNil(input)) {\n return input;\n }\n return [].concat(input).map((item) => {\n return this.mapItem(item, options);\n });\n }\n mapMap(input, options) {\n if (isNil(input)) {\n return input;\n }\n const obj = new Map();\n objectKeys(input).forEach((key) => {\n obj.set(key, this.mapItem(input[key], options));\n });\n return obj;\n }\n mapItem(input, { id, ...options }) {\n return this.execMapper(id, input, options);\n }\n alterBeforeDeserialize(schemaId, value, options) {\n return alterBeforeDeserialize(value, this.schemes[schemaId], options);\n }\n alterAfterDeserialize(schemaId, value, options) {\n return alterAfterDeserialize(value, this.schemes[schemaId], options);\n }\n}\n","export function alterOnSerialize(schema, value, options) {\n return schema.$hooks.alter(\"onSerialize\", value, [options]);\n}\n","import { isFunction } from \"@tsed/core\";\nexport function getObjectProperties(obj) {\n return Object.entries(obj).filter(([, value]) => !isFunction(value));\n}\n","import { classOf, hasJsonMethod, isArray, isBoolean, isClassObject, isCollection, isDate, isMomentObject, isMongooseObject, isNil, isObject, isPrimitive, nameOf } from \"@tsed/core\";\nimport { getPropertiesStores, JsonEntityStore } from \"@tsed/schema\";\nimport { alterOnSerialize } from \"../hooks/alterOnSerialize\";\nimport { getObjectProperties } from \"../utils/getObjectProperties\";\nimport { JsonMapperCompiler } from \"./JsonMapperCompiler\";\nimport { getJsonMapperTypes } from \"./JsonMapperTypesContainer\";\nimport { Writer } from \"./Writer\";\nconst getCollectionType = (input) => {\n return isArray(input) ? \"Array\" : input instanceof Set ? \"Set\" : input instanceof Map ? \"Map\" : undefined;\n};\nfunction getBestType(type, obj) {\n const dataType = classOf(obj);\n if (dataType && !isClassObject(dataType) && !isCollection(obj)) {\n return dataType;\n }\n return type || Object;\n}\nfunction varKey(k) {\n return `__${k}`;\n}\nexport class JsonSerializer extends JsonMapperCompiler {\n constructor() {\n super();\n this.addTypeMapper(Object, this.mapObject.bind(this));\n this.addTypeMapper(Array, this.mapArray.bind(this));\n this.addTypeMapper(Map, this.mapMap.bind(this));\n this.addTypeMapper(Set, this.mapSet.bind(this));\n this.addGlobal(\"mapJSON\", this.mapJSON.bind(this));\n this.addTypeMapper(\"ObjectId\", (value) => String(value));\n }\n map(input, options = {}) {\n if (isNil(input)) {\n return input;\n }\n options = this.mapOptions(options);\n const model = getBestType(options.type, input);\n const mapper = this.compile(model, options.groups);\n return mapper.fn(input, this.createContext(options));\n }\n alterValue(schemaId, value, options) {\n return alterOnSerialize(this.schemes[schemaId], value, options);\n }\n createMapper(model, id, groups) {\n const entity = JsonEntityStore.from(model);\n const properties = new Set();\n const schemaProperties = [...getPropertiesStores(entity).values()];\n const writer = new Writer().arrow(\"input\", \"options\");\n writer.if(\"isNil(input)\").return(\"input\");\n // prepare options\n writer.const(\"obj\", \"{}\");\n writer.set(\"options\", \"{...options, self: input}\");\n // detect some special case\n writer.add(this.mapPrecondition(id));\n if (!schemaProperties.length) {\n return writer.return(\"isObject(input) ? {...input} : input\").root().toString();\n }\n // properties\n writer.add(...schemaProperties.flatMap((propertyStore) => {\n properties.add(propertyStore.propertyKey);\n if ((propertyStore.schema?.$ignore && isBoolean(propertyStore.schema?.$ignore)) ||\n (propertyStore.schema?.$hooks?.has(\"groups\") && this.alterGroups(propertyStore.schema, groups))) {\n return;\n }\n return this.mapProperty(propertyStore, id, groups);\n }));\n // discriminator\n writer.add(this.mapDiscriminatorKeyValue(entity));\n // additional properties\n writer.add(this.mapAdditionalProperties(entity, properties));\n return writer.return(\"obj\").root().toString();\n }\n mapOptions({ groups = false, useAlias = true, types, ...options }) {\n const customMappers = {};\n types = types || getJsonMapperTypes();\n types.forEach((mapper, model) => {\n if (![Array, Set, Map].includes(model)) {\n this.addTypeMapper(model, mapper.serialize.bind(mapper));\n }\n });\n return {\n ...options,\n groups,\n useAlias,\n customMappers\n };\n }\n mapProperty(propertyStore, id, groups) {\n const key = String(propertyStore.propertyKey);\n const aliasKey = String(propertyStore.parent.schema.getAliasOf(key) || key);\n const schemaId = this.getSchemaId(id, key);\n const format = propertyStore.itemSchema.get(\"format\");\n const formatOpts = format && `options: {format: '${format}'}`;\n let writer = new Writer().add(`// Map ${key} ${id} ${groups || \"\"}`);\n // ignore hook (deprecated)\n if (propertyStore.schema?.$hooks?.has(\"ignore\")) {\n this.schemes[schemaId] = propertyStore.schema;\n writer = writer.if(`!alterIgnore('${schemaId}', {...options, self: input})`);\n }\n // pre hook\n const hasSerializer = propertyStore.schema?.$hooks?.has(\"onSerialize\");\n let getter = `input.${key}`;\n if (hasSerializer) {\n this.schemes[schemaId] = propertyStore.schema;\n const opts = Writer.options(formatOpts);\n getter = `alterValue('${schemaId}', input.${key}, ${opts})`;\n }\n writer = writer.set(`let ${varKey(key)}`, getter).if(`${varKey(key)} !== undefined`);\n const fill = this.getPropertyFiller(propertyStore, key, groups, formatOpts);\n if (hasSerializer) {\n fill(writer.if(`${varKey(key)} === input.${key}`));\n }\n else {\n fill(writer);\n }\n if (aliasKey !== key) {\n writer.set(`obj[options.useAlias ? '${aliasKey}' : '${key}']`, varKey(key));\n }\n else {\n writer.set(`obj.${key}`, varKey(key));\n }\n return writer.root();\n }\n getPropertyFiller(propertyStore, key, groups, formatOpts) {\n const isGeneric = propertyStore.itemSchema.isGeneric;\n const hasDiscriminator = propertyStore.itemSchema.hasDiscriminator;\n if (propertyStore.isCollection) {\n const type = propertyStore.getBestType();\n let nestedMapper;\n if (hasDiscriminator) {\n const targetName = propertyStore.parent.targetName;\n nestedMapper = this.compile(`Discriminator:${targetName}:${key}`, groups, {\n mapper: () => this.createDiscriminatorMapper(propertyStore, groups)\n });\n }\n else {\n nestedMapper = isGeneric ? { id: \"\" } : this.compile(type, groups);\n }\n return (writer) => writer.callMapper(nameOf(propertyStore.collectionType), varKey(key), `id: '${nestedMapper.id}'`, formatOpts);\n }\n if (isGeneric) {\n return (writer) => writer.set(varKey(key), `compileAndMap(${varKey(key)}, options)`);\n }\n let nestedMapper;\n if (hasDiscriminator) {\n const targetName = propertyStore.parent.targetName;\n nestedMapper = this.compile(`Discriminator:${targetName}:${key}`, groups, {\n mapper: () => this.createDiscriminatorMapper(propertyStore, groups)\n });\n }\n else {\n nestedMapper = this.compile(propertyStore.getBestType(), groups);\n }\n return (writer) => writer.callMapper(nestedMapper.id, varKey(key), formatOpts);\n }\n createDiscriminatorMapper(propertyStore, groups) {\n const discriminator = propertyStore.itemSchema.discriminator();\n const writer = new Writer().arrow(\"input\", \"options\");\n const sw = writer.switch(`nameOf(classOf(input))`);\n discriminator.values.forEach((value, kind) => {\n const nestedMapper = this.compile(value, groups);\n sw.case(`'${nameOf(value)}'`).returnCallMapper(nestedMapper.id, \"input\");\n });\n return writer.root().toString();\n }\n mapPrecondition(id) {\n const writer = new Writer();\n writer.if(\"input && isCollection(input)\").return(Writer.mapperFrom(\"input\", `{...options, id: '${id}'}`));\n writer.if(\"hasJsonMethod(input)\").return(`mapJSON(input, {...options, id: '${id}'})`);\n return writer;\n }\n mapDiscriminatorKeyValue(entity) {\n if (entity.discriminatorAncestor) {\n const discriminator = entity.discriminatorAncestor.schema.discriminator();\n const type = discriminator.getDefaultValue(entity.target);\n if (type) {\n const writer = new Writer();\n writer.if(`!obj.${discriminator.propertyName}`).set(`obj.${discriminator.propertyName}`, `'${type}'`);\n return writer;\n }\n }\n }\n mapAdditionalProperties(entity, properties) {\n const additionalProperties = !!entity.schema.get(\"additionalProperties\");\n if (additionalProperties) {\n const exclude = [...properties.values()].map((key) => `'${key}'`).join(\", \");\n const writer = new Writer();\n writer.add(\"// add additional properties\");\n writer.each(\"objectKeys(input)\", [\"key\"]).if(`![${exclude}].includes(key)`).set(\"obj[key]\", \"input[key]\");\n return writer;\n }\n }\n mapObject(input, { type, ...options }) {\n if ((input && isPrimitive(input)) || !input) {\n // prevent mongoose mapping error\n return input;\n }\n if (input && isCollection(input)) {\n return this.execMapper(getCollectionType(input), input, options);\n }\n if (hasJsonMethod(input)) {\n return this.mapJSON(input, options);\n }\n return getObjectProperties(input)\n .filter(([, value]) => value !== undefined)\n .reduce((obj, [key, value]) => {\n if (isNil(value)) {\n return {\n ...obj,\n [key]: value\n };\n }\n const mapper = this.compile(classOf(value), options.groups);\n return {\n ...obj,\n [key]: mapper.fn(value, options)\n };\n }, {});\n }\n mapSet(input, options) {\n if (isNil(input)) {\n return input;\n }\n return [...input.values()].map((item) => {\n return this.mapItem(item, options);\n });\n }\n mapArray(input, options) {\n if (isNil(input)) {\n return input;\n }\n return [].concat(input).map((item) => {\n return this.mapItem(item, options);\n });\n }\n mapMap(input, options) {\n if (isNil(input)) {\n return input;\n }\n return [...input.entries()].reduce((obj, [key, item]) => {\n return {\n ...obj,\n [key]: this.mapItem(item, options)\n };\n }, {});\n }\n mapItem(input, { id, ...options }) {\n if (!id && input) {\n return this.compile(classOf(input), options.groups).fn(input, options);\n }\n return id ? this.execMapper(id, input, options) : input;\n }\n mapJSON(input, { id, ...options }) {\n if (isMongooseObject(input)) {\n return input.toJSON({ ...options, id });\n }\n id = id || nameOf(classOf(input));\n if (this.mappers[id] && (isDate(input) || isMomentObject(input))) {\n return this.execMapper(id, input, options);\n }\n input = input.toJSON();\n return isObject(input) ? this.execMapper(id, input, options) : input;\n }\n}\n","import \"../components/DateMapper\";\nimport \"../components/PrimitiveMapper\";\nimport \"../components/SymbolMapper\";\nimport { JsonDeserializer } from \"../domain/JsonDeserializer\";\nconst deserializer = new JsonDeserializer();\nexport function deserialize(input, options) {\n return deserializer.map(input, options);\n}\n","import \"../components/DateMapper\";\nimport \"../components/PrimitiveMapper\";\nimport \"../components/SymbolMapper\";\nimport { JsonSerializer } from \"../domain/JsonSerializer\";\nconst serializer = new JsonSerializer();\nexport function serialize(input, options) {\n return serializer.map(input, options);\n}\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__803__","__WEBPACK_EXTERNAL_MODULE__953__","JsonMapperCompiler","cache","Map","mappers","schemes","constructors","globals","isCollection","isClass","isObject","classOf","nameOf","hasJsonMethod","isMongooseObject","isNil","isDate","objectKeys","isMomentObject","constructor","this","addGlobal","alterIgnore","bind","alterValue","execMapper","map","addTypeMapper","model","fn","id","set","removeTypeMapper","store","get","delete","key","value","eval","mapper","injectGlobals","Object","keys","name","join","groupsId","createContext","options","compile","groups","opts","token","isString","getType","getGroupsId","storeGroups","has","getId","createMapper","err","Error","message","isObjectID","toString","type","Array","Set","find","t","ancestorsOf","includes","result","$hooks","alter","alterGroups","schema","length","getRandomId","getSchemaId","propertyKey","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","__decorate","decorators","target","desc","c","arguments","getOwnPropertyDescriptor","Reflect","decorate","i","create","SuppressedError","JsonMapperTypesContainer","registerJsonTypeMapper","getJsonMapperTypes","JsonMapper","types","forEach","DateMapper","deserialize","data","isBoolean","Date","serialize","object","toISOString","isNullish","CastError","super","PrimitiveMapper","ctx","String","Boolean","Number","isNaN","BigInt","SymbolMapper","for","replace","AfterDeserialize","cb","JsonEntityFn","storedJson","on","BeforeDeserialize","OnDeserialize","OnSerialize","alterAfterDeserialize","alterBeforeDeserialize","alterOnDeserialize","JsonMapperSettings","disableUnsecureConstructor","additionalProperties","Writer","static","assign","args","filter","_root","body","_indent","lines","p","mapperId","add","line","push","arrow","writer","new","build","flatMap","item","callMapper","returnCallMapper","return","const","each","iterable","if","condition","IfWriter","switch","input","sw","SwitchWriter","indent","left","right","elseWriter","else","flat","case","from","entries","varKey","k","JsonDeserializer","newInstanceOf","mapObject","mapArray","mapMap","mapSet","collectionType","isEmpty","isDeserializable","mapOptions","isArray","WeakMap","WeakSet","er","entity","JsonEntityStore","properties","schemaProperties","getPropertiesStores","values","hasDiscriminator","mapDiscriminator","genericLabels","propertyStore","propertyName","parent","getAliasOf","$ignore","isGetterOnly","mapProperty","mapAdditionalProperties","schemaId","discriminator","kind","nestedMapper","aliasKey","format","itemSchema","formatOpts","pick","hasDeserializer","ifWriter","getPropertyFiller","fill","generics","nestedGenerics","isGeneric","index","indexOf","genericType","getGenericIndex","base","getBestType","useAlias","JsonParameterStore","parameter","mapParamStoreOptions","typeName","getValue","customMappers","exclude","getComputedType","mapItem","concat","alterOnSerialize","getObjectProperties","isFunction","JsonSerializer","mapJSON","dataType","isClassObject","mapPrecondition","mapDiscriminatorKeyValue","hasSerializer","targetName","createDiscriminatorMapper","mapperFrom","discriminatorAncestor","getDefaultValue","isPrimitive","getCollectionType","reduce","toJSON","deserializer","serializer"],"sourceRoot":""}
1
+ {"version":3,"file":"json-mapper.umd.min.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,EAAQG,QAAQ,cAAeA,QAAQ,iBAC/B,mBAAXC,QAAyBA,OAAOC,IAC9CD,OAAO,CAAC,aAAc,gBAAiBJ,GACb,iBAAZC,QACdA,QAAQ,qBAAuBD,EAAQG,QAAQ,cAAeA,QAAQ,iBAEtEJ,EAAK,qBAAuBC,EAAQD,EAAK,cAAeA,EAAK,gBAC9D,CATD,CASGO,MAAM,CAACC,iCAAkCC,mC,8WCRrC,MAAMC,mBAKTC,MAAQ,IAAIC,IAKZC,QAAU,CAAC,EAKXC,QAAU,CAAC,EAKXC,aAAe,CAAC,EAKhBC,QAAU,CACNC,aAAY,qDACZC,QAAO,gDACPC,SAAQ,iDACRC,QAAO,gDACPC,OAAM,+CACNC,cAAa,sDACbC,iBAAgB,yDAChBC,MAAK,8CACLC,OAAM,+CACNC,WAAU,mDACVC,eAAc,wDAElBC,cACIC,KAAKC,UAAU,cAAeD,KAAKE,YAAYC,KAAKH,OACpDA,KAAKC,UAAU,aAAcD,KAAKI,WAAWD,KAAKH,OAClDA,KAAKC,UAAU,aAAcD,KAAKK,WAAWF,KAAKH,OAClDA,KAAKC,UAAU,gBAAiBD,KAAKM,IAAIH,KAAKH,MAClD,CACAO,cAAcC,EAAOC,GACjB,MAAMC,GAAK,0CAAAlB,QAAOgB,GAMlB,OALAR,KAAKlB,MAAM6B,IAAIH,GAAO,IAAIzB,KAAM4B,IAAI,aAAc,CAC9CD,KACAD,QAEJT,KAAKhB,QAAQ0B,GAAMD,EACZT,IACX,CACAY,iBAAiBJ,GACb,MAAMK,EAAQb,KAAKlB,MAAMgC,IAAIN,GAC7B,GAAIK,EAAO,CACP,MAAM,GAAEH,GAAOG,EAAMC,IAAI,qBAClBd,KAAKhB,QAAQ0B,GACpBV,KAAKlB,MAAMiC,OAAOP,EACtB,CACJ,CACAP,UAAUe,EAAKC,GAEX,OADAjB,KAAKb,QAAQ6B,GAAOC,EACbjB,IACX,CACAkB,KAAKC,QAAQ,GAAI,SAAU,QACvBnB,KAAKC,UAAU,QAASD,KAAKlB,OAC7B,MAAM,QAAS,SAAckB,KACvBoB,cAAgBC,OAAOC,KAAKnC,SAC7BmB,KAAKiB,GACC,SAASA,eAAkBA,OAEjCC,KAAK,MACVN,KAAK,GAAGE,+DAE4BV,YAAYS,aAChD,MAAMN,MAAQb,KAAKlB,MAAMgC,IAAIN,OAAOM,IAAIW,UAExC,OADAzB,KAAKhB,QAAQ0B,IAAMG,MAAMJ,GAClBI,KACX,CACAa,cAAcC,GACV,MAAM,MAAE7C,GAAUkB,KAClB,MAAO,IACA2B,EACH7C,QAER,CACA8C,QAAQpB,EAAOqB,EAAQC,EAAO,CAAC,GAC3B,MAAMC,GAAQ,0CAAAC,UAASxB,GAASA,EAAQR,KAAKiC,QAAQzB,GAC/CiB,EAAWzB,KAAKkC,YAAYL,GAClC,IAAIM,EAAcnC,KAAKlB,MAAMgC,IAAIiB,IAAU/B,KAAKlB,MAAMgC,KAAI,0CAAAtB,QAAOuC,IAKjE,GAJKI,IACDA,EAAc,IAAIpD,IAClBiB,KAAKlB,MAAM6B,IAAIoB,EAAOI,IAEtBA,EAAYC,IAAI,cAChB,OAAOD,EAAYrB,IAAI,cAG3B,IAAKqB,EAAYC,IAAIX,GAAW,CAC5B,MAAMf,EAAKV,KAAKqC,MAAMN,EAAON,GAE7BU,EAAYxB,IAAIc,EAAU,CACtBf,OAEJ,MAAMS,EAASW,EAAKX,OAASW,EAAKX,OAAOT,EAAImB,GAAU7B,KAAKsC,aAAaP,EAAOrB,EAAImB,GACpF,IACI,OAAO7B,KAAKkB,KAAKC,EAAQ,CAAET,KAAIF,MAAOuB,EAAON,YAIjD,CAFA,MAAOc,GACH,MAAM,IAAIC,MAAM,+BAA8B,0CAAAhD,QAAOgB,4BAAgC+B,EAAIE,aAAatB,IAC1G,CACJ,CACA,OAAOgB,EAAYrB,IAAIW,EAC3B,CACApB,WAAWK,EAAIO,EAAOU,GAClB,OAAI,0CAAAe,YAAWzB,GACJA,EAAM0B,WAEV3C,KAAKhB,QAAQ0B,GAAIO,EAAOU,EACnC,CACAM,QAAQzB,GACJ,IAAKA,EACD,OAAOa,OAEX,IAAI,0CAAAhC,SAAQmB,MAAW,0CAAApB,cAAaoB,GAAQ,CACxC,MAAMoC,EAAO,CAACC,MAAO9D,IAAK+D,KAAKC,MAAMC,IAAM,0CAAAC,aAAYzC,GAAO0C,SAASF,KACvE,GAAIJ,EACA,OAAOA,CAEf,CACA,OAAOpC,CACX,CACAN,YAAYQ,EAAIiB,GACZ,IAAIwB,EAASnD,KAAKf,QAAQyB,IAAK0C,QAAQC,MAAM,UAAU,EAAO,CAAC1B,IAC/D,GAAIwB,EACA,OAAOA,CAEf,CACAG,YAAYC,EAAQ1B,GAChB,OAAe,IAAXA,GACO0B,EAAOH,OAAOC,MAAM,UAAU,EAAO,CAACxB,GAGrD,CACAK,YAAYL,GACR,OAAe,IAAXA,EACO,UAEW,IAAlBA,EAAO2B,OACA,IAEJ3B,EAAOL,KAAK,IACvB,CACAa,MAAM7B,EAAOiB,GACT,MAAO,IAAG,0CAAAO,UAASxB,GAASA,GAAQ,0CAAAhB,QAAOgB,OAAU,0CAAAiD,kBAAiBhC,GAC1E,CACAiC,YAAYhD,EAAIiD,GACZ,MAAO,GAAGjD,KAAMiD,GACpB,E,UChKJrF,EAAOD,QAAUM,gC,UCAjBL,EAAOD,QAAUO,gC,GCCbgF,yBAA2B,CAAC,EAGhC,SAASC,oBAAoBC,GAE5B,IAAIC,EAAeH,yBAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAa1F,QAGrB,IAAIC,EAASsF,yBAAyBE,GAAY,CAGjDzF,QAAS,CAAC,GAOX,OAHA4F,oBAAoBH,GAAUxF,EAAQA,EAAOD,QAASwF,qBAG/CvF,EAAOD,OACf,CCrBAwF,oBAAoBK,EAAK5F,IACxB,IAAI6F,EAAS7F,GAAUA,EAAO8F,WAC7B,IAAO9F,EAAiB,QACxB,IAAM,EAEP,OADAuF,oBAAoBQ,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CAAM,ECLdN,oBAAoBQ,EAAI,CAAChG,EAASkG,KACjC,IAAI,IAAIvD,KAAOuD,EACXV,oBAAoBW,EAAED,EAAYvD,KAAS6C,oBAAoBW,EAAEnG,EAAS2C,IAC5EK,OAAOoD,eAAepG,EAAS2C,EAAK,CAAE0D,YAAY,EAAM5D,IAAKyD,EAAWvD,IAE1E,ECND6C,oBAAoBW,EAAI,CAACG,EAAKC,IAAUvD,OAAOwD,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFf,oBAAoBmB,EAAK3G,IACH,oBAAX4G,QAA0BA,OAAOC,aAC1C7D,OAAOoD,eAAepG,EAAS4G,OAAOC,YAAa,CAAEjE,MAAO,WAE7DI,OAAOoD,eAAepG,EAAS,aAAc,CAAE4C,OAAO,GAAO,E,uCCiDvD,SAASkE,EAAWC,EAAYC,EAAQrE,EAAKsE,GAClD,IAA2HjB,EAAvHkB,EAAIC,UAAUhC,OAAQwB,EAAIO,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOjE,OAAOoE,yBAAyBJ,EAAQrE,GAAOsE,EACrH,GAAuB,iBAAZI,SAAoD,mBAArBA,QAAQC,SAAyBX,EAAIU,QAAQC,SAASP,EAAYC,EAAQrE,EAAKsE,QACpH,IAAK,IAAIM,EAAIR,EAAW5B,OAAS,EAAGoC,GAAK,EAAGA,KAASvB,EAAIe,EAAWQ,MAAIZ,GAAKO,EAAI,EAAIlB,EAAEW,GAAKO,EAAI,EAAIlB,EAAEgB,EAAQrE,EAAKgE,GAAKX,EAAEgB,EAAQrE,KAASgE,GAChJ,OAAOO,EAAI,GAAKP,GAAK3D,OAAOoD,eAAeY,EAAQrE,EAAKgE,GAAIA,CAC9D,C,glBA6F6B3D,OAAOwE,OA0GXxE,OAAOwE,OAyDkB,mBAApBC,iBAAiCA,gB,+BCvT/D,MAAMC,EAA2B,IAAIhH,IAI9B,SAASiH,EAAuBpD,EAAMb,GACzCgE,EAAyBpF,IAAIiC,EAAM,IAAIb,EAC3C,CAIO,SAASkE,IACZ,OAAOF,CACX,CCVO,SAASG,KAAcC,GAC1B,OAAQd,IACJc,EAAMC,SAASxD,IACXoD,EAAuBpD,EAAMyC,EAAO,GACtC,CAEV,CCJA,IAAIgB,EAAa,MACbC,YAAYC,GAIR,OAAI,IAAAC,WAAUD,IAAV,MAAmBA,EACZA,EAEJ,IAAIE,KAAKF,EACpB,CACAG,UAAUC,GACN,OAAOA,EAAS,IAAIF,KAAKE,GAAQC,cAAgBD,CACrD,GCjBJ,SAASE,EAAUN,GACf,MAAO,CAAC,KAAM,QAAQrD,SAASqD,EACnC,CDiBAF,EAAalB,EAAW,CACpBe,EAAWO,OACZJ,GClBI,MAAMS,UAAkBtE,MAC3BjB,KAAO,aACPxB,YAAY0C,GACRsE,MAAM,eAAetE,IACzB,EAOJ,IAAIuE,EAAkB,MAClBV,YAAYC,EAAMU,GACd,OAAOjH,MAAK,IAAAR,QAAOyH,EAAIrE,OAAS5C,MAAK,IAAAR,QAAOyH,EAAIrE,OAAO2D,EAAMU,QAAOjD,CACxE,CACA0C,UAAUC,EAAQM,GACd,OAAOjH,MAAK,IAAAR,QAAOyH,GAAKrE,QAA4B,iBAAX+D,EAAsB3G,MAAK,IAAAR,QAAOyH,EAAIrE,OAAO+D,EAAQM,GAAON,CACzG,CACAO,OAAOX,GACH,OAAgB,OAATA,EAAgB,KAAO,GAAKA,CACvC,CACAY,QAAQZ,GACJ,QAAI,CAAC,OAAQ,KAAK,GAAMrD,SAASqD,KAE7B,CAAC,QAAS,KAAK,GAAOrD,SAASqD,KAE/BM,EAAUN,GACH,UACEvC,IAATuC,IAEKA,OAFT,EAGJ,CACAa,OAAOb,GACH,GAAIM,EAAUN,GACV,OAAO,KACX,QAAavC,IAATuC,EACA,OAAOA,EACX,MAAMrC,GAAKqC,EACX,GAAIc,MAAMnD,GACN,MAAM,IAAI4C,EAAU,qCAExB,OAAO5C,CACX,CACAoD,OAAOf,GACH,OAAIM,EAAUN,GACH,KACJe,OAAOf,EAClB,GAEJS,EAAkB7B,EAAW,CACzBe,EAAWgB,OAAQE,OAAQD,QAASG,SACrCN,GCjDH,IAAIO,EAAe,MACfjB,YAAYC,GACR,OAAOtB,OAAOuC,IAAIjB,EACtB,CACAG,UAAUC,GACN,OAAOA,EAAOhE,WAAW8E,QAAQ,UAAW,IAAIA,QAAQ,IAAK,GACjE,GAEJF,EAAepC,EAAW,CACtBe,EAAWjB,SACZsC,G,+BCWI,SAASG,EAAiBC,GAC7B,OAAO,IAAAC,eAAcC,IACjBA,EAAWtE,OAAOH,OAAO0E,GAAG,mBAAoBH,EAAG,GAE3D,CCJO,SAASI,EAAkBJ,GAC9B,OAAO,IAAAC,eAAcC,IACjBA,EAAWtE,OAAOH,OAAO0E,GAAG,oBAAqBH,EAAG,GAE5D,CCdO,SAASK,EAAcL,GAC1B,OAAO,IAAAC,eAAcC,IACjBA,EAAWtE,OAAOH,OAAO0E,GAAG,gBAAiBH,EAAG,GAExD,CCJO,SAASM,EAAYN,GACxB,OAAO,IAAAC,eAAcC,IACjBA,EAAWtE,OAAOH,OAAO0E,GAAG,cAAeH,EAAG,GAEtD,CCvBO,SAASO,EAAsB3B,EAAMhD,EAAQ5B,GAChD,OAAO4B,GAAQH,QAAQC,MAAM,mBAAoBkD,EAAM,CAAC5E,GAC5D,CCFO,SAASwG,EAAuB5B,EAAMhD,EAAQ5B,GACjD,OAAO4B,GAAQH,QAAQC,MAAM,oBAAqBkD,EAAM,CAAC5E,GAC7D,CCFO,SAASyG,EAAmB7E,EAAQtC,EAAOU,GAC9C,OAAO4B,EAAOH,OAAOC,MAAM,gBAAiBpC,EAAO,CAACU,GACxD,C,+BCFO,MAAM0G,EAAqB,CAC9BC,4BAA4B,EAC5BC,sBAAsB,GCFnB,MAAMC,EACTC,cAAgB,CACZC,OAAM,IAAIC,IACC,KAAKA,EAAKC,OAAOzB,SAAS3F,KAAK,WAG9CqH,MACAC,KAAO,GACPC,QACAhJ,YAAY5B,GACR6B,KAAK6I,MAAQ1K,CACjB,CACAsK,cAAcO,GACV,OAAOA,EAAM1I,KAAK2I,GAAM,KAAKA,KACjC,CACAR,cAAcS,EAAUlI,EAAKW,GACzB,MAAO,eAAeuH,OAAclI,MAAQW,IAChD,CACA8G,kBAAkBzH,EAAKW,GACnB,MAAO,6BAA6BX,QAAUA,MAAQW,IAC1D,CACA8G,kBAAkBE,GAEd,OADAA,EAAOA,EAAKC,OAAOzB,UACN3D,OAAqBgF,EAAO7B,OAAO+B,OAAO,gBAAiBC,GAAlD,SAC1B,CACAQ,OAAOH,GAGH,OAFAA,EAAQA,EAAMJ,QAAQQ,QAAkBpF,IAAToF,KACzB5F,QAAUxD,KAAK8I,KAAKO,QAAQL,GAC3BhJ,IACX,CACAsJ,SAASX,GACL3I,KAAKmJ,IAAI,IAAIR,WACb,MAAMY,EAASvJ,KAAKwJ,MAEpB,OADAxJ,KAAKmJ,IAAI,KACFI,CACX,CACAE,QACI,MAAMtG,EAASnD,KAAK8I,KAAKY,SAASN,GACvBA,aAAgBZ,EAASY,EAAKK,QAAUL,IAEnD,OAAOpJ,KAAK+I,QAAU5F,EAAO7C,KAAKqJ,GAAS,KAAOA,IAAQxG,CAC9D,CACAyG,WAAWlJ,EAAIM,KAAQW,GACnB,OAAO3B,KAAKW,IAAIK,EAAKwH,EAAOrH,OAAOT,EAAIM,EAAKwH,EAAO7G,WAAWA,IAClE,CACAkI,iBAAiBnJ,EAAIM,KAAQW,GACzB,OAAO3B,KAAK8J,OAAOtB,EAAOrH,OAAOT,EAAIM,EAAKwH,EAAO7G,WAAWA,IAChE,CACAoI,MAAMxI,EAAM6H,GAER,OADApJ,KAAKmJ,IAAI,SAAS5H,OAAU6H,MACrBpJ,IACX,CACAgK,KAAKC,EAAUtB,EAAO,IAClB,MAAMY,EAASvJ,KAAKmJ,IAAIc,EAAW,aAAetB,EAAKnH,KAAK,MAAQ,UAAUgI,MAE9E,OADAxJ,KAAKmJ,IAAI,OACFI,CACX,CACAW,GAAGC,GACC,MAAMZ,EAAS,IAAIa,EAASD,EAAWnK,MAEvC,OADAA,KAAKmJ,IAAII,GACFA,CACX,CACAc,OAAOC,GACH,MAAMC,EAAK,IAAIC,EAAaF,GAE5B,OADAtK,KAAKmJ,IAAIoB,GACFA,CACX,CACAE,OAAOA,GAEH,OADAzK,KAAK+I,QAAU0B,EACRzK,IACX,CACAwJ,IAAIiB,GAAS,GACT,MAAMlB,EAAS,IAAIf,EAAOxI,KAAK7B,QAG/B,OAFAoL,EAAOkB,OAAOA,GACdzK,KAAKmJ,IAAII,GACFA,CACX,CACAO,OAAOV,GAEH,OADApJ,KAAKmJ,IAAI,UAAUC,MACZpJ,KAAK7B,MAChB,CACAA,OACI,OAAO6B,KAAK6I,OAAS7I,IACzB,CACAW,IAAI+J,EAAMC,GAEN,OADA3K,KAAKmJ,IAAI,GAAGuB,OAAUC,MACf3K,IACX,CACA2C,WACI,OAAO3C,KAAKyJ,QAAQjI,KAAK,KAC7B,EAEJ,MAAM4I,UAAiB5B,EACnB2B,UACAS,WACA7K,YAAYoK,EAAWhM,GACnB4I,QACA/G,KAAKmK,UAAYA,EACjBnK,KAAK6I,MAAQ1K,CACjB,CACA0M,OACI,MAAMtB,EAAS,IAAIf,EAAOxI,KAAK6I,OAE/B,OADA7I,KAAK4K,WAAarB,EACXA,CACX,CACAE,QACI,MAAO,CACH,OAAOzJ,KAAKmK,kBACT3B,EAAOiC,OAAO1D,MAAM0C,SACvB,IACAzJ,KAAK4K,WAAa,CAAC,YAAapC,EAAOiC,OAAOzK,KAAK4K,WAAWnB,SAAU,KAAO,IACjFqB,MACN,EAEJ,MAAMN,UAAqBhC,EACvB8B,MACA,GAAO,IAAIvL,IACXgB,YAAYuK,GACRvD,QACA/G,KAAKsK,MAAQA,CACjB,CACAS,KAAKZ,GACD,MAAMZ,EAAS,IAAIf,EAEnB,OADAxI,MAAK,EAAKW,IAAIwJ,EAAWZ,GAClBA,CACX,CACAE,QACI,MAAO,CACH,WAAWzJ,KAAKsK,cACb9B,EAAOiC,OAAO5H,MAAMmI,KAAKhL,MAAK,EAAKiL,WAAWvB,SAAQ,EAAES,EAAWZ,KAC3D,CAAe,YAAdY,EAA0B,GAAGA,KAAe,QAAQA,QAAiB3B,EAAOiC,OAAOlB,EAAOE,aAEtG,KACFqB,MACN,ECvHJ,SAASI,EAAOC,GACZ,MAAO,KAAKA,GAChB,CAeO,MAAMC,UAAyBvM,EAAA,EAKlCK,aAAe,CAAC,EAChBa,cACIgH,QACA/G,KAAKC,UAAU,gBAAiBD,KAAKqL,cAAclL,KAAKH,OACxDA,KAAKC,UAAU,yBAA0BD,KAAKmI,uBAAuBhI,KAAKH,OAC1EA,KAAKC,UAAU,wBAAyBD,KAAKkI,sBAAsB/H,KAAKH,OACxEA,KAAKO,cAAcc,OAAQrB,KAAKsL,UAAUnL,KAAKH,OAC/CA,KAAKO,cAAcsC,MAAO7C,KAAKuL,SAASpL,KAAKH,OAC7CA,KAAKO,cAAcxB,IAAKiB,KAAKwL,OAAOrL,KAAKH,OACzCA,KAAKO,cAAcuC,IAAK9C,KAAKyL,OAAOtL,KAAKH,OACzCA,KAAKO,cAAc,YAAaU,GAAUiG,OAAOjG,IACrD,CACAX,IAAIgK,EAAO3I,EAAU,CAAC,GAElB,IA1CR,SAA0BgD,EAAKhD,GAC3B,QAAOA,EAAQ+J,iBAAkB,IAAA/L,OAAMgF,SAAiBX,IAARW,IAGvC,IAAAgH,SAAQhK,EAAQiB,OAAUjB,EAAQiB,OAASvB,SAAWM,EAAQ+J,eAC3E,CAqCaE,CAAiBtB,EADtB3I,EAAU3B,KAAK6L,WAAWlK,IAEtB,OAAO2I,GAEN3I,EAAQ+J,iBAAkB,IAAAI,SAAQxB,KACnC3I,EAAQ+J,eAAiB7I,OAE7B,MAAMrC,EAAQmB,EAAQiB,OAAQ,IAAArD,SAAQ+K,GAChCnJ,EAASnB,KAAK4B,QAAQpB,EAAOmB,EAAQE,QAC3C,OAAIF,EAAQ+J,eACiB1L,KAAK4B,QAAQD,EAAQ+J,eAAgB/J,EAAQE,QAC9CpB,GAAG6J,EAAO,IAAK3I,EAASjB,GAAIS,EAAOT,KAExDS,EAAOV,GAAG6J,EAAOtK,KAAK0B,cAAcC,GAC/C,CACAC,QAAQpB,EAAOqB,GACX,GAAI,CAACkK,QAASC,SAAS9I,SAAS1C,GAC5B,MAAM,IAAIgC,MAAM,IAAG,IAAAhD,QAAOgB,sCAE9B,OAAOuG,MAAMnF,QAAQpB,EAAOqB,EAChC,CACAX,KAAKC,GAAQ,GAAET,EAAE,SAAEe,EAAQ,MAAEjB,IAEzB,OADAR,KAAKd,aAAawB,GAAMF,EACjBuG,MAAM7F,KAAKC,EAAQ,CAAET,KAAIe,WAAUjB,SAC9C,CACA6K,cAAc3K,EAAIiE,EAAKhD,GACnB,IACI,OAAO,IAAI3B,KAAKd,aAAawB,GAAIiB,EAAQ2G,2BAA6B,CAAC,EAAI3D,EAI/E,CAFA,MAAOsH,GACH,OAAOtH,CACX,CACJ,CACArC,aAAa9B,EAAOE,EAAImB,GACpB,MAAMqK,EAAS,EAAAC,gBAAA,KAAqB3L,GAC9B4L,EAAa,IAAItJ,IACjBuJ,EAAmB,KAAI,IAAAC,qBAAoBJ,GAAQK,UACnDhD,GAAS,IAAIf,GAASc,MAAM,QAAS,WAkC3C,OAjCAC,EAAOW,GAAG,gBAAgBJ,OAAO,SAC7BoC,EAAO3I,OAAOiJ,kBACdjD,EAAOJ,IAAInJ,KAAKyM,iBAAiBP,EAAQrK,IAGzCqK,EAAO3I,OAAOH,QAAQhB,IAAI,uBAC1BpC,KAAKf,QAAQyB,GAAMwL,EAAO3I,OAC1BgG,EAAO5I,IAAI,QAAS,2BAA2BD,wBAGnD6I,EAAOQ,MAAM,WAAY,uBACrBmC,EAAO3I,OAAOmJ,eAAelJ,OAC7B+F,EAAO5I,IAAI,UAAW,uEAGtB4I,EAAO5I,IAAI,UAAW,6BAE1B4I,EAAOQ,MAAM,MAAO,kBAAkBrJ,uBAEtC6I,EAAOJ,OAAOkD,EAAiB3C,SAASiD,IACpC,MAAM3L,EAAM2L,EAAcC,aAG1B,GADAR,EAAWjD,IAAIjC,OAAOyF,EAAcE,OAAOtJ,OAAOuJ,WAAW9L,IAAQA,MAChE2L,EAAcpJ,QAAQwJ,UAAW,IAAAvG,WAAUmG,EAAcpJ,QAAQwJ,UAClEJ,EAAcK,gBACbL,EAAcpJ,QAAQH,QAAQhB,IAAI,WAAapC,KAAKsD,YAAYqJ,EAAcpJ,OAAQ1B,IAG3F,OAAO7B,KAAKiN,YAAYN,EAAejM,EAAImB,EAAO,KAGtD0H,EAAOJ,IAAInJ,KAAKkN,wBAAwBhB,EAAQE,EAAYvK,IAExDqK,EAAO3I,OAAOH,QAAQhB,IAAI,qBAC1BpC,KAAKf,QAAQyB,GAAMwL,EAAO3I,OACnBgG,EAAOO,OAAO,0BAA0BpJ,qBAAsBvC,OAAOwE,YAEzE4G,EAAOO,OAAO,OAAO3L,OAAOwE,UACvC,CACAvC,WAAW+M,EAAUlM,EAAOU,GACxB,OAAOyG,EAAmBpI,KAAKf,QAAQkO,GAAWlM,EAAOU,EAC7D,CACA8K,iBAAiBP,EAAQrK,GACrB,MAAM0H,EAAS,IAAIf,EACb4E,EAAgBlB,EAAO3I,OAAO6J,gBAC9B7C,EAAKhB,EAAOc,OAAO,UAAU+C,EAAcR,kBAKjD,OAJAQ,EAAcb,OAAOnG,SAAQ,CAACnF,EAAOoM,KACjC,MAAMC,EAAetN,KAAK4B,QAAQX,EAAOY,GACzC0I,EAAGQ,KAAK,IAAIsC,MAASxD,iBAAiByD,EAAa5M,GAAI,QAAQ,IAE5D6I,CACX,CACA0D,YAAYN,EAAejM,EAAImB,GAC3B,MAAMb,EAAMkG,OAAOyF,EAAchJ,aAC3B4J,EAAWrG,OAAOyF,EAAcE,OAAOtJ,OAAOuJ,WAAW9L,IAAQA,GACjEmM,EAAWnN,KAAK0D,YAAYhD,EAAIM,GAChCwM,EAASb,EAAcc,WAAW3M,IAAI,UACtC4M,EAAaF,GAAU,sBAAsBA,MACnD,IAAIjE,GAAS,IAAIf,GAASW,IAAI,UAAUnI,KAAON,KAAMmB,GAAU,MAC/D,MAAM8L,EAAO3M,IAAQuM,EAAW,uBAAuBA,SAAgBvM,KAAS,IAAIA,KAEhF2L,EAAcpJ,QAAQH,QAAQhB,IAAI,YAClCpC,KAAKf,QAAQkO,GAAYR,EAAcpJ,OACvCgG,EAASA,EAAOW,GAAG,iBAAiBiD,mCAGxC,MAAMS,EAAkBjB,EAAcpJ,QAAQH,QAAQhB,IAAI,iBAC1D,IAAI+B,EAAS,SAASwJ,KAClBC,IACA5N,KAAKf,QAAQkO,GAAYR,EAAcpJ,OAEvCY,EAAS,eAAegJ,aAAoBQ,OAD/BnF,EAAO7G,QAAQ+L,OAGhC,MAAMG,EAAWtE,EAAO5I,IAAI,OAAOuK,EAAOlK,KAAQmD,GAAQ+F,GAAG,GAAGgB,EAAOlK,oBAYvE,OAXahB,KAAK8N,kBAAkBnB,EAAejM,EAAImB,EAAQ6L,EAE3DK,CADAH,EACKC,EAAS3D,GAAG,GAAGgB,EAAOlK,gBAAkBA,KAGxC6M,GAETA,EAASlN,IAAI,OAAOK,IAAOkK,EAAOlK,IAC9Ba,GAAUA,EAAOqB,SAAS,YAC1B2K,EAAShD,OAAO1B,IAAI,cAAcnI,KAE/BuI,EAAOpL,MAClB,CACA2P,kBAAkBnB,EAAejM,EAAImB,EAAQ6L,GACzC,MAAM1M,EAAMkG,OAAOyF,EAAchJ,aAC3BwJ,EAAWnN,KAAK0D,YAAYhD,EAAIM,GAChCgN,EAAWrB,EAAcc,WAAWQ,eAE1C,GADkBtB,EAAcc,WAAWS,YAAcF,GAAUxK,OACpD,CACX,MAAM2K,EAxJlB,SAAyBxB,GACrB,OAAOA,EAAcE,OAAOtJ,OAAOmJ,cAAc0B,QAAQzB,EAAcc,WAAWY,YACtF,CAsJ0BC,CAAgB3B,GACxB7K,EAAO0G,EAAO7G,QAAQ+L,EAAY,kBAAkBS,MAC1D,OAAQ5E,GAAWA,EAAO5I,IAAIuK,EAAOlK,GAAM,iBAAiBkK,EAAOlK,OAASc,KAChF,CACA,MAAMc,EAAO+J,EAAcc,WAAWjB,iBAAmBG,EAAcc,WAAWL,gBAAgBmB,KAAO5B,EAAc6B,cACjHlB,EAAetN,KAAK4B,QAAQgB,EAAMf,GACxC,OAAI8K,EAAcvN,aACNmK,GAAWA,EAAOK,YAAW,IAAApK,QAAOmN,EAAcjB,gBAAiBR,EAAOlK,GAAM,QAAQsM,EAAa5M,MAAOgN,GAEpHM,GAAUxK,QACVxD,KAAKf,QAAQkO,GAAYR,EAAcpJ,OAC/BgG,GAAWA,EAAOK,WAAW0D,EAAa5M,GAAIwK,EAAOlK,GAAM0M,EAAY,sBAAsBP,uBAEjG5D,GAAWA,EAAOK,WAAW0D,EAAa5M,GAAIwK,EAAOlK,GAAM0M,EACvE,CACA7B,YAAW,OAAEhK,GAAS,EAAK,SAAE4M,GAAW,EAAI,MAAEtI,KAAUxE,IACpD,OAAIA,EAAQd,iBAAiB,EAAA6N,mBAClB1O,KAAK6L,WApLxB,SAA8BhL,EAAOc,GACjC,MAAO,IACAA,EACHd,WAAOmD,EACPpB,KAAM/B,EAAM2N,cACZ9C,eAAgB7K,EAAM6K,eACtB7J,OAAQhB,EAAM8N,UAAU9M,OAExBmM,SAAUnN,EAAMoN,eAExB,CA0KmCW,CAAqBjN,EAAQd,MAAOc,MAG/DwE,EAAQA,GAASF,KACXG,SAAQ,CAACjF,EAAQX,KACnB,IAAK,CAACqC,MAAOC,IAAK/D,KAAKmE,SAAS1C,GAAQ,CACpC,MAAMqO,GAAW,IAAArP,QAAOgB,IACpB,IAAAhB,QAAOgB,KAAUW,EACjBnB,KAAKO,cAAcC,EAAOW,EAAO0N,GAAU1O,KAAKgB,IAGhDnB,KAAKO,cAAcC,GAAO,CAACS,EAAOU,IAAYR,EAAOmF,YAAYrF,EAAO,IACjEU,EACHiB,KAAMpC,KAGlB,KAEG,IACAmB,EACH4G,sBAAsB,IAAAuG,UAASnN,EAAS,uBAAwB0G,EAAmBE,sBACnFD,4BAA4B,IAAAwG,UAASnN,EAAS,6BAA8B0G,EAAmBC,4BAC/FzG,SACA4M,WACAM,cAtBkB,CAAC,EAuBnBf,SAAUrM,EAAQqM,UAAY,IAEtC,CACAd,wBAAwBhB,EAAQE,EAAYvK,GACxC,MAAM0G,EAAuB2D,EAAO3I,OAAOzC,IAAI,wBACzCkO,EAAU,IAAI5C,EAAWG,UAAUjM,KAAKU,GAAQ,IAAIA,OAAQQ,KAAK,MACjE+H,EAAS,IAAIf,EACnBe,EAAOJ,IAAI,gCACX,IAAIa,EAAOT,EAAOS,KAAK,oBAAqB,CAAC,QAI7C,GAHIgF,EAAQxL,SACRwG,EAAOA,EAAKE,GAAG,KAAK8E,sBAEpB,IAAA3P,SAAQkJ,GAAuB,CAC/B,MAAM+E,EAAetN,KAAK4B,QAAQ2G,EAAqB0G,kBAAmBpN,GAE1E,OADAmI,EAAKrJ,IAAI,WAAY6H,EAAOrH,OAAOmM,EAAa5M,GAAI,aAAc,YAC3D6I,CACX,CACA,OAAIhB,GACAyB,EAAKrJ,IAAI,WAAY,cACd4I,IAGXS,EAAKE,GAAG,0DAA0DvJ,IAAI,WAAY,cAC3E4I,EACX,CACA+B,UAAUhB,EAAO3I,GACb,OAAO2I,CACX,CACAmB,OAAOnB,EAAO3I,GACV,IAAI,IAAAhC,OAAM2K,GACN,OAAOA,EAEX,MAAM3F,EAAM,IAAI7B,IAIhB,OAHA,IAAAjD,YAAWyK,GAAOlE,SAASpF,IACvB2D,EAAIwE,IAAInJ,KAAKkP,QAAQ5E,EAAMtJ,GAAMW,GAAS,IAEvCgD,CACX,CACA4G,SAASjB,EAAO3I,GACZ,OAAI,IAAAhC,OAAM2K,GACCA,EAEJ,GAAG6E,OAAO7E,GAAOhK,KAAKqJ,GAClB3J,KAAKkP,QAAQvF,EAAMhI,IAElC,CACA6J,OAAOlB,EAAO3I,GACV,IAAI,IAAAhC,OAAM2K,GACN,OAAOA,EAEX,MAAM3F,EAAM,IAAI5F,IAIhB,OAHA,IAAAc,YAAWyK,GAAOlE,SAASpF,IACvB2D,EAAIhE,IAAIK,EAAKhB,KAAKkP,QAAQ5E,EAAMtJ,GAAMW,GAAS,IAE5CgD,CACX,CACAuK,QAAQ5E,GAAO,GAAE5J,KAAOiB,IACpB,OAAO3B,KAAKK,WAAWK,EAAI4J,EAAO3I,EACtC,CACAwG,uBAAuBgF,EAAUlM,EAAOU,GACpC,OAAOwG,EAAuBlH,EAAOjB,KAAKf,QAAQkO,GAAWxL,EACjE,CACAuG,sBAAsBiF,EAAUlM,EAAOU,GACnC,OAAOuG,EAAsBjH,EAAOjB,KAAKf,QAAQkO,GAAWxL,EAChE,EC/RG,SAASyN,EAAiB7L,EAAQtC,EAAOU,GAC5C,OAAO4B,EAAOH,OAAOC,MAAM,cAAepC,EAAO,CAACU,GACtD,CCDO,SAAS0N,EAAoB1K,GAChC,OAAOtD,OAAO4J,QAAQtG,GAAKiE,QAAO,EAAE,CAAE3H,OAAY,IAAAqO,YAAWrO,IACjE,CCcA,SAAS,EAAOkK,GACZ,MAAO,KAAKA,GAChB,CACO,MAAMoE,UAAuB1Q,EAAA,EAChCkB,cACIgH,QACA/G,KAAKO,cAAcc,OAAQrB,KAAKsL,UAAUnL,KAAKH,OAC/CA,KAAKO,cAAcsC,MAAO7C,KAAKuL,SAASpL,KAAKH,OAC7CA,KAAKO,cAAcxB,IAAKiB,KAAKwL,OAAOrL,KAAKH,OACzCA,KAAKO,cAAcuC,IAAK9C,KAAKyL,OAAOtL,KAAKH,OACzCA,KAAKC,UAAU,UAAWD,KAAKwP,QAAQrP,KAAKH,OAC5CA,KAAKO,cAAc,YAAaU,GAAUiG,OAAOjG,IACrD,CACAX,IAAIgK,EAAO3I,EAAU,CAAC,GAClB,IAAI,IAAAhC,OAAM2K,GACN,OAAOA,EAGX,MAAM9J,EAzBd,SAAqBoC,EAAM+B,GACvB,MAAM8K,GAAW,IAAAlQ,SAAQoF,GACzB,OAAI8K,IAAa,IAAAC,eAAcD,KAAc,IAAArQ,cAAauF,GAGnD/B,GAAQvB,OAFJoO,CAGf,CAmBsBjB,EADd7M,EAAU3B,KAAK6L,WAAWlK,IACQiB,KAAM0H,GAExC,OADetK,KAAK4B,QAAQpB,EAAOmB,EAAQE,QAC7BpB,GAAG6J,EAAOtK,KAAK0B,cAAcC,GAC/C,CACAvB,WAAW+M,EAAUlM,EAAOU,GACxB,OAAOyN,EAAiBpP,KAAKf,QAAQkO,GAAWlM,EAAOU,EAC3D,CACAW,aAAa9B,EAAOE,EAAImB,GACpB,MAAMqK,EAAS,EAAAC,gBAAA,KAAqB3L,GAC9B4L,EAAa,IAAItJ,IACjBuJ,EAAmB,KAAI,IAAAC,qBAAoBJ,GAAQK,UACnDhD,GAAS,IAAIf,GAASc,MAAM,QAAS,WAO3C,OANAC,EAAOW,GAAG,gBAAgBJ,OAAO,SAEjCP,EAAOQ,MAAM,MAAO,MACpBR,EAAO5I,IAAI,UAAW,6BAEtB4I,EAAOJ,IAAInJ,KAAK2P,gBAAgBjP,IAC3B2L,EAAiB7I,QAItB+F,EAAOJ,OAAOkD,EAAiB3C,SAASiD,IAEpC,GADAP,EAAWjD,IAAIwD,EAAchJ,eACxBgJ,EAAcpJ,QAAQwJ,UAAW,IAAAvG,WAAUmG,EAAcpJ,QAAQwJ,UACjEJ,EAAcpJ,QAAQH,QAAQhB,IAAI,WAAapC,KAAKsD,YAAYqJ,EAAcpJ,OAAQ1B,IAG3F,OAAO7B,KAAKiN,YAAYN,EAAejM,EAAImB,EAAO,KAGtD0H,EAAOJ,IAAInJ,KAAK4P,yBAAyB1D,IAEzC3C,EAAOJ,IAAInJ,KAAKkN,wBAAwBhB,EAAQE,IACzC7C,EAAOO,OAAO,OAAO3L,OAAOwE,YAfxB4G,EAAOO,OAAO,wCAAwC3L,OAAOwE,UAgB5E,CACAkJ,YAAW,OAAEhK,GAAS,EAAK,SAAE4M,GAAW,EAAI,MAAEtI,KAAUxE,IAWpD,OATAwE,EAAQA,GAASF,KACXG,SAAQ,CAACjF,EAAQX,KACd,CAACqC,MAAOC,IAAK/D,KAAKmE,SAAS1C,IAC5BR,KAAKO,cAAcC,GAAO,CAACS,EAAOU,IAAYR,EAAOuF,UAAUzF,EAAO,IAC/DU,EACHiB,KAAMpC,KAEd,IAEG,IACAmB,EACHE,SACA4M,WACAM,cAdkB,CAAC,EAgB3B,CACA9B,YAAYN,EAAejM,EAAImB,GAC3B,MAAMb,EAAMkG,OAAOyF,EAAchJ,aAC3B4J,EAAWrG,OAAOyF,EAAcE,OAAOtJ,OAAOuJ,WAAW9L,IAAQA,GACjEmM,EAAWnN,KAAK0D,YAAYhD,EAAIM,GAChCwM,EAASb,EAAcc,WAAW3M,IAAI,UACtC4M,EAAaF,GAAU,sBAAsBA,MACnD,IAAIjE,GAAS,IAAIf,GAASW,IAAI,UAAUnI,KAAON,KAAMmB,GAAU,MAE3D8K,EAAcpJ,QAAQH,QAAQhB,IAAI,YAClCpC,KAAKf,QAAQkO,GAAYR,EAAcpJ,OACvCgG,EAASA,EAAOW,GAAG,iBAAiBiD,mCAGxC,MAAM0C,EAAgBlD,EAAcpJ,QAAQH,QAAQhB,IAAI,eACxD,IAAI+B,EAAS,SAASnD,IAClB6O,IACA7P,KAAKf,QAAQkO,GAAYR,EAAcpJ,OAEvCY,EAAS,eAAegJ,aAAoBnM,MAD/BwH,EAAO7G,QAAQ+L,OAGhCnE,EAASA,EAAO5I,IAAI,OAAO,EAAOK,KAAQmD,GAAQ+F,GAAG,GAAG,EAAOlJ,oBAc/D,OAbahB,KAAK8N,kBAAkBnB,EAAe3L,EAAKa,EAAQ6L,EAE5DK,CADA8B,EACKtG,EAAOW,GAAG,GAAG,EAAOlJ,gBAAkBA,KAGtCuI,GAELgE,IAAavM,EACbuI,EAAO5I,IAAI,2BAA2B4M,SAAgBvM,MAAS,EAAOA,IAGtEuI,EAAO5I,IAAI,OAAOK,IAAO,EAAOA,IAE7BuI,EAAOpL,MAClB,CACA2P,kBAAkBnB,EAAe3L,EAAKa,EAAQ6L,GAC1C,MAAMQ,EAAYvB,EAAcc,WAAWS,UACrC1B,EAAmBG,EAAcc,WAAWjB,iBAClD,GAAIG,EAAcvN,aAAc,CAC5B,MAAMwD,EAAO+J,EAAc6B,cAC3B,IAAIlB,EACJ,GAAId,EAAkB,CAClB,MAAMsD,EAAanD,EAAcE,OAAOiD,WACxCxC,EAAetN,KAAK4B,QAAQ,iBAAiBkO,KAAc9O,IAAOa,EAAQ,CACtEV,OAAQ,IAAMnB,KAAK+P,0BAA0BpD,EAAe9K,IAEpE,MAEIyL,EAAeY,EAAY,CAAExN,GAAI,IAAOV,KAAK4B,QAAQgB,EAAMf,GAE/D,OAAQ0H,GAAWA,EAAOK,YAAW,IAAApK,QAAOmN,EAAcjB,gBAAiB,EAAO1K,GAAM,QAAQsM,EAAa5M,MAAOgN,EACxH,CACA,GAAIQ,EACA,OAAQ3E,GAAWA,EAAO5I,IAAI,EAAOK,GAAM,iBAAiB,EAAOA,gBAEvE,IAAIsM,EACJ,GAAId,EAAkB,CAClB,MAAMsD,EAAanD,EAAcE,OAAOiD,WACxCxC,EAAetN,KAAK4B,QAAQ,iBAAiBkO,KAAc9O,IAAOa,EAAQ,CACtEV,OAAQ,IAAMnB,KAAK+P,0BAA0BpD,EAAe9K,IAEpE,MAEIyL,EAAetN,KAAK4B,QAAQ+K,EAAc6B,cAAe3M,GAE7D,OAAQ0H,GAAWA,EAAOK,WAAW0D,EAAa5M,GAAI,EAAOM,GAAM0M,EACvE,CACAqC,0BAA0BpD,EAAe9K,GACrC,MAAMuL,EAAgBT,EAAcc,WAAWL,gBACzC7D,GAAS,IAAIf,GAASc,MAAM,QAAS,WACrCiB,EAAKhB,EAAOc,OAAO,0BAKzB,OAJA+C,EAAcb,OAAOnG,SAAQ,CAACnF,EAAOoM,KACjC,MAAMC,EAAetN,KAAK4B,QAAQX,EAAOY,GACzC0I,EAAGQ,KAAK,KAAI,IAAAvL,QAAOyB,OAAW4I,iBAAiByD,EAAa5M,GAAI,QAAQ,IAErE6I,EAAOpL,OAAOwE,UACzB,CACAgN,gBAAgBjP,GACZ,MAAM6I,EAAS,IAAIf,EAGnB,OAFAe,EAAOW,GAAG,gCAAgCJ,OAAOtB,EAAOwH,WAAW,QAAS,qBAAqBtP,QACjG6I,EAAOW,GAAG,wBAAwBJ,OAAO,oCAAoCpJ,QACtE6I,CACX,CACAqG,yBAAyB1D,GACrB,GAAIA,EAAO+D,sBAAuB,CAC9B,MAAM7C,EAAgBlB,EAAO+D,sBAAsB1M,OAAO6J,gBACpDxK,EAAOwK,EAAc8C,gBAAgBhE,EAAO7G,QAClD,GAAIzC,EAAM,CACN,MAAM2G,EAAS,IAAIf,EAEnB,OADAe,EAAOW,GAAG,QAAQkD,EAAcR,gBAAgBjM,IAAI,OAAOyM,EAAcR,eAAgB,IAAIhK,MACtF2G,CACX,CACJ,CACJ,CACA2D,wBAAwBhB,EAAQE,GAE5B,GAD+BF,EAAO3I,OAAOzC,IAAI,wBACvB,CACtB,MAAMkO,EAAU,IAAI5C,EAAWG,UAAUjM,KAAKU,GAAQ,IAAIA,OAAQQ,KAAK,MACjE+H,EAAS,IAAIf,EAGnB,OAFAe,EAAOJ,IAAI,gCACXI,EAAOS,KAAK,oBAAqB,CAAC,QAAQE,GAAG,KAAK8E,oBAA0BrO,IAAI,WAAY,cACrF4I,CACX,CACJ,CACA+B,UAAUhB,GAAO,KAAE1H,KAASjB,IACxB,OAAK2I,IAAS,IAAA6F,aAAY7F,KAAYA,EAE3BA,EAEPA,IAAS,IAAAlL,cAAakL,GACftK,KAAKK,WAjME,CAACiK,IAChB,IAAAwB,SAAQxB,GAAS,QAAUA,aAAiBxH,IAAM,MAAQwH,aAAiBvL,IAAM,WAAQiF,EAgMjEoM,CAAkB9F,GAAQA,EAAO3I,IAExD,IAAAlC,eAAc6K,GACPtK,KAAKwP,QAAQlF,EAAO3I,GAExB0N,EAAoB/E,GACtB1B,QAAO,EAAE,CAAE3H,UAAqB+C,IAAV/C,IACtBoP,QAAO,CAAC1L,GAAM3D,EAAKC,MACpB,IAAI,IAAAtB,OAAMsB,GACN,MAAO,IACA0D,EACH,CAAC3D,GAAMC,GAGf,MAAME,EAASnB,KAAK4B,SAAQ,IAAArC,SAAQ0B,GAAQU,EAAQE,QACpD,MAAO,IACA8C,EACH,CAAC3D,GAAMG,EAAOV,GAAGQ,EAAOU,GAC3B,GACF,CAAC,EACR,CACA8J,OAAOnB,EAAO3I,GACV,OAAI,IAAAhC,OAAM2K,GACCA,EAEJ,IAAIA,EAAMiC,UAAUjM,KAAKqJ,GACrB3J,KAAKkP,QAAQvF,EAAMhI,IAElC,CACA4J,SAASjB,EAAO3I,GACZ,OAAI,IAAAhC,OAAM2K,GACCA,EAEJ,GAAG6E,OAAO7E,GAAOhK,KAAKqJ,GAClB3J,KAAKkP,QAAQvF,EAAMhI,IAElC,CACA6J,OAAOlB,EAAO3I,GACV,OAAI,IAAAhC,OAAM2K,GACCA,EAEJ,IAAIA,EAAMW,WAAWoF,QAAO,CAAC1L,GAAM3D,EAAK2I,MACpC,IACAhF,EACH,CAAC3D,GAAMhB,KAAKkP,QAAQvF,EAAMhI,MAE/B,CAAC,EACR,CACAuN,QAAQ5E,GAAO,GAAE5J,KAAOiB,IACpB,OAAKjB,GAAM4J,EACAtK,KAAK4B,SAAQ,IAAArC,SAAQ+K,GAAQ3I,EAAQE,QAAQpB,GAAG6J,EAAO3I,GAE3DjB,EAAKV,KAAKK,WAAWK,EAAI4J,EAAO3I,GAAW2I,CACtD,CACAkF,QAAQlF,GAAO,GAAE5J,KAAOiB,IACpB,OAAI,IAAAjC,kBAAiB4K,GACVA,EAAMgG,OAAO,IAAK3O,EAASjB,QAEtCA,EAAKA,IAAM,IAAAlB,SAAO,IAAAD,SAAQ+K,IACtBtK,KAAKhB,QAAQ0B,MAAQ,IAAAd,QAAO0K,KAAU,IAAAxK,gBAAewK,IAC9CtK,KAAKK,WAAWK,EAAI4J,EAAO3I,IAEtC2I,EAAQA,EAAMgG,UACP,IAAAhR,UAASgL,GAAStK,KAAKK,WAAWK,EAAI4J,EAAO3I,GAAW2I,GACnE,ECpQJ,MAAMiG,EAAe,IAAInF,EAClB,SAAS9E,EAAYgE,EAAO3I,GAC/B,OAAO4O,EAAajQ,IAAIgK,EAAO3I,EACnC,CCHA,MAAM6O,EAAa,IAAIjB,EAChB,SAAS7I,EAAU4D,EAAO3I,GAC7B,OAAO6O,EAAWlQ,IAAIgK,EAAO3I,EACjC,C","sources":["webpack://@tsed/json-mapper/webpack/universalModuleDefinition","webpack://@tsed/json-mapper/./src/domain/JsonMapperCompiler.ts","webpack://@tsed/json-mapper/external umd \"@tsed/core\"","webpack://@tsed/json-mapper/external umd \"@tsed/schema\"","webpack://@tsed/json-mapper/webpack/bootstrap","webpack://@tsed/json-mapper/webpack/runtime/compat get default export","webpack://@tsed/json-mapper/webpack/runtime/define property getters","webpack://@tsed/json-mapper/webpack/runtime/hasOwnProperty shorthand","webpack://@tsed/json-mapper/webpack/runtime/make namespace object","webpack://@tsed/json-mapper/../../../node_modules/tslib/tslib.es6.mjs","webpack://@tsed/json-mapper/./src/domain/JsonMapperTypesContainer.ts","webpack://@tsed/json-mapper/./src/decorators/jsonMapper.ts","webpack://@tsed/json-mapper/./src/components/DateMapper.ts","webpack://@tsed/json-mapper/./src/components/PrimitiveMapper.ts","webpack://@tsed/json-mapper/./src/components/SymbolMapper.ts","webpack://@tsed/json-mapper/./src/decorators/afterDeserialize.ts","webpack://@tsed/json-mapper/./src/decorators/beforeDeserialize.ts","webpack://@tsed/json-mapper/./src/decorators/onDeserialize.ts","webpack://@tsed/json-mapper/./src/decorators/onSerialize.ts","webpack://@tsed/json-mapper/./src/hooks/alterAfterDeserialize.ts","webpack://@tsed/json-mapper/./src/hooks/alterBeforeDeserialize.ts","webpack://@tsed/json-mapper/./src/hooks/alterOnDeserialize.ts","webpack://@tsed/json-mapper/./src/domain/JsonMapperSettings.ts","webpack://@tsed/json-mapper/./src/domain/Writer.ts","webpack://@tsed/json-mapper/./src/domain/JsonDeserializer.ts","webpack://@tsed/json-mapper/./src/hooks/alterOnSerialize.ts","webpack://@tsed/json-mapper/./src/utils/getObjectProperties.ts","webpack://@tsed/json-mapper/./src/domain/JsonSerializer.ts","webpack://@tsed/json-mapper/./src/utils/deserialize.ts","webpack://@tsed/json-mapper/./src/utils/serialize.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@tsed/core\"), require(\"@tsed/schema\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@tsed/core\", \"@tsed/schema\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@tsed/json-mapper\"] = factory(require(\"@tsed/core\"), require(\"@tsed/schema\"));\n\telse\n\t\troot[\"@tsed/json-mapper\"] = factory(root[\"@tsed/core\"], root[\"@tsed/schema\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE__803__, __WEBPACK_EXTERNAL_MODULE__953__) => {\nreturn ","import { ancestorsOf, classOf, getRandomId, hasJsonMethod, isClass, isCollection, isDate, isMomentObject, isMongooseObject, isNil, isObject, isObjectID, isString, nameOf, objectKeys } from \"@tsed/core\";\nexport class JsonMapperCompiler {\n /**\n * Cached mappers metadata\n * @protected\n */\n cache = new Map();\n /**\n * Cached executable mappers by his id\n * @protected\n */\n mappers = {};\n /**\n * Cached schemas\n * @protected\n */\n schemes = {};\n /**\n * Cached classes by his id\n * @protected\n */\n constructors = {};\n /**\n * Global variables available in the mapper\n * @protected\n */\n globals = {\n isCollection,\n isClass,\n isObject,\n classOf,\n nameOf,\n hasJsonMethod,\n isMongooseObject,\n isNil,\n isDate,\n objectKeys,\n isMomentObject\n };\n constructor() {\n this.addGlobal(\"alterIgnore\", this.alterIgnore.bind(this));\n this.addGlobal(\"alterValue\", this.alterValue.bind(this));\n this.addGlobal(\"execMapper\", this.execMapper.bind(this));\n this.addGlobal(\"compileAndMap\", this.map.bind(this));\n }\n addTypeMapper(model, fn) {\n const id = nameOf(model);\n this.cache.set(model, new Map().set(\"typeMapper\", {\n id,\n fn\n }));\n this.mappers[id] = fn;\n return this;\n }\n removeTypeMapper(model) {\n const store = this.cache.get(model);\n if (store) {\n const { id } = store.get(\"typeMapper\");\n delete this.mappers[id];\n this.cache.delete(model);\n }\n }\n addGlobal(key, value) {\n this.globals[key] = value;\n return this;\n }\n eval(mapper, { id, groupsId, model }) {\n this.addGlobal(\"cache\", this.cache);\n const { globals, schemes } = this;\n const injectGlobals = Object.keys(globals)\n .map((name) => {\n return `const ${name} = globals.${name};`;\n })\n .join(\"\\n\");\n eval(`${injectGlobals};\n\n cache.get(model).set(groupsId, { id: '${id}', fn: ${mapper} })`);\n const store = this.cache.get(model).get(groupsId);\n this.mappers[id] = store.fn;\n return store;\n }\n createContext(options) {\n const { cache } = this;\n return {\n ...options,\n cache\n };\n }\n compile(model, groups, opts = {}) {\n const token = isString(model) ? model : this.getType(model);\n const groupsId = this.getGroupsId(groups);\n let storeGroups = this.cache.get(token) || this.cache.get(nameOf(token));\n if (!storeGroups) {\n storeGroups = new Map();\n this.cache.set(token, storeGroups);\n }\n if (storeGroups.has(\"typeMapper\")) {\n return storeGroups.get(\"typeMapper\");\n }\n // generate mapper for the given groups\n if (!storeGroups.has(groupsId)) {\n const id = this.getId(token, groupsId);\n // prevent circular dependencies\n storeGroups.set(groupsId, {\n id\n });\n const mapper = opts.mapper ? opts.mapper(id, groups) : this.createMapper(token, id, groups);\n try {\n return this.eval(mapper, { id, model: token, groupsId });\n }\n catch (err) {\n throw new Error(`Fail to compile mapper for ${nameOf(model)}. See the error above: ${err.message}.\\n${mapper}`);\n }\n }\n return storeGroups.get(groupsId);\n }\n execMapper(id, value, options) {\n if (isObjectID(value)) {\n return value.toString();\n }\n return this.mappers[id](value, options);\n }\n getType(model) {\n if (!model) {\n return Object;\n }\n if (isClass(model) && !isCollection(model)) {\n const type = [Array, Map, Set].find((t) => ancestorsOf(model).includes(t));\n if (type) {\n return type;\n }\n }\n return model;\n }\n alterIgnore(id, options) {\n let result = this.schemes[id]?.$hooks?.alter(\"ignore\", false, [options]);\n if (result) {\n return result;\n }\n }\n alterGroups(schema, groups) {\n if (groups !== false) {\n return schema.$hooks.alter(\"groups\", false, [groups]);\n }\n return false;\n }\n getGroupsId(groups) {\n if (groups === false) {\n return \"default\";\n }\n if (groups.length === 0) {\n return \"-\";\n }\n return groups.join(\",\");\n }\n getId(model, groupsId) {\n return `${isString(model) ? model : nameOf(model)}:${getRandomId()}:${groupsId}`;\n }\n getSchemaId(id, propertyKey) {\n return `${id}:${propertyKey}`;\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__803__;","module.exports = __WEBPACK_EXTERNAL_MODULE__953__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/**\n * @ignore\n */\n// tslint:disable-next-line:variable-name\nconst JsonMapperTypesContainer = new Map();\n/**\n * @ignore\n */\nexport function registerJsonTypeMapper(type, token) {\n JsonMapperTypesContainer.set(type, new token());\n}\n/**\n * @ignore\n */\nexport function getJsonMapperTypes() {\n return JsonMapperTypesContainer;\n}\n","import { registerJsonTypeMapper } from \"../domain/JsonMapperTypesContainer\";\n/**\n * Register a new JsonMapper Type\n * @param types\n * @constructor\n */\nexport function JsonMapper(...types) {\n return (target) => {\n types.forEach((type) => {\n registerJsonTypeMapper(type, target);\n });\n };\n}\n","import { __decorate } from \"tslib\";\nimport { isBoolean } from \"@tsed/core\";\nimport { JsonMapper } from \"../decorators/jsonMapper\";\n/**\n * Mapper for `Date` type.\n * @jsonmapper\n * @component\n */\nlet DateMapper = class DateMapper {\n deserialize(data) {\n // don't convert unexpected data. In normal case, Ajv reject unexpected data.\n // But by default, we have to skip data deserialization and let user to apply\n // the right mapping\n if (isBoolean(data) || data === null || data === undefined) {\n return data;\n }\n return new Date(data);\n }\n serialize(object) {\n return object ? new Date(object).toISOString() : object;\n }\n};\nDateMapper = __decorate([\n JsonMapper(Date)\n], DateMapper);\nexport { DateMapper };\n","import { __decorate } from \"tslib\";\nimport { nameOf } from \"@tsed/core\";\nimport { JsonMapper } from \"../decorators/jsonMapper\";\nfunction isNullish(data) {\n return [null, \"null\"].includes(data);\n}\nexport class CastError extends Error {\n name = \"CAST_ERROR\";\n constructor(message) {\n super(`Cast error. ${message}`);\n }\n}\n/**\n * Mapper for the `String`, `Number`, `BigInt` and `Boolean` types.\n * @jsonmapper\n * @component\n */\nlet PrimitiveMapper = class PrimitiveMapper {\n deserialize(data, ctx) {\n return this[nameOf(ctx.type)] ? this[nameOf(ctx.type)](data, ctx) : undefined;\n }\n serialize(object, ctx) {\n return this[nameOf(ctx?.type)] && typeof object !== \"object\" ? this[nameOf(ctx.type)](object, ctx) : object;\n }\n String(data) {\n return data === null ? null : \"\" + data;\n }\n Boolean(data) {\n if ([\"true\", \"1\", true].includes(data))\n return true;\n if ([\"false\", \"0\", false].includes(data))\n return false;\n if (isNullish(data))\n return null;\n if (data === undefined)\n return undefined;\n return !!data;\n }\n Number(data) {\n if (isNullish(data))\n return null;\n if (data === undefined)\n return data;\n const n = +data;\n if (isNaN(n)) {\n throw new CastError(\"Expression value is not a number.\");\n }\n return n;\n }\n BigInt(data) {\n if (isNullish(data))\n return null;\n return BigInt(data);\n }\n};\nPrimitiveMapper = __decorate([\n JsonMapper(String, Number, Boolean, BigInt)\n], PrimitiveMapper);\nexport { PrimitiveMapper };\n","import { __decorate } from \"tslib\";\nimport { JsonMapper } from \"../decorators/jsonMapper\";\n/**\n * Mapper for the `Symbol` type.\n *\n * @jsonmapper\n * @component\n */\nlet SymbolMapper = class SymbolMapper {\n deserialize(data) {\n return Symbol.for(data);\n }\n serialize(object) {\n return object.toString().replace(\"Symbol(\", \"\").replace(\")\", \"\");\n }\n};\nSymbolMapper = __decorate([\n JsonMapper(Symbol)\n], SymbolMapper);\nexport { SymbolMapper };\n","import { JsonEntityFn } from \"@tsed/schema\";\n/**\n * Call the function after JsonMapper.\n *\n * ## Example\n *\n * ```typescript\n * @AfterDeserialize((data: Model) => { // After deserialize get the instance class\n * if (data.prop1 === 'VALUE' && data.prop2 !== 'VALUE2') {\n * throw BadRequest('MyMessage'); // or throw a ValidationError\n * } else {\n * data.prop2 = 'VALUE2';\n * return data;\n * }\n * })\n * class Model {\n * @Property()\n * prop1: string;\n * @Property()\n * prop2: string;\n * }\n * ```\n *\n * @returns {Function}\n * @decorator\n * @schema\n * @property\n * @param cb\n */\nexport function AfterDeserialize(cb) {\n return JsonEntityFn((storedJson) => {\n storedJson.schema.$hooks.on(\"afterDeserialize\", cb);\n });\n}\n","import { JsonEntityFn } from \"@tsed/schema\";\n/**\n * Call the function before JsonMapper.\n *\n * ## Example\n *\n * ```typescript\n * @BeforeDeserialize((data: Record<string, unknown>) => { // Before deserialize get the data\n * if (data.prop1 === 'VALUE' && data.prop2 !== 'VALUE2') {\n * throw BadRequest('MyMessage'); // or throw a ValidationError\n * } else {\n * data.prop2 = 'VALUE2';\n * return data;\n * }\n * })\n * class Model {\n * @Property()\n * prop1: string;\n * @Property()\n * prop2: string;\n * }\n * ```\n *\n * @returns {Function}\n * @decorator\n * @schema\n * @property\n * @param cb\n */\nexport function BeforeDeserialize(cb) {\n return JsonEntityFn((storedJson) => {\n storedJson.schema.$hooks.on(\"beforeDeserialize\", cb);\n });\n}\n","import { JsonEntityFn } from \"@tsed/schema\";\n/**\n * Call the function before property deserialization.\n *\n * ## Example\n *\n * ```typescript\n * class Model {\n * @OnDeserialize(v => v + 1)\n * property: string;\n * }\n * ```\n *\n * @returns {Function}\n * @decorator\n * @schema\n * @property\n * @param cb\n */\nexport function OnDeserialize(cb) {\n return JsonEntityFn((storedJson) => {\n storedJson.schema.$hooks.on(\"onDeserialize\", cb);\n });\n}\n","import { JsonEntityFn } from \"@tsed/schema\";\n/**\n * Call the function before property serialization.\n *\n * ## Example\n *\n * ```typescript\n * class Model {\n * @OnSerialize(v => v + 1)\n * property: string;\n * }\n * ```\n *\n * @returns {Function}\n * @decorator\n * @schema\n * @property\n * @param cb\n */\nexport function OnSerialize(cb) {\n return JsonEntityFn((storedJson) => {\n storedJson.schema.$hooks.on(\"onSerialize\", cb);\n });\n}\n","export function alterAfterDeserialize(data, schema, options) {\n return schema?.$hooks?.alter(\"afterDeserialize\", data, [options]);\n}\n","export function alterBeforeDeserialize(data, schema, options) {\n return schema?.$hooks?.alter(\"beforeDeserialize\", data, [options]);\n}\n","export function alterOnDeserialize(schema, value, options) {\n return schema.$hooks.alter(\"onDeserialize\", value, [options]);\n}\n","export const JsonMapperSettings = {\n disableUnsecureConstructor: true,\n additionalProperties: false\n};\n","export class Writer {\n static object = {\n assign(...args) {\n return `{ ${args.filter(Boolean).join(\", \")} }`;\n }\n };\n _root;\n body = [];\n _indent;\n constructor(root) {\n this._root = root;\n }\n static indent(lines) {\n return lines.map((p) => `\\t${p}`);\n }\n static mapper(mapperId, key, options) {\n return `execMapper('${mapperId}', ${key}, ${options})`;\n }\n static mapperFrom(key, options) {\n return `execMapper(nameOf(classOf(${key})), ${key}, ${options})`;\n }\n static options(...args) {\n args = args.filter(Boolean);\n return !args.length ? \"options\" : Writer.object.assign(\"...options\", ...args);\n }\n add(...lines) {\n lines = lines.filter((line) => line !== undefined);\n lines.length && this.body.push(...lines);\n return this;\n }\n arrow(...args) {\n this.add(`(${args}) => {`);\n const writer = this.new();\n this.add(\"}\");\n return writer;\n }\n build() {\n const result = this.body.flatMap((line) => {\n return line instanceof Writer ? line.build() : line;\n });\n return this._indent ? result.map((item) => \"\\t\" + item) : result;\n }\n callMapper(id, key, ...options) {\n return this.set(key, Writer.mapper(id, key, Writer.options(...options)));\n }\n returnCallMapper(id, key, ...options) {\n return this.return(Writer.mapper(id, key, Writer.options(...options)));\n }\n const(name, line) {\n this.add(`const ${name} = ${line};`);\n return this;\n }\n each(iterable, args = []) {\n const writer = this.add(iterable + \".forEach((\" + args.join(\", \") + \") => {\").new();\n this.add(\"});\");\n return writer;\n }\n if(condition) {\n const writer = new IfWriter(condition, this);\n this.add(writer);\n return writer;\n }\n switch(input) {\n const sw = new SwitchWriter(input);\n this.add(sw);\n return sw;\n }\n indent(indent) {\n this._indent = indent;\n return this;\n }\n new(indent = true) {\n const writer = new Writer(this.root());\n writer.indent(indent);\n this.add(writer);\n return writer;\n }\n return(line) {\n this.add(`return ${line};`);\n return this.root();\n }\n root() {\n return this._root || this;\n }\n set(left, right) {\n this.add(`${left} = ${right};`);\n return this;\n }\n toString() {\n return this.build().join(\"\\n\");\n }\n}\nclass IfWriter extends Writer {\n condition;\n elseWriter;\n constructor(condition, root) {\n super();\n this.condition = condition;\n this._root = root;\n }\n else() {\n const writer = new Writer(this._root);\n this.elseWriter = writer;\n return writer;\n }\n build() {\n return [\n `if (${this.condition}) {`,\n ...Writer.indent(super.build()),\n \"}\",\n this.elseWriter ? [`else {`, ...Writer.indent(this.elseWriter.build()), \"}\"] : []\n ].flat();\n }\n}\nclass SwitchWriter extends Writer {\n input;\n #map = new Map();\n constructor(input) {\n super();\n this.input = input;\n }\n case(condition) {\n const writer = new Writer();\n this.#map.set(condition, writer);\n return writer;\n }\n build() {\n return [\n `switch (${this.input}) {`,\n ...Writer.indent(Array.from(this.#map.entries()).flatMap(([condition, writer]) => {\n return [condition === \"default\" ? `${condition}:` : `case ${condition}:`, ...Writer.indent(writer.build())];\n })),\n \"}\"\n ].flat();\n }\n}\n","import { classOf, getValue, isArray, isBoolean, isClass, isEmpty, isNil, nameOf, objectKeys } from \"@tsed/core\";\nimport { getPropertiesStores, JsonEntityStore, JsonParameterStore } from \"@tsed/schema\";\nimport { alterAfterDeserialize } from \"../hooks/alterAfterDeserialize\";\nimport { alterBeforeDeserialize } from \"../hooks/alterBeforeDeserialize\";\nimport { alterOnDeserialize } from \"../hooks/alterOnDeserialize\";\nimport { JsonMapperCompiler } from \"./JsonMapperCompiler\";\nimport { JsonMapperSettings } from \"./JsonMapperSettings\";\nimport { getJsonMapperTypes } from \"./JsonMapperTypesContainer\";\nimport { Writer } from \"./Writer\";\nfunction isDeserializable(obj, options) {\n if ((!!options.collectionType && isNil(obj)) || obj === undefined) {\n return false;\n }\n return !(isEmpty(options.type) || (options.type === Object && !options.collectionType));\n}\nfunction varKey(k) {\n return `__${k}`;\n}\nfunction mapParamStoreOptions(store, options) {\n return {\n ...options,\n store: undefined,\n type: store.getBestType(),\n collectionType: store.collectionType,\n groups: store.parameter.groups,\n // genericTypes: store.nestedGenerics[0],\n generics: store.nestedGenerics\n };\n}\nfunction getGenericIndex(propertyStore) {\n return propertyStore.parent.schema.genericLabels.indexOf(propertyStore.itemSchema.genericType);\n}\nexport class JsonDeserializer extends JsonMapperCompiler {\n /**\n * Cached classes by his id\n * @protected\n */\n constructors = {};\n constructor() {\n super();\n this.addGlobal(\"newInstanceOf\", this.newInstanceOf.bind(this));\n this.addGlobal(\"alterBeforeDeserialize\", this.alterBeforeDeserialize.bind(this));\n this.addGlobal(\"alterAfterDeserialize\", this.alterAfterDeserialize.bind(this));\n this.addTypeMapper(Object, this.mapObject.bind(this));\n this.addTypeMapper(Array, this.mapArray.bind(this));\n this.addTypeMapper(Map, this.mapMap.bind(this));\n this.addTypeMapper(Set, this.mapSet.bind(this));\n this.addTypeMapper(\"ObjectId\", (value) => String(value));\n }\n map(input, options = {}) {\n options = this.mapOptions(options);\n if (!isDeserializable(input, options)) {\n return input;\n }\n if (!options.collectionType && isArray(input)) {\n options.collectionType = Array;\n }\n const model = options.type || classOf(input);\n const mapper = this.compile(model, options.groups);\n if (options.collectionType) {\n const collectionMapper = this.compile(options.collectionType, options.groups);\n return collectionMapper.fn(input, { ...options, id: mapper.id });\n }\n return mapper.fn(input, this.createContext(options));\n }\n compile(model, groups) {\n if ([WeakMap, WeakSet].includes(model)) {\n throw new Error(`${nameOf(model)} is not supported by JsonMapper.`);\n }\n return super.compile(model, groups);\n }\n eval(mapper, { id, groupsId, model }) {\n this.constructors[id] = model;\n return super.eval(mapper, { id, groupsId, model });\n }\n newInstanceOf(id, obj, options) {\n try {\n return new this.constructors[id](options.disableUnsecureConstructor ? {} : obj);\n }\n catch (er) {\n return obj;\n }\n }\n createMapper(model, id, groups) {\n const entity = JsonEntityStore.from(model);\n const properties = new Set();\n const schemaProperties = [...getPropertiesStores(entity).values()];\n const writer = new Writer().arrow(\"input\", \"options\");\n writer.if(\"isNil(input)\").return(\"input\");\n if (entity.schema.hasDiscriminator) {\n writer.add(this.mapDiscriminator(entity, groups));\n }\n // pre hook\n if (entity.schema.$hooks?.has(\"beforeDeserialize\")) {\n this.schemes[id] = entity.schema;\n writer.set(\"input\", `alterBeforeDeserialize('${id}', input, options)`);\n }\n // generics and options\n writer.const(\"generics\", \"options.generics[0]\");\n if (entity.schema.genericLabels?.length) {\n writer.set(\"options\", \"{...options, self: input, generics: [...options.generics].slice(1)}\");\n }\n else {\n writer.set(\"options\", \"{...options, self: input}\");\n }\n writer.const(\"obj\", `newInstanceOf('${id}', input, options)`);\n // properties\n writer.add(...schemaProperties.flatMap((propertyStore) => {\n const key = propertyStore.propertyName;\n // TODO V8 add this line: properties.add(key as string);\n properties.add(String(propertyStore.parent.schema.getAliasOf(key) || key));\n if ((propertyStore.schema?.$ignore && isBoolean(propertyStore.schema?.$ignore)) ||\n propertyStore.isGetterOnly() ||\n (propertyStore.schema?.$hooks?.has(\"groups\") && this.alterGroups(propertyStore.schema, groups))) {\n return;\n }\n return this.mapProperty(propertyStore, id, groups);\n }));\n // additional properties\n writer.add(this.mapAdditionalProperties(entity, properties, groups));\n // post hook\n if (entity.schema.$hooks?.has(\"afterDeserialize\")) {\n this.schemes[id] = entity.schema;\n return writer.return(`alterAfterDeserialize('${id}', obj, options)`).root().toString();\n }\n return writer.return(\"obj\").root().toString();\n }\n alterValue(schemaId, value, options) {\n return alterOnDeserialize(this.schemes[schemaId], value, options);\n }\n mapDiscriminator(entity, groups) {\n const writer = new Writer();\n const discriminator = entity.schema.discriminator();\n const sw = writer.switch(`input['${discriminator.propertyName}']`);\n discriminator.values.forEach((value, kind) => {\n const nestedMapper = this.compile(value, groups);\n sw.case(`'${kind}'`).returnCallMapper(nestedMapper.id, \"input\");\n });\n return writer;\n }\n mapProperty(propertyStore, id, groups) {\n const key = String(propertyStore.propertyKey);\n const aliasKey = String(propertyStore.parent.schema.getAliasOf(key) || key);\n const schemaId = this.getSchemaId(id, key);\n const format = propertyStore.itemSchema.get(\"format\");\n const formatOpts = format && `options: {format: '${format}'}`;\n let writer = new Writer().add(`// Map ${key} ${id} ${groups || \"\"}`);\n const pick = key !== aliasKey ? `options.useAlias ? '${aliasKey}' : '${key}'` : `'${key}'`;\n // ignore hook (deprecated)\n if (propertyStore.schema?.$hooks?.has(\"ignore\")) {\n this.schemes[schemaId] = propertyStore.schema;\n writer = writer.if(`!alterIgnore('${schemaId}', {...options, self: input})`);\n }\n // pre hook\n const hasDeserializer = propertyStore.schema?.$hooks?.has(\"onDeserialize\");\n let getter = `input[${pick}]`;\n if (hasDeserializer) {\n this.schemes[schemaId] = propertyStore.schema;\n const opts = Writer.options(formatOpts);\n getter = `alterValue('${schemaId}', input[${pick}], ${opts})`;\n }\n const ifWriter = writer.set(`let ${varKey(key)}`, getter).if(`${varKey(key)} !== undefined`);\n const fill = this.getPropertyFiller(propertyStore, id, groups, formatOpts);\n if (hasDeserializer) {\n fill(ifWriter.if(`${varKey(key)} === input.${key}`));\n }\n else {\n fill(ifWriter);\n }\n ifWriter.set(`obj.${key}`, varKey(key));\n if (groups && groups.includes(\"partial\")) {\n ifWriter.else().add(`delete obj.${key}`);\n }\n return writer.root();\n }\n getPropertyFiller(propertyStore, id, groups, formatOpts) {\n const key = String(propertyStore.propertyKey);\n const schemaId = this.getSchemaId(id, key);\n const generics = propertyStore.itemSchema.nestedGenerics;\n const isGeneric = propertyStore.itemSchema.isGeneric && !generics?.length;\n if (isGeneric) {\n const index = getGenericIndex(propertyStore);\n const opts = Writer.options(formatOpts, `type: generics[${index}]`);\n return (writer) => writer.set(varKey(key), `compileAndMap(${varKey(key)}, ${opts})`);\n }\n const type = propertyStore.itemSchema.hasDiscriminator ? propertyStore.itemSchema.discriminator().base : propertyStore.getBestType();\n const nestedMapper = this.compile(type, groups);\n if (propertyStore.isCollection) {\n return (writer) => writer.callMapper(nameOf(propertyStore.collectionType), varKey(key), `id: '${nestedMapper.id}'`, formatOpts);\n }\n if (generics?.length) {\n this.schemes[schemaId] = propertyStore.schema;\n return (writer) => writer.callMapper(nestedMapper.id, varKey(key), formatOpts, `generics: schemes['${schemaId}'].nestedGenerics`);\n }\n return (writer) => writer.callMapper(nestedMapper.id, varKey(key), formatOpts);\n }\n mapOptions({ groups = false, useAlias = true, types, ...options }) {\n if (options.store instanceof JsonParameterStore) {\n return this.mapOptions(mapParamStoreOptions(options.store, options));\n }\n const customMappers = {};\n types = types || getJsonMapperTypes();\n types.forEach((mapper, model) => {\n if (![Array, Set, Map].includes(model)) {\n const typeName = nameOf(model);\n if (nameOf(model) in mapper) {\n this.addTypeMapper(model, mapper[typeName].bind(mapper));\n }\n else {\n this.addTypeMapper(model, (value, options) => mapper.deserialize(value, {\n ...options,\n type: model\n }));\n }\n }\n });\n return {\n ...options,\n additionalProperties: getValue(options, \"additionalProperties\", JsonMapperSettings.additionalProperties),\n disableUnsecureConstructor: getValue(options, \"disableUnsecureConstructor\", JsonMapperSettings.disableUnsecureConstructor),\n groups,\n useAlias,\n customMappers,\n generics: options.generics || []\n };\n }\n mapAdditionalProperties(entity, properties, groups) {\n const additionalProperties = entity.schema.get(\"additionalProperties\");\n const exclude = [...properties.values()].map((key) => `'${key}'`).join(\", \");\n const writer = new Writer();\n writer.add(\"// add additional properties\");\n let each = writer.each(\"objectKeys(input)\", [\"key\"]);\n if (exclude.length) {\n each = each.if(`![${exclude}].includes(key)`);\n }\n if (isClass(additionalProperties)) {\n const nestedMapper = this.compile(additionalProperties.getComputedType(), groups);\n each.set(\"obj[key]\", Writer.mapper(nestedMapper.id, \"input[key]\", \"options\"));\n return writer;\n }\n if (additionalProperties) {\n each.set(\"obj[key]\", \"input[key]\");\n return writer;\n }\n // dynamic additional properties options\n each.if(`options.additionalProperties && obj[key] === undefined`).set(\"obj[key]\", \"input[key]\");\n return writer;\n }\n mapObject(input, options) {\n return input;\n }\n mapSet(input, options) {\n if (isNil(input)) {\n return input;\n }\n const obj = new Set();\n objectKeys(input).forEach((key) => {\n obj.add(this.mapItem(input[key], options));\n });\n return obj;\n }\n mapArray(input, options) {\n if (isNil(input)) {\n return input;\n }\n return [].concat(input).map((item) => {\n return this.mapItem(item, options);\n });\n }\n mapMap(input, options) {\n if (isNil(input)) {\n return input;\n }\n const obj = new Map();\n objectKeys(input).forEach((key) => {\n obj.set(key, this.mapItem(input[key], options));\n });\n return obj;\n }\n mapItem(input, { id, ...options }) {\n return this.execMapper(id, input, options);\n }\n alterBeforeDeserialize(schemaId, value, options) {\n return alterBeforeDeserialize(value, this.schemes[schemaId], options);\n }\n alterAfterDeserialize(schemaId, value, options) {\n return alterAfterDeserialize(value, this.schemes[schemaId], options);\n }\n}\n","export function alterOnSerialize(schema, value, options) {\n return schema.$hooks.alter(\"onSerialize\", value, [options]);\n}\n","import { isFunction } from \"@tsed/core\";\nexport function getObjectProperties(obj) {\n return Object.entries(obj).filter(([, value]) => !isFunction(value));\n}\n","import { classOf, hasJsonMethod, isArray, isBoolean, isClassObject, isCollection, isDate, isMomentObject, isMongooseObject, isNil, isObject, isPrimitive, nameOf } from \"@tsed/core\";\nimport { getPropertiesStores, JsonEntityStore } from \"@tsed/schema\";\nimport { alterOnSerialize } from \"../hooks/alterOnSerialize\";\nimport { getObjectProperties } from \"../utils/getObjectProperties\";\nimport { JsonMapperCompiler } from \"./JsonMapperCompiler\";\nimport { getJsonMapperTypes } from \"./JsonMapperTypesContainer\";\nimport { Writer } from \"./Writer\";\nconst getCollectionType = (input) => {\n return isArray(input) ? \"Array\" : input instanceof Set ? \"Set\" : input instanceof Map ? \"Map\" : undefined;\n};\nfunction getBestType(type, obj) {\n const dataType = classOf(obj);\n if (dataType && !isClassObject(dataType) && !isCollection(obj)) {\n return dataType;\n }\n return type || Object;\n}\nfunction varKey(k) {\n return `__${k}`;\n}\nexport class JsonSerializer extends JsonMapperCompiler {\n constructor() {\n super();\n this.addTypeMapper(Object, this.mapObject.bind(this));\n this.addTypeMapper(Array, this.mapArray.bind(this));\n this.addTypeMapper(Map, this.mapMap.bind(this));\n this.addTypeMapper(Set, this.mapSet.bind(this));\n this.addGlobal(\"mapJSON\", this.mapJSON.bind(this));\n this.addTypeMapper(\"ObjectId\", (value) => String(value));\n }\n map(input, options = {}) {\n if (isNil(input)) {\n return input;\n }\n options = this.mapOptions(options);\n const model = getBestType(options.type, input);\n const mapper = this.compile(model, options.groups);\n return mapper.fn(input, this.createContext(options));\n }\n alterValue(schemaId, value, options) {\n return alterOnSerialize(this.schemes[schemaId], value, options);\n }\n createMapper(model, id, groups) {\n const entity = JsonEntityStore.from(model);\n const properties = new Set();\n const schemaProperties = [...getPropertiesStores(entity).values()];\n const writer = new Writer().arrow(\"input\", \"options\");\n writer.if(\"isNil(input)\").return(\"input\");\n // prepare options\n writer.const(\"obj\", \"{}\");\n writer.set(\"options\", \"{...options, self: input}\");\n // detect some special case\n writer.add(this.mapPrecondition(id));\n if (!schemaProperties.length) {\n return writer.return(\"isObject(input) ? {...input} : input\").root().toString();\n }\n // properties\n writer.add(...schemaProperties.flatMap((propertyStore) => {\n properties.add(propertyStore.propertyKey);\n if ((propertyStore.schema?.$ignore && isBoolean(propertyStore.schema?.$ignore)) ||\n (propertyStore.schema?.$hooks?.has(\"groups\") && this.alterGroups(propertyStore.schema, groups))) {\n return;\n }\n return this.mapProperty(propertyStore, id, groups);\n }));\n // discriminator\n writer.add(this.mapDiscriminatorKeyValue(entity));\n // additional properties\n writer.add(this.mapAdditionalProperties(entity, properties));\n return writer.return(\"obj\").root().toString();\n }\n mapOptions({ groups = false, useAlias = true, types, ...options }) {\n const customMappers = {};\n types = types || getJsonMapperTypes();\n types.forEach((mapper, model) => {\n if (![Array, Set, Map].includes(model)) {\n this.addTypeMapper(model, (value, options) => mapper.serialize(value, {\n ...options,\n type: model\n }));\n }\n });\n return {\n ...options,\n groups,\n useAlias,\n customMappers\n };\n }\n mapProperty(propertyStore, id, groups) {\n const key = String(propertyStore.propertyKey);\n const aliasKey = String(propertyStore.parent.schema.getAliasOf(key) || key);\n const schemaId = this.getSchemaId(id, key);\n const format = propertyStore.itemSchema.get(\"format\");\n const formatOpts = format && `options: {format: '${format}'}`;\n let writer = new Writer().add(`// Map ${key} ${id} ${groups || \"\"}`);\n // ignore hook (deprecated)\n if (propertyStore.schema?.$hooks?.has(\"ignore\")) {\n this.schemes[schemaId] = propertyStore.schema;\n writer = writer.if(`!alterIgnore('${schemaId}', {...options, self: input})`);\n }\n // pre hook\n const hasSerializer = propertyStore.schema?.$hooks?.has(\"onSerialize\");\n let getter = `input.${key}`;\n if (hasSerializer) {\n this.schemes[schemaId] = propertyStore.schema;\n const opts = Writer.options(formatOpts);\n getter = `alterValue('${schemaId}', input.${key}, ${opts})`;\n }\n writer = writer.set(`let ${varKey(key)}`, getter).if(`${varKey(key)} !== undefined`);\n const fill = this.getPropertyFiller(propertyStore, key, groups, formatOpts);\n if (hasSerializer) {\n fill(writer.if(`${varKey(key)} === input.${key}`));\n }\n else {\n fill(writer);\n }\n if (aliasKey !== key) {\n writer.set(`obj[options.useAlias ? '${aliasKey}' : '${key}']`, varKey(key));\n }\n else {\n writer.set(`obj.${key}`, varKey(key));\n }\n return writer.root();\n }\n getPropertyFiller(propertyStore, key, groups, formatOpts) {\n const isGeneric = propertyStore.itemSchema.isGeneric;\n const hasDiscriminator = propertyStore.itemSchema.hasDiscriminator;\n if (propertyStore.isCollection) {\n const type = propertyStore.getBestType();\n let nestedMapper;\n if (hasDiscriminator) {\n const targetName = propertyStore.parent.targetName;\n nestedMapper = this.compile(`Discriminator:${targetName}:${key}`, groups, {\n mapper: () => this.createDiscriminatorMapper(propertyStore, groups)\n });\n }\n else {\n nestedMapper = isGeneric ? { id: \"\" } : this.compile(type, groups);\n }\n return (writer) => writer.callMapper(nameOf(propertyStore.collectionType), varKey(key), `id: '${nestedMapper.id}'`, formatOpts);\n }\n if (isGeneric) {\n return (writer) => writer.set(varKey(key), `compileAndMap(${varKey(key)}, options)`);\n }\n let nestedMapper;\n if (hasDiscriminator) {\n const targetName = propertyStore.parent.targetName;\n nestedMapper = this.compile(`Discriminator:${targetName}:${key}`, groups, {\n mapper: () => this.createDiscriminatorMapper(propertyStore, groups)\n });\n }\n else {\n nestedMapper = this.compile(propertyStore.getBestType(), groups);\n }\n return (writer) => writer.callMapper(nestedMapper.id, varKey(key), formatOpts);\n }\n createDiscriminatorMapper(propertyStore, groups) {\n const discriminator = propertyStore.itemSchema.discriminator();\n const writer = new Writer().arrow(\"input\", \"options\");\n const sw = writer.switch(`nameOf(classOf(input))`);\n discriminator.values.forEach((value, kind) => {\n const nestedMapper = this.compile(value, groups);\n sw.case(`'${nameOf(value)}'`).returnCallMapper(nestedMapper.id, \"input\");\n });\n return writer.root().toString();\n }\n mapPrecondition(id) {\n const writer = new Writer();\n writer.if(\"input && isCollection(input)\").return(Writer.mapperFrom(\"input\", `{...options, id: '${id}'}`));\n writer.if(\"hasJsonMethod(input)\").return(`mapJSON(input, {...options, id: '${id}'})`);\n return writer;\n }\n mapDiscriminatorKeyValue(entity) {\n if (entity.discriminatorAncestor) {\n const discriminator = entity.discriminatorAncestor.schema.discriminator();\n const type = discriminator.getDefaultValue(entity.target);\n if (type) {\n const writer = new Writer();\n writer.if(`!obj.${discriminator.propertyName}`).set(`obj.${discriminator.propertyName}`, `'${type}'`);\n return writer;\n }\n }\n }\n mapAdditionalProperties(entity, properties) {\n const additionalProperties = !!entity.schema.get(\"additionalProperties\");\n if (additionalProperties) {\n const exclude = [...properties.values()].map((key) => `'${key}'`).join(\", \");\n const writer = new Writer();\n writer.add(\"// add additional properties\");\n writer.each(\"objectKeys(input)\", [\"key\"]).if(`![${exclude}].includes(key)`).set(\"obj[key]\", \"input[key]\");\n return writer;\n }\n }\n mapObject(input, { type, ...options }) {\n if ((input && isPrimitive(input)) || !input) {\n // prevent mongoose mapping error\n return input;\n }\n if (input && isCollection(input)) {\n return this.execMapper(getCollectionType(input), input, options);\n }\n if (hasJsonMethod(input)) {\n return this.mapJSON(input, options);\n }\n return getObjectProperties(input)\n .filter(([, value]) => value !== undefined)\n .reduce((obj, [key, value]) => {\n if (isNil(value)) {\n return {\n ...obj,\n [key]: value\n };\n }\n const mapper = this.compile(classOf(value), options.groups);\n return {\n ...obj,\n [key]: mapper.fn(value, options)\n };\n }, {});\n }\n mapSet(input, options) {\n if (isNil(input)) {\n return input;\n }\n return [...input.values()].map((item) => {\n return this.mapItem(item, options);\n });\n }\n mapArray(input, options) {\n if (isNil(input)) {\n return input;\n }\n return [].concat(input).map((item) => {\n return this.mapItem(item, options);\n });\n }\n mapMap(input, options) {\n if (isNil(input)) {\n return input;\n }\n return [...input.entries()].reduce((obj, [key, item]) => {\n return {\n ...obj,\n [key]: this.mapItem(item, options)\n };\n }, {});\n }\n mapItem(input, { id, ...options }) {\n if (!id && input) {\n return this.compile(classOf(input), options.groups).fn(input, options);\n }\n return id ? this.execMapper(id, input, options) : input;\n }\n mapJSON(input, { id, ...options }) {\n if (isMongooseObject(input)) {\n return input.toJSON({ ...options, id });\n }\n id = id || nameOf(classOf(input));\n if (this.mappers[id] && (isDate(input) || isMomentObject(input))) {\n return this.execMapper(id, input, options);\n }\n input = input.toJSON();\n return isObject(input) ? this.execMapper(id, input, options) : input;\n }\n}\n","import \"../components/DateMapper\";\nimport \"../components/PrimitiveMapper\";\nimport \"../components/SymbolMapper\";\nimport { JsonDeserializer } from \"../domain/JsonDeserializer\";\nconst deserializer = new JsonDeserializer();\nexport function deserialize(input, options) {\n return deserializer.map(input, options);\n}\n","import \"../components/DateMapper\";\nimport \"../components/PrimitiveMapper\";\nimport \"../components/SymbolMapper\";\nimport { JsonSerializer } from \"../domain/JsonSerializer\";\nconst serializer = new JsonSerializer();\nexport function serialize(input, options) {\n return serializer.map(input, options);\n}\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__803__","__WEBPACK_EXTERNAL_MODULE__953__","JsonMapperCompiler","cache","Map","mappers","schemes","constructors","globals","isCollection","isClass","isObject","classOf","nameOf","hasJsonMethod","isMongooseObject","isNil","isDate","objectKeys","isMomentObject","constructor","this","addGlobal","alterIgnore","bind","alterValue","execMapper","map","addTypeMapper","model","fn","id","set","removeTypeMapper","store","get","delete","key","value","eval","mapper","injectGlobals","Object","keys","name","join","groupsId","createContext","options","compile","groups","opts","token","isString","getType","getGroupsId","storeGroups","has","getId","createMapper","err","Error","message","isObjectID","toString","type","Array","Set","find","t","ancestorsOf","includes","result","$hooks","alter","alterGroups","schema","length","getRandomId","getSchemaId","propertyKey","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","__decorate","decorators","target","desc","c","arguments","getOwnPropertyDescriptor","Reflect","decorate","i","create","SuppressedError","JsonMapperTypesContainer","registerJsonTypeMapper","getJsonMapperTypes","JsonMapper","types","forEach","DateMapper","deserialize","data","isBoolean","Date","serialize","object","toISOString","isNullish","CastError","super","PrimitiveMapper","ctx","String","Boolean","Number","isNaN","BigInt","SymbolMapper","for","replace","AfterDeserialize","cb","JsonEntityFn","storedJson","on","BeforeDeserialize","OnDeserialize","OnSerialize","alterAfterDeserialize","alterBeforeDeserialize","alterOnDeserialize","JsonMapperSettings","disableUnsecureConstructor","additionalProperties","Writer","static","assign","args","filter","_root","body","_indent","lines","p","mapperId","add","line","push","arrow","writer","new","build","flatMap","item","callMapper","returnCallMapper","return","const","each","iterable","if","condition","IfWriter","switch","input","sw","SwitchWriter","indent","left","right","elseWriter","else","flat","case","from","entries","varKey","k","JsonDeserializer","newInstanceOf","mapObject","mapArray","mapMap","mapSet","collectionType","isEmpty","isDeserializable","mapOptions","isArray","WeakMap","WeakSet","er","entity","JsonEntityStore","properties","schemaProperties","getPropertiesStores","values","hasDiscriminator","mapDiscriminator","genericLabels","propertyStore","propertyName","parent","getAliasOf","$ignore","isGetterOnly","mapProperty","mapAdditionalProperties","schemaId","discriminator","kind","nestedMapper","aliasKey","format","itemSchema","formatOpts","pick","hasDeserializer","ifWriter","getPropertyFiller","fill","generics","nestedGenerics","isGeneric","index","indexOf","genericType","getGenericIndex","base","getBestType","useAlias","JsonParameterStore","parameter","mapParamStoreOptions","typeName","getValue","customMappers","exclude","getComputedType","mapItem","concat","alterOnSerialize","getObjectProperties","isFunction","JsonSerializer","mapJSON","dataType","isClassObject","mapPrecondition","mapDiscriminatorKeyValue","hasSerializer","targetName","createDiscriminatorMapper","mapperFrom","discriminatorAncestor","getDefaultValue","isPrimitive","getCollectionType","reduce","toJSON","deserializer","serializer"],"sourceRoot":""}
@@ -23,8 +23,8 @@ let PrimitiveMapper = class PrimitiveMapper {
23
23
  deserialize(data, ctx) {
24
24
  return this[(0, core_1.nameOf)(ctx.type)] ? this[(0, core_1.nameOf)(ctx.type)](data, ctx) : undefined;
25
25
  }
26
- serialize(object) {
27
- return object;
26
+ serialize(object, ctx) {
27
+ return this[(0, core_1.nameOf)(ctx?.type)] && typeof object !== "object" ? this[(0, core_1.nameOf)(ctx.type)](object, ctx) : object;
28
28
  }
29
29
  String(data) {
30
30
  return data === null ? null : "" + data;
@@ -43,6 +43,8 @@ let PrimitiveMapper = class PrimitiveMapper {
43
43
  Number(data) {
44
44
  if (isNullish(data))
45
45
  return null;
46
+ if (data === undefined)
47
+ return data;
46
48
  const n = +data;
47
49
  if (isNaN(n)) {
48
50
  throw new CastError("Expression value is not a number.");
@@ -1 +1 @@
1
- {"version":3,"file":"PrimitiveMapper.js","sourceRoot":"","sources":["../../../src/components/PrimitiveMapper.ts"],"names":[],"mappings":";;;;AAAA,qCAAkC;AAClC,yDAAoD;AAGpD,SAAS,SAAS,CAAC,IAAS;IAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAa,SAAU,SAAQ,KAAK;IAClC,IAAI,GAAG,YAAY,CAAC;IAEpB,YAAY,OAAe;QACzB,KAAK,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AAND,8BAMC;AAED;;;;GAIG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,WAAW,CAAI,IAAS,EAAE,GAAkB;QAC1C,OAAQ,IAAY,CAAC,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,IAAY,CAAC,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,CAAC;IAED,SAAS,CAAC,MAA0C;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;IAC1C,CAAC;IAES,OAAO,CAAC,IAAS;QACzB,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAEzC,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAEhB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACZ,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;SAC1D;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF,CAAA;AAvCY,eAAe;IAD3B,IAAA,uBAAU,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;GAC/B,eAAe,CAuC3B;AAvCY,0CAAe"}
1
+ {"version":3,"file":"PrimitiveMapper.js","sourceRoot":"","sources":["../../../src/components/PrimitiveMapper.ts"],"names":[],"mappings":";;;;AAAA,qCAAkC;AAClC,yDAAoD;AAGpD,SAAS,SAAS,CAAC,IAAS;IAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAa,SAAU,SAAQ,KAAK;IAClC,IAAI,GAAG,YAAY,CAAC;IAEpB,YAAY,OAAe;QACzB,KAAK,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AAND,8BAMC;AAED;;;;GAIG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,WAAW,CAAI,IAAS,EAAE,GAAkB;QAC1C,OAAQ,IAAY,CAAC,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,IAAY,CAAC,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,CAAC;IAED,SAAS,CAAC,MAA0C,EAAE,GAAkB;QACtE,OAAQ,IAAY,CAAC,IAAA,aAAM,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAY,CAAC,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAChI,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;IAC1C,CAAC;IAES,OAAO,CAAC,IAAS;QACzB,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAEzC,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAEpC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAEhB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACZ,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;SAC1D;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF,CAAA;AAxCY,eAAe;IAD3B,IAAA,uBAAU,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;GAC/B,eAAe,CAwC3B;AAxCY,0CAAe"}
@@ -77,7 +77,10 @@ class JsonSerializer extends JsonMapperCompiler_1.JsonMapperCompiler {
77
77
  types = types || (0, JsonMapperTypesContainer_1.getJsonMapperTypes)();
78
78
  types.forEach((mapper, model) => {
79
79
  if (![Array, Set, Map].includes(model)) {
80
- this.addTypeMapper(model, mapper.serialize.bind(mapper));
80
+ this.addTypeMapper(model, (value, options) => mapper.serialize(value, {
81
+ ...options,
82
+ type: model
83
+ }));
81
84
  }
82
85
  });
83
86
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"JsonSerializer.js","sourceRoot":"","sources":["../../../src/domain/JsonSerializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JsonSerializer.js","sourceRoot":"","sources":["../../../src/domain/JsonSerializer.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,8 @@ let PrimitiveMapper = class PrimitiveMapper {
19
19
  deserialize(data, ctx) {
20
20
  return this[nameOf(ctx.type)] ? this[nameOf(ctx.type)](data, ctx) : undefined;
21
21
  }
22
- serialize(object) {
23
- return object;
22
+ serialize(object, ctx) {
23
+ return this[nameOf(ctx?.type)] && typeof object !== "object" ? this[nameOf(ctx.type)](object, ctx) : object;
24
24
  }
25
25
  String(data) {
26
26
  return data === null ? null : "" + data;
@@ -39,6 +39,8 @@ let PrimitiveMapper = class PrimitiveMapper {
39
39
  Number(data) {
40
40
  if (isNullish(data))
41
41
  return null;
42
+ if (data === undefined)
43
+ return data;
42
44
  const n = +data;
43
45
  if (isNaN(n)) {
44
46
  throw new CastError("Expression value is not a number.");
@@ -1 +1 @@
1
- {"version":3,"file":"PrimitiveMapper.js","sourceRoot":"","sources":["../../../src/components/PrimitiveMapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAClC,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAGpD,SAAS,SAAS,CAAC,IAAS;IAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,IAAI,GAAG,YAAY,CAAC;IAEpB,YAAY,OAAe;QACzB,KAAK,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AAED;;;;GAIG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,WAAW,CAAI,IAAS,EAAE,GAAkB;QAC1C,OAAQ,IAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,IAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,CAAC;IAED,SAAS,CAAC,MAA0C;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;IAC1C,CAAC;IAES,OAAO,CAAC,IAAS;QACzB,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAEzC,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAEhB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACZ,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;SAC1D;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF,CAAA;AAvCY,eAAe;IAD3B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;GAC/B,eAAe,CAuC3B;SAvCY,eAAe"}
1
+ {"version":3,"file":"PrimitiveMapper.js","sourceRoot":"","sources":["../../../src/components/PrimitiveMapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAClC,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAGpD,SAAS,SAAS,CAAC,IAAS;IAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,IAAI,GAAG,YAAY,CAAC;IAEpB,YAAY,OAAe;QACzB,KAAK,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AAED;;;;GAIG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,WAAW,CAAI,IAAS,EAAE,GAAkB;QAC1C,OAAQ,IAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,IAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,CAAC;IAED,SAAS,CAAC,MAA0C,EAAE,GAAkB;QACtE,OAAQ,IAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAChI,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;IAC1C,CAAC;IAES,OAAO,CAAC,IAAS;QACzB,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAEzC,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAEpC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAEhB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACZ,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;SAC1D;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAES,MAAM,CAAC,IAAS;QACxB,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF,CAAA;AAxCY,eAAe;IAD3B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;GAC/B,eAAe,CAwC3B;SAxCY,eAAe"}
@@ -74,7 +74,10 @@ export class JsonSerializer extends JsonMapperCompiler {
74
74
  types = types || getJsonMapperTypes();
75
75
  types.forEach((mapper, model) => {
76
76
  if (![Array, Set, Map].includes(model)) {
77
- this.addTypeMapper(model, mapper.serialize.bind(mapper));
77
+ this.addTypeMapper(model, (value, options) => mapper.serialize(value, {
78
+ ...options,
79
+ type: model
80
+ }));
78
81
  }
79
82
  });
80
83
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"JsonSerializer.js","sourceRoot":"","sources":["../../../src/domain/JsonSerializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JsonSerializer.js","sourceRoot":"","sources":["../../../src/domain/JsonSerializer.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,9 @@ export declare class CastError extends Error {
10
10
  */
11
11
  export declare class PrimitiveMapper implements JsonMapperMethods {
12
12
  deserialize<T>(data: any, ctx: JsonMapperCtx): string | number | boolean | void | null | BigInt;
13
- serialize(object: string | number | boolean | BigInt): string | number | boolean | BigInt;
13
+ serialize(object: string | number | boolean | BigInt, ctx: JsonMapperCtx): string | number | boolean | BigInt;
14
14
  protected String(data: any): string | null;
15
15
  protected Boolean(data: any): boolean | null | undefined;
16
- protected Number(data: any): number | null;
16
+ protected Number(data: any): any;
17
17
  protected BigInt(data: any): bigint | null;
18
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/json-mapper",
3
- "version": "7.68.1",
3
+ "version": "7.68.2",
4
4
  "description": "Json mapper module for Ts.ED Framework",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/cjs/index.js",
@@ -38,16 +38,16 @@
38
38
  "tslib": "2.6.1"
39
39
  },
40
40
  "devDependencies": {
41
- "@tsed/core": "7.68.1",
42
- "@tsed/schema": "7.68.1",
43
- "@tsed/typescript": "7.68.1",
41
+ "@tsed/core": "7.68.2",
42
+ "@tsed/schema": "7.68.2",
43
+ "@tsed/typescript": "7.68.2",
44
44
  "barrelsby": "^2.8.1",
45
45
  "eslint": "^8.57.0",
46
46
  "jest": "^29.7.0"
47
47
  },
48
48
  "peerDependencies": {
49
- "@tsed/core": "7.68.1",
50
- "@tsed/schema": "7.68.1"
49
+ "@tsed/core": "7.68.2",
50
+ "@tsed/schema": "7.68.2"
51
51
  },
52
52
  "peerDependenciesMeta": {
53
53
  "@tsed/core": {