seroval 0.5.1 → 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.
- package/README.md +51 -1
- package/dist/cjs/development/index.cjs +762 -228
- package/dist/cjs/development/index.cjs.map +4 -4
- package/dist/cjs/production/index.cjs +3 -3
- package/dist/esm/development/index.mjs +762 -228
- 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 +14 -9
- package/dist/types/index.d.ts +9 -9
- package/dist/types/string.d.ts +3 -0
- 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 +7 -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 +73 -12
- package/dist/types/tree/web-api.d.ts +6 -0
- package/dist/types/types.d.ts +2 -1
- package/package.json +4 -3
- package/src/compat.ts +2 -1
- package/src/context.ts +19 -12
- package/src/index.ts +10 -16
- package/src/{quote.ts → string.ts} +27 -30
- package/src/tree/async.ts +164 -62
- package/src/tree/deserialize.ts +195 -67
- package/src/tree/primitives.ts +108 -22
- package/src/tree/reference.ts +61 -0
- package/src/tree/serialize.ts +236 -59
- package/src/tree/sync.ts +160 -55
- package/src/tree/types.ts +139 -14
- package/src/tree/web-api.ts +92 -0
- package/src/types.ts +6 -1
- package/dist/types/quote.d.ts +0 -2
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
2
|
-
`:
|
|
3
|
-
`).replace(/\\r/g,"\r").replace(/\\u2028/g,"\u2028").replace(/\\u2029/g,"\u2029")}var Ie={[0]:"Symbol.asyncIterator",[1]:"Symbol.hasInstance",[2]:"Symbol.isConcatSpreadable",[3]:"Symbol.iterator",[4]:"Symbol.match",[5]:"Symbol.matchAll",[6]:"Symbol.replace",[7]:"Symbol.search",[8]:"Symbol.species",[9]:"Symbol.split",[10]:"Symbol.toPrimitive",[11]:"Symbol.toStringTag",[12]:"Symbol.unscopables"},O={[Symbol.asyncIterator]:0,[Symbol.hasInstance]:1,[Symbol.isConcatSpreadable]:2,[Symbol.iterator]:3,[Symbol.match]:4,[Symbol.matchAll]:5,[Symbol.replace]:6,[Symbol.search]:7,[Symbol.species]:8,[Symbol.split]:9,[Symbol.toPrimitive]:10,[Symbol.toStringTag]:11,[Symbol.unscopables]:12},Re={[0]:Symbol.asyncIterator,[1]:Symbol.hasInstance,[2]:Symbol.isConcatSpreadable,[3]:Symbol.iterator,[4]:Symbol.match,[5]:Symbol.matchAll,[6]:Symbol.replace,[7]:Symbol.search,[8]:Symbol.species,[9]:Symbol.split,[10]:Symbol.toPrimitive,[11]:Symbol.toStringTag,[12]:Symbol.unscopables};var T={t:2,i:void 0,s:!0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},U={t:2,i:void 0,s:!1,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},j={t:4,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},M={t:3,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},D={t:5,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},_={t:6,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},L={t:7,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0},x={t:8,i:void 0,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0};function F(e){return{t:0,i:void 0,s:e,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function K(e){return{t:1,i:void 0,s:A(e),l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function W(e,r){return S(e.features&8,'Unsupported type "BigInt"'),{t:9,i:void 0,s:""+r,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function Y(e){return{t:10,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function Z(e,r){return{t:11,i:e,s:r.toISOString(),l:void 0,c:void 0,m:void 0,d:void 0,f:void 0,a:void 0}}function G(e,r){return{t:12,i:e,s:void 0,l:void 0,c:r.source,m:r.flags,d:void 0,a:void 0,f:void 0}}function H(e,r,n){let t=n.constructor.name;S(e.features&2048,`Unsupported value type "${t}"`);let a=n.length,o=new Array(a);for(let i=0;i<a;i++)o[i]=""+n[i];return{t:22,i:r,s:o,l:n.byteOffset,c:t,m:void 0,d:void 0,a:void 0,f:void 0}}var ke=4104;function J(e,r,n){let t=n.constructor.name;S((e.features&ke)===ke,`Unsupported value type "${t}"`);let a=n.length,o=new Array(a);for(let i=0;i<a;i++)o[i]=""+n[i];return{t:23,i:r,s:o,l:n.byteOffset,c:t,m:void 0,d:void 0,a:void 0,f:void 0}}function $(e){return{t:24,i:void 0,s:O[e],l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:void 0}}function w(e){return e instanceof EvalError?"EvalError":e instanceof RangeError?"RangeError":e instanceof ReferenceError?"ReferenceError":e instanceof SyntaxError?"SyntaxError":e instanceof TypeError?"TypeError":e instanceof URIError?"URIError":"Error"}function Oe(e){switch(e){case"Error":return Error;case"EvalError":return EvalError;case"RangeError":return RangeError;case"ReferenceError":return ReferenceError;case"SyntaxError":return SyntaxError;case"TypeError":return TypeError;case"URIError":return URIError;default:throw new Error(`Unknown Error constructor "${e}"`)}}function C(e,r){let n,t=w(r);r.name!==t?n={name:r.name}:r.constructor.name!==t&&(n={name:r.constructor.name});let a=Object.getOwnPropertyNames(r);for(let o of a)o!=="name"&&o!=="message"&&(o==="stack"?e.features&16&&(n=n||{},n[o]=r[o]):(n=n||{},n[o]=r[o]));return n}function q(e){let r=Object.getOwnPropertyNames(e);if(r.length){let n={};for(let t of r)n[t]=e[t];return n}}function N(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;switch(e.constructor){case Map:case Set:case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:case BigInt64Array:case BigUint64Array:return!1;default:break}return Symbol.iterator in e}function Ce(e){switch(e){case"Int8Array":return Int8Array;case"Int16Array":return Int16Array;case"Int32Array":return Int32Array;case"Uint8Array":return Uint8Array;case"Uint16Array":return Uint16Array;case"Uint32Array":return Uint32Array;case"Uint8ClampedArray":return Uint8ClampedArray;case"Float32Array":return Float32Array;case"Float64Array":return Float64Array;case"BigInt64Array":return BigInt64Array;case"BigUint64Array":return BigUint64Array;default:throw new Error(`Unknown TypedArray "${e}"`)}}var xe=/^[$A-Z_][0-9A-Z_$]*$/i;function le(e){let r=e[0];return(r==="$"||r==="_"||r>="A"&&r<="Z"||r>="a"&&r<="z")&&xe.test(e)}async function de(e,r){let n=r.length,t=new Array(n),a=new Array(n),o;for(let i=0;i<n;i++)i in r&&(o=r[i],N(o)?a[i]=o:t[i]=await p(e,o));for(let i=0;i<n;i++)i in a&&(t[i]=await p(e,a[i]));return t}async function Fe(e,r,n){return{t:15,i:r,s:void 0,l:n.length,c:void 0,m:void 0,d:void 0,a:await de(e,n),f:void 0}}async function Ke(e,r,n){S(e.features&32,'Unsupported type "Map"');let t=n.size,a=new Array(t),o=new Array(t),i=new Array(t),d=new Array(t),s=0,u=0;for(let[l,f]of n.entries())N(l)||N(f)?(i[s]=l,d[s]=f,s++):(a[u]=await p(e,l),o[u]=await p(e,f),u++);for(let l=0;l<s;l++)a[u+l]=await p(e,i[l]),o[u+l]=await p(e,d[l]);return{t:14,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:{k:a,v:o,s:t},a:void 0,f:void 0}}async function We(e,r,n){S(e.features&512,'Unsupported type "Set"');let t=n.size,a=new Array(t),o=new Array(t),i=0,d=0;for(let s of n.keys())N(s)?o[i++]=s:a[d++]=await p(e,s);for(let s=0;s<i;s++)a[d+s]=await p(e,o[s]);return{t:13,i:r,s:void 0,l:t,c:void 0,m:void 0,d:void 0,a,f:void 0}}async function ee(e,r){let n=Object.keys(r),t=n.length,a=new Array(t),o=new Array(t),i=new Array(t),d=new Array(t),s=0,u=0,l;for(let f of n)l=r[f],N(l)?(i[s]=f,d[s]=l,s++):(a[u]=f,o[u]=await p(e,l),u++);for(let f=0;f<s;f++)a[u+f]=i[f],o[u+f]=await p(e,d[f]);return{k:a,v:o,s:t}}async function we(e,r,n){S(e.features&1024,'Unsupported type "Iterable"');let t=q(n),a=Array.from(n);return{t:21,i:r,s:void 0,l:a.length,c:void 0,m:void 0,d:t?await ee(e,t):void 0,a:await de(e,a),f:void 0}}async function X(e,r,n){return S(e.features&256,'Unsupported type "Promise"'),n.then(async t=>({t:18,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,f:await p(e,t)}))}async function he(e,r,n,t){return Symbol.iterator in n?we(e,r,n):"then"in n&&typeof n.then=="function"?X(e,r,n):{t:t?17:16,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:await ee(e,n),a:void 0,f:void 0}}async function Ve(e,r,n){let t=C(e,n),a=t?await ee(e,t):void 0;return{t:20,i:r,s:void 0,l:n.errors.length,c:void 0,m:n.message,d:a,a:await de(e,n.errors),f:void 0}}async function Q(e,r,n){let t=C(e,n),a=t?await ee(e,t):void 0;return{t:19,i:r,s:void 0,l:void 0,c:w(n),m:n.message,d:a,a:void 0,f:void 0}}async function p(e,r){switch(typeof r){case"boolean":return r?T:U;case"undefined":return j;case"string":return K(r);case"number":switch(r){case 1/0:return _;case-1/0:return L;default:break}return r!==r?x:Object.is(r,-0)?D:F(r);case"bigint":return W(e,r);case"object":{if(!r)return M;let n=z(e,r);if(e.markedRefs.has(n))return Y(n);if(Array.isArray(r))return Fe(e,n,r);switch(r.constructor){case Date:return Z(n,r);case RegExp:return G(n,r);case Promise:return X(e,n,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return H(e,n,r);case BigInt64Array:case BigUint64Array:return J(e,n,r);case Map:return Ke(e,n,r);case Set:return We(e,n,r);case Object:return he(e,n,r,!1);case void 0:return he(e,n,r,!0);case AggregateError:return e.features&1?Ve(e,n,r):Q(e,n,r);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return Q(e,n,r);default:break}if(r instanceof AggregateError)return e.features&1?Ve(e,n,r):Q(e,n,r);if(r instanceof Error)return Q(e,n,r);if(r instanceof Promise)return X(e,n,r);if(Symbol.iterator in r)return we(e,n,r);if("then"in r&&typeof r.then=="function")return X(e,n,r);throw new Error("Unsupported type")}case"symbol":return S(e.features&1024,'Unsupported type "symbol"'),S(r in O,"seroval only supports well-known symbols"),$(r);default:throw new Error("Unsupported type")}}async function re(e,r){let n=await p(e,r),t=n.t===16||n.t===21;return[n,P(e,r),t]}function v(e,r,n){return e.valueMap.set(r,n),n}function ue(e,r,n){let t;for(let a=0,o=r.a.length;a<o;a++)t=r.a[a],t&&(n[a]=E(e,t));return n}function Ye(e,r){let n=v(e,r.i,new Array(r.l));return e.stack.push(r.i),ue(e,r,n),e.stack.pop(),n}function fe(e,r,n){if(r.s===0)return{};for(let t=0;t<r.s;t++)n[r.k[t]]=E(e,r.v[t]);return n}function Ze(e,r){let n=v(e,r.i,Object.create(null));return e.stack.push(r.i),fe(e,r.d,n),e.stack.pop(),n}function Ge(e,r){let n=v(e,r.i,{});return e.stack.push(r.i),fe(e,r.d,n),e.stack.pop(),n}function He(e,r){let n=v(e,r.i,new Set);e.stack.push(r.i);for(let t=0,a=r.a.length;t<a;t++)n.add(E(e,r.a[t]));return e.stack.pop(),n}function Je(e,r){let n=v(e,r.i,new Map);e.stack.push(r.i);for(let t=0;t<r.d.s;t++)n.set(E(e,r.d.k[t]),E(e,r.d.v[t]));return e.stack.pop(),n}function ce(e,r,n){if(r.d){e.stack.push(r.i);let t=fe(e,r.d,{});e.stack.pop(),Object.assign(n,t)}return n}function $e(e,r){let n=v(e,r.i,new AggregateError([],r.m));return e.stack.push(r.i),n.errors=ue(e,r,new Array(r.l)),e.stack.pop(),ce(e,r,n)}function qe(e,r){let n=Oe(r.c),t=v(e,r.i,new n(r.m));return ce(e,r,t)}function Qe(){let e;return{resolve(r){e(r)},promise:new Promise(r=>{e=r})}}function Xe(e,r){let n=Qe(),t=v(e,r.i,n.promise);return n.resolve(E(e,r.f)),t}function er(e,r){let n=Ce(r.c),t=new n,a=v(e,r.i,new n(t.buffer,r.l));for(let o=0,i=r.s.length;o<i;o++)a[o]=r.t===23?BigInt(r.s[o]):Number(r.s[o]);return a}function rr(e,r){let n=[];ue(e,r,n);let t=v(e,r.i,{[Symbol.iterator]:()=>n.values()});return ce(e,r,t)}function E(e,r){switch(r.t){case 0:case 2:return r.s;case 1:return Ee(r.s);case 4:return;case 3:return null;case 5:return-0;case 6:return 1/0;case 7:return-1/0;case 8:return NaN;case 9:return BigInt(r.s);case 10:return e.valueMap.get(r.i);case 15:return Ye(e,r);case 16:return Ge(e,r);case 17:return Ze(e,r);case 11:return v(e,r.i,new Date(r.s));case 12:return v(e,r.i,new RegExp(r.c,r.m));case 13:return He(e,r);case 14:return Je(e,r);case 23:case 22:return er(e,r);case 20:return $e(e,r);case 19:return qe(e,r);case 21:return rr(e,r);case 18:return Xe(e,r);case 24:return Re[r.s];default:throw new Error("Unsupported type")}}function ne(e){switch(e.t){case"index":return e.s+"="+e.v;case"map":return e.s+".set("+e.k+","+e.v+")";case"set":return e.s+".add("+e.v+")";default:return""}}function nr(e){let r=[],n=e[0],t=n,a;for(let o=1,i=e.length;o<i;o++){if(a=e[o],a.t===t.t)switch(a.t){case"index":a.v===t.v?n={t:"index",s:a.s,k:void 0,v:ne(n)}:(r.push(n),n=a);break;case"map":a.s===t.s?n={t:"map",s:ne(n),k:a.k,v:a.v}:(r.push(n),n=a);break;case"set":a.s===t.s?n={t:"set",s:ne(n),k:void 0,v:a.v}:(r.push(n),n=a);break;default:break}else r.push(n),n=a;t=a}return r.push(n),r}function Pe(e){if(e.length){let r="",n=nr(e);for(let t=0,a=n.length;t<a;t++)r+=ne(n[t])+",";return r}}function ze(e){return Pe(e.assignments)}function Be(e,r,n){e.assignments.push({t:"index",s:r,k:void 0,v:n})}function tr(e,r,n){R(e,r),e.assignments.push({t:"set",s:m(e,r),k:void 0,v:n})}function Se(e,r,n,t){R(e,r),e.assignments.push({t:"map",s:m(e,r),k:n,v:t})}function me(e,r,n,t){R(e,r),Be(e,m(e,r)+"["+n+"]",t)}function Te(e,r,n,t){R(e,r),Be(e,m(e,r)+"."+n,t)}function b(e,r,n){return e.markedRefs.has(r)?m(e,r)+"="+n:n}function k(e,r){return r.t===10&&e.stack.includes(r.i)}function ye(e,r){let n=r.l,t="",a,o=!1;for(let i=0;i<n;i++)i!==0&&(t+=","),a=r.a[i],a?k(e,a)?(me(e,r.i,i,m(e,a.i)),o=!0):(t+=y(e,a),o=!1):o=!0;return"["+t+(o?",]":"]")}function ar(e,r){e.stack.push(r.i);let n=ye(e,r);return e.stack.pop(),b(e,r.i,n)}function Ue(e,r,n){if(n.s===0)return"{}";let t="";e.stack.push(r);let a,o,i,d,s,u=!1;for(let l=0;l<n.s;l++)a=n.k[l],o=n.v[l],i=Number(a),d=i>=0||le(a),k(e,o)?(s=m(e,o.i),d&&Number.isNaN(i)?Te(e,r,a,s):me(e,r,d?a:'"'+A(a)+'"',s)):(t+=(u?",":"")+(d?a:'"'+A(a)+'"')+":"+y(e,o),u=!0);return e.stack.pop(),"{"+t+"}"}function or(e,r,n,t){let a=Ue(e,n,r);return a!=="{}"?"Object.assign("+t+","+a+")":t}function ir(e,r,n){e.stack.push(r);let t=[],a,o,i,d,s,u;for(let l=0;l<n.s;l++)a=e.stack,e.stack=[],o=y(e,n.v[l]),e.stack=a,i=n.k[l],d=Number(i),s=e.assignments,e.assignments=t,u=d>=0||le(i),u&&Number.isNaN(d)?Te(e,r,i,o):me(e,r,u?i:'"'+A(i)+'"',o),e.assignments=s;return e.stack.pop(),Pe(t)}function te(e,r,n,t){if(n)if(e.features&128)t=or(e,n,r,t);else{R(e,r);let a=ir(e,r,n);if(a)return"("+b(e,r,t)+","+a+m(e,r)+")"}return b(e,r,t)}function sr(e,r){return te(e,r.i,r.d,"Object.create(null)")}function lr(e,r){return b(e,r.i,Ue(e,r.i,r.d))}function dr(e,r){let n="new Set",t=r.l;if(t){let a="";e.stack.push(r.i);let o,i=!1;for(let d=0;d<t;d++)o=r.a[d],k(e,o)?tr(e,r.i,m(e,o.i)):(a+=(i?",":"")+y(e,o),i=!0);e.stack.pop(),a&&(n+="(["+a+"])")}return b(e,r.i,n)}function ur(e,r){let n="new Map";if(r.d.s){let t="";e.stack.push(r.i);let a,o,i,d,s,u=!1;for(let l=0;l<r.d.s;l++)a=r.d.k[l],o=r.d.v[l],k(e,a)?(i=m(e,a.i),k(e,o)?(d=m(e,o.i),Se(e,r.i,i,d)):(s=e.stack,e.stack=[],Se(e,r.i,i,y(e,o)),e.stack=s)):k(e,o)?(d=m(e,o.i),s=e.stack,e.stack=[],Se(e,r.i,y(e,a),d),e.stack=s):(t+=(u?",[":"[")+y(e,a)+","+y(e,o)+"]",u=!0);e.stack.pop(),t&&(n+="(["+t+"])")}return b(e,r.i,n)}function fr(e,r){e.stack.push(r.i);let n="new AggregateError("+ye(e,r)+',"'+A(r.m)+'")';return e.stack.pop(),te(e,r.i,r.d,n)}function cr(e,r){let n="new "+r.c+'("'+A(r.m)+'")';return te(e,r.i,r.d,n)}function Sr(e,r){let n;if(k(e,r.f)){let t=m(e,r.f.i);e.features&4?n="Promise.resolve().then(()=>"+t+")":n="Promise.resolve().then(function(){return "+t+"})"}else{e.stack.push(r.i);let t=y(e,r.f);e.stack.pop(),n="Promise.resolve("+t+")"}return b(e,r.i,n)}function mr(e,r){let n="",t=r.t===23;for(let o=0,i=r.s.length;o<i;o++)n+=(o!==0?",":"")+r.s[o]+(t?"n":"");let a="["+n+"]"+(r.l!==0?","+r.l:"");return b(e,r.i,"new "+r.c+"("+a+")")}function yr(e,r){let n=e.stack;e.stack=[];let t=ye(e,r);e.stack=n;let a=t;return e.features&2?a+=".values()":a+="[Symbol.iterator]()",e.features&4?a="{[Symbol.iterator]:()=>"+a+"}":e.features&64?a="{[Symbol.iterator](){return "+a+"}}":a="{[Symbol.iterator]:function(){return "+a+"}}",te(e,r.i,r.d,a)}function y(e,r){switch(r.t){case 0:return""+r.s;case 1:return'"'+r.s+'"';case 2:return r.s?"!0":"!1";case 4:return"void 0";case 3:return"null";case 5:return"-0";case 6:return"1/0";case 7:return"-1/0";case 8:return"NaN";case 9:return r.s+"n";case 10:return m(e,r.i);case 15:return ar(e,r);case 16:return lr(e,r);case 17:return sr(e,r);case 11:return b(e,r.i,'new Date("'+r.s+'")');case 12:return b(e,r.i,"/"+r.c+"/"+r.m);case 13:return dr(e,r);case 14:return ur(e,r);case 23:case 22:return mr(e,r);case 20:return fr(e,r);case 19:return cr(e,r);case 21:return yr(e,r);case 18:return Sr(e,r);case 24:return Ie[r.s];default:throw new Error("Unsupported type")}}function Ne(e,r){let n=r.length,t=new Array(n),a=new Array(n),o;for(let i=0;i<n;i++)i in r&&(o=r[i],N(o)?a[i]=o:t[i]=g(e,o));for(let i=0;i<n;i++)i in a&&(t[i]=g(e,a[i]));return t}function Nr(e,r,n){return{t:15,i:r,s:void 0,l:n.length,c:void 0,m:void 0,d:void 0,a:Ne(e,n),f:void 0}}function pr(e,r,n){S(e.features&32,'Unsupported type "Map"');let t=n.size,a=new Array(t),o=new Array(t),i=new Array(t),d=new Array(t),s=0,u=0;for(let[l,f]of n.entries())N(l)||N(f)?(i[s]=l,d[s]=f,s++):(a[u]=g(e,l),o[u]=g(e,f),u++);for(let l=0;l<s;l++)a[u+l]=g(e,i[l]),o[u+l]=g(e,d[l]);return{t:14,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:{k:a,v:o,s:t},a:void 0,f:void 0}}function vr(e,r,n){S(e.features&512,'Unsupported type "Set"');let t=n.size,a=new Array(t),o=new Array(t),i=0,d=0;for(let s of n.keys())N(s)?o[i++]=s:a[d++]=g(e,s);for(let s=0;s<i;s++)a[d+s]=g(e,o[s]);return{t:13,i:r,s:void 0,l:t,c:void 0,m:void 0,d:void 0,a,f:void 0}}function oe(e,r){let n=Object.keys(r),t=n.length,a=new Array(t),o=new Array(t),i=new Array(t),d=new Array(t),s=0,u=0,l;for(let f of n)l=r[f],N(l)?(i[s]=f,d[s]=l,s++):(a[u]=f,o[u]=g(e,l),u++);for(let f=0;f<s;f++)a[u+f]=i[f],o[u+f]=g(e,d[f]);return{k:a,v:o,s:t}}function De(e,r,n){S(e.features&1024,'Unsupported type "Iterable"');let t=q(n),a=Array.from(n);return{t:21,i:r,s:void 0,l:a.length,c:void 0,m:void 0,d:t?oe(e,t):void 0,a:Ne(e,a),f:void 0}}function je(e,r,n,t){return Symbol.iterator in n?De(e,r,n):{t:t?17:16,i:r,s:void 0,l:void 0,c:void 0,m:void 0,d:oe(e,n),a:void 0,f:void 0}}function Me(e,r,n){let t=C(e,n),a=t?oe(e,t):void 0;return{t:20,i:r,s:void 0,l:n.errors.length,c:void 0,m:n.message,d:a,a:Ne(e,n.errors),f:void 0}}function ae(e,r,n){let t=C(e,n),a=t?oe(e,t):void 0;return{t:19,i:r,s:void 0,l:void 0,c:w(n),m:n.message,d:a,a:void 0,f:void 0}}function g(e,r){switch(typeof r){case"boolean":return r?T:U;case"undefined":return j;case"string":return K(r);case"number":switch(r){case 1/0:return _;case-1/0:return L;default:break}return r!==r?x:Object.is(r,-0)?D:F(r);case"bigint":return W(e,r);case"object":{if(!r)return M;let n=z(e,r);if(e.markedRefs.has(n))return Y(n);if(Array.isArray(r))return Nr(e,n,r);switch(r.constructor){case Date:return Z(n,r);case RegExp:return G(n,r);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return H(e,n,r);case BigInt64Array:case BigUint64Array:return J(e,n,r);case Map:return pr(e,n,r);case Set:return vr(e,n,r);case Object:return je(e,n,r,!1);case void 0:return je(e,n,r,!0);case AggregateError:return e.features&1?Me(e,n,r):ae(e,n,r);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return ae(e,n,r);default:break}if(r instanceof AggregateError)return e.features&1?Me(e,n,r):ae(e,n,r);if(r instanceof Error)return ae(e,n,r);if(Symbol.iterator in r)return De(e,n,r);throw new Error("Unsupported type")}case"symbol":return S(e.features&1024,'Unsupported type "symbol"'),S(r in O,"seroval only supports well-known symbols"),$(r);default:throw new Error("Unsupported type")}}function ie(e,r){let n=g(e,r),t=n.t===16||n.t===21;return[n,P(e,r),t]}function pe(e,r,n,t){if(e.vars.length){let a=ze(e),o=t;if(a){let d=m(e,r);o=t+","+a+d,t.startsWith(d+"=")||(o=d+"="+o)}let i=e.vars.length>1?e.vars.join(","):e.vars[0];return e.features&4?(i=e.vars.length>1||e.vars.length===0?"("+i+")":i,"("+i+"=>("+o+"))()"):"(function("+i+"){return "+o+"})()"}return n?"("+t+")":t}function gr(e,r){let n=h(r),[t,a,o]=ie(n,e),i=V(n),d=y(i,t);return pe(i,a,o,d)}async function Ut(e,r){let n=h(r),[t,a,o]=await re(n,e),i=V(n),d=y(i,t);return pe(i,a,o,d)}function jt(e){return(0,eval)(e)}function Mt(e,r){let n=h(r),[t,a,o]=ie(n,e);return{t,r:a,i:o,f:n.features,m:Array.from(n.markedRefs)}}async function Dt(e,r){let n=h(r),[t,a,o]=await re(n,e);return{t,r:a,i:o,f:n.features,m:Array.from(n.markedRefs)}}function _t(e){let r=V({features:e.f,markedRefs:e.m}),n=y(r,e.t);return pe(r,e.r,e.i,n)}function Lt(e){let r=V({features:e.f,markedRefs:e.m});return E(r,e.t)}var xt=gr;export{I as Feature,_t as compileJSON,xt as default,jt as deserialize,Lt as fromJSON,gr as serialize,Ut as serializeAsync,Mt as toJSON,Dt as toJSONAsync};
|
|
1
|
+
var 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};
|
package/dist/types/compat.d.ts
CHANGED
package/dist/types/context.d.ts
CHANGED
|
@@ -1,23 +1,28 @@
|
|
|
1
|
-
import { AsyncServerValue } from './types';
|
|
2
1
|
interface IndexAssignment {
|
|
3
2
|
t: 'index';
|
|
4
3
|
s: string;
|
|
5
4
|
k: undefined;
|
|
6
5
|
v: string;
|
|
7
6
|
}
|
|
8
|
-
interface
|
|
9
|
-
t: '
|
|
7
|
+
interface SetAssignment {
|
|
8
|
+
t: 'set';
|
|
10
9
|
s: string;
|
|
11
10
|
k: string;
|
|
12
11
|
v: string;
|
|
13
12
|
}
|
|
14
|
-
interface
|
|
15
|
-
t: '
|
|
13
|
+
interface AddAssignment {
|
|
14
|
+
t: 'add';
|
|
16
15
|
s: string;
|
|
17
16
|
k: undefined;
|
|
18
17
|
v: string;
|
|
19
18
|
}
|
|
20
|
-
|
|
19
|
+
interface AppendAssignment {
|
|
20
|
+
t: 'append';
|
|
21
|
+
s: string;
|
|
22
|
+
k: string;
|
|
23
|
+
v: string;
|
|
24
|
+
}
|
|
25
|
+
export type Assignment = IndexAssignment | AddAssignment | SetAssignment | AppendAssignment;
|
|
21
26
|
export interface ParserContext {
|
|
22
27
|
refs: Map<unknown, number>;
|
|
23
28
|
markedRefs: Set<number>;
|
|
@@ -31,7 +36,7 @@ export interface SerializationContext {
|
|
|
31
36
|
vars: string[];
|
|
32
37
|
assignments: Assignment[];
|
|
33
38
|
features: number;
|
|
34
|
-
valueMap: Map<number,
|
|
39
|
+
valueMap: Map<number, unknown>;
|
|
35
40
|
}
|
|
36
41
|
export interface Options {
|
|
37
42
|
disabledFeatures: number;
|
|
@@ -51,6 +56,6 @@ export declare function markRef(ctx: ParserContext | SerializationContext, curre
|
|
|
51
56
|
* Calling this function means the value has been referenced somewhere
|
|
52
57
|
*/
|
|
53
58
|
export declare function getRefParam(ctx: SerializationContext, index: number): string;
|
|
54
|
-
export declare function getRootID(ctx: ParserContext, current:
|
|
55
|
-
export declare function
|
|
59
|
+
export declare function getRootID<T>(ctx: ParserContext, current: T): number;
|
|
60
|
+
export declare function createIndexedValue<T>(ctx: ParserContext, current: T): number;
|
|
56
61
|
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';
|
|
@@ -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,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, 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;
|
|
@@ -13,9 +13,13 @@ 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
|
+
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
|
-
export declare function createWKSymbolNode(current: WellKnownSymbols): SerovalWKSymbolNode;
|
|
23
|
+
export declare function createWKSymbolNode(ctx: ParserContext, current: WellKnownSymbols): SerovalWKSymbolNode;
|
|
24
|
+
export declare function createReferenceNode<T>(id: number, ref: T): SerovalReferenceNode;
|
|
25
|
+
export declare function createDataViewNode(ctx: ParserContext, id: number, current: DataView): SerovalDataViewNode;
|
|
@@ -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,16 @@ 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,
|
|
31
|
+
ArrayBuffer = 28,
|
|
32
|
+
DataView = 29,
|
|
33
|
+
Blob = 30,
|
|
34
|
+
File = 31,
|
|
35
|
+
Headers = 32,
|
|
36
|
+
FormData = 33
|
|
28
37
|
}
|
|
29
38
|
export interface SerovalBaseNode {
|
|
30
39
|
t: SerovalNodeType;
|
|
@@ -36,6 +45,7 @@ export interface SerovalBaseNode {
|
|
|
36
45
|
d: SerovalDictionaryNode | undefined;
|
|
37
46
|
a: SerovalNode[] | undefined;
|
|
38
47
|
f: SerovalNode | undefined;
|
|
48
|
+
b: number | undefined;
|
|
39
49
|
}
|
|
40
50
|
export interface SerovalObjectRecordNode {
|
|
41
51
|
k: string[];
|
|
@@ -79,8 +89,8 @@ export interface SerovalNaNNode extends SerovalBaseNode {
|
|
|
79
89
|
t: SerovalNodeType.NaN;
|
|
80
90
|
}
|
|
81
91
|
export type SerovalPrimitiveNode = SerovalNumberNode | SerovalStringNode | SerovalBooleanNode | SerovalNullNode | SerovalUndefinedNode | SerovalNegativeZeroNode | SerovalNegativeInfinityNode | SerovalInfinityNode | SerovalNaNNode;
|
|
82
|
-
export interface
|
|
83
|
-
t: SerovalNodeType.
|
|
92
|
+
export interface SerovalIndexedValueNode extends SerovalBaseNode {
|
|
93
|
+
t: SerovalNodeType.IndexedValue;
|
|
84
94
|
i: number;
|
|
85
95
|
}
|
|
86
96
|
export interface SerovalBigIntNode extends SerovalBaseNode {
|
|
@@ -98,31 +108,38 @@ export interface SerovalRegExpNode extends SerovalBaseNode {
|
|
|
98
108
|
c: string;
|
|
99
109
|
m: string;
|
|
100
110
|
}
|
|
111
|
+
export interface SerovalArrayBufferNode extends SerovalBaseNode {
|
|
112
|
+
t: SerovalNodeType.ArrayBuffer;
|
|
113
|
+
i: number;
|
|
114
|
+
s: number[];
|
|
115
|
+
}
|
|
101
116
|
export interface SerovalTypedArrayNode extends SerovalBaseNode {
|
|
102
117
|
t: SerovalNodeType.TypedArray;
|
|
103
118
|
i: number;
|
|
104
|
-
s: string[];
|
|
105
119
|
l: number;
|
|
106
120
|
c: string;
|
|
121
|
+
f: SerovalNode;
|
|
122
|
+
b: number;
|
|
107
123
|
}
|
|
108
124
|
export interface SerovalBigIntTypedArrayNode extends SerovalBaseNode {
|
|
109
125
|
t: SerovalNodeType.BigIntTypedArray;
|
|
110
126
|
i: number;
|
|
111
|
-
s: string[];
|
|
112
127
|
l: number;
|
|
113
128
|
c: string;
|
|
129
|
+
f: SerovalNode;
|
|
130
|
+
b: number;
|
|
114
131
|
}
|
|
115
132
|
export type SerovalSemiPrimitiveNode = SerovalBigIntNode | SerovalDateNode | SerovalRegExpNode | SerovalTypedArrayNode | SerovalBigIntTypedArrayNode;
|
|
116
133
|
export interface SerovalSetNode extends SerovalBaseNode {
|
|
117
134
|
t: SerovalNodeType.Set;
|
|
135
|
+
i: number;
|
|
118
136
|
l: number;
|
|
119
137
|
a: SerovalNode[];
|
|
120
|
-
i: number;
|
|
121
138
|
}
|
|
122
139
|
export interface SerovalMapNode extends SerovalBaseNode {
|
|
123
140
|
t: SerovalNodeType.Map;
|
|
124
|
-
d: SerovalMapRecordNode;
|
|
125
141
|
i: number;
|
|
142
|
+
d: SerovalMapRecordNode;
|
|
126
143
|
}
|
|
127
144
|
export interface SerovalArrayNode extends SerovalBaseNode {
|
|
128
145
|
t: SerovalNodeType.Array;
|
|
@@ -154,11 +171,9 @@ export interface SerovalErrorNode extends SerovalBaseNode {
|
|
|
154
171
|
}
|
|
155
172
|
export interface SerovalAggregateErrorNode extends SerovalBaseNode {
|
|
156
173
|
t: SerovalNodeType.AggregateError;
|
|
174
|
+
i: number;
|
|
157
175
|
m: string;
|
|
158
176
|
d: SerovalObjectRecordNode | undefined;
|
|
159
|
-
l: number;
|
|
160
|
-
a: SerovalNode[];
|
|
161
|
-
i: number;
|
|
162
177
|
}
|
|
163
178
|
export interface SerovalIterableNode extends SerovalBaseNode {
|
|
164
179
|
t: SerovalNodeType.Iterable;
|
|
@@ -171,4 +186,50 @@ export interface SerovalWKSymbolNode extends SerovalBaseNode {
|
|
|
171
186
|
t: SerovalNodeType.WKSymbol;
|
|
172
187
|
s: Symbols;
|
|
173
188
|
}
|
|
174
|
-
export
|
|
189
|
+
export interface SerovalURLNode extends SerovalBaseNode {
|
|
190
|
+
t: SerovalNodeType.URL;
|
|
191
|
+
i: number;
|
|
192
|
+
s: string;
|
|
193
|
+
}
|
|
194
|
+
export interface SerovalURLSearchParamsNode extends SerovalBaseNode {
|
|
195
|
+
t: SerovalNodeType.URLSearchParams;
|
|
196
|
+
i: number;
|
|
197
|
+
s: string;
|
|
198
|
+
}
|
|
199
|
+
export interface SerovalReferenceNode extends SerovalBaseNode {
|
|
200
|
+
t: SerovalNodeType.Reference;
|
|
201
|
+
i: number;
|
|
202
|
+
s: string;
|
|
203
|
+
}
|
|
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;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ParserContext } from '../context';
|
|
2
|
+
import { SerovalBlobNode, SerovalFileNode, 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;
|
|
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/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.7.0",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
7
7
|
"src"
|
|
@@ -16,7 +16,8 @@
|
|
|
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
|
+
"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": "
|
|
68
|
+
"gitHead": "187cbd91a44f5e88c6a87288d9ea440ddbaf5be0"
|
|
68
69
|
}
|
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';
|
|
@@ -9,25 +8,33 @@ interface IndexAssignment {
|
|
|
9
8
|
v: string;
|
|
10
9
|
}
|
|
11
10
|
|
|
12
|
-
interface
|
|
13
|
-
t: '
|
|
11
|
+
interface SetAssignment {
|
|
12
|
+
t: 'set';
|
|
14
13
|
s: string;
|
|
15
14
|
k: string;
|
|
16
15
|
v: string;
|
|
17
16
|
}
|
|
18
17
|
|
|
19
|
-
interface
|
|
20
|
-
t: '
|
|
18
|
+
interface AddAssignment {
|
|
19
|
+
t: 'add';
|
|
21
20
|
s: string;
|
|
22
21
|
k: undefined;
|
|
23
22
|
v: string;
|
|
24
23
|
}
|
|
25
24
|
|
|
25
|
+
interface AppendAssignment {
|
|
26
|
+
t: 'append';
|
|
27
|
+
s: string;
|
|
28
|
+
k: string;
|
|
29
|
+
v: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
26
32
|
// Array of assignments to be done (used for recursion)
|
|
27
33
|
export type Assignment =
|
|
28
34
|
| IndexAssignment
|
|
29
|
-
|
|
|
30
|
-
| SetAssignment
|
|
35
|
+
| AddAssignment
|
|
36
|
+
| SetAssignment
|
|
37
|
+
| AppendAssignment;
|
|
31
38
|
|
|
32
39
|
export interface ParserContext {
|
|
33
40
|
refs: Map<unknown, number>;
|
|
@@ -49,7 +56,7 @@ export interface SerializationContext {
|
|
|
49
56
|
// Supported features
|
|
50
57
|
features: number;
|
|
51
58
|
|
|
52
|
-
valueMap: Map<number,
|
|
59
|
+
valueMap: Map<number, unknown>;
|
|
53
60
|
}
|
|
54
61
|
|
|
55
62
|
export interface Options {
|
|
@@ -118,9 +125,9 @@ export function getRefParam(ctx: SerializationContext, index: number) {
|
|
|
118
125
|
return identifier;
|
|
119
126
|
}
|
|
120
127
|
|
|
121
|
-
export function getRootID(
|
|
128
|
+
export function getRootID<T>(
|
|
122
129
|
ctx: ParserContext,
|
|
123
|
-
current:
|
|
130
|
+
current: T,
|
|
124
131
|
) {
|
|
125
132
|
const ref = ctx.refs.get(current);
|
|
126
133
|
if (ref == null) {
|
|
@@ -129,9 +136,9 @@ export function getRootID(
|
|
|
129
136
|
return ref;
|
|
130
137
|
}
|
|
131
138
|
|
|
132
|
-
export function
|
|
139
|
+
export function createIndexedValue<T>(
|
|
133
140
|
ctx: ParserContext,
|
|
134
|
-
current:
|
|
141
|
+
current: T,
|
|
135
142
|
) {
|
|
136
143
|
const ref = ctx.refs.get(current);
|
|
137
144
|
if (ref == null) {
|