seroval 0.4.0-alpha.13 → 0.4.0-alpha.14
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/dist/cjs/development/index.cjs +639 -598
- package/dist/cjs/development/index.cjs.map +3 -3
- package/dist/cjs/production/index.cjs +2 -2
- package/dist/esm/development/index.mjs +639 -598
- package/dist/esm/development/index.mjs.map +3 -3
- package/dist/esm/production/index.mjs +2 -2
- package/dist/types/context.d.ts +25 -23
- package/dist/types/tree/primitives.d.ts +10 -1
- package/dist/types/tree/serialize.d.ts +21 -2
- package/dist/types/tree/shared.d.ts +0 -3
- package/dist/types/tree/types.d.ts +38 -57
- package/package.json +2 -2
- package/src/context.ts +53 -49
- package/src/index.ts +37 -36
- package/src/tree/async.ts +112 -49
- package/src/tree/primitives.ts +143 -7
- package/src/tree/serialize.ts +359 -360
- package/src/tree/shared.ts +0 -13
- package/src/tree/sync.ts +95 -46
- package/src/tree/types.ts +53 -202
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
2
|
-
`:a="\\n";break;case"\r":a="\\r";break;case"\u2028":a="\\u2028";break;case"\u2029":a="\\u2029";break;default:continue}e+=r.slice(t,s)+a,t=s+1}return t===0?e=r:e+=r.slice(t),`"${e}"`}var L=class{constructor(e,t,s){i(this,"k");i(this,"v");i(this,"s");this.k=e,this.v=t,this.s=s}},O=class{constructor(e,t,s){i(this,"k");i(this,"v");i(this,"s");this.k=e,this.v=t,this.s=s}},m=class{constructor(e){i(this,"t",0);i(this,"s");this.s=e}},I=class{constructor(e){i(this,"t",2);i(this,"i");this.i=e}},V=class{constructor(e){i(this,"t",1);i(this,"s");this.s=`${e}n`}},R=class{constructor(e,t){i(this,"t",3);i(this,"i");i(this,"s");this.i=e,this.s=t.toISOString()}},k=class{constructor(e,t){i(this,"t",4);i(this,"i");i(this,"s");this.i=e,this.s=String(t)}},P=class{constructor(e,t){i(this,"t",14);i(this,"i");i(this,"s");i(this,"l");i(this,"c");this.i=e,this.s=t.toString(),this.l=t.byteOffset,this.c=t.constructor.name}},T=class{constructor(e,t){i(this,"t",15);i(this,"i");i(this,"s");i(this,"l");i(this,"c");let s="",o=t.length-1;for(let a=0;a<o;a++)s+=`${t[a]}n,`;s+=`"${t[o]}"`,this.i=e,this.s=s,this.l=t.byteOffset,this.c=t.constructor.name}},z=class{constructor(e,t){i(this,"t",5);i(this,"i");i(this,"a");this.i=e,this.a=t}},$=class{constructor(e,t){i(this,"t",6);i(this,"i");i(this,"d");this.i=e,this.d=t}},j=class{constructor(e,t){i(this,"t",7);i(this,"i");i(this,"a");this.i=e,this.a=t}},C=class{constructor(e,t){i(this,"t",8);i(this,"i");i(this,"d");this.i=e,this.d=t}},x=class{constructor(e,t){i(this,"t",9);i(this,"i");i(this,"d");this.i=e,this.d=t}},F=class{constructor(e,t){i(this,"t",10);i(this,"i");i(this,"n");this.i=e,this.n=t}},B=class{constructor(e,t,s,o){i(this,"t",11);i(this,"i");i(this,"c");i(this,"m");i(this,"d");this.i=e,this.c=t,this.m=s,this.d=o}},U=class{constructor(e,t,s,o){i(this,"t",12);i(this,"i");i(this,"m");i(this,"d");i(this,"n");this.i=e,this.m=t,this.d=s,this.n=o}},D=class{constructor(e,t,s){i(this,"t",13);i(this,"i");i(this,"d");i(this,"a");this.i=e,this.d=t,this.a=s}};var J=new m("!0"),G=new m("!1"),Y=new m("void 0"),H=new m(null),K=new m("-0"),Z=new m("1/0"),q=new m("-1/0");function M(r){return r instanceof EvalError?"EvalError":r instanceof RangeError?"RangeError":r instanceof ReferenceError?"ReferenceError":r instanceof SyntaxError?"SyntaxError":r instanceof TypeError?"TypeError":r instanceof URIError?"URIError":"Error"}function _(r){let e,t=M(r);r.name!==t?e={name:r.name}:r.constructor.name!==t&&(e={name:r.constructor.name});let s=Object.getOwnPropertyNames(r);for(let o of s)o!=="name"&&o!=="message"&&(e=e||{},e[o]=r[o]);return e}function W(r){let e=Object.getOwnPropertyNames(r);if(e.length){let t={};for(let s of e)t[s]=r[s];return t}}function A(r,e){return e.t===2&&r.stack.includes(e.i)}function N(r){if(!r||typeof r!="object"||Array.isArray(r))return!1;switch(r.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 r}var ne=class{constructor(e){i(this,"ctx");this.ctx=e}async generateNodeList(e){let t=e.length,s=new Array(t),o=new Array(t),a;for(let n=0;n<t;n++)n in e&&(a=e[n],N(a)?o[n]=a:s[n]=await this.parse(a));for(let n=0;n<t;n++)n in o&&(s[n]=await this.parse(o[n]));return s}async generateArrayNode(e,t){return new j(e,await this.generateNodeList(t))}async generateMapNode(e,t){g(this.ctx.features&16,'Unsupported type "Map"');let s=t.size,o=new Array(s),a=new Array(s),n=new Array(s),u=new Array(s),l=0,d=0;for(let[c,f]of t.entries())N(c)||N(f)?(n[l]=c,u[l]=f,l++):(o[d]=await this.parse(c),a[d]=await this.parse(f),d++);for(let c=0;c<l;c++)o[d+c]=await this.parse(n[c]),a[d+c]=await this.parse(u[c]);return new $(e,new O(o,a,s))}async generateSetNode(e,t){g(this.ctx.features&256,'Unsupported type "Set"');let s=t.size,o=new Array(s),a=new Array(s),n=0,u=0;for(let l of t.keys())N(l)?a[n++]=l:o[u++]=await this.parse(l);for(let l=0;l<n;l++)o[u+l]=await this.parse(a[l]);return new z(e,o)}async generateProperties(e){let t=Object.keys(e),s=t.length,o=new Array(s),a=new Array(s),n=new Array(s),u=new Array(s),l=0,d=0,c;for(let f of t)c=e[f],N(c)?(n[l]=f,u[l]=c,l++):(o[d]=f,a[d]=await this.parse(c),d++);for(let f=0;f<l;f++)o[d+f]=n[f],a[d+f]=await this.parse(u[f]);return new L(o,a,s)}async generateIterableNode(e,t){g(this.ctx.features&512,'Unsupported type "Iterable"');let s=W(t);return new D(e,s?await this.generateProperties(s):void 0,await this.generateNodeList(Array.from(t)))}async generatePromiseNode(e,t){return g(this.ctx.features&128,'Unsupported type "Promise"'),t.then(async s=>new F(e,await this.parse(s)))}async generateObjectNode(e,t,s){if(Symbol.iterator in t)return this.generateIterableNode(e,t);if("then"in t&&typeof t.then=="function")return this.generatePromiseNode(e,t);let o=await this.generateProperties(t);return s?new x(e,o):new C(e,o)}async generateAggregateErrorNode(e,t){let s=_(t),o=s?await this.generateProperties(s):void 0;return new U(e,t.message,o,await this.parse(t.errors))}async generateErrorNode(e,t){let s=_(t),o=s?await this.generateProperties(s):void 0;return new B(e,M(t),t.message,o)}async parse(e){switch(typeof e){case"boolean":return e?J:G;case"undefined":return Y;case"string":return new m(v(e));case"number":return Object.is(e,-0)?K:Object.is(e,1/0)?Z:Object.is(e,-1/0)?q:new m(e);case"bigint":return g(this.ctx.features&8,'Unsupported type "BigInt"'),new V(e);case"object":{if(!e)return H;let t=w(this.ctx,e,!0);if(this.ctx.markedRefs[t])return new I(t);if(Array.isArray(e))return this.generateArrayNode(t,e);switch(e.constructor){case Date:return new R(t,e);case RegExp:return new k(t,e);case Promise:return this.generatePromiseNode(t,e);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return g(this.ctx.features&1024,`Unsupported value type "${e.constructor.name}"`),new P(t,e);case BigInt64Array:case BigUint64Array:return g(this.ctx.features&2048,`Unsupported value type "${e.constructor.name}"`),new T(t,e);case Map:return this.generateMapNode(t,e);case Set:return this.generateSetNode(t,e);case Object:return this.generateObjectNode(t,e,!1);case void 0:return this.generateObjectNode(t,e,!0);case AggregateError:return this.ctx.features&1?this.generateAggregateErrorNode(t,e):this.generateErrorNode(t,e);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return this.generateErrorNode(t,e);default:break}if(e instanceof AggregateError&&this.ctx.features&1)return this.generateAggregateErrorNode(t,e);if(e instanceof Error)return this.generateErrorNode(t,e);if(e instanceof Promise)return this.generatePromiseNode(t,e);if(Symbol.iterator in e)return this.generateIterableNode(t,e);if("then"in e&&typeof e.then=="function")return this.generatePromiseNode(t,e);throw new Error("Unsupported type")}default:throw new Error("Unsupported type")}}};async function Q(r,e){let t=await new ne(r).parse(e),s=t.t===8||t.t===13;return[t,w(r,e,!1),s]}function X(r){switch(r.type){case"index":return`${r.source}=${r.value}`;case"map":return`${r.source}.set(${r.key},${r.value})`;case"set":return`${r.source}.add(${r.value})`;default:return""}}function $e(r){let e=[],t=r[0],s=t;for(let o=1,a=r.length;o<a;o++){let n=r[o];n.type===s.type?n.type==="index"&&n.value===s.value?t={type:"index",source:n.source,value:X(t)}:n.type==="map"&&n.source===s.source?t={type:"map",source:X(t),key:n.key,value:n.value}:n.type==="set"&&n.source===s.source?t={type:"set",source:X(t),value:n.value}:(e.push(t),t=n):(e.push(t),t=n),s=n}return e.push(t),e}function ve(r){if(r.length){let e="",t=$e(r);for(let s=0,o=t.length;s<o;s++)e+=`${X(t[s])},`;return e}}function be(r){return ve(r.assignments)}function S(r,e,t){return r.markedRefs[e]?`${p(r,e)}=${t}`:t}function Ae(r,e,t){r.assignments.push({type:"index",source:e,value:t})}function je(r,e,t){b(r,e),r.assignments.push({type:"set",source:p(r,e),value:t})}function le(r,e,t,s){b(r,e),r.assignments.push({type:"map",source:p(r,e),key:t,value:s})}function ue(r,e,t,s){b(r,e),Ae(r,`${p(r,e)}[${t}]`,s)}function he(r,e,t,s){b(r,e),Ae(r,`${p(r,e)}.${t}`,s)}var Ee=/^([$A-Z_][0-9A-Z_$]*)$/i;function ee(r,e,t){r.stack.push(e);let s=[];for(let o=0;o<t.s;o++){let a=r.stack;r.stack=[];let n=y(r,t.v[o]);r.stack=a;let u=t.k[o],l=Number(u),d=r.assignments;r.assignments=s;let c=l>=0||Ee.test(u);c&&Number.isNaN(l)?he(r,e,u,n):ue(r,e,c?u:v(u),n),r.assignments=d}return r.stack.pop(),ve(s)}function we(r,e,t){if(t.s===0)return"{}";let s="";r.stack.push(e);for(let o=0;o<t.s;o++){let a=t.k[o],n=t.v[o],u=Number(a),l=u>=0||Ee.test(a);if(A(r,n)){let d=p(r,n.i);l&&Number.isNaN(u)?he(r,e,a,d):ue(r,e,l?a:v(a),d)}else s+=`${l?a:v(a)}:${y(r,n)},`}return r.stack.pop(),`{${s.substring(0,s.length-1)}}`}function Ce(r,e){let t;if(A(r,e.n))t=`Promise.resolve().then(()=>${p(r,e.n.i)})`;else{r.stack.push(e.i);let s=y(r,e.n);r.stack.pop(),t=`Promise.resolve(${s})`}return S(r,e.i,t)}function xe(r,e){let t=`[${e.s}]`;return e.l!==0&&(t+=`,${e.l}`),S(r,e.i,`new ${e.c}(${t})`)}function Be(r,e){let t="new Set",s=e.a.length;if(s){let o="";r.stack.push(e.i);for(let a=0;a<s;a++){let n=e.a[a];A(r,n)?je(r,e.i,p(r,n.i)):o+=`${y(r,n)},`}r.stack.pop(),o&&(t+=`([${o.substring(0,o.length-1)}])`)}return S(r,e.i,t)}function Ue(r,e){let t="new Map";if(e.d.s){let s="";r.stack.push(e.i);for(let o=0;o<e.d.s;o++){let a=e.d.k[o],n=e.d.v[o];if(A(r,a)){let u=p(r,a.i);if(A(r,n)){let l=p(r,n.i);le(r,e.i,u,l)}else{let l=r.stack;r.stack=[],le(r,e.i,u,y(r,n)),r.stack=l}}else if(A(r,n)){let u=p(r,n.i),l=r.stack;r.stack=[],le(r,e.i,y(r,a),u),r.stack=l}else s+=`[${y(r,a)},${y(r,n)}],`}r.stack.pop(),s&&(t+=`([${s.substring(0,s.length-1)}])`)}return S(r,e.i,t)}function Oe(r,e){let t=e.a.length,s="";for(let o=0;o<t;o++){let a=e.a[o];a?A(r,a)?(ue(r,e.i,o,p(r,a.i)),s+=","):(s+=y(r,a),o<t-1&&(s+=",")):s+=","}return`[${s}]`}function De(r,e){r.stack.push(e.i);let t=Oe(r,e);return r.stack.pop(),S(r,e.i,t)}function re(r,e,t,s){let o=we(r,t,e);return o!=="{}"?`Object.assign(${s},${o})`:s}function _e(r,e){r.stack.push(e.i);let t=`new AggregateError(${y(r,e.n)},${v(e.m)})`;if(r.stack.pop(),e.d)if(r.features&64)t=re(r,e.d,e.i,t);else{b(r,e.i);let s=ee(r,e.i,e.d);if(s){let o=p(r,e.i);return`(${S(r,e.i,t)},${s}${o})`}}return S(r,e.i,t)}function Me(r,e){let t=`new ${e.c}(${v(e.m)})`;if(e.d)if(r.features&64)t=re(r,e.d,e.i,t);else{b(r,e.i);let s=ee(r,e.i,e.d);if(s){let o=p(r,e.i);return`(${S(r,e.i,t)},${s}${o})`}}return S(r,e.i,t)}function Le(r,e){let t=r.stack;r.stack=[];let s=Oe(r,e);r.stack=t;let o;if(r.features&2?o=`${s}.values()`:o=`${s}[Symbol.iterator]()`,r.features&4?o=`{[Symbol.iterator]:()=>${o}}`:r.features&32?o=`{[Symbol.iterator](){return ${o}}}`:o=`{[Symbol.iterator]:function(){return ${o}}}`,e.d)if(r.features&64)o=re(r,e.d,e.i,o);else{b(r,e.i);let a=ee(r,e.i,e.d);if(a){let n=p(r,e.i);return`(${S(r,e.i,o)},${a}${n})`}}return S(r,e.i,o)}function Fe(r,e){let t="Object.create(null)";if(r.features&64)t=re(r,e.d,e.i,t);else{b(r,e.i);let s=ee(r,e.i,e.d);if(s){let o=p(r,e.i);return`(${S(r,e.i,t)},${s}${o})`}}return S(r,e.i,t)}function y(r,e){switch(e.t){case 0:return String(e.s);case 2:return p(r,e.i);case 10:return Ce(r,e);case 1:return e.s;case 3:return S(r,e.i,`new Date("${e.s}")`);case 4:return S(r,e.i,e.s);case 15:case 14:return xe(r,e);case 5:return Be(r,e);case 6:return Ue(r,e);case 7:return De(r,e);case 12:return _e(r,e);case 11:return Me(r,e);case 13:return Le(r,e);case 9:return Fe(r,e);case 8:return S(r,e.i,we(r,e.i,e.d));default:throw new Error("Unsupported type")}}var ce=class{constructor(e){i(this,"ctx");this.ctx=e}generateNodeList(e){let t=e.length,s=new Array(t),o=new Array(t),a;for(let n=0;n<t;n++)n in e&&(a=e[n],N(a)?o[n]=a:s[n]=this.parse(a));for(let n=0;n<t;n++)n in o&&(s[n]=this.parse(o[n]));return s}generateArrayNode(e,t){return new j(e,this.generateNodeList(t))}generateMapNode(e,t){g(this.ctx.features&16,'Unsupported type "Map"');let s=t.size,o=new Array(s),a=new Array(s),n=new Array(s),u=new Array(s),l=0,d=0;for(let[c,f]of t.entries())N(c)||N(f)?(n[l]=c,u[l]=f,l++):(o[d]=this.parse(c),a[d]=this.parse(f),d++);for(let c=0;c<l;c++)o[d+c]=this.parse(n[c]),a[d+c]=this.parse(u[c]);return new $(e,new O(o,a,s))}generateSetNode(e,t){g(this.ctx.features&256,'Unsupported type "Set"');let s=t.size,o=new Array(s),a=new Array(s),n=0,u=0;for(let l of t.keys())N(l)?a[n++]=l:o[u++]=this.parse(l);for(let l=0;l<n;l++)o[u+l]=this.parse(a[l]);return new z(e,o)}generateProperties(e){let t=Object.keys(e),s=t.length,o=new Array(s),a=new Array(s),n=new Array(s),u=new Array(s),l=0,d=0,c;for(let f of t)c=e[f],N(c)?(n[l]=f,u[l]=c,l++):(o[d]=f,a[d]=this.parse(c),d++);for(let f=0;f<l;f++)o[d+f]=n[f],a[d+f]=this.parse(u[f]);return{k:o,v:a,s}}generateIterableNode(e,t){g(this.ctx.features&512,'Unsupported type "Iterable"');let s=W(t);return new D(e,s?this.generateProperties(s):void 0,this.generateNodeList(Array.from(t)))}generateObjectNode(e,t,s){return Symbol.iterator in t?this.generateIterableNode(e,t):s?new x(e,this.generateProperties(t)):new C(e,this.generateProperties(t))}generateAggregateErrorNode(e,t){let s=_(t),o=s?this.generateProperties(s):void 0;return new U(e,t.message,o,this.parse(t.errors))}generateErrorNode(e,t){let s=_(t),o=s?this.generateProperties(s):void 0;return new B(e,M(t),t.message,o)}parse(e){switch(typeof e){case"boolean":return e?J:G;case"undefined":return Y;case"string":return new m(v(e));case"number":return Object.is(e,-0)?K:Object.is(e,1/0)?Z:Object.is(e,-1/0)?q:new m(e);case"bigint":return g(this.ctx.features&8,'Unsupported type "BigInt"'),new V(e);case"object":{if(!e)return H;let t=w(this.ctx,e,!0);if(this.ctx.markedRefs[t])return new I(t);if(Array.isArray(e))return this.generateArrayNode(t,e);switch(e.constructor){case Date:return new R(t,e);case RegExp:return new k(t,e);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return g(this.ctx.features&1024,`Unsupported value type "${e.constructor.name}"`),new P(t,e);case BigInt64Array:case BigUint64Array:return g(this.ctx.features&2048,`Unsupported value type "${e.constructor.name}"`),new T(t,e);case Map:return this.generateMapNode(t,e);case Set:return this.generateSetNode(t,e);case Object:return this.generateObjectNode(t,e,!1);case void 0:return this.generateObjectNode(t,e,!0);case AggregateError:return this.ctx.features&1?this.generateAggregateErrorNode(t,e):this.generateErrorNode(t,e);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return this.generateErrorNode(t,e);default:break}if(e instanceof AggregateError&&this.ctx.features&1)return this.generateAggregateErrorNode(t,e);if(e instanceof Error)return this.generateErrorNode(t,e);if(Symbol.iterator in e)return this.generateIterableNode(t,e);throw new Error("Unsupported type")}default:throw new Error("Unsupported type")}}};function te(r,e){let t=new ce(r).parse(e),s=t.t===8||t.t===13;return[t,w(r,e,!1),s]}function fe(r,e,t,s){if(r.vars.length){let o=be(r),a=s;if(o){let u=p(r,e);s.startsWith(`${u}=`)?a=`${s},${o}${u}`:a=`${u}=${s},${o}${u}`}let n=r.vars.length>1?r.vars.join(","):r.vars[0];return r.features&4?(n=r.vars.length>1||r.vars.length===0?`(${n})`:n,`(${n}=>(${a}))()`):`(function(${n}){return ${a}})()`}return t?`(${s})`:s}function Je(r,e){let t=new h(e),[s,o,a]=te(t,r),n=new E(t),u=y(n,s);return fe(n,o,a,u)}async function at(r,e){let t=new h(e),[s,o,a]=await Q(t,r),n=new E(t),u=y(n,s);return fe(n,o,a,u)}function Ge(r){return(0,eval)(r)}function nt(r,e){let t=new h(e),[s,o,a]=te(t,r);return JSON.stringify([s,o,a,t.features,t.markedRefs])}async function it(r,e){let t=new h(e),[s,o,a]=await Q(t,r);return JSON.stringify([s,o,a,t.features,t.markedRefs])}function Ye(r){let e=JSON.parse(r),t=new E({features:e[3],markedRefs:e[4]}),s=y(t,e[0]);return fe(t,e[1],e[2],s)}function lt(r){return Ge(Ye(r))}var ut=Je;export{Ye as compileJSON,ut as default,Ge as deserialize,lt as fromJSON,Je as serialize,at as serializeAsync,nt as toJSON,it as toJSONAsync};
|
|
1
|
+
var oe=Object.defineProperty;var de=(s,e,r)=>e in s?oe(s,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):s[e]=r;var v=(s,e,r)=>(de(s,typeof e!="symbol"?e+"":e,r),r);function ce(s,e){let r=s[0]-e[0];return r===0&&(r=s[1]-e[1]),r===0&&(r=s[2]-e[2]),r}var q={[1]:{es:[2021,0,0],chrome:[85,0,0],edge:[85,0,0],firefox:[79,0,0],opera:[71,0,0],safari:[14,0,0],ios:[14,0,0],samsung:[14,0,0],deno:[1,2,0],node:[15,0,0]},[2]:{es:[6,0,0],chrome:[66,0,0],edge:[14,0,0],firefox:[60,0,0],opera:[53,0,0],safari:[9,0,0],ios:[9,0,0],samsung:[9,0,0],deno:[1,0,0],node:[10,9,0]},[4]:{es:[6,0,0],chrome:[45,0,0],edge:[12,0,0],firefox:[24,0,0],opera:[32,0,0],safari:[10,0,0],ios:[10,0,0],samsung:[5,0,0],deno:[1,0,0],node:[4,0,0]},[8]:{es:[2020,0,0],chrome:[67,0,0],edge:[79,0,0],firefox:[68,0,0],opera:[54,0,0],safari:[14,0,0],ios:[14,0,0],samsung:[9,0,0],deno:[1,0,0],node:[10,4,0]},[16]:{es:[6,0,0],chrome:[38,0,0],edge:[12,0,0],firefox:[13,0,0],opera:[25,0,0],safari:[8,0,0],ios:[8,0,0],samsung:[3,0,0],deno:[1,0,0],node:[0,12,0]},[32]:{es:[6,0,0],chrome:[39,0,0],edge:[12,0,0],firefox:[34,0,0],opera:[26,0,0],safari:[9,0,0],ios:[9,0,0],samsung:[4,0,0],deno:[1,0,0],node:[4,0,0]},[64]:{es:[6,0,0],chrome:[45,0,0],edge:[12,0,0],firefox:[34,0,0],opera:[32,0,0],safari:[9,0,0],ios:[9,0,0],samsung:[5,0,0],deno:[1,0,0],node:[4,0,0]},[128]:{es:[6,0,0],chrome:[32,0,0],edge:[12,0,0],firefox:[29,0,0],opera:[19,0,0],safari:[8,0,0],ios:[8,0,0],samsung:[2,0,0],deno:[1,0,0],node:[0,12,0]},[256]:{es:[6,0,0],chrome:[38,0,0],edge:[12,0,0],firefox:[13,0,0],opera:[25,0,0],safari:[8,0,0],ios:[8,0,0],samsung:[3,0,0],deno:[1,0,0],node:[0,12,0]},[512]:{es:[6,0,0],chrome:[43,0,0],edge:[12,0,0],firefox:[36,0,0],opera:[30,0,0],safari:[10,0,0],ios:[10,0,0],samsung:[4,0,0],deno:[1,0,0],node:[0,12,0]},[1024]:{es:[6,0,0],chrome:[7,0,0],edge:[12,0,0],firefox:[4,0,0],opera:[11,6,0],safari:[5,1,0],ios:[4,2,0],samsung:[1,0,0],deno:[1,0,0],node:[0,10,0]},[2048]:{es:[2020,0,0],chrome:[67,0,0],edge:[79,0,0],firefox:[68,0,0],opera:[54,6,0],safari:[15,1,0],ios:[15,2,0],samsung:[9,0,0],deno:[1,0,0],node:[10,4,0]}},_=["chrome","deno","edge","es","firefox","ios","node","opera","safari","samsung"];function le(s){for(let e=0,r=_.length;e<r;e++){let t=s.substring(0,_[e].length);if(t===_[e])return t}throw new Error(`Invalid target "${s}"`)}function G(s){let e=le(s),r=s.substring(e.length),[t,n="0",a="0"]=r.split(".");return[e,[Number(t),Number(n),Number(a)]]}function fe(s){if(Array.isArray(s)){let e=[];for(let r=0,t=s.length;r<t;r++)e.push(G(s[r]));return e}return[G(s)]}function Y(s){let e=fe(s),r=0;for(let t of Object.keys(q)){let n=q[t],a=!0;for(let[i,d]of e){let o=n[i];a=a&&!!o&&ce(o,d)<=0}a&&(r|=Number(t))}return r}var ee="hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_",Q=ee.length,re="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_",X=re.length;function L(s){let e=s%Q,r=ee[e];for(s=(s-e)/Q;s>0;)e=s%X,r+=re[e],s=(s-e)/X;return r}var ue={target:"es2023"};function x(s={}){let e=Object.assign({},ue,s||{});return{markedRefs:new Set,refs:new Map,features:Y(e.target)}}function E(s){return{stack:[],vars:[],assignments:[],validRefs:[],refSize:0,features:s.features,markedRefs:new Set(s.markedRefs)}}function N(s,e){s.markedRefs.add(e)}function ge(s,e){let r=s.validRefs[e];if(r==null){let t=s.refSize++;return s.validRefs[e]=t,t}return r}function u(s,e){let r=ge(s,e);if(s.vars[r])return s.vars[r];let t=L(r);return s.vars[r]=t,t}function h(s,e,r){let t=s.refs.get(e);if(t!=null)return r&&N(s,t),t;let n=s.refs.size;return s.refs.set(e,n),n}function p(s,e){if(!s)throw new Error(e)}function S(s){let e="",r=0;for(let t=0,n=s.length;t<n;t++){let a;switch(s[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}e+=s.slice(r,t)+a,r=t+1}return r===0?e=s:e+=s.slice(r),`"${e}"`}function g(s){return{t:0,i:void 0,s,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0}}var I=g("!0"),O=g("!1"),k=g("void 0"),V=g(null),P=g("-0"),Ue=g("1/0"),Me=g("-1/0");function z(s,e){return p(s.features&8,'Unsupported type "BigInt"'),{t:1,i:void 0,s:`${e}n`,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0}}function w(s){return{t:2,i:s,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0}}function j(s,e){return{t:3,i:s,s:e.toISOString(),l:void 0,c:void 0,m:void 0,d:void 0,n:void 0,a:void 0}}function $(s,e){return{t:4,i:s,s:String(e),l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:void 0}}function T(s,e,r){let t=r.constructor.name;return p(s.features&1024,`Unsupported value type "${t}"`),{t:14,i:e,s:r.toString(),l:r.byteOffset,c:t,m:void 0,d:void 0,a:void 0,n:void 0}}function C(s,e,r){let t=r.constructor.name;p(s.features&2048,`Unsupported value type "${t}"`);let n="",a=r.length-1;for(let i=0;i<a;i++)n+=`${r[i]}n,`;return n+=`"${r[a]}"`,{t:15,i:e,s:n,l:r.byteOffset,c:t,m:void 0,d:void 0,a:void 0,n:void 0}}function b(s){return s instanceof EvalError?"EvalError":s instanceof RangeError?"RangeError":s instanceof ReferenceError?"ReferenceError":s instanceof SyntaxError?"SyntaxError":s instanceof TypeError?"TypeError":s instanceof URIError?"URIError":"Error"}function A(s){let e,r=b(s);s.name!==r?e={name:s.name}:s.constructor.name!==r&&(e={name:s.constructor.name});let t=Object.getOwnPropertyNames(s);for(let n of t)n!=="name"&&n!=="message"&&(e=e||{},e[n]=s[n]);return e}function B(s){let e=Object.getOwnPropertyNames(s);if(e.length){let r={};for(let t of e)r[t]=s[t];return r}}function m(s){if(!s||typeof s!="object"||Array.isArray(s))return!1;switch(s.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 s}var J=class{constructor(e){v(this,"ctx");this.ctx=e}async generateNodeList(e){let r=e.length,t=new Array(r),n=new Array(r),a;for(let i=0;i<r;i++)i in e&&(a=e[i],m(a)?n[i]=a:t[i]=await this.parse(a));for(let i=0;i<r;i++)i in n&&(t[i]=await this.parse(n[i]));return t}async generateArrayNode(e,r){return{t:7,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:await this.generateNodeList(r),n:void 0}}async generateMapNode(e,r){p(this.ctx.features&16,'Unsupported type "Map"');let t=r.size,n=new Array(t),a=new Array(t),i=new Array(t),d=new Array(t),o=0,f=0;for(let[c,l]of r.entries())m(c)||m(l)?(i[o]=c,d[o]=l,o++):(n[f]=await this.parse(c),a[f]=await this.parse(l),f++);for(let c=0;c<o;c++)n[f+c]=await this.parse(i[c]),a[f+c]=await this.parse(d[c]);return{t:6,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:{k:n,v:a,s:t},a:void 0,n:void 0}}async generateSetNode(e,r){p(this.ctx.features&256,'Unsupported type "Set"');let t=r.size,n=new Array(t),a=new Array(t),i=0,d=0;for(let o of r.keys())m(o)?a[i++]=o:n[d++]=await this.parse(o);for(let o=0;o<i;o++)n[d+o]=await this.parse(a[o]);return{t:5,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:n,n:void 0}}async generateProperties(e){let r=Object.keys(e),t=r.length,n=new Array(t),a=new Array(t),i=new Array(t),d=new Array(t),o=0,f=0,c;for(let l of r)c=e[l],m(c)?(i[o]=l,d[o]=c,o++):(n[f]=l,a[f]=await this.parse(c),f++);for(let l=0;l<o;l++)n[f+l]=i[l],a[f+l]=await this.parse(d[l]);return{k:n,v:a,s:t}}async generateIterableNode(e,r){p(this.ctx.features&512,'Unsupported type "Iterable"');let t=B(r);return{t:13,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:t?await this.generateProperties(t):void 0,a:await this.generateNodeList(Array.from(r)),n:void 0}}async generatePromiseNode(e,r){return p(this.ctx.features&128,'Unsupported type "Promise"'),r.then(async t=>({t:10,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:void 0,n:await this.parse(t)}))}async generateObjectNode(e,r,t){return Symbol.iterator in r?this.generateIterableNode(e,r):"then"in r&&typeof r.then=="function"?this.generatePromiseNode(e,r):{t:t?9:8,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:await this.generateProperties(r),a:void 0,n:void 0}}async generateAggregateErrorNode(e,r){let t=A(r),n=t?await this.generateProperties(t):void 0;return{t:12,i:e,s:void 0,l:void 0,c:void 0,m:r.message,d:n,a:void 0,n:await this.parse(r.errors)}}async generateErrorNode(e,r){let t=A(r),n=t?await this.generateProperties(t):void 0;return{t:11,i:e,s:void 0,l:void 0,c:b(r),m:r.message,d:n,a:void 0,n:void 0}}async parse(e){switch(typeof e){case"boolean":return e?I:O;case"undefined":return k;case"string":return g(S(e));case"number":return Object.is(e,-0)?P:Object.is(e,1/0)?g("1/0"):Object.is(e,-1/0)?g("-1/0"):g(e);case"bigint":return z(this.ctx,e);case"object":{if(!e)return V;let r=h(this.ctx,e,!0);if(this.ctx.markedRefs.has(r))return w(r);if(Array.isArray(e))return this.generateArrayNode(r,e);switch(e.constructor){case Date:return j(r,e);case RegExp:return $(r,e);case Promise:return this.generatePromiseNode(r,e);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return T(this.ctx,r,e);case BigInt64Array:case BigUint64Array:return C(this.ctx,r,e);case Map:return this.generateMapNode(r,e);case Set:return this.generateSetNode(r,e);case Object:return this.generateObjectNode(r,e,!1);case void 0:return this.generateObjectNode(r,e,!0);case AggregateError:return this.ctx.features&1?this.generateAggregateErrorNode(r,e):this.generateErrorNode(r,e);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return this.generateErrorNode(r,e);default:break}if(e instanceof AggregateError&&this.ctx.features&1)return this.generateAggregateErrorNode(r,e);if(e instanceof Error)return this.generateErrorNode(r,e);if(e instanceof Promise)return this.generatePromiseNode(r,e);if(Symbol.iterator in e)return this.generateIterableNode(r,e);if("then"in e&&typeof e.then=="function")return this.generatePromiseNode(r,e);throw new Error("Unsupported type")}default:throw new Error("Unsupported type")}}};async function U(s,e){let r=await new J(s).parse(e),t=r.t===8||r.t===13;return[r,h(s,e,!1),t]}function M(s){switch(s.t){case"index":return`${s.s}=${s.v}`;case"map":return`${s.s}.set(${s.k},${s.v})`;case"set":return`${s.s}.add(${s.v})`;default:return""}}function pe(s){let e=[],r=s[0],t=r;for(let n=1,a=s.length;n<a;n++){let i=s[n];i.t===t.t?i.t==="index"&&i.v===t.v?r={t:"index",s:i.s,k:void 0,v:M(r)}:i.t==="map"&&i.s===t.s?r={t:"map",s:M(r),k:i.k,v:i.v}:i.t==="set"&&i.s===t.s?r={t:"set",s:M(r),k:void 0,v:i.v}:(e.push(r),r=i):(e.push(r),r=i),t=i}return e.push(r),e}function ne(s){if(s.length){let e="",r=pe(s);for(let t=0,n=r.length;t<n;t++)e+=`${M(r[t])},`;return e}}function ie(s){return ne(s.assignments)}function ae(s,e,r){s.assignments.push({t:"index",s:e,k:void 0,v:r})}function me(s,e,r){N(s,e),s.assignments.push({t:"set",s:u(s,e),k:void 0,v:r})}function W(s,e,r,t){N(s,e),s.assignments.push({t:"map",s:u(s,e),k:r,v:t})}function H(s,e,r,t){N(s,e),ae(s,`${u(s,e)}[${r}]`,t)}function te(s,e,r,t){N(s,e),ae(s,`${u(s,e)}.${r}`,t)}var se=/^([$A-Z_][0-9A-Z_$]*)$/i,y=class{constructor(e){v(this,"ctx");this.ctx=e}assignRef(e,r){return this.ctx.markedRefs.has(e)?`${u(this.ctx,e)}=${r}`:r}isReferenceInStack(e){return e.t===2&&this.ctx.stack.includes(e.i)}serializeNodeList(e){let r=e.a.length,t="";for(let n=0;n<r;n++){let a=e.a[n];a?this.isReferenceInStack(a)?(H(this.ctx,e.i,n,u(this.ctx,a.i)),t+=","):(t+=this.serialize(a),n<r-1&&(t+=",")):t+=","}return`[${t}]`}serializeArray(e){this.ctx.stack.push(e.i);let r=this.serializeNodeList(e);return this.ctx.stack.pop(),this.assignRef(e.i,r)}serializeObject(e,r){if(r.s===0)return"{}";let t="";this.ctx.stack.push(e);for(let n=0;n<r.s;n++){let a=r.k[n],i=r.v[n],d=Number(a),o=d>=0||se.test(a);if(this.isReferenceInStack(i)){let f=u(this.ctx,i.i);o&&Number.isNaN(d)?te(this.ctx,e,a,f):H(this.ctx,e,o?a:S(a),f)}else t+=`${o?a:S(a)}:${this.serialize(i)},`}return this.ctx.stack.pop(),`{${t.substring(0,t.length-1)}}`}serializeWithObjectAssign(e,r,t){let n=this.serializeObject(r,e);return n!=="{}"?`Object.assign(${t},${n})`:t}serializeAssignments(e,r){this.ctx.stack.push(e);let t=[];for(let n=0;n<r.s;n++){let a=this.ctx.stack;this.ctx.stack=[];let i=this.serialize(r.v[n]);this.ctx.stack=a;let d=r.k[n],o=Number(d),f=this.ctx.assignments;this.ctx.assignments=t;let c=o>=0||se.test(d);c&&Number.isNaN(o)?te(this.ctx,e,d,i):H(this.ctx,e,c?d:S(d),i),this.ctx.assignments=f}return this.ctx.stack.pop(),ne(t)}serializeNullConstructor(e){let r="Object.create(null)";if(this.ctx.features&64)r=this.serializeWithObjectAssign(e.d,e.i,r);else{N(this.ctx,e.i);let t=this.serializeAssignments(e.i,e.d);if(t){let n=u(this.ctx,e.i);return`(${this.assignRef(e.i,r)},${t}${n})`}}return this.assignRef(e.i,r)}serializeSet(e){let r="new Set",t=e.a.length;if(t){let n="";this.ctx.stack.push(e.i);for(let a=0;a<t;a++){let i=e.a[a];this.isReferenceInStack(i)?me(this.ctx,e.i,u(this.ctx,i.i)):n+=`${this.serialize(i)},`}this.ctx.stack.pop(),n&&(r+=`([${n.substring(0,n.length-1)}])`)}return this.assignRef(e.i,r)}serializeMap(e){let r="new Map";if(e.d.s){let t="";this.ctx.stack.push(e.i);for(let n=0;n<e.d.s;n++){let a=e.d.k[n],i=e.d.v[n];if(this.isReferenceInStack(a)){let d=u(this.ctx,a.i);if(this.isReferenceInStack(i)){let o=u(this.ctx,i.i);W(this.ctx,e.i,d,o)}else{let o=this.ctx.stack;this.ctx.stack=[],W(this.ctx,e.i,d,this.serialize(i)),this.ctx.stack=o}}else if(this.isReferenceInStack(i)){let d=u(this.ctx,i.i),o=this.ctx.stack;this.ctx.stack=[],W(this.ctx,e.i,this.serialize(a),d),this.ctx.stack=o}else t+=`[${this.serialize(a)},${this.serialize(i)}],`}this.ctx.stack.pop(),t&&(r+=`([${t.substring(0,t.length-1)}])`)}return this.assignRef(e.i,r)}serializeAggregateError(e){this.ctx.stack.push(e.i);let r=`new AggregateError(${this.serialize(e.n)},${S(e.m)})`;if(this.ctx.stack.pop(),e.d)if(this.ctx.features&64)r=this.serializeWithObjectAssign(e.d,e.i,r);else{N(this.ctx,e.i);let t=this.serializeAssignments(e.i,e.d);if(t){let n=u(this.ctx,e.i);return`(${this.assignRef(e.i,r)},${t}${n})`}}return this.assignRef(e.i,r)}serializeError(e){let r=`new ${e.c}(${S(e.m)})`;if(e.d)if(this.ctx.features&64)r=this.serializeWithObjectAssign(e.d,e.i,r);else{N(this.ctx,e.i);let t=this.serializeAssignments(e.i,e.d);if(t){let n=u(this.ctx,e.i);return`(${this.assignRef(e.i,r)},${t}${n})`}}return this.assignRef(e.i,r)}serializePromise(e){let r;if(this.isReferenceInStack(e.n))r=`Promise.resolve().then(()=>${u(this.ctx,e.n.i)})`;else{this.ctx.stack.push(e.i);let t=this.serialize(e.n);this.ctx.stack.pop(),r=`Promise.resolve(${t})`}return this.assignRef(e.i,r)}serializeTypedArray(e){let r=`[${e.s}]`;return e.l!==0&&(r+=`,${e.l}`),this.assignRef(e.i,`new ${e.c}(${r})`)}serializeIterable(e){let r=this.ctx.stack;this.ctx.stack=[];let t=this.serializeNodeList(e);this.ctx.stack=r;let n;if(this.ctx.features&2?n=`${t}.values()`:n=`${t}[Symbol.iterator]()`,this.ctx.features&4?n=`{[Symbol.iterator]:()=>${n}}`:this.ctx.features&32?n=`{[Symbol.iterator](){return ${n}}}`:n=`{[Symbol.iterator]:function(){return ${n}}}`,e.d)if(this.ctx.features&64)n=this.serializeWithObjectAssign(e.d,e.i,n);else{N(this.ctx,e.i);let a=this.serializeAssignments(e.i,e.d);if(a){let i=u(this.ctx,e.i);return`(${this.assignRef(e.i,n)},${a}${i})`}}return this.assignRef(e.i,n)}serialize(e){switch(e.t){case 0:return String(e.s);case 1:return e.s;case 2:return u(this.ctx,e.i);case 7:return this.serializeArray(e);case 8:return this.assignRef(e.i,this.serializeObject(e.i,e.d));case 9:return this.serializeNullConstructor(e);case 3:return this.assignRef(e.i,`new Date("${e.s}")`);case 4:return this.assignRef(e.i,e.s);case 5:return this.serializeSet(e);case 6:return this.serializeMap(e);case 15:case 14:return this.serializeTypedArray(e);case 12:return this.serializeAggregateError(e);case 11:return this.serializeError(e);case 13:return this.serializeIterable(e);case 10:return this.serializePromise(e);default:throw new Error("Unsupported type")}}};var K=class{constructor(e){v(this,"ctx");this.ctx=e}generateNodeList(e){let r=e.length,t=new Array(r),n=new Array(r),a;for(let i=0;i<r;i++)i in e&&(a=e[i],m(a)?n[i]=a:t[i]=this.parse(a));for(let i=0;i<r;i++)i in n&&(t[i]=this.parse(n[i]));return t}generateArrayNode(e,r){return{t:7,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:this.generateNodeList(r),n:void 0}}generateMapNode(e,r){p(this.ctx.features&16,'Unsupported type "Map"');let t=r.size,n=new Array(t),a=new Array(t),i=new Array(t),d=new Array(t),o=0,f=0;for(let[c,l]of r.entries())m(c)||m(l)?(i[o]=c,d[o]=l,o++):(n[f]=this.parse(c),a[f]=this.parse(l),f++);for(let c=0;c<o;c++)n[f+c]=this.parse(i[c]),a[f+c]=this.parse(d[c]);return{t:6,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:{k:n,v:a,s:t},a:void 0,n:void 0}}generateSetNode(e,r){p(this.ctx.features&256,'Unsupported type "Set"');let t=r.size,n=new Array(t),a=new Array(t),i=0,d=0;for(let o of r.keys())m(o)?a[i++]=o:n[d++]=this.parse(o);for(let o=0;o<i;o++)n[d+o]=this.parse(a[o]);return{t:5,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:void 0,a:n,n:void 0}}generateProperties(e){let r=Object.keys(e),t=r.length,n=new Array(t),a=new Array(t),i=new Array(t),d=new Array(t),o=0,f=0,c;for(let l of r)c=e[l],m(c)?(i[o]=l,d[o]=c,o++):(n[f]=l,a[f]=this.parse(c),f++);for(let l=0;l<o;l++)n[f+l]=i[l],a[f+l]=this.parse(d[l]);return{k:n,v:a,s:t}}generateIterableNode(e,r){p(this.ctx.features&512,'Unsupported type "Iterable"');let t=B(r);return{t:13,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:t?this.generateProperties(t):void 0,a:this.generateNodeList(Array.from(r)),n:void 0}}generateObjectNode(e,r,t){return Symbol.iterator in r?this.generateIterableNode(e,r):{t:t?9:8,i:e,s:void 0,l:void 0,c:void 0,m:void 0,d:this.generateProperties(r),a:void 0,n:void 0}}generateAggregateErrorNode(e,r){let t=A(r),n=t?this.generateProperties(t):void 0;return{t:12,i:e,s:void 0,l:void 0,c:void 0,m:r.message,d:n,a:void 0,n:this.parse(r.errors)}}generateErrorNode(e,r){let t=A(r),n=t?this.generateProperties(t):void 0;return{t:11,i:e,s:void 0,l:void 0,c:b(r),m:r.message,d:n,a:void 0,n:void 0}}parse(e){switch(typeof e){case"boolean":return e?I:O;case"undefined":return k;case"string":return g(S(e));case"number":return Object.is(e,-0)?P:Object.is(e,1/0)?g("1/0"):Object.is(e,-1/0)?g("-1/0"):g(e);case"bigint":return z(this.ctx,e);case"object":{if(!e)return V;let r=h(this.ctx,e,!0);if(this.ctx.markedRefs.has(r))return w(r);if(Array.isArray(e))return this.generateArrayNode(r,e);switch(e.constructor){case Date:return j(r,e);case RegExp:return $(r,e);case Int8Array:case Int16Array:case Int32Array:case Uint8Array:case Uint16Array:case Uint32Array:case Uint8ClampedArray:case Float32Array:case Float64Array:return T(this.ctx,r,e);case BigInt64Array:case BigUint64Array:return C(this.ctx,r,e);case Map:return this.generateMapNode(r,e);case Set:return this.generateSetNode(r,e);case Object:return this.generateObjectNode(r,e,!1);case void 0:return this.generateObjectNode(r,e,!0);case AggregateError:return this.ctx.features&1?this.generateAggregateErrorNode(r,e):this.generateErrorNode(r,e);case Error:case EvalError:case RangeError:case ReferenceError:case SyntaxError:case TypeError:case URIError:return this.generateErrorNode(r,e);default:break}if(e instanceof AggregateError&&this.ctx.features&1)return this.generateAggregateErrorNode(r,e);if(e instanceof Error)return this.generateErrorNode(r,e);if(Symbol.iterator in e)return this.generateIterableNode(r,e);throw new Error("Unsupported type")}default:throw new Error("Unsupported type")}}};function D(s,e){let r=new K(s).parse(e),t=r.t===8||r.t===13;return[r,h(s,e,!1),t]}function Z(s,e,r,t){if(s.vars.length){let n=ie(s),a=t;if(n){let d=u(s,e);t.startsWith(`${d}=`)?a=`${t},${n}${d}`:a=`${d}=${t},${n}${d}`}let i=s.vars.length>1?s.vars.join(","):s.vars[0];return s.features&4?(i=s.vars.length>1||s.vars.length===0?`(${i})`:i,`(${i}=>(${a}))()`):`(function(${i}){return ${a}})()`}return r?`(${t})`:t}function Se(s,e){let r=x(e),[t,n,a]=D(r,s),i=E(r),d=new y(i).serialize(t);return Z(i,n,a,d)}async function st(s,e){let r=x(e),[t,n,a]=await U(r,s),i=E(r),d=new y(i).serialize(t);return Z(i,n,a,d)}function Ne(s){return(0,eval)(s)}function nt(s,e){let r=x(e),[t,n,a]=D(r,s);return JSON.stringify({t,r:n,i:a,f:r.features,m:Array.from(r.markedRefs)})}async function it(s,e){let r=x(e),[t,n,a]=await U(r,s);return JSON.stringify({t,r:n,i:a,f:r.features,m:Array.from(r.markedRefs)})}function ye(s){let e=JSON.parse(s),r=E({features:e.f,markedRefs:e.m}),t=new y(r).serialize(e.t);return Z(r,e.r,e.i,t)}function at(s){return Ne(ye(s))}var ot=Se;export{ye as compileJSON,ot as default,Ne as deserialize,at as fromJSON,Se as serialize,st as serializeAsync,nt as toJSON,it as toJSONAsync};
|
package/dist/types/context.d.ts
CHANGED
|
@@ -1,43 +1,45 @@
|
|
|
1
1
|
interface IndexAssignment {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
t: 'index';
|
|
3
|
+
s: string;
|
|
4
|
+
k: undefined;
|
|
5
|
+
v: string;
|
|
5
6
|
}
|
|
6
7
|
interface MapAssignment {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
t: 'map';
|
|
9
|
+
s: string;
|
|
10
|
+
k: string;
|
|
11
|
+
v: string;
|
|
11
12
|
}
|
|
12
13
|
interface SetAssignment {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
t: 'set';
|
|
15
|
+
s: string;
|
|
16
|
+
k: undefined;
|
|
17
|
+
v: string;
|
|
16
18
|
}
|
|
17
19
|
export type Assignment = IndexAssignment | MapAssignment | SetAssignment;
|
|
18
|
-
export interface
|
|
19
|
-
target: string | string[];
|
|
20
|
-
}
|
|
21
|
-
export declare class ParserContext {
|
|
20
|
+
export interface ParserContext {
|
|
22
21
|
refs: Map<unknown, number>;
|
|
23
|
-
markedRefs:
|
|
24
|
-
features: number;
|
|
25
|
-
constructor(options?: Partial<Options>);
|
|
26
|
-
}
|
|
27
|
-
export interface SerializationOptions {
|
|
28
|
-
markedRefs: Record<number, number>;
|
|
22
|
+
markedRefs: Set<number>;
|
|
29
23
|
features: number;
|
|
30
24
|
}
|
|
31
|
-
export
|
|
25
|
+
export interface SerializationContext {
|
|
32
26
|
stack: number[];
|
|
33
27
|
validRefs: number[];
|
|
34
28
|
refSize: number;
|
|
29
|
+
markedRefs: Set<number>;
|
|
35
30
|
vars: string[];
|
|
36
31
|
assignments: Assignment[];
|
|
37
32
|
features: number;
|
|
38
|
-
markedRefs: Record<number, number>;
|
|
39
|
-
constructor(options: SerializationOptions);
|
|
40
33
|
}
|
|
34
|
+
export interface Options {
|
|
35
|
+
target: string | string[];
|
|
36
|
+
}
|
|
37
|
+
export declare function createParserContext(options?: Partial<Options>): ParserContext;
|
|
38
|
+
export interface SerializationOptions {
|
|
39
|
+
markedRefs: number[] | Set<number>;
|
|
40
|
+
features: number;
|
|
41
|
+
}
|
|
42
|
+
export declare function createSerializationContext(options: SerializationOptions): SerializationContext;
|
|
41
43
|
/**
|
|
42
44
|
* Increments the number of references the referenced value has
|
|
43
45
|
*/
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ParserContext } from '../context';
|
|
2
|
+
import { BigIntTypedArrayValue, TypedArrayValue } from '../types';
|
|
3
|
+
import { SerovalBigIntNode, SerovalBigIntTypedArrayNode, SerovalDateNode, SerovalPrimitiveNode, SerovalReferenceNode, SerovalRegExpNode, SerovalTypedArrayNode } from './types';
|
|
4
|
+
export declare function createPrimitiveNode(value: string | number | null): SerovalPrimitiveNode;
|
|
2
5
|
export declare const TRUE_NODE: SerovalPrimitiveNode;
|
|
3
6
|
export declare const FALSE_NODE: SerovalPrimitiveNode;
|
|
4
7
|
export declare const UNDEFINED_NODE: SerovalPrimitiveNode;
|
|
@@ -6,3 +9,9 @@ export declare const NULL_NODE: SerovalPrimitiveNode;
|
|
|
6
9
|
export declare const NEG_ZERO_NODE: SerovalPrimitiveNode;
|
|
7
10
|
export declare const INFINITY_NODE: SerovalPrimitiveNode;
|
|
8
11
|
export declare const NEG_INFINITY_NODE: SerovalPrimitiveNode;
|
|
12
|
+
export declare function createBigIntNode(ctx: ParserContext, current: bigint): SerovalBigIntNode;
|
|
13
|
+
export declare function createReferenceNode(id: number): SerovalReferenceNode;
|
|
14
|
+
export declare function createDateNode(id: number, current: Date): SerovalDateNode;
|
|
15
|
+
export declare function createRegExpNode(id: number, current: RegExp): SerovalRegExpNode;
|
|
16
|
+
export declare function createTypedArrayNode(ctx: ParserContext, id: number, current: TypedArrayValue): SerovalTypedArrayNode;
|
|
17
|
+
export declare function createBigIntTypedArrayNode(ctx: ParserContext, id: number, current: BigIntTypedArrayValue): SerovalBigIntTypedArrayNode;
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import { SerializationContext } from '../context';
|
|
2
|
-
import { SerovalNode } from './types';
|
|
2
|
+
import { SerovalAggregateErrorNode, SerovalArrayNode, SerovalBigIntTypedArrayNode, SerovalErrorNode, SerovalIterableNode, SerovalMapNode, SerovalNode, SerovalNullConstructorNode, SerovalObjectRecordNode, SerovalPromiseNode, SerovalReferenceNode, SerovalSetNode, SerovalTypedArrayNode } from './types';
|
|
3
3
|
export declare function resolvePatches(ctx: SerializationContext): string | undefined;
|
|
4
|
-
export default
|
|
4
|
+
export default class SerovalSerializer {
|
|
5
|
+
ctx: SerializationContext;
|
|
6
|
+
constructor(ctx: SerializationContext);
|
|
7
|
+
assignRef(index: number, value: string): string;
|
|
8
|
+
isReferenceInStack(node: SerovalNode): node is SerovalReferenceNode;
|
|
9
|
+
serializeNodeList(node: SerovalArrayNode | SerovalIterableNode): string;
|
|
10
|
+
serializeArray(node: SerovalArrayNode): string;
|
|
11
|
+
serializeObject(sourceID: number, node: SerovalObjectRecordNode): string;
|
|
12
|
+
serializeWithObjectAssign(value: SerovalObjectRecordNode, id: number, serialized: string): string;
|
|
13
|
+
serializeAssignments(sourceID: number, node: SerovalObjectRecordNode): string | undefined;
|
|
14
|
+
serializeNullConstructor(node: SerovalNullConstructorNode): string;
|
|
15
|
+
serializeSet(node: SerovalSetNode): string;
|
|
16
|
+
serializeMap(node: SerovalMapNode): string;
|
|
17
|
+
serializeAggregateError(node: SerovalAggregateErrorNode): string;
|
|
18
|
+
serializeError(node: SerovalErrorNode): string;
|
|
19
|
+
serializePromise(node: SerovalPromiseNode): string;
|
|
20
|
+
serializeTypedArray(node: SerovalTypedArrayNode | SerovalBigIntTypedArrayNode): string;
|
|
21
|
+
serializeIterable(node: SerovalIterableNode): string;
|
|
22
|
+
serialize(node: SerovalNode): string;
|
|
23
|
+
}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import { SerializationContext } from '../context';
|
|
2
1
|
import { AsyncServerValue, ErrorValue } from '../types';
|
|
3
|
-
import { SerovalNode, SerovalReferenceNode } from './types';
|
|
4
2
|
export declare function getErrorConstructor(error: ErrorValue): "EvalError" | "RangeError" | "ReferenceError" | "SyntaxError" | "TypeError" | "URIError" | "Error";
|
|
5
3
|
export declare function getErrorOptions(error: Error): Record<string, any> | undefined;
|
|
6
4
|
export declare function getIterableOptions(obj: Iterable<any>): Record<string, unknown> | undefined;
|
|
7
|
-
export declare function isReferenceInStack(ctx: SerializationContext, node: SerovalNode): node is SerovalReferenceNode;
|
|
8
5
|
export declare function isIterable(value: unknown): value is Iterable<AsyncServerValue>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PrimitiveValue } from '../types';
|
|
2
2
|
export declare const enum SerovalNodeType {
|
|
3
3
|
Primitive = 0,
|
|
4
4
|
BigInt = 1,
|
|
@@ -18,130 +18,111 @@ export declare const enum SerovalNodeType {
|
|
|
18
18
|
BigIntTypedArray = 15
|
|
19
19
|
}
|
|
20
20
|
export interface SerovalBaseNode {
|
|
21
|
-
t
|
|
22
|
-
s
|
|
23
|
-
i
|
|
24
|
-
l
|
|
25
|
-
c
|
|
26
|
-
d
|
|
27
|
-
m
|
|
28
|
-
n
|
|
29
|
-
a
|
|
30
|
-
}
|
|
31
|
-
export
|
|
21
|
+
t: SerovalNodeType;
|
|
22
|
+
s: PrimitiveValue | undefined;
|
|
23
|
+
i: number | undefined;
|
|
24
|
+
l: number | undefined;
|
|
25
|
+
c: string | undefined;
|
|
26
|
+
d: SerovalDictionaryNode | undefined;
|
|
27
|
+
m: string | undefined;
|
|
28
|
+
n: SerovalNode | undefined;
|
|
29
|
+
a: SerovalNode[] | undefined;
|
|
30
|
+
}
|
|
31
|
+
export interface SerovalObjectRecordNode {
|
|
32
32
|
k: string[];
|
|
33
33
|
v: SerovalNode[];
|
|
34
34
|
s: number;
|
|
35
|
-
constructor(k: string[], v: SerovalNode[], s: number);
|
|
36
35
|
}
|
|
37
|
-
export
|
|
36
|
+
export interface SerovalMapRecordNode {
|
|
38
37
|
k: SerovalNode[];
|
|
39
38
|
v: SerovalNode[];
|
|
40
39
|
s: number;
|
|
41
|
-
constructor(k: SerovalNode[], v: SerovalNode[], s: number);
|
|
42
40
|
}
|
|
43
41
|
export type SerovalDictionaryNode = SerovalObjectRecordNode | SerovalMapRecordNode;
|
|
44
|
-
export
|
|
42
|
+
export interface SerovalPrimitiveNode extends SerovalBaseNode {
|
|
45
43
|
t: SerovalNodeType.Primitive;
|
|
46
|
-
s: string | number | null;
|
|
47
|
-
constructor(current: string | number | null);
|
|
48
44
|
}
|
|
49
|
-
export
|
|
45
|
+
export interface SerovalReferenceNode extends SerovalBaseNode {
|
|
50
46
|
t: SerovalNodeType.Reference;
|
|
51
47
|
i: number;
|
|
52
|
-
constructor(id: number);
|
|
53
48
|
}
|
|
54
|
-
export
|
|
49
|
+
export interface SerovalBigIntNode extends SerovalBaseNode {
|
|
55
50
|
t: SerovalNodeType.BigInt;
|
|
56
51
|
s: string;
|
|
57
|
-
constructor(current: bigint);
|
|
58
52
|
}
|
|
59
|
-
export
|
|
53
|
+
export interface SerovalDateNode extends SerovalBaseNode {
|
|
60
54
|
t: SerovalNodeType.Date;
|
|
61
55
|
i: number;
|
|
62
56
|
s: string;
|
|
63
|
-
constructor(id: number, current: Date);
|
|
64
57
|
}
|
|
65
|
-
export
|
|
58
|
+
export interface SerovalRegExpNode extends SerovalBaseNode {
|
|
66
59
|
t: SerovalNodeType.RegExp;
|
|
67
60
|
i: number;
|
|
68
61
|
s: string;
|
|
69
|
-
constructor(id: number, current: RegExp);
|
|
70
62
|
}
|
|
71
|
-
export
|
|
63
|
+
export interface SerovalTypedArrayNode extends SerovalBaseNode {
|
|
72
64
|
t: SerovalNodeType.TypedArray;
|
|
73
65
|
i: number;
|
|
74
66
|
s: string;
|
|
75
67
|
l: number;
|
|
76
68
|
c: string;
|
|
77
|
-
constructor(id: number, current: TypedArrayValue);
|
|
78
69
|
}
|
|
79
|
-
export
|
|
70
|
+
export interface SerovalBigIntTypedArrayNode extends SerovalBaseNode {
|
|
80
71
|
t: SerovalNodeType.BigIntTypedArray;
|
|
81
72
|
i: number;
|
|
82
73
|
s: string;
|
|
83
74
|
l: number;
|
|
84
75
|
c: string;
|
|
85
|
-
constructor(id: number, current: BigIntTypedArrayValue);
|
|
86
76
|
}
|
|
87
77
|
export type SerovalSemiPrimitiveNode = SerovalBigIntNode | SerovalDateNode | SerovalRegExpNode | SerovalTypedArrayNode | SerovalBigIntTypedArrayNode;
|
|
88
|
-
export
|
|
78
|
+
export interface SerovalSetNode extends SerovalBaseNode {
|
|
89
79
|
t: SerovalNodeType.Set;
|
|
90
|
-
i: number;
|
|
91
80
|
a: SerovalNode[];
|
|
92
|
-
|
|
81
|
+
i: number;
|
|
93
82
|
}
|
|
94
|
-
export
|
|
83
|
+
export interface SerovalMapNode extends SerovalBaseNode {
|
|
95
84
|
t: SerovalNodeType.Map;
|
|
96
|
-
i: number;
|
|
97
85
|
d: SerovalMapRecordNode;
|
|
98
|
-
|
|
86
|
+
i: number;
|
|
99
87
|
}
|
|
100
|
-
export
|
|
88
|
+
export interface SerovalArrayNode extends SerovalBaseNode {
|
|
101
89
|
t: SerovalNodeType.Array;
|
|
102
|
-
i: number;
|
|
103
90
|
a: SerovalNode[];
|
|
104
|
-
|
|
91
|
+
i: number;
|
|
105
92
|
}
|
|
106
|
-
export
|
|
93
|
+
export interface SerovalObjectNode extends SerovalBaseNode {
|
|
107
94
|
t: SerovalNodeType.Object;
|
|
108
|
-
i: number;
|
|
109
95
|
d: SerovalObjectRecordNode;
|
|
110
|
-
|
|
96
|
+
i: number;
|
|
111
97
|
}
|
|
112
|
-
export
|
|
98
|
+
export interface SerovalNullConstructorNode extends SerovalBaseNode {
|
|
113
99
|
t: SerovalNodeType.NullConstructor;
|
|
114
|
-
i: number;
|
|
115
100
|
d: SerovalObjectRecordNode;
|
|
116
|
-
|
|
101
|
+
i: number;
|
|
117
102
|
}
|
|
118
|
-
export
|
|
103
|
+
export interface SerovalPromiseNode extends SerovalBaseNode {
|
|
119
104
|
t: SerovalNodeType.Promise;
|
|
120
|
-
i: number;
|
|
121
105
|
n: SerovalNode;
|
|
122
|
-
|
|
106
|
+
i: number;
|
|
123
107
|
}
|
|
124
|
-
export
|
|
108
|
+
export interface SerovalErrorNode extends SerovalBaseNode {
|
|
125
109
|
t: SerovalNodeType.Error;
|
|
126
|
-
i: number;
|
|
127
110
|
c: string;
|
|
128
111
|
m: string;
|
|
129
112
|
d: SerovalObjectRecordNode | undefined;
|
|
130
|
-
|
|
113
|
+
i: number;
|
|
131
114
|
}
|
|
132
|
-
export
|
|
115
|
+
export interface SerovalAggregateErrorNode extends SerovalBaseNode {
|
|
133
116
|
t: SerovalNodeType.AggregateError;
|
|
134
|
-
i: number;
|
|
135
117
|
m: string;
|
|
136
118
|
d: SerovalObjectRecordNode | undefined;
|
|
137
119
|
n: SerovalNode;
|
|
138
|
-
|
|
120
|
+
i: number;
|
|
139
121
|
}
|
|
140
|
-
export
|
|
122
|
+
export interface SerovalIterableNode extends SerovalBaseNode {
|
|
141
123
|
t: SerovalNodeType.Iterable;
|
|
142
|
-
i: number;
|
|
143
124
|
d: SerovalObjectRecordNode | undefined;
|
|
144
125
|
a: SerovalNode[];
|
|
145
|
-
|
|
126
|
+
i: number;
|
|
146
127
|
}
|
|
147
128
|
export type SerovalNode = SerovalPrimitiveNode | SerovalReferenceNode | SerovalSemiPrimitiveNode | SerovalSetNode | SerovalMapNode | SerovalArrayNode | SerovalObjectNode | SerovalNullConstructorNode | SerovalPromiseNode | SerovalErrorNode | SerovalAggregateErrorNode | SerovalIterableNode;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "seroval",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.4.0-alpha.
|
|
4
|
+
"version": "0.4.0-alpha.14",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
7
7
|
"src"
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
"typesVersions": {
|
|
65
65
|
"*": {}
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "7a287f3985c45ba331913f7633ca1ebf31c502ac"
|
|
68
68
|
}
|
package/src/context.ts
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
/* eslint-disable prefer-object-spread */
|
|
2
|
-
/* eslint-disable max-classes-per-file */
|
|
3
1
|
import { parseTargets } from './compat';
|
|
4
2
|
import getIdentifier from './get-identifier';
|
|
5
3
|
|
|
6
4
|
interface IndexAssignment {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
t: 'index';
|
|
6
|
+
s: string;
|
|
7
|
+
k: undefined;
|
|
8
|
+
v: string;
|
|
10
9
|
}
|
|
11
10
|
|
|
12
11
|
interface MapAssignment {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
t: 'map';
|
|
13
|
+
s: string;
|
|
14
|
+
k: string;
|
|
15
|
+
v: string;
|
|
17
16
|
}
|
|
18
17
|
|
|
19
18
|
interface SetAssignment {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
t: 'set';
|
|
20
|
+
s: string;
|
|
21
|
+
k: undefined;
|
|
22
|
+
v: string;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
// Array of assignments to be done (used for recursion)
|
|
@@ -28,6 +28,27 @@ export type Assignment =
|
|
|
28
28
|
| MapAssignment
|
|
29
29
|
| SetAssignment;
|
|
30
30
|
|
|
31
|
+
export interface ParserContext {
|
|
32
|
+
refs: Map<unknown, number>;
|
|
33
|
+
markedRefs: Set<number>;
|
|
34
|
+
features: number;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface SerializationContext {
|
|
38
|
+
stack: number[];
|
|
39
|
+
// Map tree refs to actual refs
|
|
40
|
+
validRefs: number[];
|
|
41
|
+
refSize: number;
|
|
42
|
+
// Refs that are...referenced
|
|
43
|
+
markedRefs: Set<number>;
|
|
44
|
+
// Variables
|
|
45
|
+
vars: string[];
|
|
46
|
+
// Array of assignments to be done (used for recursion)
|
|
47
|
+
assignments: Assignment[];
|
|
48
|
+
// Supported features
|
|
49
|
+
features: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
31
52
|
export interface Options {
|
|
32
53
|
target: string | string[];
|
|
33
54
|
}
|
|
@@ -36,55 +57,38 @@ const DEFAULT_OPTIONS: Options = {
|
|
|
36
57
|
target: 'es2023',
|
|
37
58
|
};
|
|
38
59
|
|
|
39
|
-
export
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const result = Object.assign({}, DEFAULT_OPTIONS, options || {});
|
|
48
|
-
this.features = parseTargets(result.target);
|
|
49
|
-
}
|
|
60
|
+
export function createParserContext(options: Partial<Options> = {}): ParserContext {
|
|
61
|
+
// eslint-disable-next-line prefer-object-spread
|
|
62
|
+
const result = Object.assign({}, DEFAULT_OPTIONS, options || {});
|
|
63
|
+
return {
|
|
64
|
+
markedRefs: new Set(),
|
|
65
|
+
refs: new Map(),
|
|
66
|
+
features: parseTargets(result.target),
|
|
67
|
+
};
|
|
50
68
|
}
|
|
51
69
|
|
|
52
70
|
export interface SerializationOptions {
|
|
53
|
-
markedRefs:
|
|
71
|
+
markedRefs: number[] | Set<number>;
|
|
54
72
|
features: number;
|
|
55
73
|
}
|
|
56
74
|
|
|
57
|
-
export
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
// Array of assignments to be done (used for recursion)
|
|
69
|
-
assignments: Assignment[] = [];
|
|
70
|
-
|
|
71
|
-
// Supported features
|
|
72
|
-
features: number;
|
|
73
|
-
|
|
74
|
-
// Refs that are...referenced
|
|
75
|
-
markedRefs: Record<number, number>;
|
|
76
|
-
|
|
77
|
-
constructor(options: SerializationOptions) {
|
|
78
|
-
this.features = options.features;
|
|
79
|
-
this.markedRefs = options.markedRefs;
|
|
80
|
-
}
|
|
75
|
+
export function createSerializationContext(options: SerializationOptions): SerializationContext {
|
|
76
|
+
return {
|
|
77
|
+
stack: [],
|
|
78
|
+
vars: [],
|
|
79
|
+
assignments: [],
|
|
80
|
+
validRefs: [],
|
|
81
|
+
refSize: 0,
|
|
82
|
+
features: options.features,
|
|
83
|
+
markedRefs: new Set(options.markedRefs),
|
|
84
|
+
};
|
|
81
85
|
}
|
|
82
86
|
|
|
83
87
|
/**
|
|
84
88
|
* Increments the number of references the referenced value has
|
|
85
89
|
*/
|
|
86
90
|
export function markRef(ctx: ParserContext | SerializationContext, current: number) {
|
|
87
|
-
ctx.markedRefs
|
|
91
|
+
ctx.markedRefs.add(current);
|
|
88
92
|
}
|
|
89
93
|
|
|
90
94
|
/**
|