seroval 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
- var I=(c=>(c[c.AggregateError=1]="AggregateError",c[c.ArrayPrototypeValues=2]="ArrayPrototypeValues",c[c.ArrowFunction=4]="ArrowFunction",c[c.BigInt=8]="BigInt",c[c.ErrorPrototypeStack=16]="ErrorPrototypeStack",c[c.Map=32]="Map",c[c.MethodShorthand=64]="MethodShorthand",c[c.ObjectAssign=128]="ObjectAssign",c[c.Promise=256]="Promise",c[c.Set=512]="Set",c[c.Symbol=1024]="Symbol",c[c.TypedArray=2048]="TypedArray",c[c.BigIntTypedArray=4096]="BigIntTypedArray",c))(I||{});var be="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",ve=be.length,Ae="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",ge=Ae.length;function se(e){let r=e%ve,n=be[r];for(e=(e-r)/ve;e>0;)r=e%ge,n+=Ae[r],e=(e-r)/ge;return n}var Le={disabledFeatures:0};function h(e={}){let r=Object.assign({},Le,e||{});return{markedRefs:new Set,refs:new Map,features:8191^r.disabledFeatures}}function V(e){return{stack:[],vars:[],assignments:[],validRefs:[],refSize:0,features:e.features,markedRefs:new Set(e.markedRefs),valueMap:new Map}}function R(e,r){e.markedRefs.add(r)}function m(e,r){let n=e.validRefs[r];n==null&&(n=e.refSize++,e.validRefs[r]=n);let t=e.vars[n];return t==null&&(t=se(n),e.vars[n]=t),t}function P(e,r){let n=e.refs.get(r);return n==null?e.refs.size:n}function z(e,r){let n=e.refs.get(r);if(n==null){let t=e.refs.size;return e.refs.set(r,t),t}return R(e,n),n}function S(e,r){if(!e)throw new Error(r)}function A(e){let r="",n=0;for(let t=0,a=e.length;t<a;t++){let o;switch(e[t]){case'"':o='\\"';break;case"\\":o="\\\\";break;case"<":o="\\x3C";break;case`
2
- `:o="\\n";break;case"\r":o="\\r";break;case"\u2028":o="\\u2028";break;case"\u2029":o="\\u2029";break;default:continue}r+=e.slice(n,t)+o,n=t+1}return n===0?r=e:r+=e.slice(n),r}function Ee(e){return e.replace(/\\"/g,'"').replace(/\\\\/g,"\\").replace(/\\x3C/g,"<").replace(/\\n/g,`
3
- `).replace(/\\r/g,"\r").replace(/\\u2028/g,"\u2028").replace(/\\u2029/g,"\u2029")}var Ie={[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"},O={[Symbol.asyncIterator]:0,[Symbol.hasInstance]:1,[Symbol.isConcatSpreadable]:2,[Symbol.iterator]:3,[Symbol.match]:4,[Symbol.matchAll]:5,[Symbol.replace]:6,[Symbol.search]:7,[Symbol.species]:8,[Symbol.split]:9,[Symbol.toPrimitive]:10,[Symbol.toStringTag]:11,[Symbol.unscopables]:12},Re={[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};var T={t:2,i:void 0,s:!0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},U={t:2,i:void 0,s:!1,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},j={t:4,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},M={t:3,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},D={t:5,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},_={t:6,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},L={t:7,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},x={t:8,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0};function F(e){return{t:0,i:void 0,s:e,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function K(e){return{t:1,i:void 0,s:A(e),l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function W(e,r){return S(e.features&8,'Unsupported type "BigInt"'),{t:9,i:void 0,s:""+r,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function Y(e){return{t:10,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function Z(e,r){return{t:11,i:e,s:r.toISOString(),l:void 0,c:void 0,m:void 0,d:void 0,f:void 0,a:void 0}}function G(e,r){return{t:12,i:e,s:void 0,l:void 0,c:r.source,m:r.flags,d:void 0,a:void 0,f:void 0}}function H(e,r,n){let t=n.constructor.name;S(e.features&2048,`Unsupported value type "${t}"`);let a=n.length,o=new Array(a);for(let i=0;i<a;i++)o[i]=""+n[i];return{t:22,i:r,s:o,l:n.byteOffset,c:t,m:void 0,d:void 0,a:void 0,f:void 0}}var ke=4104;function J(e,r,n){let t=n.constructor.name;S((e.features&ke)===ke,`Unsupported value type "${t}"`);let a=n.length,o=new Array(a);for(let i=0;i<a;i++)o[i]=""+n[i];return{t:23,i:r,s:o,l:n.byteOffset,c:t,m:void 0,d:void 0,a:void 0,f:void 0}}function $(e){return{t:24,i:void 0,s:O[e],l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function w(e){return e instanceof EvalError?"EvalError":e instanceof RangeError?"RangeError":e instanceof ReferenceError?"ReferenceError":e instanceof SyntaxError?"SyntaxError":e instanceof TypeError?"TypeError":e instanceof URIError?"URIError":"Error"}function Oe(e){switch(e){case"Error":return Error;case"EvalError":return EvalError;case"RangeError":return RangeError;case"ReferenceError":return ReferenceError;case"SyntaxError":return SyntaxError;case"TypeError":return TypeError;case"URIError":return URIError;default:throw new Error(`Unknown Error constructor "${e}"`)}}function C(e,r){let n,t=w(r);r.name!==t?n={name:r.name}:r.constructor.name!==t&&(n={name:r.constructor.name});let a=Object.getOwnPropertyNames(r);for(let o of a)o!=="name"&&o!=="message"&&(o==="stack"?e.features&16&&(n=n||{},n[o]=r[o]):(n=n||{},n[o]=r[o]));return n}function q(e){let r=Object.getOwnPropertyNames(e);if(r.length){let n={};for(let t of r)n[t]=e[t];return n}}function N(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;switch(e.constructor){case Map:case Set:case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:case BigInt64Array:case BigUint64Array:return!1;default:break}return Symbol.iterator in e}function Ce(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 Error(`Unknown TypedArray "${e}"`)}}var xe=/^[$A-Z_][0-9A-Z_$]*$/i;function le(e){let r=e[0];return(r==="$"||r==="_"||r>="A"&&r<="Z"||r>="a"&&r<="z")&&xe.test(e)}async function de(e,r){let n=r.length,t=new Array(n),a=new Array(n),o;for(let i=0;i<n;i++)i in r&&(o=r[i],N(o)?a[i]=o:t[i]=await p(e,o));for(let i=0;i<n;i++)i in a&&(t[i]=await p(e,a[i]));return t}async function Fe(e,r,n){return{t:15,i:r,s:void 0,l:n.length,c:void 0,m:void 0,d:void 0,a:await de(e,n),f:void 0}}async function Ke(e,r,n){S(e.features&32,'Unsupported type "Map"');let t=n.size,a=new Array(t),o=new Array(t),i=new Array(t),d=new Array(t),s=0,u=0;for(let[l,f]of n.entries())N(l)||N(f)?(i[s]=l,d[s]=f,s++):(a[u]=await p(e,l),o[u]=await p(e,f),u++);for(let l=0;l<s;l++)a[u+l]=await p(e,i[l]),o[u+l]=await p(e,d[l]);return{t:14,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:{k:a,v:o,s:t},a:void 0,f:void 0}}async function We(e,r,n){S(e.features&512,'Unsupported type "Set"');let t=n.size,a=new Array(t),o=new Array(t),i=0,d=0;for(let s of n.keys())N(s)?o[i++]=s:a[d++]=await p(e,s);for(let s=0;s<i;s++)a[d+s]=await p(e,o[s]);return{t:13,i:r,s:void 0,l:t,c:void 0,m:void 0,d:void 0,a,f:void 0}}async function ee(e,r){let n=Object.keys(r),t=n.length,a=new Array(t),o=new Array(t),i=new Array(t),d=new Array(t),s=0,u=0,l;for(let f of n)l=r[f],N(l)?(i[s]=f,d[s]=l,s++):(a[u]=f,o[u]=await p(e,l),u++);for(let f=0;f<s;f++)a[u+f]=i[f],o[u+f]=await p(e,d[f]);return{k:a,v:o,s:t}}async function we(e,r,n){S(e.features&1024,'Unsupported type "Iterable"');let t=q(n),a=Array.from(n);return{t:21,i:r,s:void 0,l:a.length,c:void 0,m:void 0,d:t?await ee(e,t):void 0,a:await de(e,a),f:void 0}}async function X(e,r,n){return S(e.features&256,'Unsupported type "Promise"'),n.then(async t=>({t:18,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:await p(e,t)}))}async function he(e,r,n,t){return Symbol.iterator in n?we(e,r,n):"then"in n&&typeof n.then=="function"?X(e,r,n):{t:t?17:16,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:await ee(e,n),a:void 0,f:void 0}}async function Ve(e,r,n){let t=C(e,n),a=t?await ee(e,t):void 0;return{t:20,i:r,s:void 0,l:n.errors.length,c:void 0,m:n.message,d:a,a:await de(e,n.errors),f:void 0}}async function Q(e,r,n){let t=C(e,n),a=t?await ee(e,t):void 0;return{t:19,i:r,s:void 0,l:void 0,c:w(n),m:n.message,d:a,a:void 0,f:void 0}}async function p(e,r){switch(typeof r){case"boolean":return r?T:U;case"undefined":return j;case"string":return K(r);case"number":switch(r){case 1/0:return _;case-1/0:return L;default:break}return r!==r?x:Object.is(r,-0)?D:F(r);case"bigint":return W(e,r);case"object":{if(!r)return M;let n=z(e,r);if(e.markedRefs.has(n))return Y(n);if(Array.isArray(r))return Fe(e,n,r);switch(r.constructor){case Date:return Z(n,r);case RegExp:return G(n,r);case Promise:return X(e,n,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return H(e,n,r);case BigInt64Array:case BigUint64Array:return J(e,n,r);case Map:return Ke(e,n,r);case Set:return We(e,n,r);case Object:return he(e,n,r,!1);case void 0:return he(e,n,r,!0);case AggregateError:return e.features&1?Ve(e,n,r):Q(e,n,r);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return Q(e,n,r);default:break}if(r instanceof AggregateError)return e.features&1?Ve(e,n,r):Q(e,n,r);if(r instanceof Error)return Q(e,n,r);if(r instanceof Promise)return X(e,n,r);if(Symbol.iterator in r)return we(e,n,r);if("then"in r&&typeof r.then=="function")return X(e,n,r);throw new Error("Unsupported type")}case"symbol":return S(e.features&1024,'Unsupported type "symbol"'),S(r in O,"seroval only supports well-known symbols"),$(r);default:throw new Error("Unsupported type")}}async function re(e,r){let n=await p(e,r),t=n.t===16||n.t===21;return[n,P(e,r),t]}function v(e,r,n){return e.valueMap.set(r,n),n}function ue(e,r,n){let t;for(let a=0,o=r.a.length;a<o;a++)t=r.a[a],t&&(n[a]=E(e,t));return n}function Ye(e,r){let n=v(e,r.i,new Array(r.l));return e.stack.push(r.i),ue(e,r,n),e.stack.pop(),n}function fe(e,r,n){if(r.s===0)return{};for(let t=0;t<r.s;t++)n[r.k[t]]=E(e,r.v[t]);return n}function Ze(e,r){let n=v(e,r.i,Object.create(null));return e.stack.push(r.i),fe(e,r.d,n),e.stack.pop(),n}function Ge(e,r){let n=v(e,r.i,{});return e.stack.push(r.i),fe(e,r.d,n),e.stack.pop(),n}function He(e,r){let n=v(e,r.i,new Set);e.stack.push(r.i);for(let t=0,a=r.a.length;t<a;t++)n.add(E(e,r.a[t]));return e.stack.pop(),n}function Je(e,r){let n=v(e,r.i,new Map);e.stack.push(r.i);for(let t=0;t<r.d.s;t++)n.set(E(e,r.d.k[t]),E(e,r.d.v[t]));return e.stack.pop(),n}function ce(e,r,n){if(r.d){e.stack.push(r.i);let t=fe(e,r.d,{});e.stack.pop(),Object.assign(n,t)}return n}function $e(e,r){let n=v(e,r.i,new AggregateError([],r.m));return e.stack.push(r.i),n.errors=ue(e,r,new Array(r.l)),e.stack.pop(),ce(e,r,n)}function qe(e,r){let n=Oe(r.c),t=v(e,r.i,new n(r.m));return ce(e,r,t)}function Qe(){let e;return{resolve(r){e(r)},promise:new Promise(r=>{e=r})}}function Xe(e,r){let n=Qe(),t=v(e,r.i,n.promise);return n.resolve(E(e,r.f)),t}function er(e,r){let n=Ce(r.c),t=new n,a=v(e,r.i,new n(t.buffer,r.l));for(let o=0,i=r.s.length;o<i;o++)a[o]=r.t===23?BigInt(r.s[o]):Number(r.s[o]);return a}function rr(e,r){let n=[];ue(e,r,n);let t=v(e,r.i,{[Symbol.iterator]:()=>n.values()});return ce(e,r,t)}function E(e,r){switch(r.t){case 0:case 2:return r.s;case 1:return Ee(r.s);case 4:return;case 3:return null;case 5:return-0;case 6:return 1/0;case 7:return-1/0;case 8:return NaN;case 9:return BigInt(r.s);case 10:return e.valueMap.get(r.i);case 15:return Ye(e,r);case 16:return Ge(e,r);case 17:return Ze(e,r);case 11:return v(e,r.i,new Date(r.s));case 12:return v(e,r.i,new RegExp(r.c,r.m));case 13:return He(e,r);case 14:return Je(e,r);case 23:case 22:return er(e,r);case 20:return $e(e,r);case 19:return qe(e,r);case 21:return rr(e,r);case 18:return Xe(e,r);case 24:return Re[r.s];default:throw new Error("Unsupported type")}}function ne(e){switch(e.t){case"index":return e.s+"="+e.v;case"map":return e.s+".set("+e.k+","+e.v+")";case"set":return e.s+".add("+e.v+")";default:return""}}function nr(e){let r=[],n=e[0],t=n,a;for(let o=1,i=e.length;o<i;o++){if(a=e[o],a.t===t.t)switch(a.t){case"index":a.v===t.v?n={t:"index",s:a.s,k:void 0,v:ne(n)}:(r.push(n),n=a);break;case"map":a.s===t.s?n={t:"map",s:ne(n),k:a.k,v:a.v}:(r.push(n),n=a);break;case"set":a.s===t.s?n={t:"set",s:ne(n),k:void 0,v:a.v}:(r.push(n),n=a);break;default:break}else r.push(n),n=a;t=a}return r.push(n),r}function Pe(e){if(e.length){let r="",n=nr(e);for(let t=0,a=n.length;t<a;t++)r+=ne(n[t])+",";return r}}function ze(e){return Pe(e.assignments)}function Be(e,r,n){e.assignments.push({t:"index",s:r,k:void 0,v:n})}function tr(e,r,n){R(e,r),e.assignments.push({t:"set",s:m(e,r),k:void 0,v:n})}function Se(e,r,n,t){R(e,r),e.assignments.push({t:"map",s:m(e,r),k:n,v:t})}function me(e,r,n,t){R(e,r),Be(e,m(e,r)+"["+n+"]",t)}function Te(e,r,n,t){R(e,r),Be(e,m(e,r)+"."+n,t)}function b(e,r,n){return e.markedRefs.has(r)?m(e,r)+"="+n:n}function k(e,r){return r.t===10&&e.stack.includes(r.i)}function ye(e,r){let n=r.l,t="",a,o=!1;for(let i=0;i<n;i++)i!==0&&(t+=","),a=r.a[i],a?k(e,a)?(me(e,r.i,i,m(e,a.i)),o=!0):(t+=y(e,a),o=!1):o=!0;return"["+t+(o?",]":"]")}function ar(e,r){e.stack.push(r.i);let n=ye(e,r);return e.stack.pop(),b(e,r.i,n)}function Ue(e,r,n){if(n.s===0)return"{}";let t="";e.stack.push(r);let a,o,i,d,s,u=!1;for(let l=0;l<n.s;l++)a=n.k[l],o=n.v[l],i=Number(a),d=i>=0||le(a),k(e,o)?(s=m(e,o.i),d&&Number.isNaN(i)?Te(e,r,a,s):me(e,r,d?a:'"'+A(a)+'"',s)):(t+=(u?",":"")+(d?a:'"'+A(a)+'"')+":"+y(e,o),u=!0);return e.stack.pop(),"{"+t+"}"}function or(e,r,n,t){let a=Ue(e,n,r);return a!=="{}"?"Object.assign("+t+","+a+")":t}function ir(e,r,n){e.stack.push(r);let t=[],a,o,i,d,s,u;for(let l=0;l<n.s;l++)a=e.stack,e.stack=[],o=y(e,n.v[l]),e.stack=a,i=n.k[l],d=Number(i),s=e.assignments,e.assignments=t,u=d>=0||le(i),u&&Number.isNaN(d)?Te(e,r,i,o):me(e,r,u?i:'"'+A(i)+'"',o),e.assignments=s;return e.stack.pop(),Pe(t)}function te(e,r,n,t){if(n)if(e.features&128)t=or(e,n,r,t);else{R(e,r);let a=ir(e,r,n);if(a)return"("+b(e,r,t)+","+a+m(e,r)+")"}return b(e,r,t)}function sr(e,r){return te(e,r.i,r.d,"Object.create(null)")}function lr(e,r){return b(e,r.i,Ue(e,r.i,r.d))}function dr(e,r){let n="new Set",t=r.l;if(t){let a="";e.stack.push(r.i);let o,i=!1;for(let d=0;d<t;d++)o=r.a[d],k(e,o)?tr(e,r.i,m(e,o.i)):(a+=(i?",":"")+y(e,o),i=!0);e.stack.pop(),a&&(n+="(["+a+"])")}return b(e,r.i,n)}function ur(e,r){let n="new Map";if(r.d.s){let t="";e.stack.push(r.i);let a,o,i,d,s,u=!1;for(let l=0;l<r.d.s;l++)a=r.d.k[l],o=r.d.v[l],k(e,a)?(i=m(e,a.i),k(e,o)?(d=m(e,o.i),Se(e,r.i,i,d)):(s=e.stack,e.stack=[],Se(e,r.i,i,y(e,o)),e.stack=s)):k(e,o)?(d=m(e,o.i),s=e.stack,e.stack=[],Se(e,r.i,y(e,a),d),e.stack=s):(t+=(u?",[":"[")+y(e,a)+","+y(e,o)+"]",u=!0);e.stack.pop(),t&&(n+="(["+t+"])")}return b(e,r.i,n)}function fr(e,r){e.stack.push(r.i);let n="new AggregateError("+ye(e,r)+',"'+A(r.m)+'")';return e.stack.pop(),te(e,r.i,r.d,n)}function cr(e,r){let n="new "+r.c+'("'+A(r.m)+'")';return te(e,r.i,r.d,n)}function Sr(e,r){let n;if(k(e,r.f)){let t=m(e,r.f.i);e.features&4?n="Promise.resolve().then(()=>"+t+")":n="Promise.resolve().then(function(){return "+t+"})"}else{e.stack.push(r.i);let t=y(e,r.f);e.stack.pop(),n="Promise.resolve("+t+")"}return b(e,r.i,n)}function mr(e,r){let n="",t=r.t===23;for(let o=0,i=r.s.length;o<i;o++)n+=(o!==0?",":"")+r.s[o]+(t?"n":"");let a="["+n+"]"+(r.l!==0?","+r.l:"");return b(e,r.i,"new "+r.c+"("+a+")")}function yr(e,r){let n=e.stack;e.stack=[];let t=ye(e,r);e.stack=n;let a=t;return e.features&2?a+=".values()":a+="[Symbol.iterator]()",e.features&4?a="{[Symbol.iterator]:()=>"+a+"}":e.features&64?a="{[Symbol.iterator](){return "+a+"}}":a="{[Symbol.iterator]:function(){return "+a+"}}",te(e,r.i,r.d,a)}function y(e,r){switch(r.t){case 0:return""+r.s;case 1:return'"'+r.s+'"';case 2:return r.s?"!0":"!1";case 4:return"void 0";case 3:return"null";case 5:return"-0";case 6:return"1/0";case 7:return"-1/0";case 8:return"NaN";case 9:return r.s+"n";case 10:return m(e,r.i);case 15:return ar(e,r);case 16:return lr(e,r);case 17:return sr(e,r);case 11:return b(e,r.i,'new Date("'+r.s+'")');case 12:return b(e,r.i,"/"+r.c+"/"+r.m);case 13:return dr(e,r);case 14:return ur(e,r);case 23:case 22:return mr(e,r);case 20:return fr(e,r);case 19:return cr(e,r);case 21:return yr(e,r);case 18:return Sr(e,r);case 24:return Ie[r.s];default:throw new Error("Unsupported type")}}function Ne(e,r){let n=r.length,t=new Array(n),a=new Array(n),o;for(let i=0;i<n;i++)i in r&&(o=r[i],N(o)?a[i]=o:t[i]=g(e,o));for(let i=0;i<n;i++)i in a&&(t[i]=g(e,a[i]));return t}function Nr(e,r,n){return{t:15,i:r,s:void 0,l:n.length,c:void 0,m:void 0,d:void 0,a:Ne(e,n),f:void 0}}function pr(e,r,n){S(e.features&32,'Unsupported type "Map"');let t=n.size,a=new Array(t),o=new Array(t),i=new Array(t),d=new Array(t),s=0,u=0;for(let[l,f]of n.entries())N(l)||N(f)?(i[s]=l,d[s]=f,s++):(a[u]=g(e,l),o[u]=g(e,f),u++);for(let l=0;l<s;l++)a[u+l]=g(e,i[l]),o[u+l]=g(e,d[l]);return{t:14,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:{k:a,v:o,s:t},a:void 0,f:void 0}}function vr(e,r,n){S(e.features&512,'Unsupported type "Set"');let t=n.size,a=new Array(t),o=new Array(t),i=0,d=0;for(let s of n.keys())N(s)?o[i++]=s:a[d++]=g(e,s);for(let s=0;s<i;s++)a[d+s]=g(e,o[s]);return{t:13,i:r,s:void 0,l:t,c:void 0,m:void 0,d:void 0,a,f:void 0}}function oe(e,r){let n=Object.keys(r),t=n.length,a=new Array(t),o=new Array(t),i=new Array(t),d=new Array(t),s=0,u=0,l;for(let f of n)l=r[f],N(l)?(i[s]=f,d[s]=l,s++):(a[u]=f,o[u]=g(e,l),u++);for(let f=0;f<s;f++)a[u+f]=i[f],o[u+f]=g(e,d[f]);return{k:a,v:o,s:t}}function De(e,r,n){S(e.features&1024,'Unsupported type "Iterable"');let t=q(n),a=Array.from(n);return{t:21,i:r,s:void 0,l:a.length,c:void 0,m:void 0,d:t?oe(e,t):void 0,a:Ne(e,a),f:void 0}}function je(e,r,n,t){return Symbol.iterator in n?De(e,r,n):{t:t?17:16,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:oe(e,n),a:void 0,f:void 0}}function Me(e,r,n){let t=C(e,n),a=t?oe(e,t):void 0;return{t:20,i:r,s:void 0,l:n.errors.length,c:void 0,m:n.message,d:a,a:Ne(e,n.errors),f:void 0}}function ae(e,r,n){let t=C(e,n),a=t?oe(e,t):void 0;return{t:19,i:r,s:void 0,l:void 0,c:w(n),m:n.message,d:a,a:void 0,f:void 0}}function g(e,r){switch(typeof r){case"boolean":return r?T:U;case"undefined":return j;case"string":return K(r);case"number":switch(r){case 1/0:return _;case-1/0:return L;default:break}return r!==r?x:Object.is(r,-0)?D:F(r);case"bigint":return W(e,r);case"object":{if(!r)return M;let n=z(e,r);if(e.markedRefs.has(n))return Y(n);if(Array.isArray(r))return Nr(e,n,r);switch(r.constructor){case Date:return Z(n,r);case RegExp:return G(n,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return H(e,n,r);case BigInt64Array:case BigUint64Array:return J(e,n,r);case Map:return pr(e,n,r);case Set:return vr(e,n,r);case Object:return je(e,n,r,!1);case void 0:return je(e,n,r,!0);case AggregateError:return e.features&1?Me(e,n,r):ae(e,n,r);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return ae(e,n,r);default:break}if(r instanceof AggregateError)return e.features&1?Me(e,n,r):ae(e,n,r);if(r instanceof Error)return ae(e,n,r);if(Symbol.iterator in r)return De(e,n,r);throw new Error("Unsupported type")}case"symbol":return S(e.features&1024,'Unsupported type "symbol"'),S(r in O,"seroval only supports well-known symbols"),$(r);default:throw new Error("Unsupported type")}}function ie(e,r){let n=g(e,r),t=n.t===16||n.t===21;return[n,P(e,r),t]}function pe(e,r,n,t){if(e.vars.length){let a=ze(e),o=t;if(a){let d=m(e,r);o=t+","+a+d,t.startsWith(d+"=")||(o=d+"="+o)}let i=e.vars.length>1?e.vars.join(","):e.vars[0];return e.features&4?(i=e.vars.length>1||e.vars.length===0?"("+i+")":i,"("+i+"=>("+o+"))()"):"(function("+i+"){return "+o+"})()"}return n?"("+t+")":t}function gr(e,r){let n=h(r),[t,a,o]=ie(n,e),i=V(n),d=y(i,t);return pe(i,a,o,d)}async function Ut(e,r){let n=h(r),[t,a,o]=await re(n,e),i=V(n),d=y(i,t);return pe(i,a,o,d)}function jt(e){return(0,eval)(e)}function Mt(e,r){let n=h(r),[t,a,o]=ie(n,e);return{t,r:a,i:o,f:n.features,m:Array.from(n.markedRefs)}}async function Dt(e,r){let n=h(r),[t,a,o]=await re(n,e);return{t,r:a,i:o,f:n.features,m:Array.from(n.markedRefs)}}function _t(e){let r=V({features:e.f,markedRefs:e.m}),n=y(r,e.t);return pe(r,e.r,e.i,n)}function Lt(e){let r=V({features:e.f,markedRefs:e.m});return E(r,e.t)}var xt=gr;export{I as Feature,_t as compileJSON,xt as default,jt as deserialize,Lt as fromJSON,gr as serialize,Ut as serializeAsync,Mt as toJSON,Dt as toJSONAsync};
1
+ var E=(c=>(c[c.AggregateError=1]="AggregateError",c[c.ArrayPrototypeValues=2]="ArrayPrototypeValues",c[c.ArrowFunction=4]="ArrowFunction",c[c.BigInt=8]="BigInt",c[c.ErrorPrototypeStack=16]="ErrorPrototypeStack",c[c.Map=32]="Map",c[c.MethodShorthand=64]="MethodShorthand",c[c.ObjectAssign=128]="ObjectAssign",c[c.Promise=256]="Promise",c[c.Set=512]="Set",c[c.Symbol=1024]="Symbol",c[c.TypedArray=2048]="TypedArray",c[c.BigIntTypedArray=4096]="BigIntTypedArray",c[c.WebAPI=8192]="WebAPI",c))(E||{});var Pe="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",Re=Pe.length,Ce="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",he=Ce.length;function Se(e){let r=e%Re,n=Pe[r];for(e=(e-r)/Re;e>0;)r=e%he,n+=Ce[r],e=(e-r)/he;return n}var Je={disabledFeatures:0};function U(e={}){let r=Object.assign({},Je,e||{});return{markedRefs:new Set,refs:new Map,features:12287^r.disabledFeatures}}function B(e){return{stack:[],vars:[],assignments:[],validRefs:[],refSize:0,features:e.features,markedRefs:new Set(e.markedRefs),valueMap:new Map}}function P(e,r){e.markedRefs.add(r)}function m(e,r){let n=e.validRefs[r];n==null&&(n=e.refSize++,e.validRefs[r]=n);let t=e.vars[n];return t==null&&(t=Se(n),e.vars[n]=t),t}function M(e,r){let n=e.refs.get(r);return n==null?e.refs.size:n}function w(e,r){let n=e.refs.get(r);if(n==null){let t=e.refs.size;return e.refs.set(r,t),t}return P(e,n),n}function S(e,r){if(!e)throw new Error(r)}function p(e){let r="",n=0;for(let t=0,o=e.length;t<o;t++){let a;switch(e[t]){case'"':a='\\"';break;case"\\":a="\\\\";break;case"<":a="\\x3C";break;case`
2
+ `:a="\\n";break;case"\r":a="\\r";break;case"\u2028":a="\\u2028";break;case"\u2029":a="\\u2029";break;default:continue}r+=e.slice(n,t)+a,n=t+1}return n===0?r=e:r+=e.slice(n),r}function L(e){return e.replace(/\\"/g,'"').replace(/\\\\/g,"\\").replace(/\\x3C/g,"<").replace(/\\n/g,`
3
+ `).replace(/\\r/g,"\r").replace(/\\u2028/g,"\u2028").replace(/\\u2029/g,"\u2029")}var me=new Map,C=new Map;function $e(e,r){return me.set(r,e),C.set(e,r),r}function I(e){return me.has(e)}function qe(e){return C.has(e)}function Oe(e){return S(I(e),"Missing reference id"),me.get(e)}function Te(e){return S(qe(e),"Missing reference for id:"+e),C.get(e)}var T="__SEROVAL__";typeof globalThis!==void 0?Object.defineProperty(globalThis,T,{value:C,configurable:!0,writable:!1,enumerable:!1}):typeof window!==void 0?Object.defineProperty(window,T,{value:C,configurable:!0,writable:!1,enumerable:!1}):typeof self!==void 0?Object.defineProperty(self,T,{value:C,configurable:!0,writable:!1,enumerable:!1}):typeof global!==void 0&&Object.defineProperty(global,T,{value:C,configurable:!0,writable:!1,enumerable:!1});var ze={[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"},pe={[Symbol.asyncIterator]:0,[Symbol.hasInstance]:1,[Symbol.isConcatSpreadable]:2,[Symbol.iterator]:3,[Symbol.match]:4,[Symbol.matchAll]:5,[Symbol.replace]:6,[Symbol.search]:7,[Symbol.species]:8,[Symbol.split]:9,[Symbol.toPrimitive]:10,[Symbol.toStringTag]:11,[Symbol.unscopables]:12},Ue={[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};var V={t:2,i:void 0,s:!0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},_={t:2,i:void 0,s:!1,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},x={t:4,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},K={t:3,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},F={t:5,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},W={t:6,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},Y={t:7,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},Z={t:8,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0};function G(e){return{t:0,i:void 0,s:e,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function H(e){return{t:1,i:void 0,s:p(e),l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function J(e,r){return S(e.features&8,'Unsupported type "BigInt"'),{t:9,i:void 0,s:""+r,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function R(e){return{t:10,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function $(e,r){return{t:11,i:e,s:r.toISOString(),l:void 0,c:void 0,m:void 0,d:void 0,f:void 0,a:void 0}}function q(e,r){return{t:12,i:e,s:void 0,l:void 0,c:r.source,m:r.flags,d:void 0,a:void 0,f:void 0}}function Q(e,r,n){let t=n.constructor.name;S(e.features&2048,`Unsupported value type "${t}"`);let o=n.length,a=new Array(o);for(let i=0;i<o;i++)a[i]=""+n[i];return{t:22,i:r,s:a,l:n.byteOffset,c:t,m:void 0,d:void 0,a:void 0,f:void 0}}var Be=4104;function X(e,r,n){let t=n.constructor.name;S((e.features&Be)===Be,`Unsupported value type "${t}"`);let o=n.length,a=new Array(o);for(let i=0;i<o;i++)a[i]=""+n[i];return{t:23,i:r,s:a,l:n.byteOffset,c:t,m:void 0,d:void 0,a:void 0,f:void 0}}function ee(e,r){return S(e.features&1024,'Unsupported type "symbol"'),S(r in pe,"seroval only supports well-known symbols"),{t:24,i:void 0,s:pe[r],l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function h(e,r){return{t:27,i:e,s:p(Oe(r)),l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function D(e){return e instanceof EvalError?"EvalError":e instanceof RangeError?"RangeError":e instanceof ReferenceError?"ReferenceError":e instanceof SyntaxError?"SyntaxError":e instanceof TypeError?"TypeError":e instanceof URIError?"URIError":"Error"}function Le(e){switch(e){case"Error":return Error;case"EvalError":return EvalError;case"RangeError":return RangeError;case"ReferenceError":return ReferenceError;case"SyntaxError":return SyntaxError;case"TypeError":return TypeError;case"URIError":return URIError;default:throw new Error(`Unknown Error constructor "${e}"`)}}function z(e,r){let n,t=D(r);r.name!==t?n={name:r.name}:r.constructor.name!==t&&(n={name:r.constructor.name});let o=Object.getOwnPropertyNames(r);for(let a of o)a!=="name"&&a!=="message"&&(a==="stack"?e.features&16&&(n=n||{},n[a]=r[a]):(n=n||{},n[a]=r[a]));return n}function re(e){let r=Object.getOwnPropertyNames(e);if(r.length){let n={};for(let t of r)n[t]=e[t];return n}}function v(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;switch(e.constructor){case Map:case Set:case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:case BigInt64Array:case BigUint64Array:return!1;default:break}return Symbol.iterator in e}function je(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 Error(`Unknown TypedArray "${e}"`)}}var Qe=/^[$A-Z_][0-9A-Z_$]*$/i;function Ne(e){let r=e[0];return(r==="$"||r==="_"||r>="A"&&r<="Z"||r>="a"&&r<="z")&&Qe.test(e)}function ne(e,r,n){return S(e.features&8192,'Unsupported type "URL"'),{t:25,i:r,s:n.href,l:void 0,c:void 0,m:void 0,d:void 0,f:void 0,a:void 0}}function te(e,r,n){return S(e.features&8192,'Unsupported type "URLSearchParams"'),{t:26,i:r,s:n.toString(),l:void 0,c:void 0,m:void 0,d:void 0,f:void 0,a:void 0}}async function ge(e,r){let n=r.length,t=new Array(n),o=new Array(n),a;for(let i=0;i<n;i++)i in r&&(a=r[i],v(a)?o[i]=a:t[i]=await b(e,a));for(let i=0;i<n;i++)i in o&&(t[i]=await b(e,o[i]));return t}async function Xe(e,r,n){return{t:15,i:r,s:void 0,l:n.length,c:void 0,m:void 0,d:void 0,a:await ge(e,n),f:void 0}}async function er(e,r,n){S(e.features&32,'Unsupported type "Map"');let t=n.size,o=new Array(t),a=new Array(t),i=new Array(t),l=new Array(t),s=0,u=0;for(let[d,f]of n.entries())v(d)||v(f)?(i[s]=d,l[s]=f,s++):(o[u]=await b(e,d),a[u]=await b(e,f),u++);for(let d=0;d<s;d++)o[u+d]=await b(e,i[d]),a[u+d]=await b(e,l[d]);return{t:14,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:{k:o,v:a,s:t},a:void 0,f:void 0}}async function rr(e,r,n){S(e.features&512,'Unsupported type "Set"');let t=n.size,o=new Array(t),a=new Array(t),i=0,l=0;for(let s of n.keys())v(s)?a[i++]=s:o[l++]=await b(e,s);for(let s=0;s<i;s++)o[l+s]=await b(e,a[s]);return{t:13,i:r,s:void 0,l:t,c:void 0,m:void 0,d:void 0,a:o,f:void 0}}async function ie(e,r){let n=Object.keys(r),t=n.length,o=new Array(t),a=new Array(t),i=new Array(t),l=new Array(t),s=0,u=0,d;for(let f of n)d=r[f],v(d)?(i[s]=f,l[s]=d,s++):(o[u]=f,a[u]=await b(e,d),u++);for(let f=0;f<s;f++)o[u+f]=i[f],a[u+f]=await b(e,l[f]);return{k:o,v:a,s:t}}async function Ve(e,r,n){S(e.features&1024,'Unsupported type "Iterable"');let t=re(n),o=Array.from(n);return{t:21,i:r,s:void 0,l:o.length,c:void 0,m:void 0,d:t?await ie(e,t):void 0,a:await ge(e,o),f:void 0}}async function ae(e,r,n){return S(e.features&256,'Unsupported type "Promise"'),n.then(async t=>({t:18,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:await b(e,t)}))}async function De(e,r,n,t){return Symbol.iterator in n?Ve(e,r,n):"then"in n&&typeof n.then=="function"?ae(e,r,n):{t:t?17:16,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:await ie(e,n),a:void 0,f:void 0}}async function Me(e,r,n){let t=z(e,n),o=t?await ie(e,t):void 0;return{t:20,i:r,s:void 0,l:n.errors.length,c:void 0,m:p(n.message),d:o,a:await ge(e,n.errors),f:void 0}}async function oe(e,r,n){let t=z(e,n),o=t?await ie(e,t):void 0;return{t:19,i:r,s:void 0,l:void 0,c:D(n),m:p(n.message),d:o,a:void 0,f:void 0}}async function b(e,r){switch(typeof r){case"boolean":return r?V:_;case"undefined":return x;case"string":return H(r);case"number":switch(r){case 1/0:return W;case-1/0:return Y;default:return r!==r?Z:Object.is(r,-0)?F:G(r)}case"bigint":return J(e,r);case"object":{if(!r)return K;let n=w(e,r);if(e.markedRefs.has(n))return R(n);if(I(r))return h(n,r);if(Array.isArray(r))return Xe(e,n,r);switch(r.constructor){case Date:return $(n,r);case RegExp:return q(n,r);case Promise:return ae(e,n,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return Q(e,n,r);case BigInt64Array:case BigUint64Array:return X(e,n,r);case Map:return er(e,n,r);case Set:return rr(e,n,r);case Object:return De(e,n,r,!1);case void 0:return De(e,n,r,!0);case AggregateError:return e.features&1?Me(e,n,r):oe(e,n,r);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return oe(e,n,r);case URL:return ne(e,n,r);case URLSearchParams:return te(e,n,r);default:break}if(r instanceof AggregateError)return e.features&1?Me(e,n,r):oe(e,n,r);if(r instanceof Error)return oe(e,n,r);if(r instanceof Promise)return ae(e,n,r);if(Symbol.iterator in r)return Ve(e,n,r);if("then"in r&&typeof r.then=="function")return ae(e,n,r);throw new Error("Unsupported type")}case"symbol":if(I(r)){let n=w(e,r);return e.markedRefs.has(n)?R(n):h(n,r)}return ee(e,r);case"function":{S(I(r),"Cannot serialize function without reference ID.");let n=w(e,r);return e.markedRefs.has(n)?R(n):h(n,r)}default:throw new Error("Unsupported type")}}async function se(e,r){let n=await b(e,r),t=n.t===16||n.t===21;return[n,M(e,r),t]}function N(e,r,n){return e.valueMap.set(r,n),n}function ye(e,r,n){let t;for(let o=0,a=r.a.length;o<a;o++)t=r.a[o],t&&(n[o]=k(e,t));return n}function nr(e,r){let n=N(e,r.i,new Array(r.l));return e.stack.push(r.i),ye(e,r,n),e.stack.pop(),n}function ve(e,r,n){if(r.s===0)return{};for(let t=0;t<r.s;t++)n[r.k[t]]=k(e,r.v[t]);return n}function tr(e,r){let n=N(e,r.i,Object.create(null));return e.stack.push(r.i),ve(e,r.d,n),e.stack.pop(),n}function or(e,r){let n=N(e,r.i,{});return e.stack.push(r.i),ve(e,r.d,n),e.stack.pop(),n}function ar(e,r){let n=N(e,r.i,new Set);e.stack.push(r.i);for(let t=0,o=r.a.length;t<o;t++)n.add(k(e,r.a[t]));return e.stack.pop(),n}function ir(e,r){let n=N(e,r.i,new Map);e.stack.push(r.i);for(let t=0;t<r.d.s;t++)n.set(k(e,r.d.k[t]),k(e,r.d.v[t]));return e.stack.pop(),n}function be(e,r,n){if(r.d){e.stack.push(r.i);let t=ve(e,r.d,{});e.stack.pop(),Object.assign(n,t)}return n}function sr(e,r){let n=N(e,r.i,new AggregateError([],L(r.m)));return e.stack.push(r.i),n.errors=ye(e,r,new Array(r.l)),e.stack.pop(),be(e,r,n)}function dr(e,r){let n=Le(r.c),t=N(e,r.i,new n(L(r.m)));return be(e,r,t)}function lr(){let e;return{resolve(r){e(r)},promise:new Promise(r=>{e=r})}}function ur(e,r){let n=lr(),t=N(e,r.i,n.promise);return n.resolve(k(e,r.f)),t}function fr(e,r){let n=je(r.c),t=new n,o=N(e,r.i,new n(t.buffer,r.l));for(let a=0,i=r.s.length;a<i;a++)o[a]=r.t===23?BigInt(r.s[a]):Number(r.s[a]);return o}function cr(e,r){let n=[];ye(e,r,n);let t=N(e,r.i,{[Symbol.iterator]:()=>n.values()});return be(e,r,t)}function k(e,r){switch(r.t){case 0:case 2:return r.s;case 1:return L(r.s);case 4:return;case 3:return null;case 5:return-0;case 6:return 1/0;case 7:return-1/0;case 8:return NaN;case 9:return BigInt(r.s);case 10:return e.valueMap.get(r.i);case 15:return nr(e,r);case 16:return or(e,r);case 17:return tr(e,r);case 11:return N(e,r.i,new Date(r.s));case 12:return N(e,r.i,new RegExp(r.c,r.m));case 13:return ar(e,r);case 14:return ir(e,r);case 23:case 22:return fr(e,r);case 20:return sr(e,r);case 19:return dr(e,r);case 21:return cr(e,r);case 18:return ur(e,r);case 24:return Ue[r.s];case 25:return N(e,r.i,new URL(r.s));case 26:return N(e,r.i,new URLSearchParams(r.s));case 27:return N(e,r.i,Te(L(r.s)));default:throw new Error("Unsupported type")}}function de(e){switch(e.t){case"index":return e.s+"="+e.v;case"map":return e.s+".set("+e.k+","+e.v+")";case"set":return e.s+".add("+e.v+")";default:return""}}function Sr(e){let r=[],n=e[0],t=n,o;for(let a=1,i=e.length;a<i;a++){if(o=e[a],o.t===t.t)switch(o.t){case"index":o.v===t.v?n={t:"index",s:o.s,k:void 0,v:de(n)}:(r.push(n),n=o);break;case"map":o.s===t.s?n={t:"map",s:de(n),k:o.k,v:o.v}:(r.push(n),n=o);break;case"set":o.s===t.s?n={t:"set",s:de(n),k:void 0,v:o.v}:(r.push(n),n=o);break;default:break}else r.push(n),n=o;t=o}return r.push(n),r}function _e(e){if(e.length){let r="",n=Sr(e);for(let t=0,o=n.length;t<o;t++)r+=de(n[t])+",";return r}}function xe(e){return _e(e.assignments)}function Ke(e,r,n){e.assignments.push({t:"index",s:r,k:void 0,v:n})}function mr(e,r,n){P(e,r),e.assignments.push({t:"set",s:m(e,r),k:void 0,v:n})}function Ae(e,r,n,t){P(e,r),e.assignments.push({t:"map",s:m(e,r),k:n,v:t})}function Ee(e,r,n,t){P(e,r),Ke(e,m(e,r)+"["+n+"]",t)}function Fe(e,r,n,t){P(e,r),Ke(e,m(e,r)+"."+n,t)}function y(e,r,n){return e.markedRefs.has(r)?m(e,r)+"="+n:n}function O(e,r){return r.t===10&&e.stack.includes(r.i)}function Ie(e,r){let n=r.l,t="",o,a=!1;for(let i=0;i<n;i++)i!==0&&(t+=","),o=r.a[i],o?O(e,o)?(Ee(e,r.i,i,m(e,o.i)),a=!0):(t+=g(e,o),a=!1):a=!0;return"["+t+(a?",]":"]")}function pr(e,r){e.stack.push(r.i);let n=Ie(e,r);return e.stack.pop(),y(e,r.i,n)}function We(e,r,n){if(n.s===0)return"{}";let t="";e.stack.push(r);let o,a,i,l,s,u=!1;for(let d=0;d<n.s;d++)o=n.k[d],a=n.v[d],i=Number(o),l=i>=0||Ne(o),O(e,a)?(s=m(e,a.i),l&&Number.isNaN(i)?Fe(e,r,o,s):Ee(e,r,l?o:'"'+p(o)+'"',s)):(t+=(u?",":"")+(l?o:'"'+p(o)+'"')+":"+g(e,a),u=!0);return e.stack.pop(),"{"+t+"}"}function Nr(e,r,n,t){let o=We(e,n,r);return o!=="{}"?"Object.assign("+t+","+o+")":t}function gr(e,r,n){e.stack.push(r);let t=[],o,a,i,l,s,u;for(let d=0;d<n.s;d++)o=e.stack,e.stack=[],a=g(e,n.v[d]),e.stack=o,i=n.k[d],l=Number(i),s=e.assignments,e.assignments=t,u=l>=0||Ne(i),u&&Number.isNaN(l)?Fe(e,r,i,a):Ee(e,r,u?i:'"'+p(i)+'"',a),e.assignments=s;return e.stack.pop(),_e(t)}function le(e,r,n,t){if(n)if(e.features&128)t=Nr(e,n,r,t);else{P(e,r);let o=gr(e,r,n);if(o)return"("+y(e,r,t)+","+o+m(e,r)+")"}return y(e,r,t)}function yr(e,r){return le(e,r.i,r.d,"Object.create(null)")}function vr(e,r){return y(e,r.i,We(e,r.i,r.d))}function br(e,r){let n="new Set",t=r.l;if(t){let o="";e.stack.push(r.i);let a,i=!1;for(let l=0;l<t;l++)a=r.a[l],O(e,a)?mr(e,r.i,m(e,a.i)):(o+=(i?",":"")+g(e,a),i=!0);e.stack.pop(),o&&(n+="(["+o+"])")}return y(e,r.i,n)}function Ar(e,r){let n="new Map";if(r.d.s){let t="";e.stack.push(r.i);let o,a,i,l,s,u=!1;for(let d=0;d<r.d.s;d++)o=r.d.k[d],a=r.d.v[d],O(e,o)?(i=m(e,o.i),O(e,a)?(l=m(e,a.i),Ae(e,r.i,i,l)):(s=e.stack,e.stack=[],Ae(e,r.i,i,g(e,a)),e.stack=s)):O(e,a)?(l=m(e,a.i),s=e.stack,e.stack=[],Ae(e,r.i,g(e,o),l),e.stack=s):(t+=(u?",[":"[")+g(e,o)+","+g(e,a)+"]",u=!0);e.stack.pop(),t&&(n+="(["+t+"])")}return y(e,r.i,n)}function Er(e,r){e.stack.push(r.i);let n="new AggregateError("+Ie(e,r)+',"'+p(r.m)+'")';return e.stack.pop(),le(e,r.i,r.d,n)}function Ir(e,r){let n="new "+r.c+'("'+p(r.m)+'")';return le(e,r.i,r.d,n)}function kr(e,r){let n;if(O(e,r.f)){let t=m(e,r.f.i);e.features&4?n="Promise.resolve().then(()=>"+t+")":n="Promise.resolve().then(function(){return "+t+"})"}else{e.stack.push(r.i);let t=g(e,r.f);e.stack.pop(),n="Promise.resolve("+t+")"}return y(e,r.i,n)}function wr(e,r){let n="",t=r.t===23;for(let a=0,i=r.s.length;a<i;a++)n+=(a!==0?",":"")+r.s[a]+(t?"n":"");let o="["+n+"]"+(r.l!==0?","+r.l:"");return y(e,r.i,"new "+r.c+"("+o+")")}function Rr(e,r){let n=e.stack;e.stack=[];let t=Ie(e,r);e.stack=n;let o=t;return e.features&2?o+=".values()":o+="[Symbol.iterator]()",e.features&4?o="{[Symbol.iterator]:()=>"+o+"}":e.features&64?o="{[Symbol.iterator](){return "+o+"}}":o="{[Symbol.iterator]:function(){return "+o+"}}",le(e,r.i,r.d,o)}function g(e,r){switch(r.t){case 0:return""+r.s;case 1:return'"'+r.s+'"';case 2:return r.s?"!0":"!1";case 4:return"void 0";case 3:return"null";case 5:return"-0";case 6:return"1/0";case 7:return"-1/0";case 8:return"NaN";case 9:return r.s+"n";case 10:return m(e,r.i);case 15:return pr(e,r);case 16:return vr(e,r);case 17:return yr(e,r);case 11:return y(e,r.i,'new Date("'+r.s+'")');case 12:return y(e,r.i,"/"+r.c+"/"+r.m);case 13:return br(e,r);case 14:return Ar(e,r);case 23:case 22:return wr(e,r);case 20:return Er(e,r);case 19:return Ir(e,r);case 21:return Rr(e,r);case 18:return kr(e,r);case 24:return ze[r.s];case 25:return y(e,r.i,'new URL("'+r.s+'")');case 26:return y(e,r.i,r.s?'new URLSearchParams("'+r.s+'")':"new URLSearchParams");case 27:return y(e,r.i,T+'.get("'+r.s+'")');default:throw new Error("Unsupported type")}}function ke(e,r){let n=r.length,t=new Array(n),o=new Array(n),a;for(let i=0;i<n;i++)i in r&&(a=r[i],v(a)?o[i]=a:t[i]=A(e,a));for(let i=0;i<n;i++)i in o&&(t[i]=A(e,o[i]));return t}function hr(e,r,n){return{t:15,i:r,s:void 0,l:n.length,c:void 0,m:void 0,d:void 0,a:ke(e,n),f:void 0}}function Pr(e,r,n){S(e.features&32,'Unsupported type "Map"');let t=n.size,o=new Array(t),a=new Array(t),i=new Array(t),l=new Array(t),s=0,u=0;for(let[d,f]of n.entries())v(d)||v(f)?(i[s]=d,l[s]=f,s++):(o[u]=A(e,d),a[u]=A(e,f),u++);for(let d=0;d<s;d++)o[u+d]=A(e,i[d]),a[u+d]=A(e,l[d]);return{t:14,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:{k:o,v:a,s:t},a:void 0,f:void 0}}function Cr(e,r,n){S(e.features&512,'Unsupported type "Set"');let t=n.size,o=new Array(t),a=new Array(t),i=0,l=0;for(let s of n.keys())v(s)?a[i++]=s:o[l++]=A(e,s);for(let s=0;s<i;s++)o[l+s]=A(e,a[s]);return{t:13,i:r,s:void 0,l:t,c:void 0,m:void 0,d:void 0,a:o,f:void 0}}function fe(e,r){let n=Object.keys(r),t=n.length,o=new Array(t),a=new Array(t),i=new Array(t),l=new Array(t),s=0,u=0,d;for(let f of n)d=r[f],v(d)?(i[s]=f,l[s]=d,s++):(o[u]=f,a[u]=A(e,d),u++);for(let f=0;f<s;f++)o[u+f]=i[f],a[u+f]=A(e,l[f]);return{k:o,v:a,s:t}}function Ge(e,r,n){S(e.features&1024,'Unsupported type "Iterable"');let t=re(n),o=Array.from(n);return{t:21,i:r,s:void 0,l:o.length,c:void 0,m:void 0,d:t?fe(e,t):void 0,a:ke(e,o),f:void 0}}function Ye(e,r,n,t){return Symbol.iterator in n?Ge(e,r,n):{t:t?17:16,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:fe(e,n),a:void 0,f:void 0}}function Ze(e,r,n){let t=z(e,n),o=t?fe(e,t):void 0;return{t:20,i:r,s:void 0,l:n.errors.length,c:void 0,m:p(n.message),d:o,a:ke(e,n.errors),f:void 0}}function ue(e,r,n){let t=z(e,n),o=t?fe(e,t):void 0;return{t:19,i:r,s:void 0,l:void 0,c:D(n),m:p(n.message),d:o,a:void 0,f:void 0}}function A(e,r){switch(typeof r){case"boolean":return r?V:_;case"undefined":return x;case"string":return H(r);case"number":switch(r){case 1/0:return W;case-1/0:return Y;default:return r!==r?Z:Object.is(r,-0)?F:G(r)}case"bigint":return J(e,r);case"object":{if(!r)return K;let n=w(e,r);if(e.markedRefs.has(n))return R(n);if(I(r))return h(n,r);if(Array.isArray(r))return hr(e,n,r);switch(r.constructor){case Date:return $(n,r);case RegExp:return q(n,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return Q(e,n,r);case BigInt64Array:case BigUint64Array:return X(e,n,r);case Map:return Pr(e,n,r);case Set:return Cr(e,n,r);case Object:return Ye(e,n,r,!1);case void 0:return Ye(e,n,r,!0);case AggregateError:return e.features&1?Ze(e,n,r):ue(e,n,r);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return ue(e,n,r);case URL:return ne(e,n,r);case URLSearchParams:return te(e,n,r);default:break}if(r instanceof AggregateError)return e.features&1?Ze(e,n,r):ue(e,n,r);if(r instanceof Error)return ue(e,n,r);if(Symbol.iterator in r)return Ge(e,n,r);throw new Error("Unsupported type")}case"symbol":if(I(r)){let n=w(e,r);return e.markedRefs.has(n)?R(n):h(n,r)}return ee(e,r);case"function":{S(I(r),"Cannot serialize function without reference ID.");let n=w(e,r);return e.markedRefs.has(n)?R(n):h(n,r)}default:throw new Error("Unsupported type")}}function ce(e,r){let n=A(e,r),t=n.t===16||n.t===21;return[n,M(e,r),t]}function we(e,r,n,t){if(e.vars.length){let o=xe(e),a=t;if(o){let l=m(e,r);a=t+","+o+l,t.startsWith(l+"=")||(a=l+"="+a)}let i=e.vars.length>1?e.vars.join(","):e.vars[0];return e.features&4?(i=e.vars.length>1||e.vars.length===0?"("+i+")":i,"("+i+"=>("+a+"))()"):"(function("+i+"){return "+a+"})()"}return n?"("+t+")":t}function Or(e,r){let n=U(r),[t,o,a]=ce(n,e),i=B(n),l=g(i,t);return we(i,o,a,l)}async function lo(e,r){let n=U(r),[t,o,a]=await se(n,e),i=B(n),l=g(i,t);return we(i,o,a,l)}function uo(e){return(0,eval)(e)}function fo(e,r){let n=U(r),[t,o,a]=ce(n,e);return{t,r:o,i:a,f:n.features,m:Array.from(n.markedRefs)}}async function co(e,r){let n=U(r),[t,o,a]=await se(n,e);return{t,r:o,i:a,f:n.features,m:Array.from(n.markedRefs)}}function So(e){let r=B({features:e.f,markedRefs:e.m}),n=g(r,e.t);return we(r,e.r,e.i,n)}function mo(e){let r=B({features:e.f,markedRefs:e.m});return k(r,e.t)}var po=Or;export{E as Feature,So as compileJSON,$e as createReference,po as default,uo as deserialize,mo as fromJSON,Or as serialize,lo as serializeAsync,fo as toJSON,co as toJSONAsync};
@@ -16,6 +16,7 @@ export declare const enum Feature {
16
16
  Set = 512,
17
17
  Symbol = 1024,
18
18
  TypedArray = 2048,
19
- BigIntTypedArray = 4096
19
+ BigIntTypedArray = 4096,
20
+ WebAPI = 8192
20
21
  }
21
- export declare const ALL_ENABLED = 8191;
22
+ export declare const ALL_ENABLED = 12287;
@@ -1,4 +1,3 @@
1
- import { AsyncServerValue } from './types';
2
1
  interface IndexAssignment {
3
2
  t: 'index';
4
3
  s: string;
@@ -31,7 +30,7 @@ export interface SerializationContext {
31
30
  vars: string[];
32
31
  assignments: Assignment[];
33
32
  features: number;
34
- valueMap: Map<number, AsyncServerValue>;
33
+ valueMap: Map<number, unknown>;
35
34
  }
36
35
  export interface Options {
37
36
  disabledFeatures: number;
@@ -51,6 +50,6 @@ export declare function markRef(ctx: ParserContext | SerializationContext, curre
51
50
  * Calling this function means the value has been referenced somewhere
52
51
  */
53
52
  export declare function getRefParam(ctx: SerializationContext, index: number): string;
54
- export declare function getRootID(ctx: ParserContext, current: AsyncServerValue): number;
55
- export declare function createRef(ctx: ParserContext, current: AsyncServerValue): number;
53
+ export declare function getRootID<T>(ctx: ParserContext, current: T): number;
54
+ export declare function createIndexedValue<T>(ctx: ParserContext, current: T): number;
56
55
  export {};
@@ -1,11 +1,10 @@
1
- import { Feature } from './compat';
2
1
  import { Options } from './context';
3
2
  import { SerovalNode } from './tree/types';
4
- import { AsyncServerValue, PrimitiveValue, ServerValue, CommonServerValue, SemiPrimitiveValue, ErrorValue } from './types';
5
- export { AsyncServerValue, ServerValue, PrimitiveValue, CommonServerValue, SemiPrimitiveValue, ErrorValue, Feature, };
6
- export declare function serialize<T extends ServerValue>(source: T, options?: Partial<Options>): string;
7
- export declare function serializeAsync<T extends AsyncServerValue>(source: T, options?: Partial<Options>): Promise<string>;
8
- export declare function deserialize<T extends AsyncServerValue>(source: string): T;
3
+ export { AsyncServerValue, ServerValue, PrimitiveValue, CommonServerValue, SemiPrimitiveValue, ErrorValue, } from './types';
4
+ export { Feature } from './compat';
5
+ export declare function serialize<T>(source: T, options?: Partial<Options>): string;
6
+ export declare function serializeAsync<T>(source: T, options?: Partial<Options>): Promise<string>;
7
+ export declare function deserialize<T>(source: string): T;
9
8
  export interface SerovalJSON {
10
9
  t: SerovalNode;
11
10
  r: number;
@@ -13,8 +12,9 @@ export interface SerovalJSON {
13
12
  f: number;
14
13
  m: number[];
15
14
  }
16
- export declare function toJSON<T extends ServerValue>(source: T, options?: Partial<Options>): SerovalJSON;
17
- export declare function toJSONAsync<T extends AsyncServerValue>(source: T, options?: Partial<Options>): Promise<SerovalJSON>;
15
+ export declare function toJSON<T>(source: T, options?: Partial<Options>): SerovalJSON;
16
+ export declare function toJSONAsync<T>(source: T, options?: Partial<Options>): Promise<SerovalJSON>;
18
17
  export declare function compileJSON(source: SerovalJSON): string;
19
- export declare function fromJSON<T extends AsyncServerValue>(source: SerovalJSON): T;
18
+ export declare function fromJSON<T>(source: SerovalJSON): T;
20
19
  export default serialize;
20
+ export { createReference } from './tree/reference';
@@ -1,4 +1,3 @@
1
1
  import { ParserContext } from '../context';
2
- import { AsyncServerValue } from '../types';
3
2
  import { SerovalNode } from './types';
4
- export default function parseAsync(ctx: ParserContext, current: AsyncServerValue): Promise<readonly [SerovalNode, number, boolean]>;
3
+ export default function parseAsync<T>(ctx: ParserContext, current: T): Promise<readonly [SerovalNode, number, boolean]>;
@@ -1,4 +1,3 @@
1
1
  import { SerializationContext } from '../context';
2
- import { AsyncServerValue } from '../types';
3
2
  import { SerovalNode } from './types';
4
- export default function deserializeTree(ctx: SerializationContext, node: SerovalNode): AsyncServerValue;
3
+ export default function deserializeTree(ctx: SerializationContext, node: SerovalNode): unknown;
@@ -1,7 +1,7 @@
1
1
  import { ParserContext } from '../context';
2
2
  import { BigIntTypedArrayValue, TypedArrayValue } from '../types';
3
3
  import { WellKnownSymbols } from './symbols';
4
- import { SerovalBigIntNode, SerovalBigIntTypedArrayNode, SerovalBooleanNode, SerovalDateNode, SerovalInfinityNode, SerovalNaNNode, SerovalNegativeInfinityNode, SerovalNegativeZeroNode, SerovalNullNode, SerovalNumberNode, SerovalReferenceNode, SerovalRegExpNode, SerovalStringNode, SerovalTypedArrayNode, SerovalUndefinedNode, SerovalWKSymbolNode } from './types';
4
+ import { SerovalBigIntNode, SerovalBigIntTypedArrayNode, SerovalBooleanNode, SerovalDateNode, SerovalInfinityNode, SerovalNaNNode, SerovalNegativeInfinityNode, SerovalNegativeZeroNode, SerovalNullNode, SerovalNumberNode, SerovalIndexedValueNode, SerovalRegExpNode, SerovalStringNode, SerovalTypedArrayNode, SerovalUndefinedNode, SerovalWKSymbolNode, SerovalReferenceNode } from './types';
5
5
  export declare const TRUE_NODE: SerovalBooleanNode;
6
6
  export declare const FALSE_NODE: SerovalBooleanNode;
7
7
  export declare const UNDEFINED_NODE: SerovalUndefinedNode;
@@ -13,9 +13,10 @@ export declare const NAN_NODE: SerovalNaNNode;
13
13
  export declare function createNumberNode(value: number): SerovalNumberNode;
14
14
  export declare function createStringNode(value: string): SerovalStringNode;
15
15
  export declare function createBigIntNode(ctx: ParserContext, current: bigint): SerovalBigIntNode;
16
- export declare function createReferenceNode(id: number): SerovalReferenceNode;
16
+ export declare function createIndexedValueNode(id: number): SerovalIndexedValueNode;
17
17
  export declare function createDateNode(id: number, current: Date): SerovalDateNode;
18
18
  export declare function createRegExpNode(id: number, current: RegExp): SerovalRegExpNode;
19
19
  export declare function createTypedArrayNode(ctx: ParserContext, id: number, current: TypedArrayValue): SerovalTypedArrayNode;
20
20
  export declare function createBigIntTypedArrayNode(ctx: ParserContext, id: number, current: BigIntTypedArrayValue): SerovalBigIntTypedArrayNode;
21
- export declare function createWKSymbolNode(current: WellKnownSymbols): SerovalWKSymbolNode;
21
+ export declare function createWKSymbolNode(ctx: ParserContext, current: WellKnownSymbols): SerovalWKSymbolNode;
22
+ export declare function createReferenceNode<T>(id: number, ref: T): SerovalReferenceNode;
@@ -0,0 +1,6 @@
1
+ export declare function createReference<T>(id: string, value: T): T;
2
+ export declare function hasReferenceID<T>(value: T): boolean;
3
+ export declare function hasReference(id: string): boolean;
4
+ export declare function getReferenceID<T>(value: T): string;
5
+ export declare function getReference<T>(id: string): T;
6
+ export declare const GLOBAL_KEY = "__SEROVAL__";
@@ -1,4 +1,3 @@
1
1
  import { ParserContext } from '../context';
2
- import { ServerValue } from '../types';
3
2
  import { SerovalNode } from './types';
4
- export default function parseSync(ctx: ParserContext, current: ServerValue): readonly [SerovalNode, number, boolean];
3
+ export default function parseSync<T>(ctx: ParserContext, current: T): readonly [SerovalNode, number, boolean];
@@ -10,7 +10,7 @@ export declare const enum SerovalNodeType {
10
10
  NegativeInfinity = 7,
11
11
  NaN = 8,
12
12
  BigInt = 9,
13
- Reference = 10,
13
+ IndexedValue = 10,
14
14
  Date = 11,
15
15
  RegExp = 12,
16
16
  Set = 13,
@@ -24,7 +24,10 @@ export declare const enum SerovalNodeType {
24
24
  Iterable = 21,
25
25
  TypedArray = 22,
26
26
  BigIntTypedArray = 23,
27
- WKSymbol = 24
27
+ WKSymbol = 24,
28
+ URL = 25,
29
+ URLSearchParams = 26,
30
+ Reference = 27
28
31
  }
29
32
  export interface SerovalBaseNode {
30
33
  t: SerovalNodeType;
@@ -79,8 +82,8 @@ export interface SerovalNaNNode extends SerovalBaseNode {
79
82
  t: SerovalNodeType.NaN;
80
83
  }
81
84
  export type SerovalPrimitiveNode = SerovalNumberNode | SerovalStringNode | SerovalBooleanNode | SerovalNullNode | SerovalUndefinedNode | SerovalNegativeZeroNode | SerovalNegativeInfinityNode | SerovalInfinityNode | SerovalNaNNode;
82
- export interface SerovalReferenceNode extends SerovalBaseNode {
83
- t: SerovalNodeType.Reference;
85
+ export interface SerovalIndexedValueNode extends SerovalBaseNode {
86
+ t: SerovalNodeType.IndexedValue;
84
87
  i: number;
85
88
  }
86
89
  export interface SerovalBigIntNode extends SerovalBaseNode {
@@ -171,4 +174,19 @@ export interface SerovalWKSymbolNode extends SerovalBaseNode {
171
174
  t: SerovalNodeType.WKSymbol;
172
175
  s: Symbols;
173
176
  }
174
- export type SerovalNode = SerovalPrimitiveNode | SerovalReferenceNode | SerovalSemiPrimitiveNode | SerovalSetNode | SerovalMapNode | SerovalArrayNode | SerovalObjectNode | SerovalNullConstructorNode | SerovalPromiseNode | SerovalErrorNode | SerovalAggregateErrorNode | SerovalIterableNode | SerovalWKSymbolNode;
177
+ export interface SerovalURLNode extends SerovalBaseNode {
178
+ t: SerovalNodeType.URL;
179
+ i: number;
180
+ s: string;
181
+ }
182
+ export interface SerovalURLSearchParamsNode extends SerovalBaseNode {
183
+ t: SerovalNodeType.URLSearchParams;
184
+ i: number;
185
+ s: string;
186
+ }
187
+ export interface SerovalReferenceNode extends SerovalBaseNode {
188
+ t: SerovalNodeType.Reference;
189
+ i: number;
190
+ s: string;
191
+ }
192
+ export type SerovalNode = SerovalPrimitiveNode | SerovalIndexedValueNode | SerovalSemiPrimitiveNode | SerovalSetNode | SerovalMapNode | SerovalArrayNode | SerovalObjectNode | SerovalNullConstructorNode | SerovalPromiseNode | SerovalErrorNode | SerovalAggregateErrorNode | SerovalIterableNode | SerovalWKSymbolNode | SerovalURLNode | SerovalURLSearchParamsNode | SerovalReferenceNode;
@@ -0,0 +1,4 @@
1
+ import { ParserContext } from '../context';
2
+ import { SerovalURLNode, SerovalURLSearchParamsNode } from './types';
3
+ export declare function createURLNode(ctx: ParserContext, id: number, current: URL): SerovalURLNode;
4
+ export declare function createURLSearchParamsNode(ctx: ParserContext, id: number, current: URLSearchParams): SerovalURLSearchParamsNode;
@@ -3,7 +3,8 @@ export type PrimitiveValue = boolean | string | number | undefined | null | Well
3
3
  export type ErrorValue = Error | AggregateError | EvalError | RangeError | ReferenceError | TypeError | SyntaxError | URIError;
4
4
  export type TypedArrayValue = Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array;
5
5
  export type BigIntTypedArrayValue = BigInt64Array | BigUint64Array;
6
- export type SemiPrimitiveValue = RegExp | Date | TypedArrayValue | BigIntTypedArrayValue | bigint;
6
+ export type WebAPIValue = URL | URLSearchParams;
7
+ export type SemiPrimitiveValue = RegExp | Date | TypedArrayValue | BigIntTypedArrayValue | bigint | WebAPIValue;
7
8
  export type CommonServerValue = PrimitiveValue | SemiPrimitiveValue | ErrorValue;
8
9
  export type ServerValue = CommonServerValue | Array<ServerValue> | readonly ServerValue[] | Iterable<ServerValue> | {
9
10
  [key: string | number]: ServerValue;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "seroval",
3
3
  "type": "module",
4
- "version": "0.5.1",
4
+ "version": "0.6.0",
5
5
  "files": [
6
6
  "dist",
7
7
  "src"
@@ -16,7 +16,7 @@
16
16
  "devDependencies": {
17
17
  "@types/node": "^18.15.3",
18
18
  "eslint": "^8.32.0",
19
- "eslint-config-lxsmnsyc": "^0.4.8",
19
+ "eslint-config-lxsmnsyc": "^0.5.1",
20
20
  "pridepack": "2.4.1",
21
21
  "tslib": "^2.4.1",
22
22
  "typescript": "^4.9.4",
@@ -64,5 +64,5 @@
64
64
  "typesVersions": {
65
65
  "*": {}
66
66
  },
67
- "gitHead": "2154c039056b24f706dbb1c2006acd99383e9305"
67
+ "gitHead": "1d6e69079251612c6fc486e8517e225690363442"
68
68
  }
package/src/compat.ts CHANGED
@@ -19,6 +19,7 @@ export const enum Feature {
19
19
  Symbol = 0x400,
20
20
  TypedArray = 0x800,
21
21
  BigIntTypedArray = 0x1000,
22
+ WebAPI = 0x2000,
22
23
  }
23
24
 
24
- export const ALL_ENABLED = 0x1FFF;
25
+ export const ALL_ENABLED = 0x2FFF;
package/src/context.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { ALL_ENABLED } from './compat';
2
2
  import getIdentifier from './get-identifier';
3
- import { AsyncServerValue } from './types';
4
3
 
5
4
  interface IndexAssignment {
6
5
  t: 'index';
@@ -49,7 +48,7 @@ export interface SerializationContext {
49
48
  // Supported features
50
49
  features: number;
51
50
 
52
- valueMap: Map<number, AsyncServerValue>;
51
+ valueMap: Map<number, unknown>;
53
52
  }
54
53
 
55
54
  export interface Options {
@@ -118,9 +117,9 @@ export function getRefParam(ctx: SerializationContext, index: number) {
118
117
  return identifier;
119
118
  }
120
119
 
121
- export function getRootID(
120
+ export function getRootID<T>(
122
121
  ctx: ParserContext,
123
- current: AsyncServerValue,
122
+ current: T,
124
123
  ) {
125
124
  const ref = ctx.refs.get(current);
126
125
  if (ref == null) {
@@ -129,9 +128,9 @@ export function getRootID(
129
128
  return ref;
130
129
  }
131
130
 
132
- export function createRef(
131
+ export function createIndexedValue<T>(
133
132
  ctx: ParserContext,
134
- current: AsyncServerValue,
133
+ current: T,
135
134
  ) {
136
135
  const ref = ctx.refs.get(current);
137
136
  if (ref == null) {
package/src/index.ts CHANGED
@@ -12,14 +12,6 @@ import deserializeTree from './tree/deserialize';
12
12
  import serializeTree, { resolvePatches } from './tree/serialize';
13
13
  import parseSync from './tree/sync';
14
14
  import { SerovalNode } from './tree/types';
15
- import {
16
- AsyncServerValue,
17
- PrimitiveValue,
18
- ServerValue,
19
- CommonServerValue,
20
- SemiPrimitiveValue,
21
- ErrorValue,
22
- } from './types';
23
15
 
24
16
  export {
25
17
  AsyncServerValue,
@@ -28,8 +20,8 @@ export {
28
20
  CommonServerValue,
29
21
  SemiPrimitiveValue,
30
22
  ErrorValue,
31
- Feature,
32
- };
23
+ } from './types';
24
+ export { Feature } from './compat';
33
25
 
34
26
  function finalize(
35
27
  ctx: SerializationContext,
@@ -67,7 +59,7 @@ function finalize(
67
59
  return result;
68
60
  }
69
61
 
70
- export function serialize<T extends ServerValue>(
62
+ export function serialize<T>(
71
63
  source: T,
72
64
  options?: Partial<Options>,
73
65
  ) {
@@ -78,7 +70,7 @@ export function serialize<T extends ServerValue>(
78
70
  return finalize(serial, rootID, isObject, result);
79
71
  }
80
72
 
81
- export async function serializeAsync<T extends AsyncServerValue>(
73
+ export async function serializeAsync<T>(
82
74
  source: T,
83
75
  options?: Partial<Options>,
84
76
  ) {
@@ -89,7 +81,7 @@ export async function serializeAsync<T extends AsyncServerValue>(
89
81
  return finalize(serial, rootID, isObject, result);
90
82
  }
91
83
 
92
- export function deserialize<T extends AsyncServerValue>(source: string): T {
84
+ export function deserialize<T>(source: string): T {
93
85
  // eslint-disable-next-line no-eval
94
86
  return (0, eval)(source) as T;
95
87
  }
@@ -102,7 +94,7 @@ export interface SerovalJSON {
102
94
  m: number[],
103
95
  }
104
96
 
105
- export function toJSON<T extends ServerValue>(
97
+ export function toJSON<T>(
106
98
  source: T,
107
99
  options?: Partial<Options>,
108
100
  ): SerovalJSON {
@@ -117,7 +109,7 @@ export function toJSON<T extends ServerValue>(
117
109
  };
118
110
  }
119
111
 
120
- export async function toJSONAsync<T extends AsyncServerValue>(
112
+ export async function toJSONAsync<T>(
121
113
  source: T,
122
114
  options?: Partial<Options>,
123
115
  ): Promise<SerovalJSON> {
@@ -141,7 +133,7 @@ export function compileJSON(source: SerovalJSON): string {
141
133
  return finalize(serial, source.r, source.i, result);
142
134
  }
143
135
 
144
- export function fromJSON<T extends AsyncServerValue>(source: SerovalJSON): T {
136
+ export function fromJSON<T>(source: SerovalJSON): T {
145
137
  const serial = createSerializationContext({
146
138
  features: source.f,
147
139
  markedRefs: source.m,
@@ -150,3 +142,5 @@ export function fromJSON<T extends AsyncServerValue>(source: SerovalJSON): T {
150
142
  }
151
143
 
152
144
  export default serialize;
145
+
146
+ export { createReference } from './tree/reference';