seroval 0.6.0 → 0.7.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 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};
1
+ var z=(S=>(S[S.AggregateError=1]="AggregateError",S[S.ArrayPrototypeValues=2]="ArrayPrototypeValues",S[S.ArrowFunction=4]="ArrowFunction",S[S.BigInt=8]="BigInt",S[S.ErrorPrototypeStack=16]="ErrorPrototypeStack",S[S.Map=32]="Map",S[S.MethodShorthand=64]="MethodShorthand",S[S.ObjectAssign=128]="ObjectAssign",S[S.Promise=256]="Promise",S[S.Set=512]="Set",S[S.Symbol=1024]="Symbol",S[S.TypedArray=2048]="TypedArray",S[S.BigIntTypedArray=4096]="BigIntTypedArray",S[S.WebAPI=8192]="WebAPI",S))(z||{});var Be="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",Ce=Be.length,Oe="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",he=Oe.length;function ye(e){let r=e%Ce,n=Be[r];for(e=(e-r)/Ce;e>0;)r=e%he,n+=Oe[r],e=(e-r)/he;return n}var rr={disabledFeatures:0};function F(e={}){let r=Object.assign({},rr,e||{});return{markedRefs:new Set,refs:new Map,features:16383^r.disabledFeatures}}function j(e){return{stack:[],vars:[],assignments:[],validRefs:[],refSize:0,features:e.features,markedRefs:new Set(e.markedRefs),valueMap:new Map}}function k(e,r){e.markedRefs.add(r)}function p(e,r){let n=e.validRefs[r];n==null&&(n=e.refSize++,e.validRefs[r]=n);let a=e.vars[n];return a==null&&(a=ye(n),e.vars[n]=a),a}function H(e,r){let n=e.refs.get(r);return n==null?e.refs.size:n}function R(e,r){let n=e.refs.get(r);if(n==null){let a=e.refs.size;return e.refs.set(r,a),a}return k(e,n),n}function f(e,r){if(!e)throw new Error(r)}function nr(e){switch(e){case'"':return'\\"';case"\\":return"\\\\";case`
2
+ `: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 b(e){let r="",n=0,a;for(let t=0,o=e.length;t<o;t++)a=nr(e[t]),a&&(r+=e.slice(n,t)+a,n=t+1);return n===0?r=e:r+=e.slice(n),r}function A(e){return e.replace(/\\"/g,'"').replace(/\\\\/g,"\\").replace(/\\n/g,`
3
+ `).replace(/\\r/g,"\r").replace(/\\b/g,"\b").replace(/\\t/g," ").replace(/\\f/g,"\f").replace(/\\x3C/g,"<").replace(/\\u2028/g,"\u2028").replace(/\\u2029/g,"\u2029")}var be=new Map,B=new Map;function ar(e,r){return be.set(r,e),B.set(e,r),r}function P(e){return be.has(e)}function tr(e){return B.has(e)}function Ue(e){return f(P(e),"Missing reference id"),be.get(e)}function De(e){return f(tr(e),"Missing reference for id:"+e),B.get(e)}var U="__SEROVAL__";typeof globalThis!==void 0?Object.defineProperty(globalThis,U,{value:B,configurable:!0,writable:!1,enumerable:!1}):typeof window!==void 0?Object.defineProperty(window,U,{value:B,configurable:!0,writable:!1,enumerable:!1}):typeof self!==void 0?Object.defineProperty(self,U,{value:B,configurable:!0,writable:!1,enumerable:!1}):typeof global!==void 0&&Object.defineProperty(global,U,{value:B,configurable:!0,writable:!1,enumerable:!1});var Te={[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"},ve={[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},Le={[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 W={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,b:void 0},K={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,b:void 0},Y={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,b:void 0},Z={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,b:void 0},G={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,b:void 0},J={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,b:void 0},$={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,b:void 0},q={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,b:void 0};function Q(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,b:void 0}}function X(e){return{t:1,i:void 0,s:b(e),l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0,b:void 0}}function ee(e,r){return f(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,b:void 0}}function C(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,b:void 0}}function re(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,b:void 0}}function ne(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,b:void 0}}function M(e,r){let n=new Uint8Array(r),a=n.length,t=new Array(a);for(let o=0;o<a;o++)t[o]=n[o];return{t:28,i:e,s:t,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0,b:void 0}}function D(e,r){let n=R(e,r);return e.markedRefs.has(n)?C(n):M(n,r)}function ae(e,r,n){let a=n.constructor.name;return f(e.features&2048,`Unsupported value type "${a}"`),{t:22,i:r,s:void 0,l:n.length,c:a,m:void 0,d:void 0,a:void 0,f:D(e,n.buffer),b:n.byteOffset}}var Ve=4104;function te(e,r,n){let a=n.constructor.name;return f((e.features&Ve)===Ve,`Unsupported value type "${a}"`),{t:23,i:r,s:void 0,l:n.length,c:a,m:void 0,d:void 0,a:void 0,f:D(e,n.buffer),b:n.byteOffset}}function oe(e,r){return f(e.features&1024,'Unsupported type "symbol"'),f(r in ve,"seroval only supports well-known symbols"),{t:24,i:void 0,s:ve[r],l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0,b:void 0}}function h(e,r){return{t:27,i:e,s:b(Ue(r)),l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0,b:void 0}}function ie(e,r,n){return{t:29,i:r,s:void 0,l:n.byteLength,c:void 0,m:void 0,d:void 0,a:void 0,f:D(e,n.buffer),b:n.byteOffset}}function _(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 Fe(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 T(e,r){let n,a=_(r);r.name!==a?n={name:r.name}:r.constructor.name!==a&&(n={name:r.constructor.name});let t=Object.getOwnPropertyNames(r);for(let o of t)o!=="name"&&o!=="message"&&(o==="stack"?e.features&16&&(n=n||{},n[o]=r[o]):(n=n||{},n[o]=r[o]));return n}function se(e){let r=Object.getOwnPropertyNames(e);if(r.length){let n={};for(let a of r)n[a]=e[a];return n}}function w(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 or=/^[$A-Z_][0-9A-Z_$]*$/i;function Ae(e){let r=e[0];return(r==="$"||r==="_"||r>="A"&&r<="Z"||r>="a"&&r<="z")&&or.test(e)}function de(e,r,n){return f(e.features&8192,'Unsupported type "URL"'),{t:25,i:r,s:b(n.href),l:void 0,c:void 0,m:void 0,d:void 0,f:void 0,a:void 0,b:void 0}}function le(e,r,n){return f(e.features&8192,'Unsupported type "URLSearchParams"'),{t:26,i:r,s:b(n.toString()),l:void 0,c:void 0,m:void 0,d:void 0,f:void 0,a:void 0,b:void 0}}async function xe(e,r,n){return f(e.features&8192,'Unsupported type "Blob"'),{t:30,i:r,s:void 0,l:void 0,c:b(n.type),m:void 0,d:void 0,f:D(e,await n.arrayBuffer()),a:void 0,b:void 0}}async function Me(e,r,n){return f(e.features&8192,'Unsupported type "File"'),{t:31,i:r,s:void 0,l:void 0,c:b(n.type),m:b(n.name),d:void 0,f:D(e,await n.arrayBuffer()),a:void 0,b:n.lastModified}}async function We(e,r){let n=r.length,a=new Array(n),t=new Array(n),o;for(let i=0;i<n;i++)i in r&&(o=r[i],w(o)?t[i]=o:a[i]=await E(e,o));for(let i=0;i<n;i++)i in t&&(a[i]=await E(e,t[i]));return a}async function ir(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 We(e,n),f:void 0,b:void 0}}async function sr(e,r,n){f(e.features&32,'Unsupported type "Map"');let a=n.size,t=new Array(a),o=new Array(a),i=new Array(a),d=new Array(a),s=0,u=0;for(let[l,N]of n.entries())w(l)||w(N)?(i[s]=l,d[s]=N,s++):(t[u]=await E(e,l),o[u]=await E(e,N),u++);for(let l=0;l<s;l++)t[u+l]=await E(e,i[l]),o[u+l]=await E(e,d[l]);return{t:14,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:{k:t,v:o,s:a},a:void 0,f:void 0,b:void 0}}async function dr(e,r,n){f(e.features&512,'Unsupported type "Set"');let a=n.size,t=new Array(a),o=new Array(a),i=0,d=0;for(let s of n.keys())w(s)?o[i++]=s:t[d++]=await E(e,s);for(let s=0;s<i;s++)t[d+s]=await E(e,o[s]);return{t:13,i:r,s:void 0,l:a,c:void 0,m:void 0,d:void 0,a:t,f:void 0,b:void 0}}async function L(e,r){let n=Object.keys(r),a=n.length,t=new Array(a),o=new Array(a),i=new Array(a),d=new Array(a),s=0,u=0,l,N;for(let c of n)l=r[c],N=b(c),w(l)?(i[s]=N,d[s]=l,s++):(t[u]=N,o[u]=await E(e,l),u++);for(let c=0;c<s;c++)t[u+c]=i[c],o[u+c]=await E(e,d[c]);return{k:t,v:o,s:a}}async function Ke(e,r,n){f(e.features&1024,'Unsupported type "Iterable"');let a=se(n),t=Array.from(n);return{t:21,i:r,s:void 0,l:t.length,c:void 0,m:void 0,d:a?await L(e,a):void 0,a:await We(e,t),f:void 0,b:void 0}}async function fe(e,r,n){return f(e.features&256,'Unsupported type "Promise"'),n.then(async a=>({t:18,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:await E(e,a),b:void 0}))}async function _e(e,r,n,a){return Symbol.iterator in n?Ke(e,r,n):"then"in n&&typeof n.then=="function"?fe(e,r,n):{t:a?17:16,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:await L(e,n),a:void 0,f:void 0,b:void 0}}async function He(e,r,n){let a=T(e,n),t=a?await L(e,a):void 0;return{t:20,i:r,s:void 0,l:void 0,c:void 0,m:b(n.message),d:t,a:void 0,f:void 0,b:void 0}}async function ue(e,r,n){let a=T(e,n),t=a?await L(e,a):void 0;return{t:19,i:r,s:void 0,l:void 0,c:_(n),m:b(n.message),d:t,a:void 0,f:void 0,b:void 0}}async function lr(e,r,n){f(e.features&8192,'Unsupported type "Headers"');let a={};return n.forEach((t,o)=>{a[o]=t}),{t:32,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:await L(e,a),a:void 0,f:void 0,b:void 0}}async function ur(e,r,n){f(e.features&8192,'Unsupported type "FormData"');let a={};return n.forEach((t,o)=>{a[o]=t}),{t:33,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:await L(e,a),a:void 0,f:void 0,b:void 0}}async function E(e,r){switch(typeof r){case"boolean":return r?W:K;case"undefined":return Y;case"string":return X(r);case"number":switch(r){case 1/0:return J;case-1/0:return $;default:return r!==r?q:Object.is(r,-0)?G:Q(r)}case"bigint":return ee(e,r);case"object":{if(!r)return Z;let n=R(e,r);if(e.markedRefs.has(n))return C(n);if(P(r))return h(n,r);if(Array.isArray(r))return ir(e,n,r);switch(r.constructor){case Date:return re(n,r);case RegExp:return ne(n,r);case Promise:return fe(e,n,r);case ArrayBuffer:return M(n,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return ae(e,n,r);case BigInt64Array:case BigUint64Array:return te(e,n,r);case DataView:return ie(e,n,r);case Map:return sr(e,n,r);case Set:return dr(e,n,r);case Object:return _e(e,n,r,!1);case void 0:return _e(e,n,r,!0);case AggregateError:return e.features&1?He(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 de(e,n,r);case URLSearchParams:return le(e,n,r);case Blob:return xe(e,n,r);case File:return Me(e,n,r);case Headers:return lr(e,n,r);case FormData:return ur(e,n,r);default:break}if(r instanceof AggregateError)return e.features&1?He(e,n,r):ue(e,n,r);if(r instanceof Error)return ue(e,n,r);if(r instanceof Promise)return fe(e,n,r);if(Symbol.iterator in r)return Ke(e,n,r);if("then"in r&&typeof r.then=="function")return fe(e,n,r);throw new Error("Unsupported type")}case"symbol":if(P(r)){let n=R(e,r);return e.markedRefs.has(n)?C(n):h(n,r)}return oe(e,r);case"function":{f(P(r),"Cannot serialize function without reference ID.");let n=R(e,r);return e.markedRefs.has(n)?C(n):h(n,r)}default:throw new Error("Unsupported type")}}async function ce(e,r){let n=await E(e,r),a=n.t===16||n.t===21;return[n,H(e,r),a]}function m(e,r,n){return e.markedRefs.has(r)&&e.valueMap.set(r,n),n}function fr(e,r){let n=m(e,r.i,new Array(r.l)),a;for(let t=0,o=r.l;t<o;t++)a=r.a[t],a&&(n[t]=v(e,a));return n}function we(e,r,n){if(r.s===0)return{};for(let a=0;a<r.s;a++)n[A(r.k[a])]=v(e,r.v[a]);return n}function cr(e,r){let n=m(e,r.i,Object.create(null));return we(e,r.d,n),n}function Sr(e,r){let n=m(e,r.i,{});return we(e,r.d,n),n}function mr(e,r){let n=m(e,r.i,new Set);for(let a=0,t=r.l;a<t;a++)n.add(v(e,r.a[a]));return n}function Nr(e,r){let n=m(e,r.i,new Map);for(let a=0,t=r.d.s;a<t;a++)n.set(v(e,r.d.k[a]),v(e,r.d.v[a]));return n}function Ee(e,r,n){if(r.d){let a=we(e,r.d,{});Object.assign(n,a)}return n}function pr(e,r){let n=m(e,r.i,new AggregateError([],A(r.m)));return Ee(e,r,n)}function gr(e,r){let n=Fe(r.c),a=m(e,r.i,new n(A(r.m)));return Ee(e,r,a)}function yr(){let e;return{resolve(r){e(r)},promise:new Promise(r=>{e=r})}}function br(e,r){let n=yr(),a=m(e,r.i,n.promise);return n.resolve(v(e,r.f)),a}function vr(e,r){let n=new Uint8Array(r.s);return m(e,r.i,n.buffer)}function Ar(e,r){let n=je(r.c),a=v(e,r.f);return m(e,r.i,new n(a,r.b,r.l))}function wr(e,r){let n=[],a;for(let o=0,i=r.l;o<i;o++)a=r.a[o],a&&(n[o]=v(e,a));let t=m(e,r.i,{[Symbol.iterator]:()=>n.values()});return Ee(e,r,t)}function Er(e,r){return m(e,r.i,new Date(r.s))}function kr(e,r){return m(e,r.i,new RegExp(r.c,r.m))}function Ir(e,r){return m(e,r.i,new URL(A(r.s)))}function Rr(e,r){return m(e,r.i,new URLSearchParams(A(r.s)))}function zr(e,r){return m(e,r.i,De(A(r.s)))}function Pr(e,r){let n=v(e,r.f);return m(e,r.i,new DataView(n,r.b,r.l))}function Cr(e,r){let n=v(e,r.f);return m(e,r.i,new Blob([n],{type:A(r.c)}))}function hr(e,r){let n=v(e,r.f);return m(e,r.i,new File([n],A(r.m),{type:A(r.c),lastModified:r.b}))}function Br(e,r){let n=m(e,r.i,new Headers);for(let a=0,t=r.d.s;a<t;a++)n.set(A(r.d.k[a]),v(e,r.d.v[a]));return n}function Or(e,r){let n=m(e,r.i,new FormData);for(let a=0,t=r.d.s;a<t;a++)n.set(A(r.d.k[a]),v(e,r.d.v[a]));return n}function v(e,r){switch(r.t){case 0:case 2:return r.s;case 1:return A(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 fr(e,r);case 16:return Sr(e,r);case 17:return cr(e,r);case 11:return Er(e,r);case 12:return kr(e,r);case 13:return mr(e,r);case 14:return Nr(e,r);case 28:return vr(e,r);case 23:case 22:return Ar(e,r);case 29:return Pr(e,r);case 20:return pr(e,r);case 19:return gr(e,r);case 21:return wr(e,r);case 18:return br(e,r);case 24:return Le[r.s];case 25:return Ir(e,r);case 26:return Rr(e,r);case 27:return zr(e,r);case 30:return Cr(e,r);case 31:return hr(e,r);case 32:return Br(e,r);case 33:return Or(e,r);default:throw new Error("Unsupported type")}}function Se(e){switch(e.t){case"index":return e.s+"="+e.v;case"set":return e.s+".set("+e.k+","+e.v+")";case"add":return e.s+".add("+e.v+")";case"append":return e.s+".append("+e.k+","+e.v+")";default:return""}}function Ur(e){let r=[],n=e[0],a=n,t;for(let o=1,i=e.length;o<i;o++){if(t=e[o],t.t===a.t)switch(t.t){case"index":t.v===a.v?n={t:"index",s:t.s,k:void 0,v:Se(n)}:(r.push(n),n=t);break;case"set":t.s===a.s?n={t:"set",s:Se(n),k:t.k,v:t.v}:(r.push(n),n=t);break;case"add":t.s===a.s?n={t:"add",s:Se(n),k:void 0,v:t.v}:(r.push(n),n=t);break;case"append":r.push(n),n=t;break;default:break}else r.push(n),n=t;a=t}return r.push(n),r}function Ie(e){if(e.length){let r="",n=Ur(e);for(let a=0,t=n.length;a<t;a++)r+=Se(n[a])+",";return r}}function Ye(e){return Ie(e.assignments)}function Ze(e,r,n){e.assignments.push({t:"index",s:r,k:void 0,v:n})}function Dr(e,r,n){e.assignments.push({t:"add",s:p(e,r),k:void 0,v:n})}function ke(e,r,n,a){e.assignments.push({t:"set",s:p(e,r),k:n,v:a})}function Tr(e,r,n,a){e.assignments.push({t:"append",s:p(e,r),k:n,v:a})}function Re(e,r,n,a){Ze(e,p(e,r)+"["+n+"]",a)}function Ge(e,r,n,a){k(e,r),Ze(e,p(e,r)+"."+n,a)}function y(e,r,n){return e.markedRefs.has(r)?p(e,r)+"="+n:n}function O(e,r){return r.t===10&&e.stack.includes(r.i)}function Je(e,r){let n=r.l,a="",t,o=!1;for(let i=0;i<n;i++)i!==0&&(a+=","),t=r.a[i],t?O(e,t)?(k(e,r.i),Re(e,r.i,i,p(e,t.i)),o=!0):(a+=g(e,t),o=!1):o=!0;return"["+a+(o?",]":"]")}function Lr(e,r){e.stack.push(r.i);let n=Je(e,r);return e.stack.pop(),y(e,r.i,n)}function ze(e,r,n){if(n.s===0)return"{}";let a="";e.stack.push(r);let t,o,i,d,s,u=!1,l=n.k,N=n.v;for(let c=0,ge=n.s;c<ge;c++)t=l[c],o=N[c],i=Number(t),d=i>=0||Ae(t),O(e,o)?(s=p(e,o.i),d&&Number.isNaN(i)?(k(e,r),Ge(e,r,t,s)):(k(e,r),Re(e,r,d?t:'"'+t+'"',s))):(a+=(u?",":"")+(d?t:'"'+t+'"')+":"+g(e,o),u=!0);return e.stack.pop(),"{"+a+"}"}function Vr(e,r,n,a){let t=ze(e,n,r);return t!=="{}"?"Object.assign("+a+","+t+")":a}function Fr(e,r,n){e.stack.push(r);let a=[],t,o,i,d,s,u,l=n.k,N=n.v;for(let c=0,ge=n.s;c<ge;c++)t=e.stack,e.stack=[],o=g(e,N[c]),e.stack=t,i=l[c],d=Number(i),s=e.assignments,e.assignments=a,u=d>=0||Ae(i),u&&Number.isNaN(d)?Ge(e,r,i,o):Re(e,r,u?i:'"'+i+'"',o),e.assignments=s;return e.stack.pop(),Ie(a)}function me(e,r,n,a){if(n)if(e.features&128)a=Vr(e,n,r,a);else{k(e,r);let t=Fr(e,r,n);if(t)return"("+y(e,r,a)+","+t+p(e,r)+")"}return y(e,r,a)}function jr(e,r){return me(e,r.i,r.d,"Object.create(null)")}function xr(e,r){return y(e,r.i,ze(e,r.i,r.d))}function Mr(e,r){let n="new Set",a=r.l;if(a){let t="";e.stack.push(r.i);let o,i=!1;for(let d=0;d<a;d++)o=r.a[d],O(e,o)?(k(e,r.i),Dr(e,r.i,p(e,o.i))):(t+=(i?",":"")+g(e,o),i=!0);e.stack.pop(),t&&(n+="(["+t+"])")}return y(e,r.i,n)}function _r(e,r){let n="new Map";if(r.d.s){let a="";e.stack.push(r.i);let t,o,i,d,s,u=!1;for(let l=0;l<r.d.s;l++)t=r.d.k[l],o=r.d.v[l],O(e,t)?(i=p(e,t.i),k(e,r.i),O(e,o)?(d=p(e,o.i),ke(e,r.i,i,d)):(s=e.stack,e.stack=[],ke(e,r.i,i,g(e,o)),e.stack=s)):O(e,o)?(d=p(e,o.i),k(e,r.i),s=e.stack,e.stack=[],ke(e,r.i,g(e,t),d),e.stack=s):(a+=(u?",[":"[")+g(e,t)+","+g(e,o)+"]",u=!0);e.stack.pop(),a&&(n+="(["+a+"])")}return y(e,r.i,n)}function Hr(e,r){e.stack.push(r.i);let n='new AggregateError([],"'+r.m+'")';return e.stack.pop(),me(e,r.i,r.d,n)}function Wr(e,r){let n="new "+r.c+'("'+r.m+'")';return me(e,r.i,r.d,n)}function Kr(e,r){let n;if(O(e,r.f)){let a=p(e,r.f.i);e.features&4?n="Promise.resolve().then(()=>"+a+")":n="Promise.resolve().then(function(){return "+a+"})"}else{e.stack.push(r.i);let a=g(e,r.f);e.stack.pop(),n="Promise.resolve("+a+")"}return y(e,r.i,n)}function Yr(e,r){let n="new Uint8Array(";if(r.s.length){n+="[";for(let a=0,t=r.s.length;a<t;a++)n+=(a>0?",":"")+r.s[a];n+="]"}return y(e,r.i,n+").buffer")}function Zr(e,r){let n=g(e,r.f)+","+r.b+","+r.l;return y(e,r.i,"new "+r.c+"("+n+")")}function Gr(e,r){let n=e.stack;e.stack=[];let a=Je(e,r);e.stack=n;let t=a;return e.features&2?t+=".values()":t+="[Symbol.iterator]()",e.features&4?t="{[Symbol.iterator]:()=>"+t+"}":e.features&64?t="{[Symbol.iterator](){return "+t+"}}":t="{[Symbol.iterator]:function(){return "+t+"}}",me(e,r.i,r.d,t)}function Jr(e,r){return y(e,r.i,'new Date("'+r.s+'")')}function $r(e,r){return y(e,r.i,"/"+r.c+"/"+r.m)}function qr(e,r){return y(e,r.i,'new URL("'+r.s+'")')}function Qr(e,r){return y(e,r.i,r.s?'new URLSearchParams("'+r.s+'")':"new URLSearchParams")}function Xr(e,r){return y(e,r.i,U+'.get("'+r.s+'")')}function en(e,r){let n=g(e,r.f)+","+r.b+","+r.l;return y(e,r.i,"new DataView("+n+")")}function rn(e,r){let n="["+g(e,r.f)+'],{type:"'+r.c+'"}';return y(e,r.i,"new Blob("+n+")")}function nn(e,r){let n='{type:"'+r.c+'",lastModified:'+r.b+"}",a="["+g(e,r.f)+'],"'+r.m+'",'+n;return y(e,r.i,"new File("+a+")")}function an(e,r){return y(e,r.i,"new Headers("+ze(e,r.i,r.d)+")")}function tn(e,r){e.stack.push(r.i);let n=[],a,t,o,i;for(let d=0;d<r.d.s;d++)a=e.stack,e.stack=[],t=g(e,r.d.v[d]),o=r.d.k[d],e.stack=a,i=e.assignments,e.assignments=n,Tr(e,r.i,'"'+o+'"',t),e.assignments=i;return e.stack.pop(),Ie(n)}function on(e,r){r.d.s&&k(e,r.i);let n=y(e,r.i,"new FormData()");return r.d.s?"("+n+","+tn(e,r)+p(e,r.i)+")":n}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 p(e,r.i);case 15:return Lr(e,r);case 16:return xr(e,r);case 17:return jr(e,r);case 11:return Jr(e,r);case 12:return $r(e,r);case 13:return Mr(e,r);case 14:return _r(e,r);case 28:return Yr(e,r);case 23:case 22:return Zr(e,r);case 29:return en(e,r);case 20:return Hr(e,r);case 19:return Wr(e,r);case 21:return Gr(e,r);case 18:return Kr(e,r);case 24:return Te[r.s];case 25:return qr(e,r);case 26:return Qr(e,r);case 27:return Xr(e,r);case 30:return rn(e,r);case 31:return nn(e,r);case 32:return an(e,r);case 33:return on(e,r);default:throw new Error("Unsupported type")}}function Qe(e,r){let n=r.length,a=new Array(n),t=new Array(n),o;for(let i=0;i<n;i++)i in r&&(o=r[i],w(o)?t[i]=o:a[i]=I(e,o));for(let i=0;i<n;i++)i in t&&(a[i]=I(e,t[i]));return a}function sn(e,r,n){return{t:15,i:r,s:void 0,l:n.length,c:void 0,m:void 0,d:void 0,a:Qe(e,n),f:void 0,b:void 0}}function dn(e,r,n){f(e.features&32,'Unsupported type "Map"');let a=n.size,t=new Array(a),o=new Array(a),i=new Array(a),d=new Array(a),s=0,u=0;for(let[l,N]of n.entries())w(l)||w(N)?(i[s]=l,d[s]=N,s++):(t[u]=I(e,l),o[u]=I(e,N),u++);for(let l=0;l<s;l++)t[u+l]=I(e,i[l]),o[u+l]=I(e,d[l]);return{t:14,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:{k:t,v:o,s:a},a:void 0,f:void 0,b:void 0}}function ln(e,r,n){f(e.features&512,'Unsupported type "Set"');let a=n.size,t=new Array(a),o=new Array(a),i=0,d=0;for(let s of n.keys())w(s)?o[i++]=s:t[d++]=I(e,s);for(let s=0;s<i;s++)t[d+s]=I(e,o[s]);return{t:13,i:r,s:void 0,l:a,c:void 0,m:void 0,d:void 0,a:t,f:void 0,b:void 0}}function V(e,r){let n=Object.keys(r),a=n.length,t=new Array(a),o=new Array(a),i=new Array(a),d=new Array(a),s=0,u=0,l,N;for(let c of n)l=r[c],N=b(c),w(l)?(i[s]=N,d[s]=l,s++):(t[u]=N,o[u]=I(e,l),u++);for(let c=0;c<s;c++)t[u+c]=i[c],o[u+c]=I(e,d[c]);return{k:t,v:o,s:a}}function Xe(e,r,n){f(e.features&1024,'Unsupported type "Iterable"');let a=se(n),t=Array.from(n);return{t:21,i:r,s:void 0,l:t.length,c:void 0,m:void 0,d:a?V(e,a):void 0,a:Qe(e,t),f:void 0,b:void 0}}function $e(e,r,n,a){return Symbol.iterator in n?Xe(e,r,n):{t:a?17:16,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:V(e,n),a:void 0,f:void 0,b:void 0}}function qe(e,r,n){let a=T(e,n),t=a?V(e,a):void 0;return{t:20,i:r,s:void 0,l:void 0,c:void 0,m:b(n.message),d:t,a:void 0,f:void 0,b:void 0}}function Ne(e,r,n){let a=T(e,n),t=a?V(e,a):void 0;return{t:19,i:r,s:void 0,l:void 0,c:_(n),m:b(n.message),d:t,a:void 0,f:void 0,b:void 0}}function un(e,r,n){f(e.features&8192,'Unsupported type "Headers"');let a={};return n.forEach((t,o)=>{a[o]=t}),{t:32,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:V(e,a),a:void 0,f:void 0,b:void 0}}function fn(e,r,n){f(e.features&8192,'Unsupported type "FormData"');let a={};return n.forEach((t,o)=>{a[o]=t}),{t:33,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:V(e,a),a:void 0,f:void 0,b:void 0}}function I(e,r){switch(typeof r){case"boolean":return r?W:K;case"undefined":return Y;case"string":return X(r);case"number":switch(r){case 1/0:return J;case-1/0:return $;default:return r!==r?q:Object.is(r,-0)?G:Q(r)}case"bigint":return ee(e,r);case"object":{if(!r)return Z;let n=R(e,r);if(e.markedRefs.has(n))return C(n);if(P(r))return h(n,r);if(Array.isArray(r))return sn(e,n,r);switch(r.constructor){case Date:return re(n,r);case RegExp:return ne(n,r);case ArrayBuffer:return M(n,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return ae(e,n,r);case BigInt64Array:case BigUint64Array:return te(e,n,r);case DataView:return ie(e,n,r);case Map:return dn(e,n,r);case Set:return ln(e,n,r);case Object:return $e(e,n,r,!1);case void 0:return $e(e,n,r,!0);case AggregateError:return e.features&1?qe(e,n,r):Ne(e,n,r);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return Ne(e,n,r);case URL:return de(e,n,r);case URLSearchParams:return le(e,n,r);case Headers:return un(e,n,r);case FormData:return fn(e,n,r);default:break}if(r instanceof AggregateError)return e.features&1?qe(e,n,r):Ne(e,n,r);if(r instanceof Error)return Ne(e,n,r);if(Symbol.iterator in r)return Xe(e,n,r);throw new Error("Unsupported type")}case"symbol":if(P(r)){let n=R(e,r);return e.markedRefs.has(n)?C(n):h(n,r)}return oe(e,r);case"function":{f(P(r),"Cannot serialize function without reference ID.");let n=R(e,r);return e.markedRefs.has(n)?C(n):h(n,r)}default:throw new Error("Unsupported type")}}function pe(e,r){let n=I(e,r),a=n.t===16||n.t===21;return[n,H(e,r),a]}function Pe(e,r,n,a){if(e.vars.length){let t=Ye(e),o=a;if(t){let d=p(e,r);o=a+","+t+d,a.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?"("+a+")":a}function cn(e,r){let n=F(r),[a,t,o]=pe(n,e),i=j(n),d=g(i,a);return Pe(i,t,o,d)}async function Eo(e,r){let n=F(r),[a,t,o]=await ce(n,e),i=j(n),d=g(i,a);return Pe(i,t,o,d)}function ko(e){return(0,eval)(e)}function Io(e,r){let n=F(r),[a,t,o]=pe(n,e);return{t:a,r:t,i:o,f:n.features,m:Array.from(n.markedRefs)}}async function Ro(e,r){let n=F(r),[a,t,o]=await ce(n,e);return{t:a,r:t,i:o,f:n.features,m:Array.from(n.markedRefs)}}function zo(e){let r=j({features:e.f,markedRefs:e.m}),n=g(r,e.t);return Pe(r,e.r,e.i,n)}function Po(e){let r=j({features:e.f,markedRefs:e.m});return v(r,e.t)}var Co=cn;export{z as Feature,zo as compileJSON,ar as createReference,Co as default,ko as deserialize,Po as fromJSON,cn as serialize,Eo as serializeAsync,Io as toJSON,Ro as toJSONAsync};
@@ -19,4 +19,4 @@ export declare const enum Feature {
19
19
  BigIntTypedArray = 4096,
20
20
  WebAPI = 8192
21
21
  }
22
- export declare const ALL_ENABLED = 12287;
22
+ export declare const ALL_ENABLED = 16383;
@@ -4,19 +4,25 @@ interface IndexAssignment {
4
4
  k: undefined;
5
5
  v: string;
6
6
  }
7
- interface MapAssignment {
8
- t: 'map';
7
+ interface SetAssignment {
8
+ t: 'set';
9
9
  s: string;
10
10
  k: string;
11
11
  v: string;
12
12
  }
13
- interface SetAssignment {
14
- t: 'set';
13
+ interface AddAssignment {
14
+ t: 'add';
15
15
  s: string;
16
16
  k: undefined;
17
17
  v: string;
18
18
  }
19
- export type Assignment = IndexAssignment | MapAssignment | SetAssignment;
19
+ interface AppendAssignment {
20
+ t: 'append';
21
+ s: string;
22
+ k: string;
23
+ v: string;
24
+ }
25
+ export type Assignment = IndexAssignment | AddAssignment | SetAssignment | AppendAssignment;
20
26
  export interface ParserContext {
21
27
  refs: Map<unknown, number>;
22
28
  markedRefs: Set<number>;
@@ -0,0 +1,3 @@
1
+ export declare function serializeChar(str: string): "\\\"" | "\\\\" | "\\n" | "\\r" | "\\b" | "\\t" | "\\f" | "\\x3C" | "\\u2028" | "\\u2029" | undefined;
2
+ export declare function serializeString(str: string): string;
3
+ export declare function deserializeString(str: string): string;
@@ -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, SerovalIndexedValueNode, SerovalRegExpNode, SerovalStringNode, SerovalTypedArrayNode, SerovalUndefinedNode, SerovalWKSymbolNode, SerovalReferenceNode } from './types';
4
+ import { SerovalBigIntNode, SerovalBigIntTypedArrayNode, SerovalBooleanNode, SerovalDateNode, SerovalInfinityNode, SerovalNaNNode, SerovalNegativeInfinityNode, SerovalNegativeZeroNode, SerovalNullNode, SerovalNumberNode, SerovalIndexedValueNode, SerovalRegExpNode, SerovalStringNode, SerovalTypedArrayNode, SerovalUndefinedNode, SerovalWKSymbolNode, SerovalReferenceNode, SerovalArrayBufferNode, SerovalDataViewNode } 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;
@@ -16,7 +16,10 @@ export declare function createBigIntNode(ctx: ParserContext, current: bigint): S
16
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
+ export declare function createArrayBufferNode(id: number, current: ArrayBuffer): SerovalArrayBufferNode;
20
+ export declare function serializeArrayBuffer(ctx: ParserContext, current: ArrayBuffer): SerovalIndexedValueNode | SerovalArrayBufferNode;
19
21
  export declare function createTypedArrayNode(ctx: ParserContext, id: number, current: TypedArrayValue): SerovalTypedArrayNode;
20
22
  export declare function createBigIntTypedArrayNode(ctx: ParserContext, id: number, current: BigIntTypedArrayValue): SerovalBigIntTypedArrayNode;
21
23
  export declare function createWKSymbolNode(ctx: ParserContext, current: WellKnownSymbols): SerovalWKSymbolNode;
22
24
  export declare function createReferenceNode<T>(id: number, ref: T): SerovalReferenceNode;
25
+ export declare function createDataViewNode(ctx: ParserContext, id: number, current: DataView): SerovalDataViewNode;
@@ -27,7 +27,13 @@ export declare const enum SerovalNodeType {
27
27
  WKSymbol = 24,
28
28
  URL = 25,
29
29
  URLSearchParams = 26,
30
- Reference = 27
30
+ Reference = 27,
31
+ ArrayBuffer = 28,
32
+ DataView = 29,
33
+ Blob = 30,
34
+ File = 31,
35
+ Headers = 32,
36
+ FormData = 33
31
37
  }
32
38
  export interface SerovalBaseNode {
33
39
  t: SerovalNodeType;
@@ -39,6 +45,7 @@ export interface SerovalBaseNode {
39
45
  d: SerovalDictionaryNode | undefined;
40
46
  a: SerovalNode[] | undefined;
41
47
  f: SerovalNode | undefined;
48
+ b: number | undefined;
42
49
  }
43
50
  export interface SerovalObjectRecordNode {
44
51
  k: string[];
@@ -101,31 +108,38 @@ export interface SerovalRegExpNode extends SerovalBaseNode {
101
108
  c: string;
102
109
  m: string;
103
110
  }
111
+ export interface SerovalArrayBufferNode extends SerovalBaseNode {
112
+ t: SerovalNodeType.ArrayBuffer;
113
+ i: number;
114
+ s: number[];
115
+ }
104
116
  export interface SerovalTypedArrayNode extends SerovalBaseNode {
105
117
  t: SerovalNodeType.TypedArray;
106
118
  i: number;
107
- s: string[];
108
119
  l: number;
109
120
  c: string;
121
+ f: SerovalNode;
122
+ b: number;
110
123
  }
111
124
  export interface SerovalBigIntTypedArrayNode extends SerovalBaseNode {
112
125
  t: SerovalNodeType.BigIntTypedArray;
113
126
  i: number;
114
- s: string[];
115
127
  l: number;
116
128
  c: string;
129
+ f: SerovalNode;
130
+ b: number;
117
131
  }
118
132
  export type SerovalSemiPrimitiveNode = SerovalBigIntNode | SerovalDateNode | SerovalRegExpNode | SerovalTypedArrayNode | SerovalBigIntTypedArrayNode;
119
133
  export interface SerovalSetNode extends SerovalBaseNode {
120
134
  t: SerovalNodeType.Set;
135
+ i: number;
121
136
  l: number;
122
137
  a: SerovalNode[];
123
- i: number;
124
138
  }
125
139
  export interface SerovalMapNode extends SerovalBaseNode {
126
140
  t: SerovalNodeType.Map;
127
- d: SerovalMapRecordNode;
128
141
  i: number;
142
+ d: SerovalMapRecordNode;
129
143
  }
130
144
  export interface SerovalArrayNode extends SerovalBaseNode {
131
145
  t: SerovalNodeType.Array;
@@ -157,11 +171,9 @@ export interface SerovalErrorNode extends SerovalBaseNode {
157
171
  }
158
172
  export interface SerovalAggregateErrorNode extends SerovalBaseNode {
159
173
  t: SerovalNodeType.AggregateError;
174
+ i: number;
160
175
  m: string;
161
176
  d: SerovalObjectRecordNode | undefined;
162
- l: number;
163
- a: SerovalNode[];
164
- i: number;
165
177
  }
166
178
  export interface SerovalIterableNode extends SerovalBaseNode {
167
179
  t: SerovalNodeType.Iterable;
@@ -189,4 +201,35 @@ export interface SerovalReferenceNode extends SerovalBaseNode {
189
201
  i: number;
190
202
  s: string;
191
203
  }
192
- export type SerovalNode = SerovalPrimitiveNode | SerovalIndexedValueNode | SerovalSemiPrimitiveNode | SerovalSetNode | SerovalMapNode | SerovalArrayNode | SerovalObjectNode | SerovalNullConstructorNode | SerovalPromiseNode | SerovalErrorNode | SerovalAggregateErrorNode | SerovalIterableNode | SerovalWKSymbolNode | SerovalURLNode | SerovalURLSearchParamsNode | SerovalReferenceNode;
204
+ export interface SerovalDataViewNode extends SerovalBaseNode {
205
+ t: SerovalNodeType.DataView;
206
+ i: number;
207
+ l: number;
208
+ f: SerovalNode;
209
+ b: number;
210
+ }
211
+ export interface SerovalBlobNode extends SerovalBaseNode {
212
+ t: SerovalNodeType.Blob;
213
+ i: number;
214
+ c: string;
215
+ f: SerovalNode;
216
+ }
217
+ export interface SerovalFileNode extends SerovalBaseNode {
218
+ t: SerovalNodeType.File;
219
+ i: number;
220
+ c: string;
221
+ m: string;
222
+ f: SerovalNode;
223
+ b: number;
224
+ }
225
+ export interface SerovalHeadersNode extends SerovalBaseNode {
226
+ t: SerovalNodeType.Headers;
227
+ i: number;
228
+ d: SerovalObjectRecordNode;
229
+ }
230
+ export interface SerovalFormDataNode extends SerovalBaseNode {
231
+ t: SerovalNodeType.FormData;
232
+ i: number;
233
+ d: SerovalObjectRecordNode;
234
+ }
235
+ export type SerovalNode = SerovalPrimitiveNode | SerovalIndexedValueNode | SerovalSemiPrimitiveNode | SerovalSetNode | SerovalMapNode | SerovalArrayNode | SerovalObjectNode | SerovalNullConstructorNode | SerovalPromiseNode | SerovalErrorNode | SerovalAggregateErrorNode | SerovalIterableNode | SerovalWKSymbolNode | SerovalURLNode | SerovalURLSearchParamsNode | SerovalReferenceNode | SerovalArrayBufferNode | SerovalDataViewNode | SerovalBlobNode | SerovalFileNode | SerovalHeadersNode | SerovalFormDataNode;
@@ -1,4 +1,6 @@
1
1
  import { ParserContext } from '../context';
2
- import { SerovalURLNode, SerovalURLSearchParamsNode } from './types';
2
+ import { SerovalBlobNode, SerovalFileNode, SerovalURLNode, SerovalURLSearchParamsNode } from './types';
3
3
  export declare function createURLNode(ctx: ParserContext, id: number, current: URL): SerovalURLNode;
4
4
  export declare function createURLSearchParamsNode(ctx: ParserContext, id: number, current: URLSearchParams): SerovalURLSearchParamsNode;
5
+ export declare function createBlobNode(ctx: ParserContext, id: number, current: Blob): Promise<SerovalBlobNode>;
6
+ export declare function createFileNode(ctx: ParserContext, id: number, current: File): Promise<SerovalFileNode>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "seroval",
3
3
  "type": "module",
4
- "version": "0.6.0",
4
+ "version": "0.7.0",
5
5
  "files": [
6
6
  "dist",
7
7
  "src"
@@ -17,6 +17,7 @@
17
17
  "@types/node": "^18.15.3",
18
18
  "eslint": "^8.32.0",
19
19
  "eslint-config-lxsmnsyc": "^0.5.1",
20
+ "node-fetch-native": "^1.1.0",
20
21
  "pridepack": "2.4.1",
21
22
  "tslib": "^2.4.1",
22
23
  "typescript": "^4.9.4",
@@ -64,5 +65,5 @@
64
65
  "typesVersions": {
65
66
  "*": {}
66
67
  },
67
- "gitHead": "1d6e69079251612c6fc486e8517e225690363442"
68
+ "gitHead": "187cbd91a44f5e88c6a87288d9ea440ddbaf5be0"
68
69
  }
package/src/compat.ts CHANGED
@@ -22,4 +22,4 @@ export const enum Feature {
22
22
  WebAPI = 0x2000,
23
23
  }
24
24
 
25
- export const ALL_ENABLED = 0x2FFF;
25
+ export const ALL_ENABLED = 0x3FFF;
package/src/context.ts CHANGED
@@ -8,25 +8,33 @@ interface IndexAssignment {
8
8
  v: string;
9
9
  }
10
10
 
11
- interface MapAssignment {
12
- t: 'map';
11
+ interface SetAssignment {
12
+ t: 'set';
13
13
  s: string;
14
14
  k: string;
15
15
  v: string;
16
16
  }
17
17
 
18
- interface SetAssignment {
19
- t: 'set';
18
+ interface AddAssignment {
19
+ t: 'add';
20
20
  s: string;
21
21
  k: undefined;
22
22
  v: string;
23
23
  }
24
24
 
25
+ interface AppendAssignment {
26
+ t: 'append';
27
+ s: string;
28
+ k: string;
29
+ v: string;
30
+ }
31
+
25
32
  // Array of assignments to be done (used for recursion)
26
33
  export type Assignment =
27
34
  | IndexAssignment
28
- | MapAssignment
29
- | SetAssignment;
35
+ | AddAssignment
36
+ | SetAssignment
37
+ | AppendAssignment;
30
38
 
31
39
  export interface ParserContext {
32
40
  refs: Map<unknown, number>;
@@ -1,40 +1,34 @@
1
+ export function serializeChar(str: string) {
2
+ switch (str) {
3
+ case '"': return '\\"';
4
+ case '\\': return '\\\\';
5
+ case '\n': return '\\n';
6
+ case '\r': return '\\r';
7
+ case '\b': return '\\b';
8
+ case '\t': return '\\t';
9
+ case '\f': return '\\f';
10
+ case '<': return '\\x3C';
11
+ case '\u2028': return '\\u2028';
12
+ case '\u2029': return '\\u2029';
13
+ default: return undefined;
14
+ }
15
+ }
16
+
1
17
  // Written by https://github.com/DylanPiercey and is distributed under the MIT license.
2
18
  // Creates a JavaScript double quoted string and escapes all characters
3
19
  // not listed as DoubleStringCharacters on
4
20
  // Also includes "<" to escape "</script>" and "\" to avoid invalid escapes in the output.
5
21
  // http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4
6
- export default function quote(str: string) {
22
+ export function serializeString(str: string) {
7
23
  let result = '';
8
24
  let lastPos = 0;
25
+ let replacement: string | undefined;
9
26
  for (let i = 0, len = str.length; i < len; i++) {
10
- let replacement;
11
- switch (str[i]) {
12
- case '"':
13
- replacement = '\\"';
14
- break;
15
- case '\\':
16
- replacement = '\\\\';
17
- break;
18
- case '<':
19
- replacement = '\\x3C';
20
- break;
21
- case '\n':
22
- replacement = '\\n';
23
- break;
24
- case '\r':
25
- replacement = '\\r';
26
- break;
27
- case '\u2028':
28
- replacement = '\\u2028';
29
- break;
30
- case '\u2029':
31
- replacement = '\\u2029';
32
- break;
33
- default:
34
- continue;
27
+ replacement = serializeChar(str[i]);
28
+ if (replacement) {
29
+ result += str.slice(lastPos, i) + replacement;
30
+ lastPos = i + 1;
35
31
  }
36
- result += str.slice(lastPos, i) + replacement;
37
- lastPos = i + 1;
38
32
  }
39
33
  if (lastPos === 0) {
40
34
  result = str;
@@ -44,13 +38,16 @@ export default function quote(str: string) {
44
38
  return result;
45
39
  }
46
40
 
47
- export function invQuote(str: string): string {
41
+ export function deserializeString(str: string): string {
48
42
  return str
49
43
  .replace(/\\"/g, '"')
50
44
  .replace(/\\\\/g, '\\')
51
- .replace(/\\x3C/g, '<')
52
45
  .replace(/\\n/g, '\n')
53
46
  .replace(/\\r/g, '\r')
47
+ .replace(/\\b/g, '\b')
48
+ .replace(/\\t/g, '\t')
49
+ .replace(/\\f/g, '\f')
50
+ .replace(/\\x3C/g, '<')
54
51
  .replace(/\\u2028/g, '\u2028')
55
52
  .replace(/\\u2029/g, '\u2029');
56
53
  }