🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

seroval

Package Overview
Dependencies
Maintainers
2
Versions
77
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

seroval - npm Package Compare versions

Comparing version
1.4.0
to
1.4.1
+3
-3
dist/cjs/production/index.cjs

@@ -1,3 +0,3 @@

"use strict";var ur=Object.defineProperty;var tn=Object.getOwnPropertyDescriptor;var nn=Object.getOwnPropertyNames;var on=Object.prototype.hasOwnProperty;var an=(e,r)=>{for(var t in r)ur(e,t,{get:r[t],enumerable:!0})},sn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of nn(r))!on.call(e,a)&&a!==t&&ur(e,a,{get:()=>r[a],enumerable:!(n=tn(r,a))||n.enumerable});return e};var ln=e=>sn(ur({},"__esModule",{value:!0}),e);var Va={};an(Va,{Feature:()=>V,OpaqueReference:()=>F,Serializer:()=>ve,SerovalDeserializationError:()=>Se,SerovalError:()=>ee,SerovalMissingInstanceError:()=>_,SerovalMissingPluginError:()=>U,SerovalMissingReferenceError:()=>ue,SerovalMissingReferenceForIdError:()=>ce,SerovalMode:()=>K,SerovalParserError:()=>O,SerovalSerializationError:()=>Ge,SerovalUnknownTypedArrayError:()=>pe,SerovalUnsupportedNodeError:()=>w,SerovalUnsupportedTypeError:()=>E,compileJSON:()=>Fa,createPlugin:()=>Fn,createReference:()=>at,createStream:()=>Y,crossSerialize:()=>Ea,crossSerializeAsync:()=>Pa,crossSerializeStream:()=>Zr,deserialize:()=>ka,fromCrossJSON:()=>ha,fromJSON:()=>Ba,getCrossReferenceHeader:()=>ot,resolvePlugins:()=>C,serialize:()=>wa,serializeAsync:()=>za,toCrossJSON:()=>xa,toCrossJSONAsync:()=>Ta,toCrossJSONStream:()=>Oa,toJSON:()=>_a,toJSONAsync:()=>Da});module.exports=ln(Va);var V=(s=>(s[s.AggregateError=1]="AggregateError",s[s.ArrowFunction=2]="ArrowFunction",s[s.ErrorPrototypeStack=4]="ErrorPrototypeStack",s[s.ObjectAssign=8]="ObjectAssign",s[s.BigIntTypedArray=16]="BigIntTypedArray",s))(V||{});var b=Symbol.asyncIterator,cr=Symbol.hasInstance,P=Symbol.isConcatSpreadable,A=Symbol.iterator,fr=Symbol.match,Sr=Symbol.matchAll,pr=Symbol.replace,dr=Symbol.search,mr=Symbol.species,gr=Symbol.split,yr=Symbol.toPrimitive,x=Symbol.toStringTag,Nr=Symbol.unscopables;var Hr={0:"Symbol.asyncIterator",1:"Symbol.hasInstance",2:"Symbol.isConcatSpreadable",3:"Symbol.iterator",4:"Symbol.match",5:"Symbol.matchAll",6:"Symbol.replace",7:"Symbol.search",8:"Symbol.species",9:"Symbol.split",10:"Symbol.toPrimitive",11:"Symbol.toStringTag",12:"Symbol.unscopables"},be={[b]:0,[cr]:1,[P]:2,[A]:3,[fr]:4,[Sr]:5,[pr]:6,[dr]:7,[mr]:8,[gr]:9,[yr]:10,[x]:11,[Nr]:12},$r={0:b,1:cr,2:P,3:A,4:fr,5:Sr,6:pr,7:dr,8:mr,9:gr,10:yr,11:x,12:Nr},qr={2:"!0",3:"!1",1:"void 0",0:"null",4:"-0",5:"1/0",6:"-1/0",7:"0/0"},Xr={2:!0,3:!1,1:void 0,0:null,4:-0,5:Number.POSITIVE_INFINITY,6:Number.NEGATIVE_INFINITY,7:Number.NaN};var Ae={0:"Error",1:"EvalError",2:"RangeError",3:"ReferenceError",4:"SyntaxError",5:"TypeError",6:"URIError"},Qr={0:Error,1:EvalError,2:RangeError,3:ReferenceError,4:SyntaxError,5:TypeError,6:URIError},o=void 0;function c(e,r,t,n,a,s,i,l,u,g,S,d){return{t:e,i:r,s:t,l:n,c:a,m:s,p:i,e:l,a:u,f:g,b:S,o:d}}function D(e){return c(2,o,e,o,o,o,o,o,o,o,o,o)}var $=D(2),q=D(3),Re=D(1),Ie=D(0),et=D(4),rt=D(5),tt=D(6),nt=D(7);function un(e){switch(e){case'"':return'\\"';case"\\":return"\\\\";case`
`:return"\\n";case"\r":return"\\r";case"\b":return"\\b";case" ":return"\\t";case"\f":return"\\f";case"<":return"\\x3C";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return}}function y(e){let r="",t=0,n;for(let a=0,s=e.length;a<s;a++)n=un(e[a]),n&&(r+=e.slice(t,a)+n,t=a+1);return t===0?r=e:r+=e.slice(t),r}function cn(e){switch(e){case"\\\\":return"\\";case'\\"':return'"';case"\\n":return`
`;case"\\r":return"\r";case"\\b":return"\b";case"\\t":return" ";case"\\f":return"\f";case"\\x3C":return"<";case"\\u2028":return"\u2028";case"\\u2029":return"\u2029";default:return e}}function k(e){return e.replace(/(\\\\|\\"|\\n|\\r|\\b|\\t|\\f|\\u2028|\\u2029|\\x3C)/g,cn)}var M="__SEROVAL_REFS__",le="$R",Ee=`self.${le}`;function ot(e){return e==null?`${Ee}=${Ee}||[]`:`(${Ee}=${Ee}||{})["${y(e)}"]=[]`}var Cr=new Map,j=new Map;function at(e,r){return Cr.set(r,e),j.set(e,r),r}function vr(e){return Cr.has(e)}function fn(e){return j.has(e)}function st(e){if(vr(e))return Cr.get(e);throw new ue(e)}function it(e){if(fn(e))return j.get(e);throw new ce(e)}typeof globalThis!="undefined"?Object.defineProperty(globalThis,M,{value:j,configurable:!0,writable:!1,enumerable:!1}):typeof window!="undefined"?Object.defineProperty(window,M,{value:j,configurable:!0,writable:!1,enumerable:!1}):typeof self!="undefined"?Object.defineProperty(self,M,{value:j,configurable:!0,writable:!1,enumerable:!1}):typeof global!="undefined"&&Object.defineProperty(global,M,{value:j,configurable:!0,writable:!1,enumerable:!1});function Pe(e){return e instanceof EvalError?1:e instanceof RangeError?2:e instanceof ReferenceError?3:e instanceof SyntaxError?4:e instanceof TypeError?5:e instanceof URIError?6:0}function Sn(e){let r=Ae[Pe(e)];return e.name!==r?{name:e.name}:e.constructor.name!==r?{name:e.constructor.name}:{}}function X(e,r){let t=Sn(e),n=Object.getOwnPropertyNames(e);for(let a=0,s=n.length,i;a<s;a++)i=n[a],i!=="name"&&i!=="message"&&(i==="stack"?r&4&&(t=t||{},t[i]=e[i]):(t=t||{},t[i]=e[i]));return t}function xe(e){return Object.isFrozen(e)?3:Object.isSealed(e)?2:Object.isExtensible(e)?0:1}function Te(e){switch(e){case Number.POSITIVE_INFINITY:return rt;case Number.NEGATIVE_INFINITY:return tt}return e!==e?nt:Object.is(e,-0)?et:c(0,o,e,o,o,o,o,o,o,o,o,o)}function Q(e){return c(1,o,y(e),o,o,o,o,o,o,o,o,o)}function Oe(e){return c(3,o,""+e,o,o,o,o,o,o,o,o,o)}function ut(e){return c(4,e,o,o,o,o,o,o,o,o,o,o)}function he(e,r){let t=r.valueOf();return c(5,e,t!==t?"":r.toISOString(),o,o,o,o,o,o,o,o,o)}function we(e,r){return c(6,e,o,o,y(r.source),r.flags,o,o,o,o,o,o)}function ct(e,r){return c(17,e,be[r],o,o,o,o,o,o,o,o,o)}function ft(e,r){return c(18,e,y(st(r)),o,o,o,o,o,o,o,o,o)}function fe(e,r,t){return c(25,e,t,o,y(r),o,o,o,o,o,o,o)}function ze(e,r,t){return c(9,e,o,r.length,o,o,o,o,t,o,o,xe(r))}function ke(e,r){return c(21,e,o,o,o,o,o,o,o,r,o,o)}function _e(e,r,t){return c(15,e,o,r.length,r.constructor.name,o,o,o,o,t,r.byteOffset,o)}function De(e,r,t){return c(16,e,o,r.length,r.constructor.name,o,o,o,o,t,r.byteOffset,o)}function Fe(e,r,t){return c(20,e,o,r.byteLength,o,o,o,o,o,t,r.byteOffset,o)}function Be(e,r,t){return c(13,e,Pe(r),o,o,y(r.message),t,o,o,o,o,o)}function Ve(e,r,t){return c(14,e,Pe(r),o,o,y(r.message),t,o,o,o,o,o)}function Me(e,r,t){return c(7,e,o,r,o,o,o,o,t,o,o,o)}function je(e,r){return c(28,o,o,o,o,o,o,o,[e,r],o,o,o)}function Ue(e,r){return c(30,o,o,o,o,o,o,o,[e,r],o,o,o)}function Le(e,r,t){return c(31,e,o,o,o,o,o,o,t,r,o,o)}function Ye(e,r){return c(32,e,o,o,o,o,o,o,o,r,o,o)}function We(e,r){return c(33,e,o,o,o,o,o,o,o,r,o,o)}function Ke(e,r){return c(34,e,o,o,o,o,o,o,o,r,o,o)}var{toString:ys}=Object.prototype;var pn={parsing:1,serialization:2,deserialization:3};function dn(e){return`Seroval Error (step: ${pn[e]})`}var mn=(e,r)=>dn(e),ee=class extends Error{constructor(t,n){super(mn(t,n));this.cause=n}},O=class extends ee{constructor(r){super("parsing",r)}},Ge=class extends ee{constructor(r){super("serialization",r)}},Se=class extends ee{constructor(r){super("deserialization",r)}};function L(e){return`Seroval Error (specific: ${e})`}var E=class extends Error{constructor(t){super(L(1));this.value=t}},w=class extends Error{constructor(r){super(L(2))}},U=class extends Error{constructor(r){super(L(3))}},_=class extends Error{constructor(r){super(L(4))}},ue=class extends Error{constructor(t){super(L(5));this.value=t}},ce=class extends Error{constructor(r){super(L(6))}},pe=class extends Error{constructor(r){super(L(7))}};var F=class{constructor(r,t){this.value=r;this.replacement=t}};var re=()=>{let e={p:0,s:0,f:0};return e.p=new Promise((r,t)=>{e.s=r,e.f=t}),e},gn=(e,r)=>{e.s(r),e.p.s=1,e.p.v=r},yn=(e,r)=>{e.f(r),e.p.s=2,e.p.v=r},St=re.toString(),pt=gn.toString(),dt=yn.toString(),br=()=>{let e=[],r=[],t=!0,n=!1,a=0,s=(u,g,S)=>{for(S=0;S<a;S++)r[S]&&r[S][g](u)},i=(u,g,S,d)=>{for(g=0,S=e.length;g<S;g++)d=e[g],!t&&g===S-1?u[n?"return":"throw"](d):u.next(d)},l=(u,g)=>(t&&(g=a++,r[g]=u),i(u),()=>{t&&(r[g]=r[a],r[a--]=void 0)});return{__SEROVAL_STREAM__:!0,on:u=>l(u),next:u=>{t&&(e.push(u),s(u,"next"))},throw:u=>{t&&(e.push(u),s(u,"throw"),t=!1,n=!1,r.length=0)},return:u=>{t&&(e.push(u),s(u,"return"),t=!1,n=!0,r.length=0)}}},mt=br.toString(),Ar=e=>r=>()=>{let t=0,n={[e]:()=>n,next:()=>{if(t>r.d)return{done:!0,value:void 0};let a=t++,s=r.v[a];if(a===r.t)throw s;return{done:a===r.d,value:s}}};return n},gt=Ar.toString(),Rr=(e,r)=>t=>()=>{let n=0,a=-1,s=!1,i=[],l=[],u=(S=0,d=l.length)=>{for(;S<d;S++)l[S].s({done:!0,value:void 0})};t.on({next:S=>{let d=l.shift();d&&d.s({done:!1,value:S}),i.push(S)},throw:S=>{let d=l.shift();d&&d.f(S),u(),a=i.length,s=!0,i.push(S)},return:S=>{let d=l.shift();d&&d.s({done:!0,value:S}),u(),a=i.length,i.push(S)}});let g={[e]:()=>g,next:()=>{if(a===-1){let J=n++;if(J>=i.length){let Jr=r();return l.push(Jr),Jr.p}return{done:!1,value:i[J]}}if(n>a)return{done:!0,value:void 0};let S=n++,d=i[S];if(S!==a)return{done:!1,value:d};if(s)throw d;return{done:!0,value:d}}};return g},yt=Rr.toString(),Ir=(e,r)=>{let t=atob(r),n=new Uint8Array(e);for(let a=0;a<e;a++)n[a]=t.charCodeAt(a);return n.buffer},Nt=Ir.toString();var Ct={},vt={};var bt={0:{},1:{},2:{},3:{},4:{},5:{}},At={0:"[]",1:St,2:pt,3:dt,4:mt,5:Nt};function Ze(e){return"__SEROVAL_STREAM__"in e}function Y(){return br()}function Je(e){let r=Y(),t=e[b]();async function n(){try{let a=await t.next();a.done?r.return(a.value):(r.next(a.value),await n())}catch(a){r.throw(a)}}return n().catch(()=>{}),r}var Nn=Rr(b,re);function Rt(e){return Nn(e)}function He(e){let r=[],t=-1,n=-1,a=e[A]();for(;;)try{let s=a.next();if(r.push(s.value),s.done){n=r.length-1;break}}catch(s){t=r.length,r.push(s)}return{v:r,t,d:n}}var Cn=Ar(A);function It(e){return Cn(e)}async function Er(e){try{return[1,await e]}catch(r){return[0,r]}}function de(e,r){return{plugins:r.plugins,mode:e,marked:new Set,features:31^(r.disabledFeatures||0),refs:r.refs||new Map}}function me(e,r){e.marked.add(r)}function Pr(e,r){let t=e.refs.size;return e.refs.set(r,t),t}function $e(e,r){let t=e.refs.get(r);return t!=null?(me(e,t),{type:1,value:ut(t)}):{type:0,value:Pr(e,r)}}function W(e,r){let t=$e(e,r);return t.type===1?t:vr(r)?{type:2,value:ft(t.value,r)}:t}function I(e,r){let t=W(e,r);if(t.type!==0)return t.value;if(r in be)return ct(t.value,r);throw new E(r)}function z(e,r){let t=$e(e,bt[r]);return t.type===1?t.value:c(26,t.value,r,o,o,o,o,o,o,o,o,o)}function qe(e){let r=$e(e,Ct);return r.type===1?r.value:c(27,r.value,o,o,o,o,o,o,o,I(e,A),o,o)}function Xe(e){let r=$e(e,vt);return r.type===1?r.value:c(29,r.value,o,o,o,o,o,o,[z(e,1),I(e,b)],o,o,o)}function Qe(e,r,t,n){return c(t?11:10,e,o,o,o,o,n,o,o,o,o,xe(r))}function er(e,r,t,n,a){return c(8,r,o,o,o,o,o,{k:t,v:n,s:a},o,z(e,0),o,o)}function Pt(e,r,t){return c(22,r,t,o,o,o,o,o,o,z(e,1),o,o)}function rr(e,r,t){let n=new Uint8Array(t),a=n.length,s="";for(let i=0;i<a;i++)s+=String.fromCharCode(n[i]);return c(19,r,y(btoa(s)),a,o,o,o,o,o,z(e,5),o,o)}function te(e,r){return{base:de(e,r),child:void 0}}var Tr=class{constructor(r){this._p=r}parse(r){return N(this._p,r)}};async function An(e,r){let t=[];for(let n=0,a=r.length;n<a;n++)n in r&&(t[n]=await N(e,r[n]));return t}async function Rn(e,r,t){return ze(r,t,await An(e,t))}async function Or(e,r){let t=Object.entries(r),n=[],a=[];for(let s=0,i=t.length;s<i;s++)n.push(y(t[s][0])),a.push(await N(e,t[s][1]));return A in r&&(n.push(I(e.base,A)),a.push(je(qe(e.base),await N(e,He(r))))),b in r&&(n.push(I(e.base,b)),a.push(Ue(Xe(e.base),await N(e,Je(r))))),x in r&&(n.push(I(e.base,x)),a.push(Q(r[x]))),P in r&&(n.push(I(e.base,P)),a.push(r[P]?$:q)),{k:n,v:a,s:n.length}}async function xr(e,r,t,n){return Qe(r,t,n,await Or(e,t))}async function In(e,r,t){return ke(r,await N(e,t.valueOf()))}async function En(e,r,t){return _e(r,t,await N(e,t.buffer))}async function Pn(e,r,t){return De(r,t,await N(e,t.buffer))}async function xn(e,r,t){return Fe(r,t,await N(e,t.buffer))}async function xt(e,r,t){let n=X(t,e.base.features);return Be(r,t,n?await Or(e,n):o)}async function Tn(e,r,t){let n=X(t,e.base.features);return Ve(r,t,n?await Or(e,n):o)}async function On(e,r,t){let n=[],a=[];for(let[s,i]of t.entries())n.push(await N(e,s)),a.push(await N(e,i));return er(e.base,r,n,a,t.size)}async function hn(e,r,t){let n=[];for(let a of t.keys())n.push(await N(e,a));return Me(r,t.size,n)}async function Tt(e,r,t){let n=e.base.plugins;if(n)for(let a=0,s=n.length;a<s;a++){let i=n[a];if(i.parse.async&&i.test(t))return e.child==null&&(e.child=new Tr(e)),fe(r,i.tag,await i.parse.async(t,e.child,{id:r}))}return o}async function wn(e,r,t){let[n,a]=await Er(t);return c(12,r,n,o,o,o,o,o,o,await N(e,a),o,o)}function zn(e,r,t,n){let a=[],s=r.on({next:i=>{me(this.base,e),N(this,i).then(l=>{a.push(Ye(e,l))},l=>{n(l),s()})},throw:i=>{me(this.base,e),N(this,i).then(l=>{a.push(We(e,l)),t(a),s()},l=>{n(l),s()})},return:i=>{me(this.base,e),N(this,i).then(l=>{a.push(Ke(e,l)),t(a),s()},l=>{n(l),s()})}})}async function kn(e,r,t){return Le(r,z(e.base,4),await new Promise(zn.bind(e,r,t)))}async function _n(e,r,t){if(Array.isArray(t))return Rn(e,r,t);if(Ze(t))return kn(e,r,t);let n=t.constructor;if(n===F)return N(e,t.replacement);let a=await Tt(e,r,t);if(a)return a;switch(n){case Object:return xr(e,r,t,!1);case o:return xr(e,r,t,!0);case Date:return he(r,t);case RegExp:return we(r,t);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return xt(e,r,t);case Number:case Boolean:case String:case BigInt:return In(e,r,t);case ArrayBuffer:return rr(e.base,r,t);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return En(e,r,t);case DataView:return xn(e,r,t);case Map:return On(e,r,t);case Set:return hn(e,r,t);default:break}if(n===Promise||t instanceof Promise)return wn(e,r,t);let s=e.base.features;if(s&16)switch(n){case BigInt64Array:case BigUint64Array:return Pn(e,r,t);default:break}if(s&1&&typeof AggregateError!="undefined"&&(n===AggregateError||t instanceof AggregateError))return Tn(e,r,t);if(t instanceof Error)return xt(e,r,t);if(A in t||b in t)return xr(e,r,t,!!n);throw new E(t)}async function Dn(e,r){let t=W(e.base,r);if(t.type!==0)return t.value;let n=await Tt(e,t.value,r);if(n)return n;throw new E(r)}async function N(e,r){switch(typeof r){case"boolean":return r?$:q;case"undefined":return Re;case"string":return Q(r);case"number":return Te(r);case"bigint":return Oe(r);case"object":{if(r){let t=W(e.base,r);return t.type===0?await _n(e,t.value,r):t.value}return Ie}case"symbol":return I(e.base,r);case"function":return Dn(e,r);default:throw new E(r)}}async function ne(e,r){try{return await N(e,r)}catch(t){throw t instanceof O?t:new O(t)}}var K=(t=>(t[t.Vanilla=1]="Vanilla",t[t.Cross=2]="Cross",t))(K||{});function Fn(e){return e}function Ot(e,r){for(let t=0,n=r.length;t<n;t++){let a=r[t];e.has(a)||(e.add(a),a.extends&&Ot(e,a.extends))}}function C(e){if(e){let r=new Set;return Ot(r,e),[...r]}}function ht(e){switch(e){case"Int8Array":return Int8Array;case"Int16Array":return Int16Array;case"Int32Array":return Int32Array;case"Uint8Array":return Uint8Array;case"Uint16Array":return Uint16Array;case"Uint32Array":return Uint32Array;case"Uint8ClampedArray":return Uint8ClampedArray;case"Float32Array":return Float32Array;case"Float64Array":return Float64Array;case"BigInt64Array":return BigInt64Array;case"BigUint64Array":return BigUint64Array;default:throw new pe(e)}}function wt(e,r){switch(r){case 3:return Object.freeze(e);case 1:return Object.preventExtensions(e);case 2:return Object.seal(e);default:return e}}function zt(e,r){return{mode:e,plugins:r.plugins,refs:r.refs||new Map}}function kt(e){return{mode:1,base:zt(1,e),child:void 0,state:{marked:new Set(e.markedRefs)}}}function _t(e){return{mode:2,base:zt(2,e),child:void 0}}var hr=class{constructor(r){this._p=r}deserialize(r){return m(this._p,r)}};function Bn(e,r,t){return e.state.marked.has(r)&&e.base.refs.set(r,t),t}function Vn(e,r,t){return e.base.refs.has(r)||e.base.refs.set(r,t),t}function v(e,r,t){return e.mode===1?Bn(e,r,t):Vn(e,r,t)}function Mn(e,r){return v(e,r.i,it(k(r.s)))}function jn(e,r){let t=r.l,n=v(e,r.i,new Array(t)),a;for(let s=0;s<t;s++)a=r.a[s],a&&(n[s]=m(e,a));return wt(n,r.o),n}function Dt(e,r,t){let n=r.s;if(n){let a=r.k,s=r.v;for(let i=0,l;i<n;i++)l=a[i],typeof l=="string"?t[k(l)]=m(e,s[i]):t[m(e,l)]=m(e,s[i])}return t}function Un(e,r){let t=v(e,r.i,r.t===10?{}:Object.create(null));return Dt(e,r.p,t),wt(t,r.o),t}function Ln(e,r){return v(e,r.i,new Date(r.s))}function Yn(e,r){return v(e,r.i,new RegExp(k(r.c),r.m))}function Wn(e,r){let t=v(e,r.i,new Set),n=r.a;for(let a=0,s=r.l;a<s;a++)t.add(m(e,n[a]));return t}function Kn(e,r){let t=v(e,r.i,new Map),n=r.e.k,a=r.e.v;for(let s=0,i=r.e.s;s<i;s++)t.set(m(e,n[s]),m(e,a[s]));return t}function Gn(e,r){return v(e,r.i,Ir(r.l,k(r.s)))}function Zn(e,r){let t=ht(r.c),n=m(e,r.f);return v(e,r.i,new t(n,r.b,r.l))}function Jn(e,r){let t=m(e,r.f);return v(e,r.i,new DataView(t,r.b,r.l))}function Ft(e,r,t){if(r.p){let n=Dt(e,r.p,{});Object.assign(t,n)}return t}function Hn(e,r){let t=v(e,r.i,new AggregateError([],k(r.m)));return Ft(e,r,t)}function $n(e,r){let t=Qr[r.s],n=v(e,r.i,new t(k(r.m)));return Ft(e,r,n)}function qn(e,r){let t=re(),n=v(e,r.i,t.p),a=m(e,r.f);return r.s?t.s(a):t.f(a),n}function Xn(e,r){return v(e,r.i,Object(m(e,r.f)))}function Qn(e,r){let t=e.base.plugins;if(t){let n=k(r.c);for(let a=0,s=t.length;a<s;a++){let i=t[a];if(i.tag===n)return e.child==null&&(e.child=new hr(e)),v(e,r.i,i.deserialize(r.s,e.child,{id:r.i}))}}throw new U(r.c)}function eo(e,r){return v(e,r.i,v(e,r.s,re()).p)}function ro(e,r){let t=e.base.refs.get(r.i);if(t){t.s(m(e,r.a[1]));return}throw new _("Promise")}function to(e,r){let t=e.base.refs.get(r.i);if(t){t.f(m(e,r.a[1]));return}throw new _("Promise")}function no(e,r){m(e,r.a[0]);let t=m(e,r.a[1]);return It(t)}function oo(e,r){m(e,r.a[0]);let t=m(e,r.a[1]);return Rt(t)}function ao(e,r){let t=v(e,r.i,Y()),n=r.a.length;if(n)for(let a=0;a<n;a++)m(e,r.a[a]);return t}function so(e,r){let t=e.base.refs.get(r.i);if(t){t.next(m(e,r.f));return}throw new _("Stream")}function io(e,r){let t=e.base.refs.get(r.i);if(t){t.throw(m(e,r.f));return}throw new _("Stream")}function lo(e,r){let t=e.base.refs.get(r.i);if(t){t.return(m(e,r.f));return}throw new _("Stream")}function uo(e,r){m(e,r.f)}function co(e,r){m(e,r.a[1])}function m(e,r){switch(r.t){case 2:return Xr[r.s];case 0:return r.s;case 1:return k(r.s);case 3:return BigInt(r.s);case 4:return e.base.refs.get(r.i);case 18:return Mn(e,r);case 9:return jn(e,r);case 10:case 11:return Un(e,r);case 5:return Ln(e,r);case 6:return Yn(e,r);case 7:return Wn(e,r);case 8:return Kn(e,r);case 19:return Gn(e,r);case 16:case 15:return Zn(e,r);case 20:return Jn(e,r);case 14:return Hn(e,r);case 13:return $n(e,r);case 12:return qn(e,r);case 17:return $r[r.s];case 21:return Xn(e,r);case 25:return Qn(e,r);case 22:return eo(e,r);case 23:return ro(e,r);case 24:return to(e,r);case 28:return no(e,r);case 30:return oo(e,r);case 31:return ao(e,r);case 32:return so(e,r);case 33:return io(e,r);case 34:return lo(e,r);case 27:return uo(e,r);case 29:return co(e,r);default:throw new w(r)}}function tr(e,r){try{return m(e,r)}catch(t){throw new Se(t)}}var fo=()=>T,So=fo.toString(),Bt=/=>/.test(So);function nr(e,r){return Bt?(e.length===1?e[0]:"("+e.join(",")+")")+"=>"+(r.startsWith("{")?"("+r+")":r):"function("+e.join(",")+"){return "+r+"}"}function Vt(e,r){return Bt?(e.length===1?e[0]:"("+e.join(",")+")")+"=>{"+r+"}":"function("+e.join(",")+"){"+r+"}"}var Ut="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",Mt=Ut.length,Lt="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",jt=Lt.length;function wr(e){let r=e%Mt,t=Ut[r];for(e=(e-r)/Mt;e>0;)r=e%jt,t+=Lt[r],e=(e-r)/jt;return t}var po=/^[$A-Z_][0-9A-Z_$]*$/i;function zr(e){let r=e[0];return(r==="$"||r==="_"||r>="A"&&r<="Z"||r>="a"&&r<="z")&&po.test(e)}function ye(e){switch(e.t){case 0:return e.s+"="+e.v;case 2:return e.s+".set("+e.k+","+e.v+")";case 1:return e.s+".add("+e.v+")";case 3:return e.s+".delete("+e.k+")"}}function mo(e){let r=[],t=e[0];for(let n=1,a=e.length,s,i=t;n<a;n++)s=e[n],s.t===0&&s.v===i.v?t={t:0,s:s.s,k:o,v:ye(t)}:s.t===2&&s.s===i.s?t={t:2,s:ye(t),k:s.k,v:s.v}:s.t===1&&s.s===i.s?t={t:1,s:ye(t),k:o,v:s.v}:s.t===3&&s.s===i.s?t={t:3,s:ye(t),k:s.k,v:o}:(r.push(t),t=s),i=s;return r.push(t),r}function Jt(e){if(e.length){let r="",t=mo(e);for(let n=0,a=t.length;n<a;n++)r+=ye(t[n])+",";return r}return o}var go="Object.create(null)",yo="new Set",No="new Map",Co="Promise.resolve",vo="Promise.reject",bo={3:"Object.freeze",2:"Object.seal",1:"Object.preventExtensions",0:o};function Ht(e,r){return{mode:e,plugins:r.plugins,features:r.features,marked:new Set(r.markedRefs),stack:[],flags:[],assignments:[]}}function Ao(){return{valid:new Map,vars:[]}}function or(e){return{mode:1,base:Ht(1,e),state:Ao(),child:void 0}}function ar(e){return{mode:2,base:Ht(2,e),state:e,child:void 0}}var kr=class{constructor(r){this._p=r}serialize(r){return f(this._p,r)}};function Ro(e,r){let t=e.valid.get(r);t==null&&(t=e.valid.size,e.valid.set(r,t));let n=e.vars[t];return n==null&&(n=wr(t),e.vars[t]=n),n}function Io(e){return le+"["+e+"]"}function p(e,r){return e.mode===1?Ro(e.state,r):Io(r)}function h(e,r){e.marked.add(r)}function _r(e,r){return e.marked.has(r)}function Fr(e,r,t){r!==0&&(h(e.base,t),e.base.flags.push({type:r,value:p(e,t)}))}function Eo(e){let r="";for(let t=0,n=e.flags,a=n.length;t<a;t++){let s=n[t];r+=bo[s.type]+"("+s.value+"),"}return r}function $t(e){let r=Jt(e.assignments),t=Eo(e);return r?t?r+t:r:t}function qt(e,r,t){e.assignments.push({t:0,s:r,k:o,v:t})}function Po(e,r,t){e.base.assignments.push({t:1,s:p(e,r),k:o,v:t})}function ge(e,r,t,n){e.base.assignments.push({t:2,s:p(e,r),k:t,v:n})}function Yt(e,r,t){e.base.assignments.push({t:3,s:p(e,r),k:t,v:o})}function Ne(e,r,t,n){qt(e.base,p(e,r)+"["+t+"]",n)}function Dr(e,r,t,n){qt(e.base,p(e,r)+"."+t,n)}function B(e,r){return r.t===4&&e.stack.includes(r.i)}function oe(e,r,t){return e.mode===1&&!_r(e.base,r)?t:p(e,r)+"="+t}function xo(e){return M+'.get("'+e.s+'")'}function Wt(e,r,t,n){return t?B(e.base,t)?(h(e.base,r),Ne(e,r,n,p(e,t.i)),""):f(e,t):""}function To(e,r){let t=r.i;if(r.l){e.base.stack.push(t);let n=r.a,a=Wt(e,t,n[0],0),s=a==="";for(let i=1,l=r.l,u;i<l;i++)u=Wt(e,t,n[i],i),a+=","+u,s=u==="";return e.base.stack.pop(),Fr(e,r.o,r.i),"["+a+(s?",]":"]")}return"[]"}function Kt(e,r,t,n){if(typeof t=="string"){let a=Number(t),s=a>=0&&a.toString()===t||zr(t);if(B(e.base,n)){let i=p(e,n.i);return h(e.base,r.i),s&&a!==a?Dr(e,r.i,t,i):Ne(e,r.i,s?t:'"'+t+'"',i),""}return(s?t:'"'+t+'"')+":"+f(e,n)}return"["+f(e,t)+"]:"+f(e,n)}function Xt(e,r,t){let n=t.s;if(n){let a=t.k,s=t.v;e.base.stack.push(r.i);let i=Kt(e,r,a[0],s[0]);for(let l=1,u=i;l<n;l++)u=Kt(e,r,a[l],s[l]),i+=(u&&i&&",")+u;return e.base.stack.pop(),"{"+i+"}"}return"{}"}function Oo(e,r){return Fr(e,r.o,r.i),Xt(e,r,r.p)}function ho(e,r,t,n){let a=Xt(e,r,t);return a!=="{}"?"Object.assign("+n+","+a+")":n}function wo(e,r,t,n,a){let s=e.base,i=f(e,a),l=Number(n),u=l>=0&&l.toString()===n||zr(n);if(B(s,a))u&&l!==l?Dr(e,r.i,n,i):Ne(e,r.i,u?n:'"'+n+'"',i);else{let g=s.assignments;s.assignments=t,u&&l!==l?Dr(e,r.i,n,i):Ne(e,r.i,u?n:'"'+n+'"',i),s.assignments=g}}function zo(e,r,t,n,a){if(typeof n=="string")wo(e,r,t,n,a);else{let s=e.base,i=s.stack;s.stack=[];let l=f(e,a);s.stack=i;let u=s.assignments;s.assignments=t,Ne(e,r.i,f(e,n),l),s.assignments=u}}function ko(e,r,t){let n=t.s;if(n){let a=[],s=t.k,i=t.v;e.base.stack.push(r.i);for(let l=0;l<n;l++)zo(e,r,a,s[l],i[l]);return e.base.stack.pop(),Jt(a)}return o}function Br(e,r,t){if(r.p){let n=e.base;if(n.features&8)t=ho(e,r,r.p,t);else{h(n,r.i);let a=ko(e,r,r.p);if(a)return"("+oe(e,r.i,t)+","+a+p(e,r.i)+")"}}return t}function _o(e,r){return Fr(e,r.o,r.i),Br(e,r,go)}function Do(e){return'new Date("'+e.s+'")'}function Fo(e){return"/"+e.c+"/"+e.m}function Gt(e,r,t){let n=e.base;return B(n,t)?(h(n,r),Po(e,r,p(e,t.i)),""):f(e,t)}function Bo(e,r){let t=yo,n=r.l,a=r.i;if(n){let s=r.a;e.base.stack.push(a);let i=Gt(e,a,s[0]);for(let l=1,u=i;l<n;l++)u=Gt(e,a,s[l]),i+=(u&&i&&",")+u;e.base.stack.pop(),i&&(t+="(["+i+"])")}return t}function Zt(e,r,t,n,a){let s=e.base;if(B(s,t)){let i=p(e,t.i);if(h(s,r),B(s,n)){let u=p(e,n.i);return ge(e,r,i,u),""}if(n.t!==4&&n.i!=null&&_r(s,n.i)){let u="("+f(e,n)+",["+a+","+a+"])";return ge(e,r,i,p(e,n.i)),Yt(e,r,a),u}let l=s.stack;return s.stack=[],ge(e,r,i,f(e,n)),s.stack=l,""}if(B(s,n)){let i=p(e,n.i);if(h(s,r),t.t!==4&&t.i!=null&&_r(s,t.i)){let u="("+f(e,t)+",["+a+","+a+"])";return ge(e,r,p(e,t.i),i),Yt(e,r,a),u}let l=s.stack;return s.stack=[],ge(e,r,f(e,t),i),s.stack=l,""}return"["+f(e,t)+","+f(e,n)+"]"}function Vo(e,r){let t=No,n=r.e.s,a=r.i,s=r.f,i=p(e,s.i),l=e.base;if(n){let u=r.e.k,g=r.e.v;l.stack.push(a);let S=Zt(e,a,u[0],g[0],i);for(let d=1,J=S;d<n;d++)J=Zt(e,a,u[d],g[d],i),S+=(J&&S&&",")+J;l.stack.pop(),S&&(t+="(["+S+"])")}return s.t===26&&(h(l,s.i),t="("+f(e,s)+","+t+")"),t}function Mo(e,r){return G(e,r.f)+"("+r.l+',"'+r.s+'")'}function jo(e,r){return"new "+r.c+"("+f(e,r.f)+","+r.b+","+r.l+")"}function Uo(e,r){return"new DataView("+f(e,r.f)+","+r.b+","+r.l+")"}function Lo(e,r){let t=r.i;e.base.stack.push(t);let n=Br(e,r,'new AggregateError([],"'+r.m+'")');return e.base.stack.pop(),n}function Yo(e,r){return Br(e,r,"new "+Ae[r.s]+'("'+r.m+'")')}function Wo(e,r){let t,n=r.f,a=r.i,s=r.s?Co:vo,i=e.base;if(B(i,n)){let l=p(e,n.i);t=s+(r.s?"().then("+nr([],l)+")":"().catch("+Vt([],"throw "+l)+")")}else{i.stack.push(a);let l=f(e,n);i.stack.pop(),t=s+"("+l+")"}return t}function Ko(e,r){return"Object("+f(e,r.f)+")"}function G(e,r){let t=f(e,r);return r.t===4?t:"("+t+")"}function Go(e,r){if(e.mode===1)throw new w(r);return"("+oe(e,r.s,G(e,r.f)+"()")+").p"}function Zo(e,r){if(e.mode===1)throw new w(r);return G(e,r.a[0])+"("+p(e,r.i)+","+f(e,r.a[1])+")"}function Jo(e,r){if(e.mode===1)throw new w(r);return G(e,r.a[0])+"("+p(e,r.i)+","+f(e,r.a[1])+")"}function Ho(e,r){let t=e.base.plugins;if(t)for(let n=0,a=t.length;n<a;n++){let s=t[n];if(s.tag===r.c)return e.child==null&&(e.child=new kr(e)),s.serialize(r.s,e.child,{id:r.i})}throw new U(r.c)}function $o(e,r){let t="",n=!1;return r.f.t!==4&&(h(e.base,r.f.i),t="("+f(e,r.f)+",",n=!0),t+=oe(e,r.i,"("+gt+")("+p(e,r.f.i)+")"),n&&(t+=")"),t}function qo(e,r){return G(e,r.a[0])+"("+f(e,r.a[1])+")"}function Xo(e,r){let t=r.a[0],n=r.a[1],a=e.base,s="";t.t!==4&&(h(a,t.i),s+="("+f(e,t)),n.t!==4&&(h(a,n.i),s+=(s?",":"(")+f(e,n)),s&&(s+=",");let i=oe(e,r.i,"("+yt+")("+p(e,n.i)+","+p(e,t.i)+")");return s?s+i+")":i}function Qo(e,r){return G(e,r.a[0])+"("+f(e,r.a[1])+")"}function ea(e,r){let t=oe(e,r.i,G(e,r.f)+"()"),n=r.a.length;if(n){let a=f(e,r.a[0]);for(let s=1;s<n;s++)a+=","+f(e,r.a[s]);return"("+t+","+a+","+p(e,r.i)+")"}return t}function ra(e,r){return p(e,r.i)+".next("+f(e,r.f)+")"}function ta(e,r){return p(e,r.i)+".throw("+f(e,r.f)+")"}function na(e,r){return p(e,r.i)+".return("+f(e,r.f)+")"}function oa(e,r){switch(r.t){case 17:return Hr[r.s];case 18:return xo(r);case 9:return To(e,r);case 10:return Oo(e,r);case 11:return _o(e,r);case 5:return Do(r);case 6:return Fo(r);case 7:return Bo(e,r);case 8:return Vo(e,r);case 19:return Mo(e,r);case 16:case 15:return jo(e,r);case 20:return Uo(e,r);case 14:return Lo(e,r);case 13:return Yo(e,r);case 12:return Wo(e,r);case 21:return Ko(e,r);case 22:return Go(e,r);case 25:return Ho(e,r);case 26:return At[r.s];default:throw new w(r)}}function f(e,r){switch(r.t){case 2:return qr[r.s];case 0:return""+r.s;case 1:return'"'+r.s+'"';case 3:return r.s+"n";case 4:return p(e,r.i);case 23:return Zo(e,r);case 24:return Jo(e,r);case 27:return $o(e,r);case 28:return qo(e,r);case 29:return Xo(e,r);case 30:return Qo(e,r);case 31:return ea(e,r);case 32:return ra(e,r);case 33:return ta(e,r);case 34:return na(e,r);default:return oe(e,r.i,oa(e,r))}}function sr(e,r){let t=f(e,r);if(r.i!=null&&e.state.vars.length){let n=$t(e.base),a=t;if(n){let s=p(e,r.i);a=t+","+n+s,t.startsWith(s+"=")||(a=s+"="+a),a="("+a+")"}return"("+nr(e.state.vars,a)+")()"}return r.t===10?"("+t+")":t}function ir(e,r){let t=f(e,r),n=r.i;if(n==null)return t;let a=$t(e.base),s=p(e,n),i=e.state.scopeId,l=i==null?"":le,u=a?"("+t+","+a+s+")":t;if(l==="")return r.t===10&&!a?"("+u+")":u;let g=i==null?"()":"("+le+'["'+y(i)+'"])';return"("+nr([l],u)+")"+g}function se(e,r){return{type:1,base:de(e,r),child:void 0}}var Mr=class{constructor(r){this._p=r}parse(r){return R(this._p,r)}},jr=class{constructor(r){this._p=r}parse(r){return R(this._p,r)}parseWithError(r){return Z(this._p,r)}isAlive(){return this._p.state.alive}pushPendingState(){Kr(this._p)}popPendingState(){Ce(this._p)}onParse(r){ae(this._p,r)}onError(r){Yr(this._p,r)}};function aa(e){return{alive:!0,pending:0,initial:!0,buffer:[],onParse:e.onParse,onError:e.onError,onDone:e.onDone}}function Ur(e){return{type:2,base:de(2,e),child:void 0,state:aa(e)}}function sa(e,r){let t=[];for(let n=0,a=r.length;n<a;n++)n in r&&(t[n]=R(e,r[n]));return t}function ia(e,r,t){return ze(r,t,sa(e,t))}function Lr(e,r){let t=Object.entries(r),n=[],a=[];for(let s=0,i=t.length;s<i;s++)n.push(y(t[s][0])),a.push(R(e,t[s][1]));return A in r&&(n.push(I(e.base,A)),a.push(je(qe(e.base),R(e,He(r))))),b in r&&(n.push(I(e.base,b)),a.push(Ue(Xe(e.base),R(e,e.type===1?Y():Je(r))))),x in r&&(n.push(I(e.base,x)),a.push(Q(r[x]))),P in r&&(n.push(I(e.base,P)),a.push(r[P]?$:q)),{k:n,v:a,s:n.length}}function Vr(e,r,t,n){return Qe(r,t,n,Lr(e,t))}function la(e,r,t){return ke(r,R(e,t.valueOf()))}function ua(e,r,t){return _e(r,t,R(e,t.buffer))}function ca(e,r,t){return De(r,t,R(e,t.buffer))}function fa(e,r,t){return Fe(r,t,R(e,t.buffer))}function Qt(e,r,t){let n=X(t,e.base.features);return Be(r,t,n?Lr(e,n):o)}function Sa(e,r,t){let n=X(t,e.base.features);return Ve(r,t,n?Lr(e,n):o)}function pa(e,r,t){let n=[],a=[];for(let[s,i]of t.entries())n.push(R(e,s)),a.push(R(e,i));return er(e.base,r,n,a,t.size)}function da(e,r,t){let n=[];for(let a of t.keys())n.push(R(e,a));return Me(r,t.size,n)}function ma(e,r,t){let n=Le(r,z(e.base,4),[]);return e.type===1||(Kr(e),t.on({next:a=>{if(e.state.alive){let s=Z(e,a);s&&ae(e,Ye(r,s))}},throw:a=>{if(e.state.alive){let s=Z(e,a);s&&ae(e,We(r,s))}Ce(e)},return:a=>{if(e.state.alive){let s=Z(e,a);s&&ae(e,Ke(r,s))}Ce(e)}})),n}function ga(e,r){if(this.state.alive){let t=Z(this,r);t&&ae(this,c(23,e,o,o,o,o,o,o,[z(this.base,2),t],o,o,o)),Ce(this)}}function ya(e,r){if(this.state.alive){let t=Z(this,r);t&&ae(this,c(24,e,o,o,o,o,o,o,[z(this.base,3),t],o,o,o))}Ce(this)}function Na(e,r,t){let n=Pr(e.base,{});return e.type===2&&(Kr(e),t.then(ga.bind(e,n),ya.bind(e,n))),Pt(e.base,r,n)}function Ca(e,r,t,n){for(let a=0,s=n.length;a<s;a++){let i=n[a];if(i.parse.sync&&i.test(t))return e.child==null&&(e.child=new Mr(e)),fe(r,i.tag,i.parse.sync(t,e.child,{id:r}))}}function va(e,r,t,n){for(let a=0,s=n.length;a<s;a++){let i=n[a];if(i.parse.stream&&i.test(t))return e.child==null&&(e.child=new jr(e)),fe(r,i.tag,i.parse.stream(t,e.child,{id:r}))}}function en(e,r,t){let n=e.base.plugins;if(n)return e.type===1?Ca(e,r,t,n):va(e,r,t,n)}function ba(e,r,t,n){switch(n){case Object:return Vr(e,r,t,!1);case void 0:return Vr(e,r,t,!0);case Date:return he(r,t);case RegExp:return we(r,t);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return Qt(e,r,t);case Number:case Boolean:case String:case BigInt:return la(e,r,t);case ArrayBuffer:return rr(e.base,r,t);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return ua(e,r,t);case DataView:return fa(e,r,t);case Map:return pa(e,r,t);case Set:return da(e,r,t);default:break}if(n===Promise||t instanceof Promise)return Na(e,r,t);let a=e.base.features;if(a&16)switch(n){case BigInt64Array:case BigUint64Array:return ca(e,r,t);default:break}if(a&1&&typeof AggregateError!="undefined"&&(n===AggregateError||t instanceof AggregateError))return Sa(e,r,t);if(t instanceof Error)return Qt(e,r,t);if(A in t||b in t)return Vr(e,r,t,!!n);throw new E(t)}function Aa(e,r,t){if(Array.isArray(t))return ia(e,r,t);if(Ze(t))return ma(e,r,t);let n=t.constructor;if(n===F)return R(e,t.replacement);let a=en(e,r,t);return a||ba(e,r,t,n)}function Ra(e,r){let t=W(e.base,r);if(t.type!==0)return t.value;let n=en(e,t.value,r);if(n)return n;throw new E(r)}function R(e,r){switch(typeof r){case"boolean":return r?$:q;case"undefined":return Re;case"string":return Q(r);case"number":return Te(r);case"bigint":return Oe(r);case"object":{if(r){let t=W(e.base,r);return t.type===0?Aa(e,t.value,r):t.value}return Ie}case"symbol":return I(e.base,r);case"function":return Ra(e,r);default:throw new E(r)}}function ie(e,r){try{return R(e,r)}catch(t){throw t instanceof O?t:new O(t)}}function ae(e,r){e.state.initial?e.state.buffer.push(r):Wr(e,r,!1)}function Yr(e,r){if(e.state.onError)e.state.onError(r);else throw r instanceof O?r:new O(r)}function rn(e){e.state.onDone&&e.state.onDone()}function Wr(e,r,t){try{e.state.onParse(r,t)}catch(n){Yr(e,n)}}function Kr(e){e.state.pending++}function Ce(e){--e.state.pending<=0&&rn(e)}function Z(e,r){try{return R(e,r)}catch(t){return Yr(e,t),o}}function Gr(e,r){let t=Z(e,r);t&&(Wr(e,t,!0),e.state.initial=!1,Ia(e,e.state),e.state.pending<=0&&lr(e))}function Ia(e,r){for(let t=0,n=r.buffer.length;t<n;t++)Wr(e,r.buffer[t],!1)}function lr(e){e.state.alive&&(rn(e),e.state.alive=!1)}function Ea(e,r={}){let t=C(r.plugins),n=se(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs}),a=ie(n,e),s=ar({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked});return ir(s,a)}async function Pa(e,r={}){let t=C(r.plugins),n=te(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs}),a=await ne(n,e),s=ar({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked});return ir(s,a)}function xa(e,r={}){let t=C(r.plugins),n=se(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs});return ie(n,e)}async function Ta(e,r={}){let t=C(r.plugins),n=te(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs});return await ne(n,e)}function Zr(e,r){let t=C(r.plugins),n=Ur({plugins:t,refs:r.refs,disabledFeatures:r.disabledFeatures,onParse(a,s){let i=ar({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked}),l;try{l=ir(i,a)}catch(u){r.onError&&r.onError(u);return}r.onSerialize(l,s)},onError:r.onError,onDone:r.onDone});return Gr(n,e),lr.bind(null,n)}function Oa(e,r){let t=C(r.plugins),n=Ur({plugins:t,refs:r.refs,disabledFeatures:r.disabledFeatures,onParse:r.onParse,onError:r.onError,onDone:r.onDone});return Gr(n,e),lr.bind(null,n)}function ha(e,r){let t=C(r.plugins),n=_t({plugins:t,refs:r.refs});return tr(n,e)}var ve=class{constructor(r){this.options=r;this.alive=!0;this.flushed=!1;this.done=!1;this.pending=0;this.cleanups=[];this.refs=new Map;this.keys=new Set;this.ids=0;this.plugins=C(r.plugins)}write(r,t){this.alive&&!this.flushed&&(this.pending++,this.keys.add(r),this.cleanups.push(Zr(t,{plugins:this.plugins,scopeId:this.options.scopeId,refs:this.refs,disabledFeatures:this.options.disabledFeatures,onError:this.options.onError,onSerialize:(n,a)=>{this.alive&&this.options.onData(a?this.options.globalIdentifier+'["'+y(r)+'"]='+n:n)},onDone:()=>{this.alive&&(this.pending--,this.pending<=0&&this.flushed&&!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0))}})))}getNextID(){for(;this.keys.has(""+this.ids);)this.ids++;return""+this.ids}push(r){let t=this.getNextID();return this.write(t,r),t}flush(){this.alive&&(this.flushed=!0,this.pending<=0&&!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0))}close(){if(this.alive){for(let r=0,t=this.cleanups.length;r<t;r++)this.cleanups[r]();!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0),this.alive=!1}}};function wa(e,r={}){let t=C(r.plugins),n=se(1,{plugins:t,disabledFeatures:r.disabledFeatures}),a=ie(n,e),s=or({plugins:t,features:n.base.features,markedRefs:n.base.marked});return sr(s,a)}async function za(e,r={}){let t=C(r.plugins),n=te(1,{plugins:t,disabledFeatures:r.disabledFeatures}),a=await ne(n,e),s=or({plugins:t,features:n.base.features,markedRefs:n.base.marked});return sr(s,a)}function ka(e){return(0,eval)(e)}function _a(e,r={}){let t=C(r.plugins),n=se(1,{plugins:t,disabledFeatures:r.disabledFeatures});return{t:ie(n,e),f:n.base.features,m:Array.from(n.base.marked)}}async function Da(e,r={}){let t=C(r.plugins),n=te(1,{plugins:t,disabledFeatures:r.disabledFeatures});return{t:await ne(n,e),f:n.base.features,m:Array.from(n.base.marked)}}function Fa(e,r={}){let t=C(r.plugins),n=or({plugins:t,features:e.f,markedRefs:e.m});return sr(n,e.t)}function Ba(e,r={}){let t=C(r.plugins),n=kt({plugins:t,markedRefs:e.m});return tr(n,e.t)}
"use strict";var Sr=Object.defineProperty;var cn=Object.getOwnPropertyDescriptor;var fn=Object.getOwnPropertyNames;var Sn=Object.prototype.hasOwnProperty;var mn=(e,r)=>{for(var t in r)Sr(e,t,{get:r[t],enumerable:!0})},pn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of fn(r))!Sn.call(e,a)&&a!==t&&Sr(e,a,{get:()=>r[a],enumerable:!(n=cn(r,a))||n.enumerable});return e};var dn=e=>pn(Sr({},"__esModule",{value:!0}),e);var qa={};mn(qa,{Feature:()=>F,OpaqueReference:()=>V,Serializer:()=>Ee,SerovalConflictedNodeIdError:()=>Er,SerovalDepthLimitError:()=>G,SerovalDeserializationError:()=>de,SerovalError:()=>ne,SerovalMalformedNodeError:()=>w,SerovalMissingInstanceError:()=>D,SerovalMissingPluginError:()=>W,SerovalMissingReferenceError:()=>Se,SerovalMissingReferenceForIdError:()=>me,SerovalMode:()=>J,SerovalParserError:()=>h,SerovalSerializationError:()=>$e,SerovalUnknownTypedArrayError:()=>ge,SerovalUnsupportedNodeError:()=>O,SerovalUnsupportedTypeError:()=>x,compileJSON:()=>Za,createPlugin:()=>jn,createReference:()=>ct,createStream:()=>K,crossSerialize:()=>Ma,crossSerializeAsync:()=>Va,crossSerializeStream:()=>Xr,deserialize:()=>Ka,fromCrossJSON:()=>Ya,fromJSON:()=>$a,getCrossReferenceHeader:()=>lt,resolvePlugins:()=>v,serialize:()=>Wa,serializeAsync:()=>Ga,toCrossJSON:()=>La,toCrossJSONAsync:()=>Ua,toCrossJSONStream:()=>ja,toJSON:()=>Ha,toJSONAsync:()=>Ja});module.exports=dn(qa);var F=(i=>(i[i.AggregateError=1]="AggregateError",i[i.ArrowFunction=2]="ArrowFunction",i[i.ErrorPrototypeStack=4]="ErrorPrototypeStack",i[i.ObjectAssign=8]="ObjectAssign",i[i.BigIntTypedArray=16]="BigIntTypedArray",i[i.RegExp=32]="RegExp",i))(F||{});var N=Symbol.asyncIterator,mr=Symbol.hasInstance,I=Symbol.isConcatSpreadable,b=Symbol.iterator,pr=Symbol.match,dr=Symbol.matchAll,gr=Symbol.replace,yr=Symbol.search,Nr=Symbol.species,br=Symbol.split,Cr=Symbol.toPrimitive,P=Symbol.toStringTag,vr=Symbol.unscopables;var et={0:"Symbol.asyncIterator",1:"Symbol.hasInstance",2:"Symbol.isConcatSpreadable",3:"Symbol.iterator",4:"Symbol.match",5:"Symbol.matchAll",6:"Symbol.replace",7:"Symbol.search",8:"Symbol.species",9:"Symbol.split",10:"Symbol.toPrimitive",11:"Symbol.toStringTag",12:"Symbol.unscopables"},Ie={[N]:0,[mr]:1,[I]:2,[b]:3,[pr]:4,[dr]:5,[gr]:6,[yr]:7,[Nr]:8,[br]:9,[Cr]:10,[P]:11,[vr]:12},rt={0:N,1:mr,2:I,3:b,4:pr,5:dr,6:gr,7:yr,8:Nr,9:br,10:Cr,11:P,12:vr},tt={2:"!0",3:"!1",1:"void 0",0:"null",4:"-0",5:"1/0",6:"-1/0",7:"0/0"},o=void 0,nt={2:!0,3:!1,1:o,0:null,4:-0,5:Number.POSITIVE_INFINITY,6:Number.NEGATIVE_INFINITY,7:Number.NaN};var Pe={0:"Error",1:"EvalError",2:"RangeError",3:"ReferenceError",4:"SyntaxError",5:"TypeError",6:"URIError"},ot={0:Error,1:EvalError,2:RangeError,3:ReferenceError,4:SyntaxError,5:TypeError,6:URIError};function c(e,r,t,n,a,s,i,u,l,d,S){return{t:e,i:r,s:t,c:n,m:a,p:s,e:i,a:u,f:l,b:d,o:S}}function B(e){return c(2,o,e,o,o,o,o,o,o,o,o)}var Q=B(2),ee=B(3),xe=B(1),Te=B(0),at=B(4),st=B(5),it=B(6),ut=B(7);function gn(e){switch(e){case'"':return'\\"';case"\\":return"\\\\";case`
`:return"\\n";case"\r":return"\\r";case"\b":return"\\b";case" ":return"\\t";case"\f":return"\\f";case"<":return"\\x3C";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return o}}function y(e){let r="",t=0,n;for(let a=0,s=e.length;a<s;a++)n=gn(e[a]),n&&(r+=e.slice(t,a)+n,t=a+1);return t===0?r=e:r+=e.slice(t),r}function yn(e){switch(e){case"\\\\":return"\\";case'\\"':return'"';case"\\n":return`
`;case"\\r":return"\r";case"\\b":return"\b";case"\\t":return" ";case"\\f":return"\f";case"\\x3C":return"<";case"\\u2028":return"\u2028";case"\\u2029":return"\u2029";default:return e}}function M(e){return e.replace(/(\\\\|\\"|\\n|\\r|\\b|\\t|\\f|\\u2028|\\u2029|\\x3C)/g,yn)}var j="__SEROVAL_REFS__",fe="$R",Oe=`self.${fe}`;function lt(e){return e==null?`${Oe}=${Oe}||[]`:`(${Oe}=${Oe}||{})["${y(e)}"]=[]`}var Ar=new Map,Y=new Map;function ct(e,r){return Ar.set(r,e),Y.set(e,r),r}function Rr(e){return Ar.has(e)}function Nn(e){return Y.has(e)}function ft(e){if(Rr(e))return Ar.get(e);throw new Se(e)}function St(e){if(Nn(e))return Y.get(e);throw new me(e)}typeof globalThis!="undefined"?Object.defineProperty(globalThis,j,{value:Y,configurable:!0,writable:!1,enumerable:!1}):typeof window!="undefined"?Object.defineProperty(window,j,{value:Y,configurable:!0,writable:!1,enumerable:!1}):typeof self!="undefined"?Object.defineProperty(self,j,{value:Y,configurable:!0,writable:!1,enumerable:!1}):typeof global!="undefined"&&Object.defineProperty(global,j,{value:Y,configurable:!0,writable:!1,enumerable:!1});function we(e){return e instanceof EvalError?1:e instanceof RangeError?2:e instanceof ReferenceError?3:e instanceof SyntaxError?4:e instanceof TypeError?5:e instanceof URIError?6:0}function bn(e){let r=Pe[we(e)];return e.name!==r?{name:e.name}:e.constructor.name!==r?{name:e.constructor.name}:{}}function re(e,r){let t=bn(e),n=Object.getOwnPropertyNames(e);for(let a=0,s=n.length,i;a<s;a++)i=n[a],i!=="name"&&i!=="message"&&(i==="stack"?r&4&&(t=t||{},t[i]=e[i]):(t=t||{},t[i]=e[i]));return t}function he(e){return Object.isFrozen(e)?3:Object.isSealed(e)?2:Object.isExtensible(e)?0:1}function ze(e){switch(e){case Number.POSITIVE_INFINITY:return st;case Number.NEGATIVE_INFINITY:return it}return e!==e?ut:Object.is(e,-0)?at:c(0,o,e,o,o,o,o,o,o,o,o)}function te(e){return c(1,o,y(e),o,o,o,o,o,o,o,o)}function _e(e){return c(3,o,""+e,o,o,o,o,o,o,o,o)}function pt(e){return c(4,e,o,o,o,o,o,o,o,o,o)}function ke(e,r){let t=r.valueOf();return c(5,e,t!==t?"":r.toISOString(),o,o,o,o,o,o,o,o)}function De(e,r){return c(6,e,o,y(r.source),r.flags,o,o,o,o,o,o)}function dt(e,r){return c(17,e,Ie[r],o,o,o,o,o,o,o,o)}function gt(e,r){return c(18,e,y(ft(r)),o,o,o,o,o,o,o,o)}function pe(e,r,t){return c(25,e,t,y(r),o,o,o,o,o,o,o)}function Fe(e,r,t){return c(9,e,o,o,o,o,o,t,o,o,he(r))}function Be(e,r){return c(21,e,o,o,o,o,o,o,r,o,o)}function Me(e,r,t){return c(15,e,o,r.constructor.name,o,o,o,o,t,r.byteOffset,o)}function Ve(e,r,t){return c(16,e,o,r.constructor.name,o,o,o,o,t,r.byteOffset,o)}function Le(e,r,t){return c(20,e,o,o,o,o,o,o,t,r.byteOffset,o)}function Ue(e,r,t){return c(13,e,we(r),o,y(r.message),t,o,o,o,o,o)}function je(e,r,t){return c(14,e,we(r),o,y(r.message),t,o,o,o,o,o)}function Ye(e,r){return c(7,e,o,o,o,o,o,r,o,o,o)}function We(e,r){return c(28,o,o,o,o,o,o,[e,r],o,o,o)}function Ge(e,r){return c(30,o,o,o,o,o,o,[e,r],o,o,o)}function Ke(e,r,t){return c(31,e,o,o,o,o,o,t,r,o,o)}function He(e,r){return c(32,e,o,o,o,o,o,o,r,o,o)}function Je(e,r){return c(33,e,o,o,o,o,o,o,r,o,o)}function Ze(e,r){return c(34,e,o,o,o,o,o,o,r,o,o)}var{toString:hs}=Object.prototype;var Cn={parsing:1,serialization:2,deserialization:3};function vn(e){return`Seroval Error (step: ${Cn[e]})`}var An=(e,r)=>vn(e),ne=class extends Error{constructor(t,n){super(An(t,n));this.cause=n}},h=class extends ne{constructor(r){super("parsing",r)}},$e=class extends ne{constructor(r){super("serialization",r)}},de=class extends ne{constructor(r){super("deserialization",r)}};function _(e){return`Seroval Error (specific: ${e})`}var x=class extends Error{constructor(t){super(_(1));this.value=t}},O=class extends Error{constructor(r){super(_(2))}},W=class extends Error{constructor(r){super(_(3))}},D=class extends Error{constructor(r){super(_(4))}},Se=class extends Error{constructor(t){super(_(5));this.value=t}},me=class extends Error{constructor(r){super(_(6))}},ge=class extends Error{constructor(r){super(_(7))}},w=class extends Error{constructor(r){super(_(8))}},Er=class extends Error{constructor(r){super(_(9))}},G=class extends Error{constructor(r){super(_(9))}};var V=class{constructor(r,t){this.value=r;this.replacement=t}};var oe=()=>{let e={p:0,s:0,f:0};return e.p=new Promise((r,t)=>{e.s=r,e.f=t}),e},Rn=(e,r)=>{e.s(r),e.p.s=1,e.p.v=r},En=(e,r)=>{e.f(r),e.p.s=2,e.p.v=r},yt=oe.toString(),Nt=Rn.toString(),bt=En.toString(),Ir=()=>{let e=[],r=[],t=!0,n=!1,a=0,s=(l,d,S)=>{for(S=0;S<a;S++)r[S]&&r[S][d](l)},i=(l,d,S,g)=>{for(d=0,S=e.length;d<S;d++)g=e[d],!t&&d===S-1?l[n?"return":"throw"](g):l.next(g)},u=(l,d)=>(t&&(d=a++,r[d]=l),i(l),()=>{t&&(r[d]=r[a],r[a--]=void 0)});return{__SEROVAL_STREAM__:!0,on:l=>u(l),next:l=>{t&&(e.push(l),s(l,"next"))},throw:l=>{t&&(e.push(l),s(l,"throw"),t=!1,n=!1,r.length=0)},return:l=>{t&&(e.push(l),s(l,"return"),t=!1,n=!0,r.length=0)}}},Ct=Ir.toString(),Pr=e=>r=>()=>{let t=0,n={[e]:()=>n,next:()=>{if(t>r.d)return{done:!0,value:void 0};let a=t++,s=r.v[a];if(a===r.t)throw s;return{done:a===r.d,value:s}}};return n},vt=Pr.toString(),xr=(e,r)=>t=>()=>{let n=0,a=-1,s=!1,i=[],u=[],l=(S=0,g=u.length)=>{for(;S<g;S++)u[S].s({done:!0,value:void 0})};t.on({next:S=>{let g=u.shift();g&&g.s({done:!1,value:S}),i.push(S)},throw:S=>{let g=u.shift();g&&g.f(S),l(),a=i.length,s=!0,i.push(S)},return:S=>{let g=u.shift();g&&g.s({done:!0,value:S}),l(),a=i.length,i.push(S)}});let d={[e]:()=>d,next:()=>{if(a===-1){let q=n++;if(q>=i.length){let Qr=r();return u.push(Qr),Qr.p}return{done:!1,value:i[q]}}if(n>a)return{done:!0,value:void 0};let S=n++,g=i[S];if(S!==a)return{done:!1,value:g};if(s)throw g;return{done:!0,value:g}}};return d},At=xr.toString(),Tr=e=>{let r=atob(e),t=r.length,n=new Uint8Array(t);for(let a=0;a<t;a++)n[a]=r.charCodeAt(a);return n.buffer},Rt=Tr.toString();var Et={},It={};var Pt={0:{},1:{},2:{},3:{},4:{},5:{}},xt={0:"[]",1:yt,2:Nt,3:bt,4:Ct,5:Rt};function L(e){return"__SEROVAL_STREAM__"in e}function K(){return Ir()}function qe(e){let r=K(),t=e[N]();async function n(){try{let a=await t.next();a.done?r.return(a.value):(r.next(a.value),await n())}catch(a){r.throw(a)}}return n().catch(()=>{}),r}var In=xr(N,oe);function Tt(e){return In(e)}function Xe(e){let r=[],t=-1,n=-1,a=e[b]();for(;;)try{let s=a.next();if(r.push(s.value),s.done){n=r.length-1;break}}catch(s){t=r.length,r.push(s)}return{v:r,t,d:n}}var Pn=Pr(b);function Ot(e){return Pn(e)}async function Or(e){try{return[1,await e]}catch(r){return[0,r]}}function Ne(e,r){return{plugins:r.plugins,mode:e,marked:new Set,features:63^(r.disabledFeatures||0),refs:r.refs||new Map,depthLimit:r.depthLimit||1e3}}function be(e,r){e.marked.add(r)}function wr(e,r){let t=e.refs.size;return e.refs.set(r,t),t}function Qe(e,r){let t=e.refs.get(r);return t!=null?(be(e,t),{type:1,value:pt(t)}):{type:0,value:wr(e,r)}}function H(e,r){let t=Qe(e,r);return t.type===1?t:Rr(r)?{type:2,value:gt(t.value,r)}:t}function E(e,r){let t=H(e,r);if(t.type!==0)return t.value;if(r in Ie)return dt(t.value,r);throw new x(r)}function k(e,r){let t=Qe(e,Pt[r]);return t.type===1?t.value:c(26,t.value,r,o,o,o,o,o,o,o,o)}function er(e){let r=Qe(e,Et);return r.type===1?r.value:c(27,r.value,o,o,o,o,o,o,E(e,b),o,o)}function rr(e){let r=Qe(e,It);return r.type===1?r.value:c(29,r.value,o,o,o,o,o,[k(e,1),E(e,N)],o,o,o)}function tr(e,r,t,n){return c(t?11:10,e,o,o,o,n,o,o,o,o,he(r))}function nr(e,r,t,n){return c(8,r,o,o,o,o,{k:t,v:n},o,k(e,0),o,o)}function ht(e,r,t){return c(22,r,t,o,o,o,o,o,k(e,1),o,o)}function or(e,r,t){let n=new Uint8Array(t),a="";for(let s=0,i=n.length;s<i;s++)a+=String.fromCharCode(n[s]);return c(19,r,y(btoa(a)),o,o,o,o,o,k(e,5),o,o)}function ae(e,r){return{base:Ne(e,r),child:void 0}}var zr=class{constructor(r,t){this._p=r;this.depth=t}parse(r){return C(this._p,this.depth,r)}};async function Tn(e,r,t){let n=[];for(let a=0,s=t.length;a<s;a++)a in t?n[a]=await C(e,r,t[a]):n[a]=0;return n}async function On(e,r,t,n){return Fe(t,n,await Tn(e,r,n))}async function _r(e,r,t){let n=Object.entries(t),a=[],s=[];for(let i=0,u=n.length;i<u;i++)a.push(y(n[i][0])),s.push(await C(e,r,n[i][1]));return b in t&&(a.push(E(e.base,b)),s.push(We(er(e.base),await C(e,r,Xe(t))))),N in t&&(a.push(E(e.base,N)),s.push(Ge(rr(e.base),await C(e,r,qe(t))))),P in t&&(a.push(E(e.base,P)),s.push(te(t[P]))),I in t&&(a.push(E(e.base,I)),s.push(t[I]?Q:ee)),{k:a,v:s}}async function hr(e,r,t,n,a){return tr(t,n,a,await _r(e,r,n))}async function wn(e,r,t,n){return Be(t,await C(e,r,n.valueOf()))}async function hn(e,r,t,n){return Me(t,n,await C(e,r,n.buffer))}async function zn(e,r,t,n){return Ve(t,n,await C(e,r,n.buffer))}async function _n(e,r,t,n){return Le(t,n,await C(e,r,n.buffer))}async function zt(e,r,t,n){let a=re(n,e.base.features);return Ue(t,n,a?await _r(e,r,a):o)}async function kn(e,r,t,n){let a=re(n,e.base.features);return je(t,n,a?await _r(e,r,a):o)}async function Dn(e,r,t,n){let a=[],s=[];for(let[i,u]of n.entries())a.push(await C(e,r,i)),s.push(await C(e,r,u));return nr(e.base,t,a,s)}async function Fn(e,r,t,n){let a=[];for(let s of n.keys())a.push(await C(e,r,s));return Ye(t,a)}async function _t(e,r,t,n){let a=e.base.plugins;if(a)for(let s=0,i=a.length;s<i;s++){let u=a[s];if(u.parse.async&&u.test(n))return pe(t,u.tag,await u.parse.async(n,new zr(e,r),{id:t}))}return o}async function Bn(e,r,t,n){let[a,s]=await Or(n);return c(12,t,a,o,o,o,o,o,await C(e,r,s),o,o)}function Mn(e,r,t,n,a){let s=[],i=t.on({next:u=>{be(this.base,r),C(this,e,u).then(l=>{s.push(He(r,l))},l=>{a(l),i()})},throw:u=>{be(this.base,r),C(this,e,u).then(l=>{s.push(Je(r,l)),n(s),i()},l=>{a(l),i()})},return:u=>{be(this.base,r),C(this,e,u).then(l=>{s.push(Ze(r,l)),n(s),i()},l=>{a(l),i()})}})}async function Vn(e,r,t,n){return Ke(t,k(e.base,4),await new Promise(Mn.bind(e,r,t,n)))}async function Ln(e,r,t,n){if(Array.isArray(n))return On(e,r,t,n);if(L(n))return Vn(e,r,t,n);let a=n.constructor;if(a===V)return C(e,r,n.replacement);let s=await _t(e,r,t,n);if(s)return s;switch(a){case Object:return hr(e,r,t,n,!1);case o:return hr(e,r,t,n,!0);case Date:return ke(t,n);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return zt(e,r,t,n);case Number:case Boolean:case String:case BigInt:return wn(e,r,t,n);case ArrayBuffer:return or(e.base,t,n);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return hn(e,r,t,n);case DataView:return _n(e,r,t,n);case Map:return Dn(e,r,t,n);case Set:return Fn(e,r,t,n);default:break}if(a===Promise||n instanceof Promise)return Bn(e,r,t,n);let i=e.base.features;if(i&32&&a===RegExp)return De(t,n);if(i&16)switch(a){case BigInt64Array:case BigUint64Array:return zn(e,r,t,n);default:break}if(i&1&&typeof AggregateError!="undefined"&&(a===AggregateError||n instanceof AggregateError))return kn(e,r,t,n);if(n instanceof Error)return zt(e,r,t,n);if(b in n||N in n)return hr(e,r,t,n,!!a);throw new x(n)}async function Un(e,r,t){let n=H(e.base,t);if(n.type!==0)return n.value;let a=await _t(e,r,n.value,t);if(a)return a;throw new x(t)}async function C(e,r,t){switch(typeof t){case"boolean":return t?Q:ee;case"undefined":return xe;case"string":return te(t);case"number":return ze(t);case"bigint":return _e(t);case"object":{if(t){let n=H(e.base,t);return n.type===0?await Ln(e,r+1,n.value,t):n.value}return Te}case"symbol":return E(e.base,t);case"function":return Un(e,r,t);default:throw new x(t)}}async function se(e,r){try{return await C(e,0,r)}catch(t){throw t instanceof h?t:new h(t)}}var J=(t=>(t[t.Vanilla=1]="Vanilla",t[t.Cross=2]="Cross",t))(J||{});function jn(e){return e}function kt(e,r){for(let t=0,n=r.length;t<n;t++){let a=r[t];e.has(a)||(e.add(a),a.extends&&kt(e,a.extends))}}function v(e){if(e){let r=new Set;return kt(r,e),[...r]}}function Dt(e){switch(e){case"Int8Array":return Int8Array;case"Int16Array":return Int16Array;case"Int32Array":return Int32Array;case"Uint8Array":return Uint8Array;case"Uint16Array":return Uint16Array;case"Uint32Array":return Uint32Array;case"Uint8ClampedArray":return Uint8ClampedArray;case"Float32Array":return Float32Array;case"Float64Array":return Float64Array;case"BigInt64Array":return BigInt64Array;case"BigUint64Array":return BigUint64Array;default:throw new ge(e)}}var Yn=1e6,Wn=1e4,Gn=2e4;function Bt(e,r){switch(r){case 3:return Object.freeze(e);case 1:return Object.preventExtensions(e);case 2:return Object.seal(e);default:return e}}var Kn=1e3;function Mt(e,r){var t;return{mode:e,plugins:r.plugins,refs:r.refs||new Map,features:(t=r.features)!=null?t:63^(r.disabledFeatures||0),depthLimit:r.depthLimit||Kn}}function Vt(e){return{mode:1,base:Mt(1,e),child:o,state:{marked:new Set(e.markedRefs)}}}function Lt(e){return{mode:2,base:Mt(2,e),child:o}}var kr=class{constructor(r,t){this._p=r;this.depth=t}deserialize(r){return p(this._p,this.depth,r)}};function Ut(e,r){if(r<0||!Number.isFinite(r)||!Number.isInteger(r))throw new w({t:4,i:r});if(e.refs.has(r))throw new Error("Conflicted ref id: "+r)}function Hn(e,r,t){return Ut(e.base,r),e.state.marked.has(r)&&e.base.refs.set(r,t),t}function Jn(e,r,t){return Ut(e.base,r),e.base.refs.set(r,t),t}function A(e,r,t){return e.mode===1?Hn(e,r,t):Jn(e,r,t)}function Dr(e,r,t){if(Object.hasOwn(r,t))return r[t];throw new w(e)}function Zn(e,r){return A(e,r.i,St(M(r.s)))}function $n(e,r,t){let n=t.a,a=n.length,s=A(e,t.i,new Array(a));for(let i=0,u;i<a;i++)u=n[i],u&&(s[i]=p(e,r,u));return Bt(s,t.o),s}function qn(e){switch(e){case"constructor":case"__proto__":case"prototype":case"__defineGetter__":case"__defineSetter__":case"__lookupGetter__":case"__lookupSetter__":return!1;default:return!0}}function Xn(e){switch(e){case N:case I:case P:case b:return!0;default:return!1}}function Ft(e,r,t){qn(r)?e[r]=t:Object.defineProperty(e,r,{value:t,configurable:!0,enumerable:!0,writable:!0})}function Qn(e,r,t,n,a){if(typeof n=="string")Ft(t,n,p(e,r,a));else{let s=p(e,r,n);switch(typeof s){case"string":Ft(t,s,p(e,r,a));break;case"symbol":Xn(s)&&(t[s]=p(e,r,a));break;default:throw new w(n)}}}function jt(e,r,t,n){let a=t.k;if(a.length>0)for(let i=0,u=t.v,l=a.length;i<l;i++)Qn(e,r,n,a[i],u[i]);return n}function eo(e,r,t){let n=A(e,t.i,t.t===10?{}:Object.create(null));return jt(e,r,t.p,n),Bt(n,t.o),n}function ro(e,r){return A(e,r.i,new Date(r.s))}function to(e,r){if(e.base.features&32){let t=M(r.c);if(t.length>Gn)throw new w(r);return A(e,r.i,new RegExp(t,r.m))}throw new O(r)}function no(e,r,t){let n=A(e,t.i,new Set);for(let a=0,s=t.a,i=s.length;a<i;a++)n.add(p(e,r,s[a]));return n}function oo(e,r,t){let n=A(e,t.i,new Map);for(let a=0,s=t.e.k,i=t.e.v,u=s.length;a<u;a++)n.set(p(e,r,s[a]),p(e,r,i[a]));return n}function ao(e,r){if(r.s.length>Yn)throw new w(r);return A(e,r.i,Tr(M(r.s)))}function so(e,r,t){var u;let n=Dt(t.c),a=p(e,r,t.f),s=(u=t.b)!=null?u:0;if(s<0||s>a.byteLength)throw new w(t);return A(e,t.i,new n(a,s))}function io(e,r,t){var i;let n=p(e,r,t.f),a=(i=t.b)!=null?i:0;if(a<0||a>n.byteLength)throw new w(t);return A(e,t.i,new DataView(n,a))}function Yt(e,r,t,n){if(t.p){let a=jt(e,r,t.p,{});Object.defineProperties(n,Object.getOwnPropertyDescriptors(a))}return n}function uo(e,r,t){let n=A(e,t.i,new AggregateError([],M(t.m)));return Yt(e,r,t,n)}function lo(e,r,t){let n=Dr(t,ot,t.s),a=A(e,t.i,new n(M(t.m)));return Yt(e,r,t,a)}function co(e,r,t){let n=oe(),a=A(e,t.i,n.p),s=p(e,r,t.f);return t.s?n.s(s):n.f(s),a}function fo(e,r,t){return A(e,t.i,Object(p(e,r,t.f)))}function So(e,r,t){let n=e.base.plugins;if(n){let a=M(t.c);for(let s=0,i=n.length;s<i;s++){let u=n[s];if(u.tag===a)return A(e,t.i,u.deserialize(t.s,new kr(e,r),{id:t.i}))}}throw new W(t.c)}function mo(e,r){return A(e,r.i,A(e,r.s,oe()).p)}function po(e,r,t){let n=e.base.refs.get(t.i);if(n)return n.s(p(e,r,t.a[1])),o;throw new D("Promise")}function go(e,r,t){let n=e.base.refs.get(t.i);if(n)return n.f(p(e,r,t.a[1])),o;throw new D("Promise")}function yo(e,r,t){p(e,r,t.a[0]);let n=p(e,r,t.a[1]);return Ot(n)}function No(e,r,t){p(e,r,t.a[0]);let n=p(e,r,t.a[1]);return Tt(n)}function bo(e,r,t){let n=A(e,t.i,K()),a=t.a,s=a.length;if(s)for(let i=0;i<s;i++)p(e,r,a[i]);return n}function Co(e,r,t){let n=e.base.refs.get(t.i);if(n&&L(n))return n.next(p(e,r,t.f)),o;throw new D("Stream")}function vo(e,r,t){let n=e.base.refs.get(t.i);if(n&&L(n))return n.throw(p(e,r,t.f)),o;throw new D("Stream")}function Ao(e,r,t){let n=e.base.refs.get(t.i);if(n&&L(n))return n.return(p(e,r,t.f)),o;throw new D("Stream")}function Ro(e,r,t){return p(e,r,t.f),o}function Eo(e,r,t){return p(e,r,t.a[1]),o}function p(e,r,t){if(r>e.base.depthLimit)throw new G(e.base.depthLimit);switch(r+=1,t.t){case 2:return Dr(t,nt,t.s);case 0:return Number(t.s);case 1:return M(String(t.s));case 3:if(String(t.s).length>Wn)throw new w(t);return BigInt(t.s);case 4:return e.base.refs.get(t.i);case 18:return Zn(e,t);case 9:return $n(e,r,t);case 10:case 11:return eo(e,r,t);case 5:return ro(e,t);case 6:return to(e,t);case 7:return no(e,r,t);case 8:return oo(e,r,t);case 19:return ao(e,t);case 16:case 15:return so(e,r,t);case 20:return io(e,r,t);case 14:return uo(e,r,t);case 13:return lo(e,r,t);case 12:return co(e,r,t);case 17:return Dr(t,rt,t.s);case 21:return fo(e,r,t);case 25:return So(e,r,t);case 22:return mo(e,t);case 23:return po(e,r,t);case 24:return go(e,r,t);case 28:return yo(e,r,t);case 30:return No(e,r,t);case 31:return bo(e,r,t);case 32:return Co(e,r,t);case 33:return vo(e,r,t);case 34:return Ao(e,r,t);case 27:return Ro(e,r,t);case 29:return Eo(e,r,t);default:throw new O(t)}}function ar(e,r){try{return p(e,0,r)}catch(t){throw new de(t)}}var Io=()=>T,Po=Io.toString(),Wt=/=>/.test(Po);function sr(e,r){return Wt?(e.length===1?e[0]:"("+e.join(",")+")")+"=>"+(r.startsWith("{")?"("+r+")":r):"function("+e.join(",")+"){return "+r+"}"}function Gt(e,r){return Wt?(e.length===1?e[0]:"("+e.join(",")+")")+"=>{"+r+"}":"function("+e.join(",")+"){"+r+"}"}var Jt="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",Kt=Jt.length,Zt="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",Ht=Zt.length;function Fr(e){let r=e%Kt,t=Jt[r];for(e=(e-r)/Kt;e>0;)r=e%Ht,t+=Zt[r],e=(e-r)/Ht;return t}var xo=/^[$A-Z_][0-9A-Z_$]*$/i;function Br(e){let r=e[0];return(r==="$"||r==="_"||r>="A"&&r<="Z"||r>="a"&&r<="z")&&xo.test(e)}function ve(e){switch(e.t){case 0:return e.s+"="+e.v;case 2:return e.s+".set("+e.k+","+e.v+")";case 1:return e.s+".add("+e.v+")";case 3:return e.s+".delete("+e.k+")"}}function To(e){let r=[],t=e[0];for(let n=1,a=e.length,s,i=t;n<a;n++)s=e[n],s.t===0&&s.v===i.v?t={t:0,s:s.s,k:o,v:ve(t)}:s.t===2&&s.s===i.s?t={t:2,s:ve(t),k:s.k,v:s.v}:s.t===1&&s.s===i.s?t={t:1,s:ve(t),k:o,v:s.v}:s.t===3&&s.s===i.s?t={t:3,s:ve(t),k:s.k,v:o}:(r.push(t),t=s),i=s;return r.push(t),r}function rn(e){if(e.length){let r="",t=To(e);for(let n=0,a=t.length;n<a;n++)r+=ve(t[n])+",";return r}return o}var Oo="Object.create(null)",wo="new Set",ho="new Map",zo="Promise.resolve",_o="Promise.reject",ko={3:"Object.freeze",2:"Object.seal",1:"Object.preventExtensions",0:o};function tn(e,r){return{mode:e,plugins:r.plugins,features:r.features,marked:new Set(r.markedRefs),stack:[],flags:[],assignments:[]}}function Do(){return{valid:new Map,vars:[]}}function ir(e){return{mode:1,base:tn(1,e),state:Do(),child:o}}function ur(e){return{mode:2,base:tn(2,e),state:e,child:o}}var Mr=class{constructor(r){this._p=r}serialize(r){return f(this._p,r)}};function Fo(e,r){let t=e.valid.get(r);t==null&&(t=e.valid.size,e.valid.set(r,t));let n=e.vars[t];return n==null&&(n=Fr(t),e.vars[t]=n),n}function Bo(e){return fe+"["+e+"]"}function m(e,r){return e.mode===1?Fo(e.state,r):Bo(r)}function z(e,r){e.marked.add(r)}function Vr(e,r){return e.marked.has(r)}function Ur(e,r,t){r!==0&&(z(e.base,t),e.base.flags.push({type:r,value:m(e,t)}))}function Mo(e){let r="";for(let t=0,n=e.flags,a=n.length;t<a;t++){let s=n[t];r+=ko[s.type]+"("+s.value+"),"}return r}function nn(e){let r=rn(e.assignments),t=Mo(e);return r?t?r+t:r:t}function on(e,r,t){e.assignments.push({t:0,s:r,k:o,v:t})}function Vo(e,r,t){e.base.assignments.push({t:1,s:m(e,r),k:o,v:t})}function Ce(e,r,t,n){e.base.assignments.push({t:2,s:m(e,r),k:t,v:n})}function $t(e,r,t){e.base.assignments.push({t:3,s:m(e,r),k:t,v:o})}function Ae(e,r,t,n){on(e.base,m(e,r)+"["+t+"]",n)}function Lr(e,r,t,n){on(e.base,m(e,r)+"."+t,n)}function U(e,r){return r.t===4&&e.stack.includes(r.i)}function ie(e,r,t){return e.mode===1&&!Vr(e.base,r)?t:m(e,r)+"="+t}function Lo(e){return j+'.get("'+e.s+'")'}function qt(e,r,t,n){return t?U(e.base,t)?(z(e.base,r),Ae(e,r,n,m(e,t.i)),""):f(e,t):""}function Uo(e,r){let t=r.i,n=r.a,a=n.length;if(a>0){e.base.stack.push(t);let s=qt(e,t,n[0],0),i=s==="";for(let u=1,l;u<a;u++)l=qt(e,t,n[u],u),s+=","+l,i=l==="";return e.base.stack.pop(),Ur(e,r.o,r.i),"["+s+(i?",]":"]")}return"[]"}function Xt(e,r,t,n){if(typeof t=="string"){let a=Number(t),s=a>=0&&a.toString()===t||Br(t);if(U(e.base,n)){let i=m(e,n.i);return z(e.base,r.i),s&&a!==a?Lr(e,r.i,t,i):Ae(e,r.i,s?t:'"'+t+'"',i),""}return(s?t:'"'+t+'"')+":"+f(e,n)}return"["+f(e,t)+"]:"+f(e,n)}function an(e,r,t){let n=t.k,a=n.length;if(a>0){let s=t.v;e.base.stack.push(r.i);let i=Xt(e,r,n[0],s[0]);for(let u=1,l=i;u<a;u++)l=Xt(e,r,n[u],s[u]),i+=(l&&i&&",")+l;return e.base.stack.pop(),"{"+i+"}"}return"{}"}function jo(e,r){return Ur(e,r.o,r.i),an(e,r,r.p)}function Yo(e,r,t,n){let a=an(e,r,t);return a!=="{}"?"Object.assign("+n+","+a+")":n}function Wo(e,r,t,n,a){let s=e.base,i=f(e,a),u=Number(n),l=u>=0&&u.toString()===n||Br(n);if(U(s,a))l&&u!==u?Lr(e,r.i,n,i):Ae(e,r.i,l?n:'"'+n+'"',i);else{let d=s.assignments;s.assignments=t,l&&u!==u?Lr(e,r.i,n,i):Ae(e,r.i,l?n:'"'+n+'"',i),s.assignments=d}}function Go(e,r,t,n,a){if(typeof n=="string")Wo(e,r,t,n,a);else{let s=e.base,i=s.stack;s.stack=[];let u=f(e,a);s.stack=i;let l=s.assignments;s.assignments=t,Ae(e,r.i,f(e,n),u),s.assignments=l}}function Ko(e,r,t){let n=t.k,a=n.length;if(a>0){let s=[],i=t.v;e.base.stack.push(r.i);for(let u=0;u<a;u++)Go(e,r,s,n[u],i[u]);return e.base.stack.pop(),rn(s)}return o}function jr(e,r,t){if(r.p){let n=e.base;if(n.features&8)t=Yo(e,r,r.p,t);else{z(n,r.i);let a=Ko(e,r,r.p);if(a)return"("+ie(e,r.i,t)+","+a+m(e,r.i)+")"}}return t}function Ho(e,r){return Ur(e,r.o,r.i),jr(e,r,Oo)}function Jo(e){return'new Date("'+e.s+'")'}function Zo(e,r){if(e.base.features&32)return"/"+r.c+"/"+r.m;throw new O(r)}function Qt(e,r,t){let n=e.base;return U(n,t)?(z(n,r),Vo(e,r,m(e,t.i)),""):f(e,t)}function $o(e,r){let t=wo,n=r.a,a=n.length,s=r.i;if(a>0){e.base.stack.push(s);let i=Qt(e,s,n[0]);for(let u=1,l=i;u<a;u++)l=Qt(e,s,n[u]),i+=(l&&i&&",")+l;e.base.stack.pop(),i&&(t+="(["+i+"])")}return t}function en(e,r,t,n,a){let s=e.base;if(U(s,t)){let i=m(e,t.i);if(z(s,r),U(s,n)){let l=m(e,n.i);return Ce(e,r,i,l),""}if(n.t!==4&&n.i!=null&&Vr(s,n.i)){let l="("+f(e,n)+",["+a+","+a+"])";return Ce(e,r,i,m(e,n.i)),$t(e,r,a),l}let u=s.stack;return s.stack=[],Ce(e,r,i,f(e,n)),s.stack=u,""}if(U(s,n)){let i=m(e,n.i);if(z(s,r),t.t!==4&&t.i!=null&&Vr(s,t.i)){let l="("+f(e,t)+",["+a+","+a+"])";return Ce(e,r,m(e,t.i),i),$t(e,r,a),l}let u=s.stack;return s.stack=[],Ce(e,r,f(e,t),i),s.stack=u,""}return"["+f(e,t)+","+f(e,n)+"]"}function qo(e,r){let t=ho,n=r.e.k,a=n.length,s=r.i,i=r.f,u=m(e,i.i),l=e.base;if(a>0){let d=r.e.v;l.stack.push(s);let S=en(e,s,n[0],d[0],u);for(let g=1,q=S;g<a;g++)q=en(e,s,n[g],d[g],u),S+=(q&&S&&",")+q;l.stack.pop(),S&&(t+="(["+S+"])")}return i.t===26&&(z(l,i.i),t="("+f(e,i)+","+t+")"),t}function Xo(e,r){return Z(e,r.f)+'("'+r.s+'")'}function Qo(e,r){return"new "+r.c+"("+f(e,r.f)+","+r.b+")"}function ea(e,r){return"new DataView("+f(e,r.f)+","+r.b+")"}function ra(e,r){let t=r.i;e.base.stack.push(t);let n=jr(e,r,'new AggregateError([],"'+r.m+'")');return e.base.stack.pop(),n}function ta(e,r){return jr(e,r,"new "+Pe[r.s]+'("'+r.m+'")')}function na(e,r){let t,n=r.f,a=r.i,s=r.s?zo:_o,i=e.base;if(U(i,n)){let u=m(e,n.i);t=s+(r.s?"().then("+sr([],u)+")":"().catch("+Gt([],"throw "+u)+")")}else{i.stack.push(a);let u=f(e,n);i.stack.pop(),t=s+"("+u+")"}return t}function oa(e,r){return"Object("+f(e,r.f)+")"}function Z(e,r){let t=f(e,r);return r.t===4?t:"("+t+")"}function aa(e,r){if(e.mode===1)throw new O(r);return"("+ie(e,r.s,Z(e,r.f)+"()")+").p"}function sa(e,r){if(e.mode===1)throw new O(r);return Z(e,r.a[0])+"("+m(e,r.i)+","+f(e,r.a[1])+")"}function ia(e,r){if(e.mode===1)throw new O(r);return Z(e,r.a[0])+"("+m(e,r.i)+","+f(e,r.a[1])+")"}function ua(e,r){let t=e.base.plugins;if(t)for(let n=0,a=t.length;n<a;n++){let s=t[n];if(s.tag===r.c)return e.child==null&&(e.child=new Mr(e)),s.serialize(r.s,e.child,{id:r.i})}throw new W(r.c)}function la(e,r){let t="",n=!1;return r.f.t!==4&&(z(e.base,r.f.i),t="("+f(e,r.f)+",",n=!0),t+=ie(e,r.i,"("+vt+")("+m(e,r.f.i)+")"),n&&(t+=")"),t}function ca(e,r){return Z(e,r.a[0])+"("+f(e,r.a[1])+")"}function fa(e,r){let t=r.a[0],n=r.a[1],a=e.base,s="";t.t!==4&&(z(a,t.i),s+="("+f(e,t)),n.t!==4&&(z(a,n.i),s+=(s?",":"(")+f(e,n)),s&&(s+=",");let i=ie(e,r.i,"("+At+")("+m(e,n.i)+","+m(e,t.i)+")");return s?s+i+")":i}function Sa(e,r){return Z(e,r.a[0])+"("+f(e,r.a[1])+")"}function ma(e,r){let t=ie(e,r.i,Z(e,r.f)+"()"),n=r.a.length;if(n){let a=f(e,r.a[0]);for(let s=1;s<n;s++)a+=","+f(e,r.a[s]);return"("+t+","+a+","+m(e,r.i)+")"}return t}function pa(e,r){return m(e,r.i)+".next("+f(e,r.f)+")"}function da(e,r){return m(e,r.i)+".throw("+f(e,r.f)+")"}function ga(e,r){return m(e,r.i)+".return("+f(e,r.f)+")"}function ya(e,r){switch(r.t){case 17:return et[r.s];case 18:return Lo(r);case 9:return Uo(e,r);case 10:return jo(e,r);case 11:return Ho(e,r);case 5:return Jo(r);case 6:return Zo(e,r);case 7:return $o(e,r);case 8:return qo(e,r);case 19:return Xo(e,r);case 16:case 15:return Qo(e,r);case 20:return ea(e,r);case 14:return ra(e,r);case 13:return ta(e,r);case 12:return na(e,r);case 21:return oa(e,r);case 22:return aa(e,r);case 25:return ua(e,r);case 26:return xt[r.s];default:throw new O(r)}}function f(e,r){switch(r.t){case 2:return tt[r.s];case 0:return""+r.s;case 1:return'"'+r.s+'"';case 3:return r.s+"n";case 4:return m(e,r.i);case 23:return sa(e,r);case 24:return ia(e,r);case 27:return la(e,r);case 28:return ca(e,r);case 29:return fa(e,r);case 30:return Sa(e,r);case 31:return ma(e,r);case 32:return pa(e,r);case 33:return da(e,r);case 34:return ga(e,r);default:return ie(e,r.i,ya(e,r))}}function lr(e,r){let t=f(e,r);if(r.i!=null&&e.state.vars.length){let n=nn(e.base),a=t;if(n){let s=m(e,r.i);a=t+","+n+s,t.startsWith(s+"=")||(a=s+"="+a),a="("+a+")"}return"("+sr(e.state.vars,a)+")()"}return r.t===10?"("+t+")":t}function cr(e,r){let t=f(e,r),n=r.i;if(n==null)return t;let a=nn(e.base),s=m(e,n),i=e.state.scopeId,u=i==null?"":fe,l=a?"("+t+","+a+s+")":t;if(u==="")return r.t===10&&!a?"("+l+")":l;let d=i==null?"()":"("+fe+'["'+y(i)+'"])';return"("+sr([u],l)+")"+d}function le(e,r){return{type:1,base:Ne(e,r),child:o}}var Wr=class{constructor(r,t){this._p=r;this.depth=t}parse(r){return R(this._p,this.depth,r)}},Gr=class{constructor(r,t){this._p=r;this.depth=t}parse(r){return R(this._p,this.depth,r)}parseWithError(r){return $(this._p,this.depth,r)}isAlive(){return this._p.state.alive}pushPendingState(){$r(this._p)}popPendingState(){Re(this._p)}onParse(r){ue(this._p,r)}onError(r){Jr(this._p,r)}};function Na(e){return{alive:!0,pending:0,initial:!0,buffer:[],onParse:e.onParse,onError:e.onError,onDone:e.onDone}}function Kr(e){return{type:2,base:Ne(2,e),state:Na(e)}}function ba(e,r,t){let n=[];for(let a=0,s=t.length;a<s;a++)a in t?n[a]=R(e,r,t[a]):n[a]=0;return n}function Ca(e,r,t,n){return Fe(t,n,ba(e,r,n))}function Hr(e,r,t){let n=Object.entries(t),a=[],s=[];for(let i=0,u=n.length;i<u;i++)a.push(y(n[i][0])),s.push(R(e,r,n[i][1]));return b in t&&(a.push(E(e.base,b)),s.push(We(er(e.base),R(e,r,Xe(t))))),N in t&&(a.push(E(e.base,N)),s.push(Ge(rr(e.base),R(e,r,e.type===1?K():qe(t))))),P in t&&(a.push(E(e.base,P)),s.push(te(t[P]))),I in t&&(a.push(E(e.base,I)),s.push(t[I]?Q:ee)),{k:a,v:s}}function Yr(e,r,t,n,a){return tr(t,n,a,Hr(e,r,n))}function va(e,r,t,n){return Be(t,R(e,r,n.valueOf()))}function Aa(e,r,t,n){return Me(t,n,R(e,r,n.buffer))}function Ra(e,r,t,n){return Ve(t,n,R(e,r,n.buffer))}function Ea(e,r,t,n){return Le(t,n,R(e,r,n.buffer))}function sn(e,r,t,n){let a=re(n,e.base.features);return Ue(t,n,a?Hr(e,r,a):o)}function Ia(e,r,t,n){let a=re(n,e.base.features);return je(t,n,a?Hr(e,r,a):o)}function Pa(e,r,t,n){let a=[],s=[];for(let[i,u]of n.entries())a.push(R(e,r,i)),s.push(R(e,r,u));return nr(e.base,t,a,s)}function xa(e,r,t,n){let a=[];for(let s of n.keys())a.push(R(e,r,s));return Ye(t,a)}function Ta(e,r,t,n){let a=Ke(t,k(e.base,4),[]);return e.type===1||($r(e),n.on({next:s=>{if(e.state.alive){let i=$(e,r,s);i&&ue(e,He(t,i))}},throw:s=>{if(e.state.alive){let i=$(e,r,s);i&&ue(e,Je(t,i))}Re(e)},return:s=>{if(e.state.alive){let i=$(e,r,s);i&&ue(e,Ze(t,i))}Re(e)}})),a}function Oa(e,r,t){if(this.state.alive){let n=$(this,r,t);n&&ue(this,c(23,e,o,o,o,o,o,[k(this.base,2),n],o,o,o)),Re(this)}}function wa(e,r,t){if(this.state.alive){let n=$(this,r,t);n&&ue(this,c(24,e,o,o,o,o,o,[k(this.base,3),n],o,o,o))}Re(this)}function ha(e,r,t,n){let a=wr(e.base,{});return e.type===2&&($r(e),n.then(Oa.bind(e,a,r),wa.bind(e,a,r))),ht(e.base,t,a)}function za(e,r,t,n,a){for(let s=0,i=a.length;s<i;s++){let u=a[s];if(u.parse.sync&&u.test(n))return pe(t,u.tag,u.parse.sync(n,new Wr(e,r),{id:t}))}return o}function _a(e,r,t,n,a){for(let s=0,i=a.length;s<i;s++){let u=a[s];if(u.parse.stream&&u.test(n))return pe(t,u.tag,u.parse.stream(n,new Gr(e,r),{id:t}))}return o}function un(e,r,t,n){let a=e.base.plugins;return a?e.type===1?za(e,r,t,n,a):_a(e,r,t,n,a):o}function ka(e,r,t,n,a){switch(a){case Object:return Yr(e,r,t,n,!1);case o:return Yr(e,r,t,n,!0);case Date:return ke(t,n);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return sn(e,r,t,n);case Number:case Boolean:case String:case BigInt:return va(e,r,t,n);case ArrayBuffer:return or(e.base,t,n);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return Aa(e,r,t,n);case DataView:return Ea(e,r,t,n);case Map:return Pa(e,r,t,n);case Set:return xa(e,r,t,n);default:break}if(a===Promise||n instanceof Promise)return ha(e,r,t,n);let s=e.base.features;if(s&32&&a===RegExp)return De(t,n);if(s&16)switch(a){case BigInt64Array:case BigUint64Array:return Ra(e,r,t,n);default:break}if(s&1&&typeof AggregateError!="undefined"&&(a===AggregateError||n instanceof AggregateError))return Ia(e,r,t,n);if(n instanceof Error)return sn(e,r,t,n);if(b in n||N in n)return Yr(e,r,t,n,!!a);throw new x(n)}function Da(e,r,t,n){if(Array.isArray(n))return Ca(e,r,t,n);if(L(n))return Ta(e,r,t,n);let a=n.constructor;if(a===V)return R(e,r,n.replacement);let s=un(e,r,t,n);return s||ka(e,r,t,n,a)}function Fa(e,r,t){let n=H(e.base,t);if(n.type!==0)return n.value;let a=un(e,r,n.value,t);if(a)return a;throw new x(t)}function R(e,r,t){if(r>=e.base.depthLimit)throw new G(e.base.depthLimit);switch(typeof t){case"boolean":return t?Q:ee;case"undefined":return xe;case"string":return te(t);case"number":return ze(t);case"bigint":return _e(t);case"object":{if(t){let n=H(e.base,t);return n.type===0?Da(e,r+1,n.value,t):n.value}return Te}case"symbol":return E(e.base,t);case"function":return Fa(e,r,t);default:throw new x(t)}}function ce(e,r){try{return R(e,0,r)}catch(t){throw t instanceof h?t:new h(t)}}function ue(e,r){e.state.initial?e.state.buffer.push(r):Zr(e,r,!1)}function Jr(e,r){if(e.state.onError)e.state.onError(r);else throw r instanceof h?r:new h(r)}function ln(e){e.state.onDone&&e.state.onDone()}function Zr(e,r,t){try{e.state.onParse(r,t)}catch(n){Jr(e,n)}}function $r(e){e.state.pending++}function Re(e){--e.state.pending<=0&&ln(e)}function $(e,r,t){try{return R(e,r,t)}catch(n){return Jr(e,n),o}}function qr(e,r){let t=$(e,0,r);t&&(Zr(e,t,!0),e.state.initial=!1,Ba(e,e.state),e.state.pending<=0&&fr(e))}function Ba(e,r){for(let t=0,n=r.buffer.length;t<n;t++)Zr(e,r.buffer[t],!1)}function fr(e){e.state.alive&&(ln(e),e.state.alive=!1)}function Ma(e,r={}){let t=v(r.plugins),n=le(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs}),a=ce(n,e),s=ur({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked});return cr(s,a)}async function Va(e,r={}){let t=v(r.plugins),n=ae(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs}),a=await se(n,e),s=ur({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked});return cr(s,a)}function La(e,r={}){let t=v(r.plugins),n=le(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs});return ce(n,e)}async function Ua(e,r={}){let t=v(r.plugins),n=ae(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs});return await se(n,e)}function Xr(e,r){let t=v(r.plugins),n=Kr({plugins:t,refs:r.refs,disabledFeatures:r.disabledFeatures,onParse(a,s){let i=ur({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked}),u;try{u=cr(i,a)}catch(l){r.onError&&r.onError(l);return}r.onSerialize(u,s)},onError:r.onError,onDone:r.onDone});return qr(n,e),fr.bind(null,n)}function ja(e,r){let t=v(r.plugins),n=Kr({plugins:t,refs:r.refs,disabledFeatures:r.disabledFeatures,onParse:r.onParse,onError:r.onError,onDone:r.onDone});return qr(n,e),fr.bind(null,n)}function Ya(e,r){let t=v(r.plugins),n=Lt({plugins:t,refs:r.refs,features:r.features,disabledFeatures:r.disabledFeatures});return ar(n,e)}var Ee=class{constructor(r){this.options=r;this.alive=!0;this.flushed=!1;this.done=!1;this.pending=0;this.cleanups=[];this.refs=new Map;this.keys=new Set;this.ids=0;this.plugins=v(r.plugins)}write(r,t){this.alive&&!this.flushed&&(this.pending++,this.keys.add(r),this.cleanups.push(Xr(t,{plugins:this.plugins,scopeId:this.options.scopeId,refs:this.refs,disabledFeatures:this.options.disabledFeatures,onError:this.options.onError,onSerialize:(n,a)=>{this.alive&&this.options.onData(a?this.options.globalIdentifier+'["'+y(r)+'"]='+n:n)},onDone:()=>{this.alive&&(this.pending--,this.pending<=0&&this.flushed&&!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0))}})))}getNextID(){for(;this.keys.has(""+this.ids);)this.ids++;return""+this.ids}push(r){let t=this.getNextID();return this.write(t,r),t}flush(){this.alive&&(this.flushed=!0,this.pending<=0&&!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0))}close(){if(this.alive){for(let r=0,t=this.cleanups.length;r<t;r++)this.cleanups[r]();!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0),this.alive=!1}}};function Wa(e,r={}){let t=v(r.plugins),n=le(1,{plugins:t,disabledFeatures:r.disabledFeatures}),a=ce(n,e),s=ir({plugins:t,features:n.base.features,markedRefs:n.base.marked});return lr(s,a)}async function Ga(e,r={}){let t=v(r.plugins),n=ae(1,{plugins:t,disabledFeatures:r.disabledFeatures}),a=await se(n,e),s=ir({plugins:t,features:n.base.features,markedRefs:n.base.marked});return lr(s,a)}function Ka(e){return(0,eval)(e)}function Ha(e,r={}){let t=v(r.plugins),n=le(1,{plugins:t,disabledFeatures:r.disabledFeatures});return{t:ce(n,e),f:n.base.features,m:Array.from(n.base.marked)}}async function Ja(e,r={}){let t=v(r.plugins),n=ae(1,{plugins:t,disabledFeatures:r.disabledFeatures});return{t:await se(n,e),f:n.base.features,m:Array.from(n.base.marked)}}function Za(e,r={}){let t=v(r.plugins),n=ir({plugins:t,features:e.f,markedRefs:e.m});return lr(n,e.t)}function $a(e,r={}){var i;let t=v(r.plugins),n=r.disabledFeatures||0,a=(i=e.f)!=null?i:63,s=Vt({plugins:t,markedRefs:e.m,features:a&~n,disabledFeatures:n});return ar(s,e.t)}

@@ -1,3 +0,3 @@

var K=(s=>(s[s.AggregateError=1]="AggregateError",s[s.ArrowFunction=2]="ArrowFunction",s[s.ErrorPrototypeStack=4]="ErrorPrototypeStack",s[s.ObjectAssign=8]="ObjectAssign",s[s.BigIntTypedArray=16]="BigIntTypedArray",s))(K||{});var b=Symbol.asyncIterator,lr=Symbol.hasInstance,P=Symbol.isConcatSpreadable,A=Symbol.iterator,ur=Symbol.match,cr=Symbol.matchAll,fr=Symbol.replace,Sr=Symbol.search,pr=Symbol.species,dr=Symbol.split,mr=Symbol.toPrimitive,x=Symbol.toStringTag,gr=Symbol.unscopables;var Zr={0:"Symbol.asyncIterator",1:"Symbol.hasInstance",2:"Symbol.isConcatSpreadable",3:"Symbol.iterator",4:"Symbol.match",5:"Symbol.matchAll",6:"Symbol.replace",7:"Symbol.search",8:"Symbol.species",9:"Symbol.split",10:"Symbol.toPrimitive",11:"Symbol.toStringTag",12:"Symbol.unscopables"},ge={[b]:0,[lr]:1,[P]:2,[A]:3,[ur]:4,[cr]:5,[fr]:6,[Sr]:7,[pr]:8,[dr]:9,[mr]:10,[x]:11,[gr]:12},Jr={0:b,1:lr,2:P,3:A,4:ur,5:cr,6:fr,7:Sr,8:pr,9:dr,10:mr,11:x,12:gr},Hr={2:"!0",3:"!1",1:"void 0",0:"null",4:"-0",5:"1/0",6:"-1/0",7:"0/0"},$r={2:!0,3:!1,1:void 0,0:null,4:-0,5:Number.POSITIVE_INFINITY,6:Number.NEGATIVE_INFINITY,7:Number.NaN};var ye={0:"Error",1:"EvalError",2:"RangeError",3:"ReferenceError",4:"SyntaxError",5:"TypeError",6:"URIError"},qr={0:Error,1:EvalError,2:RangeError,3:ReferenceError,4:SyntaxError,5:TypeError,6:URIError},o=void 0;function c(e,r,t,n,a,s,i,l,u,g,S,d){return{t:e,i:r,s:t,l:n,c:a,m:s,p:i,e:l,a:u,f:g,b:S,o:d}}function _(e){return c(2,o,e,o,o,o,o,o,o,o,o,o)}var Z=_(2),J=_(3),Ne=_(1),Ce=_(0),Xr=_(4),Qr=_(5),et=_(6),rt=_(7);function Qt(e){switch(e){case'"':return'\\"';case"\\":return"\\\\";case`
`:return"\\n";case"\r":return"\\r";case"\b":return"\\b";case" ":return"\\t";case"\f":return"\\f";case"<":return"\\x3C";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return}}function y(e){let r="",t=0,n;for(let a=0,s=e.length;a<s;a++)n=Qt(e[a]),n&&(r+=e.slice(t,a)+n,t=a+1);return t===0?r=e:r+=e.slice(t),r}function en(e){switch(e){case"\\\\":return"\\";case'\\"':return'"';case"\\n":return`
`;case"\\r":return"\r";case"\\b":return"\b";case"\\t":return" ";case"\\f":return"\f";case"\\x3C":return"<";case"\\u2028":return"\u2028";case"\\u2029":return"\u2029";default:return e}}function z(e){return e.replace(/(\\\\|\\"|\\n|\\r|\\b|\\t|\\f|\\u2028|\\u2029|\\x3C)/g,en)}var B="__SEROVAL_REFS__",ie="$R",ve=`self.${ie}`;function rn(e){return e==null?`${ve}=${ve}||[]`:`(${ve}=${ve}||{})["${y(e)}"]=[]`}var yr=new Map,V=new Map;function tn(e,r){return yr.set(r,e),V.set(e,r),r}function Nr(e){return yr.has(e)}function nn(e){return V.has(e)}function tt(e){if(Nr(e))return yr.get(e);throw new be(e)}function nt(e){if(nn(e))return V.get(e);throw new Ae(e)}typeof globalThis!="undefined"?Object.defineProperty(globalThis,B,{value:V,configurable:!0,writable:!1,enumerable:!1}):typeof window!="undefined"?Object.defineProperty(window,B,{value:V,configurable:!0,writable:!1,enumerable:!1}):typeof self!="undefined"?Object.defineProperty(self,B,{value:V,configurable:!0,writable:!1,enumerable:!1}):typeof global!="undefined"&&Object.defineProperty(global,B,{value:V,configurable:!0,writable:!1,enumerable:!1});function Re(e){return e instanceof EvalError?1:e instanceof RangeError?2:e instanceof ReferenceError?3:e instanceof SyntaxError?4:e instanceof TypeError?5:e instanceof URIError?6:0}function on(e){let r=ye[Re(e)];return e.name!==r?{name:e.name}:e.constructor.name!==r?{name:e.constructor.name}:{}}function H(e,r){let t=on(e),n=Object.getOwnPropertyNames(e);for(let a=0,s=n.length,i;a<s;a++)i=n[a],i!=="name"&&i!=="message"&&(i==="stack"?r&4&&(t=t||{},t[i]=e[i]):(t=t||{},t[i]=e[i]));return t}function Ie(e){return Object.isFrozen(e)?3:Object.isSealed(e)?2:Object.isExtensible(e)?0:1}function Ee(e){switch(e){case Number.POSITIVE_INFINITY:return Qr;case Number.NEGATIVE_INFINITY:return et}return e!==e?rt:Object.is(e,-0)?Xr:c(0,o,e,o,o,o,o,o,o,o,o,o)}function $(e){return c(1,o,y(e),o,o,o,o,o,o,o,o,o)}function Pe(e){return c(3,o,""+e,o,o,o,o,o,o,o,o,o)}function at(e){return c(4,e,o,o,o,o,o,o,o,o,o,o)}function xe(e,r){let t=r.valueOf();return c(5,e,t!==t?"":r.toISOString(),o,o,o,o,o,o,o,o,o)}function Te(e,r){return c(6,e,o,o,y(r.source),r.flags,o,o,o,o,o,o)}function st(e,r){return c(17,e,ge[r],o,o,o,o,o,o,o,o,o)}function it(e,r){return c(18,e,y(tt(r)),o,o,o,o,o,o,o,o,o)}function le(e,r,t){return c(25,e,t,o,y(r),o,o,o,o,o,o,o)}function Oe(e,r,t){return c(9,e,o,r.length,o,o,o,o,t,o,o,Ie(r))}function he(e,r){return c(21,e,o,o,o,o,o,o,o,r,o,o)}function we(e,r,t){return c(15,e,o,r.length,r.constructor.name,o,o,o,o,t,r.byteOffset,o)}function ze(e,r,t){return c(16,e,o,r.length,r.constructor.name,o,o,o,o,t,r.byteOffset,o)}function ke(e,r,t){return c(20,e,o,r.byteLength,o,o,o,o,o,t,r.byteOffset,o)}function _e(e,r,t){return c(13,e,Re(r),o,o,y(r.message),t,o,o,o,o,o)}function De(e,r,t){return c(14,e,Re(r),o,o,y(r.message),t,o,o,o,o,o)}function Fe(e,r,t){return c(7,e,o,r,o,o,o,o,t,o,o,o)}function Be(e,r){return c(28,o,o,o,o,o,o,o,[e,r],o,o,o)}function Ve(e,r){return c(30,o,o,o,o,o,o,o,[e,r],o,o,o)}function Me(e,r,t){return c(31,e,o,o,o,o,o,o,t,r,o,o)}function je(e,r){return c(32,e,o,o,o,o,o,o,o,r,o,o)}function Ue(e,r){return c(33,e,o,o,o,o,o,o,o,r,o,o)}function Le(e,r){return c(34,e,o,o,o,o,o,o,o,r,o,o)}var{toString:Ja}=Object.prototype;var an={parsing:1,serialization:2,deserialization:3};function sn(e){return`Seroval Error (step: ${an[e]})`}var ln=(e,r)=>sn(e),ue=class extends Error{constructor(t,n){super(ln(t,n));this.cause=n}},h=class extends ue{constructor(r){super("parsing",r)}},Cr=class extends ue{constructor(r){super("serialization",r)}},Ye=class extends ue{constructor(r){super("deserialization",r)}};function M(e){return`Seroval Error (specific: ${e})`}var E=class extends Error{constructor(t){super(M(1));this.value=t}},k=class extends Error{constructor(r){super(M(2))}},q=class extends Error{constructor(r){super(M(3))}},D=class extends Error{constructor(r){super(M(4))}},be=class extends Error{constructor(t){super(M(5));this.value=t}},Ae=class extends Error{constructor(r){super(M(6))}},We=class extends Error{constructor(r){super(M(7))}};var j=class{constructor(r,t){this.value=r;this.replacement=t}};var X=()=>{let e={p:0,s:0,f:0};return e.p=new Promise((r,t)=>{e.s=r,e.f=t}),e},un=(e,r)=>{e.s(r),e.p.s=1,e.p.v=r},cn=(e,r)=>{e.f(r),e.p.s=2,e.p.v=r},lt=X.toString(),ut=un.toString(),ct=cn.toString(),vr=()=>{let e=[],r=[],t=!0,n=!1,a=0,s=(u,g,S)=>{for(S=0;S<a;S++)r[S]&&r[S][g](u)},i=(u,g,S,d)=>{for(g=0,S=e.length;g<S;g++)d=e[g],!t&&g===S-1?u[n?"return":"throw"](d):u.next(d)},l=(u,g)=>(t&&(g=a++,r[g]=u),i(u),()=>{t&&(r[g]=r[a],r[a--]=void 0)});return{__SEROVAL_STREAM__:!0,on:u=>l(u),next:u=>{t&&(e.push(u),s(u,"next"))},throw:u=>{t&&(e.push(u),s(u,"throw"),t=!1,n=!1,r.length=0)},return:u=>{t&&(e.push(u),s(u,"return"),t=!1,n=!0,r.length=0)}}},ft=vr.toString(),br=e=>r=>()=>{let t=0,n={[e]:()=>n,next:()=>{if(t>r.d)return{done:!0,value:void 0};let a=t++,s=r.v[a];if(a===r.t)throw s;return{done:a===r.d,value:s}}};return n},St=br.toString(),Ar=(e,r)=>t=>()=>{let n=0,a=-1,s=!1,i=[],l=[],u=(S=0,d=l.length)=>{for(;S<d;S++)l[S].s({done:!0,value:void 0})};t.on({next:S=>{let d=l.shift();d&&d.s({done:!1,value:S}),i.push(S)},throw:S=>{let d=l.shift();d&&d.f(S),u(),a=i.length,s=!0,i.push(S)},return:S=>{let d=l.shift();d&&d.s({done:!0,value:S}),u(),a=i.length,i.push(S)}});let g={[e]:()=>g,next:()=>{if(a===-1){let W=n++;if(W>=i.length){let Gr=r();return l.push(Gr),Gr.p}return{done:!1,value:i[W]}}if(n>a)return{done:!0,value:void 0};let S=n++,d=i[S];if(S!==a)return{done:!1,value:d};if(s)throw d;return{done:!0,value:d}}};return g},pt=Ar.toString(),Rr=(e,r)=>{let t=atob(r),n=new Uint8Array(e);for(let a=0;a<e;a++)n[a]=t.charCodeAt(a);return n.buffer},dt=Rr.toString();var mt={},gt={};var yt={0:{},1:{},2:{},3:{},4:{},5:{}},Nt={0:"[]",1:lt,2:ut,3:ct,4:ft,5:dt};function Ke(e){return"__SEROVAL_STREAM__"in e}function Q(){return vr()}function Ge(e){let r=Q(),t=e[b]();async function n(){try{let a=await t.next();a.done?r.return(a.value):(r.next(a.value),await n())}catch(a){r.throw(a)}}return n().catch(()=>{}),r}var fn=Ar(b,X);function Ct(e){return fn(e)}function Ze(e){let r=[],t=-1,n=-1,a=e[A]();for(;;)try{let s=a.next();if(r.push(s.value),s.done){n=r.length-1;break}}catch(s){t=r.length,r.push(s)}return{v:r,t,d:n}}var Sn=br(A);function vt(e){return Sn(e)}async function Ir(e){try{return[1,await e]}catch(r){return[0,r]}}function ce(e,r){return{plugins:r.plugins,mode:e,marked:new Set,features:31^(r.disabledFeatures||0),refs:r.refs||new Map}}function fe(e,r){e.marked.add(r)}function Er(e,r){let t=e.refs.size;return e.refs.set(r,t),t}function Je(e,r){let t=e.refs.get(r);return t!=null?(fe(e,t),{type:1,value:at(t)}):{type:0,value:Er(e,r)}}function U(e,r){let t=Je(e,r);return t.type===1?t:Nr(r)?{type:2,value:it(t.value,r)}:t}function I(e,r){let t=U(e,r);if(t.type!==0)return t.value;if(r in ge)return st(t.value,r);throw new E(r)}function w(e,r){let t=Je(e,yt[r]);return t.type===1?t.value:c(26,t.value,r,o,o,o,o,o,o,o,o,o)}function He(e){let r=Je(e,mt);return r.type===1?r.value:c(27,r.value,o,o,o,o,o,o,o,I(e,A),o,o)}function $e(e){let r=Je(e,gt);return r.type===1?r.value:c(29,r.value,o,o,o,o,o,o,[w(e,1),I(e,b)],o,o,o)}function qe(e,r,t,n){return c(t?11:10,e,o,o,o,o,n,o,o,o,o,Ie(r))}function Xe(e,r,t,n,a){return c(8,r,o,o,o,o,o,{k:t,v:n,s:a},o,w(e,0),o,o)}function At(e,r,t){return c(22,r,t,o,o,o,o,o,o,w(e,1),o,o)}function Qe(e,r,t){let n=new Uint8Array(t),a=n.length,s="";for(let i=0;i<a;i++)s+=String.fromCharCode(n[i]);return c(19,r,y(btoa(s)),a,o,o,o,o,o,w(e,5),o,o)}function ee(e,r){return{base:ce(e,r),child:void 0}}var xr=class{constructor(r){this._p=r}parse(r){return N(this._p,r)}};async function mn(e,r){let t=[];for(let n=0,a=r.length;n<a;n++)n in r&&(t[n]=await N(e,r[n]));return t}async function gn(e,r,t){return Oe(r,t,await mn(e,t))}async function Tr(e,r){let t=Object.entries(r),n=[],a=[];for(let s=0,i=t.length;s<i;s++)n.push(y(t[s][0])),a.push(await N(e,t[s][1]));return A in r&&(n.push(I(e.base,A)),a.push(Be(He(e.base),await N(e,Ze(r))))),b in r&&(n.push(I(e.base,b)),a.push(Ve($e(e.base),await N(e,Ge(r))))),x in r&&(n.push(I(e.base,x)),a.push($(r[x]))),P in r&&(n.push(I(e.base,P)),a.push(r[P]?Z:J)),{k:n,v:a,s:n.length}}async function Pr(e,r,t,n){return qe(r,t,n,await Tr(e,t))}async function yn(e,r,t){return he(r,await N(e,t.valueOf()))}async function Nn(e,r,t){return we(r,t,await N(e,t.buffer))}async function Cn(e,r,t){return ze(r,t,await N(e,t.buffer))}async function vn(e,r,t){return ke(r,t,await N(e,t.buffer))}async function Rt(e,r,t){let n=H(t,e.base.features);return _e(r,t,n?await Tr(e,n):o)}async function bn(e,r,t){let n=H(t,e.base.features);return De(r,t,n?await Tr(e,n):o)}async function An(e,r,t){let n=[],a=[];for(let[s,i]of t.entries())n.push(await N(e,s)),a.push(await N(e,i));return Xe(e.base,r,n,a,t.size)}async function Rn(e,r,t){let n=[];for(let a of t.keys())n.push(await N(e,a));return Fe(r,t.size,n)}async function It(e,r,t){let n=e.base.plugins;if(n)for(let a=0,s=n.length;a<s;a++){let i=n[a];if(i.parse.async&&i.test(t))return e.child==null&&(e.child=new xr(e)),le(r,i.tag,await i.parse.async(t,e.child,{id:r}))}return o}async function In(e,r,t){let[n,a]=await Ir(t);return c(12,r,n,o,o,o,o,o,o,await N(e,a),o,o)}function En(e,r,t,n){let a=[],s=r.on({next:i=>{fe(this.base,e),N(this,i).then(l=>{a.push(je(e,l))},l=>{n(l),s()})},throw:i=>{fe(this.base,e),N(this,i).then(l=>{a.push(Ue(e,l)),t(a),s()},l=>{n(l),s()})},return:i=>{fe(this.base,e),N(this,i).then(l=>{a.push(Le(e,l)),t(a),s()},l=>{n(l),s()})}})}async function Pn(e,r,t){return Me(r,w(e.base,4),await new Promise(En.bind(e,r,t)))}async function xn(e,r,t){if(Array.isArray(t))return gn(e,r,t);if(Ke(t))return Pn(e,r,t);let n=t.constructor;if(n===j)return N(e,t.replacement);let a=await It(e,r,t);if(a)return a;switch(n){case Object:return Pr(e,r,t,!1);case o:return Pr(e,r,t,!0);case Date:return xe(r,t);case RegExp:return Te(r,t);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return Rt(e,r,t);case Number:case Boolean:case String:case BigInt:return yn(e,r,t);case ArrayBuffer:return Qe(e.base,r,t);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return Nn(e,r,t);case DataView:return vn(e,r,t);case Map:return An(e,r,t);case Set:return Rn(e,r,t);default:break}if(n===Promise||t instanceof Promise)return In(e,r,t);let s=e.base.features;if(s&16)switch(n){case BigInt64Array:case BigUint64Array:return Cn(e,r,t);default:break}if(s&1&&typeof AggregateError!="undefined"&&(n===AggregateError||t instanceof AggregateError))return bn(e,r,t);if(t instanceof Error)return Rt(e,r,t);if(A in t||b in t)return Pr(e,r,t,!!n);throw new E(t)}async function Tn(e,r){let t=U(e.base,r);if(t.type!==0)return t.value;let n=await It(e,t.value,r);if(n)return n;throw new E(r)}async function N(e,r){switch(typeof r){case"boolean":return r?Z:J;case"undefined":return Ne;case"string":return $(r);case"number":return Ee(r);case"bigint":return Pe(r);case"object":{if(r){let t=U(e.base,r);return t.type===0?await xn(e,t.value,r):t.value}return Ce}case"symbol":return I(e.base,r);case"function":return Tn(e,r);default:throw new E(r)}}async function re(e,r){try{return await N(e,r)}catch(t){throw t instanceof h?t:new h(t)}}var te=(t=>(t[t.Vanilla=1]="Vanilla",t[t.Cross=2]="Cross",t))(te||{});function _s(e){return e}function Et(e,r){for(let t=0,n=r.length;t<n;t++){let a=r[t];e.has(a)||(e.add(a),a.extends&&Et(e,a.extends))}}function v(e){if(e){let r=new Set;return Et(r,e),[...r]}}function Pt(e){switch(e){case"Int8Array":return Int8Array;case"Int16Array":return Int16Array;case"Int32Array":return Int32Array;case"Uint8Array":return Uint8Array;case"Uint16Array":return Uint16Array;case"Uint32Array":return Uint32Array;case"Uint8ClampedArray":return Uint8ClampedArray;case"Float32Array":return Float32Array;case"Float64Array":return Float64Array;case"BigInt64Array":return BigInt64Array;case"BigUint64Array":return BigUint64Array;default:throw new We(e)}}function xt(e,r){switch(r){case 3:return Object.freeze(e);case 1:return Object.preventExtensions(e);case 2:return Object.seal(e);default:return e}}function Tt(e,r){return{mode:e,plugins:r.plugins,refs:r.refs||new Map}}function Ot(e){return{mode:1,base:Tt(1,e),child:void 0,state:{marked:new Set(e.markedRefs)}}}function ht(e){return{mode:2,base:Tt(2,e),child:void 0}}var Or=class{constructor(r){this._p=r}deserialize(r){return m(this._p,r)}};function On(e,r,t){return e.state.marked.has(r)&&e.base.refs.set(r,t),t}function hn(e,r,t){return e.base.refs.has(r)||e.base.refs.set(r,t),t}function C(e,r,t){return e.mode===1?On(e,r,t):hn(e,r,t)}function wn(e,r){return C(e,r.i,nt(z(r.s)))}function zn(e,r){let t=r.l,n=C(e,r.i,new Array(t)),a;for(let s=0;s<t;s++)a=r.a[s],a&&(n[s]=m(e,a));return xt(n,r.o),n}function wt(e,r,t){let n=r.s;if(n){let a=r.k,s=r.v;for(let i=0,l;i<n;i++)l=a[i],typeof l=="string"?t[z(l)]=m(e,s[i]):t[m(e,l)]=m(e,s[i])}return t}function kn(e,r){let t=C(e,r.i,r.t===10?{}:Object.create(null));return wt(e,r.p,t),xt(t,r.o),t}function _n(e,r){return C(e,r.i,new Date(r.s))}function Dn(e,r){return C(e,r.i,new RegExp(z(r.c),r.m))}function Fn(e,r){let t=C(e,r.i,new Set),n=r.a;for(let a=0,s=r.l;a<s;a++)t.add(m(e,n[a]));return t}function Bn(e,r){let t=C(e,r.i,new Map),n=r.e.k,a=r.e.v;for(let s=0,i=r.e.s;s<i;s++)t.set(m(e,n[s]),m(e,a[s]));return t}function Vn(e,r){return C(e,r.i,Rr(r.l,z(r.s)))}function Mn(e,r){let t=Pt(r.c),n=m(e,r.f);return C(e,r.i,new t(n,r.b,r.l))}function jn(e,r){let t=m(e,r.f);return C(e,r.i,new DataView(t,r.b,r.l))}function zt(e,r,t){if(r.p){let n=wt(e,r.p,{});Object.assign(t,n)}return t}function Un(e,r){let t=C(e,r.i,new AggregateError([],z(r.m)));return zt(e,r,t)}function Ln(e,r){let t=qr[r.s],n=C(e,r.i,new t(z(r.m)));return zt(e,r,n)}function Yn(e,r){let t=X(),n=C(e,r.i,t.p),a=m(e,r.f);return r.s?t.s(a):t.f(a),n}function Wn(e,r){return C(e,r.i,Object(m(e,r.f)))}function Kn(e,r){let t=e.base.plugins;if(t){let n=z(r.c);for(let a=0,s=t.length;a<s;a++){let i=t[a];if(i.tag===n)return e.child==null&&(e.child=new Or(e)),C(e,r.i,i.deserialize(r.s,e.child,{id:r.i}))}}throw new q(r.c)}function Gn(e,r){return C(e,r.i,C(e,r.s,X()).p)}function Zn(e,r){let t=e.base.refs.get(r.i);if(t){t.s(m(e,r.a[1]));return}throw new D("Promise")}function Jn(e,r){let t=e.base.refs.get(r.i);if(t){t.f(m(e,r.a[1]));return}throw new D("Promise")}function Hn(e,r){m(e,r.a[0]);let t=m(e,r.a[1]);return vt(t)}function $n(e,r){m(e,r.a[0]);let t=m(e,r.a[1]);return Ct(t)}function qn(e,r){let t=C(e,r.i,Q()),n=r.a.length;if(n)for(let a=0;a<n;a++)m(e,r.a[a]);return t}function Xn(e,r){let t=e.base.refs.get(r.i);if(t){t.next(m(e,r.f));return}throw new D("Stream")}function Qn(e,r){let t=e.base.refs.get(r.i);if(t){t.throw(m(e,r.f));return}throw new D("Stream")}function eo(e,r){let t=e.base.refs.get(r.i);if(t){t.return(m(e,r.f));return}throw new D("Stream")}function ro(e,r){m(e,r.f)}function to(e,r){m(e,r.a[1])}function m(e,r){switch(r.t){case 2:return $r[r.s];case 0:return r.s;case 1:return z(r.s);case 3:return BigInt(r.s);case 4:return e.base.refs.get(r.i);case 18:return wn(e,r);case 9:return zn(e,r);case 10:case 11:return kn(e,r);case 5:return _n(e,r);case 6:return Dn(e,r);case 7:return Fn(e,r);case 8:return Bn(e,r);case 19:return Vn(e,r);case 16:case 15:return Mn(e,r);case 20:return jn(e,r);case 14:return Un(e,r);case 13:return Ln(e,r);case 12:return Yn(e,r);case 17:return Jr[r.s];case 21:return Wn(e,r);case 25:return Kn(e,r);case 22:return Gn(e,r);case 23:return Zn(e,r);case 24:return Jn(e,r);case 28:return Hn(e,r);case 30:return $n(e,r);case 31:return qn(e,r);case 32:return Xn(e,r);case 33:return Qn(e,r);case 34:return eo(e,r);case 27:return ro(e,r);case 29:return to(e,r);default:throw new k(r)}}function er(e,r){try{return m(e,r)}catch(t){throw new Ye(t)}}var no=()=>T,oo=no.toString(),kt=/=>/.test(oo);function rr(e,r){return kt?(e.length===1?e[0]:"("+e.join(",")+")")+"=>"+(r.startsWith("{")?"("+r+")":r):"function("+e.join(",")+"){return "+r+"}"}function _t(e,r){return kt?(e.length===1?e[0]:"("+e.join(",")+")")+"=>{"+r+"}":"function("+e.join(",")+"){"+r+"}"}var Bt="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",Dt=Bt.length,Vt="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",Ft=Vt.length;function hr(e){let r=e%Dt,t=Bt[r];for(e=(e-r)/Dt;e>0;)r=e%Ft,t+=Vt[r],e=(e-r)/Ft;return t}var ao=/^[$A-Z_][0-9A-Z_$]*$/i;function wr(e){let r=e[0];return(r==="$"||r==="_"||r>="A"&&r<="Z"||r>="a"&&r<="z")&&ao.test(e)}function pe(e){switch(e.t){case 0:return e.s+"="+e.v;case 2:return e.s+".set("+e.k+","+e.v+")";case 1:return e.s+".add("+e.v+")";case 3:return e.s+".delete("+e.k+")"}}function so(e){let r=[],t=e[0];for(let n=1,a=e.length,s,i=t;n<a;n++)s=e[n],s.t===0&&s.v===i.v?t={t:0,s:s.s,k:o,v:pe(t)}:s.t===2&&s.s===i.s?t={t:2,s:pe(t),k:s.k,v:s.v}:s.t===1&&s.s===i.s?t={t:1,s:pe(t),k:o,v:s.v}:s.t===3&&s.s===i.s?t={t:3,s:pe(t),k:s.k,v:o}:(r.push(t),t=s),i=s;return r.push(t),r}function Wt(e){if(e.length){let r="",t=so(e);for(let n=0,a=t.length;n<a;n++)r+=pe(t[n])+",";return r}return o}var io="Object.create(null)",lo="new Set",uo="new Map",co="Promise.resolve",fo="Promise.reject",So={3:"Object.freeze",2:"Object.seal",1:"Object.preventExtensions",0:o};function Kt(e,r){return{mode:e,plugins:r.plugins,features:r.features,marked:new Set(r.markedRefs),stack:[],flags:[],assignments:[]}}function po(){return{valid:new Map,vars:[]}}function tr(e){return{mode:1,base:Kt(1,e),state:po(),child:void 0}}function nr(e){return{mode:2,base:Kt(2,e),state:e,child:void 0}}var zr=class{constructor(r){this._p=r}serialize(r){return f(this._p,r)}};function mo(e,r){let t=e.valid.get(r);t==null&&(t=e.valid.size,e.valid.set(r,t));let n=e.vars[t];return n==null&&(n=hr(t),e.vars[t]=n),n}function go(e){return ie+"["+e+"]"}function p(e,r){return e.mode===1?mo(e.state,r):go(r)}function O(e,r){e.marked.add(r)}function kr(e,r){return e.marked.has(r)}function Dr(e,r,t){r!==0&&(O(e.base,t),e.base.flags.push({type:r,value:p(e,t)}))}function yo(e){let r="";for(let t=0,n=e.flags,a=n.length;t<a;t++){let s=n[t];r+=So[s.type]+"("+s.value+"),"}return r}function Gt(e){let r=Wt(e.assignments),t=yo(e);return r?t?r+t:r:t}function Zt(e,r,t){e.assignments.push({t:0,s:r,k:o,v:t})}function No(e,r,t){e.base.assignments.push({t:1,s:p(e,r),k:o,v:t})}function Se(e,r,t,n){e.base.assignments.push({t:2,s:p(e,r),k:t,v:n})}function Mt(e,r,t){e.base.assignments.push({t:3,s:p(e,r),k:t,v:o})}function de(e,r,t,n){Zt(e.base,p(e,r)+"["+t+"]",n)}function _r(e,r,t,n){Zt(e.base,p(e,r)+"."+t,n)}function F(e,r){return r.t===4&&e.stack.includes(r.i)}function ne(e,r,t){return e.mode===1&&!kr(e.base,r)?t:p(e,r)+"="+t}function Co(e){return B+'.get("'+e.s+'")'}function jt(e,r,t,n){return t?F(e.base,t)?(O(e.base,r),de(e,r,n,p(e,t.i)),""):f(e,t):""}function vo(e,r){let t=r.i;if(r.l){e.base.stack.push(t);let n=r.a,a=jt(e,t,n[0],0),s=a==="";for(let i=1,l=r.l,u;i<l;i++)u=jt(e,t,n[i],i),a+=","+u,s=u==="";return e.base.stack.pop(),Dr(e,r.o,r.i),"["+a+(s?",]":"]")}return"[]"}function Ut(e,r,t,n){if(typeof t=="string"){let a=Number(t),s=a>=0&&a.toString()===t||wr(t);if(F(e.base,n)){let i=p(e,n.i);return O(e.base,r.i),s&&a!==a?_r(e,r.i,t,i):de(e,r.i,s?t:'"'+t+'"',i),""}return(s?t:'"'+t+'"')+":"+f(e,n)}return"["+f(e,t)+"]:"+f(e,n)}function Jt(e,r,t){let n=t.s;if(n){let a=t.k,s=t.v;e.base.stack.push(r.i);let i=Ut(e,r,a[0],s[0]);for(let l=1,u=i;l<n;l++)u=Ut(e,r,a[l],s[l]),i+=(u&&i&&",")+u;return e.base.stack.pop(),"{"+i+"}"}return"{}"}function bo(e,r){return Dr(e,r.o,r.i),Jt(e,r,r.p)}function Ao(e,r,t,n){let a=Jt(e,r,t);return a!=="{}"?"Object.assign("+n+","+a+")":n}function Ro(e,r,t,n,a){let s=e.base,i=f(e,a),l=Number(n),u=l>=0&&l.toString()===n||wr(n);if(F(s,a))u&&l!==l?_r(e,r.i,n,i):de(e,r.i,u?n:'"'+n+'"',i);else{let g=s.assignments;s.assignments=t,u&&l!==l?_r(e,r.i,n,i):de(e,r.i,u?n:'"'+n+'"',i),s.assignments=g}}function Io(e,r,t,n,a){if(typeof n=="string")Ro(e,r,t,n,a);else{let s=e.base,i=s.stack;s.stack=[];let l=f(e,a);s.stack=i;let u=s.assignments;s.assignments=t,de(e,r.i,f(e,n),l),s.assignments=u}}function Eo(e,r,t){let n=t.s;if(n){let a=[],s=t.k,i=t.v;e.base.stack.push(r.i);for(let l=0;l<n;l++)Io(e,r,a,s[l],i[l]);return e.base.stack.pop(),Wt(a)}return o}function Fr(e,r,t){if(r.p){let n=e.base;if(n.features&8)t=Ao(e,r,r.p,t);else{O(n,r.i);let a=Eo(e,r,r.p);if(a)return"("+ne(e,r.i,t)+","+a+p(e,r.i)+")"}}return t}function Po(e,r){return Dr(e,r.o,r.i),Fr(e,r,io)}function xo(e){return'new Date("'+e.s+'")'}function To(e){return"/"+e.c+"/"+e.m}function Lt(e,r,t){let n=e.base;return F(n,t)?(O(n,r),No(e,r,p(e,t.i)),""):f(e,t)}function Oo(e,r){let t=lo,n=r.l,a=r.i;if(n){let s=r.a;e.base.stack.push(a);let i=Lt(e,a,s[0]);for(let l=1,u=i;l<n;l++)u=Lt(e,a,s[l]),i+=(u&&i&&",")+u;e.base.stack.pop(),i&&(t+="(["+i+"])")}return t}function Yt(e,r,t,n,a){let s=e.base;if(F(s,t)){let i=p(e,t.i);if(O(s,r),F(s,n)){let u=p(e,n.i);return Se(e,r,i,u),""}if(n.t!==4&&n.i!=null&&kr(s,n.i)){let u="("+f(e,n)+",["+a+","+a+"])";return Se(e,r,i,p(e,n.i)),Mt(e,r,a),u}let l=s.stack;return s.stack=[],Se(e,r,i,f(e,n)),s.stack=l,""}if(F(s,n)){let i=p(e,n.i);if(O(s,r),t.t!==4&&t.i!=null&&kr(s,t.i)){let u="("+f(e,t)+",["+a+","+a+"])";return Se(e,r,p(e,t.i),i),Mt(e,r,a),u}let l=s.stack;return s.stack=[],Se(e,r,f(e,t),i),s.stack=l,""}return"["+f(e,t)+","+f(e,n)+"]"}function ho(e,r){let t=uo,n=r.e.s,a=r.i,s=r.f,i=p(e,s.i),l=e.base;if(n){let u=r.e.k,g=r.e.v;l.stack.push(a);let S=Yt(e,a,u[0],g[0],i);for(let d=1,W=S;d<n;d++)W=Yt(e,a,u[d],g[d],i),S+=(W&&S&&",")+W;l.stack.pop(),S&&(t+="(["+S+"])")}return s.t===26&&(O(l,s.i),t="("+f(e,s)+","+t+")"),t}function wo(e,r){return L(e,r.f)+"("+r.l+',"'+r.s+'")'}function zo(e,r){return"new "+r.c+"("+f(e,r.f)+","+r.b+","+r.l+")"}function ko(e,r){return"new DataView("+f(e,r.f)+","+r.b+","+r.l+")"}function _o(e,r){let t=r.i;e.base.stack.push(t);let n=Fr(e,r,'new AggregateError([],"'+r.m+'")');return e.base.stack.pop(),n}function Do(e,r){return Fr(e,r,"new "+ye[r.s]+'("'+r.m+'")')}function Fo(e,r){let t,n=r.f,a=r.i,s=r.s?co:fo,i=e.base;if(F(i,n)){let l=p(e,n.i);t=s+(r.s?"().then("+rr([],l)+")":"().catch("+_t([],"throw "+l)+")")}else{i.stack.push(a);let l=f(e,n);i.stack.pop(),t=s+"("+l+")"}return t}function Bo(e,r){return"Object("+f(e,r.f)+")"}function L(e,r){let t=f(e,r);return r.t===4?t:"("+t+")"}function Vo(e,r){if(e.mode===1)throw new k(r);return"("+ne(e,r.s,L(e,r.f)+"()")+").p"}function Mo(e,r){if(e.mode===1)throw new k(r);return L(e,r.a[0])+"("+p(e,r.i)+","+f(e,r.a[1])+")"}function jo(e,r){if(e.mode===1)throw new k(r);return L(e,r.a[0])+"("+p(e,r.i)+","+f(e,r.a[1])+")"}function Uo(e,r){let t=e.base.plugins;if(t)for(let n=0,a=t.length;n<a;n++){let s=t[n];if(s.tag===r.c)return e.child==null&&(e.child=new zr(e)),s.serialize(r.s,e.child,{id:r.i})}throw new q(r.c)}function Lo(e,r){let t="",n=!1;return r.f.t!==4&&(O(e.base,r.f.i),t="("+f(e,r.f)+",",n=!0),t+=ne(e,r.i,"("+St+")("+p(e,r.f.i)+")"),n&&(t+=")"),t}function Yo(e,r){return L(e,r.a[0])+"("+f(e,r.a[1])+")"}function Wo(e,r){let t=r.a[0],n=r.a[1],a=e.base,s="";t.t!==4&&(O(a,t.i),s+="("+f(e,t)),n.t!==4&&(O(a,n.i),s+=(s?",":"(")+f(e,n)),s&&(s+=",");let i=ne(e,r.i,"("+pt+")("+p(e,n.i)+","+p(e,t.i)+")");return s?s+i+")":i}function Ko(e,r){return L(e,r.a[0])+"("+f(e,r.a[1])+")"}function Go(e,r){let t=ne(e,r.i,L(e,r.f)+"()"),n=r.a.length;if(n){let a=f(e,r.a[0]);for(let s=1;s<n;s++)a+=","+f(e,r.a[s]);return"("+t+","+a+","+p(e,r.i)+")"}return t}function Zo(e,r){return p(e,r.i)+".next("+f(e,r.f)+")"}function Jo(e,r){return p(e,r.i)+".throw("+f(e,r.f)+")"}function Ho(e,r){return p(e,r.i)+".return("+f(e,r.f)+")"}function $o(e,r){switch(r.t){case 17:return Zr[r.s];case 18:return Co(r);case 9:return vo(e,r);case 10:return bo(e,r);case 11:return Po(e,r);case 5:return xo(r);case 6:return To(r);case 7:return Oo(e,r);case 8:return ho(e,r);case 19:return wo(e,r);case 16:case 15:return zo(e,r);case 20:return ko(e,r);case 14:return _o(e,r);case 13:return Do(e,r);case 12:return Fo(e,r);case 21:return Bo(e,r);case 22:return Vo(e,r);case 25:return Uo(e,r);case 26:return Nt[r.s];default:throw new k(r)}}function f(e,r){switch(r.t){case 2:return Hr[r.s];case 0:return""+r.s;case 1:return'"'+r.s+'"';case 3:return r.s+"n";case 4:return p(e,r.i);case 23:return Mo(e,r);case 24:return jo(e,r);case 27:return Lo(e,r);case 28:return Yo(e,r);case 29:return Wo(e,r);case 30:return Ko(e,r);case 31:return Go(e,r);case 32:return Zo(e,r);case 33:return Jo(e,r);case 34:return Ho(e,r);default:return ne(e,r.i,$o(e,r))}}function or(e,r){let t=f(e,r);if(r.i!=null&&e.state.vars.length){let n=Gt(e.base),a=t;if(n){let s=p(e,r.i);a=t+","+n+s,t.startsWith(s+"=")||(a=s+"="+a),a="("+a+")"}return"("+rr(e.state.vars,a)+")()"}return r.t===10?"("+t+")":t}function ar(e,r){let t=f(e,r),n=r.i;if(n==null)return t;let a=Gt(e.base),s=p(e,n),i=e.state.scopeId,l=i==null?"":ie,u=a?"("+t+","+a+s+")":t;if(l==="")return r.t===10&&!a?"("+u+")":u;let g=i==null?"()":"("+ie+'["'+y(i)+'"])';return"("+rr([l],u)+")"+g}function ae(e,r){return{type:1,base:ce(e,r),child:void 0}}var Vr=class{constructor(r){this._p=r}parse(r){return R(this._p,r)}},Mr=class{constructor(r){this._p=r}parse(r){return R(this._p,r)}parseWithError(r){return Y(this._p,r)}isAlive(){return this._p.state.alive}pushPendingState(){Wr(this._p)}popPendingState(){me(this._p)}onParse(r){oe(this._p,r)}onError(r){Lr(this._p,r)}};function qo(e){return{alive:!0,pending:0,initial:!0,buffer:[],onParse:e.onParse,onError:e.onError,onDone:e.onDone}}function jr(e){return{type:2,base:ce(2,e),child:void 0,state:qo(e)}}function Xo(e,r){let t=[];for(let n=0,a=r.length;n<a;n++)n in r&&(t[n]=R(e,r[n]));return t}function Qo(e,r,t){return Oe(r,t,Xo(e,t))}function Ur(e,r){let t=Object.entries(r),n=[],a=[];for(let s=0,i=t.length;s<i;s++)n.push(y(t[s][0])),a.push(R(e,t[s][1]));return A in r&&(n.push(I(e.base,A)),a.push(Be(He(e.base),R(e,Ze(r))))),b in r&&(n.push(I(e.base,b)),a.push(Ve($e(e.base),R(e,e.type===1?Q():Ge(r))))),x in r&&(n.push(I(e.base,x)),a.push($(r[x]))),P in r&&(n.push(I(e.base,P)),a.push(r[P]?Z:J)),{k:n,v:a,s:n.length}}function Br(e,r,t,n){return qe(r,t,n,Ur(e,t))}function ea(e,r,t){return he(r,R(e,t.valueOf()))}function ra(e,r,t){return we(r,t,R(e,t.buffer))}function ta(e,r,t){return ze(r,t,R(e,t.buffer))}function na(e,r,t){return ke(r,t,R(e,t.buffer))}function Ht(e,r,t){let n=H(t,e.base.features);return _e(r,t,n?Ur(e,n):o)}function oa(e,r,t){let n=H(t,e.base.features);return De(r,t,n?Ur(e,n):o)}function aa(e,r,t){let n=[],a=[];for(let[s,i]of t.entries())n.push(R(e,s)),a.push(R(e,i));return Xe(e.base,r,n,a,t.size)}function sa(e,r,t){let n=[];for(let a of t.keys())n.push(R(e,a));return Fe(r,t.size,n)}function ia(e,r,t){let n=Me(r,w(e.base,4),[]);return e.type===1||(Wr(e),t.on({next:a=>{if(e.state.alive){let s=Y(e,a);s&&oe(e,je(r,s))}},throw:a=>{if(e.state.alive){let s=Y(e,a);s&&oe(e,Ue(r,s))}me(e)},return:a=>{if(e.state.alive){let s=Y(e,a);s&&oe(e,Le(r,s))}me(e)}})),n}function la(e,r){if(this.state.alive){let t=Y(this,r);t&&oe(this,c(23,e,o,o,o,o,o,o,[w(this.base,2),t],o,o,o)),me(this)}}function ua(e,r){if(this.state.alive){let t=Y(this,r);t&&oe(this,c(24,e,o,o,o,o,o,o,[w(this.base,3),t],o,o,o))}me(this)}function ca(e,r,t){let n=Er(e.base,{});return e.type===2&&(Wr(e),t.then(la.bind(e,n),ua.bind(e,n))),At(e.base,r,n)}function fa(e,r,t,n){for(let a=0,s=n.length;a<s;a++){let i=n[a];if(i.parse.sync&&i.test(t))return e.child==null&&(e.child=new Vr(e)),le(r,i.tag,i.parse.sync(t,e.child,{id:r}))}}function Sa(e,r,t,n){for(let a=0,s=n.length;a<s;a++){let i=n[a];if(i.parse.stream&&i.test(t))return e.child==null&&(e.child=new Mr(e)),le(r,i.tag,i.parse.stream(t,e.child,{id:r}))}}function $t(e,r,t){let n=e.base.plugins;if(n)return e.type===1?fa(e,r,t,n):Sa(e,r,t,n)}function pa(e,r,t,n){switch(n){case Object:return Br(e,r,t,!1);case void 0:return Br(e,r,t,!0);case Date:return xe(r,t);case RegExp:return Te(r,t);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return Ht(e,r,t);case Number:case Boolean:case String:case BigInt:return ea(e,r,t);case ArrayBuffer:return Qe(e.base,r,t);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return ra(e,r,t);case DataView:return na(e,r,t);case Map:return aa(e,r,t);case Set:return sa(e,r,t);default:break}if(n===Promise||t instanceof Promise)return ca(e,r,t);let a=e.base.features;if(a&16)switch(n){case BigInt64Array:case BigUint64Array:return ta(e,r,t);default:break}if(a&1&&typeof AggregateError!="undefined"&&(n===AggregateError||t instanceof AggregateError))return oa(e,r,t);if(t instanceof Error)return Ht(e,r,t);if(A in t||b in t)return Br(e,r,t,!!n);throw new E(t)}function da(e,r,t){if(Array.isArray(t))return Qo(e,r,t);if(Ke(t))return ia(e,r,t);let n=t.constructor;if(n===j)return R(e,t.replacement);let a=$t(e,r,t);return a||pa(e,r,t,n)}function ma(e,r){let t=U(e.base,r);if(t.type!==0)return t.value;let n=$t(e,t.value,r);if(n)return n;throw new E(r)}function R(e,r){switch(typeof r){case"boolean":return r?Z:J;case"undefined":return Ne;case"string":return $(r);case"number":return Ee(r);case"bigint":return Pe(r);case"object":{if(r){let t=U(e.base,r);return t.type===0?da(e,t.value,r):t.value}return Ce}case"symbol":return I(e.base,r);case"function":return ma(e,r);default:throw new E(r)}}function se(e,r){try{return R(e,r)}catch(t){throw t instanceof h?t:new h(t)}}function oe(e,r){e.state.initial?e.state.buffer.push(r):Yr(e,r,!1)}function Lr(e,r){if(e.state.onError)e.state.onError(r);else throw r instanceof h?r:new h(r)}function qt(e){e.state.onDone&&e.state.onDone()}function Yr(e,r,t){try{e.state.onParse(r,t)}catch(n){Lr(e,n)}}function Wr(e){e.state.pending++}function me(e){--e.state.pending<=0&&qt(e)}function Y(e,r){try{return R(e,r)}catch(t){return Lr(e,t),o}}function Kr(e,r){let t=Y(e,r);t&&(Yr(e,t,!0),e.state.initial=!1,ga(e,e.state),e.state.pending<=0&&sr(e))}function ga(e,r){for(let t=0,n=r.buffer.length;t<n;t++)Yr(e,r.buffer[t],!1)}function sr(e){e.state.alive&&(qt(e),e.state.alive=!1)}function hi(e,r={}){let t=v(r.plugins),n=ae(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs}),a=se(n,e),s=nr({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked});return ar(s,a)}async function wi(e,r={}){let t=v(r.plugins),n=ee(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs}),a=await re(n,e),s=nr({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked});return ar(s,a)}function zi(e,r={}){let t=v(r.plugins),n=ae(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs});return se(n,e)}async function ki(e,r={}){let t=v(r.plugins),n=ee(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs});return await re(n,e)}function Xt(e,r){let t=v(r.plugins),n=jr({plugins:t,refs:r.refs,disabledFeatures:r.disabledFeatures,onParse(a,s){let i=nr({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked}),l;try{l=ar(i,a)}catch(u){r.onError&&r.onError(u);return}r.onSerialize(l,s)},onError:r.onError,onDone:r.onDone});return Kr(n,e),sr.bind(null,n)}function _i(e,r){let t=v(r.plugins),n=jr({plugins:t,refs:r.refs,disabledFeatures:r.disabledFeatures,onParse:r.onParse,onError:r.onError,onDone:r.onDone});return Kr(n,e),sr.bind(null,n)}function Di(e,r){let t=v(r.plugins),n=ht({plugins:t,refs:r.refs});return er(n,e)}var ir=class{constructor(r){this.options=r;this.alive=!0;this.flushed=!1;this.done=!1;this.pending=0;this.cleanups=[];this.refs=new Map;this.keys=new Set;this.ids=0;this.plugins=v(r.plugins)}write(r,t){this.alive&&!this.flushed&&(this.pending++,this.keys.add(r),this.cleanups.push(Xt(t,{plugins:this.plugins,scopeId:this.options.scopeId,refs:this.refs,disabledFeatures:this.options.disabledFeatures,onError:this.options.onError,onSerialize:(n,a)=>{this.alive&&this.options.onData(a?this.options.globalIdentifier+'["'+y(r)+'"]='+n:n)},onDone:()=>{this.alive&&(this.pending--,this.pending<=0&&this.flushed&&!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0))}})))}getNextID(){for(;this.keys.has(""+this.ids);)this.ids++;return""+this.ids}push(r){let t=this.getNextID();return this.write(t,r),t}flush(){this.alive&&(this.flushed=!0,this.pending<=0&&!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0))}close(){if(this.alive){for(let r=0,t=this.cleanups.length;r<t;r++)this.cleanups[r]();!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0),this.alive=!1}}};function Gi(e,r={}){let t=v(r.plugins),n=ae(1,{plugins:t,disabledFeatures:r.disabledFeatures}),a=se(n,e),s=tr({plugins:t,features:n.base.features,markedRefs:n.base.marked});return or(s,a)}async function Zi(e,r={}){let t=v(r.plugins),n=ee(1,{plugins:t,disabledFeatures:r.disabledFeatures}),a=await re(n,e),s=tr({plugins:t,features:n.base.features,markedRefs:n.base.marked});return or(s,a)}function Ji(e){return(0,eval)(e)}function Hi(e,r={}){let t=v(r.plugins),n=ae(1,{plugins:t,disabledFeatures:r.disabledFeatures});return{t:se(n,e),f:n.base.features,m:Array.from(n.base.marked)}}async function $i(e,r={}){let t=v(r.plugins),n=ee(1,{plugins:t,disabledFeatures:r.disabledFeatures});return{t:await re(n,e),f:n.base.features,m:Array.from(n.base.marked)}}function qi(e,r={}){let t=v(r.plugins),n=tr({plugins:t,features:e.f,markedRefs:e.m});return or(n,e.t)}function Xi(e,r={}){let t=v(r.plugins),n=Ot({plugins:t,markedRefs:e.m});return er(n,e.t)}export{K as Feature,j as OpaqueReference,ir as Serializer,Ye as SerovalDeserializationError,ue as SerovalError,D as SerovalMissingInstanceError,q as SerovalMissingPluginError,be as SerovalMissingReferenceError,Ae as SerovalMissingReferenceForIdError,te as SerovalMode,h as SerovalParserError,Cr as SerovalSerializationError,We as SerovalUnknownTypedArrayError,k as SerovalUnsupportedNodeError,E as SerovalUnsupportedTypeError,qi as compileJSON,_s as createPlugin,tn as createReference,Q as createStream,hi as crossSerialize,wi as crossSerializeAsync,Xt as crossSerializeStream,Ji as deserialize,Di as fromCrossJSON,Xi as fromJSON,rn as getCrossReferenceHeader,v as resolvePlugins,Gi as serialize,Zi as serializeAsync,zi as toCrossJSON,ki as toCrossJSONAsync,_i as toCrossJSONStream,Hi as toJSON,$i as toJSONAsync};
var L=(i=>(i[i.AggregateError=1]="AggregateError",i[i.ArrowFunction=2]="ArrowFunction",i[i.ErrorPrototypeStack=4]="ErrorPrototypeStack",i[i.ObjectAssign=8]="ObjectAssign",i[i.BigIntTypedArray=16]="BigIntTypedArray",i[i.RegExp=32]="RegExp",i))(L||{});var N=Symbol.asyncIterator,fr=Symbol.hasInstance,I=Symbol.isConcatSpreadable,b=Symbol.iterator,Sr=Symbol.match,mr=Symbol.matchAll,pr=Symbol.replace,dr=Symbol.search,gr=Symbol.species,yr=Symbol.split,Nr=Symbol.toPrimitive,P=Symbol.toStringTag,br=Symbol.unscopables;var qr={0:"Symbol.asyncIterator",1:"Symbol.hasInstance",2:"Symbol.isConcatSpreadable",3:"Symbol.iterator",4:"Symbol.match",5:"Symbol.matchAll",6:"Symbol.replace",7:"Symbol.search",8:"Symbol.species",9:"Symbol.split",10:"Symbol.toPrimitive",11:"Symbol.toStringTag",12:"Symbol.unscopables"},Ce={[N]:0,[fr]:1,[I]:2,[b]:3,[Sr]:4,[mr]:5,[pr]:6,[dr]:7,[gr]:8,[yr]:9,[Nr]:10,[P]:11,[br]:12},Xr={0:N,1:fr,2:I,3:b,4:Sr,5:mr,6:pr,7:dr,8:gr,9:yr,10:Nr,11:P,12:br},Qr={2:"!0",3:"!1",1:"void 0",0:"null",4:"-0",5:"1/0",6:"-1/0",7:"0/0"},o=void 0,et={2:!0,3:!1,1:o,0:null,4:-0,5:Number.POSITIVE_INFINITY,6:Number.NEGATIVE_INFINITY,7:Number.NaN};var ve={0:"Error",1:"EvalError",2:"RangeError",3:"ReferenceError",4:"SyntaxError",5:"TypeError",6:"URIError"},rt={0:Error,1:EvalError,2:RangeError,3:ReferenceError,4:SyntaxError,5:TypeError,6:URIError};function c(e,r,t,n,a,s,i,u,l,d,S){return{t:e,i:r,s:t,c:n,m:a,p:s,e:i,a:u,f:l,b:d,o:S}}function D(e){return c(2,o,e,o,o,o,o,o,o,o,o)}var Z=D(2),$=D(3),Ae=D(1),Re=D(0),tt=D(4),nt=D(5),ot=D(6),at=D(7);function sn(e){switch(e){case'"':return'\\"';case"\\":return"\\\\";case`
`:return"\\n";case"\r":return"\\r";case"\b":return"\\b";case" ":return"\\t";case"\f":return"\\f";case"<":return"\\x3C";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return o}}function y(e){let r="",t=0,n;for(let a=0,s=e.length;a<s;a++)n=sn(e[a]),n&&(r+=e.slice(t,a)+n,t=a+1);return t===0?r=e:r+=e.slice(t),r}function un(e){switch(e){case"\\\\":return"\\";case'\\"':return'"';case"\\n":return`
`;case"\\r":return"\r";case"\\b":return"\b";case"\\t":return" ";case"\\f":return"\f";case"\\x3C":return"<";case"\\u2028":return"\u2028";case"\\u2029":return"\u2029";default:return e}}function F(e){return e.replace(/(\\\\|\\"|\\n|\\r|\\b|\\t|\\f|\\u2028|\\u2029|\\x3C)/g,un)}var U="__SEROVAL_REFS__",ce="$R",Ee=`self.${ce}`;function ln(e){return e==null?`${Ee}=${Ee}||[]`:`(${Ee}=${Ee}||{})["${y(e)}"]=[]`}var Cr=new Map,j=new Map;function cn(e,r){return Cr.set(r,e),j.set(e,r),r}function vr(e){return Cr.has(e)}function fn(e){return j.has(e)}function st(e){if(vr(e))return Cr.get(e);throw new Ie(e)}function it(e){if(fn(e))return j.get(e);throw new Pe(e)}typeof globalThis!="undefined"?Object.defineProperty(globalThis,U,{value:j,configurable:!0,writable:!1,enumerable:!1}):typeof window!="undefined"?Object.defineProperty(window,U,{value:j,configurable:!0,writable:!1,enumerable:!1}):typeof self!="undefined"?Object.defineProperty(self,U,{value:j,configurable:!0,writable:!1,enumerable:!1}):typeof global!="undefined"&&Object.defineProperty(global,U,{value:j,configurable:!0,writable:!1,enumerable:!1});function xe(e){return e instanceof EvalError?1:e instanceof RangeError?2:e instanceof ReferenceError?3:e instanceof SyntaxError?4:e instanceof TypeError?5:e instanceof URIError?6:0}function Sn(e){let r=ve[xe(e)];return e.name!==r?{name:e.name}:e.constructor.name!==r?{name:e.constructor.name}:{}}function q(e,r){let t=Sn(e),n=Object.getOwnPropertyNames(e);for(let a=0,s=n.length,i;a<s;a++)i=n[a],i!=="name"&&i!=="message"&&(i==="stack"?r&4&&(t=t||{},t[i]=e[i]):(t=t||{},t[i]=e[i]));return t}function Te(e){return Object.isFrozen(e)?3:Object.isSealed(e)?2:Object.isExtensible(e)?0:1}function Oe(e){switch(e){case Number.POSITIVE_INFINITY:return nt;case Number.NEGATIVE_INFINITY:return ot}return e!==e?at:Object.is(e,-0)?tt:c(0,o,e,o,o,o,o,o,o,o,o)}function X(e){return c(1,o,y(e),o,o,o,o,o,o,o,o)}function we(e){return c(3,o,""+e,o,o,o,o,o,o,o,o)}function lt(e){return c(4,e,o,o,o,o,o,o,o,o,o)}function he(e,r){let t=r.valueOf();return c(5,e,t!==t?"":r.toISOString(),o,o,o,o,o,o,o,o)}function ze(e,r){return c(6,e,o,y(r.source),r.flags,o,o,o,o,o,o)}function ct(e,r){return c(17,e,Ce[r],o,o,o,o,o,o,o,o)}function ft(e,r){return c(18,e,y(st(r)),o,o,o,o,o,o,o,o)}function fe(e,r,t){return c(25,e,t,y(r),o,o,o,o,o,o,o)}function _e(e,r,t){return c(9,e,o,o,o,o,o,t,o,o,Te(r))}function ke(e,r){return c(21,e,o,o,o,o,o,o,r,o,o)}function De(e,r,t){return c(15,e,o,r.constructor.name,o,o,o,o,t,r.byteOffset,o)}function Fe(e,r,t){return c(16,e,o,r.constructor.name,o,o,o,o,t,r.byteOffset,o)}function Be(e,r,t){return c(20,e,o,o,o,o,o,o,t,r.byteOffset,o)}function Me(e,r,t){return c(13,e,xe(r),o,y(r.message),t,o,o,o,o,o)}function Ve(e,r,t){return c(14,e,xe(r),o,y(r.message),t,o,o,o,o,o)}function Le(e,r){return c(7,e,o,o,o,o,o,r,o,o,o)}function Ue(e,r){return c(28,o,o,o,o,o,o,[e,r],o,o,o)}function je(e,r){return c(30,o,o,o,o,o,o,[e,r],o,o,o)}function Ye(e,r,t){return c(31,e,o,o,o,o,o,t,r,o,o)}function We(e,r){return c(32,e,o,o,o,o,o,o,r,o,o)}function Ge(e,r){return c(33,e,o,o,o,o,o,o,r,o,o)}function Ke(e,r){return c(34,e,o,o,o,o,o,o,r,o,o)}var{toString:us}=Object.prototype;var mn={parsing:1,serialization:2,deserialization:3};function pn(e){return`Seroval Error (step: ${mn[e]})`}var dn=(e,r)=>pn(e),Se=class extends Error{constructor(t,n){super(dn(t,n));this.cause=n}},z=class extends Se{constructor(r){super("parsing",r)}},Ar=class extends Se{constructor(r){super("serialization",r)}},He=class extends Se{constructor(r){super("deserialization",r)}};function _(e){return`Seroval Error (specific: ${e})`}var x=class extends Error{constructor(t){super(_(1));this.value=t}},O=class extends Error{constructor(r){super(_(2))}},Q=class extends Error{constructor(r){super(_(3))}},B=class extends Error{constructor(r){super(_(4))}},Ie=class extends Error{constructor(t){super(_(5));this.value=t}},Pe=class extends Error{constructor(r){super(_(6))}},Je=class extends Error{constructor(r){super(_(7))}},w=class extends Error{constructor(r){super(_(8))}},St=class extends Error{constructor(r){super(_(9))}},ee=class extends Error{constructor(r){super(_(9))}};var Y=class{constructor(r,t){this.value=r;this.replacement=t}};var re=()=>{let e={p:0,s:0,f:0};return e.p=new Promise((r,t)=>{e.s=r,e.f=t}),e},gn=(e,r)=>{e.s(r),e.p.s=1,e.p.v=r},yn=(e,r)=>{e.f(r),e.p.s=2,e.p.v=r},mt=re.toString(),pt=gn.toString(),dt=yn.toString(),Rr=()=>{let e=[],r=[],t=!0,n=!1,a=0,s=(l,d,S)=>{for(S=0;S<a;S++)r[S]&&r[S][d](l)},i=(l,d,S,g)=>{for(d=0,S=e.length;d<S;d++)g=e[d],!t&&d===S-1?l[n?"return":"throw"](g):l.next(g)},u=(l,d)=>(t&&(d=a++,r[d]=l),i(l),()=>{t&&(r[d]=r[a],r[a--]=void 0)});return{__SEROVAL_STREAM__:!0,on:l=>u(l),next:l=>{t&&(e.push(l),s(l,"next"))},throw:l=>{t&&(e.push(l),s(l,"throw"),t=!1,n=!1,r.length=0)},return:l=>{t&&(e.push(l),s(l,"return"),t=!1,n=!0,r.length=0)}}},gt=Rr.toString(),Er=e=>r=>()=>{let t=0,n={[e]:()=>n,next:()=>{if(t>r.d)return{done:!0,value:void 0};let a=t++,s=r.v[a];if(a===r.t)throw s;return{done:a===r.d,value:s}}};return n},yt=Er.toString(),Ir=(e,r)=>t=>()=>{let n=0,a=-1,s=!1,i=[],u=[],l=(S=0,g=u.length)=>{for(;S<g;S++)u[S].s({done:!0,value:void 0})};t.on({next:S=>{let g=u.shift();g&&g.s({done:!1,value:S}),i.push(S)},throw:S=>{let g=u.shift();g&&g.f(S),l(),a=i.length,s=!0,i.push(S)},return:S=>{let g=u.shift();g&&g.s({done:!0,value:S}),l(),a=i.length,i.push(S)}});let d={[e]:()=>d,next:()=>{if(a===-1){let H=n++;if(H>=i.length){let $r=r();return u.push($r),$r.p}return{done:!1,value:i[H]}}if(n>a)return{done:!0,value:void 0};let S=n++,g=i[S];if(S!==a)return{done:!1,value:g};if(s)throw g;return{done:!0,value:g}}};return d},Nt=Ir.toString(),Pr=e=>{let r=atob(e),t=r.length,n=new Uint8Array(t);for(let a=0;a<t;a++)n[a]=r.charCodeAt(a);return n.buffer},bt=Pr.toString();var Ct={},vt={};var At={0:{},1:{},2:{},3:{},4:{},5:{}},Rt={0:"[]",1:mt,2:pt,3:dt,4:gt,5:bt};function M(e){return"__SEROVAL_STREAM__"in e}function te(){return Rr()}function Ze(e){let r=te(),t=e[N]();async function n(){try{let a=await t.next();a.done?r.return(a.value):(r.next(a.value),await n())}catch(a){r.throw(a)}}return n().catch(()=>{}),r}var Nn=Ir(N,re);function Et(e){return Nn(e)}function $e(e){let r=[],t=-1,n=-1,a=e[b]();for(;;)try{let s=a.next();if(r.push(s.value),s.done){n=r.length-1;break}}catch(s){t=r.length,r.push(s)}return{v:r,t,d:n}}var bn=Er(b);function It(e){return bn(e)}async function xr(e){try{return[1,await e]}catch(r){return[0,r]}}function pe(e,r){return{plugins:r.plugins,mode:e,marked:new Set,features:63^(r.disabledFeatures||0),refs:r.refs||new Map,depthLimit:r.depthLimit||1e3}}function de(e,r){e.marked.add(r)}function Tr(e,r){let t=e.refs.size;return e.refs.set(r,t),t}function qe(e,r){let t=e.refs.get(r);return t!=null?(de(e,t),{type:1,value:lt(t)}):{type:0,value:Tr(e,r)}}function W(e,r){let t=qe(e,r);return t.type===1?t:vr(r)?{type:2,value:ft(t.value,r)}:t}function E(e,r){let t=W(e,r);if(t.type!==0)return t.value;if(r in Ce)return ct(t.value,r);throw new x(r)}function k(e,r){let t=qe(e,At[r]);return t.type===1?t.value:c(26,t.value,r,o,o,o,o,o,o,o,o)}function Xe(e){let r=qe(e,Ct);return r.type===1?r.value:c(27,r.value,o,o,o,o,o,o,E(e,b),o,o)}function Qe(e){let r=qe(e,vt);return r.type===1?r.value:c(29,r.value,o,o,o,o,o,[k(e,1),E(e,N)],o,o,o)}function er(e,r,t,n){return c(t?11:10,e,o,o,o,n,o,o,o,o,Te(r))}function rr(e,r,t,n){return c(8,r,o,o,o,o,{k:t,v:n},o,k(e,0),o,o)}function xt(e,r,t){return c(22,r,t,o,o,o,o,o,k(e,1),o,o)}function tr(e,r,t){let n=new Uint8Array(t),a="";for(let s=0,i=n.length;s<i;s++)a+=String.fromCharCode(n[s]);return c(19,r,y(btoa(a)),o,o,o,o,o,k(e,5),o,o)}function ne(e,r){return{base:pe(e,r),child:void 0}}var wr=class{constructor(r,t){this._p=r;this.depth=t}parse(r){return C(this._p,this.depth,r)}};async function vn(e,r,t){let n=[];for(let a=0,s=t.length;a<s;a++)a in t?n[a]=await C(e,r,t[a]):n[a]=0;return n}async function An(e,r,t,n){return _e(t,n,await vn(e,r,n))}async function hr(e,r,t){let n=Object.entries(t),a=[],s=[];for(let i=0,u=n.length;i<u;i++)a.push(y(n[i][0])),s.push(await C(e,r,n[i][1]));return b in t&&(a.push(E(e.base,b)),s.push(Ue(Xe(e.base),await C(e,r,$e(t))))),N in t&&(a.push(E(e.base,N)),s.push(je(Qe(e.base),await C(e,r,Ze(t))))),P in t&&(a.push(E(e.base,P)),s.push(X(t[P]))),I in t&&(a.push(E(e.base,I)),s.push(t[I]?Z:$)),{k:a,v:s}}async function Or(e,r,t,n,a){return er(t,n,a,await hr(e,r,n))}async function Rn(e,r,t,n){return ke(t,await C(e,r,n.valueOf()))}async function En(e,r,t,n){return De(t,n,await C(e,r,n.buffer))}async function In(e,r,t,n){return Fe(t,n,await C(e,r,n.buffer))}async function Pn(e,r,t,n){return Be(t,n,await C(e,r,n.buffer))}async function Tt(e,r,t,n){let a=q(n,e.base.features);return Me(t,n,a?await hr(e,r,a):o)}async function xn(e,r,t,n){let a=q(n,e.base.features);return Ve(t,n,a?await hr(e,r,a):o)}async function Tn(e,r,t,n){let a=[],s=[];for(let[i,u]of n.entries())a.push(await C(e,r,i)),s.push(await C(e,r,u));return rr(e.base,t,a,s)}async function On(e,r,t,n){let a=[];for(let s of n.keys())a.push(await C(e,r,s));return Le(t,a)}async function Ot(e,r,t,n){let a=e.base.plugins;if(a)for(let s=0,i=a.length;s<i;s++){let u=a[s];if(u.parse.async&&u.test(n))return fe(t,u.tag,await u.parse.async(n,new wr(e,r),{id:t}))}return o}async function wn(e,r,t,n){let[a,s]=await xr(n);return c(12,t,a,o,o,o,o,o,await C(e,r,s),o,o)}function hn(e,r,t,n,a){let s=[],i=t.on({next:u=>{de(this.base,r),C(this,e,u).then(l=>{s.push(We(r,l))},l=>{a(l),i()})},throw:u=>{de(this.base,r),C(this,e,u).then(l=>{s.push(Ge(r,l)),n(s),i()},l=>{a(l),i()})},return:u=>{de(this.base,r),C(this,e,u).then(l=>{s.push(Ke(r,l)),n(s),i()},l=>{a(l),i()})}})}async function zn(e,r,t,n){return Ye(t,k(e.base,4),await new Promise(hn.bind(e,r,t,n)))}async function _n(e,r,t,n){if(Array.isArray(n))return An(e,r,t,n);if(M(n))return zn(e,r,t,n);let a=n.constructor;if(a===Y)return C(e,r,n.replacement);let s=await Ot(e,r,t,n);if(s)return s;switch(a){case Object:return Or(e,r,t,n,!1);case o:return Or(e,r,t,n,!0);case Date:return he(t,n);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return Tt(e,r,t,n);case Number:case Boolean:case String:case BigInt:return Rn(e,r,t,n);case ArrayBuffer:return tr(e.base,t,n);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return En(e,r,t,n);case DataView:return Pn(e,r,t,n);case Map:return Tn(e,r,t,n);case Set:return On(e,r,t,n);default:break}if(a===Promise||n instanceof Promise)return wn(e,r,t,n);let i=e.base.features;if(i&32&&a===RegExp)return ze(t,n);if(i&16)switch(a){case BigInt64Array:case BigUint64Array:return In(e,r,t,n);default:break}if(i&1&&typeof AggregateError!="undefined"&&(a===AggregateError||n instanceof AggregateError))return xn(e,r,t,n);if(n instanceof Error)return Tt(e,r,t,n);if(b in n||N in n)return Or(e,r,t,n,!!a);throw new x(n)}async function kn(e,r,t){let n=W(e.base,t);if(n.type!==0)return n.value;let a=await Ot(e,r,n.value,t);if(a)return a;throw new x(t)}async function C(e,r,t){switch(typeof t){case"boolean":return t?Z:$;case"undefined":return Ae;case"string":return X(t);case"number":return Oe(t);case"bigint":return we(t);case"object":{if(t){let n=W(e.base,t);return n.type===0?await _n(e,r+1,n.value,t):n.value}return Re}case"symbol":return E(e.base,t);case"function":return kn(e,r,t);default:throw new x(t)}}async function oe(e,r){try{return await C(e,0,r)}catch(t){throw t instanceof z?t:new z(t)}}var ae=(t=>(t[t.Vanilla=1]="Vanilla",t[t.Cross=2]="Cross",t))(ae||{});function Js(e){return e}function wt(e,r){for(let t=0,n=r.length;t<n;t++){let a=r[t];e.has(a)||(e.add(a),a.extends&&wt(e,a.extends))}}function A(e){if(e){let r=new Set;return wt(r,e),[...r]}}function ht(e){switch(e){case"Int8Array":return Int8Array;case"Int16Array":return Int16Array;case"Int32Array":return Int32Array;case"Uint8Array":return Uint8Array;case"Uint16Array":return Uint16Array;case"Uint32Array":return Uint32Array;case"Uint8ClampedArray":return Uint8ClampedArray;case"Float32Array":return Float32Array;case"Float64Array":return Float64Array;case"BigInt64Array":return BigInt64Array;case"BigUint64Array":return BigUint64Array;default:throw new Je(e)}}var Dn=1e6,Fn=1e4,Bn=2e4;function _t(e,r){switch(r){case 3:return Object.freeze(e);case 1:return Object.preventExtensions(e);case 2:return Object.seal(e);default:return e}}var Mn=1e3;function kt(e,r){var t;return{mode:e,plugins:r.plugins,refs:r.refs||new Map,features:(t=r.features)!=null?t:63^(r.disabledFeatures||0),depthLimit:r.depthLimit||Mn}}function Dt(e){return{mode:1,base:kt(1,e),child:o,state:{marked:new Set(e.markedRefs)}}}function Ft(e){return{mode:2,base:kt(2,e),child:o}}var zr=class{constructor(r,t){this._p=r;this.depth=t}deserialize(r){return p(this._p,this.depth,r)}};function Bt(e,r){if(r<0||!Number.isFinite(r)||!Number.isInteger(r))throw new w({t:4,i:r});if(e.refs.has(r))throw new Error("Conflicted ref id: "+r)}function Vn(e,r,t){return Bt(e.base,r),e.state.marked.has(r)&&e.base.refs.set(r,t),t}function Ln(e,r,t){return Bt(e.base,r),e.base.refs.set(r,t),t}function v(e,r,t){return e.mode===1?Vn(e,r,t):Ln(e,r,t)}function _r(e,r,t){if(Object.hasOwn(r,t))return r[t];throw new w(e)}function Un(e,r){return v(e,r.i,it(F(r.s)))}function jn(e,r,t){let n=t.a,a=n.length,s=v(e,t.i,new Array(a));for(let i=0,u;i<a;i++)u=n[i],u&&(s[i]=p(e,r,u));return _t(s,t.o),s}function Yn(e){switch(e){case"constructor":case"__proto__":case"prototype":case"__defineGetter__":case"__defineSetter__":case"__lookupGetter__":case"__lookupSetter__":return!1;default:return!0}}function Wn(e){switch(e){case N:case I:case P:case b:return!0;default:return!1}}function zt(e,r,t){Yn(r)?e[r]=t:Object.defineProperty(e,r,{value:t,configurable:!0,enumerable:!0,writable:!0})}function Gn(e,r,t,n,a){if(typeof n=="string")zt(t,n,p(e,r,a));else{let s=p(e,r,n);switch(typeof s){case"string":zt(t,s,p(e,r,a));break;case"symbol":Wn(s)&&(t[s]=p(e,r,a));break;default:throw new w(n)}}}function Mt(e,r,t,n){let a=t.k;if(a.length>0)for(let i=0,u=t.v,l=a.length;i<l;i++)Gn(e,r,n,a[i],u[i]);return n}function Kn(e,r,t){let n=v(e,t.i,t.t===10?{}:Object.create(null));return Mt(e,r,t.p,n),_t(n,t.o),n}function Hn(e,r){return v(e,r.i,new Date(r.s))}function Jn(e,r){if(e.base.features&32){let t=F(r.c);if(t.length>Bn)throw new w(r);return v(e,r.i,new RegExp(t,r.m))}throw new O(r)}function Zn(e,r,t){let n=v(e,t.i,new Set);for(let a=0,s=t.a,i=s.length;a<i;a++)n.add(p(e,r,s[a]));return n}function $n(e,r,t){let n=v(e,t.i,new Map);for(let a=0,s=t.e.k,i=t.e.v,u=s.length;a<u;a++)n.set(p(e,r,s[a]),p(e,r,i[a]));return n}function qn(e,r){if(r.s.length>Dn)throw new w(r);return v(e,r.i,Pr(F(r.s)))}function Xn(e,r,t){var u;let n=ht(t.c),a=p(e,r,t.f),s=(u=t.b)!=null?u:0;if(s<0||s>a.byteLength)throw new w(t);return v(e,t.i,new n(a,s))}function Qn(e,r,t){var i;let n=p(e,r,t.f),a=(i=t.b)!=null?i:0;if(a<0||a>n.byteLength)throw new w(t);return v(e,t.i,new DataView(n,a))}function Vt(e,r,t,n){if(t.p){let a=Mt(e,r,t.p,{});Object.defineProperties(n,Object.getOwnPropertyDescriptors(a))}return n}function eo(e,r,t){let n=v(e,t.i,new AggregateError([],F(t.m)));return Vt(e,r,t,n)}function ro(e,r,t){let n=_r(t,rt,t.s),a=v(e,t.i,new n(F(t.m)));return Vt(e,r,t,a)}function to(e,r,t){let n=re(),a=v(e,t.i,n.p),s=p(e,r,t.f);return t.s?n.s(s):n.f(s),a}function no(e,r,t){return v(e,t.i,Object(p(e,r,t.f)))}function oo(e,r,t){let n=e.base.plugins;if(n){let a=F(t.c);for(let s=0,i=n.length;s<i;s++){let u=n[s];if(u.tag===a)return v(e,t.i,u.deserialize(t.s,new zr(e,r),{id:t.i}))}}throw new Q(t.c)}function ao(e,r){return v(e,r.i,v(e,r.s,re()).p)}function so(e,r,t){let n=e.base.refs.get(t.i);if(n)return n.s(p(e,r,t.a[1])),o;throw new B("Promise")}function io(e,r,t){let n=e.base.refs.get(t.i);if(n)return n.f(p(e,r,t.a[1])),o;throw new B("Promise")}function uo(e,r,t){p(e,r,t.a[0]);let n=p(e,r,t.a[1]);return It(n)}function lo(e,r,t){p(e,r,t.a[0]);let n=p(e,r,t.a[1]);return Et(n)}function co(e,r,t){let n=v(e,t.i,te()),a=t.a,s=a.length;if(s)for(let i=0;i<s;i++)p(e,r,a[i]);return n}function fo(e,r,t){let n=e.base.refs.get(t.i);if(n&&M(n))return n.next(p(e,r,t.f)),o;throw new B("Stream")}function So(e,r,t){let n=e.base.refs.get(t.i);if(n&&M(n))return n.throw(p(e,r,t.f)),o;throw new B("Stream")}function mo(e,r,t){let n=e.base.refs.get(t.i);if(n&&M(n))return n.return(p(e,r,t.f)),o;throw new B("Stream")}function po(e,r,t){return p(e,r,t.f),o}function go(e,r,t){return p(e,r,t.a[1]),o}function p(e,r,t){if(r>e.base.depthLimit)throw new ee(e.base.depthLimit);switch(r+=1,t.t){case 2:return _r(t,et,t.s);case 0:return Number(t.s);case 1:return F(String(t.s));case 3:if(String(t.s).length>Fn)throw new w(t);return BigInt(t.s);case 4:return e.base.refs.get(t.i);case 18:return Un(e,t);case 9:return jn(e,r,t);case 10:case 11:return Kn(e,r,t);case 5:return Hn(e,t);case 6:return Jn(e,t);case 7:return Zn(e,r,t);case 8:return $n(e,r,t);case 19:return qn(e,t);case 16:case 15:return Xn(e,r,t);case 20:return Qn(e,r,t);case 14:return eo(e,r,t);case 13:return ro(e,r,t);case 12:return to(e,r,t);case 17:return _r(t,Xr,t.s);case 21:return no(e,r,t);case 25:return oo(e,r,t);case 22:return ao(e,t);case 23:return so(e,r,t);case 24:return io(e,r,t);case 28:return uo(e,r,t);case 30:return lo(e,r,t);case 31:return co(e,r,t);case 32:return fo(e,r,t);case 33:return So(e,r,t);case 34:return mo(e,r,t);case 27:return po(e,r,t);case 29:return go(e,r,t);default:throw new O(t)}}function nr(e,r){try{return p(e,0,r)}catch(t){throw new He(t)}}var yo=()=>T,No=yo.toString(),Lt=/=>/.test(No);function or(e,r){return Lt?(e.length===1?e[0]:"("+e.join(",")+")")+"=>"+(r.startsWith("{")?"("+r+")":r):"function("+e.join(",")+"){return "+r+"}"}function Ut(e,r){return Lt?(e.length===1?e[0]:"("+e.join(",")+")")+"=>{"+r+"}":"function("+e.join(",")+"){"+r+"}"}var Wt="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",jt=Wt.length,Gt="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",Yt=Gt.length;function kr(e){let r=e%jt,t=Wt[r];for(e=(e-r)/jt;e>0;)r=e%Yt,t+=Gt[r],e=(e-r)/Yt;return t}var bo=/^[$A-Z_][0-9A-Z_$]*$/i;function Dr(e){let r=e[0];return(r==="$"||r==="_"||r>="A"&&r<="Z"||r>="a"&&r<="z")&&bo.test(e)}function ye(e){switch(e.t){case 0:return e.s+"="+e.v;case 2:return e.s+".set("+e.k+","+e.v+")";case 1:return e.s+".add("+e.v+")";case 3:return e.s+".delete("+e.k+")"}}function Co(e){let r=[],t=e[0];for(let n=1,a=e.length,s,i=t;n<a;n++)s=e[n],s.t===0&&s.v===i.v?t={t:0,s:s.s,k:o,v:ye(t)}:s.t===2&&s.s===i.s?t={t:2,s:ye(t),k:s.k,v:s.v}:s.t===1&&s.s===i.s?t={t:1,s:ye(t),k:o,v:s.v}:s.t===3&&s.s===i.s?t={t:3,s:ye(t),k:s.k,v:o}:(r.push(t),t=s),i=s;return r.push(t),r}function qt(e){if(e.length){let r="",t=Co(e);for(let n=0,a=t.length;n<a;n++)r+=ye(t[n])+",";return r}return o}var vo="Object.create(null)",Ao="new Set",Ro="new Map",Eo="Promise.resolve",Io="Promise.reject",Po={3:"Object.freeze",2:"Object.seal",1:"Object.preventExtensions",0:o};function Xt(e,r){return{mode:e,plugins:r.plugins,features:r.features,marked:new Set(r.markedRefs),stack:[],flags:[],assignments:[]}}function xo(){return{valid:new Map,vars:[]}}function ar(e){return{mode:1,base:Xt(1,e),state:xo(),child:o}}function sr(e){return{mode:2,base:Xt(2,e),state:e,child:o}}var Fr=class{constructor(r){this._p=r}serialize(r){return f(this._p,r)}};function To(e,r){let t=e.valid.get(r);t==null&&(t=e.valid.size,e.valid.set(r,t));let n=e.vars[t];return n==null&&(n=kr(t),e.vars[t]=n),n}function Oo(e){return ce+"["+e+"]"}function m(e,r){return e.mode===1?To(e.state,r):Oo(r)}function h(e,r){e.marked.add(r)}function Br(e,r){return e.marked.has(r)}function Vr(e,r,t){r!==0&&(h(e.base,t),e.base.flags.push({type:r,value:m(e,t)}))}function wo(e){let r="";for(let t=0,n=e.flags,a=n.length;t<a;t++){let s=n[t];r+=Po[s.type]+"("+s.value+"),"}return r}function Qt(e){let r=qt(e.assignments),t=wo(e);return r?t?r+t:r:t}function en(e,r,t){e.assignments.push({t:0,s:r,k:o,v:t})}function ho(e,r,t){e.base.assignments.push({t:1,s:m(e,r),k:o,v:t})}function ge(e,r,t,n){e.base.assignments.push({t:2,s:m(e,r),k:t,v:n})}function Kt(e,r,t){e.base.assignments.push({t:3,s:m(e,r),k:t,v:o})}function Ne(e,r,t,n){en(e.base,m(e,r)+"["+t+"]",n)}function Mr(e,r,t,n){en(e.base,m(e,r)+"."+t,n)}function V(e,r){return r.t===4&&e.stack.includes(r.i)}function se(e,r,t){return e.mode===1&&!Br(e.base,r)?t:m(e,r)+"="+t}function zo(e){return U+'.get("'+e.s+'")'}function Ht(e,r,t,n){return t?V(e.base,t)?(h(e.base,r),Ne(e,r,n,m(e,t.i)),""):f(e,t):""}function _o(e,r){let t=r.i,n=r.a,a=n.length;if(a>0){e.base.stack.push(t);let s=Ht(e,t,n[0],0),i=s==="";for(let u=1,l;u<a;u++)l=Ht(e,t,n[u],u),s+=","+l,i=l==="";return e.base.stack.pop(),Vr(e,r.o,r.i),"["+s+(i?",]":"]")}return"[]"}function Jt(e,r,t,n){if(typeof t=="string"){let a=Number(t),s=a>=0&&a.toString()===t||Dr(t);if(V(e.base,n)){let i=m(e,n.i);return h(e.base,r.i),s&&a!==a?Mr(e,r.i,t,i):Ne(e,r.i,s?t:'"'+t+'"',i),""}return(s?t:'"'+t+'"')+":"+f(e,n)}return"["+f(e,t)+"]:"+f(e,n)}function rn(e,r,t){let n=t.k,a=n.length;if(a>0){let s=t.v;e.base.stack.push(r.i);let i=Jt(e,r,n[0],s[0]);for(let u=1,l=i;u<a;u++)l=Jt(e,r,n[u],s[u]),i+=(l&&i&&",")+l;return e.base.stack.pop(),"{"+i+"}"}return"{}"}function ko(e,r){return Vr(e,r.o,r.i),rn(e,r,r.p)}function Do(e,r,t,n){let a=rn(e,r,t);return a!=="{}"?"Object.assign("+n+","+a+")":n}function Fo(e,r,t,n,a){let s=e.base,i=f(e,a),u=Number(n),l=u>=0&&u.toString()===n||Dr(n);if(V(s,a))l&&u!==u?Mr(e,r.i,n,i):Ne(e,r.i,l?n:'"'+n+'"',i);else{let d=s.assignments;s.assignments=t,l&&u!==u?Mr(e,r.i,n,i):Ne(e,r.i,l?n:'"'+n+'"',i),s.assignments=d}}function Bo(e,r,t,n,a){if(typeof n=="string")Fo(e,r,t,n,a);else{let s=e.base,i=s.stack;s.stack=[];let u=f(e,a);s.stack=i;let l=s.assignments;s.assignments=t,Ne(e,r.i,f(e,n),u),s.assignments=l}}function Mo(e,r,t){let n=t.k,a=n.length;if(a>0){let s=[],i=t.v;e.base.stack.push(r.i);for(let u=0;u<a;u++)Bo(e,r,s,n[u],i[u]);return e.base.stack.pop(),qt(s)}return o}function Lr(e,r,t){if(r.p){let n=e.base;if(n.features&8)t=Do(e,r,r.p,t);else{h(n,r.i);let a=Mo(e,r,r.p);if(a)return"("+se(e,r.i,t)+","+a+m(e,r.i)+")"}}return t}function Vo(e,r){return Vr(e,r.o,r.i),Lr(e,r,vo)}function Lo(e){return'new Date("'+e.s+'")'}function Uo(e,r){if(e.base.features&32)return"/"+r.c+"/"+r.m;throw new O(r)}function Zt(e,r,t){let n=e.base;return V(n,t)?(h(n,r),ho(e,r,m(e,t.i)),""):f(e,t)}function jo(e,r){let t=Ao,n=r.a,a=n.length,s=r.i;if(a>0){e.base.stack.push(s);let i=Zt(e,s,n[0]);for(let u=1,l=i;u<a;u++)l=Zt(e,s,n[u]),i+=(l&&i&&",")+l;e.base.stack.pop(),i&&(t+="(["+i+"])")}return t}function $t(e,r,t,n,a){let s=e.base;if(V(s,t)){let i=m(e,t.i);if(h(s,r),V(s,n)){let l=m(e,n.i);return ge(e,r,i,l),""}if(n.t!==4&&n.i!=null&&Br(s,n.i)){let l="("+f(e,n)+",["+a+","+a+"])";return ge(e,r,i,m(e,n.i)),Kt(e,r,a),l}let u=s.stack;return s.stack=[],ge(e,r,i,f(e,n)),s.stack=u,""}if(V(s,n)){let i=m(e,n.i);if(h(s,r),t.t!==4&&t.i!=null&&Br(s,t.i)){let l="("+f(e,t)+",["+a+","+a+"])";return ge(e,r,m(e,t.i),i),Kt(e,r,a),l}let u=s.stack;return s.stack=[],ge(e,r,f(e,t),i),s.stack=u,""}return"["+f(e,t)+","+f(e,n)+"]"}function Yo(e,r){let t=Ro,n=r.e.k,a=n.length,s=r.i,i=r.f,u=m(e,i.i),l=e.base;if(a>0){let d=r.e.v;l.stack.push(s);let S=$t(e,s,n[0],d[0],u);for(let g=1,H=S;g<a;g++)H=$t(e,s,n[g],d[g],u),S+=(H&&S&&",")+H;l.stack.pop(),S&&(t+="(["+S+"])")}return i.t===26&&(h(l,i.i),t="("+f(e,i)+","+t+")"),t}function Wo(e,r){return G(e,r.f)+'("'+r.s+'")'}function Go(e,r){return"new "+r.c+"("+f(e,r.f)+","+r.b+")"}function Ko(e,r){return"new DataView("+f(e,r.f)+","+r.b+")"}function Ho(e,r){let t=r.i;e.base.stack.push(t);let n=Lr(e,r,'new AggregateError([],"'+r.m+'")');return e.base.stack.pop(),n}function Jo(e,r){return Lr(e,r,"new "+ve[r.s]+'("'+r.m+'")')}function Zo(e,r){let t,n=r.f,a=r.i,s=r.s?Eo:Io,i=e.base;if(V(i,n)){let u=m(e,n.i);t=s+(r.s?"().then("+or([],u)+")":"().catch("+Ut([],"throw "+u)+")")}else{i.stack.push(a);let u=f(e,n);i.stack.pop(),t=s+"("+u+")"}return t}function $o(e,r){return"Object("+f(e,r.f)+")"}function G(e,r){let t=f(e,r);return r.t===4?t:"("+t+")"}function qo(e,r){if(e.mode===1)throw new O(r);return"("+se(e,r.s,G(e,r.f)+"()")+").p"}function Xo(e,r){if(e.mode===1)throw new O(r);return G(e,r.a[0])+"("+m(e,r.i)+","+f(e,r.a[1])+")"}function Qo(e,r){if(e.mode===1)throw new O(r);return G(e,r.a[0])+"("+m(e,r.i)+","+f(e,r.a[1])+")"}function ea(e,r){let t=e.base.plugins;if(t)for(let n=0,a=t.length;n<a;n++){let s=t[n];if(s.tag===r.c)return e.child==null&&(e.child=new Fr(e)),s.serialize(r.s,e.child,{id:r.i})}throw new Q(r.c)}function ra(e,r){let t="",n=!1;return r.f.t!==4&&(h(e.base,r.f.i),t="("+f(e,r.f)+",",n=!0),t+=se(e,r.i,"("+yt+")("+m(e,r.f.i)+")"),n&&(t+=")"),t}function ta(e,r){return G(e,r.a[0])+"("+f(e,r.a[1])+")"}function na(e,r){let t=r.a[0],n=r.a[1],a=e.base,s="";t.t!==4&&(h(a,t.i),s+="("+f(e,t)),n.t!==4&&(h(a,n.i),s+=(s?",":"(")+f(e,n)),s&&(s+=",");let i=se(e,r.i,"("+Nt+")("+m(e,n.i)+","+m(e,t.i)+")");return s?s+i+")":i}function oa(e,r){return G(e,r.a[0])+"("+f(e,r.a[1])+")"}function aa(e,r){let t=se(e,r.i,G(e,r.f)+"()"),n=r.a.length;if(n){let a=f(e,r.a[0]);for(let s=1;s<n;s++)a+=","+f(e,r.a[s]);return"("+t+","+a+","+m(e,r.i)+")"}return t}function sa(e,r){return m(e,r.i)+".next("+f(e,r.f)+")"}function ia(e,r){return m(e,r.i)+".throw("+f(e,r.f)+")"}function ua(e,r){return m(e,r.i)+".return("+f(e,r.f)+")"}function la(e,r){switch(r.t){case 17:return qr[r.s];case 18:return zo(r);case 9:return _o(e,r);case 10:return ko(e,r);case 11:return Vo(e,r);case 5:return Lo(r);case 6:return Uo(e,r);case 7:return jo(e,r);case 8:return Yo(e,r);case 19:return Wo(e,r);case 16:case 15:return Go(e,r);case 20:return Ko(e,r);case 14:return Ho(e,r);case 13:return Jo(e,r);case 12:return Zo(e,r);case 21:return $o(e,r);case 22:return qo(e,r);case 25:return ea(e,r);case 26:return Rt[r.s];default:throw new O(r)}}function f(e,r){switch(r.t){case 2:return Qr[r.s];case 0:return""+r.s;case 1:return'"'+r.s+'"';case 3:return r.s+"n";case 4:return m(e,r.i);case 23:return Xo(e,r);case 24:return Qo(e,r);case 27:return ra(e,r);case 28:return ta(e,r);case 29:return na(e,r);case 30:return oa(e,r);case 31:return aa(e,r);case 32:return sa(e,r);case 33:return ia(e,r);case 34:return ua(e,r);default:return se(e,r.i,la(e,r))}}function ir(e,r){let t=f(e,r);if(r.i!=null&&e.state.vars.length){let n=Qt(e.base),a=t;if(n){let s=m(e,r.i);a=t+","+n+s,t.startsWith(s+"=")||(a=s+"="+a),a="("+a+")"}return"("+or(e.state.vars,a)+")()"}return r.t===10?"("+t+")":t}function ur(e,r){let t=f(e,r),n=r.i;if(n==null)return t;let a=Qt(e.base),s=m(e,n),i=e.state.scopeId,u=i==null?"":ce,l=a?"("+t+","+a+s+")":t;if(u==="")return r.t===10&&!a?"("+l+")":l;let d=i==null?"()":"("+ce+'["'+y(i)+'"])';return"("+or([u],l)+")"+d}function ue(e,r){return{type:1,base:pe(e,r),child:o}}var jr=class{constructor(r,t){this._p=r;this.depth=t}parse(r){return R(this._p,this.depth,r)}},Yr=class{constructor(r,t){this._p=r;this.depth=t}parse(r){return R(this._p,this.depth,r)}parseWithError(r){return K(this._p,this.depth,r)}isAlive(){return this._p.state.alive}pushPendingState(){Jr(this._p)}popPendingState(){be(this._p)}onParse(r){ie(this._p,r)}onError(r){Kr(this._p,r)}};function ca(e){return{alive:!0,pending:0,initial:!0,buffer:[],onParse:e.onParse,onError:e.onError,onDone:e.onDone}}function Wr(e){return{type:2,base:pe(2,e),state:ca(e)}}function fa(e,r,t){let n=[];for(let a=0,s=t.length;a<s;a++)a in t?n[a]=R(e,r,t[a]):n[a]=0;return n}function Sa(e,r,t,n){return _e(t,n,fa(e,r,n))}function Gr(e,r,t){let n=Object.entries(t),a=[],s=[];for(let i=0,u=n.length;i<u;i++)a.push(y(n[i][0])),s.push(R(e,r,n[i][1]));return b in t&&(a.push(E(e.base,b)),s.push(Ue(Xe(e.base),R(e,r,$e(t))))),N in t&&(a.push(E(e.base,N)),s.push(je(Qe(e.base),R(e,r,e.type===1?te():Ze(t))))),P in t&&(a.push(E(e.base,P)),s.push(X(t[P]))),I in t&&(a.push(E(e.base,I)),s.push(t[I]?Z:$)),{k:a,v:s}}function Ur(e,r,t,n,a){return er(t,n,a,Gr(e,r,n))}function ma(e,r,t,n){return ke(t,R(e,r,n.valueOf()))}function pa(e,r,t,n){return De(t,n,R(e,r,n.buffer))}function da(e,r,t,n){return Fe(t,n,R(e,r,n.buffer))}function ga(e,r,t,n){return Be(t,n,R(e,r,n.buffer))}function tn(e,r,t,n){let a=q(n,e.base.features);return Me(t,n,a?Gr(e,r,a):o)}function ya(e,r,t,n){let a=q(n,e.base.features);return Ve(t,n,a?Gr(e,r,a):o)}function Na(e,r,t,n){let a=[],s=[];for(let[i,u]of n.entries())a.push(R(e,r,i)),s.push(R(e,r,u));return rr(e.base,t,a,s)}function ba(e,r,t,n){let a=[];for(let s of n.keys())a.push(R(e,r,s));return Le(t,a)}function Ca(e,r,t,n){let a=Ye(t,k(e.base,4),[]);return e.type===1||(Jr(e),n.on({next:s=>{if(e.state.alive){let i=K(e,r,s);i&&ie(e,We(t,i))}},throw:s=>{if(e.state.alive){let i=K(e,r,s);i&&ie(e,Ge(t,i))}be(e)},return:s=>{if(e.state.alive){let i=K(e,r,s);i&&ie(e,Ke(t,i))}be(e)}})),a}function va(e,r,t){if(this.state.alive){let n=K(this,r,t);n&&ie(this,c(23,e,o,o,o,o,o,[k(this.base,2),n],o,o,o)),be(this)}}function Aa(e,r,t){if(this.state.alive){let n=K(this,r,t);n&&ie(this,c(24,e,o,o,o,o,o,[k(this.base,3),n],o,o,o))}be(this)}function Ra(e,r,t,n){let a=Tr(e.base,{});return e.type===2&&(Jr(e),n.then(va.bind(e,a,r),Aa.bind(e,a,r))),xt(e.base,t,a)}function Ea(e,r,t,n,a){for(let s=0,i=a.length;s<i;s++){let u=a[s];if(u.parse.sync&&u.test(n))return fe(t,u.tag,u.parse.sync(n,new jr(e,r),{id:t}))}return o}function Ia(e,r,t,n,a){for(let s=0,i=a.length;s<i;s++){let u=a[s];if(u.parse.stream&&u.test(n))return fe(t,u.tag,u.parse.stream(n,new Yr(e,r),{id:t}))}return o}function nn(e,r,t,n){let a=e.base.plugins;return a?e.type===1?Ea(e,r,t,n,a):Ia(e,r,t,n,a):o}function Pa(e,r,t,n,a){switch(a){case Object:return Ur(e,r,t,n,!1);case o:return Ur(e,r,t,n,!0);case Date:return he(t,n);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return tn(e,r,t,n);case Number:case Boolean:case String:case BigInt:return ma(e,r,t,n);case ArrayBuffer:return tr(e.base,t,n);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return pa(e,r,t,n);case DataView:return ga(e,r,t,n);case Map:return Na(e,r,t,n);case Set:return ba(e,r,t,n);default:break}if(a===Promise||n instanceof Promise)return Ra(e,r,t,n);let s=e.base.features;if(s&32&&a===RegExp)return ze(t,n);if(s&16)switch(a){case BigInt64Array:case BigUint64Array:return da(e,r,t,n);default:break}if(s&1&&typeof AggregateError!="undefined"&&(a===AggregateError||n instanceof AggregateError))return ya(e,r,t,n);if(n instanceof Error)return tn(e,r,t,n);if(b in n||N in n)return Ur(e,r,t,n,!!a);throw new x(n)}function xa(e,r,t,n){if(Array.isArray(n))return Sa(e,r,t,n);if(M(n))return Ca(e,r,t,n);let a=n.constructor;if(a===Y)return R(e,r,n.replacement);let s=nn(e,r,t,n);return s||Pa(e,r,t,n,a)}function Ta(e,r,t){let n=W(e.base,t);if(n.type!==0)return n.value;let a=nn(e,r,n.value,t);if(a)return a;throw new x(t)}function R(e,r,t){if(r>=e.base.depthLimit)throw new ee(e.base.depthLimit);switch(typeof t){case"boolean":return t?Z:$;case"undefined":return Ae;case"string":return X(t);case"number":return Oe(t);case"bigint":return we(t);case"object":{if(t){let n=W(e.base,t);return n.type===0?xa(e,r+1,n.value,t):n.value}return Re}case"symbol":return E(e.base,t);case"function":return Ta(e,r,t);default:throw new x(t)}}function le(e,r){try{return R(e,0,r)}catch(t){throw t instanceof z?t:new z(t)}}function ie(e,r){e.state.initial?e.state.buffer.push(r):Hr(e,r,!1)}function Kr(e,r){if(e.state.onError)e.state.onError(r);else throw r instanceof z?r:new z(r)}function on(e){e.state.onDone&&e.state.onDone()}function Hr(e,r,t){try{e.state.onParse(r,t)}catch(n){Kr(e,n)}}function Jr(e){e.state.pending++}function be(e){--e.state.pending<=0&&on(e)}function K(e,r,t){try{return R(e,r,t)}catch(n){return Kr(e,n),o}}function Zr(e,r){let t=K(e,0,r);t&&(Hr(e,t,!0),e.state.initial=!1,Oa(e,e.state),e.state.pending<=0&&lr(e))}function Oa(e,r){for(let t=0,n=r.buffer.length;t<n;t++)Hr(e,r.buffer[t],!1)}function lr(e){e.state.alive&&(on(e),e.state.alive=!1)}function Ki(e,r={}){let t=A(r.plugins),n=ue(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs}),a=le(n,e),s=sr({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked});return ur(s,a)}async function Hi(e,r={}){let t=A(r.plugins),n=ne(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs}),a=await oe(n,e),s=sr({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked});return ur(s,a)}function Ji(e,r={}){let t=A(r.plugins),n=ue(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs});return le(n,e)}async function Zi(e,r={}){let t=A(r.plugins),n=ne(2,{plugins:t,disabledFeatures:r.disabledFeatures,refs:r.refs});return await oe(n,e)}function an(e,r){let t=A(r.plugins),n=Wr({plugins:t,refs:r.refs,disabledFeatures:r.disabledFeatures,onParse(a,s){let i=sr({plugins:t,features:n.base.features,scopeId:r.scopeId,markedRefs:n.base.marked}),u;try{u=ur(i,a)}catch(l){r.onError&&r.onError(l);return}r.onSerialize(u,s)},onError:r.onError,onDone:r.onDone});return Zr(n,e),lr.bind(null,n)}function $i(e,r){let t=A(r.plugins),n=Wr({plugins:t,refs:r.refs,disabledFeatures:r.disabledFeatures,onParse:r.onParse,onError:r.onError,onDone:r.onDone});return Zr(n,e),lr.bind(null,n)}function qi(e,r){let t=A(r.plugins),n=Ft({plugins:t,refs:r.refs,features:r.features,disabledFeatures:r.disabledFeatures});return nr(n,e)}var cr=class{constructor(r){this.options=r;this.alive=!0;this.flushed=!1;this.done=!1;this.pending=0;this.cleanups=[];this.refs=new Map;this.keys=new Set;this.ids=0;this.plugins=A(r.plugins)}write(r,t){this.alive&&!this.flushed&&(this.pending++,this.keys.add(r),this.cleanups.push(an(t,{plugins:this.plugins,scopeId:this.options.scopeId,refs:this.refs,disabledFeatures:this.options.disabledFeatures,onError:this.options.onError,onSerialize:(n,a)=>{this.alive&&this.options.onData(a?this.options.globalIdentifier+'["'+y(r)+'"]='+n:n)},onDone:()=>{this.alive&&(this.pending--,this.pending<=0&&this.flushed&&!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0))}})))}getNextID(){for(;this.keys.has(""+this.ids);)this.ids++;return""+this.ids}push(r){let t=this.getNextID();return this.write(t,r),t}flush(){this.alive&&(this.flushed=!0,this.pending<=0&&!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0))}close(){if(this.alive){for(let r=0,t=this.cleanups.length;r<t;r++)this.cleanups[r]();!this.done&&this.options.onDone&&(this.options.onDone(),this.done=!0),this.alive=!1}}};function lu(e,r={}){let t=A(r.plugins),n=ue(1,{plugins:t,disabledFeatures:r.disabledFeatures}),a=le(n,e),s=ar({plugins:t,features:n.base.features,markedRefs:n.base.marked});return ir(s,a)}async function cu(e,r={}){let t=A(r.plugins),n=ne(1,{plugins:t,disabledFeatures:r.disabledFeatures}),a=await oe(n,e),s=ar({plugins:t,features:n.base.features,markedRefs:n.base.marked});return ir(s,a)}function fu(e){return(0,eval)(e)}function Su(e,r={}){let t=A(r.plugins),n=ue(1,{plugins:t,disabledFeatures:r.disabledFeatures});return{t:le(n,e),f:n.base.features,m:Array.from(n.base.marked)}}async function mu(e,r={}){let t=A(r.plugins),n=ne(1,{plugins:t,disabledFeatures:r.disabledFeatures});return{t:await oe(n,e),f:n.base.features,m:Array.from(n.base.marked)}}function pu(e,r={}){let t=A(r.plugins),n=ar({plugins:t,features:e.f,markedRefs:e.m});return ir(n,e.t)}function du(e,r={}){var i;let t=A(r.plugins),n=r.disabledFeatures||0,a=(i=e.f)!=null?i:63,s=Dt({plugins:t,markedRefs:e.m,features:a&~n,disabledFeatures:n});return nr(s,e.t)}export{L as Feature,Y as OpaqueReference,cr as Serializer,St as SerovalConflictedNodeIdError,ee as SerovalDepthLimitError,He as SerovalDeserializationError,Se as SerovalError,w as SerovalMalformedNodeError,B as SerovalMissingInstanceError,Q as SerovalMissingPluginError,Ie as SerovalMissingReferenceError,Pe as SerovalMissingReferenceForIdError,ae as SerovalMode,z as SerovalParserError,Ar as SerovalSerializationError,Je as SerovalUnknownTypedArrayError,O as SerovalUnsupportedNodeError,x as SerovalUnsupportedTypeError,pu as compileJSON,Js as createPlugin,cn as createReference,te as createStream,Ki as crossSerialize,Hi as crossSerializeAsync,an as crossSerializeStream,fu as deserialize,qi as fromCrossJSON,du as fromJSON,ln as getCrossReferenceHeader,A as resolvePlugins,lu as serialize,cu as serializeAsync,Ji as toCrossJSON,Zi as toCrossJSONAsync,$i as toCrossJSONStream,Su as toJSON,mu as toJSONAsync};

@@ -13,3 +13,3 @@ import type { WellKnownSymbols } from './constants';

export declare function createPluginNode(id: number, tag: string, value: unknown): SerovalPluginNode;
export declare function createArrayNode(id: number, current: unknown[], parsedItems: SerovalNode[]): SerovalArrayNode;
export declare function createArrayNode(id: number, current: unknown[], parsedItems: SerovalArrayNode['a']): SerovalArrayNode;
export declare function createBoxedNode(id: number, boxed: SerovalNode): SerovalBoxedNode;

@@ -21,3 +21,3 @@ export declare function createTypedArrayNode(id: number, current: TypedArrayValue, buffer: SerovalNode): SerovalTypedArrayNode;

export declare function createAggregateErrorNode(id: number, current: AggregateError, options: SerovalObjectRecordNode | undefined): SerovalAggregateErrorNode;
export declare function createSetNode(id: number, size: number, items: SerovalNode[]): SerovalSetNode;
export declare function createSetNode(id: number, items: SerovalNode[]): SerovalSetNode;
export declare function createIteratorFactoryInstanceNode(factory: SerovalNodeWithID, items: SerovalNode): SerovalIteratorFactoryInstanceNode;

@@ -24,0 +24,0 @@ export declare function createAsyncIteratorFactoryInstanceNode(factory: SerovalNodeWithID, items: SerovalNode): SerovalAsyncIteratorFactoryInstanceNode;

@@ -1,1 +0,1 @@

{"version":3,"file":"base-primitives.d.ts","sourceRoot":"","sources":["../../../src/core/base-primitives.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"base-primitives.d.ts","sourceRoot":"","sources":["../../../src/core/base-primitives.ts"],"names":[],"mappings":"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"}

@@ -11,5 +11,6 @@ /**

ObjectAssign = 8,
BigIntTypedArray = 16
BigIntTypedArray = 16,
RegExp = 32
}
export declare const ALL_ENABLED: number;
//# sourceMappingURL=compat.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"compat.d.ts","sourceRoot":"","sources":["../../../src/core/compat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oBAAY,OAAO;IACjB,cAAc,IAAO;IAErB,aAAa,IAAO;IACpB,mBAAmB,IAAO;IAC1B,YAAY,IAAO;IACnB,gBAAgB,KAAO;CACxB;AAED,eAAO,MAAM,WAAW,QAKE,CAAC"}
{"version":3,"file":"compat.d.ts","sourceRoot":"","sources":["../../../src/core/compat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oBAAY,OAAO;IACjB,cAAc,IAAO;IAErB,aAAa,IAAO;IACpB,mBAAmB,IAAO;IAC1B,YAAY,IAAO;IACnB,gBAAgB,KAAO;IACvB,MAAM,KAAO;CACd;AAED,eAAO,MAAM,WAAW,QAMR,CAAC"}

@@ -1,2 +0,2 @@

import { SYM_ASYNC_ITERATOR, SYM_HAS_INSTANCE, SYM_IS_CONCAT_SPREADABLE, SYM_ITERATOR, SYM_MATCH, SYM_MATCH_ALL, SYM_REPLACE, SYM_SEARCH, SYM_SPECIES, SYM_SPLIT, SYM_TO_PRIMITIVE, SYM_TO_STRING_TAG, SYM_UNSCOPABLES } from "./symbols";
import { SYM_ASYNC_ITERATOR, SYM_HAS_INSTANCE, SYM_IS_CONCAT_SPREADABLE, SYM_ITERATOR, SYM_MATCH, SYM_MATCH_ALL, SYM_REPLACE, SYM_SEARCH, SYM_SPECIES, SYM_SPLIT, SYM_TO_PRIMITIVE, SYM_TO_STRING_TAG, SYM_UNSCOPABLES } from './symbols';
export declare const enum SerovalConstant {

@@ -89,2 +89,3 @@ Null = 0,

export declare const CONSTANT_STRING: Record<SerovalConstant, string>;
export declare const NIL: undefined;
export declare const CONSTANT_VAL: Record<SerovalConstant, unknown>;

@@ -103,4 +104,3 @@ export declare const enum ErrorConstructorTag {

export declare const ERROR_CONSTRUCTOR: Record<ErrorConstructorTag, ErrorConstructors>;
export declare const NIL: undefined;
export {};
//# sourceMappingURL=constants.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE1O,0BAAkB,eAAe;IAC/B,IAAI,IAAI;IACR,SAAS,IAAI;IACb,IAAI,IAAI;IACR,KAAK,IAAI;IACT,OAAO,IAAI;IACX,GAAG,IAAI;IACP,MAAM,IAAI;IACV,GAAG,IAAI;CACR;AAED,0BAAkB,eAAe;IAC/B,MAAM,IAAI;IACV,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,YAAY,IAAI;IAChB,IAAI,IAAI;IACR,MAAM,IAAI;IACV,GAAG,IAAI;IACP,GAAG,IAAI;IACP,KAAK,IAAI;IACT,MAAM,KAAK;IACX,eAAe,KAAK;IACpB,OAAO,KAAK;IACZ,KAAK,KAAK;IACV,cAAc,KAAK;IACnB,UAAU,KAAK;IACf,gBAAgB,KAAK;IACrB,QAAQ,KAAK;IACb,SAAS,KAAK;IACd,WAAW,KAAK;IAChB,QAAQ,KAAK;IACb,KAAK,KAAK;IACV,kBAAkB,KAAK;IACvB,cAAc,KAAK;IACnB,cAAc,KAAK;IACnB,MAAM,KAAK;IACX,gBAAgB,KAAK;IACrB,eAAe,KAAK;IACpB,uBAAuB,KAAK;IAC5B,oBAAoB,KAAK;IACzB,4BAA4B,KAAK;IACjC,iBAAiB,KAAK;IACtB,UAAU,KAAK;IACf,WAAW,KAAK;IAChB,YAAY,KAAK;CAClB;AAED,0BAAkB,kBAAkB;IAClC,IAAI,IAAI;IACR,aAAa,IAAI;IACjB,MAAM,IAAI;IACV,MAAM,IAAI;CACX;AAED,0BAAkB,OAAO;IACvB,aAAa,IAAI;IACjB,WAAW,IAAI;IACf,kBAAkB,IAAI;IACtB,QAAQ,IAAI;IACZ,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,MAAM,IAAI;IACV,OAAO,IAAI;IACX,KAAK,IAAI;IACT,WAAW,KAAK;IAChB,WAAW,KAAK;IAChB,WAAW,KAAK;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAcjD,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAc1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,cAAc,CAAC;AAE3D,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAcxD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAS3D,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CASzD,CAAC;AAEF,0BAAkB,mBAAmB;IACnC,KAAK,IAAI;IACT,SAAS,IAAI;IACb,UAAU,IAAI;IACd,cAAc,IAAI;IAClB,WAAW,IAAI;IACf,SAAS,IAAI;IACb,QAAQ,IAAI;CACb;AAED,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAQxE,CAAC;AAEF,KAAK,iBAAiB,GAClB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,yBAAyB,GACzB,sBAAsB,GACtB,oBAAoB,GACpB,mBAAmB,CAAC;AAExB,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAS1E,CAAC;AAEJ,eAAO,MAAM,GAAG,WAAY,CAAC"}
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,WAAW,CAAC;AAEnB,0BAAkB,eAAe;IAC/B,IAAI,IAAI;IACR,SAAS,IAAI;IACb,IAAI,IAAI;IACR,KAAK,IAAI;IACT,OAAO,IAAI;IACX,GAAG,IAAI;IACP,MAAM,IAAI;IACV,GAAG,IAAI;CACR;AAED,0BAAkB,eAAe;IAC/B,MAAM,IAAI;IACV,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,YAAY,IAAI;IAChB,IAAI,IAAI;IACR,MAAM,IAAI;IACV,GAAG,IAAI;IACP,GAAG,IAAI;IACP,KAAK,IAAI;IACT,MAAM,KAAK;IACX,eAAe,KAAK;IACpB,OAAO,KAAK;IACZ,KAAK,KAAK;IACV,cAAc,KAAK;IACnB,UAAU,KAAK;IACf,gBAAgB,KAAK;IACrB,QAAQ,KAAK;IACb,SAAS,KAAK;IACd,WAAW,KAAK;IAChB,QAAQ,KAAK;IACb,KAAK,KAAK;IACV,kBAAkB,KAAK;IACvB,cAAc,KAAK;IACnB,cAAc,KAAK;IACnB,MAAM,KAAK;IACX,gBAAgB,KAAK;IACrB,eAAe,KAAK;IACpB,uBAAuB,KAAK;IAC5B,oBAAoB,KAAK;IACzB,4BAA4B,KAAK;IACjC,iBAAiB,KAAK;IACtB,UAAU,KAAK;IACf,WAAW,KAAK;IAChB,YAAY,KAAK;CAClB;AAED,0BAAkB,kBAAkB;IAClC,IAAI,IAAI;IACR,aAAa,IAAI;IACjB,MAAM,IAAI;IACV,MAAM,IAAI;CACX;AAED,0BAAkB,OAAO;IACvB,aAAa,IAAI;IACjB,WAAW,IAAI;IACf,kBAAkB,IAAI;IACtB,QAAQ,IAAI;IACZ,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,MAAM,IAAI;IACV,OAAO,IAAI;IACX,KAAK,IAAI;IACT,WAAW,KAAK;IAChB,WAAW,KAAK;IAChB,WAAW,KAAK;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAcjD,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAc1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,cAAc,CAAC;AAE3D,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAcxD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAS3D,CAAC;AAEF,eAAO,MAAM,GAAG,WAAS,CAAC;AAE1B,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CASzD,CAAC;AAEF,0BAAkB,mBAAmB;IACnC,KAAK,IAAI;IACT,SAAS,IAAI;IACb,UAAU,IAAI;IACd,cAAc,IAAI;IAClB,WAAW,IAAI;IACf,SAAS,IAAI;IACb,QAAQ,IAAI;CACb;AAED,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAQxE,CAAC;AAEF,KAAK,iBAAiB,GAClB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,yBAAyB,GACzB,sBAAsB,GACtB,oBAAoB,GACpB,mBAAmB,CAAC;AAExB,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAS1E,CAAC"}

@@ -51,5 +51,5 @@ import type { Stream } from './stream';

export declare const SERIALIZED_ASYNC_ITERATOR_CONSTRUCTOR: string;
export declare const ARRAY_BUFFER_CONSTRUCTOR: (length: number, b64: string) => ArrayBuffer;
export declare const ARRAY_BUFFER_CONSTRUCTOR: (b64: string) => ArrayBuffer;
export declare const SERIALIZED_ARRAY_BUFFER_CONSTRUCTOR: string;
export {};
//# sourceMappingURL=constructors.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"constructors.d.ts","sourceRoot":"","sources":["../../../src/core/constructors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,KAAK,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG;IAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,0BAA0B;IACzC,CAAC,EAAE,cAAc,CAAC;IAClB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5B,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,mBAAmB,QAAO,0BAWtC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,0BAA0B,EACpC,MAAM,OAAO,KACZ,IAIF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,0BAA0B,EACpC,MAAM,OAAO,KACZ,IAIF,CAAC;AAEF,eAAO,MAAM,8BAA8B,QACK,CAAC;AACjD,eAAO,MAAM,0BAA0B,QACK,CAAC;AAC7C,eAAO,MAAM,0BAA0B,QACK,CAAC;AAE7C,UAAU,cAAc,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,kBAAkB;;mBA+CZ,cAAc,CAAC,OAAO,CAAC;kBACxB,OAAO;mBAMN,OAAO;oBASN,OAAO;CAU1B,CAAC;AAEF,eAAO,MAAM,6BAA6B,QACK,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,OAAO,EAAE,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,eAAO,MAAM,oBAAoB,GAC9B,QAAQ,MAAM,MAAM,UAAU,QAAQ;;;;;;CAuBtC,CAAC;AAEJ,eAAO,MAAM,+BAA+B,QACK,CAAC;AAElD,eAAO,MAAM,0BAA0B,GACpC,QAAQ,MAAM,EAAE,eAAe,OAAO,mBAAmB,MACzD,QAAQ,MAAM,CAAC,OAAO,CAAC;;;;;;CAoFvB,CAAC;AAEJ,eAAO,MAAM,qCAAqC,QACK,CAAC;AAExD,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,EAAE,KAAK,MAAM,gBAOnE,CAAC;AAEF,eAAO,MAAM,mCAAmC,QACK,CAAC"}
{"version":3,"file":"constructors.d.ts","sourceRoot":"","sources":["../../../src/core/constructors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,KAAK,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG;IAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,0BAA0B;IACzC,CAAC,EAAE,cAAc,CAAC;IAClB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5B,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,mBAAmB,QAAO,0BAWtC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,0BAA0B,EACpC,MAAM,OAAO,KACZ,IAIF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,0BAA0B,EACpC,MAAM,OAAO,KACZ,IAIF,CAAC;AAEF,eAAO,MAAM,8BAA8B,QACK,CAAC;AACjD,eAAO,MAAM,0BAA0B,QACK,CAAC;AAC7C,eAAO,MAAM,0BAA0B,QACK,CAAC;AAE7C,UAAU,cAAc,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,kBAAkB;;mBA+CZ,cAAc,CAAC,OAAO,CAAC;kBACxB,OAAO;mBAMN,OAAO;oBASN,OAAO;CAU1B,CAAC;AAEF,eAAO,MAAM,6BAA6B,QACK,CAAC;AAEhD,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,OAAO,EAAE,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,eAAO,MAAM,oBAAoB,GAC9B,QAAQ,MAAM,MAAM,UAAU,QAAQ;;;;;;CAuBtC,CAAC;AAEJ,eAAO,MAAM,+BAA+B,QACK,CAAC;AAElD,eAAO,MAAM,0BAA0B,GACpC,QAAQ,MAAM,EAAE,eAAe,OAAO,mBAAmB,MACzD,QAAQ,MAAM,CAAC,OAAO,CAAC;;;;;;CAoFvB,CAAC;AAEJ,eAAO,MAAM,qCAAqC,QACK,CAAC;AAExD,eAAO,MAAM,wBAAwB,GAAI,KAAK,MAAM,gBAQnD,CAAC;AAEF,eAAO,MAAM,mCAAmC,QACK,CAAC"}

@@ -12,9 +12,10 @@ import type { SerovalMode } from '../plugin';

private _p;
constructor(_p: AsyncParserContext);
private depth;
constructor(_p: AsyncParserContext, depth: number);
parse<T>(current: T): Promise<SerovalNode>;
}
export declare function parseObjectAsync(ctx: AsyncParserContext, id: number, current: object): Promise<SerovalNode>;
export declare function parseFunctionAsync(ctx: AsyncParserContext, current: unknown): Promise<SerovalNode>;
export declare function parseAsync<T>(ctx: AsyncParserContext, current: T): Promise<SerovalNode>;
export declare function parseObjectAsync(ctx: AsyncParserContext, depth: number, id: number, current: object): Promise<SerovalNode>;
export declare function parseFunctionAsync(ctx: AsyncParserContext, depth: number, current: unknown): Promise<SerovalNode>;
export declare function parseAsync<T>(ctx: AsyncParserContext, depth: number, current: T): Promise<SerovalNode>;
export declare function parseTopAsync<T>(ctx: AsyncParserContext, current: T): Promise<SerovalNode>;
//# sourceMappingURL=async-parser.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"async-parser.d.ts","sourceRoot":"","sources":["../../../../src/core/context/async-parser.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAW7C,OAAO,KAAK,EAQV,WAAW,EAUZ,MAAM,UAAU,CAAC;AAQlB,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAoB5E,MAAM,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,uBAAuB,GAAG,SAAS,CAAC;CAC5C;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,yBAAyB,GACjC,kBAAkB,CAKpB;AAED,qBAAa,uBAAuB;IACtB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,kBAAkB;IAE1C,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;CAG3C;AA4SD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,kBAAkB,EACvB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CAgHtB;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CAUtB;AAED,wBAAsB,UAAU,CAAC,CAAC,EAChC,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,WAAW,CAAC,CA4BtB;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,WAAW,CAAC,CAQtB"}
{"version":3,"file":"async-parser.d.ts","sourceRoot":"","sources":["../../../../src/core/context/async-parser.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAW7C,OAAO,KAAK,EAQV,WAAW,EAUZ,MAAM,UAAU,CAAC;AAQlB,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAoB5E,MAAM,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,uBAAuB,GAAG,SAAS,CAAC;CAC5C;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,yBAAyB,GACjC,kBAAkB,CAKpB;AAED,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,KAAK;gBADL,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,MAAM;IAGvB,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;CAG3C;AAqUD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CAoItB;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CAUtB;AAED,wBAAsB,UAAU,CAAC,CAAC,EAChC,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,WAAW,CAAC,CA4BtB;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,WAAW,CAAC,CAQtB"}

@@ -6,2 +6,5 @@ import type { PluginAccessOptions } from '../plugin';

refs?: Map<number, unknown>;
features?: number;
disabledFeatures?: number;
depthLimit?: number;
}

@@ -14,2 +17,4 @@ export interface BaseDeserializerContext extends PluginAccessOptions {

refs: Map<number, unknown>;
features: number;
depthLimit: number;
}

@@ -40,8 +45,8 @@ export declare function createBaseDeserializerContext(mode: SerovalMode, options: BaseDeserializerContextOptions): BaseDeserializerContext;

private _p;
constructor(_p: DeserializerContext);
private depth;
constructor(_p: DeserializerContext, depth: number);
deserialize<T>(node: SerovalNode): T;
}
export declare function deserialize(ctx: DeserializerContext, node: SerovalNode): unknown;
export declare function deserializeTop(ctx: DeserializerContext, node: SerovalNode): unknown;
export {};
//# sourceMappingURL=deserializer.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"deserializer.d.ts","sourceRoot":"","sources":["../../../../src/core/context/deserializer.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAKxC,OAAO,KAAK,EAcV,WAAW,EAkBZ,MAAM,UAAU,CAAC;AAyBlB,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACzE,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B;;OAEG;IACH,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5B;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,8BAA8B,GACtC,uBAAuB,CAMzB;AAED,MAAM,WAAW,iCACf,SAAQ,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC;IACpD,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;IAC1B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,KAAK,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAC5C,KAAK,EAAE,wBAAwB,CAAC;CACjC;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,iCAAiC,GACzC,0BAA0B,CAS5B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;IACxB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,KAAK,EAAE,wBAAwB,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,MAAM,+BAA+B,GAAG,8BAA8B,CAAC;AAE7E,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,+BAA+B,GACvC,wBAAwB,CAM1B;AAED,KAAK,mBAAmB,GACpB,0BAA0B,GAC1B,wBAAwB,CAAC;AAE7B,qBAAa,wBAAwB;IACvB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,mBAAmB;IAE3C,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,GAAG,CAAC;CAGrC;AA8YD,wBAAgB,WAAW,CACzB,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,WAAW,GAChB,OAAO,CAwET;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,WAAW,GAChB,OAAO,CAMT"}
{"version":3,"file":"deserializer.d.ts","sourceRoot":"","sources":["../../../../src/core/context/deserializer.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAWxC,OAAO,KAAK,EAcV,WAAW,EAiBZ,MAAM,UAAU,CAAC;AA6BlB,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACzE,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B;;OAEG;IACH,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,8BAA8B,GACtC,uBAAuB,CAQzB;AAED,MAAM,WAAW,iCACf,SAAQ,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC;IACpD,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;IAC1B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,KAAK,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAC5C,KAAK,EAAE,wBAAwB,CAAC;CACjC;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,iCAAiC,GACzC,0BAA0B,CAS5B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;IACxB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,KAAK,EAAE,wBAAwB,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,MAAM,+BAA+B,GAAG,8BAA8B,CAAC;AAE7E,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,+BAA+B,GACvC,wBAAwB,CAM1B;AAED,KAAK,mBAAmB,GACpB,0BAA0B,GAC1B,wBAAwB,CAAC;AAE7B,qBAAa,wBAAwB;IAEjC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,KAAK;gBADL,EAAE,EAAE,mBAAmB,EACvB,KAAK,EAAE,MAAM;IAGvB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,GAAG,CAAC;CAGrC;AA6lBD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,WAAW,GAChB,OAAO,CAMT"}

@@ -7,2 +7,3 @@ import type { PluginAccessOptions, SerovalMode } from '../plugin';

refs?: Map<unknown, number>;
depthLimit?: number;
}

@@ -32,2 +33,3 @@ export declare const enum ParserNodeType {

features: number;
depthLimit: number;
}

@@ -58,3 +60,3 @@ export declare function createBaseParserContext(mode: SerovalMode, options: BaseParserContextOptions): BaseParserContext;

export declare function createObjectNode(id: number, current: Record<string, unknown>, empty: boolean, record: SerovalObjectRecordNode): SerovalObjectNode | SerovalNullConstructorNode;
export declare function createMapNode(ctx: BaseParserContext, id: number, k: SerovalNode[], v: SerovalNode[], s: number): SerovalMapNode;
export declare function createMapNode(ctx: BaseParserContext, id: number, k: SerovalNode[], v: SerovalNode[]): SerovalMapNode;
export declare function createPromiseConstructorNode(ctx: BaseParserContext, id: number, resolver: number): SerovalPromiseConstructorNode;

@@ -61,0 +63,0 @@ export declare function createArrayBufferNode(ctx: BaseParserContext, id: number, current: ArrayBuffer): SerovalArrayBufferNode;

@@ -1,1 +0,1 @@

{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/core/context/parser.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/core/context/parser.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../../../src/core/context/serializer.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../../../src/core/context/serializer.ts"],"names":[],"mappings":"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"}

@@ -17,3 +17,4 @@ import { SerovalMode } from '../plugin';

private _p;
constructor(_p: SyncParserContext);
private depth;
constructor(_p: SyncParserContext, depth: number);
parse<T>(current: T): SerovalNode;

@@ -29,3 +30,2 @@ }

base: BaseParserContext;
child: StreamParsePluginContext | undefined;
state: StreamParserState;

@@ -35,3 +35,4 @@ }

private _p;
constructor(_p: StreamParserContext);
private depth;
constructor(_p: StreamParserContext, depth: number);
parse<T>(current: T): SerovalNode;

@@ -56,5 +57,4 @@ parseWithError<T>(current: T): SerovalNode | undefined;

type SOSParserContext = SyncParserContext | StreamParserContext;
export declare function parseSOS<T>(ctx: SOSParserContext, current: T): SerovalNode;
export declare function parseSOS<T>(ctx: SOSParserContext, depth: number, current: T): SerovalNode;
export declare function parseTop<T>(ctx: SyncParserContext, current: T): SerovalNode;
export declare function parseWithError<T>(ctx: StreamParserContext, current: T): SerovalNode | undefined;
export declare function startStreamParse<T>(ctx: StreamParserContext, current: T): void;

@@ -61,0 +61,0 @@ export declare function destroyStreamParse(ctx: StreamParserContext): void;

@@ -1,1 +0,1 @@

{"version":3,"file":"sync-parser.d.ts","sourceRoot":"","sources":["../../../../src/core/context/sync-parser.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"sync-parser.d.ts","sourceRoot":"","sources":["../../../../src/core/context/sync-parser.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/cross/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAKzE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAK/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAKjE,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAShC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,qBACf,SAAQ,wBAAwB,EAC9B,mBAAmB;CAAG;AAE1B,wBAAgB,cAAc,CAAC,CAAC,EAC9B,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAeR;AAED,MAAM,WAAW,0BACf,SAAQ,yBAAyB,EAC/B,mBAAmB;CAAG;AAE1B,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,CAAC,CAejB;AAED,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAE1D,wBAAgB,WAAW,CAAC,CAAC,EAC3B,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CAQb;AAED,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEhE,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED,MAAM,WAAW,2BACf,SAAQ,IAAI,CAAC,0BAA0B,EAAE,SAAS,CAAC,EACjD,mBAAmB;IACrB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,2BAA2B,GACnC,MAAM,IAAI,CAkCZ;AAED,MAAM,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AAElE,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,wBAAwB,GAChC,MAAM,IAAI,CAcZ;AAED,MAAM,MAAM,oBAAoB,GAAG,+BAA+B,CAAC;AAEnE,wBAAgB,aAAa,CAAC,CAAC,EAC7B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,oBAAoB,GAC5B,CAAC,CAOH"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/cross/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAKzE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAK/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAKjE,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAShC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,qBACf,SAAQ,wBAAwB,EAC9B,mBAAmB;CAAG;AAE1B,wBAAgB,cAAc,CAAC,CAAC,EAC9B,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAeR;AAED,MAAM,WAAW,0BACf,SAAQ,yBAAyB,EAC/B,mBAAmB;CAAG;AAE1B,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,CAAC,CAejB;AAED,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAE1D,wBAAgB,WAAW,CAAC,CAAC,EAC3B,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CAQb;AAED,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEhE,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED,MAAM,WAAW,2BACf,SAAQ,IAAI,CAAC,0BAA0B,EAAE,SAAS,CAAC,EACjD,mBAAmB;IACrB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACvD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,2BAA2B,GACnC,MAAM,IAAI,CAkCZ;AAED,MAAM,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AAElE,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,wBAAwB,GAChC,MAAM,IAAI,CAcZ;AAED,MAAM,MAAM,oBAAoB,GAAG,+BAA+B,CAAC;AAEnE,wBAAgB,aAAa,CAAC,CAAC,EAC7B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,oBAAoB,GAC5B,CAAC,CASH"}

@@ -38,2 +38,11 @@ import type { SerovalNode } from './types';

}
export declare class SerovalMalformedNodeError extends Error {
constructor(node: SerovalNode);
}
export declare class SerovalConflictedNodeIdError extends Error {
constructor(node: SerovalNode);
}
export declare class SerovalDepthLimitError extends Error {
constructor(limit: number);
}
//# sourceMappingURL=errors.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA0C3C,qBAAa,YAAa,SAAQ,KAAK;IAG5B,KAAK,EAAE,GAAG;gBADjB,IAAI,EAAE,MAAM,EACL,KAAK,EAAE,GAAG;CAIpB;AAED,qBAAa,kBAAmB,SAAQ,YAAY;gBACtC,KAAK,EAAE,GAAG;CAGvB;AAED,qBAAa,yBAA0B,SAAQ,YAAY;gBAC7C,KAAK,EAAE,GAAG;CAGvB;AAED,qBAAa,2BAA4B,SAAQ,YAAY;gBAC/C,KAAK,EAAE,GAAG;CAGvB;AAgBD,qBAAa,2BAA4B,SAAQ,KAAK;IACjC,KAAK,EAAE,OAAO;gBAAd,KAAK,EAAE,OAAO;CAWlC;AAED,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,IAAI,EAAE,WAAW;CAO9B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,GAAG,EAAE,MAAM;CAOxB;AAED,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,GAAG,EAAE,MAAM;CAOxB;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IAClC,KAAK,EAAE,OAAO;gBAAd,KAAK,EAAE,OAAO;CAWlC;AAED,qBAAa,iCAAkC,SAAQ,KAAK;gBAC9C,EAAE,EAAE,MAAM;CAOvB;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,IAAI,EAAE,MAAM;CAOzB"}
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA0C3C,qBAAa,YAAa,SAAQ,KAAK;IAG5B,KAAK,EAAE,GAAG;gBADjB,IAAI,EAAE,MAAM,EACL,KAAK,EAAE,GAAG;CAIpB;AAED,qBAAa,kBAAmB,SAAQ,YAAY;gBACtC,KAAK,EAAE,GAAG;CAGvB;AAED,qBAAa,yBAA0B,SAAQ,YAAY;gBAC7C,KAAK,EAAE,GAAG;CAGvB;AAED,qBAAa,2BAA4B,SAAQ,YAAY;gBAC/C,KAAK,EAAE,GAAG;CAGvB;AAmBD,qBAAa,2BAA4B,SAAQ,KAAK;IACjC,KAAK,EAAE,OAAO;gBAAd,KAAK,EAAE,OAAO;CAWlC;AAED,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,IAAI,EAAE,WAAW;CAO9B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,GAAG,EAAE,MAAM;CAOxB;AAED,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,GAAG,EAAE,MAAM;CAOxB;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IAClC,KAAK,EAAE,OAAO;gBAAd,KAAK,EAAE,OAAO;CAWlC;AAED,qBAAa,iCAAkC,SAAQ,KAAK;gBAC9C,EAAE,EAAE,MAAM;CAOvB;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,IAAI,EAAE,MAAM;CAOzB;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,IAAI,EAAE,WAAW;CAO9B;AAED,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,IAAI,EAAE,WAAW;CAO9B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,KAAK,EAAE,MAAM;CAO1B"}

@@ -1,1 +0,1 @@

{"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../../src/core/literals.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAmBnD,eAAO,MAAM,SAAS,qBAErB,CAAC;AACF,eAAO,MAAM,UAAU,qBAEtB,CAAC;AACF,eAAO,MAAM,cAAc,qBAE1B,CAAC;AACF,eAAO,MAAM,SAAS,qBAErB,CAAC;AACF,eAAO,MAAM,aAAa,qBAEzB,CAAC;AACF,eAAO,MAAM,aAAa,qBAEzB,CAAC;AACF,eAAO,MAAM,iBAAiB,qBAE7B,CAAC;AACF,eAAO,MAAM,QAAQ,qBAA0D,CAAC"}
{"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../../src/core/literals.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAkBnD,eAAO,MAAM,SAAS,qBAErB,CAAC;AACF,eAAO,MAAM,UAAU,qBAEtB,CAAC;AACF,eAAO,MAAM,cAAc,qBAE1B,CAAC;AACF,eAAO,MAAM,SAAS,qBAErB,CAAC;AACF,eAAO,MAAM,aAAa,qBAEzB,CAAC;AACF,eAAO,MAAM,aAAa,qBAEzB,CAAC;AACF,eAAO,MAAM,iBAAiB,qBAE7B,CAAC;AACF,eAAO,MAAM,QAAQ,qBAA0D,CAAC"}

@@ -6,4 +6,4 @@ import type { SerovalNodeType } from './constants';

}>;
export declare function createSerovalNode<T extends SerovalNodeType, N extends ExtractedNodeType<T>>(t: T, i: N['i'], s: N['s'], l: N['l'], c: N['c'], m: N['m'], p: N['p'], e: N['e'], a: N['a'], f: N['f'], b: N['b'], o: N['o']): N;
export declare function createSerovalNode<T extends SerovalNodeType, N extends ExtractedNodeType<T>>(t: T, i: N['i'], s: N['s'], c: N['c'], m: N['m'], p: N['p'], e: N['e'], a: N['a'], f: N['f'], b: N['b'], o: N['o']): N;
export {};
//# sourceMappingURL=node.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/core/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,iBAAiB,CAAC,CAAC,SAAS,eAAe,IAAI,OAAO,CACzD,WAAW,EACX;IAAE,CAAC,EAAE,CAAC,CAAA;CAAE,CACT,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,eAAe,EACzB,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAE9B,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GACR,CAAC,CAeH"}
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/core/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,iBAAiB,CAAC,CAAC,SAAS,eAAe,IAAI,OAAO,CACzD,WAAW,EACX;IAAE,CAAC,EAAE,CAAC,CAAA;CAAE,CACT,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,eAAe,EACzB,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAE9B,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EACT,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GACR,CAAC,CAcH"}

@@ -1,1 +0,1 @@

{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../src/core/string.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyB7D;AAOD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiBnD;AA6BD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKrD"}
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../src/core/string.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyB7D;AAOD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiBnD;AA6BD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKrD"}

@@ -14,6 +14,9 @@ import type { BaseParserContextOptions } from '../context/parser';

}
export interface FromJSONOptions extends PluginAccessOptions {
disabledFeatures?: number;
}
export declare function toJSON<T>(source: T, options?: SyncParserContextOptions): SerovalJSON;
export declare function toJSONAsync<T>(source: T, options?: AsyncParserContextOptions): Promise<SerovalJSON>;
export declare function compileJSON(source: SerovalJSON, options?: PluginAccessOptions): string;
export declare function fromJSON<T>(source: SerovalJSON, options?: PluginAccessOptions): T;
export declare function fromJSON<T>(source: SerovalJSON, options?: FromJSONOptions): T;
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/tree/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAMlE,OAAO,EACL,KAAK,mBAAmB,EAGzB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;AAC9E,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;AAE/E,wBAAgB,SAAS,CAAC,CAAC,EACzB,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAaR;AAED,wBAAsB,cAAc,CAAC,CAAC,EACpC,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAEhD;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,WAAW,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,EAAE,CAAC;CACb;AAED,wBAAgB,MAAM,CAAC,CAAC,EACtB,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,wBAA6B,GACrC,WAAW,CAWb;AAED,wBAAsB,WAAW,CAAC,CAAC,EACjC,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,WAAW,CAAC,CAWtB;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,mBAAwB,GAChC,MAAM,CAQR;AAED,wBAAgB,QAAQ,CAAC,CAAC,EACxB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,mBAAwB,GAChC,CAAC,CAOH"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/tree/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAMlE,OAAO,EACL,KAAK,mBAAmB,EAGzB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;AAC9E,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;AAE/E,wBAAgB,SAAS,CAAC,CAAC,EACzB,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAaR;AAED,wBAAsB,cAAc,CAAC,CAAC,EACpC,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAEhD;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,WAAW,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,EAAE,CAAC;CACb;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,MAAM,CAAC,CAAC,EACtB,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,wBAA6B,GACrC,WAAW,CAWb;AAED,wBAAsB,WAAW,CAAC,CAAC,EACjC,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,WAAW,CAAC,CAWtB;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,mBAAwB,GAChC,MAAM,CAQR;AAED,wBAAgB,QAAQ,CAAC,CAAC,EACxB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,eAAoB,GAC5B,CAAC,CAWH"}

@@ -7,3 +7,2 @@ import type { ErrorConstructorTag, SerovalConstant, SerovalNodeType, SerovalObjectFlags, Symbols } from './constants';

s: unknown;
l: number | undefined;
c: string | undefined;

@@ -13,3 +12,3 @@ m: string | undefined;

e: SerovalMapRecordNode | undefined;
a: (SerovalNode | undefined)[] | undefined;
a: (SerovalNode | 0)[] | undefined;
f: SerovalNode | undefined;

@@ -23,3 +22,2 @@ b: number | undefined;

v: SerovalNode[];
s: number;
}

@@ -29,3 +27,2 @@ export interface SerovalMapRecordNode {

v: SerovalNode[];
s: number;
}

@@ -68,3 +65,2 @@ export interface SerovalNumberNode extends SerovalBaseNode {

s: string;
l: number;
f: SerovalNodeWithID;

@@ -75,3 +71,2 @@ }

i: number;
l: number;
c: string;

@@ -84,3 +79,2 @@ f: SerovalNode;

i: number;
l: number;
c: string;

@@ -94,3 +88,2 @@ f: SerovalNode;

i: number;
l: number;
a: SerovalNode[];

@@ -106,4 +99,3 @@ }

t: SerovalNodeType.Array;
l: number;
a: (SerovalNode | undefined)[];
a: (SerovalNode | 0)[];
i: number;

@@ -156,3 +148,2 @@ o: SerovalObjectFlags;

i: number;
l: number;
f: SerovalNode;

@@ -159,0 +150,0 @@ b: number;

@@ -1,1 +0,1 @@

{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}
{
"name": "seroval",
"type": "module",
"version": "1.4.0",
"version": "1.4.1",
"files": [
"dist",
"src"
"dist"
],

@@ -9,0 +8,0 @@ "engines": {

import type { WellKnownSymbols } from './constants';
import { INV_SYMBOL_REF, NIL, SerovalNodeType } from './constants';
import {
INFINITY_NODE,
NAN_NODE,
NEG_INFINITY_NODE,
NEG_ZERO_NODE,
} from './literals';
import { createSerovalNode } from './node';
import { getReferenceID } from './reference';
import { serializeString } from './string';
import type {
SerovalAggregateErrorNode,
SerovalArrayNode,
SerovalAsyncIteratorFactoryInstanceNode,
SerovalBigIntNode,
SerovalBigIntTypedArrayNode,
SerovalBoxedNode,
SerovalConstantNode,
SerovalDataViewNode,
SerovalDateNode,
SerovalErrorNode,
SerovalIndexedValueNode,
SerovalIteratorFactoryInstanceNode,
SerovalNode,
SerovalNodeWithID,
SerovalNumberNode,
SerovalObjectRecordNode,
SerovalPluginNode,
SerovalReferenceNode,
SerovalRegExpNode,
SerovalSetNode,
SerovalStreamConstructorNode,
SerovalStreamNextNode,
SerovalStreamReturnNode,
SerovalStreamThrowNode,
SerovalStringNode,
SerovalTypedArrayNode,
SerovalWKSymbolNode,
} from './types';
import { getErrorConstructor } from './utils/error';
import { getObjectFlag } from './utils/get-object-flag';
import type {
BigIntTypedArrayValue,
TypedArrayValue,
} from './utils/typed-array';
export function createNumberNode(
value: number,
): SerovalConstantNode | SerovalNumberNode {
switch (value) {
case Number.POSITIVE_INFINITY:
return INFINITY_NODE;
case Number.NEGATIVE_INFINITY:
return NEG_INFINITY_NODE;
}
if (value !== value) {
return NAN_NODE;
}
if (Object.is(value, -0)) {
return NEG_ZERO_NODE;
}
return createSerovalNode(
SerovalNodeType.Number,
NIL,
value,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function createStringNode(value: string): SerovalStringNode {
return createSerovalNode(
SerovalNodeType.String,
NIL,
serializeString(value),
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function createBigIntNode(current: bigint): SerovalBigIntNode {
return createSerovalNode(
SerovalNodeType.BigInt,
NIL,
'' + current,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function createIndexedValueNode(id: number): SerovalIndexedValueNode {
return createSerovalNode(
SerovalNodeType.IndexedValue,
id,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function createDateNode(id: number, current: Date): SerovalDateNode {
const timestamp = current.valueOf();
return createSerovalNode(
SerovalNodeType.Date,
id,
timestamp !== timestamp ? '' : current.toISOString(),
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function createRegExpNode(
id: number,
current: RegExp,
): SerovalRegExpNode {
return createSerovalNode(
SerovalNodeType.RegExp,
id,
NIL,
NIL,
serializeString(current.source),
current.flags,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function createWKSymbolNode(
id: number,
current: WellKnownSymbols,
): SerovalWKSymbolNode {
return createSerovalNode(
SerovalNodeType.WKSymbol,
id,
INV_SYMBOL_REF[current],
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function createReferenceNode<T>(
id: number,
ref: T,
): SerovalReferenceNode {
return createSerovalNode(
SerovalNodeType.Reference,
id,
serializeString(getReferenceID(ref)),
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function createPluginNode(
id: number,
tag: string,
value: unknown,
): SerovalPluginNode {
return createSerovalNode(
SerovalNodeType.Plugin,
id,
value,
NIL,
serializeString(tag),
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function createArrayNode(
id: number,
current: unknown[],
parsedItems: SerovalNode[],
): SerovalArrayNode {
return createSerovalNode(
SerovalNodeType.Array,
id,
NIL,
current.length,
NIL,
NIL,
NIL,
NIL,
parsedItems,
NIL,
NIL,
getObjectFlag(current),
);
}
export function createBoxedNode(
id: number,
boxed: SerovalNode,
): SerovalBoxedNode {
return createSerovalNode(
SerovalNodeType.Boxed,
id,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
boxed,
NIL,
NIL,
);
}
export function createTypedArrayNode(
id: number,
current: TypedArrayValue,
buffer: SerovalNode,
): SerovalTypedArrayNode {
return createSerovalNode(
SerovalNodeType.TypedArray,
id,
NIL,
current.length,
current.constructor.name,
NIL,
NIL,
NIL,
NIL,
buffer,
current.byteOffset,
NIL,
);
}
export function createBigIntTypedArrayNode(
id: number,
current: BigIntTypedArrayValue,
buffer: SerovalNode,
): SerovalBigIntTypedArrayNode {
return createSerovalNode(
SerovalNodeType.BigIntTypedArray,
id,
NIL,
current.length,
current.constructor.name,
NIL,
NIL,
NIL,
NIL,
buffer,
current.byteOffset,
NIL,
);
}
export function createDataViewNode(
id: number,
current: DataView,
buffer: SerovalNode,
): SerovalDataViewNode {
return createSerovalNode(
SerovalNodeType.DataView,
id,
NIL,
current.byteLength,
NIL,
NIL,
NIL,
NIL,
NIL,
buffer,
current.byteOffset,
NIL,
);
}
export function createErrorNode(
id: number,
current: Error,
options: SerovalObjectRecordNode | undefined,
): SerovalErrorNode {
return createSerovalNode(
SerovalNodeType.Error,
id,
getErrorConstructor(current),
NIL,
NIL,
serializeString(current.message),
options,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function createAggregateErrorNode(
id: number,
current: AggregateError,
options: SerovalObjectRecordNode | undefined,
): SerovalAggregateErrorNode {
return createSerovalNode(
SerovalNodeType.AggregateError,
id,
getErrorConstructor(current),
NIL,
NIL,
serializeString(current.message),
options,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function createSetNode(
id: number,
size: number,
items: SerovalNode[],
): SerovalSetNode {
return createSerovalNode(
SerovalNodeType.Set,
id,
NIL,
size,
NIL,
NIL,
NIL,
NIL,
items,
NIL,
NIL,
NIL,
);
}
export function createIteratorFactoryInstanceNode(
factory: SerovalNodeWithID,
items: SerovalNode,
): SerovalIteratorFactoryInstanceNode {
return createSerovalNode(
SerovalNodeType.IteratorFactoryInstance,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
[factory, items],
NIL,
NIL,
NIL,
);
}
export function createAsyncIteratorFactoryInstanceNode(
factory: SerovalNodeWithID,
items: SerovalNode,
): SerovalAsyncIteratorFactoryInstanceNode {
return createSerovalNode(
SerovalNodeType.AsyncIteratorFactoryInstance,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
[factory, items],
NIL,
NIL,
NIL,
);
}
export function createStreamConstructorNode(
id: number,
factory: SerovalNodeWithID,
sequence: SerovalNode[],
): SerovalStreamConstructorNode {
return createSerovalNode(
SerovalNodeType.StreamConstructor,
id,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
sequence,
factory,
NIL,
NIL,
);
}
export function createStreamNextNode(
id: number,
parsed: SerovalNode,
): SerovalStreamNextNode {
return createSerovalNode(
SerovalNodeType.StreamNext,
id,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
parsed,
NIL,
NIL,
);
}
export function createStreamThrowNode(
id: number,
parsed: SerovalNode,
): SerovalStreamThrowNode {
return createSerovalNode(
SerovalNodeType.StreamThrow,
id,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
parsed,
NIL,
NIL,
);
}
export function createStreamReturnNode(
id: number,
parsed: SerovalNode,
): SerovalStreamReturnNode {
return createSerovalNode(
SerovalNodeType.StreamReturn,
id,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
parsed,
NIL,
NIL,
);
}
/**
* References
* - https://compat-table.github.io/compat-table/es6/
* - MDN
*/
export enum Feature {
AggregateError = 0x01,
// @deprecated
ArrowFunction = 0x02,
ErrorPrototypeStack = 0x04,
ObjectAssign = 0x08,
BigIntTypedArray = 0x10,
}
export const ALL_ENABLED =
Feature.AggregateError |
Feature.ArrowFunction |
Feature.ErrorPrototypeStack |
Feature.ObjectAssign |
Feature.BigIntTypedArray;
import { SYM_ASYNC_ITERATOR, SYM_HAS_INSTANCE, SYM_IS_CONCAT_SPREADABLE, SYM_ITERATOR, SYM_MATCH, SYM_MATCH_ALL, SYM_REPLACE, SYM_SEARCH, SYM_SPECIES, SYM_SPLIT, SYM_TO_PRIMITIVE, SYM_TO_STRING_TAG, SYM_UNSCOPABLES } from "./symbols";
export const enum SerovalConstant {
Null = 0,
Undefined = 1,
True = 2,
False = 3,
NegZero = 4,
Inf = 5,
NegInf = 6,
Nan = 7,
}
export const enum SerovalNodeType {
Number = 0,
String = 1,
Constant = 2,
BigInt = 3,
IndexedValue = 4,
Date = 5,
RegExp = 6,
Set = 7,
Map = 8,
Array = 9,
Object = 10,
NullConstructor = 11,
Promise = 12,
Error = 13,
AggregateError = 14,
TypedArray = 15,
BigIntTypedArray = 16,
WKSymbol = 17,
Reference = 18,
ArrayBuffer = 19,
DataView = 20,
Boxed = 21,
PromiseConstructor = 22,
PromiseSuccess = 23,
PromiseFailure = 24,
Plugin = 25,
SpecialReference = 26,
IteratorFactory = 27,
IteratorFactoryInstance = 28,
AsyncIteratorFactory = 29,
AsyncIteratorFactoryInstance = 30,
StreamConstructor = 31,
StreamNext = 32,
StreamThrow = 33,
StreamReturn = 34,
}
export const enum SerovalObjectFlags {
None = 0,
NonExtensible = 1,
Sealed = 2,
Frozen = 3,
}
export const enum Symbols {
AsyncIterator = 0,
HasInstance = 1,
IsConcatSpreadable = 2,
Iterator = 3,
Match = 4,
MatchAll = 5,
Replace = 6,
Search = 7,
Species = 8,
Split = 9,
ToPrimitive = 10,
ToStringTag = 11,
Unscopables = 12,
}
export const SYMBOL_STRING: Record<Symbols, string> = {
[Symbols.AsyncIterator]: 'Symbol.asyncIterator',
[Symbols.HasInstance]: 'Symbol.hasInstance',
[Symbols.IsConcatSpreadable]: 'Symbol.isConcatSpreadable',
[Symbols.Iterator]: 'Symbol.iterator',
[Symbols.Match]: 'Symbol.match',
[Symbols.MatchAll]: 'Symbol.matchAll',
[Symbols.Replace]: 'Symbol.replace',
[Symbols.Search]: 'Symbol.search',
[Symbols.Species]: 'Symbol.species',
[Symbols.Split]: 'Symbol.split',
[Symbols.ToPrimitive]: 'Symbol.toPrimitive',
[Symbols.ToStringTag]: 'Symbol.toStringTag',
[Symbols.Unscopables]: 'Symbol.unscopables',
};
export const INV_SYMBOL_REF = /* @__PURE__ */ {
[SYM_ASYNC_ITERATOR]: Symbols.AsyncIterator,
[SYM_HAS_INSTANCE]: Symbols.HasInstance,
[SYM_IS_CONCAT_SPREADABLE]: Symbols.IsConcatSpreadable,
[SYM_ITERATOR]: Symbols.Iterator,
[SYM_MATCH]: Symbols.Match,
[SYM_MATCH_ALL]: Symbols.MatchAll,
[SYM_REPLACE]: Symbols.Replace,
[SYM_SEARCH]: Symbols.Search,
[SYM_SPECIES]: Symbols.Species,
[SYM_SPLIT]: Symbols.Split,
[SYM_TO_PRIMITIVE]: Symbols.ToPrimitive,
[SYM_TO_STRING_TAG]: Symbols.ToStringTag,
[SYM_UNSCOPABLES]: Symbols.Unscopables,
};
export type WellKnownSymbols = keyof typeof INV_SYMBOL_REF;
export const SYMBOL_REF: Record<Symbols, WellKnownSymbols> = {
[Symbols.AsyncIterator]: SYM_ASYNC_ITERATOR,
[Symbols.HasInstance]: SYM_HAS_INSTANCE,
[Symbols.IsConcatSpreadable]: SYM_IS_CONCAT_SPREADABLE,
[Symbols.Iterator]: SYM_ITERATOR,
[Symbols.Match]: SYM_MATCH,
[Symbols.MatchAll]: SYM_MATCH_ALL,
[Symbols.Replace]: SYM_REPLACE,
[Symbols.Search]: SYM_SEARCH,
[Symbols.Species]: SYM_SPECIES,
[Symbols.Split]: SYM_SPLIT,
[Symbols.ToPrimitive]: SYM_TO_PRIMITIVE,
[Symbols.ToStringTag]: SYM_TO_STRING_TAG,
[Symbols.Unscopables]: SYM_UNSCOPABLES,
};
export const CONSTANT_STRING: Record<SerovalConstant, string> = {
[SerovalConstant.True]: '!0',
[SerovalConstant.False]: '!1',
[SerovalConstant.Undefined]: 'void 0',
[SerovalConstant.Null]: 'null',
[SerovalConstant.NegZero]: '-0',
[SerovalConstant.Inf]: '1/0',
[SerovalConstant.NegInf]: '-1/0',
[SerovalConstant.Nan]: '0/0',
};
export const CONSTANT_VAL: Record<SerovalConstant, unknown> = {
[SerovalConstant.True]: true,
[SerovalConstant.False]: false,
[SerovalConstant.Undefined]: undefined,
[SerovalConstant.Null]: null,
[SerovalConstant.NegZero]: -0,
[SerovalConstant.Inf]: Number.POSITIVE_INFINITY,
[SerovalConstant.NegInf]: Number.NEGATIVE_INFINITY,
[SerovalConstant.Nan]: Number.NaN,
};
export const enum ErrorConstructorTag {
Error = 0,
EvalError = 1,
RangeError = 2,
ReferenceError = 3,
SyntaxError = 4,
TypeError = 5,
URIError = 6,
}
export const ERROR_CONSTRUCTOR_STRING: Record<ErrorConstructorTag, string> = {
[ErrorConstructorTag.Error]: 'Error',
[ErrorConstructorTag.EvalError]: 'EvalError',
[ErrorConstructorTag.RangeError]: 'RangeError',
[ErrorConstructorTag.ReferenceError]: 'ReferenceError',
[ErrorConstructorTag.SyntaxError]: 'SyntaxError',
[ErrorConstructorTag.TypeError]: 'TypeError',
[ErrorConstructorTag.URIError]: 'URIError',
};
type ErrorConstructors =
| ErrorConstructor
| EvalErrorConstructor
| RangeErrorConstructor
| ReferenceErrorConstructor
| SyntaxErrorConstructor
| TypeErrorConstructor
| URIErrorConstructor;
export const ERROR_CONSTRUCTOR: Record<ErrorConstructorTag, ErrorConstructors> =
{
[ErrorConstructorTag.Error]: Error,
[ErrorConstructorTag.EvalError]: EvalError,
[ErrorConstructorTag.RangeError]: RangeError,
[ErrorConstructorTag.ReferenceError]: ReferenceError,
[ErrorConstructorTag.SyntaxError]: SyntaxError,
[ErrorConstructorTag.TypeError]: TypeError,
[ErrorConstructorTag.URIError]: URIError,
};
export const NIL = undefined;
import type { Stream } from './stream';
type SpecialPromise = Promise<unknown> & { s?: 1 | 2; v?: unknown };
export interface PromiseConstructorResolver {
p: SpecialPromise;
s: (value: unknown) => void;
f: (value: unknown) => void;
}
export const PROMISE_CONSTRUCTOR = (): PromiseConstructorResolver => {
const resolver = {
p: 0,
s: 0,
f: 0,
} as unknown as PromiseConstructorResolver;
resolver.p = new Promise((resolve, reject) => {
resolver.s = resolve;
resolver.f = reject;
});
return resolver;
};
export const PROMISE_SUCCESS = (
resolver: PromiseConstructorResolver,
data: unknown,
): void => {
resolver.s(data);
resolver.p.s = 1;
resolver.p.v = data;
};
export const PROMISE_FAILURE = (
resolver: PromiseConstructorResolver,
data: unknown,
): void => {
resolver.f(data);
resolver.p.s = 2;
resolver.p.v = data;
};
export const SERIALIZED_PROMISE_CONSTRUCTOR =
/* @__PURE__ */ PROMISE_CONSTRUCTOR.toString();
export const SERIALIZED_PROMISE_SUCCESS =
/* @__PURE__ */ PROMISE_SUCCESS.toString();
export const SERIALIZED_PROMISE_FAILURE =
/* @__PURE__ */ PROMISE_FAILURE.toString();
interface StreamListener<T> {
next(value: T): void;
throw(value: unknown): void;
return(value: T): void;
}
export const STREAM_CONSTRUCTOR = () => {
const buffer: unknown[] = [];
const listeners: StreamListener<unknown>[] = [];
let alive = true;
let success = false;
let count = 0;
const flush = (
value: unknown,
mode: keyof StreamListener<unknown>,
x?: number,
) => {
for (x = 0; x < count; x++) {
if (listeners[x]) {
listeners[x][mode](value);
}
}
};
const up = (
listener: StreamListener<unknown>,
x?: number,
z?: number,
current?: unknown,
) => {
for (x = 0, z = buffer.length; x < z; x++) {
current = buffer[x];
if (!alive && x === z - 1) {
listener[success ? 'return' : 'throw'](current);
} else {
listener.next(current);
}
}
};
const on = (listener: StreamListener<unknown>, temp?: number) => {
if (alive) {
temp = count++;
listeners[temp] = listener;
}
up(listener);
return () => {
if (alive) {
listeners[temp!] = listeners[count];
listeners[count--] = undefined as any;
}
};
};
return {
__SEROVAL_STREAM__: true,
on: (listener: StreamListener<unknown>) => on(listener),
next: (value: unknown) => {
if (alive) {
buffer.push(value);
flush(value, 'next');
}
},
throw: (value: unknown) => {
if (alive) {
buffer.push(value);
flush(value, 'throw');
alive = false;
success = false;
listeners.length = 0;
}
},
return: (value: unknown) => {
if (alive) {
buffer.push(value);
flush(value, 'return');
alive = false;
success = true;
listeners.length = 0;
}
},
};
};
export const SERIALIZED_STREAM_CONSTRUCTOR =
/* @__PURE__ */ STREAM_CONSTRUCTOR.toString();
export interface Sequence {
v: unknown[];
t: number;
d: number;
}
export const ITERATOR_CONSTRUCTOR =
(symbol: symbol) => (sequence: Sequence) => () => {
let index = 0;
const instance = {
[symbol]: () => instance,
next: () => {
if (index > sequence.d) {
return {
done: true,
value: undefined,
};
}
const currentIndex = index++;
const data = sequence.v[currentIndex];
if (currentIndex === sequence.t) {
throw data;
}
return {
done: currentIndex === sequence.d,
value: data,
};
},
};
return instance;
};
export const SERIALIZED_ITERATOR_CONSTRUCTOR =
/* @__PURE__ */ ITERATOR_CONSTRUCTOR.toString();
export const ASYNC_ITERATOR_CONSTRUCTOR =
(symbol: symbol, createPromise: typeof PROMISE_CONSTRUCTOR) =>
(stream: Stream<unknown>) =>
() => {
let count = 0;
let doneAt = -1;
let isThrow = false;
const buffer: unknown[] = [];
const pending: PromiseConstructorResolver[] = [];
const finalize = (i = 0, len = pending.length) => {
for (; i < len; i++) {
pending[i].s({
done: true,
value: undefined,
});
}
};
stream.on({
next: value => {
const temp = pending.shift();
if (temp) {
temp.s({ done: false, value });
}
buffer.push(value);
},
throw: value => {
const temp = pending.shift();
if (temp) {
temp.f(value);
}
finalize();
doneAt = buffer.length;
isThrow = true;
buffer.push(value);
},
return: value => {
const temp = pending.shift();
if (temp) {
temp.s({ done: true, value });
}
finalize();
doneAt = buffer.length;
buffer.push(value);
},
});
const instance = {
[symbol]: () => instance,
next: () => {
if (doneAt === -1) {
const index = count++;
if (index >= buffer.length) {
const temp = createPromise();
pending.push(temp);
return temp.p;
}
return {
done: false,
value: buffer[index],
};
}
if (count > doneAt) {
return {
done: true,
value: undefined,
};
}
const index = count++;
const value = buffer[index];
if (index !== doneAt) {
return {
done: false,
value,
};
}
if (isThrow) {
throw value;
}
return {
done: true,
value,
};
},
};
return instance;
};
export const SERIALIZED_ASYNC_ITERATOR_CONSTRUCTOR =
/* @__PURE__ */ ASYNC_ITERATOR_CONSTRUCTOR.toString();
export const ARRAY_BUFFER_CONSTRUCTOR = (length: number, b64: string) => {
const decoded = atob(b64);
const arr = new Uint8Array(length);
for (let i = 0; i < length; i++) {
arr[i] = decoded.charCodeAt(i);
}
return arr.buffer;
};
export const SERIALIZED_ARRAY_BUFFER_CONSTRUCTOR =
/* @__PURE__ */ ARRAY_BUFFER_CONSTRUCTOR.toString();
import {
createAggregateErrorNode,
createArrayNode,
createAsyncIteratorFactoryInstanceNode,
createBigIntNode,
createBigIntTypedArrayNode,
createBoxedNode,
createDataViewNode,
createDateNode,
createErrorNode,
createIteratorFactoryInstanceNode,
createNumberNode,
createPluginNode,
createRegExpNode,
createSetNode,
createStreamConstructorNode,
createStreamNextNode,
createStreamReturnNode,
createStreamThrowNode,
createStringNode,
createTypedArrayNode,
} from '../base-primitives';
import { Feature } from '../compat';
import { NIL, SerovalNodeType } from '../constants';
import { SerovalParserError, SerovalUnsupportedTypeError } from '../errors';
import { FALSE_NODE, NULL_NODE, TRUE_NODE, UNDEFINED_NODE } from '../literals';
import { createSerovalNode } from '../node';
import { OpaqueReference } from '../opaque-reference';
import type { SerovalMode } from '../plugin';
import { SpecialReference } from '../special-reference';
import type { Stream } from '../stream';
import { createStreamFromAsyncIterable, isStream } from '../stream';
import { serializeString } from '../string';
import {
SYM_ASYNC_ITERATOR,
SYM_IS_CONCAT_SPREADABLE,
SYM_ITERATOR,
SYM_TO_STRING_TAG,
} from '../symbols';
import type {
SerovalAggregateErrorNode,
SerovalArrayNode,
SerovalBigIntTypedArrayNode,
SerovalBoxedNode,
SerovalDataViewNode,
SerovalErrorNode,
SerovalMapNode,
SerovalNode,
SerovalNullConstructorNode,
SerovalObjectNode,
SerovalObjectRecordKey,
SerovalObjectRecordNode,
SerovalPluginNode,
SerovalPromiseNode,
SerovalSetNode,
SerovalStreamConstructorNode,
SerovalTypedArrayNode,
} from '../types';
import { getErrorOptions } from '../utils/error';
import { iteratorToSequence } from '../utils/iterator-to-sequence';
import promiseToResult from '../utils/promise-to-result';
import type {
BigIntTypedArrayValue,
TypedArrayValue,
} from '../utils/typed-array';
import type { BaseParserContext, BaseParserContextOptions } from './parser';
import {
createArrayBufferNode,
createBaseParserContext,
createMapNode,
createObjectNode,
getReferenceNode,
markParserRef,
parseAsyncIteratorFactory,
parseIteratorFactory,
ParserNodeType,
parseSpecialReference,
parseWellKnownSymbol,
} from './parser';
type ObjectLikeNode =
| SerovalObjectNode
| SerovalNullConstructorNode
| SerovalPromiseNode;
export type AsyncParserContextOptions = BaseParserContextOptions;
export interface AsyncParserContext {
base: BaseParserContext;
child: AsyncParsePluginContext | undefined;
}
export function createAsyncParserContext(
mode: SerovalMode,
options: AsyncParserContextOptions,
): AsyncParserContext {
return {
base: createBaseParserContext(mode, options),
child: undefined,
};
}
export class AsyncParsePluginContext {
constructor(private _p: AsyncParserContext) {}
parse<T>(current: T): Promise<SerovalNode> {
return parseAsync(this._p, current);
}
}
async function parseItems(
ctx: AsyncParserContext,
current: unknown[],
): Promise<SerovalNode[]> {
const nodes = [];
for (let i = 0, len = current.length; i < len; i++) {
// For consistency in holes
if (i in current) {
nodes[i] = await parseAsync(ctx, current[i]);
}
}
return nodes;
}
async function parseArray(
ctx: AsyncParserContext,
id: number,
current: unknown[],
): Promise<SerovalArrayNode> {
return createArrayNode(id, current, await parseItems(ctx, current));
}
async function parseProperties(
ctx: AsyncParserContext,
properties: Record<string | symbol, unknown>,
): Promise<SerovalObjectRecordNode> {
const entries = Object.entries(properties);
const keyNodes: SerovalObjectRecordKey[] = [];
const valueNodes: SerovalNode[] = [];
for (let i = 0, len = entries.length; i < len; i++) {
keyNodes.push(serializeString(entries[i][0]));
valueNodes.push(await parseAsync(ctx, entries[i][1]));
}
// Check special properties
if (SYM_ITERATOR in properties) {
keyNodes.push(parseWellKnownSymbol(ctx.base, SYM_ITERATOR));
valueNodes.push(
createIteratorFactoryInstanceNode(
parseIteratorFactory(ctx.base),
await parseAsync(
ctx,
iteratorToSequence(properties as unknown as Iterable<unknown>),
),
),
);
}
if (SYM_ASYNC_ITERATOR in properties) {
keyNodes.push(parseWellKnownSymbol(ctx.base, SYM_ASYNC_ITERATOR));
valueNodes.push(
createAsyncIteratorFactoryInstanceNode(
parseAsyncIteratorFactory(ctx.base),
await parseAsync(
ctx,
createStreamFromAsyncIterable(
properties as unknown as AsyncIterable<unknown>,
),
),
),
);
}
if (SYM_TO_STRING_TAG in properties) {
keyNodes.push(parseWellKnownSymbol(ctx.base, SYM_TO_STRING_TAG));
valueNodes.push(createStringNode(properties[SYM_TO_STRING_TAG] as string));
}
if (SYM_IS_CONCAT_SPREADABLE in properties) {
keyNodes.push(parseWellKnownSymbol(ctx.base, SYM_IS_CONCAT_SPREADABLE));
valueNodes.push(
properties[SYM_IS_CONCAT_SPREADABLE] ? TRUE_NODE : FALSE_NODE,
);
}
return {
k: keyNodes,
v: valueNodes,
s: keyNodes.length,
};
}
async function parsePlainObject(
ctx: AsyncParserContext,
id: number,
current: Record<string, unknown>,
empty: boolean,
): Promise<ObjectLikeNode> {
return createObjectNode(
id,
current,
empty,
await parseProperties(ctx, current),
);
}
// TODO: check if parseBoxedSync can be used
async function parseBoxed(
ctx: AsyncParserContext,
id: number,
current: object,
): Promise<SerovalBoxedNode> {
return createBoxedNode(id, await parseAsync(ctx, current.valueOf()));
}
async function parseTypedArray(
ctx: AsyncParserContext,
id: number,
current: TypedArrayValue,
): Promise<SerovalTypedArrayNode> {
return createTypedArrayNode(
id,
current,
await parseAsync(ctx, current.buffer),
);
}
async function parseBigIntTypedArray(
ctx: AsyncParserContext,
id: number,
current: BigIntTypedArrayValue,
): Promise<SerovalBigIntTypedArrayNode> {
return createBigIntTypedArrayNode(
id,
current,
await parseAsync(ctx, current.buffer),
);
}
async function parseDataView(
ctx: AsyncParserContext,
id: number,
current: DataView,
): Promise<SerovalDataViewNode> {
return createDataViewNode(id, current, await parseAsync(ctx, current.buffer));
}
async function parseError(
ctx: AsyncParserContext,
id: number,
current: Error,
): Promise<SerovalErrorNode> {
const options = getErrorOptions(current, ctx.base.features);
return createErrorNode(
id,
current,
options ? await parseProperties(ctx, options) : NIL,
);
}
async function parseAggregateError(
ctx: AsyncParserContext,
id: number,
current: AggregateError,
): Promise<SerovalAggregateErrorNode> {
const options = getErrorOptions(current, ctx.base.features);
return createAggregateErrorNode(
id,
current,
options ? await parseProperties(ctx, options) : NIL,
);
}
async function parseMap(
ctx: AsyncParserContext,
id: number,
current: Map<unknown, unknown>,
): Promise<SerovalMapNode> {
const keyNodes: SerovalNode[] = [];
const valueNodes: SerovalNode[] = [];
for (const [key, value] of current.entries()) {
keyNodes.push(await parseAsync(ctx, key));
valueNodes.push(await parseAsync(ctx, value));
}
return createMapNode(ctx.base, id, keyNodes, valueNodes, current.size);
}
async function parseSet(
ctx: AsyncParserContext,
id: number,
current: Set<unknown>,
): Promise<SerovalSetNode> {
const items: SerovalNode[] = [];
for (const item of current.keys()) {
items.push(await parseAsync(ctx, item));
}
return createSetNode(id, current.size, items);
}
async function parsePlugin(
ctx: AsyncParserContext,
id: number,
current: unknown,
): Promise<SerovalPluginNode | undefined> {
const currentPlugins = ctx.base.plugins;
if (currentPlugins) {
for (let i = 0, len = currentPlugins.length; i < len; i++) {
const plugin = currentPlugins[i];
if (plugin.parse.async && plugin.test(current)) {
if (ctx.child == null) {
ctx.child = new AsyncParsePluginContext(ctx);
}
return createPluginNode(
id,
plugin.tag,
await plugin.parse.async(current, ctx.child, {
id,
}),
);
}
}
}
return NIL;
}
async function parsePromise(
ctx: AsyncParserContext,
id: number,
current: Promise<unknown>,
): Promise<SerovalPromiseNode> {
const [status, result] = await promiseToResult(current);
return createSerovalNode(
SerovalNodeType.Promise,
id,
status,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
await parseAsync(ctx, result),
NIL,
NIL,
);
}
function parseStreamHandle<T>(
this: AsyncParserContext,
id: number,
current: Stream<T>,
resolve: (value: SerovalNode[] | PromiseLike<SerovalNode[]>) => void,
reject: (reason?: any) => void,
): void {
const sequence: SerovalNode[] = [];
// TODO Optimizable
const cleanup = current.on({
next: value => {
markParserRef(this.base, id);
parseAsync(this, value).then(
data => {
sequence.push(createStreamNextNode(id, data));
},
data => {
reject(data);
cleanup();
},
);
},
throw: value => {
markParserRef(this.base, id);
parseAsync(this, value).then(
data => {
sequence.push(createStreamThrowNode(id, data));
resolve(sequence);
cleanup();
},
data => {
reject(data);
cleanup();
},
);
},
return: value => {
markParserRef(this.base, id);
parseAsync(this, value).then(
data => {
sequence.push(createStreamReturnNode(id, data));
resolve(sequence);
cleanup();
},
data => {
reject(data);
cleanup();
},
);
},
});
}
async function parseStream(
ctx: AsyncParserContext,
id: number,
current: Stream<unknown>,
): Promise<SerovalStreamConstructorNode> {
return createStreamConstructorNode(
id,
parseSpecialReference(ctx.base, SpecialReference.StreamConstructor),
await new Promise<SerovalNode[]>(parseStreamHandle.bind(ctx, id, current)),
);
}
export async function parseObjectAsync(
ctx: AsyncParserContext,
id: number,
current: object,
): Promise<SerovalNode> {
if (Array.isArray(current)) {
return parseArray(ctx, id, current);
}
if (isStream(current)) {
return parseStream(ctx, id, current);
}
const currentClass = current.constructor;
if (currentClass === OpaqueReference) {
return parseAsync(
ctx,
(current as OpaqueReference<unknown, unknown>).replacement,
);
}
const parsed = await parsePlugin(ctx, id, current);
if (parsed) {
return parsed;
}
switch (currentClass) {
case Object:
return parsePlainObject(
ctx,
id,
current as Record<string, unknown>,
false,
);
case NIL:
return parsePlainObject(
ctx,
id,
current as Record<string, unknown>,
true,
);
case Date:
return createDateNode(id, current as unknown as Date);
case RegExp:
return createRegExpNode(id, current as unknown as RegExp);
case Error:
case EvalError:
case RangeError:
case ReferenceError:
case SyntaxError:
case TypeError:
case URIError:
return parseError(ctx, id, current as unknown as Error);
case Number:
case Boolean:
case String:
case BigInt:
return parseBoxed(ctx, id, current);
case ArrayBuffer:
return createArrayBufferNode(
ctx.base,
id,
current as unknown as ArrayBuffer,
);
case Int8Array:
case Int16Array:
case Int32Array:
case Uint8Array:
case Uint16Array:
case Uint32Array:
case Uint8ClampedArray:
case Float32Array:
case Float64Array:
return parseTypedArray(ctx, id, current as unknown as TypedArrayValue);
case DataView:
return parseDataView(ctx, id, current as unknown as DataView);
case Map:
return parseMap(ctx, id, current as unknown as Map<unknown, unknown>);
case Set:
return parseSet(ctx, id, current as unknown as Set<unknown>);
default:
break;
}
// Promises
if (currentClass === Promise || current instanceof Promise) {
return parsePromise(ctx, id, current as unknown as Promise<unknown>);
}
const currentFeatures = ctx.base.features;
// BigInt Typed Arrays
if (currentFeatures & Feature.BigIntTypedArray) {
switch (currentClass) {
case BigInt64Array:
case BigUint64Array:
return parseBigIntTypedArray(
ctx,
id,
current as unknown as BigIntTypedArrayValue,
);
default:
break;
}
}
if (
currentFeatures & Feature.AggregateError &&
typeof AggregateError !== 'undefined' &&
(currentClass === AggregateError || current instanceof AggregateError)
) {
return parseAggregateError(ctx, id, current as unknown as AggregateError);
}
// Slow path. We only need to handle Errors and Iterators
// since they have very broad implementations.
if (current instanceof Error) {
return parseError(ctx, id, current);
}
// Generator functions don't have a global constructor
// despite existing
if (SYM_ITERATOR in current || SYM_ASYNC_ITERATOR in current) {
return parsePlainObject(ctx, id, current, !!currentClass);
}
throw new SerovalUnsupportedTypeError(current);
}
export async function parseFunctionAsync(
ctx: AsyncParserContext,
current: unknown,
): Promise<SerovalNode> {
const ref = getReferenceNode(ctx.base, current);
if (ref.type !== ParserNodeType.Fresh) {
return ref.value;
}
const plugin = await parsePlugin(ctx, ref.value, current);
if (plugin) {
return plugin;
}
throw new SerovalUnsupportedTypeError(current);
}
export async function parseAsync<T>(
ctx: AsyncParserContext,
current: T,
): Promise<SerovalNode> {
switch (typeof current) {
case 'boolean':
return current ? TRUE_NODE : FALSE_NODE;
case 'undefined':
return UNDEFINED_NODE;
case 'string':
return createStringNode(current as string);
case 'number':
return createNumberNode(current as number);
case 'bigint':
return createBigIntNode(current as bigint);
case 'object': {
if (current) {
const ref = getReferenceNode(ctx.base, current);
return ref.type === 0
? await parseObjectAsync(ctx, ref.value, current as object)
: ref.value;
}
return NULL_NODE;
}
case 'symbol':
return parseWellKnownSymbol(ctx.base, current);
case 'function':
return parseFunctionAsync(ctx, current);
default:
throw new SerovalUnsupportedTypeError(current);
}
}
export async function parseTopAsync<T>(
ctx: AsyncParserContext,
current: T,
): Promise<SerovalNode> {
try {
return await parseAsync(ctx, current);
} catch (error) {
throw error instanceof SerovalParserError
? error
: new SerovalParserError(error);
}
}
import {
CONSTANT_VAL,
ERROR_CONSTRUCTOR,
SerovalNodeType,
SerovalObjectFlags,
SYMBOL_REF,
} from '../constants';
import {
ARRAY_BUFFER_CONSTRUCTOR,
PROMISE_CONSTRUCTOR,
type PromiseConstructorResolver,
} from '../constructors';
import {
SerovalDeserializationError,
SerovalMissingInstanceError,
SerovalMissingPluginError,
SerovalUnsupportedNodeError,
} from '../errors';
import type { PluginAccessOptions } from '../plugin';
import { SerovalMode } from '../plugin';
import { getReference } from '../reference';
import type { Stream } from '../stream';
import { createStream, streamToAsyncIterable } from '../stream';
import { deserializeString } from '../string';
import type {
SerovalAggregateErrorNode,
SerovalArrayBufferNode,
SerovalArrayNode,
SerovalAsyncIteratorFactoryInstanceNode,
SerovalAsyncIteratorFactoryNode,
SerovalBigIntTypedArrayNode,
SerovalBoxedNode,
SerovalDataViewNode,
SerovalDateNode,
SerovalErrorNode,
SerovalIteratorFactoryInstanceNode,
SerovalIteratorFactoryNode,
SerovalMapNode,
SerovalNode,
SerovalNullConstructorNode,
SerovalObjectNode,
SerovalObjectRecordKey,
SerovalObjectRecordNode,
SerovalPluginNode,
SerovalPromiseConstructorNode,
SerovalPromiseNode,
SerovalPromiseRejectNode,
SerovalPromiseResolveNode,
SerovalReferenceNode,
SerovalRegExpNode,
SerovalSetNode,
SerovalStreamConstructorNode,
SerovalStreamNextNode,
SerovalStreamReturnNode,
SerovalStreamThrowNode,
SerovalTypedArrayNode,
} from '../types';
import type { Sequence } from '../utils/iterator-to-sequence';
import { sequenceToIterator } from '../utils/iterator-to-sequence';
import type {
BigIntTypedArrayValue,
TypedArrayValue,
} from '../utils/typed-array';
import { getTypedArrayConstructor } from '../utils/typed-array';
function applyObjectFlag(obj: unknown, flag: SerovalObjectFlags): unknown {
switch (flag) {
case SerovalObjectFlags.Frozen:
return Object.freeze(obj);
case SerovalObjectFlags.NonExtensible:
return Object.preventExtensions(obj);
case SerovalObjectFlags.Sealed:
return Object.seal(obj);
default:
return obj;
}
}
type AssignableValue = AggregateError | Error | Iterable<unknown>;
type AssignableNode = SerovalAggregateErrorNode | SerovalErrorNode;
export interface BaseDeserializerContextOptions extends PluginAccessOptions {
refs?: Map<number, unknown>;
}
export interface BaseDeserializerContext extends PluginAccessOptions {
readonly mode: SerovalMode;
/**
* Mapping ids to values
*/
refs: Map<number, unknown>;
}
export function createBaseDeserializerContext(
mode: SerovalMode,
options: BaseDeserializerContextOptions,
): BaseDeserializerContext {
return {
mode,
plugins: options.plugins,
refs: options.refs || new Map(),
};
}
export interface VanillaDeserializerContextOptions
extends Omit<BaseDeserializerContextOptions, 'refs'> {
markedRefs: number[] | Set<number>;
}
export interface VanillaDeserializerState {
marked: Set<number>;
}
export interface VanillaDeserializerContext {
mode: SerovalMode.Vanilla;
base: BaseDeserializerContext;
child: DeserializePluginContext | undefined;
state: VanillaDeserializerState;
}
export function createVanillaDeserializerContext(
options: VanillaDeserializerContextOptions,
): VanillaDeserializerContext {
return {
mode: SerovalMode.Vanilla,
base: createBaseDeserializerContext(SerovalMode.Vanilla, options),
child: undefined,
state: {
marked: new Set(options.markedRefs),
},
};
}
export interface CrossDeserializerContext {
mode: SerovalMode.Cross;
base: BaseDeserializerContext;
child: DeserializePluginContext | undefined;
}
export type CrossDeserializerContextOptions = BaseDeserializerContextOptions;
export function createCrossDeserializerContext(
options: CrossDeserializerContextOptions,
): CrossDeserializerContext {
return {
mode: SerovalMode.Cross,
base: createBaseDeserializerContext(SerovalMode.Cross, options),
child: undefined,
};
}
type DeserializerContext =
| VanillaDeserializerContext
| CrossDeserializerContext;
export class DeserializePluginContext {
constructor(private _p: DeserializerContext) {}
deserialize<T>(node: SerovalNode): T {
return deserialize(this._p, node) as T;
}
}
function assignIndexedValueVanilla<T>(
ctx: VanillaDeserializerContext,
id: number,
value: T,
): T {
if (ctx.state.marked.has(id)) {
ctx.base.refs.set(id, value);
}
return value;
}
function assignIndexedValueCross<T>(
ctx: CrossDeserializerContext,
id: number,
value: T,
): T {
if (!ctx.base.refs.has(id)) {
ctx.base.refs.set(id, value);
}
return value;
}
function assignIndexedValue<T>(
ctx: DeserializerContext,
id: number,
value: T,
): T {
return ctx.mode === SerovalMode.Vanilla
? assignIndexedValueVanilla(ctx, id, value)
: assignIndexedValueCross(ctx, id, value);
}
function deserializeReference(
ctx: DeserializerContext,
node: SerovalReferenceNode,
): unknown {
return assignIndexedValue(
ctx,
node.i,
getReference(deserializeString(node.s)),
);
}
function deserializeArray(
ctx: DeserializerContext,
node: SerovalArrayNode,
): unknown[] {
const len = node.l;
const result: unknown[] = assignIndexedValue(
ctx,
node.i,
new Array<unknown>(len),
);
let item: SerovalNode | undefined;
for (let i = 0; i < len; i++) {
item = node.a[i];
if (item) {
result[i] = deserialize(ctx, item);
}
}
applyObjectFlag(result, node.o);
return result;
}
function deserializeProperties(
ctx: DeserializerContext,
node: SerovalObjectRecordNode,
result: Record<string | symbol, unknown>,
): Record<string | symbol, unknown> {
const len = node.s;
if (len) {
const keys = node.k;
const vals = node.v;
for (let i = 0, key: SerovalObjectRecordKey; i < len; i++) {
key = keys[i];
if (typeof key === 'string') {
result[deserializeString(key)] = deserialize(ctx, vals[i]);
} else {
result[deserialize(ctx, key) as symbol] = deserialize(ctx, vals[i]);
}
}
}
return result;
}
function deserializeObject(
ctx: DeserializerContext,
node: SerovalObjectNode | SerovalNullConstructorNode,
): Record<string, unknown> {
const result = assignIndexedValue(
ctx,
node.i,
(node.t === SerovalNodeType.Object ? {} : Object.create(null)) as Record<
string,
unknown
>,
);
deserializeProperties(ctx, node.p, result);
applyObjectFlag(result, node.o);
return result;
}
function deserializeDate(
ctx: DeserializerContext,
node: SerovalDateNode,
): Date {
return assignIndexedValue(ctx, node.i, new Date(node.s));
}
function deserializeRegExp(
ctx: DeserializerContext,
node: SerovalRegExpNode,
): RegExp {
return assignIndexedValue(
ctx,
node.i,
new RegExp(deserializeString(node.c), node.m),
);
}
function deserializeSet(
ctx: DeserializerContext,
node: SerovalSetNode,
): Set<unknown> {
const result = assignIndexedValue(ctx, node.i, new Set<unknown>());
const items = node.a;
for (let i = 0, len = node.l; i < len; i++) {
result.add(deserialize(ctx, items[i]));
}
return result;
}
function deserializeMap(
ctx: DeserializerContext,
node: SerovalMapNode,
): Map<unknown, unknown> {
const result = assignIndexedValue(ctx, node.i, new Map<unknown, unknown>());
const keys = node.e.k;
const vals = node.e.v;
for (let i = 0, len = node.e.s; i < len; i++) {
result.set(deserialize(ctx, keys[i]), deserialize(ctx, vals[i]));
}
return result;
}
function deserializeArrayBuffer(
ctx: DeserializerContext,
node: SerovalArrayBufferNode,
): ArrayBuffer {
const result = assignIndexedValue(
ctx,
node.i,
ARRAY_BUFFER_CONSTRUCTOR(node.l, deserializeString(node.s)),
);
return result;
}
function deserializeTypedArray(
ctx: DeserializerContext,
node: SerovalTypedArrayNode | SerovalBigIntTypedArrayNode,
): TypedArrayValue | BigIntTypedArrayValue {
const construct = getTypedArrayConstructor(node.c) as Int8ArrayConstructor;
const source = deserialize(ctx, node.f) as ArrayBuffer;
const result = assignIndexedValue(
ctx,
node.i,
new construct(source, node.b, node.l),
);
return result;
}
function deserializeDataView(
ctx: DeserializerContext,
node: SerovalDataViewNode,
): DataView {
const source = deserialize(ctx, node.f) as ArrayBuffer;
const result = assignIndexedValue(
ctx,
node.i,
new DataView(source, node.b, node.l),
);
return result;
}
function deserializeDictionary<T extends AssignableValue>(
ctx: DeserializerContext,
node: AssignableNode,
result: T,
): T {
if (node.p) {
const fields = deserializeProperties(ctx, node.p, {});
Object.assign(result, fields);
}
return result;
}
function deserializeAggregateError(
ctx: DeserializerContext,
node: SerovalAggregateErrorNode,
): AggregateError {
// Serialize the required arguments
const result = assignIndexedValue(
ctx,
node.i,
new AggregateError([], deserializeString(node.m)),
);
// `AggregateError` might've been extended
// either through class or custom properties
// Make sure to assign extra properties
return deserializeDictionary(ctx, node, result);
}
function deserializeError(
ctx: DeserializerContext,
node: SerovalErrorNode,
): Error {
const construct = ERROR_CONSTRUCTOR[node.s];
const result = assignIndexedValue(
ctx,
node.i,
new construct(deserializeString(node.m)),
);
return deserializeDictionary(ctx, node, result);
}
function deserializePromise(
ctx: DeserializerContext,
node: SerovalPromiseNode,
): Promise<unknown> {
const deferred = PROMISE_CONSTRUCTOR();
const result = assignIndexedValue(ctx, node.i, deferred.p);
const deserialized = deserialize(ctx, node.f);
if (node.s) {
deferred.s(deserialized);
} else {
deferred.f(deserialized);
}
return result;
}
function deserializeBoxed(
ctx: DeserializerContext,
node: SerovalBoxedNode,
): unknown {
// biome-ignore lint/style/useConsistentBuiltinInstantiation: intended
return assignIndexedValue(ctx, node.i, Object(deserialize(ctx, node.f)));
}
function deserializePlugin(
ctx: DeserializerContext,
node: SerovalPluginNode,
): unknown {
const currentPlugins = ctx.base.plugins;
if (currentPlugins) {
const tag = deserializeString(node.c);
for (let i = 0, len = currentPlugins.length; i < len; i++) {
const plugin = currentPlugins[i];
if (plugin.tag === tag) {
if (ctx.child == null) {
ctx.child = new DeserializePluginContext(ctx);
}
return assignIndexedValue(
ctx,
node.i,
plugin.deserialize(node.s, ctx.child, {
id: node.i,
}),
);
}
}
}
throw new SerovalMissingPluginError(node.c);
}
function deserializePromiseConstructor(
ctx: DeserializerContext,
node: SerovalPromiseConstructorNode,
): unknown {
return assignIndexedValue(
ctx,
node.i,
assignIndexedValue(ctx, node.s, PROMISE_CONSTRUCTOR()).p,
);
}
function deserializePromiseResolve(
ctx: DeserializerContext,
node: SerovalPromiseResolveNode,
): unknown {
const deferred = ctx.base.refs.get(node.i) as
| PromiseConstructorResolver
| undefined;
if (deferred) {
deferred.s(deserialize(ctx, node.a[1]));
return undefined;
}
throw new SerovalMissingInstanceError('Promise');
}
function deserializePromiseReject(
ctx: DeserializerContext,
node: SerovalPromiseRejectNode,
): unknown {
const deferred = ctx.base.refs.get(node.i) as
| PromiseConstructorResolver
| undefined;
if (deferred) {
deferred.f(deserialize(ctx, node.a[1]));
return undefined;
}
throw new SerovalMissingInstanceError('Promise');
}
function deserializeIteratorFactoryInstance(
ctx: DeserializerContext,
node: SerovalIteratorFactoryInstanceNode,
): unknown {
deserialize(ctx, node.a[0]);
const source = deserialize(ctx, node.a[1]);
return sequenceToIterator(source as Sequence);
}
function deserializeAsyncIteratorFactoryInstance(
ctx: DeserializerContext,
node: SerovalAsyncIteratorFactoryInstanceNode,
): unknown {
deserialize(ctx, node.a[0]);
const source = deserialize(ctx, node.a[1]);
return streamToAsyncIterable(source as Stream<any>);
}
function deserializeStreamConstructor(
ctx: DeserializerContext,
node: SerovalStreamConstructorNode,
): unknown {
const result = assignIndexedValue(ctx, node.i, createStream());
const len = node.a.length;
if (len) {
for (let i = 0; i < len; i++) {
deserialize(ctx, node.a[i]);
}
}
return result;
}
function deserializeStreamNext(
ctx: DeserializerContext,
node: SerovalStreamNextNode,
): unknown {
const deferred = ctx.base.refs.get(node.i) as Stream<unknown> | undefined;
if (deferred) {
deferred.next(deserialize(ctx, node.f));
return undefined;
}
throw new SerovalMissingInstanceError('Stream');
}
function deserializeStreamThrow(
ctx: DeserializerContext,
node: SerovalStreamThrowNode,
): unknown {
const deferred = ctx.base.refs.get(node.i) as Stream<unknown> | undefined;
if (deferred) {
deferred.throw(deserialize(ctx, node.f));
return undefined;
}
throw new SerovalMissingInstanceError('Stream');
}
function deserializeStreamReturn(
ctx: DeserializerContext,
node: SerovalStreamReturnNode,
): unknown {
const deferred = ctx.base.refs.get(node.i) as Stream<unknown> | undefined;
if (deferred) {
deferred.return(deserialize(ctx, node.f));
return undefined;
}
throw new SerovalMissingInstanceError('Stream');
}
function deserializeIteratorFactory(
ctx: DeserializerContext,
node: SerovalIteratorFactoryNode,
): unknown {
deserialize(ctx, node.f);
return undefined;
}
function deserializeAsyncIteratorFactory(
ctx: DeserializerContext,
node: SerovalAsyncIteratorFactoryNode,
): unknown {
deserialize(ctx, node.a[1]);
return undefined;
}
export function deserialize(
ctx: DeserializerContext,
node: SerovalNode,
): unknown {
switch (node.t) {
case SerovalNodeType.Constant:
return CONSTANT_VAL[node.s];
case SerovalNodeType.Number:
return node.s;
case SerovalNodeType.String:
return deserializeString(node.s);
case SerovalNodeType.BigInt:
return BigInt(node.s);
case SerovalNodeType.IndexedValue:
return ctx.base.refs.get(node.i);
case SerovalNodeType.Reference:
return deserializeReference(ctx, node);
case SerovalNodeType.Array:
return deserializeArray(ctx, node);
case SerovalNodeType.Object:
case SerovalNodeType.NullConstructor:
return deserializeObject(ctx, node);
case SerovalNodeType.Date:
return deserializeDate(ctx, node);
case SerovalNodeType.RegExp:
return deserializeRegExp(ctx, node);
case SerovalNodeType.Set:
return deserializeSet(ctx, node);
case SerovalNodeType.Map:
return deserializeMap(ctx, node);
case SerovalNodeType.ArrayBuffer:
return deserializeArrayBuffer(ctx, node);
case SerovalNodeType.BigIntTypedArray:
case SerovalNodeType.TypedArray:
return deserializeTypedArray(ctx, node);
case SerovalNodeType.DataView:
return deserializeDataView(ctx, node);
case SerovalNodeType.AggregateError:
return deserializeAggregateError(ctx, node);
case SerovalNodeType.Error:
return deserializeError(ctx, node);
case SerovalNodeType.Promise:
return deserializePromise(ctx, node);
case SerovalNodeType.WKSymbol:
return SYMBOL_REF[node.s];
case SerovalNodeType.Boxed:
return deserializeBoxed(ctx, node);
case SerovalNodeType.Plugin:
return deserializePlugin(ctx, node);
case SerovalNodeType.PromiseConstructor:
return deserializePromiseConstructor(ctx, node);
case SerovalNodeType.PromiseSuccess:
return deserializePromiseResolve(ctx, node);
case SerovalNodeType.PromiseFailure:
return deserializePromiseReject(ctx, node);
case SerovalNodeType.IteratorFactoryInstance:
return deserializeIteratorFactoryInstance(ctx, node);
case SerovalNodeType.AsyncIteratorFactoryInstance:
return deserializeAsyncIteratorFactoryInstance(ctx, node);
case SerovalNodeType.StreamConstructor:
return deserializeStreamConstructor(ctx, node);
case SerovalNodeType.StreamNext:
return deserializeStreamNext(ctx, node);
case SerovalNodeType.StreamThrow:
return deserializeStreamThrow(ctx, node);
case SerovalNodeType.StreamReturn:
return deserializeStreamReturn(ctx, node);
case SerovalNodeType.IteratorFactory:
return deserializeIteratorFactory(ctx, node);
case SerovalNodeType.AsyncIteratorFactory:
return deserializeAsyncIteratorFactory(ctx, node);
// case SerovalNodeType.SpecialReference:
default:
throw new SerovalUnsupportedNodeError(node);
}
}
export function deserializeTop(
ctx: DeserializerContext,
node: SerovalNode,
): unknown {
try {
return deserialize(ctx, node);
} catch (error) {
throw new SerovalDeserializationError(error);
}
}
import {
createIndexedValueNode,
createReferenceNode,
createWKSymbolNode,
} from '../base-primitives';
import { ALL_ENABLED } from '../compat';
import type { WellKnownSymbols } from '../constants';
import { INV_SYMBOL_REF, NIL, SerovalNodeType } from '../constants';
import { SerovalUnsupportedTypeError } from '../errors';
import { createSerovalNode } from '../node';
import type { PluginAccessOptions, SerovalMode } from '../plugin';
import { hasReferenceID } from '../reference';
import {
ASYNC_ITERATOR,
ITERATOR,
SPECIAL_REFS,
SpecialReference,
} from '../special-reference';
import { serializeString } from '../string';
import { SYM_ASYNC_ITERATOR, SYM_ITERATOR } from '../symbols';
import type {
SerovalArrayBufferNode,
SerovalAsyncIteratorFactoryNode,
SerovalIndexedValueNode,
SerovalIteratorFactoryNode,
SerovalMapNode,
SerovalNode,
SerovalNullConstructorNode,
SerovalObjectNode,
SerovalObjectRecordNode,
SerovalPromiseConstructorNode,
SerovalReferenceNode,
SerovalSpecialReferenceNode,
SerovalWKSymbolNode,
} from '../types';
import { getObjectFlag } from '../utils/get-object-flag';
export interface BaseParserContextOptions extends PluginAccessOptions {
disabledFeatures?: number;
refs?: Map<unknown, number>;
}
export const enum ParserNodeType {
Fresh = 0,
Indexed = 1,
Referenced = 2,
}
export interface FreshNode {
type: ParserNodeType.Fresh;
value: number;
}
export interface IndexedNode {
type: ParserNodeType.Indexed;
value: SerovalIndexedValueNode;
}
export interface ReferencedNode {
type: ParserNodeType.Referenced;
value: SerovalReferenceNode;
}
type ObjectNode = FreshNode | IndexedNode | ReferencedNode;
export interface BaseParserContext extends PluginAccessOptions {
readonly mode: SerovalMode;
marked: Set<number>;
refs: Map<unknown, number>;
features: number;
}
export function createBaseParserContext(
mode: SerovalMode,
options: BaseParserContextOptions,
): BaseParserContext {
return {
plugins: options.plugins,
mode,
marked: new Set(),
features: ALL_ENABLED ^ (options.disabledFeatures || 0),
refs: options.refs || new Map(),
};
}
/**
* Ensures that the value (based on an identifier) has been visited by the parser.
* @param ctx
* @param id
*/
export function markParserRef(ctx: BaseParserContext, id: number): void {
ctx.marked.add(id);
}
export function isParserRefMarked(ctx: BaseParserContext, id: number): boolean {
return ctx.marked.has(id);
}
/**
* Creates an identifier for a value
* @param ctx
* @param current
*/
export function createIndexForValue<T>(
ctx: BaseParserContext,
current: T,
): number {
const id = ctx.refs.size;
ctx.refs.set(current, id);
return id;
}
export function getNodeForIndexedValue<T>(
ctx: BaseParserContext,
current: T,
): FreshNode | IndexedNode {
const registeredId = ctx.refs.get(current);
if (registeredId != null) {
markParserRef(ctx, registeredId);
return {
type: ParserNodeType.Indexed,
value: createIndexedValueNode(registeredId),
};
}
return {
type: ParserNodeType.Fresh,
value: createIndexForValue(ctx, current),
};
}
export function getReferenceNode<T>(
ctx: BaseParserContext,
current: T,
): ObjectNode {
const indexed = getNodeForIndexedValue(ctx, current);
if (indexed.type === ParserNodeType.Indexed) {
return indexed;
}
// Special references are special ;)
if (hasReferenceID(current)) {
return {
type: ParserNodeType.Referenced,
value: createReferenceNode(indexed.value, current),
};
}
return indexed;
}
/**
* Parsing methods
*/
export function parseWellKnownSymbol(
ctx: BaseParserContext,
current: symbol,
): SerovalIndexedValueNode | SerovalWKSymbolNode | SerovalReferenceNode {
const ref = getReferenceNode(ctx, current);
if (ref.type !== ParserNodeType.Fresh) {
return ref.value;
}
if (current in INV_SYMBOL_REF) {
return createWKSymbolNode(ref.value, current as WellKnownSymbols);
}
throw new SerovalUnsupportedTypeError(current);
}
export function parseSpecialReference(
ctx: BaseParserContext,
ref: SpecialReference,
): SerovalIndexedValueNode | SerovalSpecialReferenceNode {
const result = getNodeForIndexedValue(ctx, SPECIAL_REFS[ref]);
if (result.type === ParserNodeType.Indexed) {
return result.value;
}
return createSerovalNode(
SerovalNodeType.SpecialReference,
result.value,
ref,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export function parseIteratorFactory(
ctx: BaseParserContext,
): SerovalIndexedValueNode | SerovalIteratorFactoryNode {
const result = getNodeForIndexedValue(ctx, ITERATOR);
if (result.type === ParserNodeType.Indexed) {
return result.value;
}
return createSerovalNode(
SerovalNodeType.IteratorFactory,
result.value,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
parseWellKnownSymbol(ctx, SYM_ITERATOR),
NIL,
NIL,
);
}
export function parseAsyncIteratorFactory(
ctx: BaseParserContext,
): SerovalIndexedValueNode | SerovalAsyncIteratorFactoryNode {
const result = getNodeForIndexedValue(ctx, ASYNC_ITERATOR);
if (result.type === ParserNodeType.Indexed) {
return result.value;
}
return createSerovalNode(
SerovalNodeType.AsyncIteratorFactory,
result.value,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
[
parseSpecialReference(ctx, SpecialReference.PromiseConstructor),
parseWellKnownSymbol(ctx, SYM_ASYNC_ITERATOR),
],
NIL,
NIL,
NIL,
);
}
export function createObjectNode(
id: number,
current: Record<string, unknown>,
empty: boolean,
record: SerovalObjectRecordNode,
): SerovalObjectNode | SerovalNullConstructorNode {
return createSerovalNode(
empty ? SerovalNodeType.NullConstructor : SerovalNodeType.Object,
id,
NIL,
NIL,
NIL,
NIL,
record,
NIL,
NIL,
NIL,
NIL,
getObjectFlag(current),
);
}
export function createMapNode(
ctx: BaseParserContext,
id: number,
k: SerovalNode[],
v: SerovalNode[],
s: number,
): SerovalMapNode {
return createSerovalNode(
SerovalNodeType.Map,
id,
NIL,
NIL,
NIL,
NIL,
NIL,
{ k, v, s },
NIL,
parseSpecialReference(ctx, SpecialReference.MapSentinel),
NIL,
NIL,
);
}
export function createPromiseConstructorNode(
ctx: BaseParserContext,
id: number,
resolver: number,
): SerovalPromiseConstructorNode {
return createSerovalNode(
SerovalNodeType.PromiseConstructor,
id,
resolver,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
parseSpecialReference(ctx, SpecialReference.PromiseConstructor),
NIL,
NIL,
);
}
export function createArrayBufferNode(
ctx: BaseParserContext,
id: number,
current: ArrayBuffer,
): SerovalArrayBufferNode {
const bytes = new Uint8Array(current);
const len = bytes.length;
let result = '';
for (let i = 0; i < len; i++) {
result += String.fromCharCode(bytes[i]);
}
return createSerovalNode(
SerovalNodeType.ArrayBuffer,
id,
serializeString(btoa(result)),
len,
NIL,
NIL,
NIL,
NIL,
NIL,
parseSpecialReference(ctx, SpecialReference.ArrayBufferConstructor),
NIL,
NIL,
);
}
import { Feature } from '../compat';
import {
CONSTANT_STRING,
ERROR_CONSTRUCTOR_STRING,
NIL,
SerovalNodeType,
SerovalObjectFlags,
SYMBOL_STRING,
} from '../constants';
import {
SERIALIZED_ASYNC_ITERATOR_CONSTRUCTOR,
SERIALIZED_ITERATOR_CONSTRUCTOR,
} from '../constructors';
import {
SerovalMissingPluginError,
SerovalSerializationError,
SerovalUnsupportedNodeError,
} from '../errors';
import { createEffectfulFunction, createFunction } from '../function-string';
import { GLOBAL_CONTEXT_REFERENCES, REFERENCES_KEY } from '../keys';
import type { PluginAccessOptions } from '../plugin';
import { SerovalMode } from '../plugin';
import { SPECIAL_REF_STRING } from '../special-reference';
import { serializeString } from '../string';
import type {
SerovalAggregateErrorNode,
SerovalArrayBufferNode,
SerovalArrayNode,
SerovalAsyncIteratorFactoryInstanceNode,
SerovalAsyncIteratorFactoryNode,
SerovalBigIntTypedArrayNode,
SerovalBoxedNode,
SerovalDataViewNode,
SerovalDateNode,
SerovalErrorNode,
SerovalIndexedValueNode,
SerovalIteratorFactoryInstanceNode,
SerovalIteratorFactoryNode,
SerovalMapNode,
SerovalNode,
SerovalNodeWithID,
SerovalNullConstructorNode,
SerovalObjectNode,
SerovalObjectRecordKey,
SerovalObjectRecordNode,
SerovalPluginNode,
SerovalPromiseConstructorNode,
SerovalPromiseNode,
SerovalPromiseRejectNode,
SerovalPromiseResolveNode,
SerovalReferenceNode,
SerovalRegExpNode,
SerovalSetNode,
SerovalStreamConstructorNode,
SerovalStreamNextNode,
SerovalStreamReturnNode,
SerovalStreamThrowNode,
SerovalTypedArrayNode,
} from '../types';
import getIdentifier from '../utils/get-identifier';
import { isValidIdentifier } from '../utils/is-valid-identifier';
const enum AssignmentType {
Index = 0,
Add = 1,
Set = 2,
Delete = 3,
}
interface IndexAssignment {
t: AssignmentType.Index;
s: string;
k: undefined;
v: string;
}
interface SetAssignment {
t: AssignmentType.Set;
s: string;
k: string;
v: string;
}
interface AddAssignment {
t: AssignmentType.Add;
s: string;
k: undefined;
v: string;
}
interface DeleteAssignment {
t: AssignmentType.Delete;
s: string;
k: string;
v: undefined;
}
// Array of assignments to be done (used for recursion)
type Assignment =
| IndexAssignment
| AddAssignment
| SetAssignment
| DeleteAssignment;
export interface FlaggedObject {
type: SerovalObjectFlags;
value: string;
}
function getAssignmentExpression(assignment: Assignment): string {
switch (assignment.t) {
case AssignmentType.Index:
return assignment.s + '=' + assignment.v;
case AssignmentType.Set:
return assignment.s + '.set(' + assignment.k + ',' + assignment.v + ')';
case AssignmentType.Add:
return assignment.s + '.add(' + assignment.v + ')';
case AssignmentType.Delete:
return assignment.s + '.delete(' + assignment.k + ')';
}
}
function mergeAssignments(assignments: Assignment[]): Assignment[] {
const newAssignments: Assignment[] = [];
let current = assignments[0];
for (
let i = 1, len = assignments.length, item: Assignment, prev = current;
i < len;
i++
) {
item = assignments[i];
if (item.t === AssignmentType.Index && item.v === prev.v) {
// Merge if the right-hand value is the same
// saves at least 2 chars
current = {
t: AssignmentType.Index,
s: item.s,
k: NIL,
v: getAssignmentExpression(current),
} as IndexAssignment;
} else if (item.t === AssignmentType.Set && item.s === prev.s) {
// Maps has chaining methods, merge if source is the same
current = {
t: AssignmentType.Set,
s: getAssignmentExpression(current),
k: item.k,
v: item.v,
} as SetAssignment;
} else if (item.t === AssignmentType.Add && item.s === prev.s) {
// Sets has chaining methods too
current = {
t: AssignmentType.Add,
s: getAssignmentExpression(current),
k: NIL,
v: item.v,
} as AddAssignment;
} else if (item.t === AssignmentType.Delete && item.s === prev.s) {
// Maps has chaining methods, merge if source is the same
current = {
t: AssignmentType.Delete,
s: getAssignmentExpression(current),
k: item.k,
v: NIL,
} as DeleteAssignment;
} else {
// Different assignment, push current
newAssignments.push(current);
current = item;
}
prev = item;
}
newAssignments.push(current);
return newAssignments;
}
function resolveAssignments(assignments: Assignment[]): string | undefined {
if (assignments.length) {
let result = '';
const merged = mergeAssignments(assignments);
for (let i = 0, len = merged.length; i < len; i++) {
result += getAssignmentExpression(merged[i]) + ',';
}
return result;
}
return NIL;
}
const NULL_CONSTRUCTOR = 'Object.create(null)';
const SET_CONSTRUCTOR = 'new Set';
const MAP_CONSTRUCTOR = 'new Map';
const PROMISE_RESOLVE = 'Promise.resolve';
const PROMISE_REJECT = 'Promise.reject';
const OBJECT_FLAG_CONSTRUCTOR: Record<SerovalObjectFlags, string | undefined> =
{
[SerovalObjectFlags.Frozen]: 'Object.freeze',
[SerovalObjectFlags.Sealed]: 'Object.seal',
[SerovalObjectFlags.NonExtensible]: 'Object.preventExtensions',
[SerovalObjectFlags.None]: NIL,
};
type SerovalNodeWithProperties =
| SerovalObjectNode
| SerovalNullConstructorNode
| SerovalAggregateErrorNode
| SerovalErrorNode;
export interface BaseSerializerContextOptions extends PluginAccessOptions {
features: number;
markedRefs: number[] | Set<number>;
}
export interface BaseSerializerContext extends PluginAccessOptions {
readonly mode: SerovalMode;
features: number;
/*
* To check if an object is synchronously referencing itself
*/
stack: number[];
/**
* Array of object mutations
*/
flags: FlaggedObject[];
/**
* Array of assignments to be done (used for recursion)
*/
assignments: Assignment[];
/**
* Refs that are...referenced
*/
marked: Set<number>;
}
export interface CrossContextOptions {
scopeId?: string;
}
export function createBaseSerializerContext(
mode: SerovalMode,
options: BaseSerializerContextOptions,
): BaseSerializerContext {
return {
mode,
plugins: options.plugins,
features: options.features,
marked: new Set(options.markedRefs),
stack: [],
flags: [],
assignments: [],
};
}
export interface VanillaSerializerState {
valid: Map<number, number>;
vars: string[];
}
function createVanillaSerializerState(): VanillaSerializerState {
return {
valid: new Map(),
vars: [],
};
}
export interface VanillaSerializerContext {
mode: SerovalMode.Vanilla;
base: BaseSerializerContext;
state: VanillaSerializerState;
child: SerializePluginContext | undefined;
}
export type VanillaSerializerContextOptions = BaseSerializerContextOptions;
export function createVanillaSerializerContext(
options: VanillaSerializerContextOptions,
): VanillaSerializerContext {
return {
mode: SerovalMode.Vanilla,
base: createBaseSerializerContext(SerovalMode.Vanilla, options),
state: createVanillaSerializerState(),
child: undefined,
};
}
export interface CrossSerializerContext {
mode: SerovalMode.Cross;
base: BaseSerializerContext;
state: CrossContextOptions;
child: SerializePluginContext | undefined;
}
export interface CrossSerializerContextOptions
extends BaseSerializerContextOptions,
CrossContextOptions {
// empty
}
export function createCrossSerializerContext(
options: CrossSerializerContextOptions,
): CrossSerializerContext {
return {
mode: SerovalMode.Cross,
base: createBaseSerializerContext(SerovalMode.Cross, options),
state: options,
child: undefined,
};
}
type SerializerContext = VanillaSerializerContext | CrossSerializerContext;
export class SerializePluginContext {
constructor(private _p: SerializerContext) {}
serialize(node: SerovalNode) {
return serialize(this._p, node);
}
}
/**
* Creates the reference param (identifier) from the given reference ID
* Calling this function means the value has been referenced somewhere
*/
function getVanillaRefParam(
state: VanillaSerializerState,
index: number,
): string {
/**
* Creates a new reference ID from a given reference ID
* This new reference ID means that the reference itself
* has been referenced at least once, and is used to generate
* the variables
*/
let actualIndex = state.valid.get(index);
if (actualIndex == null) {
actualIndex = state.valid.size;
state.valid.set(index, actualIndex);
}
let identifier = state.vars[actualIndex];
if (identifier == null) {
identifier = getIdentifier(actualIndex);
state.vars[actualIndex] = identifier;
}
return identifier;
}
function getCrossRefParam(id: number): string {
return GLOBAL_CONTEXT_REFERENCES + '[' + id + ']';
}
/**
* Converts the ID of a reference into a identifier string
* that is used to refer to the object instance in the
* generated script.
*/
function getRefParam(ctx: SerializerContext, id: number): string {
return ctx.mode === SerovalMode.Vanilla
? getVanillaRefParam(ctx.state, id)
: getCrossRefParam(id);
}
function markSerializerRef(ctx: BaseSerializerContext, id: number): void {
ctx.marked.add(id);
}
function isSerializerRefMarked(
ctx: BaseSerializerContext,
id: number,
): boolean {
return ctx.marked.has(id);
}
function pushObjectFlag(
ctx: SerializerContext,
flag: SerovalObjectFlags,
id: number,
): void {
if (flag !== SerovalObjectFlags.None) {
markSerializerRef(ctx.base, id);
ctx.base.flags.push({
type: flag,
value: getRefParam(ctx, id),
});
}
}
function resolveFlags(ctx: BaseSerializerContext): string | undefined {
let result = '';
for (let i = 0, current = ctx.flags, len = current.length; i < len; i++) {
const flag = current[i];
result += OBJECT_FLAG_CONSTRUCTOR[flag.type] + '(' + flag.value + '),';
}
return result;
}
function resolvePatches(ctx: BaseSerializerContext): string | undefined {
const assignments = resolveAssignments(ctx.assignments);
const flags = resolveFlags(ctx);
if (assignments) {
if (flags) {
return assignments + flags;
}
return assignments;
}
return flags;
}
/**
* Generates the inlined assignment for the reference
* This is different from the assignments array as this one
* signifies creation rather than mutation
*/
function createAssignment(
ctx: BaseSerializerContext,
source: string,
value: string,
): void {
ctx.assignments.push({
t: AssignmentType.Index,
s: source,
k: NIL,
v: value,
});
}
function createAddAssignment(
ctx: SerializerContext,
ref: number,
value: string,
): void {
ctx.base.assignments.push({
t: AssignmentType.Add,
s: getRefParam(ctx, ref),
k: NIL,
v: value,
});
}
function createSetAssignment(
ctx: SerializerContext,
ref: number,
key: string,
value: string,
): void {
ctx.base.assignments.push({
t: AssignmentType.Set,
s: getRefParam(ctx, ref),
k: key,
v: value,
});
}
function createDeleteAssignment(
ctx: SerializerContext,
ref: number,
key: string,
): void {
ctx.base.assignments.push({
t: AssignmentType.Delete,
s: getRefParam(ctx, ref),
k: key,
v: NIL,
});
}
function createArrayAssign(
ctx: SerializerContext,
ref: number,
index: number | string,
value: string,
): void {
createAssignment(ctx.base, getRefParam(ctx, ref) + '[' + index + ']', value);
}
function createObjectAssign(
ctx: SerializerContext,
ref: number,
key: string,
value: string,
): void {
createAssignment(ctx.base, getRefParam(ctx, ref) + '.' + key, value);
}
/**
* Checks if the value is in the stack. Stack here is a reference
* structure to know if a object is to be accessed in a TDZ.
*/
function isIndexedValueInStack(
ctx: BaseSerializerContext,
node: SerovalNode,
): boolean {
return node.t === SerovalNodeType.IndexedValue && ctx.stack.includes(node.i);
}
/**
* Produces an assignment expression. `id` generates a reference
* parameter (through `getRefParam`) and has the option to
* return the reference parameter directly or assign a value to
* it.
*/
function assignIndexedValue(
ctx: SerializerContext,
index: number,
value: string,
): string {
if (
ctx.mode === SerovalMode.Vanilla &&
!isSerializerRefMarked(ctx.base, index)
) {
return value;
}
/**
* In cross-reference, we have to assume that
* every reference are going to be referenced
* in the future, and so we need to store
* all of it into the reference array.
*
* otherwise in vanilla, we only do this if it
* is actually referenced
*/
return getRefParam(ctx, index) + '=' + value;
}
function serializeReference(node: SerovalReferenceNode): string {
return REFERENCES_KEY + '.get("' + node.s + '")';
}
function serializeArrayItem(
ctx: SerializerContext,
id: number,
item: SerovalNode | undefined,
index: number,
): string {
// Check if index is a hole
if (item) {
// Check if item is a parent
if (isIndexedValueInStack(ctx.base, item)) {
markSerializerRef(ctx.base, id);
createArrayAssign(
ctx,
id,
index,
getRefParam(ctx, (item as SerovalIndexedValueNode).i),
);
return '';
}
return serialize(ctx, item);
}
return '';
}
function serializeArray(
ctx: SerializerContext,
node: SerovalArrayNode,
): string {
const id = node.i;
if (node.l) {
ctx.base.stack.push(id);
const list = node.a;
let values = serializeArrayItem(ctx, id, list[0], 0);
// This is different than Map and Set
// because we also need to serialize
// the holes of the Array
let isHoley = values === '';
for (let i = 1, len = node.l, item: string; i < len; i++) {
item = serializeArrayItem(ctx, id, list[i], i);
values += ',' + item;
isHoley = item === '';
}
ctx.base.stack.pop();
pushObjectFlag(ctx, node.o, node.i);
return '[' + values + (isHoley ? ',]' : ']');
}
return '[]';
}
function serializeProperty(
ctx: SerializerContext,
source: SerovalNodeWithProperties,
key: SerovalObjectRecordKey,
val: SerovalNode,
): string {
if (typeof key === 'string') {
const check = Number(key);
const isIdentifier =
// Test if key is a valid positive number or JS identifier
// so that we don't have to serialize the key and wrap with brackets
(check >= 0 &&
// It's also important to consider that if the key is
// indeed numeric, we need to make sure that when
// converted back into a string, it's still the same
// to the original key. This allows us to differentiate
// keys that has numeric formats but in a different
// format, which can cause unintentional key declaration
// Example: { 0x1: 1 } vs { '0x1': 1 }
check.toString() === key) ||
isValidIdentifier(key);
if (isIndexedValueInStack(ctx.base, val)) {
const refParam = getRefParam(ctx, (val as SerovalIndexedValueNode).i);
markSerializerRef(ctx.base, source.i);
// Strict identifier check, make sure
// that it isn't numeric (except NaN)
if (isIdentifier && check !== check) {
createObjectAssign(ctx, source.i, key, refParam);
} else {
createArrayAssign(
ctx,
source.i,
isIdentifier ? key : '"' + key + '"',
refParam,
);
}
return '';
}
return (isIdentifier ? key : '"' + key + '"') + ':' + serialize(ctx, val);
}
return '[' + serialize(ctx, key) + ']:' + serialize(ctx, val);
}
function serializeProperties(
ctx: SerializerContext,
source: SerovalNodeWithProperties,
record: SerovalObjectRecordNode,
): string {
const len = record.s;
if (len) {
const keys = record.k;
const values = record.v;
ctx.base.stack.push(source.i);
let result = serializeProperty(ctx, source, keys[0], values[0]);
for (let i = 1, item = result; i < len; i++) {
item = serializeProperty(ctx, source, keys[i], values[i]);
result += (item && result && ',') + item;
}
ctx.base.stack.pop();
return '{' + result + '}';
}
return '{}';
}
function serializeObject(
ctx: SerializerContext,
node: SerovalObjectNode,
): string {
pushObjectFlag(ctx, node.o, node.i);
return serializeProperties(ctx, node, node.p);
}
function serializeWithObjectAssign(
ctx: SerializerContext,
source: SerovalNodeWithProperties,
value: SerovalObjectRecordNode,
serialized: string,
): string {
const fields = serializeProperties(ctx, source, value);
if (fields !== '{}') {
return 'Object.assign(' + serialized + ',' + fields + ')';
}
return serialized;
}
function serializeStringKeyAssignment(
ctx: SerializerContext,
source: SerovalNodeWithProperties,
mainAssignments: Assignment[],
key: string,
value: SerovalNode,
): void {
const base = ctx.base;
const serialized = serialize(ctx, value);
const check = Number(key);
const isIdentifier =
// Test if key is a valid positive number or JS identifier
// so that we don't have to serialize the key and wrap with brackets
(check >= 0 &&
// It's also important to consider that if the key is
// indeed numeric, we need to make sure that when
// converted back into a string, it's still the same
// to the original key. This allows us to differentiate
// keys that has numeric formats but in a different
// format, which can cause unintentional key declaration
// Example: { 0x1: 1 } vs { '0x1': 1 }
check.toString() === key) ||
isValidIdentifier(key);
if (isIndexedValueInStack(base, value)) {
// Strict identifier check, make sure
// that it isn't numeric (except NaN)
if (isIdentifier && check !== check) {
createObjectAssign(ctx, source.i, key, serialized);
} else {
createArrayAssign(
ctx,
source.i,
isIdentifier ? key : '"' + key + '"',
serialized,
);
}
} else {
const parentAssignment = base.assignments;
base.assignments = mainAssignments;
if (isIdentifier && check !== check) {
createObjectAssign(ctx, source.i, key, serialized);
} else {
createArrayAssign(
ctx,
source.i,
isIdentifier ? key : '"' + key + '"',
serialized,
);
}
base.assignments = parentAssignment;
}
}
function serializeAssignment(
ctx: SerializerContext,
source: SerovalNodeWithProperties,
mainAssignments: Assignment[],
key: SerovalObjectRecordKey,
value: SerovalNode,
): void {
if (typeof key === 'string') {
serializeStringKeyAssignment(ctx, source, mainAssignments, key, value);
} else {
const base = ctx.base;
const parent = base.stack;
base.stack = [];
const serialized = serialize(ctx, value);
base.stack = parent;
const parentAssignment = base.assignments;
base.assignments = mainAssignments;
createArrayAssign(ctx, source.i, serialize(ctx, key), serialized);
base.assignments = parentAssignment;
}
}
function serializeAssignments(
ctx: SerializerContext,
source: SerovalNodeWithProperties,
node: SerovalObjectRecordNode,
): string | undefined {
const len = node.s;
if (len) {
const mainAssignments: Assignment[] = [];
const keys = node.k;
const values = node.v;
ctx.base.stack.push(source.i);
for (let i = 0; i < len; i++) {
serializeAssignment(ctx, source, mainAssignments, keys[i], values[i]);
}
ctx.base.stack.pop();
return resolveAssignments(mainAssignments);
}
return NIL;
}
function serializeDictionary(
ctx: SerializerContext,
node: SerovalNodeWithProperties,
init: string,
): string {
if (node.p) {
const base = ctx.base;
if (base.features & Feature.ObjectAssign) {
init = serializeWithObjectAssign(ctx, node, node.p, init);
} else {
markSerializerRef(base, node.i);
const assignments = serializeAssignments(ctx, node, node.p);
if (assignments) {
return (
'(' +
assignIndexedValue(ctx, node.i, init) +
',' +
assignments +
getRefParam(ctx, node.i) +
')'
);
}
}
}
return init;
}
function serializeNullConstructor(
ctx: SerializerContext,
node: SerovalNullConstructorNode,
): string {
pushObjectFlag(ctx, node.o, node.i);
return serializeDictionary(ctx, node, NULL_CONSTRUCTOR);
}
function serializeDate(node: SerovalDateNode): string {
return 'new Date("' + node.s + '")';
}
function serializeRegExp(node: SerovalRegExpNode): string {
return '/' + node.c + '/' + node.m;
}
function serializeSetItem(
ctx: SerializerContext,
id: number,
item: SerovalNode,
): string {
const base = ctx.base;
if (isIndexedValueInStack(base, item)) {
markSerializerRef(base, id);
createAddAssignment(
ctx,
id,
getRefParam(ctx, (item as SerovalIndexedValueNode).i),
);
return '';
}
return serialize(ctx, item);
}
function serializeSet(ctx: SerializerContext, node: SerovalSetNode): string {
let serialized = SET_CONSTRUCTOR;
const size = node.l;
const id = node.i;
if (size) {
const items = node.a;
ctx.base.stack.push(id);
let result = serializeSetItem(ctx, id, items[0]);
for (let i = 1, item = result; i < size; i++) {
item = serializeSetItem(ctx, id, items[i]);
result += (item && result && ',') + item;
}
ctx.base.stack.pop();
if (result) {
serialized += '([' + result + '])';
}
}
return serialized;
}
function serializeMapEntry(
ctx: SerializerContext,
id: number,
key: SerovalNode,
val: SerovalNode,
sentinel: string,
): string {
const base = ctx.base;
if (isIndexedValueInStack(base, key)) {
// Create reference for the map instance
const keyRef = getRefParam(ctx, (key as SerovalIndexedValueNode).i);
markSerializerRef(base, id);
// Check if value is a parent
if (isIndexedValueInStack(base, val)) {
const valueRef = getRefParam(ctx, (val as SerovalIndexedValueNode).i);
// Register an assignment since
// both key and value are a parent of this
// Map instance
createSetAssignment(ctx, id, keyRef, valueRef);
return '';
}
// Reset the stack
// This is required because the serialized
// value is no longer part of the expression
// tree and has been moved to the deferred
// assignment
if (
val.t !== SerovalNodeType.IndexedValue &&
val.i != null &&
isSerializerRefMarked(base, val.i)
) {
// We use a trick here using sequence (or comma) expressions
// basically we serialize the intended object in place WITHOUT
// actually returning it, this is by returning a placeholder
// value that we will remove sometime after.
const serialized =
'(' + serialize(ctx, val) + ',[' + sentinel + ',' + sentinel + '])';
createSetAssignment(ctx, id, keyRef, getRefParam(ctx, val.i));
createDeleteAssignment(ctx, id, sentinel);
return serialized;
}
const parent = base.stack;
base.stack = [];
createSetAssignment(ctx, id, keyRef, serialize(ctx, val));
base.stack = parent;
return '';
}
if (isIndexedValueInStack(base, val)) {
// Create ref for the Map instance
const valueRef = getRefParam(ctx, (val as SerovalIndexedValueNode).i);
markSerializerRef(base, id);
if (
key.t !== SerovalNodeType.IndexedValue &&
key.i != null &&
isSerializerRefMarked(base, key.i)
) {
const serialized =
'(' + serialize(ctx, key) + ',[' + sentinel + ',' + sentinel + '])';
createSetAssignment(ctx, id, getRefParam(ctx, key.i), valueRef);
createDeleteAssignment(ctx, id, sentinel);
return serialized;
}
// Reset stack for the key serialization
const parent = base.stack;
base.stack = [];
createSetAssignment(ctx, id, serialize(ctx, key), valueRef);
base.stack = parent;
return '';
}
return '[' + serialize(ctx, key) + ',' + serialize(ctx, val) + ']';
}
function serializeMap(ctx: SerializerContext, node: SerovalMapNode): string {
let serialized = MAP_CONSTRUCTOR;
const size = node.e.s;
const id = node.i;
const sentinel = node.f;
const sentinelId = getRefParam(ctx, sentinel.i);
const base = ctx.base;
if (size) {
const keys = node.e.k;
const vals = node.e.v;
base.stack.push(id);
let result = serializeMapEntry(ctx, id, keys[0], vals[0], sentinelId);
for (let i = 1, item = result; i < size; i++) {
item = serializeMapEntry(ctx, id, keys[i], vals[i], sentinelId);
result += (item && result && ',') + item;
}
base.stack.pop();
// Check if there are any values
// so that the empty Map constructor
// can be used instead
if (result) {
serialized += '([' + result + '])';
}
}
if (sentinel.t === SerovalNodeType.SpecialReference) {
markSerializerRef(base, sentinel.i);
serialized = '(' + serialize(ctx, sentinel) + ',' + serialized + ')';
}
return serialized;
}
function serializeArrayBuffer(
ctx: SerializerContext,
node: SerovalArrayBufferNode,
): string {
return getConstructor(ctx, node.f) + '(' + node.l + ',"' + node.s + '")';
}
function serializeTypedArray(
ctx: SerializerContext,
node: SerovalTypedArrayNode | SerovalBigIntTypedArrayNode,
): string {
return (
'new ' +
node.c +
'(' +
serialize(ctx, node.f) +
',' +
node.b +
',' +
node.l +
')'
);
}
function serializeDataView(
ctx: SerializerContext,
node: SerovalDataViewNode,
): string {
return (
'new DataView(' + serialize(ctx, node.f) + ',' + node.b + ',' + node.l + ')'
);
}
function serializeAggregateError(
ctx: SerializerContext,
node: SerovalAggregateErrorNode,
): string {
const id = node.i;
// `AggregateError` might've been extended
// either through class or custom properties
// Make sure to assign extra properties
ctx.base.stack.push(id);
const serialized = serializeDictionary(
ctx,
node,
'new AggregateError([],"' + node.m + '")',
);
ctx.base.stack.pop();
return serialized;
}
function serializeError(
ctx: SerializerContext,
node: SerovalErrorNode,
): string {
return serializeDictionary(
ctx,
node,
'new ' + ERROR_CONSTRUCTOR_STRING[node.s] + '("' + node.m + '")',
);
}
function serializePromise(
ctx: SerializerContext,
node: SerovalPromiseNode,
): string {
let serialized: string;
// Check if resolved value is a parent expression
const fulfilled = node.f;
const id = node.i;
const promiseConstructor = node.s ? PROMISE_RESOLVE : PROMISE_REJECT;
const base = ctx.base;
if (isIndexedValueInStack(base, fulfilled)) {
// A Promise trick, reference the value
// inside the `then` expression so that
// the Promise evaluates after the parent
// has initialized
const ref = getRefParam(ctx, (fulfilled as SerovalIndexedValueNode).i);
serialized =
promiseConstructor +
(node.s
? '().then(' + createFunction([], ref) + ')'
: '().catch(' + createEffectfulFunction([], 'throw ' + ref) + ')');
} else {
base.stack.push(id);
const result = serialize(ctx, fulfilled);
base.stack.pop();
// just inline the value/reference here
serialized = promiseConstructor + '(' + result + ')';
}
return serialized;
}
function serializeBoxed(
ctx: SerializerContext,
node: SerovalBoxedNode,
): string {
return 'Object(' + serialize(ctx, node.f) + ')';
}
function getConstructor(
ctx: SerializerContext,
node: SerovalNodeWithID,
): string {
const current = serialize(ctx, node);
return node.t === SerovalNodeType.IndexedValue
? current
: '(' + current + ')';
}
function serializePromiseConstructor(
ctx: SerializerContext,
node: SerovalPromiseConstructorNode,
): string {
if (ctx.mode === SerovalMode.Vanilla) {
throw new SerovalUnsupportedNodeError(node);
}
const resolver = assignIndexedValue(
ctx,
node.s,
getConstructor(ctx, node.f) + '()',
);
return '(' + resolver + ').p';
}
function serializePromiseResolve(
ctx: SerializerContext,
node: SerovalPromiseResolveNode,
): string {
if (ctx.mode === SerovalMode.Vanilla) {
throw new SerovalUnsupportedNodeError(node);
}
return (
getConstructor(ctx, node.a[0]) +
'(' +
getRefParam(ctx, node.i) +
',' +
serialize(ctx, node.a[1]) +
')'
);
}
function serializePromiseReject(
ctx: SerializerContext,
node: SerovalPromiseRejectNode,
): string {
if (ctx.mode === SerovalMode.Vanilla) {
throw new SerovalUnsupportedNodeError(node);
}
return (
getConstructor(ctx, node.a[0]) +
'(' +
getRefParam(ctx, node.i) +
',' +
serialize(ctx, node.a[1]) +
')'
);
}
function serializePlugin(
ctx: SerializerContext,
node: SerovalPluginNode,
): string {
const currentPlugins = ctx.base.plugins;
if (currentPlugins) {
for (let i = 0, len = currentPlugins.length; i < len; i++) {
const plugin = currentPlugins[i];
if (plugin.tag === node.c) {
if (ctx.child == null) {
ctx.child = new SerializePluginContext(ctx);
}
return plugin.serialize(node.s, ctx.child, {
id: node.i,
});
}
}
}
throw new SerovalMissingPluginError(node.c);
}
function serializeIteratorFactory(
ctx: SerializerContext,
node: SerovalIteratorFactoryNode,
): string {
let result = '';
let initialized = false;
if (node.f.t !== SerovalNodeType.IndexedValue) {
markSerializerRef(ctx.base, node.f.i);
result = '(' + serialize(ctx, node.f) + ',';
initialized = true;
}
result += assignIndexedValue(
ctx,
node.i,
'(' +
SERIALIZED_ITERATOR_CONSTRUCTOR +
')(' +
getRefParam(ctx, node.f.i) +
')',
);
if (initialized) {
result += ')';
}
return result;
}
function serializeIteratorFactoryInstance(
ctx: SerializerContext,
node: SerovalIteratorFactoryInstanceNode,
): string {
return getConstructor(ctx, node.a[0]) + '(' + serialize(ctx, node.a[1]) + ')';
}
function serializeAsyncIteratorFactory(
ctx: SerializerContext,
node: SerovalAsyncIteratorFactoryNode,
): string {
const promise = node.a[0];
const symbol = node.a[1];
const base = ctx.base;
let result = '';
if (promise.t !== SerovalNodeType.IndexedValue) {
markSerializerRef(base, promise.i);
result += '(' + serialize(ctx, promise);
}
if (symbol.t !== SerovalNodeType.IndexedValue) {
markSerializerRef(base, symbol.i);
result += (result ? ',' : '(') + serialize(ctx, symbol);
}
if (result) {
result += ',';
}
const iterator = assignIndexedValue(
ctx,
node.i,
'(' +
SERIALIZED_ASYNC_ITERATOR_CONSTRUCTOR +
')(' +
getRefParam(ctx, symbol.i) +
',' +
getRefParam(ctx, promise.i) +
')',
);
if (result) {
return result + iterator + ')';
}
return iterator;
}
function serializeAsyncIteratorFactoryInstance(
ctx: SerializerContext,
node: SerovalAsyncIteratorFactoryInstanceNode,
): string {
return getConstructor(ctx, node.a[0]) + '(' + serialize(ctx, node.a[1]) + ')';
}
function serializeStreamConstructor(
ctx: SerializerContext,
node: SerovalStreamConstructorNode,
): string {
const result = assignIndexedValue(
ctx,
node.i,
getConstructor(ctx, node.f) + '()',
);
const len = node.a.length;
if (len) {
let values = serialize(ctx, node.a[0]);
for (let i = 1; i < len; i++) {
values += ',' + serialize(ctx, node.a[i]);
}
return '(' + result + ',' + values + ',' + getRefParam(ctx, node.i) + ')';
}
return result;
}
function serializeStreamNext(
ctx: SerializerContext,
node: SerovalStreamNextNode,
): string {
return getRefParam(ctx, node.i) + '.next(' + serialize(ctx, node.f) + ')';
}
function serializeStreamThrow(
ctx: SerializerContext,
node: SerovalStreamThrowNode,
): string {
return getRefParam(ctx, node.i) + '.throw(' + serialize(ctx, node.f) + ')';
}
function serializeStreamReturn(
ctx: SerializerContext,
node: SerovalStreamReturnNode,
): string {
return getRefParam(ctx, node.i) + '.return(' + serialize(ctx, node.f) + ')';
}
function serializeAssignable(
ctx: SerializerContext,
node: SerovalNode,
): string {
switch (node.t) {
case SerovalNodeType.WKSymbol:
return SYMBOL_STRING[node.s];
case SerovalNodeType.Reference:
return serializeReference(node);
case SerovalNodeType.Array:
return serializeArray(ctx, node);
case SerovalNodeType.Object:
return serializeObject(ctx, node);
case SerovalNodeType.NullConstructor:
return serializeNullConstructor(ctx, node);
case SerovalNodeType.Date:
return serializeDate(node);
case SerovalNodeType.RegExp:
return serializeRegExp(node);
case SerovalNodeType.Set:
return serializeSet(ctx, node);
case SerovalNodeType.Map:
return serializeMap(ctx, node);
case SerovalNodeType.ArrayBuffer:
return serializeArrayBuffer(ctx, node);
case SerovalNodeType.BigIntTypedArray:
case SerovalNodeType.TypedArray:
return serializeTypedArray(ctx, node);
case SerovalNodeType.DataView:
return serializeDataView(ctx, node);
case SerovalNodeType.AggregateError:
return serializeAggregateError(ctx, node);
case SerovalNodeType.Error:
return serializeError(ctx, node);
case SerovalNodeType.Promise:
return serializePromise(ctx, node);
case SerovalNodeType.Boxed:
return serializeBoxed(ctx, node);
case SerovalNodeType.PromiseConstructor:
return serializePromiseConstructor(ctx, node);
case SerovalNodeType.Plugin:
return serializePlugin(ctx, node);
case SerovalNodeType.SpecialReference:
return SPECIAL_REF_STRING[node.s];
default:
throw new SerovalUnsupportedNodeError(node);
}
}
function serialize(ctx: SerializerContext, node: SerovalNode): string {
switch (node.t) {
case SerovalNodeType.Constant:
return CONSTANT_STRING[node.s];
case SerovalNodeType.Number:
return '' + node.s;
case SerovalNodeType.String:
return '"' + node.s + '"';
case SerovalNodeType.BigInt:
return node.s + 'n';
case SerovalNodeType.IndexedValue:
return getRefParam(ctx, node.i);
case SerovalNodeType.PromiseSuccess:
return serializePromiseResolve(ctx, node);
case SerovalNodeType.PromiseFailure:
return serializePromiseReject(ctx, node);
case SerovalNodeType.IteratorFactory:
return serializeIteratorFactory(ctx, node);
case SerovalNodeType.IteratorFactoryInstance:
return serializeIteratorFactoryInstance(ctx, node);
case SerovalNodeType.AsyncIteratorFactory:
return serializeAsyncIteratorFactory(ctx, node);
case SerovalNodeType.AsyncIteratorFactoryInstance:
return serializeAsyncIteratorFactoryInstance(ctx, node);
case SerovalNodeType.StreamConstructor:
return serializeStreamConstructor(ctx, node);
case SerovalNodeType.StreamNext:
return serializeStreamNext(ctx, node);
case SerovalNodeType.StreamThrow:
return serializeStreamThrow(ctx, node);
case SerovalNodeType.StreamReturn:
return serializeStreamReturn(ctx, node);
default:
return assignIndexedValue(ctx, node.i, serializeAssignable(ctx, node));
}
}
export function serializeRoot(
ctx: SerializerContext,
node: SerovalNode,
): string {
try {
return serialize(ctx, node);
} catch (error) {
throw error instanceof SerovalSerializationError
? error
: new SerovalSerializationError(error);
}
}
export function serializeTopVanilla(
ctx: VanillaSerializerContext,
tree: SerovalNode,
): string {
const result = serialize(ctx, tree);
// Shared references detected
if (tree.i != null && ctx.state.vars.length) {
const patches = resolvePatches(ctx.base);
let body = result;
if (patches) {
// Get (or create) a ref from the source
const index = getRefParam(ctx, tree.i);
body = result + ',' + patches + index;
if (!result.startsWith(index + '=')) {
body = index + '=' + body;
}
body = '(' + body + ')';
}
return '(' + createFunction(ctx.state.vars, body) + ')()';
}
if (tree.t === SerovalNodeType.Object) {
return '(' + result + ')';
}
return result;
}
export function serializeTopCross(
ctx: CrossSerializerContext,
tree: SerovalNode,
): string {
// Get the serialized result
const result = serialize(ctx, tree);
// If the node is a non-reference, return
// the result immediately
const id = tree.i;
if (id == null) {
return result;
}
// Get the patches
const patches = resolvePatches(ctx.base);
// Get the variable that represents the root
const ref = getRefParam(ctx, id);
const scopeId = ctx.state.scopeId;
// Parameters needed for scoping
const params = scopeId == null ? '' : GLOBAL_CONTEXT_REFERENCES;
// If there are patches, append it after the result
const body = patches ? '(' + result + ',' + patches + ref + ')' : result;
// If there are no params, there's no need to generate a function
if (params === '') {
if (tree.t === SerovalNodeType.Object && !patches) {
return '(' + body + ')';
}
return body;
}
// Get the arguments for the IIFE
const args =
scopeId == null
? '()'
: '(' +
GLOBAL_CONTEXT_REFERENCES +
'["' +
serializeString(scopeId) +
'"])';
// Create the IIFE
return '(' + createFunction([params], body) + ')' + args;
}
import {
createAggregateErrorNode,
createArrayNode,
createAsyncIteratorFactoryInstanceNode,
createBigIntNode,
createBigIntTypedArrayNode,
createBoxedNode,
createDataViewNode,
createDateNode,
createErrorNode,
createIteratorFactoryInstanceNode,
createNumberNode,
createPluginNode,
createRegExpNode,
createSetNode,
createStreamConstructorNode,
createStreamNextNode,
createStreamReturnNode,
createStreamThrowNode,
createStringNode,
createTypedArrayNode,
} from '../base-primitives';
import { Feature } from '../compat';
import { NIL, SerovalNodeType } from '../constants';
import { SerovalParserError, SerovalUnsupportedTypeError } from '../errors';
import { FALSE_NODE, NULL_NODE, TRUE_NODE, UNDEFINED_NODE } from '../literals';
import { createSerovalNode } from '../node';
import { OpaqueReference } from '../opaque-reference';
import { type Plugin, SerovalMode } from '../plugin';
import { SpecialReference } from '../special-reference';
import type { Stream } from '../stream';
import {
createStream,
createStreamFromAsyncIterable,
isStream,
} from '../stream';
import { serializeString } from '../string';
import {
SYM_ASYNC_ITERATOR,
SYM_IS_CONCAT_SPREADABLE,
SYM_ITERATOR,
SYM_TO_STRING_TAG,
} from '../symbols';
import type {
SerovalAggregateErrorNode,
SerovalArrayNode,
SerovalBigIntTypedArrayNode,
SerovalBoxedNode,
SerovalDataViewNode,
SerovalErrorNode,
SerovalMapNode,
SerovalNode,
SerovalNullConstructorNode,
SerovalObjectNode,
SerovalObjectRecordKey,
SerovalObjectRecordNode,
SerovalPluginNode,
SerovalPromiseConstructorNode,
SerovalSetNode,
SerovalTypedArrayNode,
} from '../types';
import { getErrorOptions } from '../utils/error';
import { iteratorToSequence } from '../utils/iterator-to-sequence';
import type {
BigIntTypedArrayValue,
TypedArrayValue,
} from '../utils/typed-array';
import type { BaseParserContext, BaseParserContextOptions } from './parser';
import {
createArrayBufferNode,
createBaseParserContext,
createIndexForValue,
createMapNode,
createObjectNode,
createPromiseConstructorNode,
getReferenceNode,
parseAsyncIteratorFactory,
parseIteratorFactory,
ParserNodeType,
parseSpecialReference,
parseWellKnownSymbol,
} from './parser';
type ObjectLikeNode = SerovalObjectNode | SerovalNullConstructorNode;
export type SyncParserContextOptions = BaseParserContextOptions;
const enum ParserMode {
Sync = 1,
Stream = 2,
}
export interface SyncParserContext {
type: ParserMode.Sync;
base: BaseParserContext;
child: SyncParsePluginContext | undefined;
}
export function createSyncParserContext(
mode: SerovalMode,
options: SyncParserContextOptions,
): SyncParserContext {
return {
type: ParserMode.Sync,
base: createBaseParserContext(mode, options),
child: undefined,
};
}
export class SyncParsePluginContext {
constructor(private _p: SyncParserContext) {}
parse<T>(current: T): SerovalNode {
return parseSOS(this._p, current);
}
}
export interface StreamParserContextOptions extends SyncParserContextOptions {
onParse: (node: SerovalNode, initial: boolean) => void;
onError?: (error: unknown) => void;
onDone?: () => void;
}
export interface StreamParserContext {
type: ParserMode.Stream;
base: BaseParserContext;
child: StreamParsePluginContext | undefined;
state: StreamParserState;
}
export class StreamParsePluginContext {
constructor(private _p: StreamParserContext) {}
parse<T>(current: T): SerovalNode {
return parseSOS(this._p, current);
}
parseWithError<T>(current: T): SerovalNode | undefined {
return parseWithError(this._p, current);
}
isAlive(): boolean {
return this._p.state.alive;
}
pushPendingState(): void {
pushPendingState(this._p);
}
popPendingState(): void {
popPendingState(this._p);
}
onParse(node: SerovalNode): void {
onParse(this._p, node);
}
onError(error: unknown): void {
onError(this._p, error);
}
}
interface StreamParserState {
// Life cycle
alive: boolean;
// Number of pending things
pending: number;
//
initial: boolean;
//
buffer: SerovalNode[];
// Callbacks
onParse: (node: SerovalNode, initial: boolean) => void;
onError?: (error: unknown) => void;
onDone?: () => void;
}
function createStreamParserState(
options: StreamParserContextOptions,
): StreamParserState {
return {
alive: true,
pending: 0,
initial: true,
buffer: [],
onParse: options.onParse,
onError: options.onError,
onDone: options.onDone,
};
}
export function createStreamParserContext(
options: StreamParserContextOptions,
): StreamParserContext {
return {
type: ParserMode.Stream,
base: createBaseParserContext(SerovalMode.Cross, options),
child: undefined,
state: createStreamParserState(options),
};
}
type SOSParserContext = SyncParserContext | StreamParserContext;
function parseItems(ctx: SOSParserContext, current: unknown[]): SerovalNode[] {
const nodes = [];
for (let i = 0, len = current.length; i < len; i++) {
if (i in current) {
nodes[i] = parseSOS(ctx, current[i]);
}
}
return nodes;
}
function parseArray(
ctx: SOSParserContext,
id: number,
current: unknown[],
): SerovalArrayNode {
return createArrayNode(id, current, parseItems(ctx, current));
}
function parseProperties(
ctx: SOSParserContext,
properties: Record<string | symbol, unknown>,
): SerovalObjectRecordNode {
const entries = Object.entries(properties);
const keyNodes: SerovalObjectRecordKey[] = [];
const valueNodes: SerovalNode[] = [];
for (let i = 0, len = entries.length; i < len; i++) {
keyNodes.push(serializeString(entries[i][0]));
valueNodes.push(parseSOS(ctx, entries[i][1]));
}
// Check special properties, symbols in this case
if (SYM_ITERATOR in properties) {
keyNodes.push(parseWellKnownSymbol(ctx.base, SYM_ITERATOR));
valueNodes.push(
createIteratorFactoryInstanceNode(
parseIteratorFactory(ctx.base),
parseSOS(
ctx,
iteratorToSequence(properties as unknown as Iterable<unknown>),
),
),
);
}
if (SYM_ASYNC_ITERATOR in properties) {
keyNodes.push(parseWellKnownSymbol(ctx.base, SYM_ASYNC_ITERATOR));
valueNodes.push(
createAsyncIteratorFactoryInstanceNode(
parseAsyncIteratorFactory(ctx.base),
parseSOS(
ctx,
ctx.type === ParserMode.Sync
? createStream()
: createStreamFromAsyncIterable(
properties as unknown as AsyncIterable<unknown>,
),
),
),
);
}
if (SYM_TO_STRING_TAG in properties) {
keyNodes.push(parseWellKnownSymbol(ctx.base, SYM_TO_STRING_TAG));
valueNodes.push(createStringNode(properties[SYM_TO_STRING_TAG] as string));
}
if (SYM_IS_CONCAT_SPREADABLE in properties) {
keyNodes.push(parseWellKnownSymbol(ctx.base, SYM_IS_CONCAT_SPREADABLE));
valueNodes.push(
properties[SYM_IS_CONCAT_SPREADABLE] ? TRUE_NODE : FALSE_NODE,
);
}
return {
k: keyNodes,
v: valueNodes,
s: keyNodes.length,
};
}
function parsePlainObject(
ctx: SOSParserContext,
id: number,
current: Record<string, unknown>,
empty: boolean,
): ObjectLikeNode {
return createObjectNode(id, current, empty, parseProperties(ctx, current));
}
function parseBoxed(
ctx: SOSParserContext,
id: number,
current: object,
): SerovalBoxedNode {
return createBoxedNode(id, parseSOS(ctx, current.valueOf()));
}
function parseTypedArray(
ctx: SOSParserContext,
id: number,
current: TypedArrayValue,
): SerovalTypedArrayNode {
return createTypedArrayNode(id, current, parseSOS(ctx, current.buffer));
}
function parseBigIntTypedArray(
ctx: SOSParserContext,
id: number,
current: BigIntTypedArrayValue,
): SerovalBigIntTypedArrayNode {
return createBigIntTypedArrayNode(id, current, parseSOS(ctx, current.buffer));
}
function parseDataView(
ctx: SOSParserContext,
id: number,
current: DataView,
): SerovalDataViewNode {
return createDataViewNode(id, current, parseSOS(ctx, current.buffer));
}
function parseError(
ctx: SOSParserContext,
id: number,
current: Error,
): SerovalErrorNode {
const options = getErrorOptions(current, ctx.base.features);
return createErrorNode(
id,
current,
options ? parseProperties(ctx, options) : NIL,
);
}
function parseAggregateError(
ctx: SOSParserContext,
id: number,
current: AggregateError,
): SerovalAggregateErrorNode {
const options = getErrorOptions(current, ctx.base.features);
return createAggregateErrorNode(
id,
current,
options ? parseProperties(ctx, options) : NIL,
);
}
function parseMap(
ctx: SOSParserContext,
id: number,
current: Map<unknown, unknown>,
): SerovalMapNode {
const keyNodes: SerovalNode[] = [];
const valueNodes: SerovalNode[] = [];
for (const [key, value] of current.entries()) {
keyNodes.push(parseSOS(ctx, key));
valueNodes.push(parseSOS(ctx, value));
}
return createMapNode(ctx.base, id, keyNodes, valueNodes, current.size);
}
function parseSet(
ctx: SOSParserContext,
id: number,
current: Set<unknown>,
): SerovalSetNode {
const items: SerovalNode[] = [];
for (const item of current.keys()) {
items.push(parseSOS(ctx, item));
}
return createSetNode(id, current.size, items);
}
function parseStream(
ctx: SOSParserContext,
id: number,
current: Stream<unknown>,
): SerovalNode {
const result = createStreamConstructorNode(
id,
parseSpecialReference(ctx.base, SpecialReference.StreamConstructor),
[],
);
if (ctx.type === ParserMode.Sync) {
return result;
}
pushPendingState(ctx);
current.on({
next: value => {
if (ctx.state.alive) {
const parsed = parseWithError(ctx, value);
if (parsed) {
onParse(ctx, createStreamNextNode(id, parsed));
}
}
},
throw: value => {
if (ctx.state.alive) {
const parsed = parseWithError(ctx, value);
if (parsed) {
onParse(ctx, createStreamThrowNode(id, parsed));
}
}
popPendingState(ctx);
},
return: value => {
if (ctx.state.alive) {
const parsed = parseWithError(ctx, value);
if (parsed) {
onParse(ctx, createStreamReturnNode(id, parsed));
}
}
popPendingState(ctx);
},
});
return result;
}
function handlePromiseSuccess(
this: StreamParserContext,
id: number,
data: unknown,
): void {
if (this.state.alive) {
const parsed = parseWithError(this, data);
if (parsed) {
onParse(
this,
createSerovalNode(
SerovalNodeType.PromiseSuccess,
id,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
[
parseSpecialReference(this.base, SpecialReference.PromiseSuccess),
parsed,
],
NIL,
NIL,
NIL,
),
);
}
popPendingState(this);
}
}
function handlePromiseFailure(
this: StreamParserContext,
id: number,
data: unknown,
): void {
if (this.state.alive) {
const parsed = parseWithError(this, data);
if (parsed) {
onParse(
this,
createSerovalNode(
SerovalNodeType.PromiseFailure,
id,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
[
parseSpecialReference(this.base, SpecialReference.PromiseFailure),
parsed,
],
NIL,
NIL,
NIL,
),
);
}
}
popPendingState(this);
}
function parsePromise(
ctx: SOSParserContext,
id: number,
current: Promise<unknown>,
): SerovalPromiseConstructorNode {
// Creates a unique reference for the promise resolver
const resolver = createIndexForValue(ctx.base, {});
if (ctx.type === ParserMode.Stream) {
pushPendingState(ctx);
current.then(
handlePromiseSuccess.bind(ctx, resolver),
handlePromiseFailure.bind(ctx, resolver),
);
}
return createPromiseConstructorNode(ctx.base, id, resolver);
}
function parsePluginSync(
ctx: SyncParserContext,
id: number,
current: unknown,
currentPlugins: Plugin<any, any>[],
): SerovalPluginNode | undefined {
for (let i = 0, len = currentPlugins.length; i < len; i++) {
const plugin = currentPlugins[i];
if (plugin.parse.sync && plugin.test(current)) {
if (ctx.child == null) {
ctx.child = new SyncParsePluginContext(ctx);
}
return createPluginNode(
id,
plugin.tag,
plugin.parse.sync(current, ctx.child, {
id,
}),
);
}
}
return undefined;
}
function parsePluginStream(
ctx: StreamParserContext,
id: number,
current: unknown,
currentPlugins: Plugin<any, any>[],
): SerovalPluginNode | undefined {
for (let i = 0, len = currentPlugins.length; i < len; i++) {
const plugin = currentPlugins[i];
if (plugin.parse.stream && plugin.test(current)) {
if (ctx.child == null) {
ctx.child = new StreamParsePluginContext(ctx);
}
return createPluginNode(
id,
plugin.tag,
plugin.parse.stream(current, ctx.child, {
id,
}),
);
}
}
return undefined;
}
function parsePlugin(
ctx: SOSParserContext,
id: number,
current: unknown,
): SerovalPluginNode | undefined {
const currentPlugins = ctx.base.plugins;
if (currentPlugins) {
return ctx.type === ParserMode.Sync
? parsePluginSync(ctx, id, current, currentPlugins)
: parsePluginStream(ctx, id, current, currentPlugins);
}
return undefined;
}
function parseObjectPhase2(
ctx: SOSParserContext,
id: number,
current: object,
currentClass: unknown,
): SerovalNode {
switch (currentClass) {
case Object:
return parsePlainObject(
ctx,
id,
current as Record<string, unknown>,
false,
);
case undefined:
return parsePlainObject(
ctx,
id,
current as Record<string, unknown>,
true,
);
case Date:
return createDateNode(id, current as unknown as Date);
case RegExp:
return createRegExpNode(id, current as unknown as RegExp);
case Error:
case EvalError:
case RangeError:
case ReferenceError:
case SyntaxError:
case TypeError:
case URIError:
return parseError(ctx, id, current as unknown as Error);
case Number:
case Boolean:
case String:
case BigInt:
return parseBoxed(ctx, id, current);
case ArrayBuffer:
return createArrayBufferNode(
ctx.base,
id,
current as unknown as ArrayBuffer,
);
case Int8Array:
case Int16Array:
case Int32Array:
case Uint8Array:
case Uint16Array:
case Uint32Array:
case Uint8ClampedArray:
case Float32Array:
case Float64Array:
return parseTypedArray(ctx, id, current as unknown as TypedArrayValue);
case DataView:
return parseDataView(ctx, id, current as unknown as DataView);
case Map:
return parseMap(ctx, id, current as unknown as Map<unknown, unknown>);
case Set:
return parseSet(ctx, id, current as unknown as Set<unknown>);
default:
break;
}
// Promises
if (currentClass === Promise || current instanceof Promise) {
return parsePromise(ctx, id, current as unknown as Promise<unknown>);
}
const currentFeatures = ctx.base.features;
// BigInt Typed Arrays
if (currentFeatures & Feature.BigIntTypedArray) {
switch (currentClass) {
case BigInt64Array:
case BigUint64Array:
return parseBigIntTypedArray(
ctx,
id,
current as unknown as BigIntTypedArrayValue,
);
default:
break;
}
}
if (
currentFeatures & Feature.AggregateError &&
typeof AggregateError !== 'undefined' &&
(currentClass === AggregateError || current instanceof AggregateError)
) {
return parseAggregateError(ctx, id, current as unknown as AggregateError);
}
// Slow path. We only need to handle Errors and Iterators
// since they have very broad implementations.
if (current instanceof Error) {
return parseError(ctx, id, current);
}
// Generator functions don't have a global constructor
// despite existing
if (SYM_ITERATOR in current || SYM_ASYNC_ITERATOR in current) {
return parsePlainObject(ctx, id, current, !!currentClass);
}
throw new SerovalUnsupportedTypeError(current);
}
function parseObject(
ctx: SOSParserContext,
id: number,
current: object,
): SerovalNode {
if (Array.isArray(current)) {
return parseArray(ctx, id, current);
}
if (isStream(current)) {
return parseStream(ctx, id, current);
}
const currentClass = current.constructor;
if (currentClass === OpaqueReference) {
return parseSOS(
ctx,
(current as OpaqueReference<unknown, unknown>).replacement,
);
}
const parsed = parsePlugin(ctx, id, current);
if (parsed) {
return parsed;
}
return parseObjectPhase2(ctx, id, current, currentClass);
}
function parseFunction(ctx: SOSParserContext, current: unknown): SerovalNode {
const ref = getReferenceNode(ctx.base, current);
if (ref.type !== ParserNodeType.Fresh) {
return ref.value;
}
const plugin = parsePlugin(ctx, ref.value, current);
if (plugin) {
return plugin;
}
throw new SerovalUnsupportedTypeError(current);
}
export function parseSOS<T>(ctx: SOSParserContext, current: T): SerovalNode {
switch (typeof current) {
case 'boolean':
return current ? TRUE_NODE : FALSE_NODE;
case 'undefined':
return UNDEFINED_NODE;
case 'string':
return createStringNode(current as string);
case 'number':
return createNumberNode(current as number);
case 'bigint':
return createBigIntNode(current as bigint);
case 'object': {
if (current) {
const ref = getReferenceNode(ctx.base, current);
return ref.type === ParserNodeType.Fresh
? parseObject(ctx, ref.value, current as object)
: ref.value;
}
return NULL_NODE;
}
case 'symbol':
return parseWellKnownSymbol(ctx.base, current);
case 'function': {
return parseFunction(ctx, current);
}
default:
throw new SerovalUnsupportedTypeError(current);
}
}
export function parseTop<T>(ctx: SyncParserContext, current: T): SerovalNode {
try {
return parseSOS(ctx, current);
} catch (error) {
throw error instanceof SerovalParserError
? error
: new SerovalParserError(error);
}
}
function onParse(ctx: StreamParserContext, node: SerovalNode): void {
// If the value emitted happens to be during parsing, we push to the
// buffer and emit after the initial parsing is done.
if (ctx.state.initial) {
ctx.state.buffer.push(node);
} else {
onParseInternal(ctx, node, false);
}
}
function onError(ctx: StreamParserContext, error: unknown): void {
if (ctx.state.onError) {
ctx.state.onError(error);
} else {
throw error instanceof SerovalParserError
? error
: new SerovalParserError(error);
}
}
function onDone(ctx: StreamParserContext): void {
if (ctx.state.onDone) {
ctx.state.onDone();
}
}
function onParseInternal(
ctx: StreamParserContext,
node: SerovalNode,
initial: boolean,
): void {
try {
ctx.state.onParse(node, initial);
} catch (error) {
onError(ctx, error);
}
}
function pushPendingState(ctx: StreamParserContext): void {
ctx.state.pending++;
}
function popPendingState(ctx: StreamParserContext): void {
if (--ctx.state.pending <= 0) {
onDone(ctx);
}
}
export function parseWithError<T>(
ctx: StreamParserContext,
current: T,
): SerovalNode | undefined {
try {
return parseSOS(ctx, current);
} catch (err) {
onError(ctx, err);
return NIL;
}
}
export function startStreamParse<T>(
ctx: StreamParserContext,
current: T,
): void {
const parsed = parseWithError(ctx, current);
if (parsed) {
onParseInternal(ctx, parsed, true);
ctx.state.initial = false;
flushStreamParse(ctx, ctx.state);
// Check if there's any pending pushes
if (ctx.state.pending <= 0) {
destroyStreamParse(ctx);
}
}
}
function flushStreamParse(
ctx: StreamParserContext,
state: StreamParserState,
): void {
for (let i = 0, len = state.buffer.length; i < len; i++) {
onParseInternal(ctx, state.buffer[i], false);
}
}
export function destroyStreamParse(ctx: StreamParserContext): void {
if (ctx.state.alive) {
onDone(ctx);
ctx.state.alive = false;
}
}
import type { AsyncParserContextOptions } from '../context/async-parser';
import {
createAsyncParserContext,
parseTopAsync,
} from '../context/async-parser';
import type { CrossDeserializerContextOptions } from '../context/deserializer';
import {
createCrossDeserializerContext,
deserializeTop,
} from '../context/deserializer';
import type { CrossContextOptions } from '../context/serializer';
import {
createCrossSerializerContext,
serializeTopCross,
} from '../context/serializer';
import type {
StreamParserContextOptions,
SyncParserContextOptions,
} from '../context/sync-parser';
import {
createStreamParserContext,
createSyncParserContext,
destroyStreamParse,
parseTop,
startStreamParse,
} from '../context/sync-parser';
import { resolvePlugins, SerovalMode } from '../plugin';
import type { SerovalNode } from '../types';
export interface CrossSerializeOptions
extends SyncParserContextOptions,
CrossContextOptions {}
export function crossSerialize<T>(
source: T,
options: CrossSerializeOptions = {},
): string {
const plugins = resolvePlugins(options.plugins);
const ctx = createSyncParserContext(SerovalMode.Cross, {
plugins,
disabledFeatures: options.disabledFeatures,
refs: options.refs,
});
const tree = parseTop(ctx, source);
const serial = createCrossSerializerContext({
plugins,
features: ctx.base.features,
scopeId: options.scopeId,
markedRefs: ctx.base.marked,
});
return serializeTopCross(serial, tree);
}
export interface CrossSerializeAsyncOptions
extends AsyncParserContextOptions,
CrossContextOptions {}
export async function crossSerializeAsync<T>(
source: T,
options: CrossSerializeAsyncOptions = {},
): Promise<string> {
const plugins = resolvePlugins(options.plugins);
const ctx = createAsyncParserContext(SerovalMode.Cross, {
plugins,
disabledFeatures: options.disabledFeatures,
refs: options.refs,
});
const tree = await parseTopAsync(ctx, source);
const serial = createCrossSerializerContext({
plugins,
features: ctx.base.features,
scopeId: options.scopeId,
markedRefs: ctx.base.marked,
});
return serializeTopCross(serial, tree);
}
export type ToCrossJSONOptions = SyncParserContextOptions;
export function toCrossJSON<T>(
source: T,
options: ToCrossJSONOptions = {},
): SerovalNode {
const plugins = resolvePlugins(options.plugins);
const ctx = createSyncParserContext(SerovalMode.Cross, {
plugins,
disabledFeatures: options.disabledFeatures,
refs: options.refs,
});
return parseTop(ctx, source);
}
export type ToCrossJSONAsyncOptions = AsyncParserContextOptions;
export async function toCrossJSONAsync<T>(
source: T,
options: ToCrossJSONAsyncOptions = {},
): Promise<SerovalNode> {
const plugins = resolvePlugins(options.plugins);
const ctx = createAsyncParserContext(SerovalMode.Cross, {
plugins,
disabledFeatures: options.disabledFeatures,
refs: options.refs,
});
return await parseTopAsync(ctx, source);
}
export interface CrossSerializeStreamOptions
extends Omit<StreamParserContextOptions, 'onParse'>,
CrossContextOptions {
onSerialize: (data: string, initial: boolean) => void;
}
export function crossSerializeStream<T>(
source: T,
options: CrossSerializeStreamOptions,
): () => void {
const plugins = resolvePlugins(options.plugins);
const ctx = createStreamParserContext({
plugins,
refs: options.refs,
disabledFeatures: options.disabledFeatures,
onParse(node, initial): void {
const serial = createCrossSerializerContext({
plugins,
features: ctx.base.features,
scopeId: options.scopeId,
markedRefs: ctx.base.marked,
});
let serialized: string;
try {
serialized = serializeTopCross(serial, node);
} catch (err) {
if (options.onError) {
options.onError(err);
}
return;
}
options.onSerialize(serialized, initial);
},
onError: options.onError,
onDone: options.onDone,
});
startStreamParse(ctx, source);
return destroyStreamParse.bind(null, ctx);
}
export type ToCrossJSONStreamOptions = StreamParserContextOptions;
export function toCrossJSONStream<T>(
source: T,
options: ToCrossJSONStreamOptions,
): () => void {
const plugins = resolvePlugins(options.plugins);
const ctx = createStreamParserContext({
plugins,
refs: options.refs,
disabledFeatures: options.disabledFeatures,
onParse: options.onParse,
onError: options.onError,
onDone: options.onDone,
});
startStreamParse(ctx, source);
return destroyStreamParse.bind(null, ctx);
}
export type FromCrossJSONOptions = CrossDeserializerContextOptions;
export function fromCrossJSON<T>(
source: SerovalNode,
options: FromCrossJSONOptions,
): T {
const plugins = resolvePlugins(options.plugins);
const ctx = createCrossDeserializerContext({
plugins,
refs: options.refs,
});
return deserializeTop(ctx, source) as T;
}
/// <reference types="pridepack/env" />
import { serializeString } from './string';
import type { SerovalNode } from './types';
const { toString: objectToString } = /* @__PURE__ */ Object.prototype;
const enum StepErrorCodes {
Parse = 1,
Serialize = 2,
Deserialize = 3,
}
function getErrorMessageDev(type: string, cause: any): string {
if (cause instanceof Error) {
return `Seroval caught an error during the ${type} process.
${cause.name}
${cause.message}
- For more information, please check the "cause" property of this error.
- If you believe this is an error in Seroval, please submit an issue at https://github.com/lxsmnsyc/seroval/issues/new`;
}
return `Seroval caught an error during the ${type} process.
"${objectToString.call(cause)}"
For more information, please check the "cause" property of this error.`;
}
const STEP_ERROR_CODES: Record<string, StepErrorCodes> = {
parsing: StepErrorCodes.Parse,
serialization: StepErrorCodes.Serialize,
deserialization: StepErrorCodes.Deserialize,
};
function getErrorMessageProd(type: string): string {
return `Seroval Error (step: ${STEP_ERROR_CODES[type]})`;
}
const getErrorMessage = (type: string, cause: any) =>
import.meta.env.PROD
? getErrorMessageProd(type)
: getErrorMessageDev(type, cause);
export class SerovalError extends Error {
constructor(
type: string,
public cause: any,
) {
super(getErrorMessage(type, cause));
}
}
export class SerovalParserError extends SerovalError {
constructor(cause: any) {
super('parsing', cause);
}
}
export class SerovalSerializationError extends SerovalError {
constructor(cause: any) {
super('serialization', cause);
}
}
export class SerovalDeserializationError extends SerovalError {
constructor(cause: any) {
super('deserialization', cause);
}
}
const enum SpecificErrorCodes {
UnsupportedType = 1,
UnsupportedNode = 2,
MissingPlugin = 3,
MissingInstance = 4,
MissingReference = 5,
MissingReferenceForId = 6,
UnknownTypedArray = 7,
}
function getSpecificErrorMessage(code: SpecificErrorCodes): string {
return `Seroval Error (specific: ${code})`;
}
export class SerovalUnsupportedTypeError extends Error {
constructor(public value: unknown) {
super(
import.meta.env.PROD
? getSpecificErrorMessage(SpecificErrorCodes.UnsupportedType)
: `The value ${objectToString.call(value)} of type "${typeof value}" cannot be parsed/serialized.
There are few workarounds for this problem:
- Transform the value in a way that it can be serialized.
- If the reference is present on multiple runtimes (isomorphic), you can use the Reference API to map the references.`,
);
}
}
export class SerovalUnsupportedNodeError extends Error {
constructor(node: SerovalNode) {
super(
import.meta.env.PROD
? getSpecificErrorMessage(SpecificErrorCodes.UnsupportedNode)
: 'Unsupported node type "' + node.t + '".',
);
}
}
export class SerovalMissingPluginError extends Error {
constructor(tag: string) {
super(
import.meta.env.PROD
? getSpecificErrorMessage(SpecificErrorCodes.MissingPlugin)
: 'Missing plugin for tag "' + tag + '".',
);
}
}
export class SerovalMissingInstanceError extends Error {
constructor(tag: string) {
super(
import.meta.env.PROD
? getSpecificErrorMessage(SpecificErrorCodes.MissingInstance)
: 'Missing "' + tag + '" instance.',
);
}
}
export class SerovalMissingReferenceError extends Error {
constructor(public value: unknown) {
super(
import.meta.env.PROD
? getSpecificErrorMessage(SpecificErrorCodes.MissingReference)
: 'Missing reference for the value "' +
objectToString.call(value) +
'" of type "' +
typeof value +
'"',
);
}
}
export class SerovalMissingReferenceForIdError extends Error {
constructor(id: string) {
super(
import.meta.env.PROD
? getSpecificErrorMessage(SpecificErrorCodes.MissingReferenceForId)
: 'Missing reference for id "' + serializeString(id) + '"',
);
}
}
export class SerovalUnknownTypedArrayError extends Error {
constructor(name: string) {
super(
import.meta.env.PROD
? getSpecificErrorMessage(SpecificErrorCodes.UnknownTypedArray)
: 'Unknown TypedArray "' + name + '"',
);
}
}
declare const T: unknown;
const RETURN = () => T;
const SERIALIZED_RETURN = /* @__PURE__ */ RETURN.toString();
const IS_MODERN = /* @__PURE__ */ /=>/.test(SERIALIZED_RETURN);
export function createFunction(parameters: string[], body: string): string {
if (IS_MODERN) {
const joined =
parameters.length === 1
? parameters[0]
: '(' + parameters.join(',') + ')';
return joined + '=>' + (body.startsWith('{') ? '(' + body + ')' : body);
}
return 'function(' + parameters.join(',') + '){return ' + body + '}';
}
export function createEffectfulFunction(
parameters: string[],
body: string,
): string {
if (IS_MODERN) {
const joined =
parameters.length === 1
? parameters[0]
: '(' + parameters.join(',') + ')';
return joined + '=>{' + body + '}';
}
return 'function(' + parameters.join(',') + '){' + body + '}';
}
import { serializeString } from './string';
// Used for mapping isomorphic references
export const REFERENCES_KEY = '__SEROVAL_REFS__';
export const GLOBAL_CONTEXT_REFERENCES = '$R';
const GLOBAL_CONTEXT_R = `self.${GLOBAL_CONTEXT_REFERENCES}`;
export function getCrossReferenceHeader(id?: string): string {
if (id == null) {
return `${GLOBAL_CONTEXT_R}=${GLOBAL_CONTEXT_R}||[]`;
}
return `(${GLOBAL_CONTEXT_R}=${GLOBAL_CONTEXT_R}||{})["${serializeString(
id,
)}"]=[]`;
}
import { NIL, SerovalConstant, SerovalNodeType } from './constants';
import { createSerovalNode } from './node';
import type { SerovalConstantNode } from './types';
function createConstantNode(value: SerovalConstant): SerovalConstantNode {
return createSerovalNode(
SerovalNodeType.Constant,
NIL,
value,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
NIL,
);
}
export const TRUE_NODE = /* @__PURE__ */ createConstantNode(
SerovalConstant.True,
);
export const FALSE_NODE = /* @__PURE__ */ createConstantNode(
SerovalConstant.False,
);
export const UNDEFINED_NODE = /* @__PURE__ */ createConstantNode(
SerovalConstant.Undefined,
);
export const NULL_NODE = /* @__PURE__ */ createConstantNode(
SerovalConstant.Null,
);
export const NEG_ZERO_NODE = /* @__PURE__ */ createConstantNode(
SerovalConstant.NegZero,
);
export const INFINITY_NODE = /* @__PURE__ */ createConstantNode(
SerovalConstant.Inf,
);
export const NEG_INFINITY_NODE = /* @__PURE__ */ createConstantNode(
SerovalConstant.NegInf,
);
export const NAN_NODE = /* @__PURE__ */ createConstantNode(SerovalConstant.Nan);
import type { SerovalNodeType } from './constants';
import type { SerovalNode } from './types';
type ExtractedNodeType<T extends SerovalNodeType> = Extract<
SerovalNode,
{ t: T }
>;
export function createSerovalNode<
T extends SerovalNodeType,
N extends ExtractedNodeType<T>,
>(
t: T,
i: N['i'],
s: N['s'],
l: N['l'],
c: N['c'],
m: N['m'],
p: N['p'],
e: N['e'],
a: N['a'],
f: N['f'],
b: N['b'],
o: N['o'],
): N {
return {
t,
i,
s,
l,
c,
m,
p,
e,
a,
f,
b,
o,
} as N;
}
/**
* An opaque reference allows hiding values from the serializer.
*/
export class OpaqueReference<V, R = undefined> {
constructor(
public readonly value: V,
public readonly replacement?: R,
) {}
}
import type { AsyncParsePluginContext } from './context/async-parser';
import type { DeserializePluginContext } from './context/deserializer';
import type { SerializePluginContext } from './context/serializer';
import type {
StreamParsePluginContext,
SyncParsePluginContext,
} from './context/sync-parser';
export const enum SerovalMode {
Vanilla = 1,
Cross = 2,
}
export interface PluginData {
id: number;
}
export interface Plugin<Value, Node> {
/**
* A unique string that helps idenfity the plugin
*/
tag: string;
/**
* List of dependency plugins
*/
extends?: Plugin<any, any>[];
/**
* Method to test if a value is an expected value of the plugin
* @param value
*/
test(value: unknown): boolean;
/**
* Parsing modes
*/
parse: {
sync?: (
value: Value,
ctx: SyncParsePluginContext,
data: PluginData,
) => Node;
async?: (
value: Value,
ctx: AsyncParsePluginContext,
data: PluginData,
) => Promise<Node>;
stream?: (
value: Value,
ctx: StreamParsePluginContext,
data: PluginData,
) => Node;
};
/**
* Convert the parsed node into a JS string
*/
serialize(node: Node, ctx: SerializePluginContext, data: PluginData): string;
/**
* Convert the parsed node into its runtime equivalent.
*/
deserialize(
node: Node,
ctx: DeserializePluginContext,
data: PluginData,
): Value;
}
export function createPlugin<Value, Node>(
plugin: Plugin<Value, Node>,
): Plugin<Value, Node> {
return plugin;
}
export interface PluginAccessOptions {
plugins?: Plugin<any, any>[];
}
function dedupePlugins(
deduped: Set<Plugin<any, any>>,
plugins: Plugin<any, any>[],
): void {
for (let i = 0, len = plugins.length; i < len; i++) {
const current = plugins[i];
if (!deduped.has(current)) {
deduped.add(current);
if (current.extends) {
dedupePlugins(deduped, current.extends);
}
}
}
}
export function resolvePlugins(
plugins?: Plugin<any, any>[],
): Plugin<any, any>[] | undefined {
if (plugins) {
const deduped = new Set<Plugin<any, any>>();
dedupePlugins(deduped, plugins);
return [...deduped];
}
return undefined;
}
import {
SerovalMissingReferenceError,
SerovalMissingReferenceForIdError,
} from '..';
import { REFERENCES_KEY } from './keys';
const REFERENCE = new Map<unknown, string>();
const INV_REFERENCE = new Map<string, unknown>();
export function createReference<T>(id: string, value: T): T {
REFERENCE.set(value, id);
INV_REFERENCE.set(id, value);
return value;
}
export function hasReferenceID<T>(value: T): boolean {
return REFERENCE.has(value);
}
export function hasReference(id: string): boolean {
return INV_REFERENCE.has(id);
}
export function getReferenceID<T>(value: T): string {
if (hasReferenceID(value)) {
return REFERENCE.get(value)!;
}
throw new SerovalMissingReferenceError(value);
}
export function getReference<T>(id: string): T {
if (hasReference(id)) {
return INV_REFERENCE.get(id) as T;
}
throw new SerovalMissingReferenceForIdError(id);
}
if (typeof globalThis !== 'undefined') {
Object.defineProperty(globalThis, REFERENCES_KEY, {
value: INV_REFERENCE,
configurable: true,
writable: false,
enumerable: false,
});
} else if (typeof window !== 'undefined') {
Object.defineProperty(window, REFERENCES_KEY, {
value: INV_REFERENCE,
configurable: true,
writable: false,
enumerable: false,
});
} else if (typeof self !== 'undefined') {
Object.defineProperty(self, REFERENCES_KEY, {
value: INV_REFERENCE,
configurable: true,
writable: false,
enumerable: false,
});
} else if (typeof global !== 'undefined') {
Object.defineProperty(global, REFERENCES_KEY, {
value: INV_REFERENCE,
configurable: true,
writable: false,
enumerable: false,
});
}
import { crossSerializeStream } from './cross';
import {
resolvePlugins,
type Plugin,
type PluginAccessOptions,
} from './plugin';
import { serializeString } from './string';
export interface SerializerOptions extends PluginAccessOptions {
globalIdentifier: string;
scopeId?: string;
disabledFeatures?: number;
onData: (result: string) => void;
onError: (error: unknown) => void;
onDone?: () => void;
}
export default class Serializer {
private alive = true;
private flushed = false;
private done = false;
private pending = 0;
private cleanups: (() => void)[] = [];
private refs = new Map<unknown, number>();
private plugins?: Plugin<any, any>[];
constructor(private options: SerializerOptions) {
this.plugins = resolvePlugins(options.plugins);
}
keys = new Set<string>();
write(key: string, value: unknown): void {
if (this.alive && !this.flushed) {
this.pending++;
this.keys.add(key);
this.cleanups.push(
crossSerializeStream(value, {
plugins: this.plugins,
scopeId: this.options.scopeId,
refs: this.refs,
disabledFeatures: this.options.disabledFeatures,
onError: this.options.onError,
onSerialize: (data, initial) => {
if (this.alive) {
this.options.onData(
initial
? this.options.globalIdentifier +
'["' +
serializeString(key) +
'"]=' +
data
: data,
);
}
},
onDone: () => {
if (this.alive) {
this.pending--;
if (
this.pending <= 0 &&
this.flushed &&
!this.done &&
this.options.onDone
) {
this.options.onDone();
this.done = true;
}
}
},
}),
);
}
}
ids = 0;
private getNextID(): string {
while (this.keys.has('' + this.ids)) {
this.ids++;
}
return '' + this.ids;
}
push(value: unknown): string {
const newID = this.getNextID();
this.write(newID, value);
return newID;
}
flush(): void {
if (this.alive) {
this.flushed = true;
if (this.pending <= 0 && !this.done && this.options.onDone) {
this.options.onDone();
this.done = true;
}
}
}
close(): void {
if (this.alive) {
for (let i = 0, len = this.cleanups.length; i < len; i++) {
this.cleanups[i]();
}
if (!this.done && this.options.onDone) {
this.options.onDone();
this.done = true;
}
this.alive = false;
}
}
}
import {
SERIALIZED_ARRAY_BUFFER_CONSTRUCTOR,
SERIALIZED_PROMISE_CONSTRUCTOR,
SERIALIZED_PROMISE_FAILURE,
SERIALIZED_PROMISE_SUCCESS,
SERIALIZED_STREAM_CONSTRUCTOR,
} from './constructors';
export const ITERATOR = {};
export const ASYNC_ITERATOR = {};
export const enum SpecialReference {
MapSentinel = 0,
PromiseConstructor = 1,
PromiseSuccess = 2,
PromiseFailure = 3,
StreamConstructor = 4,
ArrayBufferConstructor = 5,
}
/**
* Placeholder references
*/
export const SPECIAL_REFS: Record<SpecialReference, unknown> = {
[SpecialReference.MapSentinel]: {},
[SpecialReference.PromiseConstructor]: {},
[SpecialReference.PromiseSuccess]: {},
[SpecialReference.PromiseFailure]: {},
[SpecialReference.StreamConstructor]: {},
[SpecialReference.ArrayBufferConstructor]: {},
};
export const SPECIAL_REF_STRING: Record<SpecialReference, string> = {
[SpecialReference.MapSentinel]: '[]',
[SpecialReference.PromiseConstructor]: SERIALIZED_PROMISE_CONSTRUCTOR,
[SpecialReference.PromiseSuccess]: SERIALIZED_PROMISE_SUCCESS,
[SpecialReference.PromiseFailure]: SERIALIZED_PROMISE_FAILURE,
[SpecialReference.StreamConstructor]: SERIALIZED_STREAM_CONSTRUCTOR,
[SpecialReference.ArrayBufferConstructor]:
SERIALIZED_ARRAY_BUFFER_CONSTRUCTOR,
};
import {
ASYNC_ITERATOR_CONSTRUCTOR,
PROMISE_CONSTRUCTOR,
STREAM_CONSTRUCTOR,
} from './constructors';
import { SYM_ASYNC_ITERATOR } from './symbols';
export interface StreamListener<T> {
next(value: T): void;
throw(value: unknown): void;
return(value: T): void;
}
export interface Stream<T> {
__SEROVAL_STREAM__: true;
on(listener: StreamListener<T>): () => void;
next(value: T): void;
throw(value: unknown): void;
return(value: T): void;
}
export function isStream<T>(value: object): value is Stream<T> {
return '__SEROVAL_STREAM__' in value;
}
export function createStream<T>(): Stream<T> {
return STREAM_CONSTRUCTOR() as unknown as Stream<T>;
}
export function createStreamFromAsyncIterable<T>(
iterable: AsyncIterable<T>,
): Stream<T> {
const stream = createStream<T>();
const iterator = iterable[SYM_ASYNC_ITERATOR]();
async function push(): Promise<void> {
try {
const value = await iterator.next();
if (value.done) {
stream.return(value.value as T);
} else {
stream.next(value.value);
await push();
}
} catch (error) {
stream.throw(error);
}
}
push().catch(() => {
// no-op
});
return stream;
}
const createAsyncIterable = ASYNC_ITERATOR_CONSTRUCTOR(
SYM_ASYNC_ITERATOR,
PROMISE_CONSTRUCTOR,
);
export function streamToAsyncIterable<T>(
stream: Stream<T>,
): () => AsyncIterableIterator<T> {
return createAsyncIterable(
stream,
) as unknown as () => AsyncIterableIterator<T>;
}
export function serializeChar(str: string): string | undefined {
switch (str) {
case '"':
return '\\"';
case '\\':
return '\\\\';
case '\n':
return '\\n';
case '\r':
return '\\r';
case '\b':
return '\\b';
case '\t':
return '\\t';
case '\f':
return '\\f';
case '<':
return '\\x3C';
case '\u2028':
return '\\u2028';
case '\u2029':
return '\\u2029';
default:
return undefined;
}
}
// Written by https://github.com/DylanPiercey and is distributed under the MIT license.
// Creates a JavaScript double quoted string and escapes all characters
// not listed as DoubleStringCharacters on
// Also includes "<" to escape "</script>" and "\" to avoid invalid escapes in the output.
// http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4
export function serializeString(str: string): string {
let result = '';
let lastPos = 0;
let replacement: string | undefined;
for (let i = 0, len = str.length; i < len; i++) {
replacement = serializeChar(str[i]);
if (replacement) {
result += str.slice(lastPos, i) + replacement;
lastPos = i + 1;
}
}
if (lastPos === 0) {
result = str;
} else {
result += str.slice(lastPos);
}
return result;
}
function deserializeReplacer(str: string): string {
switch (str) {
case '\\\\':
return '\\';
case '\\"':
return '"';
case '\\n':
return '\n';
case '\\r':
return '\r';
case '\\b':
return '\b';
case '\\t':
return '\t';
case '\\f':
return '\f';
case '\\x3C':
return '\x3C';
case '\\u2028':
return '\u2028';
case '\\u2029':
return '\u2029';
default:
return str;
}
}
export function deserializeString(str: string): string {
return str.replace(
/(\\\\|\\"|\\n|\\r|\\b|\\t|\\f|\\u2028|\\u2029|\\x3C)/g,
deserializeReplacer,
);
}
export const SYM_ASYNC_ITERATOR: typeof Symbol.asyncIterator = Symbol.asyncIterator;
export const SYM_HAS_INSTANCE: typeof Symbol.hasInstance = Symbol.hasInstance;
export const SYM_IS_CONCAT_SPREADABLE: typeof Symbol.isConcatSpreadable = Symbol.isConcatSpreadable;
export const SYM_ITERATOR: typeof Symbol.iterator = Symbol.iterator;
export const SYM_MATCH: typeof Symbol.match = Symbol.match;
export const SYM_MATCH_ALL: typeof Symbol.matchAll = Symbol.matchAll;
export const SYM_REPLACE: typeof Symbol.replace = Symbol.replace;
export const SYM_SEARCH: typeof Symbol.search = Symbol.search;
export const SYM_SPECIES: typeof Symbol.species = Symbol.species;
export const SYM_SPLIT: typeof Symbol.split = Symbol.split;
export const SYM_TO_PRIMITIVE: typeof Symbol.toPrimitive = Symbol.toPrimitive;
export const SYM_TO_STRING_TAG: typeof Symbol.toStringTag = Symbol.toStringTag;
export const SYM_UNSCOPABLES: typeof Symbol.unscopables = Symbol.unscopables;
// For the future
// export const SYM_DISPOSE = Symbol.dispose;
// export const SYM_ASYNC_DISPOSE = Symbol.asyncDispose;
import {
createAsyncParserContext,
parseTopAsync,
} from '../context/async-parser';
import {
createVanillaDeserializerContext,
deserializeTop,
} from '../context/deserializer';
import type { BaseParserContextOptions } from '../context/parser';
import {
createVanillaSerializerContext,
serializeTopVanilla,
} from '../context/serializer';
import { createSyncParserContext, parseTop } from '../context/sync-parser';
import {
type PluginAccessOptions,
resolvePlugins,
SerovalMode,
} from '../plugin';
import type { SerovalNode } from '../types';
export type SyncParserContextOptions = Omit<BaseParserContextOptions, 'refs'>;
export type AsyncParserContextOptions = Omit<BaseParserContextOptions, 'refs'>;
export function serialize<T>(
source: T,
options: SyncParserContextOptions = {},
): string {
const plugins = resolvePlugins(options.plugins);
const ctx = createSyncParserContext(SerovalMode.Vanilla, {
plugins,
disabledFeatures: options.disabledFeatures,
});
const tree = parseTop(ctx, source);
const serial = createVanillaSerializerContext({
plugins,
features: ctx.base.features,
markedRefs: ctx.base.marked,
});
return serializeTopVanilla(serial, tree);
}
export async function serializeAsync<T>(
source: T,
options: AsyncParserContextOptions = {},
): Promise<string> {
const plugins = resolvePlugins(options.plugins);
const ctx = createAsyncParserContext(SerovalMode.Vanilla, {
plugins,
disabledFeatures: options.disabledFeatures,
});
const tree = await parseTopAsync(ctx, source);
const serial = createVanillaSerializerContext({
plugins,
features: ctx.base.features,
markedRefs: ctx.base.marked,
});
return serializeTopVanilla(serial, tree);
}
export function deserialize<T>(source: string): T {
return (0, eval)(source) as T;
}
export interface SerovalJSON {
t: SerovalNode;
f: number;
m: number[];
}
export function toJSON<T>(
source: T,
options: SyncParserContextOptions = {},
): SerovalJSON {
const plugins = resolvePlugins(options.plugins);
const ctx = createSyncParserContext(SerovalMode.Vanilla, {
plugins,
disabledFeatures: options.disabledFeatures,
});
return {
t: parseTop(ctx, source),
f: ctx.base.features,
m: Array.from(ctx.base.marked),
};
}
export async function toJSONAsync<T>(
source: T,
options: AsyncParserContextOptions = {},
): Promise<SerovalJSON> {
const plugins = resolvePlugins(options.plugins);
const ctx = createAsyncParserContext(SerovalMode.Vanilla, {
plugins,
disabledFeatures: options.disabledFeatures,
});
return {
t: await parseTopAsync(ctx, source),
f: ctx.base.features,
m: Array.from(ctx.base.marked),
};
}
export function compileJSON(
source: SerovalJSON,
options: PluginAccessOptions = {},
): string {
const plugins = resolvePlugins(options.plugins);
const ctx = createVanillaSerializerContext({
plugins,
features: source.f,
markedRefs: source.m,
});
return serializeTopVanilla(ctx, source.t);
}
export function fromJSON<T>(
source: SerovalJSON,
options: PluginAccessOptions = {},
): T {
const plugins = resolvePlugins(options.plugins);
const ctx = createVanillaDeserializerContext({
plugins,
markedRefs: source.m,
});
return deserializeTop(ctx, source.t) as T;
}
import type {
ErrorConstructorTag,
SerovalConstant,
SerovalNodeType,
SerovalObjectFlags,
Symbols,
} from './constants';
import type { SpecialReference } from './special-reference';
export interface SerovalBaseNode {
// Type of the node
t: SerovalNodeType;
// Reference ID
i: number | undefined;
// Serialized value
s: unknown;
// size/length
l: number | undefined;
// Constructor name / RegExp source
c: string | undefined;
// message/flags
m: string | undefined;
// properties (objects)
p: SerovalObjectRecordNode | undefined;
// entries (for Map, etc.)
e: SerovalMapRecordNode | undefined;
// array of nodes
a: (SerovalNode | undefined)[] | undefined;
// fulfilled node
f: SerovalNode | undefined;
// byte offset/object flags
b: number | undefined;
// object flag
o: SerovalObjectFlags | undefined;
}
export type SerovalObjectRecordKey = string | SerovalNode;
export interface SerovalObjectRecordNode {
k: SerovalObjectRecordKey[];
v: SerovalNode[];
s: number;
}
export interface SerovalMapRecordNode {
k: SerovalNode[];
v: SerovalNode[];
s: number;
}
export interface SerovalNumberNode extends SerovalBaseNode {
t: SerovalNodeType.Number;
s: number;
}
export interface SerovalStringNode extends SerovalBaseNode {
t: SerovalNodeType.String;
s: string;
}
export interface SerovalConstantNode extends SerovalBaseNode {
t: SerovalNodeType.Constant;
s: SerovalConstant;
}
export type SerovalPrimitiveNode =
| SerovalNumberNode
| SerovalStringNode
| SerovalConstantNode;
export interface SerovalIndexedValueNode extends SerovalBaseNode {
t: SerovalNodeType.IndexedValue;
// id
i: number;
}
export interface SerovalBigIntNode extends SerovalBaseNode {
t: SerovalNodeType.BigInt;
// value in string
s: string;
}
export interface SerovalDateNode extends SerovalBaseNode {
t: SerovalNodeType.Date;
// id (Dates are stateful)
i: number;
// value in ISO string
s: string;
}
export interface SerovalRegExpNode extends SerovalBaseNode {
t: SerovalNodeType.RegExp;
// id (RegExp are stateful)
i: number;
// source
c: string;
// flags
m: string;
}
export interface SerovalArrayBufferNode extends SerovalBaseNode {
t: SerovalNodeType.ArrayBuffer;
// id
i: number;
// byte string
s: string;
// length
l: number;
// array buffer constructor
f: SerovalNodeWithID;
}
export interface SerovalTypedArrayNode extends SerovalBaseNode {
t: SerovalNodeType.TypedArray;
// id
i: number;
// length
l: number;
// TypedArray Constructor
c: string;
// ArrayBuffer reference
f: SerovalNode;
// Byte Offset
b: number;
}
export interface SerovalBigIntTypedArrayNode extends SerovalBaseNode {
t: SerovalNodeType.BigIntTypedArray;
i: number;
// length
l: number;
// TypedArray Constructor
c: string;
// ArrayBuffer reference
f: SerovalNode;
// Byte Offset
b: number;
}
export type SerovalSemiPrimitiveNode =
| SerovalBigIntNode
| SerovalDateNode
| SerovalRegExpNode
| SerovalTypedArrayNode
| SerovalBigIntTypedArrayNode;
export interface SerovalSetNode extends SerovalBaseNode {
t: SerovalNodeType.Set;
// id
i: number;
// Size of Set
l: number;
// Items in Set (as array)
a: SerovalNode[];
}
export interface SerovalMapNode extends SerovalBaseNode {
t: SerovalNodeType.Map;
i: number;
// key/value pairs
e: SerovalMapRecordNode;
f: SerovalNodeWithID;
}
export interface SerovalArrayNode extends SerovalBaseNode {
t: SerovalNodeType.Array;
// size of array
l: number;
// items
a: (SerovalNode | undefined)[];
i: number;
o: SerovalObjectFlags;
}
export interface SerovalObjectNode extends SerovalBaseNode {
t: SerovalNodeType.Object;
// key/value pairs
p: SerovalObjectRecordNode;
i: number;
o: SerovalObjectFlags;
}
export interface SerovalNullConstructorNode extends SerovalBaseNode {
t: SerovalNodeType.NullConstructor;
// key/value pairs
p: SerovalObjectRecordNode;
i: number;
o: SerovalObjectFlags;
}
export interface SerovalPromiseNode extends SerovalBaseNode {
t: SerovalNodeType.Promise;
s: 0 | 1;
// resolved value
f: SerovalNode;
i: number;
}
export interface SerovalErrorNode extends SerovalBaseNode {
t: SerovalNodeType.Error;
// constructor name
s: ErrorConstructorTag;
// message
m: string;
// other properties
p: SerovalObjectRecordNode | undefined;
i: number;
}
export interface SerovalAggregateErrorNode extends SerovalBaseNode {
t: SerovalNodeType.AggregateError;
i: number;
// message
m: string;
// other properties
p: SerovalObjectRecordNode | undefined;
}
export interface SerovalWKSymbolNode extends SerovalBaseNode {
t: SerovalNodeType.WKSymbol;
i: number;
s: Symbols;
}
export interface SerovalReferenceNode extends SerovalBaseNode {
t: SerovalNodeType.Reference;
i: number;
// id of the reference in the map
s: string;
}
export interface SerovalDataViewNode extends SerovalBaseNode {
t: SerovalNodeType.DataView;
i: number;
// byte length
l: number;
// reference to array buffer
f: SerovalNode;
// byte offset
b: number;
}
export interface SerovalBoxedNode extends SerovalBaseNode {
t: SerovalNodeType.Boxed;
i: number;
f: SerovalNode;
}
export interface SerovalPromiseConstructorNode extends SerovalBaseNode {
t: SerovalNodeType.PromiseConstructor;
i: number;
s: number;
f: SerovalNodeWithID;
}
export interface SerovalPromiseResolveNode extends SerovalBaseNode {
t: SerovalNodeType.PromiseSuccess;
i: number;
a: [resolver: SerovalNodeWithID, resolved: SerovalNode];
}
export interface SerovalPromiseRejectNode extends SerovalBaseNode {
t: SerovalNodeType.PromiseFailure;
i: number;
a: [resolver: SerovalNodeWithID, resolved: SerovalNode];
}
export interface SerovalPluginNode extends SerovalBaseNode {
t: SerovalNodeType.Plugin;
i: number;
// value
s: unknown;
// tag name
c: string;
}
/**
* Represents special values as placeholders
*/
export interface SerovalSpecialReferenceNode extends SerovalBaseNode {
t: SerovalNodeType.SpecialReference;
i: number;
s: SpecialReference;
}
export interface SerovalIteratorFactoryNode extends SerovalBaseNode {
t: SerovalNodeType.IteratorFactory;
i: number;
f: SerovalNodeWithID;
}
export interface SerovalIteratorFactoryInstanceNode extends SerovalBaseNode {
t: SerovalNodeType.IteratorFactoryInstance;
a: [instance: SerovalNodeWithID, sequence: SerovalNode];
}
export interface SerovalAsyncIteratorFactoryNode extends SerovalBaseNode {
t: SerovalNodeType.AsyncIteratorFactory;
i: number;
a: [promise: SerovalNodeWithID, symbol: SerovalNodeWithID];
}
export interface SerovalAsyncIteratorFactoryInstanceNode
extends SerovalBaseNode {
t: SerovalNodeType.AsyncIteratorFactoryInstance;
a: [instance: SerovalNodeWithID, sequence: SerovalNode];
}
export interface SerovalStreamConstructorNode extends SerovalBaseNode {
t: SerovalNodeType.StreamConstructor;
i: number;
a: SerovalNode[];
// special reference to the constructor
f: SerovalNodeWithID;
}
export interface SerovalStreamNextNode extends SerovalBaseNode {
t: SerovalNodeType.StreamNext;
i: number;
// Next value
f: SerovalNode;
}
export interface SerovalStreamThrowNode extends SerovalBaseNode {
t: SerovalNodeType.StreamThrow;
i: number;
// Throw value
f: SerovalNode;
}
export interface SerovalStreamReturnNode extends SerovalBaseNode {
t: SerovalNodeType.StreamReturn;
i: number;
// Return value
f: SerovalNode;
}
export type SerovalSyncNode =
| SerovalPrimitiveNode
| SerovalIndexedValueNode
| SerovalSemiPrimitiveNode
| SerovalSetNode
| SerovalMapNode
| SerovalArrayNode
| SerovalObjectNode
| SerovalNullConstructorNode
| SerovalPromiseNode
| SerovalErrorNode
| SerovalAggregateErrorNode
| SerovalWKSymbolNode
| SerovalReferenceNode
| SerovalArrayBufferNode
| SerovalDataViewNode
| SerovalBoxedNode
| SerovalPluginNode
| SerovalSpecialReferenceNode
| SerovalIteratorFactoryNode
| SerovalIteratorFactoryInstanceNode
| SerovalAsyncIteratorFactoryNode
| SerovalAsyncIteratorFactoryInstanceNode;
export type SerovalAsyncNode =
| SerovalPromiseNode
| SerovalPromiseConstructorNode
| SerovalPromiseResolveNode
| SerovalPromiseRejectNode
| SerovalStreamConstructorNode
| SerovalStreamNextNode
| SerovalStreamThrowNode
| SerovalStreamReturnNode;
export type SerovalNode = SerovalSyncNode | SerovalAsyncNode;
export type SerovalNodeWithID = Extract<SerovalNode, { i: number }>;
import { Feature } from '../compat';
import { ERROR_CONSTRUCTOR_STRING, ErrorConstructorTag } from '../constants';
type ErrorValue =
| Error
| AggregateError
| EvalError
| RangeError
| ReferenceError
| TypeError
| SyntaxError
| URIError;
export function getErrorConstructor(error: ErrorValue): ErrorConstructorTag {
if (error instanceof EvalError) {
return ErrorConstructorTag.EvalError;
}
if (error instanceof RangeError) {
return ErrorConstructorTag.RangeError;
}
if (error instanceof ReferenceError) {
return ErrorConstructorTag.ReferenceError;
}
if (error instanceof SyntaxError) {
return ErrorConstructorTag.SyntaxError;
}
if (error instanceof TypeError) {
return ErrorConstructorTag.TypeError;
}
if (error instanceof URIError) {
return ErrorConstructorTag.URIError;
}
return ErrorConstructorTag.Error;
}
function getInitialErrorOptions(
error: Error,
): Record<string, unknown> | undefined {
const construct = ERROR_CONSTRUCTOR_STRING[getErrorConstructor(error)];
// Name has been modified
if (error.name !== construct) {
return { name: error.name };
}
if (error.constructor.name !== construct) {
// Otherwise, name is overriden because
// the Error class is extended
return { name: error.constructor.name };
}
return {};
}
export function getErrorOptions(
error: Error,
features: number,
): Record<string, unknown> | undefined {
let options = getInitialErrorOptions(error);
const names = Object.getOwnPropertyNames(error);
for (let i = 0, len = names.length, name: string; i < len; i++) {
name = names[i];
if (name !== 'name' && name !== 'message') {
if (name === 'stack') {
if (features & Feature.ErrorPrototypeStack) {
options = options || {};
options[name] = error[name as keyof Error];
}
} else {
options = options || {};
options[name] = error[name as keyof Error];
}
}
}
return options;
}
// Written by https://github.com/DylanPiercey and is distributed under the MIT license.
const REF_START_CHARS = /* @__PURE__ */ 'hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_'; // Avoids chars that could evaluate to a reserved word.
const REF_START_CHARS_LEN = /* @__PURE__ */ REF_START_CHARS.length;
const REF_CHARS =
/* @__PURE__ */ 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_';
const REF_CHARS_LEN = /* @__PURE__ */ REF_CHARS.length;
export default function getIdentifier(index: number): string {
let mod = index % REF_START_CHARS_LEN;
let ref = REF_START_CHARS[mod];
index = (index - mod) / REF_START_CHARS_LEN;
while (index > 0) {
mod = index % REF_CHARS_LEN;
ref += REF_CHARS[mod];
index = (index - mod) / REF_CHARS_LEN;
}
return ref;
}
import { SerovalObjectFlags } from '../constants';
export function getObjectFlag(obj: unknown): SerovalObjectFlags {
if (Object.isFrozen(obj)) {
return SerovalObjectFlags.Frozen;
}
if (Object.isSealed(obj)) {
return SerovalObjectFlags.Sealed;
}
if (Object.isExtensible(obj)) {
return SerovalObjectFlags.None;
}
return SerovalObjectFlags.NonExtensible;
}
const IDENTIFIER_CHECK = /^[$A-Z_][0-9A-Z_$]*$/i;
export function isValidIdentifier(name: string): boolean {
const char = name[0];
return (
(char === '$' ||
char === '_' ||
(char >= 'A' && char <= 'Z') ||
(char >= 'a' && char <= 'z')) &&
IDENTIFIER_CHECK.test(name)
);
}
import { ITERATOR_CONSTRUCTOR } from '../constructors';
import { SYM_ITERATOR } from '../symbols';
export interface Sequence {
v: unknown[];
t: number;
d: number;
}
export function iteratorToSequence<T>(source: Iterable<T>): Sequence {
const values: unknown[] = [];
let throwsAt = -1;
let doneAt = -1;
const iterator = source[SYM_ITERATOR]();
while (true) {
try {
const value = iterator.next();
values.push(value.value);
if (value.done) {
doneAt = values.length - 1;
break;
}
} catch (error) {
throwsAt = values.length;
values.push(error);
}
}
return {
v: values,
t: throwsAt,
d: doneAt,
};
}
const createIterator = ITERATOR_CONSTRUCTOR(SYM_ITERATOR);
export function sequenceToIterator<T>(
sequence: Sequence,
): () => IterableIterator<T> {
return createIterator(sequence) as unknown as () => IterableIterator<T>;
}
export default async function promiseToResult(
current: Promise<unknown>,
): Promise<[0 | 1, unknown]> {
try {
return [1, await current];
} catch (e) {
return [0, e];
}
}
import { SerovalUnknownTypedArrayError } from '../errors';
type TypedArrayConstructor =
| Int8ArrayConstructor
| Int16ArrayConstructor
| Int32ArrayConstructor
| Uint8ArrayConstructor
| Uint16ArrayConstructor
| Uint32ArrayConstructor
| Uint8ClampedArrayConstructor
| Float32ArrayConstructor
| Float64ArrayConstructor
| BigInt64ArrayConstructor
| BigUint64ArrayConstructor;
export type TypedArrayValue =
| Int8Array
| Int16Array
| Int32Array
| Uint8Array
| Uint16Array
| Uint32Array
| Uint8ClampedArray
| Float32Array
| Float64Array;
export type BigIntTypedArrayValue = BigInt64Array | BigUint64Array;
export function getTypedArrayConstructor(name: string): TypedArrayConstructor {
switch (name) {
case 'Int8Array':
return Int8Array;
case 'Int16Array':
return Int16Array;
case 'Int32Array':
return Int32Array;
case 'Uint8Array':
return Uint8Array;
case 'Uint16Array':
return Uint16Array;
case 'Uint32Array':
return Uint32Array;
case 'Uint8ClampedArray':
return Uint8ClampedArray;
case 'Float32Array':
return Float32Array;
case 'Float64Array':
return Float64Array;
case 'BigInt64Array':
return BigInt64Array;
case 'BigUint64Array':
return BigUint64Array;
default:
throw new SerovalUnknownTypedArrayError(name);
}
}
export { Feature } from './core/compat';
export type {
AsyncParsePluginContext,
AsyncParserContextOptions,
} from './core/context/async-parser';
export type {
BaseDeserializerContextOptions,
CrossDeserializerContextOptions,
DeserializePluginContext,
VanillaDeserializerContextOptions,
} from './core/context/deserializer';
export type { BaseParserContextOptions } from './core/context/parser';
export type {
BaseSerializerContextOptions,
CrossContextOptions,
CrossSerializerContextOptions,
SerializePluginContext,
VanillaSerializerContextOptions,
} from './core/context/serializer';
export type {
StreamParsePluginContext,
StreamParserContextOptions,
SyncParsePluginContext,
SyncParserContextOptions,
} from './core/context/sync-parser';
export * from './core/cross';
export * from './core/errors';
export { getCrossReferenceHeader } from './core/keys';
export { OpaqueReference } from './core/opaque-reference';
export * from './core/plugin';
export { createReference } from './core/reference';
export { default as Serializer } from './core/Serializer';
export { createStream } from './core/stream';
export type { Stream, StreamListener } from './core/stream';
export * from './core/tree';
export type { SerovalNode } from './core/types';

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display