seroval 0.5.0 → 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.
- package/README.md +59 -9
- package/dist/cjs/development/index.cjs +372 -202
- package/dist/cjs/development/index.cjs.map +4 -4
- package/dist/cjs/production/index.cjs +3 -3
- package/dist/esm/development/index.mjs +372 -202
- package/dist/esm/development/index.mjs.map +4 -4
- package/dist/esm/production/index.mjs +3 -3
- package/dist/types/compat.d.ts +3 -2
- package/dist/types/context.d.ts +3 -6
- package/dist/types/index.d.ts +9 -9
- package/dist/types/tree/async.d.ts +1 -2
- package/dist/types/tree/deserialize.d.ts +1 -2
- package/dist/types/tree/primitives.d.ts +4 -3
- package/dist/types/tree/reference.d.ts +6 -0
- package/dist/types/tree/sync.d.ts +1 -2
- package/dist/types/tree/types.d.ts +25 -7
- package/dist/types/tree/web-api.d.ts +4 -0
- package/dist/types/types.d.ts +2 -1
- package/package.json +3 -3
- package/src/compat.ts +2 -1
- package/src/context.ts +37 -48
- package/src/index.ts +10 -16
- package/src/tree/async.ts +99 -74
- package/src/tree/deserialize.ts +32 -21
- package/src/tree/primitives.ts +46 -24
- package/src/tree/reference.ts +61 -0
- package/src/tree/serialize.ts +93 -86
- package/src/tree/sync.ts +104 -66
- package/src/tree/types.ts +32 -8
- package/src/tree/web-api.ts +42 -0
- package/src/types.ts +6 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
2
|
-
`:
|
|
3
|
-
`).replace(/\\r/g,"\r").replace(/\\u2028/g,"\u2028").replace(/\\u2029/g,"\u2029")}var Ee={[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"},C={[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},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};var B={t:2,i:void 0,s:!0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0},T={t:2,i:void 0,s:!1,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n: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,n:void 0},U={t:3,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0},M={t:5,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0},D={t:6,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n: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,n:void 0},L={t:8,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0};function x(e){return{t:0,i:void 0,s:e,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0}}function F(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,n:void 0}}function K(e,r){return S(e.features&8,'Unsupported type "BigInt"'),{t:9,i:void 0,s:r.toString(),l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0}}function W(e){return{t:10,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0}}function Y(e,r){return{t:11,i:e,s:r.toISOString(),l:void 0,c:void 0,m:void 0,d:void 0,n:void 0,a:void 0}}function Z(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,n:void 0}}function G(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].toString();return{t:22,i:r,s:o,l:n.byteOffset,c:t,m:void 0,d:void 0,a:void 0,n:void 0}}var Re=4104;function H(e,r,n){let t=n.constructor.name;S((e.features&Re)===Re,`Unsupported value type "${t}"`);let a=n.length,o=new Array(a);for(let i=0;i<a;i++)o[i]=n[i].toString();return{t:23,i:r,s:o,l:n.byteOffset,c:t,m:void 0,d:void 0,a:void 0,n:void 0}}function J(e){return{t:24,i:void 0,s:C[e],l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0}}function P(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 ke(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 V(e,r){let n,t=P(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 $(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 Oe(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 oe(e){let r=e[0];return(r==="$"||r==="_"||r>="A"&&r<="Z"||r>="a"&&r<="z")&&xe.test(e)}async function se(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 se(e,n),n: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,n: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,n:void 0}}async function Q(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=$(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 Q(e,t):void 0,a:await se(e,a),n:void 0}}async function q(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,n:await p(e,t)}))}async function Ce(e,r,n,t){return Symbol.iterator in n?we(e,r,n):"then"in n&&typeof n.then=="function"?q(e,r,n):{t:t?17:16,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:await Q(e,n),a:void 0,n:void 0}}async function Ve(e,r,n){let t=V(e,n),a=t?await Q(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 se(e,n.errors),n:void 0}}async function ie(e,r,n){let t=V(e,n),a=t?await Q(e,t):void 0;return{t:19,i:r,s:void 0,l:void 0,c:P(n),m:n.message,d:a,a:void 0,n:void 0}}async function p(e,r){switch(typeof r){case"boolean":return r?B:T;case"undefined":return j;case"string":return F(r);case"number":return r!==r?L:Object.is(r,-0)?M:Object.is(r,1/0)?D:Object.is(r,-1/0)?_:x(r);case"bigint":return K(e,r);case"object":{if(!r)return U;let n=O(e,r,!0);if(e.markedRefs.has(n))return W(n);if(Array.isArray(r))return Fe(e,n,r);switch(r.constructor){case Date:return Y(n,r);case RegExp:return Z(n,r);case Promise:return q(e,n,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return G(e,n,r);case BigInt64Array:case BigUint64Array:return H(e,n,r);case Map:return Ke(e,n,r);case Set:return We(e,n,r);case Object:return Ce(e,n,r,!1);case void 0:return Ce(e,n,r,!0);case AggregateError:return e.features&1?Ve(e,n,r):ie(e,n,r);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return ie(e,n,r);default:break}if(r instanceof AggregateError&&e.features&1)return Ve(e,n,r);if(r instanceof Error)return ie(e,n,r);if(r instanceof Promise)return q(e,n,r);if(Symbol.iterator in r)return we(e,n,r);if("then"in r&&typeof r.then=="function")return q(e,n,r);throw new Error("Unsupported type")}case"symbol":return S(e.features&1024,'Unsupported type "symbol"'),S(r in C,"seroval only supports well-known symbols"),J(r);default:throw new Error("Unsupported type")}}async function X(e,r){let n=await p(e,r),t=n.t===16||n.t===21;return[n,O(e,r,!1),t]}function v(e,r,n){return e.valueMap.set(r,n),n}function le(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),le(e,r,n),e.stack.pop(),n}function de(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),de(e,r.d,n),e.stack.pop(),n}function Ge(e,r){let n=v(e,r.i,{});return e.stack.push(r.i),de(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 ue(e,r,n){if(r.d){e.stack.push(r.i);let t=de(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=le(e,r,new Array(r.l)),e.stack.pop(),ue(e,r,n)}function qe(e,r){let n=ke(r.c),t=v(e,r.i,new n(r.m));return ue(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.n)),t}function er(e,r){let n=Oe(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=[];le(e,r,n);let t=v(e,r.i,{[Symbol.iterator]:()=>n.values()});return ue(e,r,t)}function E(e,r){switch(r.t){case 0:case 2:return r.s;case 1:return Ae(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 Ie[r.s];default:throw new Error("Unsupported type")}}function ee(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++)a=e[o],a.t===t.t?a.t==="index"&&a.v===t.v?n={t:"index",s:a.s,k:void 0,v:ee(n)}:a.t==="map"&&a.s===t.s?n={t:"map",s:ee(n),k:a.k,v:a.v}:a.t==="set"&&a.s===t.s?n={t:"set",s:ee(n),k:void 0,v:a.v}:(r.push(n),n=a):(r.push(n),n=a),t=a;return r.push(n),r}function ze(e){if(e.length){let r="",n=nr(e);for(let t=0,a=n.length;t<a;t++)r+=ee(n[t])+",";return r}}function Pe(e){return ze(e.assignments)}function he(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 fe(e,r,n,t){R(e,r),e.assignments.push({t:"map",s:m(e,r),k:n,v:t})}function ce(e,r,n,t){R(e,r),he(e,m(e,r)+"["+n.toString()+"]",t)}function Be(e,r,n,t){R(e,r),he(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 Se(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)?(ce(e,r.i,i,m(e,a.i)),o=!0):(t+=y(e,a),o=!1):o=!0;return o&&(t+=","),"["+t+"]"}function ar(e,r){e.stack.push(r.i);let n=Se(e,r);return e.stack.pop(),b(e,r.i,n)}function Te(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||oe(a),k(e,o)?(s=m(e,o.i),d&&Number.isNaN(i)?Be(e,r,a,s):ce(e,r,d?a:'"'+A(a)+'"',s)):(u&&(t+=","),t+=d?a:'"'+A(a)+'"',t+=":"+y(e,o),u=!0);return e.stack.pop(),"{"+t+"}"}function or(e,r,n,t){let a=Te(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||oe(i),u&&Number.isNaN(d)?Be(e,r,i,o):ce(e,r,u?i:'"'+A(i)+'"',o),e.assignments=s;return e.stack.pop(),ze(t)}function re(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){let o=m(e,r);return"("+b(e,r,t)+","+a+o+")"}}return b(e,r,t)}function sr(e,r){return re(e,r.i,r.d,"Object.create(null)")}function lr(e,r){return b(e,r.i,Te(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)):(i&&(a+=","),a+=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),fe(e,r.i,i,d)):(s=e.stack,e.stack=[],fe(e,r.i,i,y(e,o)),e.stack=s)):k(e,o)?(d=m(e,o.i),s=e.stack,e.stack=[],fe(e,r.i,y(e,a),d),e.stack=s):(u&&(t+=","),t+="["+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("+Se(e,r)+',"'+A(r.m)+'")';return e.stack.pop(),re(e,r.i,r.d,n)}function cr(e,r){let n="new "+r.c+'("'+A(r.m)+'")';return re(e,r.i,r.d,n)}function Sr(e,r){let n;if(k(e,r.n)){let t=m(e,r.n.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.n);e.stack.pop(),n="Promise.resolve("+t+")"}return b(e,r.i,n)}function mr(e,r){let n="";for(let a=0,o=r.s.length;a<o;a++)a!==0&&(n+=","),n+=r.s[a],r.t===23&&(n+="n");let t="["+n+"]";return r.l!==0&&(t+=","+r.l.toString()),b(e,r.i,"new "+r.c+"("+t+")")}function yr(e,r){let n=e.stack;e.stack=[];let t=Se(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+"}}",re(e,r.i,r.d,a)}function y(e,r){switch(r.t){case 0:return String(r.s);case 1:return'"'+r.s+'"';case 2:return r.s?"!0":"!1";case 4:return"undefined";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 Ee[r.s];default:throw new Error("Unsupported type")}}function ye(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:ye(e,n),n: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,n: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,n:void 0}}function ne(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 Me(e,r,n){S(e.features&1024,'Unsupported type "Iterable"');let t=$(n),a=Array.from(n);return{t:21,i:r,s:void 0,l:a.length,c:void 0,m:void 0,d:t?ne(e,t):void 0,a:ye(e,a),n:void 0}}function je(e,r,n,t){return Symbol.iterator in n?Me(e,r,n):{t:t?17:16,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:ne(e,n),a:void 0,n:void 0}}function Ue(e,r,n){let t=V(e,n),a=t?ne(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:ye(e,n.errors),n:void 0}}function me(e,r,n){let t=V(e,n),a=t?ne(e,t):void 0;return{t:19,i:r,s:void 0,l:void 0,c:P(n),m:n.message,d:a,a:void 0,n:void 0}}function g(e,r){switch(typeof r){case"boolean":return r?B:T;case"undefined":return j;case"string":return F(r);case"number":return r!==r?L:Object.is(r,-0)?M:Object.is(r,1/0)?D:Object.is(r,-1/0)?_:x(r);case"bigint":return K(e,r);case"object":{if(!r)return U;let n=O(e,r,!0);if(e.markedRefs.has(n))return W(n);if(Array.isArray(r))return Nr(e,n,r);switch(r.constructor){case Date:return Y(n,r);case RegExp:return Z(n,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return G(e,n,r);case BigInt64Array:case BigUint64Array:return H(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?Ue(e,n,r):me(e,n,r);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return me(e,n,r);default:break}if(r instanceof AggregateError&&e.features&1)return Ue(e,n,r);if(r instanceof Error)return me(e,n,r);if(Symbol.iterator in r)return Me(e,n,r);throw new Error("Unsupported type")}case"symbol":return S(e.features&1024,'Unsupported type "symbol"'),S(r in C,"seroval only supports well-known symbols"),J(r);default:throw new Error("Unsupported type")}}function te(e,r){let n=g(e,r),t=n.t===16||n.t===21;return[n,O(e,r,!1),t]}function Ne(e,r,n,t){if(e.vars.length){let a=Pe(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=w(r),[t,a,o]=te(n,e),i=z(n),d=y(i,t);return Ne(i,a,o,d)}async function jt(e,r){let n=w(r),[t,a,o]=await X(n,e),i=z(n),d=y(i,t);return Ne(i,a,o,d)}function Ut(e){return(0,eval)(e)}function Mt(e,r){let n=w(r),[t,a,o]=te(n,e);return{t,r:a,i:o,f:n.features,m:Array.from(n.markedRefs)}}async function Dt(e,r){let n=w(r),[t,a,o]=await X(n,e);return{t,r:a,i:o,f:n.features,m:Array.from(n.markedRefs)}}function _t(e){let r=z({features:e.f,markedRefs:e.m}),n=y(r,e.t);return Ne(r,e.r,e.i,n)}function Lt(e){let r=z({features:e.f,markedRefs:e.m});return E(r,e.t)}var xt=gr;export{I as Feature,_t as compileJSON,xt as default,Ut as deserialize,Lt as fromJSON,gr as serialize,jt 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};
|
package/dist/types/compat.d.ts
CHANGED
package/dist/types/context.d.ts
CHANGED
|
@@ -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,
|
|
33
|
+
valueMap: Map<number, unknown>;
|
|
35
34
|
}
|
|
36
35
|
export interface Options {
|
|
37
36
|
disabledFeatures: number;
|
|
@@ -51,8 +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
|
-
|
|
55
|
-
|
|
56
|
-
*/
|
|
57
|
-
export declare function createRef(ctx: ParserContext, current: unknown, mark: boolean): number;
|
|
53
|
+
export declare function getRootID<T>(ctx: ParserContext, current: T): number;
|
|
54
|
+
export declare function createIndexedValue<T>(ctx: ParserContext, current: T): number;
|
|
58
55
|
export {};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { Feature } from './compat';
|
|
2
1
|
import { Options } from './context';
|
|
3
2
|
import { SerovalNode } from './tree/types';
|
|
4
|
-
|
|
5
|
-
export {
|
|
6
|
-
export declare function serialize<T
|
|
7
|
-
export declare function serializeAsync<T
|
|
8
|
-
export declare function deserialize<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
|
|
17
|
-
export declare function toJSONAsync<T
|
|
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
|
|
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:
|
|
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):
|
|
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,
|
|
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
|
|
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:
|
|
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
|
-
|
|
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;
|
|
@@ -35,7 +38,7 @@ export interface SerovalBaseNode {
|
|
|
35
38
|
m: string | undefined;
|
|
36
39
|
d: SerovalDictionaryNode | undefined;
|
|
37
40
|
a: SerovalNode[] | undefined;
|
|
38
|
-
|
|
41
|
+
f: SerovalNode | undefined;
|
|
39
42
|
}
|
|
40
43
|
export interface SerovalObjectRecordNode {
|
|
41
44
|
k: string[];
|
|
@@ -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
|
|
83
|
-
t: SerovalNodeType.
|
|
85
|
+
export interface SerovalIndexedValueNode extends SerovalBaseNode {
|
|
86
|
+
t: SerovalNodeType.IndexedValue;
|
|
84
87
|
i: number;
|
|
85
88
|
}
|
|
86
89
|
export interface SerovalBigIntNode extends SerovalBaseNode {
|
|
@@ -142,7 +145,7 @@ export interface SerovalNullConstructorNode extends SerovalBaseNode {
|
|
|
142
145
|
}
|
|
143
146
|
export interface SerovalPromiseNode extends SerovalBaseNode {
|
|
144
147
|
t: SerovalNodeType.Promise;
|
|
145
|
-
|
|
148
|
+
f: SerovalNode;
|
|
146
149
|
i: number;
|
|
147
150
|
}
|
|
148
151
|
export interface SerovalErrorNode extends SerovalBaseNode {
|
|
@@ -171,4 +174,19 @@ export interface SerovalWKSymbolNode extends SerovalBaseNode {
|
|
|
171
174
|
t: SerovalNodeType.WKSymbol;
|
|
172
175
|
s: Symbols;
|
|
173
176
|
}
|
|
174
|
-
export
|
|
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;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -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
|
|
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.
|
|
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.
|
|
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": "
|
|
67
|
+
"gitHead": "1d6e69079251612c6fc486e8517e225690363442"
|
|
68
68
|
}
|
package/src/compat.ts
CHANGED
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,
|
|
51
|
+
valueMap: Map<number, unknown>;
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
export interface Options {
|
|
@@ -94,61 +93,51 @@ export function createSerializationContext(options: SerializationOptions): Seria
|
|
|
94
93
|
export function markRef(ctx: ParserContext | SerializationContext, current: number) {
|
|
95
94
|
ctx.markedRefs.add(current);
|
|
96
95
|
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Creates a new reference ID from a given reference ID
|
|
100
|
-
* This new reference ID means that the reference itself
|
|
101
|
-
* has been referenced at least once, and is used to generate
|
|
102
|
-
* the variables
|
|
103
|
-
*/
|
|
104
|
-
function createValidRef(
|
|
105
|
-
ctx: SerializationContext,
|
|
106
|
-
index: number,
|
|
107
|
-
) {
|
|
108
|
-
const current = ctx.validRefs[index];
|
|
109
|
-
if (current == null) {
|
|
110
|
-
const value = ctx.refSize++;
|
|
111
|
-
ctx.validRefs[index] = value;
|
|
112
|
-
return value;
|
|
113
|
-
}
|
|
114
|
-
return current;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
96
|
/**
|
|
118
97
|
* Creates the reference param (identifier) from the given reference ID
|
|
119
98
|
* Calling this function means the value has been referenced somewhere
|
|
120
99
|
*/
|
|
121
100
|
export function getRefParam(ctx: SerializationContext, index: number) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
101
|
+
/**
|
|
102
|
+
* Creates a new reference ID from a given reference ID
|
|
103
|
+
* This new reference ID means that the reference itself
|
|
104
|
+
* has been referenced at least once, and is used to generate
|
|
105
|
+
* the variables
|
|
106
|
+
*/
|
|
107
|
+
let actualIndex = ctx.validRefs[index];
|
|
108
|
+
if (actualIndex == null) {
|
|
109
|
+
actualIndex = ctx.refSize++;
|
|
110
|
+
ctx.validRefs[index] = actualIndex;
|
|
125
111
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
112
|
+
let identifier = ctx.vars[actualIndex];
|
|
113
|
+
if (identifier == null) {
|
|
114
|
+
identifier = getIdentifier(actualIndex);
|
|
115
|
+
ctx.vars[actualIndex] = identifier;
|
|
116
|
+
}
|
|
117
|
+
return identifier;
|
|
129
118
|
}
|
|
130
119
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
120
|
+
export function getRootID<T>(
|
|
121
|
+
ctx: ParserContext,
|
|
122
|
+
current: T,
|
|
123
|
+
) {
|
|
124
|
+
const ref = ctx.refs.get(current);
|
|
125
|
+
if (ref == null) {
|
|
126
|
+
return ctx.refs.size;
|
|
127
|
+
}
|
|
128
|
+
return ref;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function createIndexedValue<T>(
|
|
135
132
|
ctx: ParserContext,
|
|
136
|
-
current:
|
|
137
|
-
|
|
138
|
-
): number {
|
|
139
|
-
// Check if reference number already exists
|
|
133
|
+
current: T,
|
|
134
|
+
) {
|
|
140
135
|
const ref = ctx.refs.get(current);
|
|
141
|
-
if (ref
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (mark) {
|
|
146
|
-
markRef(ctx, ref);
|
|
147
|
-
}
|
|
148
|
-
return ref;
|
|
136
|
+
if (ref == null) {
|
|
137
|
+
const id = ctx.refs.size;
|
|
138
|
+
ctx.refs.set(current, id);
|
|
139
|
+
return id;
|
|
149
140
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
ctx.refs.set(current, id);
|
|
153
|
-
return id;
|
|
141
|
+
markRef(ctx, ref);
|
|
142
|
+
return ref;
|
|
154
143
|
}
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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';
|