"use strict";var Cereale=(()=>{var U=Object.defineProperty;var An=Object.getOwnPropertyDescriptor;var Cn=Object.getOwnPropertyNames;var In=Object.prototype.hasOwnProperty;var Vn=(n,t)=>{for(var e in t)U(n,e,{get:t[e],enumerable:!0})},vn=(n,t,e,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Cn(t))!In.call(n,i)&&i!==e&&U(n,i,{get:()=>t[i],enumerable:!(a=An(t,i))||a.enumerable});return n};var En=n=>vn(U({},"__esModule",{value:!0}),n);var ue={};Vn(ue,{Allow:()=>Wt,ArrayContains:()=>jt,ArrayMaxSize:()=>ot,ArrayMinSize:()=>st,ArrayNotContains:()=>qt,ArrayNotEmpty:()=>lt,ArrayUnique:()=>Ft,Contains:()=>$t,Email:()=>et,EndsWith:()=>It,Equals:()=>dt,IsAlpha:()=>Ot,IsAlphanumeric:()=>bt,IsArray:()=>rt,IsBigInt:()=>zt,IsBoolean:()=>qn,IsDate:()=>ft,IsDateString:()=>Tt,IsDefined:()=>Gn,IsDivisibleBy:()=>kt,IsEmpty:()=>mt,IsEnum:()=>pt,IsHexColor:()=>Pt,IsIP:()=>Dt,IsIn:()=>ut,IsInstance:()=>yt,IsInt:()=>Wn,IsJSON:()=>Nt,IsLatitude:()=>Rt,IsLongitude:()=>Lt,IsLowercase:()=>St,IsNotEmpty:()=>Yn,IsNotIn:()=>ct,IsNumber:()=>Zn,IsNumberString:()=>wt,IsObject:()=>Bn,IsOptional:()=>Fn,IsPort:()=>Jt,IsSemVer:()=>Mt,IsString:()=>jn,IsUUID:()=>Et,IsUppercase:()=>xt,IsUrl:()=>at,JsonAlias:()=>Dn,JsonDeserialize:()=>zn,JsonIgnore:()=>kn,JsonMapper:()=>q,JsonMappingError:()=>b,JsonPolymorphic:()=>_n,JsonProperty:()=>Pn,JsonReadOnly:()=>Jn,JsonSerialize:()=>Ln,JsonType:()=>Un,JsonValidationError:()=>A,JsonWriteOnly:()=>Rn,Length:()=>ht,METADATA_KEYS:()=>g,Matches:()=>it,Max:()=>Xn,MaxDate:()=>_t,MaxLength:()=>tt,Min:()=>Hn,MinDate:()=>Ut,MinLength:()=>nt,Negative:()=>Kn,NotContains:()=>At,NotEquals:()=>gt,Positive:()=>Qn,REDACTED:()=>un,StartsWith:()=>Ct,Validate:()=>Gt,ValidateIf:()=>Zt,ValidateNested:()=>Bt,collectErrorMessages:()=>Xt,configure:()=>Nn,flattenErrors:()=>j,formatErrors:()=>Ht,fromJson:()=>Sn,fromJsonArray:()=>xn,fromJsonArraySync:()=>le,fromJsonSync:()=>oe,fromRequest:()=>$n,getConfig:()=>Tn,registerDecorator:()=>Yt,resetConfig:()=>Mn,resolveNamingStrategy:()=>M,resolveOptions:()=>S,toInstance:()=>T,toInstanceArray:()=>H,toInstanceArraySync:()=>wn,toInstanceSync:()=>Y,toJson:()=>On,toJsonSync:()=>se,toPlain:()=>G,toPlainSync:()=>hn,validate:()=>N,validateOrReject:()=>yn,validateOrRejectSync:()=>re,validateSync:()=>R});function v(n){return n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/[_\-\s]+/g," ").trim().split(" ").filter(Boolean).map(t=>t.toLowerCase())}var K=n=>n&&n.charAt(0).toUpperCase()+n.slice(1),_={identity:n=>n,camelCase:n=>{let t=v(n);return t.length===0?n:t[0]+t.slice(1).map(K).join("")},PascalCase:n=>v(n).map(K).join("")||n,snake_case:n=>v(n).join("_")||n,SCREAMING_SNAKE_CASE:n=>v(n).join("_").toUpperCase()||n,"kebab-case":n=>v(n).join("-")||n};function M(n){if(!n)return _.identity;if(typeof n=="function")return n;let t=_[n];if(!t)throw new Error(`Unknown naming strategy ${JSON.stringify(n)}. Use one of: ${Object.keys(_).join(", ")}, or pass your own function.`);return t}var nn={namingStrategy:"identity",unknownKeys:"allow",validate:!0,maxDepth:64},$={...nn};function Nn(n){$={...$,...n}}function Tn(){return{...$}}function Mn(){$={...nn}}function S(n){return n?{namingStrategy:n.namingStrategy??$.namingStrategy,unknownKeys:n.unknownKeys??$.unknownKeys,validate:n.validate??$.validate,maxDepth:n.maxDepth??$.maxDepth}:$}var F=class n{static instance;_version=0;get version(){return this._version}properties=new WeakMap;propertyMetadata=new WeakMap;classMetadata=new WeakMap;constructor(){}static getInstance(){return n.instance||(n.instance=new n),n.instance}defineMetadata(t,e,a,i){if(this._version++,i){let r=this.propertyMetadata.get(a);r||(r=new Map,this.propertyMetadata.set(a,r));let o=r.get(i);o||(o=new Map,r.set(i,o)),o.set(t,e)}else{let r=this.classMetadata.get(a);r||(r=new Map,this.classMetadata.set(a,r)),r.set(t,e)}}getMetadata(t,e,a){let i=e;for(;i;){let r=this.getOwnMetadata(t,i,a);if(r!==void 0)return r;i=Object.getPrototypeOf(i)}}getMetadataChain(t,e,a){let i=[],r=e;for(;r;){let o=this.getOwnMetadata(t,r,a);o!==void 0&&i.unshift(o),r=Object.getPrototypeOf(r)}return i}getOwnMetadata(t,e,a){return a?this.propertyMetadata.get(e)?.get(a)?.get(t):this.classMetadata.get(e)?.get(t)}registerProperty(t,e){this._version++;let a=this.properties.get(t);a||(a=[],this.properties.set(t,a)),a.includes(e)||a.push(e)}getProperties(t){let e=new Set,a=t;for(;a;){let i=this.properties.get(a);i&&i.forEach(r=>e.add(r)),a=Object.getPrototypeOf(a)}return Array.from(e)}},f=F.getInstance();var g={PROPERTIES:"cereale:properties",TYPE:"cereale:type",VALIDATION:"cereale:validation",SERIALIZER:"cereale:serializer",DESERIALIZER:"cereale:deserializer",POLYMORPHIC:"cereale:polymorphic",IS_OPTIONAL:"cereale:optional",NESTED:"cereale:nested",NAME:"cereale:name",ALIASES:"cereale:aliases",ACCESS:"cereale:access",CONDITION:"cereale:condition"};function O(n,t){f.registerProperty(n,t)}function s(n,t,e,a){O(n,t),a&&(a.each&&(e.each=!0),a.message&&(e.message=a.message,e.hasCustomMessage=!0));let i=f.getOwnMetadata(g.VALIDATION,n,t)||[];i.push(e),f.defineMetadata(g.VALIDATION,i,n,t)}function Pn(n){return(t,e)=>{O(t,e),f.defineMetadata(g.NAME,n,t,e)}}function Dn(...n){return(t,e)=>{O(t,e);let a=f.getOwnMetadata(g.ALIASES,t,e)||[];f.defineMetadata(g.ALIASES,[...a,...n],t,e)}}function kn(){return(n,t)=>{O(n,t),f.defineMetadata(g.ACCESS,"none",n,t)}}function Jn(){return(n,t)=>{O(n,t),f.defineMetadata(g.ACCESS,"readonly",n,t)}}function Rn(){return(n,t)=>{O(n,t),f.defineMetadata(g.ACCESS,"writeonly",n,t)}}function Ln(n){return(t,e)=>{O(t,e),f.defineMetadata(g.SERIALIZER,n,t,e)}}function zn(n){return(t,e)=>{O(t,e),f.defineMetadata(g.DESERIALIZER,n,t,e)}}function Un(n){return(t,e)=>{O(t,e),f.defineMetadata(g.TYPE,n,t,e)}}function _n(n,t,e){return(a,i)=>{O(a,i),f.defineMetadata(g.POLYMORPHIC,{discriminator:n,subTypes:t,onUnknown:e?.onUnknown??"keep",fallback:e?.fallback},a,i)}}function Fn(){return(n,t)=>{O(n,t),f.defineMetadata(g.IS_OPTIONAL,!0,n,t)}}function jn(n){return(t,e)=>{s(t,e,{name:"isString",validate:a=>typeof a=="string",message:`${e} must be a string`},n)}}function qn(n){return(t,e)=>{s(t,e,{name:"isBoolean",validate:a=>typeof a=="boolean",message:`${e} must be a boolean`},n)}}function Zn(n){return(t,e)=>{s(t,e,{name:"isNumber",validate:a=>typeof a=="number"&&!isNaN(a),message:`${e} must be a number`},n)}}function Wn(n){return(t,e)=>{s(t,e,{name:"isInt",validate:a=>Number.isInteger(a),message:`${e} must be an integer`},n)}}function Bn(n){return(t,e)=>{s(t,e,{name:"isObject",validate:a=>typeof a=="object"&&a!==null&&!Array.isArray(a),message:`${e} must be an object`},n)}}function Gn(n){return(t,e)=>{s(t,e,{name:"isDefined",validate:a=>a!=null,message:`${e} should not be null or undefined`},n)}}function Yn(n){return(t,e)=>{s(t,e,{name:"isNotEmpty",validate:a=>a!=null&&a!=="",message:`${e} should not be empty`},n)}}function Hn(n,t){return(e,a)=>{s(e,a,{name:"min",validate:i=>typeof i=="number"&&i>=n,message:`${a} must be at least ${n}`,constraints:[n]},t)}}function Xn(n,t){return(e,a)=>{s(e,a,{name:"max",validate:i=>typeof i=="number"&&i<=n,message:`${a} must be at most ${n}`,constraints:[n]},t)}}function Qn(n){return(t,e)=>{s(t,e,{name:"positive",validate:a=>typeof a=="number"&&a>0,message:`${e} must be positive`},n)}}function Kn(n){return(t,e)=>{s(t,e,{name:"negative",validate:a=>typeof a=="number"&&a<0,message:`${e} must be negative`},n)}}function nt(n,t){return(e,a)=>{s(e,a,{name:"minLength",validate:i=>typeof i=="string"&&i.length>=n,message:`${a} must be longer than or equal to ${n} characters`,constraints:[n]},t)}}function tt(n,t){return(e,a)=>{s(e,a,{name:"maxLength",validate:i=>typeof i=="string"&&i.length<=n,message:`${a} must be shorter than or equal to ${n} characters`,constraints:[n]},t)}}function et(n){let t=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return(e,a)=>{s(e,a,{name:"isEmail",validate:i=>typeof i=="string"&&t.test(i),message:`${a} must be a valid email`},n)}}function at(n){return(t,e)=>{s(t,e,{name:"isUrl",validate:a=>{try{return new URL(a),!0}catch{return!1}},message:`${e} must be a valid URL`},n)}}function it(n,t){let e=n.flags.includes("g")||n.flags.includes("y")?new RegExp(n.source,n.flags.replace(/[gy]/g,"")):n;return(a,i)=>{s(a,i,{name:"matches",validate:r=>typeof r=="string"&&e.test(r),message:`${i} must match ${n} regular expression`,constraints:[n]},t)}}function rt(n){return(t,e)=>{s(t,e,{name:"isArray",validate:a=>Array.isArray(a),message:`${e} must be an array`},n)}}function st(n,t){return(e,a)=>{s(e,a,{name:"arrayMinSize",validate:i=>Array.isArray(i)&&i.length>=n,message:`${a} must contain at least ${n} elements`,constraints:[n]},t)}}function ot(n,t){return(e,a)=>{s(e,a,{name:"arrayMaxSize",validate:i=>Array.isArray(i)&&i.length<=n,message:`${a} must contain at most ${n} elements`,constraints:[n]},t)}}function lt(n){return(t,e)=>{s(t,e,{name:"arrayNotEmpty",validate:a=>Array.isArray(a)&&a.length>0,message:`${e} should not be empty`},n)}}function ut(n,t){return(e,a)=>{s(e,a,{name:"isIn",validate:i=>n.includes(i),message:`${a} must be one of the following values: ${n.join(", ")}`,constraints:[n]},t)}}function ct(n,t){return(e,a)=>{s(e,a,{name:"isNotIn",validate:i=>!n.includes(i),message:`${a} must not be one of the following values: ${n.join(", ")}`,constraints:[n]},t)}}function ft(n){return(t,e)=>{s(t,e,{name:"isDate",validate:a=>a instanceof Date&&!isNaN(a.getTime()),message:`${e} must be a valid Date object`},n)}}function dt(n,t){return(e,a)=>{s(e,a,{name:"equals",validate:i=>i===n,message:`${a} must be equal to ${JSON.stringify(n)}`,constraints:[n]},t)}}function gt(n,t){return(e,a)=>{s(e,a,{name:"notEquals",validate:i=>i!==n,message:`${a} must not be equal to ${JSON.stringify(n)}`,constraints:[n]},t)}}function mt(n){return(t,e)=>{s(t,e,{name:"isEmpty",validate:a=>a==null||a===""?!0:Array.isArray(a)?a.length===0:typeof a=="object"?Object.keys(a).length===0:!1,message:`${e} must be empty`},n)}}function pt(n,t){let e=Object.keys(n).filter(a=>typeof n[n[a]]!="number").map(a=>n[a]);return(a,i)=>{s(a,i,{name:"isEnum",validate:r=>e.includes(r),message:`${i} must be one of the following values: ${e.join(", ")}`,constraints:[e]},t)}}function yt(n,t){return(e,a)=>{s(e,a,{name:"isInstance",validate:i=>i instanceof n,message:`${a} must be an instance of ${n.name}`,constraints:[n]},t)}}function ht(n,t,e){return(a,i)=>{s(a,i,{name:"length",validate:r=>typeof r=="string"&&r.length>=n&&(t===void 0||r.length<=t),message:t===void 0?`${i} must be at least ${n} characters`:`${i} must be between ${n} and ${t} characters`,constraints:t===void 0?[n]:[n,t]},e)}}function D(n,t,e){return a=>(i,r)=>{s(i,r,{name:n,validate:o=>typeof o=="string"&&t.test(o),message:e(r)},a)}}var Ot=D("isAlpha",/^[A-Za-z]+$/,n=>`${n} must contain only letters`),bt=D("isAlphanumeric",/^[A-Za-z0-9]+$/,n=>`${n} must contain only letters and numbers`);function wt(n){return(t,e)=>{s(t,e,{name:"isNumberString",validate:a=>typeof a=="string"&&a.trim()!==""&&Number.isFinite(Number(a)),message:`${e} must be a number string`},n)}}function St(n){return(t,e)=>{s(t,e,{name:"isLowercase",validate:a=>typeof a=="string"&&a===a.toLowerCase(),message:`${e} must be lowercase`},n)}}function xt(n){return(t,e)=>{s(t,e,{name:"isUppercase",validate:a=>typeof a=="string"&&a===a.toUpperCase(),message:`${e} must be uppercase`},n)}}function $t(n,t){return(e,a)=>{s(e,a,{name:"contains",validate:i=>typeof i=="string"&&i.includes(n),message:`${a} must contain ${JSON.stringify(n)}`,constraints:[n]},t)}}function At(n,t){return(e,a)=>{s(e,a,{name:"notContains",validate:i=>typeof i=="string"&&!i.includes(n),message:`${a} must not contain ${JSON.stringify(n)}`,constraints:[n]},t)}}function Ct(n,t){return(e,a)=>{s(e,a,{name:"startsWith",validate:i=>typeof i=="string"&&i.startsWith(n),message:`${a} must start with ${JSON.stringify(n)}`,constraints:[n]},t)}}function It(n,t){return(e,a)=>{s(e,a,{name:"endsWith",validate:i=>typeof i=="string"&&i.endsWith(n),message:`${a} must end with ${JSON.stringify(n)}`,constraints:[n]},t)}}var Vt="00000000-0000-0000-0000-000000000000",vt="ffffffff-ffff-ffff-ffff-ffffffffffff";function Et(n,t){let e=n?new RegExp(`^[0-9a-f]{8}-[0-9a-f]{4}-${n}[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$`,"i"):/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return(a,i)=>{s(a,i,{name:"isUuid",validate:r=>typeof r!="string"?!1:!n&&(r.toLowerCase()===Vt||r.toLowerCase()===vt)?!0:e.test(r),message:`${i} must be a valid UUID${n?` (version ${n})`:""}`,...n?{constraints:[n]}:{}},t)}}function Nt(n){return(t,e)=>{s(t,e,{name:"isJson",validate:a=>{if(typeof a!="string")return!1;try{return JSON.parse(a),!0}catch{return!1}},message:`${e} must be a JSON string`},n)}}function Tt(n){return(t,e)=>{s(t,e,{name:"isDateString",validate:a=>typeof a=="string"&&!isNaN(Date.parse(a)),message:`${e} must be a valid ISO 8601 date string`},n)}}var Mt=D("isSemVer",/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,n=>`${n} must be a valid semantic version`),Pt=D("isHexColor",/^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i,n=>`${n} must be a hex color`),tn=/^(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}$/;function Dt(n,t){let e=a=>{try{return new URL(`http://[${a}]`).hostname===`[${a.toLowerCase()}]`||/^[0-9a-f:.]+$/i.test(a)&&a.includes(":")}catch{return!1}};return(a,i)=>{s(a,i,{name:"isIp",validate:r=>typeof r!="string"?!1:n===4?tn.test(r):n===6?e(r):tn.test(r)||e(r),message:`${i} must be a valid IP${n?`v${n}`:""} address`,...n?{constraints:[n]}:{}},t)}}function kt(n,t){return(e,a)=>{s(e,a,{name:"isDivisibleBy",validate:i=>typeof i=="number"&&Number.isFinite(i)&&n!==0&&i%n===0,message:`${a} must be divisible by ${n}`,constraints:[n]},t)}}function Jt(n){return(t,e)=>{s(t,e,{name:"isPort",validate:a=>{let i=typeof a=="string"&&a.trim()!==""?Number(a):a;return typeof i=="number"&&Number.isInteger(i)&&i>=0&&i<=65535},message:`${e} must be a valid port number`},n)}}function Rt(n){return(t,e)=>{s(t,e,{name:"isLatitude",validate:a=>typeof a=="number"&&Number.isFinite(a)&&a>=-90&&a<=90,message:`${e} must be a latitude between -90 and 90`},n)}}function Lt(n){return(t,e)=>{s(t,e,{name:"isLongitude",validate:a=>typeof a=="number"&&Number.isFinite(a)&&a>=-180&&a<=180,message:`${e} must be a longitude between -180 and 180`},n)}}function zt(n){return(t,e)=>{s(t,e,{name:"isBigInt",validate:a=>typeof a=="bigint",message:`${e} must be a bigint`},n)}}var P=n=>typeof n=="function"?n():n;function Ut(n,t){return(e,a)=>{s(e,a,{name:"minDate",validate:i=>i instanceof Date&&!isNaN(i.getTime())&&i.getTime()>=P(n).getTime(),message:i=>`${i.property} must not be earlier than ${P(n).toISOString()}`,constraints:[n]},t)}}function _t(n,t){return(e,a)=>{s(e,a,{name:"maxDate",validate:i=>i instanceof Date&&!isNaN(i.getTime())&&i.getTime()<=P(n).getTime(),message:i=>`${i.property} must not be later than ${P(n).toISOString()}`,constraints:[n]},t)}}function Ft(n,t){return(e,a)=>{s(e,a,{name:"arrayUnique",validate:i=>{if(!Array.isArray(i))return!1;let r=n?i.map(n):i;return new Set(r).size===r.length},message:`${a} must not contain duplicate values`},t)}}function jt(n,t){return(e,a)=>{s(e,a,{name:"arrayContains",validate:i=>Array.isArray(i)&&n.every(r=>i.includes(r)),message:`${a} must contain the following values: ${n.join(", ")}`,constraints:[n]},t)}}function qt(n,t){return(e,a)=>{s(e,a,{name:"arrayNotContains",validate:i=>Array.isArray(i)&&n.every(r=>!i.includes(r)),message:`${a} must not contain any of the following values: ${n.join(", ")}`,constraints:[n]},t)}}function Zt(n){return(t,e)=>{O(t,e),f.defineMetadata(g.CONDITION,n,t,e)}}function Wt(){return(n,t)=>{O(n,t)}}function Bt(n){return(t,e)=>{O(t,e),f.defineMetadata(g.NESTED,!0,t,e),n?.each&&s(t,e,{name:"nestedEach",validate:a=>Array.isArray(a),message:`${e} must be an array`})}}function Gt(n,t,e){return(a,i)=>{let r=[],o;if(Array.isArray(t)?(r=t,o=e):typeof t=="object"&&(o=t),typeof n=="function"&&!n.prototype?.validate)s(a,i,{name:"custom",validate:n,message:u=>`${u.property} is invalid`,constraints:r},o);else{let u=new n;s(a,i,{name:n.name,validate:(c,l)=>u.validate(c,l),message:c=>u.defaultMessage?u.defaultMessage(c):`${c.property} is invalid`,constraints:r},o)}}}function Yt(n){let{name:t,target:e,propertyName:a,options:i,constraints:r,validator:o}=n,u;if(typeof o=="function"&&!o.prototype?.validate)u={name:t,validate:o,message:c=>`${c.property} is invalid`,...r?{constraints:r}:{}};else{let c=typeof o=="function"?new o:o;u={name:t,validate:(l,d)=>c.validate(l,d),message:l=>c.defaultMessage?c.defaultMessage(l):`${l.property} is invalid`,...r?{constraints:r}:{}}}s(e.prototype,a,u,i)}function j(n){let t={},e=(a,i)=>{for(let r of a){let o=r.property.startsWith("[")?`${i}${r.property}`:i?`${i}.${r.property}`:r.property,u=Object.values(r.constraints);u.length>0&&(t[o]??=[]).push(...u),r.children?.length&&e(r.children,o)}};return e(n,""),t}function Ht(n){let t=j(n);return Object.entries(t).flatMap(([e,a])=>a.map(i=>`${e}: ${i}`)).join(` `)}function Xt(n){return Object.values(j(n)).flat()}var A=class extends Error{constructor(e,a){super(e);this.errors=a;this.name="JsonValidationError"}toString(){return`${this.message}: ${JSON.stringify(this.errors,null,2)}`}},b=class extends Error{constructor(t){super(t),this.name="JsonMappingError"}},Qt=new Set(["__proto__","constructor","prototype"]),un="[redacted]";function cn(n){return Object.getPrototypeOf(n)??void 0}function Z(n,t){return(n?f.getMetadata(g.ACCESS,n,t):void 0)??"readwrite"}function fn(n,t,e){return(n?f.getMetadata(g.NAME,n,t):void 0)??e(t)}var en=new WeakMap;function Kt(n,t,e){if(!n)return{name:e.naming(t),skip:!1};let a=en.get(n);(!a||a.version!==f.version)&&(a={version:f.version,byStrategy:new Map},en.set(n,a));let i=a.byStrategy.get(e.namingKey);i||(i=new Map,a.byStrategy.set(e.namingKey,i));let r=i.get(t);if(!r){let o=Z(n,t),u=f.getMetadata(g.SERIALIZER,n,t);r={name:fn(n,t,e.naming),skip:o==="none"||o==="writeonly",...u?{serializer:u}:{}},i.set(t,r)}return r}var an=new WeakMap;function ne(n,t){let e=an.get(n);(!e||e.version!==f.version)&&(e={version:f.version,byStrategy:new Map},an.set(n,e));let a=e.byStrategy.get(t.namingKey);if(a)return a;let i=new Map,r=new Set,o=new Map,u=(l,d)=>{let m=i.get(l);if(m&&m!==d)throw new b(`Properties "${m}" and "${d}" both map to the JSON name ${JSON.stringify(l)}. Give one of them a distinct @JsonProperty name.`);i.set(l,d)};for(let l of f.getProperties(n)){let d=[fn(n,l,t.naming),...f.getMetadata(g.ALIASES,n,l)||[]],m=Z(n,l);if(m==="none"||m==="readonly"){for(let h of d)r.add(h);continue}for(let h of d)u(h,l);let w=f.getMetadata(g.DESERIALIZER,n,l),y=f.getMetadata(g.POLYMORPHIC,n,l),p=f.getMetadata(g.TYPE,n,l);(w||y||p)&&o.set(l,{...w?{deserializer:w}:{},...y?{polymorphic:y}:{},...p?{typeFn:p}:{}})}let c={accept:i,blocked:r,props:o};return e.byStrategy.set(t.namingKey,c),c}function E(n){return n!==null&&typeof n=="object"&&typeof n.then=="function"}async function W(n){for(;n.length>0;){let t=n.splice(0,n.length);await Promise.all(t)}}function B(n,t,e){if(n.length!==0){for(let a of n)a.catch(()=>{});throw n.length=0,new b(`${t} requires every serializer, deserializer and validator to be synchronous, but one returned a Promise. Use ${e} instead, or make the hook synchronous.`)}}function k(n,t,e,a,i){if(n==null||typeof n!="object")return n;if(a>e.maxDepth)throw new b(`Maximum nesting depth of ${e.maxDepth} exceeded while serializing. Raise it with the maxDepth option if this structure is legitimate.`);if(n instanceof Date)return n.toISOString();if(t.has(n))throw new b("Circular reference detected during serialization. Break the cycle with @JsonIgnore() on the back-reference, or supply a @JsonSerialize() serializer for that property.");t.add(n);try{if(Array.isArray(n)){let u=[];for(let c of n)u.push(k(c,t,e,a+1,i));return u}let r=cn(n),o={};for(let u of Object.keys(n)){let c=Kt(r,u,e);if(c.skip)continue;let l=n[u];if(c.serializer&&l!==null&&l!==void 0){let d=dn(c.serializer).serialize(l);if(E(d)){let m=c.name;o[m]=void 0,i.push(d.then(w=>{o[m]=w}))}else o[c.name]=d}else o[c.name]=k(l,t,e,a+1,i)}return o}finally{t.delete(n)}}function V(n,t,e,a,i){if(t==null)return t;if(a>e.maxDepth)throw new b(`Maximum nesting depth of ${e.maxDepth} exceeded while deserializing. Raise it with the maxDepth option if this structure is legitimate.`);if(Array.isArray(t))return t.map(c=>V(n,c,e,a+1,i));if(typeof t!="object")return t;let r=new n,o=n.prototype,u=ne(o,e);for(let c of Object.keys(t)){if(Qt.has(c)||u.blocked.has(c))continue;let l=u.accept.get(c);if(l===void 0){if(e.unknownKeys==="strip")continue;if(e.unknownKeys==="error")throw new b(`Unknown property ${JSON.stringify(c)} for ${n.name}. Allowed: ${[...u.accept.keys()].map(p=>JSON.stringify(p)).join(", ")||"(none declared)"}.`);r[c]=t[c];continue}let d=t[c],m=u.props.get(l);if(m?.deserializer){let p=dn(m.deserializer).deserialize(d);if(E(p)){let h=l;r[h]=void 0,i.push(p.then(C=>{r[h]=C}))}else r[l]=p;continue}let w=m?.polymorphic;if(w&&d!==null&&d!==void 0){let{discriminator:p,subTypes:h,onUnknown:C,fallback:I}=w,X=x=>{if(x==null||typeof x!="object")return x;let Q=h.find(z=>x[p]===z.name);if(Q)return V(Q.value,x,e,a+1,i);if(I)return V(I,x,e,a+1,i);if(C==="error")throw new b(`Unknown discriminator value ${JSON.stringify(x[p])} for property "${l}". Known values: ${h.map(z=>JSON.stringify(z.name)).join(", ")}.`);return x};r[l]=Array.isArray(d)?d.map(X):X(d);continue}let y=m?.typeFn;if(y&&d!==null&&d!==void 0){let p=y();r[l]=V(p,d,e,a+1,i);continue}r[l]=d}return r}function te(n,t){let e=f.getMetadataChain(g.VALIDATION,n,t),a=[],i=new Set;for(let r of e)for(let o of r){if(typeof o.message=="string"){let u=`${o.name}|${String(o.constraints)}|${o.message}`;if(i.has(u))continue;i.add(u)}a.push(o)}return a}var rn=new WeakMap;function ee(n){let t=rn.get(n);if(t&&t.version===f.version)return t.plan;let e=[];for(let a of f.getProperties(n)){let i=f.getMetadata(g.CONDITION,n,a),r=Z(n,a);e.push({key:a,constraints:te(n,a),isOptional:!!f.getMetadata(g.IS_OPTIONAL,n,a),isNested:!!f.getMetadata(g.NESTED,n,a),redact:r==="writeonly"||r==="none",...i?{condition:i}:{}})}return rn.set(n,{version:f.version,plan:e}),e}var sn=new WeakMap;function dn(n){let t=sn.get(n);return t||(t=new n,sn.set(n,t)),t}function on(n,t,e){if(!(t in n)){n[t]=e;return}let a=2;for(;`${t}_${a}`in n;)a++;n[`${t}_${a}`]=e}function ln(n,t,e){let a=typeof n.message=="function"?n.message(t):n.message;return n.each&&!n.hasCustomMessage&&(a=e>=0?`each element in ${a} (failed at index ${e})`:`each element in ${a}`),a}function ae(n,t,e){for(let a=0;a0?e.children=a:delete e.children,(Object.keys(e.constraints).length>0||e.children)&&t.push(e)}return t}function J(n,t,e,a,i){let r=[];if(n==null||typeof n!="object")return r;if(e>a)throw new b(`Maximum nesting depth of ${a} exceeded while validating. Raise it with the maxDepth option if this structure is legitimate.`);if(t.has(n))return r;t.add(n);try{if(Array.isArray(n)){for(let u=0;u0&&r.push({property:`[${u}]`,value:n[u],constraints:{},children:c})}return r}let o=cn(n);if(!o)return r;for(let u of ee(o)){let c=u.key,l=n[c];if(u.condition&&!u.condition(n)||u.isOptional&&l==null)continue;let d={property:c,value:u.redact?un:l,constraints:{}},m={value:l,object:n,property:c,constraints:[]},w=!1;for(let y of u.constraints){m.constraints=y.constraints||[];let p=y.each&&Array.isArray(l)?ae(y,l,m):(()=>{let h=y.validate(l,m);return E(h)?h.then(C=>({ok:C,index:-1})):{ok:h,index:-1}})();if(E(p)){w=!0;let h={value:l,object:n,property:c,constraints:y.constraints||[]};i.push(p.then(({ok:C,index:I})=>{C||(I>=0&&(h.value=l[I]),on(d.constraints,y.name,ln(y,h,I)))}));continue}if(!p.ok){p.index>=0&&(m.value=l[p.index]);let h=ln(y,m,p.index);m.value=l,on(d.constraints,y.name,h)}}if(u.isNested&&l!==null&&l!==void 0){let y=J(l,t,e+1,a,i);y.length>0&&(d.children=y)}(w||Object.keys(d.constraints).length>0||d.children)&&r.push(d)}return r}finally{t.delete(n)}}function mn(n){let t=S(n);return{naming:M(t.namingStrategy),namingKey:t.namingStrategy,maxDepth:t.maxDepth}}function pn(n){let t=S(n);return{naming:M(t.namingStrategy),namingKey:t.namingStrategy,unknownKeys:t.unknownKeys,maxDepth:t.maxDepth}}async function N(n,t){let e=[],a=J(n,new Set,0,S(t).maxDepth,e);return e.length===0?a:(await W(e),gn(a))}function R(n,t){let e=[],a=J(n,new Set,0,S(t).maxDepth,e);return B(e,"validateSync()","validate()"),a}async function yn(n,t){let e=await N(n,t);if(e.length>0)throw new A("Validation failed",e)}function re(n,t){let e=R(n,t);if(e.length>0)throw new A("Validation failed",e)}async function G(n,t){if(n==null)return n;if(S(t).validate){let i=await N(n,t);if(i.length>0)throw new A("Validation failed during serialization",i)}let e=[],a=k(n,new Set,mn(t),0,e);return await W(e),a}function hn(n,t){if(n==null)return n;if(S(t).validate){let i=R(n,t);if(i.length>0)throw new A("Validation failed during serialization",i)}let e=[],a=k(n,new Set,mn(t),0,e);return B(e,"toPlainSync()","toPlain()"),a}async function On(n,t){return JSON.stringify(await G(n,t))}function se(n,t){return JSON.stringify(hn(n,t))}async function T(n,t,e){let a=[],i=V(n,t,pn(e),0,a);if(await W(a),S(e).validate){let r=await N(i,e);if(r.length>0)throw new A("Validation failed during deserialization",r)}return i}function Y(n,t,e){let a=[],i=V(n,t,pn(e),0,a);if(B(a,"toInstanceSync()","toInstance()"),S(e).validate){let r=R(i,e);if(r.length>0)throw new A("Validation failed during deserialization",r)}return i}function bn(n,t){if(!Array.isArray(t))throw new b(`Expected an array to map to ${n.name}[], received ${typeof t}.`)}async function H(n,t,e){return bn(n,t),await T(n,t,e)}function wn(n,t,e){return bn(n,t),Y(n,t,e)}async function Sn(n,t,e){return T(n,L(t),e)}function oe(n,t,e){return Y(n,L(t),e)}async function xn(n,t,e){return H(n,L(t),e)}function le(n,t,e){return wn(n,L(t),e)}function L(n){try{return JSON.parse(n)}catch(t){throw new b(`Input is not valid JSON: ${t instanceof Error?t.message:String(t)}`)}}async function $n(n,t,e){let a;try{a=await t.json()}catch(i){throw new b(`Request body is not valid JSON: ${i instanceof Error?i.message:String(i)}`)}return T(n,a,e)}var q=class{static toPlain=G;static toJson=On;static toInstance=T;static toInstanceArray=H;static fromJson=Sn;static fromJsonArray=xn;static fromRequest=$n;static validate=N;static validateOrReject=yn};return En(ue);})();