nv-buf-serde 0.0.2

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.
Files changed (52) hide show
  1. package/DIST/dist.js +25 -0
  2. package/README.md +382 -0
  3. package/TEST/common.js +435 -0
  4. package/TEST/hole-tst.js +31 -0
  5. package/TEST/nd-benchmark.js +17 -0
  6. package/TEST/r-1bstr.js +33 -0
  7. package/TEST/r-2bstr.js +33 -0
  8. package/TEST/r-ab-and-abvw.js +48 -0
  9. package/TEST/r-bi.js +33 -0
  10. package/TEST/r-date.js +28 -0
  11. package/TEST/r-double.js +33 -0
  12. package/TEST/r-int-not-smi.js +28 -0
  13. package/TEST/r-mp-st-circular.js +105 -0
  14. package/TEST/r-odd-ball.js +33 -0
  15. package/TEST/r-packed-double.js +38 -0
  16. package/TEST/r-packed-smi.js +35 -0
  17. package/TEST/r-packed-with-attr.js +40 -0
  18. package/TEST/r-prim-wrap.js +35 -0
  19. package/TEST/r-rgx.js +28 -0
  20. package/TEST/r-smi.js +28 -0
  21. package/TEST/read-bi-contents.js +20 -0
  22. package/TEST/run.js +43 -0
  23. package/TEST/run.sh +29 -0
  24. package/TEST/serde-benchmark.js +17 -0
  25. package/TEST/tst.json +114 -0
  26. package/TEST/tst.v8ser +0 -0
  27. package/TEST/w-1bstr.js +34 -0
  28. package/TEST/w-2bstr.js +34 -0
  29. package/TEST/w-ab-and-abvw.js +60 -0
  30. package/TEST/w-bi.js +33 -0
  31. package/TEST/w-date.js +33 -0
  32. package/TEST/w-double.js +35 -0
  33. package/TEST/w-int-not-smi.js +37 -0
  34. package/TEST/w-mp-st-circular.js +60 -0
  35. package/TEST/w-odd-ball.js +43 -0
  36. package/TEST/w-packed-double.js +40 -0
  37. package/TEST/w-packed-smi.js +38 -0
  38. package/TEST/w-packed-with-attr.js +41 -0
  39. package/TEST/w-prim-wrap.js +41 -0
  40. package/TEST/w-rgx.js +33 -0
  41. package/TEST/w-smi.js +36 -0
  42. package/build.sh +1 -0
  43. package/const.js +181 -0
  44. package/ctx.js +89 -0
  45. package/fixed-cfg.js +6 -0
  46. package/index.js +27 -0
  47. package/misc.js +112 -0
  48. package/package.json +22 -0
  49. package/r.js +646 -0
  50. package/restrict.js +48 -0
  51. package/w.js +510 -0
  52. package/zero-nid.js +21 -0
package/DIST/dist.js ADDED
@@ -0,0 +1,25 @@
1
+ var v8serde=(()=>{var g=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var R=g((oa,tt)=>{var ds=e=>e===void 0,fs=e=>e===null,X=e=>e==null,bs=e=>e===!0,ys=e=>e===!1,et=e=>e===!0||e===!1,gs=e=>X(e)||et(e),ks=e=>X(e)?null:e,hs=e=>X(e)?void 0:e;tt.exports={_u:void 0,_n:null,_t:!0,_f:!1,is_untf:gs,is_unnu:X,is_un:ds,is_nu:fs,is_bl:et,is_tru:bs,is_fls:ys,unize:hs,nuize:ks}});var st=g((_a,nt)=>{var{_u:ia,_n:aa,_t:rt,_f:la}=R();nt.exports={treat_array_buffer_views_as_host_objects_:rt,suppress_deserialization_errors_:rt}});var it=g((ca,ot)=>{ot.exports={kTheHole:"the hole element will be replaced by undefined",kSparseArray:`
2
+ NOT support. only dense/packed_smi/packed_double.
3
+ hard to explain this, refer to ./TEST/hole-tst.js
4
+ this script will make sparse-array
5
+ `,kSharedArrayBuffer:"treated as normal ArrayBuffer",kArrayBufferView:`
6
+ 0. array-buffer-view will be treated as kHostObject,for compatible with nodjes delegate,
7
+ event if several array-buf-views refer to the same buffer, still be deepcopy:
8
+ var ab = new ArrayBuffer(4);
9
+ var u8a = new Uint8Array(ab);
10
+ var u16a = new Uint16Array(ab);
11
+ var ary = [ab,u8a,u16a];
12
+ var dupe_ary = der(ser(ary));
13
+ /*
14
+ 1. dupe_ary[0]
15
+ 2. dupe_ary[1].buffer
16
+ 3. dupe_ary[2].buffer
17
+
18
+ [1. 2. 3.] are different buffer, this means:
19
+ the abview NOT support keeping the ref-of-<.buffer>-relations
20
+ */
21
+ `,JSMap:"extra attributes set On Map will be dropped, for compatible to current v8-impl",JSSet:"extra attributes set On Set will be dropped, for compatible to current v8-impl",RegExp:"extra attributes set On RegExp will be dropped, for compatible to current v8-impl",Date:"extra attributes set On Date will be dropped, for compatible to current v8-impl",PrimitiveWrapper:`
22
+ extra attributes set On PrimitiveWrapper will be dropped, for compatible to current v8-impl;
23
+ not support <new BigInt>, in c++ layer ,it can be done, in js-layer ,impossible
24
+ `,"Error'message":"Error'message treated as string","Error'stack":"Error'stack treated as string",kVerifyObjectCount:"no verify",throwDetachedArrayBufferError:"dont know how to get this state in js-layer",kArrayBufferTransfer:"hard to do this in js-layer",kSharedObject:"hard to do this in js-layer",kWasmModuleTransfer:"hard to do this in js-layer",kWasmMemoryTransfer:"hard to do this in js-layer",ITERATOR:"dont know how to get the iter cursor in js-layer, treated as a {}",ATOMICS:"dont know how to do this, treated as a {}",FPG:"function | lambda | promise| generator| all treated as a {}",Proxy:"hard to do this in browser, so treated as the-target-be-proxied"}});var x=g((fa,lt)=>{var{_u:ps,_n:ua,_t:ye,_f:da}=R(),As={kVersion:255,kPadding:0,kVerifyObjectCount:63,kTheHole:45,kUndefined:95,kNull:48,kTrue:84,kFalse:70,kInt32:73,kUint32:85,kDouble:78,kBigInt:90,kUtf8String:83,kOneByteString:34,kTwoByteString:99,kObjectReference:94,kBeginJSObject:111,kEndJSObject:123,kBeginSparseJSArray:97,kEndSparseJSArray:64,kBeginDenseJSArray:65,kEndDenseJSArray:36,kDate:68,kTrueObject:121,kFalseObject:120,kNumberObject:110,kBigIntObject:122,kStringObject:115,kRegExp:82,kBeginJSMap:59,kEndJSMap:58,kBeginJSSet:39,kEndJSSet:44,kArrayBuffer:66,kResizableArrayBuffer:126,kArrayBufferTransfer:116,kArrayBufferView:86,kSharedArrayBuffer:117,kSharedObject:112,kWasmModuleTransfer:119,kHostObject:92,kWasmMemoryTransfer:109,kError:114,kLegacyReservedMessagePort:77,kLegacyReservedBlob:98,kLegacyReservedBlobIndex:105,kLegacyReservedFile:102,kLegacyReservedFileIndex:101,kLegacyReservedDOMFileSystem:100,kLegacyReservedFileList:108,kLegacyReservedFileListIndex:76,kLegacyReservedImageData:35,kLegacyReservedImageBitmap:103,kLegacyReservedImageBitmapTransfer:71,kLegacyReservedOffscreenCanvas:72,kLegacyReservedCryptoKey:75,kLegacyReservedRTCCertificate:107},at={kInt8Array:98,kUint8Array:66,kUint8ClampedArray:67,kInt16Array:119,kUint16Array:87,kInt32Array:100,kUint32Array:68,kFloat32Array:102,kFloat64Array:70,kBigInt64Array:113,kBigUint64Array:81,kDataView:63};Object.defineProperty(at,"UNUSED_",{get:function(){return ye}});var ge=Symbol("#kNodeFastBuffer"),Ss={kInt8Array:0,kUint8Array:1,kUint8ClampedArray:2,kInt16Array:3,kUint16Array:4,kInt32Array:5,kUint32Array:6,kFloat32Array:7,kFloat64Array:8,kDataView:9,kNodeFastBuffer:10,kBigInt64Array:11,kBigUint64Array:12},be=class extends Uint8Array{[ge]=ye},ms=e=>e[ge]===ye,ws=e=>Object.prototype.toString.call(e),Es=e=>{let t=ws(e);return t==="[object Int8Array]"?0:t==="[object Uint8Array]"?1:t==="[object Uint8ClampedArray]"?2:t==="[object Int16Array]"?3:t==="[object Uint16Array]"?4:t==="[object Int32Array]"?5:t==="[object Uint32Array]"?6:t==="[object Float32Array]"?7:t==="[object Float64Array]"?8:t==="[object DataView]"?9:t==="[object BigInt64Array]"?11:t==="[object BigUint64Array]"?12:-1},Bs=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,DataView,be,BigInt64Array,BigUint64Array],Is={kEvalErrorPrototype:69,kRangeErrorPrototype:82,kReferenceErrorPrototype:70,kSyntaxErrorPrototype:83,kTypeErrorPrototype:84,kUriErrorPrototype:85,kMessage:109,kCause:99,kStack:115,kEnd:46},Os="#___kCantBeSered___",Rs=(e,t)=>({id:e,kCantBeSered:t}),Ts="#___kUnknown___",js=()=>({kUnknown:ps}),Us="v8ser";lt.exports={CODEC_NAME:Us,kNodeFastBufferSym:ge,IsNodeFastBuffer:ms,SerializationTag:As,V8_ArrayBufferViewTag:at,ArrayBufferViewTag:Ss,ArrayBufferViewIndexToCtor:Bs,arrayBufferViewTypeToIndex:Es,ErrorTag:Is,kCantBeSered:Os,CreatFakeCantBeSered:Rs,kUnknown:Ts,CreatUnknown:js}});var N=g((ba,yt)=>{var Ds=Object,D={un:"undefined",bl:"boolean",str:"string",num:"number",obj:"object",sym:"symbol",bi:"bigint",func_like:"function"},M=(e,t)=>typeof e===t,Ms=(e,t)=>e instanceof t,Ns=e=>M(e,D.str),vs=e=>M(e,D.sym),qs=e=>M(e,D.bi),ct=e=>M(e,D.num),ut=e=>Ds.is(e,NaN),dt=e=>e===1/0,ft=e=>e===-1/0,bt=e=>ut(e)||dt(e)||ft(e),Cs=e=>!bt(e)&&ct(e),Fs=e=>1/e===1/0,Js=e=>1/e===-1/0,Ws=e=>M(e,D.func_like);yt.exports={TNAMED:D,typof:M,is_str:Ns,is_num:ct,is_sym:vs,is_bi:qs,istof:Ms,is_abnormal_num:bt,is_nan:ut,is_pos_infi:dt,is_neg_infi:ft,is_normal_num:Cs,is_pos_zero:Fs,is_neg_zero:Js,is_func_like:Ws}});var K=g((ya,It)=>{var gt=-(2n**31n),kt=2n**31n-1n,ht=e=>e>=-2147483648&&e<=2147483647,Ls=e=>v>=gt&&v<=kt,ke=e=>BigInt(e),he=e=>Number(e),pt=-(2**30),At=2**30-1,Ps=-(2n**30n),Vs=2n**30n-1n,St=e=>e>=pt&&e<=At,mt=e=>e<<1^e>>31,pe=e=>e<<1n^e>>63n,wt=e=>he(pe(ke(e))),Et=e=>e>>1^-(e&1),Ae=e=>e>>1n^-(e&1n),Bt=e=>he(Ae(ke(e))),zs=e=>typeof e=="bigint"?pe(e):St(e)?mt(e):wt(e),Hs=e=>typeof e=="bigint"?Ae(e):ht(e)?Et(e):Bt(e);It.exports={MIN_SMI:-2147483648,MAX_SMI:2147483647,MIN_SMI_BI:gt,MAX_SMI_BI:kt,is_smi:ht,is_smi_bi:Ls,_bi:ke,_num:he,_encd_smi:mt,_encd_bi:pe,_encd_between_smi_bi:wt,_decd_smi:Et,_decd_bi:Ae,_decd_between_smi_bi:Bt,MIN_SMI_CAN_BE_ENCDED:pt,MAX_SMI_CAN_BE_ENCDED:At,MIN_SMI_BI_CAN_BE_ENCDED:Ps,MAX_SMI_BI_CAN_BE_ENCDED:Vs,is_smi_can_be_encded:St,encd:zs,decd:Hs}});var Se=g((ga,Ot)=>{var Gs=String,Xs=e=>Gs.fromCodePoint(e);Ot.exports={cd2ch:Xs}});var F=g((ka,Ut)=>{var Rt=e=>(e>>8&252)===216,Tt=e=>(e>>8&252)===220,xs=e=>!Rt(e)&&!Tt(e),jt=(e,t)=>((e&1023)<<10)+(t&1023)+65536,Ks=(e,t)=>t===1?e[0]:jt(e[0],e[1]);Ut.exports={is_high_surrogate:Rt,is_low_surrogate:Tt,is_not_surrogate:xs,surrogate_to_code:jt,b16arr_to_code:Ks}});var qt=g((ha,vt)=>{var J=F(),Ys=0,Dt=2,Mt=5,Nt=["INIT","N","H","L","R","ERROR"],W={in_error_must_reset:"in_error_must_reset",fst_b16_invalid:"fst b16 cant be <0b1111_11xx_xxxx_xxxx>",low_invalid:"low must be <0b1111_11xx_xxxx_xxxx>"},Zs=e=>{e[0]=3,e[1]=e[1]&240;for(let t=2;t<5;t++)e[t]=0},me=(e,t,r)=>{if(e.is_auto_recover_enabled()){e.reset();return}else throw e[1]=(e[1]&240)+Mt,e[2]=t,new Error(r)},T=class extends Uint16Array{constructor(t=!0){super(5),this[0]=3,this[1]=t?16:0,this[2]=0}get cursor_(){return this[0]}get state_code_(){return this[1]&15}get state_name_(){return Nt[this.state_code_]}is_init(){return this.state_code_===Ys}is_high(){return this.state_code_===Dt}is_err(){return this.state_code_===Mt}is_auto_recover_enabled(){return(this[1]&240)===1}enable_auto_recover(){this[1]=this[1]|16}disable_auto_recover(){this[1]=this[1]&15}get lefted_(){return Array.from(this).slice(3,this[0])}get err_b16_(){return this[2]}input(t){let r=t.charCodeAt(0);if(this.is_init())if(J.is_high_surrogate(r)){this[3]=r,this[1]=(this[1]&240)+Dt,this[0]++;return}else return J.is_low_surrogate(r)?me(this,r,W.fst_b16_invalid):(this.reset(),r);else{if(this.is_high())return J.is_high_surrogate(r)?me(this,r,W.low_invalid):J.is_low_surrogate(r)?(r=J.surrogate_to_code(this[3],r),this.reset(),r):me(this,r,W.low_invalid);if(this.is_err())return new Error(W.in_error_must_reset)}}reset(){Zs(this)}dict(){return{cursor:this[0],state:this.state_name_,data:this.lefted_,err_b16:this.err_b16_}}get[Symbol.toStringTag](){return JSON.stringify(this.dict())}};T.ALGN_OFFSET=3;T.ALGN_SIZE=5;var $s=new T(!0),Qs=new T(!1);vt.exports={STATES:Nt,ERRORS:W,Mach:T,auto_recover_mach:$s,mach:Qs}});var Ft=g((pa,Ct)=>{Ct.exports={def:F(),mach:qt()}});var Pt=g((Aa,Lt)=>{var{is_high_surrogate:we}=F(),Jt=(e,t)=>{let r=e.length,s=0,n=0,o=-1;for(;!(n>=r);)o=e[n].charCodeAt(0),we(o)?(++n,++n):(o===t&&++s,++n);return s},Wt=(e,t,r)=>{let s=e.length,n=0,o=0,a=-1;for(;!(o>=s);)a=e[o].charCodeAt(0),we(a)&&(a===t&&(a=e[o+1].charCodeAt(0),a===r&&++n),++o),++o;return n},eo=e=>{let t=e.charCodeAt(0);return we(t)?[t,e.charCodeAt(1)]:[t,-1]},to=(e,t)=>{let[r,s]=_is_u16u16_char(t);return s!=-1?Wt(e,r,s):Jt(e,r)};Lt.exports={_char_freq_if_u16:Jt,_char_freq_if_u16u16:Wt,_parse_char:eo,char_freq:to}});var zt=g((ma,Vt)=>{var{cd2ch:Sa}=Se(),{is_high_surrogate:ro}=F(),Y=(e,t,r)=>{let s=e[r].charCodeAt(0);return ro(s)?[e.codePointAt(r),r,r+2]:[s,r,r+1]},Ee=(e,t)=>t===0?[-1,-1,0]:Y(e,t,0),no=(e,t=(cd,ci,offset))=>{let r=e.length,s=0,[n,o,a]=Ee(e,r);for(t(n,s,o),++s,o=a;o<r;)[n,o,a]=Y(e,r,o),t(n,s,o),++s,o=a},so=e=>{let t=e.length,r=Array.from({length:t}).map(k=>[-1,-1]),s=Array.from({length:t}).map(k=>-1),n=Array.from({length:t}).map(k=>-1),o=Array.from({length:t}).map(k=>-1),a=0,[_,l,d]=Ee(e,t);for(r[a][0]=0,r[a][1]=0,n[a]=_,s[a]=l,o[a]=d-l,++a,l=d;l<t;){[_,l,d]=Y(e,t,l);let k=r[a-1],h=n[k[0]];_===h?(r[a][0]=k[0]+1,r[a][1]=o[k[0]]):(r[a][0]=0,r[a][1]=0),n[a]=_,s[a]=l,o[a]=o[a-1]+(d-l),++a,l=d}return{mx:r,cd:n,of:s,sz:o}},oo=(e,t,r,s,n)=>r+n-e.mx[s-t-1][1];Vt.exports={_fst:Ee,_next:Y,_while:no,max_cmmn_psfix:so,mvto:oo}});var Be=g((wa,Gt)=>{var Ht=e=>{e=e-65536;let t=e&1023|56320;return[e>>10|55296,t]},io=e=>{if(e<65536){let t=e&255,r=e>>8;return[t,r]}else{let[t,r]=Ht(e),s=t&255,n=t>>8,o=r&255,a=r>>8;return[s,n,o,a]}};Gt.exports={MAX_CODE:1114111,_split_to_hilo:Ht,split:io}});var xt=g((Ea,Xt)=>{var ao=Be(),Ie=class{u8a;ei=0;cnt=0;constructor(t){this.u8a=new Uint8Array(t)}get view_(){return this.u8a.subarray(0,this.ei)}input(t){let r=ao.split(t);switch(++this.cnt,r.length){case 2:{this.u8a[this.ei]=r[0],++this.ei;break}case 4:{this.u8a[this.ei]=r[0],++this.ei,this.u8a[this.ei]=r[1],++this.ei,this.u8a[this.ei]=r[2],++this.ei,this.u8a[this.ei]=r[3],++this.ei;break}}return r}reset(){this.ei=0,this.cnt=0}};Xt.exports={Mach:Ie}});var Yt=g((Ba,Kt)=>{Kt.exports={def:Be(),mach:xt()}});var Z=g((Ia,Zt)=>{var lo=Se(),_o=Ft(),co=Pt(),uo=zt(),fo=Yt();Zt.exports={cmmd:lo,decd:_o,encd:fo,freq:co,handle:uo}});var ee=g((Ua,er)=>{var bo=Object.is,{istof:Oa,is_num:yo}=N(),{_u:Ra,_n:Ta,_t:Q,_f:$}=R(),go=K(),ja=Z(),ko=e=>{let t=0;do t++,e>>=7;while(e);return t},$t=e=>{for(let t=0;t<e.length;++t)if(!(e[t].charCodeAt(0)<256))return $;return Q},ho=e=>!$t(e),po=(e,t)=>{let s=new DataView(e.buffer).getFloat64(t,Q);return bo(s,NaN)},Ao={PACKED_SMI_ELEMENTS:0,HOLEY_SMI_ELEMENTS:1,PACKED_DOUBLE_ELEMENTS:2,HOLEY_DOUBLE_ELEMENTS:3,PACKED_ELEMENTS:4,HOLEY_ELEMENTS:5},So=e=>{let t=0;return e.forEach(r=>{++t}),t},mo=e=>GetArrayForOfLength(e)!==e.length,Qt=e=>go.is_smi(e)&&Number.isInteger(e)&&!Object.is(e,-0),wo=e=>{let t=Q,r=Q,s=0;for(;s<e.length;){if(!(t&&Qt(e[s])))if(yo(e[s]))t=$;else{t=$,r=$;break}++s}return{is_packed_smi:t,is_packed_double:r}},Eo=new TextDecoder,Bo=(e,t,r,s)=>{let n=new Uint8Array(e.buffer,t,r);return s?s(n):Eo.decode(n)},Io=new TextDecoder("latin1"),Oo=(e,t,r)=>Io.decode(e.subarray(t,t+r)),Ro=new TextDecoder("utf-16"),To=(e,t,r)=>Ro.decode(e.subarray(t,t+r));er.exports={BytesNeededForVarint:ko,IsOneByte:$t,IsTwoByte:ho,IsNaNAt:po,IsSmi:Qt,kFastElementsKindSequence:Ao,GetArrayForEachLength:So,IsArrayHasHole:mo,GetArrayPackedInfo:wo,Utf8U8aToStr:Bo,Latin1U8aToStr:Oo,JstrU8aToStr:To}});var Re=g((Da,rr)=>{var tr=2**53-1,Oe=class extends Array{constructor(){super(),this[0]=0}get id(){return this[0]}next(){let t=this[0],r=this[0]+1;return r-1===tr&&(r=0),this[0]=r,t}},jo=()=>new Oe;rr.exports={MAX_NID:tr,creat_nid:jo}});var re=g((Na,or)=>{var Uo=Array,{_u:sr,_n:Ma,_t:Do,_f:Mo}=R(),{creat_nid:No}=Re(),te=class extends WeakMap{#e=No();FindOrInsert(t){let r=this.get(t);if(r===sr){let s=this.#e.next();return this.set(t,s),[Mo,s]}else return[Do,r]}},vo=()=>new te,Te=class{idmap=new te},qo=()=>new Te,je=class extends Uo{HasObjectWithID(t){return this[t]!==sr}GetObjectWithID(t){return this[t]}AddObjectWithID(t){this.push(t)}get nid_(){return this.length}},nr=()=>new je;or.exports={creat_widmap:vo,creat_wctx:qo,creat_ridmap:nr,creat_rctx:nr}});var Zr=g((va,Yr)=>{var ne=Boolean,ir=Number,ar=String,lr=BigInt,_r=Date,cr=RegExp,ur=ArrayBuffer;globalThis.SharedArrayBuffer||(window.SharedArrayBuffer=ArrayBuffer,globalThis.SharedArrayBuffer=ArrayBuffer);var dr=globalThis.SharedArrayBuffer,fr=DataView,br=Array,yr=Set,gr=Map,kr=Uint8Array,hr=Uint8ClampedArray,pr=Int8Array,Ar=Uint16Array,Sr=Int16Array,mr=Uint32Array,wr=Int32Array,Er=BigUint64Array,Br=BigInt64Array,Ir=Float32Array,Or=Float64Array,Rr=WeakSet,Tr=WeakMap,jr=WeakRef,Ur=Error,{istof:b}=N(),Co=e=>b(e,_r),Fo=e=>b(e,cr),Jo=e=>b(e,ur),Wo=e=>b(e,dr),Lo=e=>b(e,fr),Dr=e=>b(e,kr),Mr=e=>b(e,hr),Nr=e=>b(e,pr),vr=e=>b(e,Ar),qr=e=>b(e,Sr),Cr=e=>b(e,mr),Fr=e=>b(e,wr),Jr=e=>b(e,Er),Wr=e=>b(e,Br),Lr=e=>b(e,Ir),Pr=e=>b(e,Or),Po=e=>Dr(e)||Mr(e)||Nr(e)||vr(e)||qr(e)||Cr(e)||Fr(e)||Jr(e)||Wr(e)||Lr(e)||Pr(e),Vo=br.isArray,zo=e=>b(e,yr),Ho=e=>b(e,gr),Vr=e=>b(e,Rr),zr=e=>b(e,Tr),Hr=e=>b(e,jr),Go=e=>Vr(e)||zr(e)||Hr(e),Gr=e=>b(e,ne),Xo=e=>b(e,ne)&&e.valueOf(),xo=e=>b(e,ne)&&!e.valueOf(),Xr=e=>b(e,ir),xr=e=>b(e,ar),Kr=e=>b(e,lr),Ko=e=>Gr(e)||Xr(e)||xr(e)||Kr(e),Yo=e=>b(e,Ur),Zo=e=>b(e,EvalError),$o=e=>b(e,RangeError),Qo=e=>b(e,ReferenceError),ei=e=>b(e,TypeError),ti=e=>b(e,URIError);Yr.exports={_DT:_r,_RGX:cr,_BL:ne,_N:ir,_S:ar,_BI:lr,_AB:ur,_SAB:dr,_DV:fr,_U8A:kr,_U8CA:hr,_I8A:pr,_U16A:Ar,_I16A:Sr,_U32A:mr,_I32A:wr,_U64A:Er,_I64A:Br,_F32A:Ir,_F64A:Or,_A:br,_ST:yr,_MP:gr,_WKST:Rr,_WKMP:Tr,_WKREF:jr,_ERR:Ur,is_dt:Co,is_rgx:Fo,is_ab:Jo,is_dv:Lo,is_sab:Wo,is_abvw:Po,is_u8a:Dr,is_u8ca:Mr,is_i8a:Nr,is_u16a:vr,is_i16a:qr,is_u32a:Cr,is_i32a:Fr,is_u64a:Jr,is_i64a:Wr,is_f32a:Lr,is_f64a:Pr,is_ary:Vo,is_st:zo,is_mp:Ho,is_weak:Go,is_wkst:Vr,is_wkmp:zr,is_wkref:Hr,is_prim_wrap:Ko,is_blo:Gr,is_truo:Xo,is_flso:xo,is_numo:Xr,is_stro:xr,is_bio:Kr,is_err:Yo,is_eval_err:Zo,is_rng_err:$o,is_ref_err:Qo,is_typ_err:ei,is_uri_err:ti}});var dn=g((Fa,un)=>{var ri=Symbol,L=ri.toStringTag,{_u:Ue,_n:qa,_t:Ca,_f:ni}=R(),{is_func_like:De}=N(),se=(e,t)=>Object.getOwnPropertyDescriptor(e,t),en=e=>se(e,"arguments"),tn=e=>en(e)===Ue,rn=e=>se(e,"prototype"),nn=e=>rn(e)===Ue,si=e=>e[L]==="Promise",sn=e=>e[L]==="Generator",on=e=>e[L]==="AsyncGenerator",oi=e=>sn(e)||on(e),q=e=>e.constructor.name==="AsyncFunction",ii=e=>De(e)&&nn(e),ai=e=>!q(e)&&is_lmbd(e),li=e=>q(e)&&is_lmbd(e),Me=e=>De(e)&&se(e,"arguments")!==Ue,an=e=>Me(e)&&!q(e),ln=e=>Me(e)&&q(e),_n=e=>e.constructor.name==="AsyncGeneratorFunction",cn=e=>e.constructor.name==="GeneratorFunction",oe=e=>cn(e)||_n(e),$r=e=>an(e)&&!oe(e),Qr=e=>ln(e)&&!oe(e),_i=e=>De(e)&&!oe(e)&&!q(e)&&tn(e),ui=e=>e[L]?e[L].includes("Iterator"):ni;un.exports={get_prop_desc:se,get_arguments_desc:en,hasno_arguments:tn,get_prot_desc:rn,hasno_prot_desc:nn,is_prms:si,is_sg:sn,is_ag:on,is_g:oi,_is_acallable:q,is_lmbd_or_mthd:ii,is_slmbd_or_smthd:ai,is_almbd_or_amthd:li,is_func:Me,is_sfunc_or_sgen:an,is_afunc_or_agen:ln,is_sfunc:$r,is_afunc:Qr,is_sgen:_n,is_agen:cn,is_gen:oe,is_sfunc:$r,is_afunc:Qr,is_cls:_i,is_iter:ui}});var Ne=g((Ja,yn)=>{var fn=["g","i","m","y","u","s","l","d","v"],bn={g:1,i:2,m:4,y:8,u:16,s:32,l:64,d:128,v:256},di=e=>{let t=0;for(let r=0;r<e.length;++r){let s=e[r];bn[s]&&(t=t+bn[s])}return t},fi=e=>{let t="";for(let r=0;r<fn.length;++r){let s=fn[r];e&1<<r&&(t=t+s)}return t};yn.exports={s2n:di,n2s:fi}});var kn=g((Wa,gn)=>{var le=2n**64n-1n,ie=e=>{let t=0;for(;e;)e=e>>64n,++t;return t},ae=e=>8*ie(e),ve=e=>{let t=0;e>=0n||(t=1,e=-e);let r=ae(e);return[t,r,e]},bi=e=>{let[t,r,s]=ve(e);return t|r<<1},yi=e=>{let t=e&1,r=e>>1;return{sign:t,data_blen:r}},gi=function*(e){for(;e;)yield e&le,e=e>>64n},ki=e=>e>=0n?ie(e):ie(-e),hi=e=>e>=0n?ae(e):ae(-e),pi=function*(e){for(e=e>=0?e:-e;e;)yield e&le,e=e>>64n},Ai=(e,t,r=0,s)=>{let[n,o,a]=ve(e),_=n|o,l=r,d=s(_);for(let S=0;S<d.length;++S)t[r+S]=d[S];r=r+d.length;let k=r,h=new DataView(t.buffer);for(;a;)h.setBigUint64(a&le,r,_t),r=r+8,a=a>>64n;return{sign:n,data:t,head_offset:l,body_offset:k,curr_offset:r}};gn.exports={MASK:le,count_if_pos:ie,data_byte_length_if_pos:ae,count:ki,data_byte_length:hi,_get_head:ve,get_encd_head:bi,decd_encd_head:yi,gen_body_if_pos:gi,gen_body:pi,use_with_get_var_int:Ai}});var Jn=g((Ha,Fn)=>{var{_u:V,_n:An,_t:Sn,_f:Ce,is_untf:Si}=R(),w=N(),A=Zr(),{is_prms:mi,is_g:wi,is_iter:Ei}=dn(),mn=K(),Bi=Z(),Ii=Ne(),hn=kn(),z=ee(),{SerializationTag:u,ErrorTag:m,ArrayBufferViewTag:La,IsNodeFastBuffer:Pa,kNodeFastBufferSym:Va,ArrayBufferViewIndexToCtor:za,CreatFakeCantBeSered:pn,arrayBufferViewTypeToIndex:Oi}=x(),Ri=re(),wn=(e,t=15,r)=>{e.push(u.kVersion),e.push(t)},f=(e,t,r)=>{e.push(t)},y=(e,t,r)=>{if(mn.is_smi_can_be_encded(t)){let s;do s=t&127|128,e.push(Number(s)),t=t>>7;while(t);return e[e.length-1]=e[e.length-1]&127,e}else{t=BigInt(t);let s;do s=t&0x7Fn|0x80n,e.push(Number(s)),t=t>>7n;while(t);return e[e.length-1]=e[e.length-1]&127,e}},En=(e,t,r,s=mn.encd)=>(t=s(t),y(e,t),e),H=(e,t,r,s)=>{s=s??new Float64Array(1),s[0]=t;let n=new Uint8Array(s.buffer);for(let o=0;o<8;++o)e.push(n[o]);return e},Bn=(e,t,r)=>{y(e,t.length);for(let s=0;s<t.length;++s)e.push(t.charCodeAt(s));return e},In=(e,t,r,s)=>{s=s??new Bi.encd.mach.Mach,y(e,t.length*2);for(let n=0;n<t.length;++n){let o=t.charCodeAt(n),[a,_]=s.input(o);e.push(a),e.push(_)}return e},_e=(e,t,r)=>{for(let s=0;s<t.length;++s)e.push(t[s]);return e},On=(e,t,r)=>{let s=u.kUndefined;switch(t){case V:s=u.kUndefined;break;case Ce:s=u.kFalse;break;case Sn:s=u.kTrue;break;case An:s=u.kNull;break}return f(e,s),e},ce=(e,t,r)=>(f(e,u.kInt32,r),En(e,t,r),e),Fe=(e,t,r)=>(f(e,u.kDouble,r),H(e,t,r),e),j=(e,t,r)=>{if(t|0,z.IsOneByte(t))f(e,u.kOneByteString,r),Bn(e,t,r);else{let s=t.length*2,n=z.BytesNeededForVarint(s);e.length+1+n&1&&f(e,u.kPadding,r),f(e,u.kTwoByteString,r),In(e,t,r)}return e},Rn=(e,t,r)=>(f(e,u.kDate,r),H(e,t.getTime(),r),e),Tn=(e,t,r)=>{f(e,u.kRegExp,r),j(e,t.source,r);let s=Ii.s2n(t.flags);return y(e,s,r),e},Je=(e,t,r)=>{let[s,n,o]=hn._get_head(t),a=s|n<<1;y(e,a,r);let _=new BigUint64Array(1),l=new Uint8Array(_.buffer);for(;o;)_[0]=o&hn.MASK,e.push(l[0],l[1],l[2],l[3],l[4],l[5],l[6],l[7]),o=o>>64n;return e},We=(e,t,r)=>(f(e,u.kBigInt,r),Je(e,t,r),e),Ti=(e,t,r)=>(e.push(t),e),qe=(e,t,r)=>(y(e,t,r),e),jn=(e,t,r)=>A.is_truo(t)?(f(e,u.kTrueObject,r),e):A.is_flso(t)?(f(e,u.kFalseObject,r),e):A.is_numo(t)?(f(e,u.kNumberObject,r),H(e,Number(t),r),e):A.is_stro(t)?(f(e,u.kStringObject,r),j(e,String(t),r),e):A.is_bio(t)?(f(e,u.kBigIntObject,r),Je(e,BigInt(t),r),e):V,Un=(e,t,r)=>{switch(f(e,u.kError,r),t.name){case"EvalError":{y(e,m.kEvalErrorPrototype,r);break}case"RangeError":{y(e,m.kRangeErrorPrototype,r);break}case"ReferenceError":{y(e,m.kReferenceErrorPrototype,r);break}case"SyntaxError":{y(e,m.kSyntaxErrorPrototype,r);break}case"TypeError":{y(e,m.kTypeErrorPrototype,r);break}case"URIError":{y(e,m.kUriErrorPrototype,r);break}default:}let n=String(t.message);y(e,m.kMessage,r),j(e,n,r);let o=t.cause;o&&(y(e,m.kCause,r),E(e,o,r));let a=String(t.stack);return y(e,m.kStack,r),j(e,a,r),y(e,m.kEnd,r),e},E=(e,t,r)=>{if(w.is_num(t)&&z.IsSmi(t))ce(e,t,r);else if(t===V)f(e,u.kUndefined,r);else if(t===An)f(e,u.kNull,r);else if(t===Sn)f(e,u.kTrue,r);else if(t===Ce)f(e,u.kFalse,r);else if(w.is_num(t))Fe(e,t,r);else if(w.is_bi(t))We(e,t,r);else if(w.is_str(t))j(e,t,r);else{Le(e,t,r);}return e},Dn=(e,t,r)=>{f(e,u.kBeginJSSet,r);let s=0;for(let n of t)E(e,n,r),++s;return f(e,u.kEndJSSet,r),y(e,s,r),e},Mn=(e,t,r)=>{f(e,u.kBeginJSMap,r);let s=t.size*2;for(let[n,o]of t)E(e,n,r),E(e,o,r);return f(e,u.kEndJSMap,r),y(e,s,r),e},Nn=(e,t,r)=>{let s=Oi(t);if(s>-1){f(e,u.kHostObject,r),qe(e,s,r),qe(e,t.byteLength,r);let n=new Uint8Array(t.buffer);return _e(e,n,r),e}},vn=(e,t,r)=>Nn(e,t,r),qn=(e,t,r)=>{let s=Ce;A.is_sab(t)?s=!!t.growable:s=t.resizable;let n=s?t.maxByteLength:t.byteLength,o=t.byteLength;return s?(f(e,u.kResizableArrayBuffer,r),y(e,o,r),y(e,n,r),_e(e,new Uint8Array(t),r)):(f(e,u.kArrayBuffer,r),y(e,o,r),_e(e,new Uint8Array(t),r)),e},P=(e,t,r)=>{f(e,u.kBeginJSObject,r);let s=0;for(let n in t)E(e,n,r),E(e,t[n],r),s++;return f(e,u.kEndJSObject,r),y(e,s,r),e},Cn=(e,t,r)=>{let s=t.length,{is_packed_smi:n,is_packed_double:o}=z.GetArrayPackedInfo(t);if(n){f(e,u.kBeginDenseJSArray,r),y(e,s,r);for(let l=0;l<t.length;++l)ce(e,t[l],r)}else if(o){if(f(e,u.kBeginDenseJSArray,r),y(e,s,r),s!==0)for(let l=0;l<t.length;++l)f(e,u.kDouble,r),H(e,t[l],r)}else{f(e,u.kBeginDenseJSArray,r),y(e,s,r);for(let l=0;l<t.length;++l)E(e,t[l],r)}let a=Object.keys(t),_=0;for(let l=t.length;l<a.length;++l){let d=a[l];E(e,d,r),E(e,t[d],r),_++}return f(e,u.kEndDenseJSArray,r),y(e,_,r),y(e,s,r),e},Le=(e,t,r)=>{if(Si(t))On(e,t,r);else if(z.IsSmi(t))ce(e,t,r);else if(w.is_num(t))Fe(e,t,r);else if(w.is_str(t))j(e,t,r);else if(w.is_bi(t))We(e,t,r);else if(w.is_sym(t)){let s=pn("Symbol",t.description);P(e,s,r)}else{let[s,n]=r.idmap.FindOrInsert(t);if(s)f(e,u.kObjectReference,r),y(e,n,r);else if(A.is_ary(t))Cn(e,t,r);else if(A.is_st(t))Dn(e,t,r);else if(A.is_mp(t))Mn(e,t,r);else if(A.is_dt(t))Rn(e,t,r);else if(A.is_rgx(t))Tn(e,t,r);else if(A.is_ab(t)||A.is_sab(t))qn(e,t,r);else if(t.buffer&&A.is_ab(t.buffer))vn(e,t,r)!==V||P(e,t,r);else if(w.istof(t,Error))Un(e,t,r);else if(jn(e,t,r)===V)if(w.is_func_like(t)||mi(t)||wi(t)||Ei(t)){let a=pn(n,String(t));P(e,a,r)}else P(e,t,r)}return e},ji=(e,t=15)=>{let r=[],s=Ri.creat_wctx();return wn(r,t),Le(r,e,s),new Uint8Array(r).buffer};Fn.exports={WriteHeader:wn,WriteTag:f,WriteVarint:y,WriteZigZag:En,WriteDouble:H,WriteOneByteString:Bn,WriteTwoByteString:In,WriteRawBytes:_e,WriteOddball:On,WriteSmi:ce,WriteHeapNumber:Fe,WriteString:j,WriteJSDate:Rn,WriteJSRegExp:Tn,WriteBigIntContents:Je,WriteBigInt:We,WriteByte:Ti,WriteUint32:qe,WriteJSPrimitiveWrapper:jn,WriteJSError:Un,WriteObject:E,WriteJSSet:Dn,WriteJSMap:Mn,WriteHostObject:Nn,WriteJSArrayBufferView:vn,WriteJSArrayBuffer:qn,WriteJSObject:P,WriteJSArray:Cn,WriteJSReceiver:Le,encd:ji}});var Vn=g((Ga,Pn)=>{var{istof:Ui}=N(),Pe=Error,Wn=e=>new Pe(e),Ln=e=>{throw Wn(e)},Di=e=>Ui(e,Pe),Mi=e=>Ln("unreachable");Pn.exports={_ERR:Pe,creat_err:Wn,thrw_str:Ln,is_err:Di,unreachable:Mi}});var Gn=g((Xa,Hn)=>{var ue=(e,t,r,s,n)=>{let o=new Uint8Array(e,t,r);return new Uint8Array(s).set(o,n),s},zn=(e,t,r,s,n)=>(r=r??0,s=s??e.byteLength,n=n??0,ue(e,r,s,t,n)),Ni=(e,t,r,s=0)=>zn(e,t,0,r,s),vi=(e,t,r=0)=>ue(e,0,e.byteLength,t,r),qi=(e,t)=>ue(e,0,e.byteLength,t,0);Hn.exports={_cp:ue,cp:zn,cp_from_src_start:Ni,cp_all_if_dst_is_enough:vi,cp_all_if_same_blen:qi}});var is=g((Ka,os)=>{var{_u:de,_n:Ci,_t:I,_f:U}=R(),{thrw_str:Fi}=Vn(),Ji=Gn(),Wi=K(),xa=Z(),Li=Ne(),He=ee(),{SerializationTag:c,ErrorTag:B,ArrayBufferViewIndexToCtor:Pi,CreatUnknown:Vi}=x(),{creat_rctx:zi}=re(),Xn={must_be_str:"must_be_str"},Hi=(e,t,r)=>{let s=t,n=0,o=0,a=U;do{let _=e[t];if(a=_&128,o<32)n|=(_&127)<<o,o=o+7;else break;++t}while(a);return[n,t-s,t]},Gi=(e,t,r)=>{let s=t,n=0n,o=0n,a=U;do{let _=BigInt(e[t]);if(a=_&0x80n,o<32n)n|=(_&0x7Fn)<<o,o=o+7n;else break;++t}while(a);return[Number(n),t-s,t]},p=Gi,xn=(e,t,r)=>{let s=t;++t;let n=e[t];return++t,[n,t-s,t]},C=(e,t,r)=>{let s=t,n;do n=e[t],++t;while(n===c.kPadding);return[n,t-s,t]},Kn=(e,t,r,s=Wi.decd)=>{let n=t,o=p(e,t,r),a=o[0];return t=o[2],[s(a),t-n,t]},fe=(e,t,r)=>{let n=new DataView(e.buffer).getFloat64(t,I);return t=t+8,[n,8,t]},Ge=(e,t,r,s)=>{let n=t,o=new Uint8Array(e.buffer,t,r);return t=t+r,[o,r,t]},Xi=(e,t,r)=>(++t,[e[i],1,t]),Ve=(e,t,r)=>p(e,t,r),Yn=2n**64n,Xe=(e,t,r)=>{let s=t,n=p(e,t,r),o=n[0],a=o&1,_=o>>1;t=n[2];let l=t;n=Ge(e,t,_,r);let d=n[0],k=new DataView(d.buffer),h=0n,S=1n,cs=_/8;for(let Qe=0;Qe<cs;++Qe){let us=k.getBigUint64(l,I);h=h+us*S,S=S*Yn,l=l+8}return a===1&&(h=-h),t=n[2],[h,t-s,t]},xe=(e,t,r)=>{let s=t,n=p(e,t,r),o=n[0];t=n[2];let a=He.Latin1U8aToStr(e,t,o);return t+=o,[a,t-s,t]},Ke=(e,t,r)=>{let s=t,n=p(e,t,r),o=n[0];t=n[2];let a=He.JstrU8aToStr(e,t,o);return t+=o,[a,t-s,t]},Ye=(e,t,r)=>{let s=t,n=p(e,t,r),o=n[0];t=n[2];let a=He.Utf8U8aToStr(e,t,o);return t+=o,[a,t-s,t]},Zn=(e,t,r)=>{let s=t,n=fe(e,t,r),o=n[0],a=new Date(o);return t=n[2],r.AddObjectWithID(a),[a,t-s,t]},xi=(e,t,r,s)=>{let n=t,o;switch(r){case c.kTrueObject:{o=new Boolean(I);break}case c.kFalseObject:{o=new Boolean(U);break}case c.kNumberObject:{let a=fe(e,t,s),_=a[0];t=a[2],o=new Number(_);break}case c.kStringObject:{let a=G(e,t,s),_=a[0];t=a[2],o=new String(_);break}case c.kBigIntObject:{let a=Xe(e,t,s),_=a[0];t=a[2],o=CreatFakeCantBeSered("BigInt",_);break}default:}return s.AddObjectWithID(o),[o,t-n,t]},$n=(e,t,r)=>{let s=t,n=de,o=de,a=U,_=Error;for(;!a;){let d=p(e,t,r),k=d[0];switch(t=d[2],k){case B.kEvalErrorPrototype:{_=EvalError;break}case B.kRangeErrorPrototype:{_=RangeError;break}case B.kReferenceErrorPrototype:{_=ReferenceError;break}case B.kSyntaxErrorPrototype:{_=SyntaxError;break}case B.kTypeErrorPrototype:{_=TypeError;break}case B.kUriErrorPrototype:{_=UriError;break}case B.kMessage:{let h=G(e,t,r);n=h[0],t=h[2];break}case B.kCause:{let h=O(e,t,r),S=h[0];t=h[2];break}case B.kStack:{let h=G(e,t,r);o=h[0],t=h[2];break}case B.kEnd:{a=I;break}default:}}let l;return cause?l=new _(n,{cause}):l=new _(n),l.stack=o,r.AddObjectWithID(l),[l,t-s,t]},G=(e,t,r)=>{let s=t,n=C(e,t,r),o=n[0];switch(t=n[2],o){case c.kOneByteString:return n=xe(e,t,r),t=n[2],[n[0],t-s,t];case c.kTwoByteString:return n=Ke(e,t,r),t=n[2],[n[0],t-s,t];case c.kUtf8String:return n=Ye(e,t,r),t=n[2],[n[0],t-s,t];default:Fi(Xn.must_be_str)}},Qn=(e,t,r)=>{let s=t,n=G(e,t,r),o=n[0];t=n[2],n=p(e,t,r);let a=n[0];a=Li.n2s(a),t=n[2];let _=new RegExp(o,a);return r.AddObjectWithID(_),[_,t-s,t]},es=(e,t,r)=>{let s=t,n=new Set;r.AddObjectWithID(n);let o=0;for(;I;){let _=t,l=C(e,t,r),d=l[0];if(t=l[2],d===c.kEndJSSet)break;t=_,l=O(e,t,r),n.add(l[0]),t=l[2],o++}let a=p(e,t,r);return t=a[2],[n,t-s,t,a[0]]},ts=(e,t,r)=>{let s=t,n=new Map;r.AddObjectWithID(n);let o=0;for(;I;){let _=t,l=C(e,t,r);if(t=l[2],l[0]===c.kEndJSMap)break;{t=_,l=O(e,t,r);let k=l[0];t=l[2],l=O(e,t,r);let h=l[0];t=l[2],n.set(k,h),o=o+2}}let a=p(e,t,r);return t=a[2],[n,t-s,t,a[0]]},Ze=(e,t,r)=>{let s=t,n=Ve(e,t,r),o=n[0],a=Pi[o],_=a.BYTES_PER_ELEMENT;t=n[2],n=Ve(e,t,r);let l=n[0];t=n[2];let d=t;n=Ge(e,t,l,r);let k;return t%_===0?k=new a(n[0].buffer,t,l):k=new a(n[0].buffer.slice(t,t+l)),t=n[2],r.AddObjectWithID(k),[k,t-s,t]},Ki=Ze,ze=(e,t,r,s)=>{let n=t,o=p(e,t,s),a=o[0];t=o[2];let _=a,l;if(r){let d=p(e,t,s);_=d[0],l=new ArrayBuffer(a,{maxByteLength:_}),t=d[2],Ji._cp(e.buffer,t,a,l,0),t=t+a}else l=e.buffer.slice(t,t+a),t=t+a;return s.AddObjectWithID(l),[l,t-n,t]},$e=(e,t,r,s,n,o)=>{let a=t,_=0;for(;I;){let l=t,d=C(e,t,o),k=d[0];if(t=d[2],k!==s){t=l,d=O(e,t,o);let h=d[0];t=d[2],d=O(e,t,o);let S=d[0];t=d[2],r[h]=S,++_}else return[_,t-a,t]}},rs=(e,t,r)=>{let s=t,n={};r.AddObjectWithID(n);let o=$e(e,t,n,c.kEndJSObject,U,r),a=o[0];return t=o[2],o=p(e,t,r),t=o[2],[n,t-s,t]},ns=(e,t,r,s)=>{let n=t,o=p(e,t,s),a=o[0];t=o[2];let _=[];s.AddObjectWithID(_);for(let d=0;d<a;++d)o=O(e,t,s),_.push(o[0]),t=o[2];let l=r===c.kBeginDenseJSArray?c.kEndDenseJSArray:c.kEndSparseJSArray;return o=$e(e,t,_,l,I,s),t=o[2],o=p(e,t,s),t=o[2],o=p(e,t,s),t=o[2],[_,t-n,t]},ss=(e,t,r)=>{let s=t,n=C(e,t,r),o=n[0];switch(t=n[2],o){case c.kTheHole:return[de,t-s,t];case c.kUndefined:return[de,t-s,t];case c.kNull:return[Ci,t-s,t];case c.kTrue:return[I,t-s,t];case c.kFalse:return[U,t-s,t];case c.kInt32:return n=Kn(e,t,r),t=n[2],[n[0],t-s,t];case c.kUint32:return n=p(e,t,r),t=n[2],[n[0],t-s,t];case c.kDouble:return n=fe(e,t,r),t=n[2],[n[0],t-s,t];case c.kBigInt:return n=Xe(e,t,r),t=n[2],[n[0],t-s,t];case c.kOneByteString:return n=xe(e,t,r),t=n[2],[n[0],t-s,t];case c.kTwoByteString:return n=Ke(e,t,r),t=n[2],[n[0],t-s,t];case c.kUtf8String:return n=Ye(e,t,r),t=n[2],[n[0],t-s,t];case c.kBeginJSObject:return n=rs(e,t,r),t=n[2],[n[0],t-s,t];case c.kBeginDenseJSArray:case c.kBeginSparseJSArray:return n=ns(e,t,o,r),t=n[2],[n[0],t-s,t];case c.kDate:return n=Zn(e,t,r),t=n[2],[n[0],t-s,t];case c.kBeginJSMap:return n=ts(e,t,r),t=n[2],[n[0],t-s,t];case c.kBeginJSSet:return n=es(e,t,r),t=n[2],[n[0],t-s,t];case c.kObjectReference:{n=p(e,t,r);let a=n[0];return t=n[2],[r.GetObjectWithID(a),t-s,t]}case c.kRegExp:return n=Qn(e,t,r),t=n[2],[n[0],t-s,t];case c.kSharedArrayBuffer:case c.kArrayBuffer:return n=ze(e,t,U,r),t=n[2],[n[0],t-s,t];case c.kResizableArrayBuffer:return n=ze(e,t,I,r),t=n[2],[n[0],t-s,t];case c.kError:return n=$n(e,t,r),t=n[2],[n[0],t-s,t];case c.kArrayBufferView:case c.kHostObject:return n=Ze(e,t,r),t=n[2],[n[0],t-s,t];case c.kTrueObject:case c.kFalseObject:case c.kNumberObject:case c.kBigIntObject:case c.kStringObject:return n=xi(e,t,o,r),t=n[2],[n[0],t-s,t];default:return console.log("why unknown",o,t,e),process.exit(),[Vi(),t-s,t]}},O=(e,t,r)=>ss(e,t,r),Yi=e=>{let t=new Uint8Array(e),r=zi(),s=0,n=xn(t,s,r);return s=n[2],n=O(t,s,r),n[0]};os.exports={ERRD:Xn,ReadVarintLoopIfLshiftWork:Hi,ReadVarint:p,ReadHeader:xn,ReadTag:C,ReadZigZag:Kn,ReadDouble:fe,ReadRawBytes:Ge,ReadByte:Xi,ReadUint32:Ve,ReadBigInt:Xe,BI_MUL:Yn,ReadOneByteString:xe,ReadTwoByteString:Ke,ReadUtf8String:Ye,ReadJSDate:Zn,ReadString:G,ReadJSRegExp:Qn,ReadJSError:$n,ReadJSSet:es,ReadJSMap:ts,ReadHostObject:Ze,ReadJSArrayBufferView:Ki,ReadJSArrayBuffer:ze,ReadJSObjectProperties:$e,ReadObjectInternal:ss,ReadObject:O,ReadJSObject:rs,ReadJSArray:ns,decd:Yi}});var na=g((Ya,_s)=>{var Zi=st(),$i=it(),Qi=x(),ea=ee(),ta=Re(),ra=re(),as=Jn(),ls=is();_s.exports={fixed_cfg:Zi,restrict:$i,const:Qi,misc:ea,zero_nid:ta,ctx:ra,w:as,r:ls,ser:as.encd,der:ls.decd}});return na();})();
25
+ //!id_map_.Find
package/README.md ADDED
@@ -0,0 +1,382 @@
1
+
2
+ nv-buf-serde
3
+ =======================
4
+ - rewrite v8/src/objects/value-serializer.cc to JS
5
+ - to let you use nodejs'v8.serialize AND nodejs'v8.deserialize in browser,
6
+ - similiar to structuredClone AND MessageChannel-transfer, but can be used to send/recv data to server-side
7
+
8
+ - only work in 【BROWSER】 for transfering-with-remote-server:
9
+ - coz for local-transfer structuredClone is best(json'speed is best,but only support simple data-type);
10
+ - for 【server-side-remote-transfer】in nodejs you can use v8.serialize AND v8.deserialize directly;
11
+
12
+ - this is 【SLOW】, coz it is wrote in pure-js.
13
+ - only suited for 【SMALL-data such as complicated start-config】 with map/set/circular/array-buffer.... ,which only be transfered when app starting for one-time.
14
+
15
+
16
+ - see [UNSUPPORTED](#RESTRICT) below for unsupported data-type
17
+
18
+ - for most data-types,if data is small, its a little faster than v8.serialize/v8.deserilize in nodejs. coz it did NOT do any check/verify/validate
19
+ - but for string , its 10X slower , coz it read the string char-by-char to code-point.
20
+ - for not-small size array/object, its 5X slower.
21
+
22
+ - see [SIMPLE-PERF](#TEST) below
23
+
24
+
25
+
26
+ install
27
+ =======
28
+ - npm install nv-buf-serde
29
+
30
+ usage
31
+ =====
32
+
33
+ ### in browser
34
+
35
+ //copy the dist.js in ./DIST to your browser
36
+ const { ser,der } = v8serde;
37
+
38
+
39
+ ### for test in node
40
+ const { ser,der } = require("nv-buf-serde");
41
+
42
+
43
+ example
44
+ -------
45
+
46
+ ###
47
+
48
+ ser(o:Any, version:Uint = 15) : ArrayBuffer; // version default is 15
49
+ // if server use node16 ,try 13.
50
+ // IF server nodejs ver < 16, this pkg maybe NOT work.
51
+
52
+ der(ab:ArrayBuffer) : <JSValue> // when decode, this pkg will NOT check version.
53
+
54
+
55
+ ###
56
+
57
+
58
+ const {deepStrictEqual} = require("assert");
59
+
60
+ var st = new Set([])
61
+ for(let e of [1,1.1,undefined,null,true,false,"abcd","aÿ我𝑒",12345678901234567890n,[],{}]) {st.add(e)}
62
+
63
+ var mp = new Map();
64
+
65
+
66
+ let dict = {a:100,b:-0}
67
+ let ary = [0,1,2,3]
68
+ for(let e of [[{},[]],[true,false],[dict,dict],[ary,ary]]) {mp.set(e,e)}
69
+ for(let e of [[]]) {mp.set(e,e)}
70
+ for(let e of [1,1.1,undefined,null,true,false,"abcd","aÿ我𝑒",12345678901234567890n]) {mp.set(e,e)}
71
+
72
+
73
+ var circular = [];
74
+ circular[0] = circular
75
+ circular[1] = {pr:circular[0]}
76
+ circular[2] = mp
77
+ st.add(mp);
78
+ mp.set("set",st);
79
+
80
+ /*
81
+ > circular
82
+ <ref *1> [
83
+ [Circular *1],
84
+ { pr: [Circular *1] },
85
+ <ref *2> Map(15) {
86
+ [ {}, [] ] => [ {}, [] ],
87
+ [ true, false ] => [ true, false ],
88
+ [ [Object], [Object] ] => [ [Object], [Object] ],
89
+ [ [Array], [Array] ] => [ [Array], [Array] ],
90
+ [] => [],
91
+ 1 => 1,
92
+ 1.1 => 1.1,
93
+ undefined => undefined,
94
+ null => null,
95
+ true => true,
96
+ false => false,
97
+ 'abcd' => 'abcd',
98
+ 'aÿ我𝑒' => 'aÿ我𝑒',
99
+ 12345678901234567890n => 12345678901234567890n,
100
+ 'set' => Set(12) {
101
+ 1,
102
+ 1.1,
103
+ undefined,
104
+ null,
105
+ true,
106
+ false,
107
+ 'abcd',
108
+ 'aÿ我𝑒',
109
+ 12345678901234567890n,
110
+ [],
111
+ {},
112
+ [Circular *2]
113
+ }
114
+ }
115
+ ]
116
+ >
117
+ */
118
+
119
+
120
+ > var dump = ser(circular);
121
+
122
+ /*
123
+ > dump
124
+ ArrayBuffer {
125
+ [Uint8Contents]: <ff 0f 41 03 5e 00 6f 22 02 70 72 5e 00 7b 01 3b 41 02 6f 7b 00 41 00 24 00 00 24 00 02 5e 03 41 02 54 46 24 00 02 5e 06 41 02 6f 22 01 61 49 c8 01 22 01 62 4e 00 00 00 00 00 00 00 80 7b 02 5e 08 24 00 02 5e 07 41 02 41 04 49 00 49 02 49 04 49 06 24 00 04 5e 0a 24 00 02 5e 09 41 00 24 00 00 5e 0b 49 ... 153 more bytes>,
126
+ byteLength: 253
127
+ }
128
+ >
129
+ */
130
+
131
+ var dupe = der(dump);
132
+ assert.deepStrictEqual(circular,dupe)
133
+
134
+
135
+ ### client send to server :
136
+ // on client: ws.send(ser(obj)) ...
137
+ // on server: let obj = v8.deserialize(<encoded>)
138
+
139
+ ### server send to client:
140
+ // on server: ws.send(v8.serialize(obj)) ...
141
+ // on client: let obj = der(<encoded>)
142
+
143
+
144
+ TEST
145
+ =====
146
+
147
+ cd ./TEST ./run.sh
148
+
149
+ f0 AND ff0 is v8.serialize/v8.deserialize
150
+ f1 AND ff1 is pure-js ser/der
151
+
152
+ ####
153
+
154
+ w-1bstr.js
155
+ { rounds: 100000, f: [Function: f0], costed: 266.1992090046406 }
156
+ { rounds: 100000, f: [Function: f1], costed: 1591.1110320091248 }
157
+ w-2bstr.js
158
+ { rounds: 100000, f: [Function: f0], costed: 228.52056899666786 }
159
+ { rounds: 100000, f: [Function: f1], costed: 660.8281089961529 }
160
+ w-bi.js
161
+ { rounds: 1000000, f: [Function: f0], costed: 1849.7178589999676 }
162
+ { rounds: 1000000, f: [Function: f1], costed: 1643.9760229885578 }
163
+ w-double.js
164
+ { rounds: 1, f: [Function: ff0], costed: 2050.589771002531 }
165
+ { rounds: 1, f: [Function: ff1], costed: 1856.7536469995975 }
166
+ w-int-not-smi.js
167
+ { rounds: 1, f: [Function: ff0], costed: 2139.468289002776 }
168
+ { rounds: 1, f: [Function: ff1], costed: 1751.2041779905558 }
169
+ w-odd-ball.js
170
+ { rounds: 1000000, f: [Function: f0], costed: 1801.9907419979572 }
171
+ { rounds: 1000000, f: [Function: f1], costed: 742.1094769984484 }
172
+ { rounds: 1000000, f: [Function: f0], costed: 1820.1971789896488 }
173
+ { rounds: 1000000, f: [Function: f1], costed: 748.5948320031166 }
174
+ { rounds: 1000000, f: [Function: f0], costed: 1815.4723690003157 }
175
+ { rounds: 1000000, f: [Function: f1], costed: 760.0095049887896 }
176
+ { rounds: 1000000, f: [Function: f0], costed: 1806.1364599913359 }
177
+ { rounds: 1000000, f: [Function: f1], costed: 730.0119130015373 }
178
+ w-packed-double.js
179
+ <Buffer ff 0f 41 03 4e 00 00 00 00 00 00 f0 bf 4e 00 00 00 00 00 00 00 80 4e 00 00 00 00 00 00 f0 3f 24 00 03>
180
+ <Buffer ff 0f 41 03 4e 00 00 00 00 00 00 f0 bf 4e 00 00 00 00 00 00 00 80 4e 00 00 00 00 00 00 f0 3f 24 00 03>
181
+ { rounds: 1, f: [Function: ff0], costed: 2115.820453003049 }
182
+ { rounds: 1, f: [Function: ff1], costed: 1731.7947219908237 }
183
+ w-packed-smi.js
184
+ <Buffer ff 0f 41 03 49 01 49 00 49 02 24 00 03>
185
+ <Buffer ff 0f 41 03 49 01 49 00 49 02 24 00 03>
186
+ { rounds: 1, f: [Function: ff0], costed: 1007.4265009909868 }
187
+ { rounds: 1, f: [Function: ff1], costed: 389.41917300224304 }
188
+ w-prim-wrap.js
189
+ <Buffer ff 0f 73 00 63 0a 61 00 ff 00 11 62 35 d8 52 dc> <Buffer ff 0f 73 00 63 0a 61 00 ff 00 11 62 35 d8 52 dc>
190
+ { rounds: 100000, f: [Function: ff0], costed: 1601.2434429973364 }
191
+ { rounds: 100000, f: [Function: ff1], costed: 638.7041679918766 }
192
+ w-smi.js
193
+ { rounds: 1, f: [Function: ff0], costed: 2105.5412980020046 }
194
+ { rounds: 1, f: [Function: ff1], costed: 950.825115993619 }
195
+ w-packed-with-attr.js
196
+ <Buffer ff 0f 41 0b 49 02 4e 9a 99 99 99 99 99 f1 3f 5f 30 54 46 22 04 61 62 63 64 00 63 0a 61 00 ff 00 11 62 35 d8 52 dc 5a 10 d2 0a 1f eb 8c a9 54 ab 41 00 ... 25 more bytes>
197
+ <Buffer ff 0f 41 0b 49 02 4e 9a 99 99 99 99 99 f1 3f 5f 30 54 46 22 04 61 62 63 64 00 63 0a 61 00 ff 00 11 62 35 d8 52 dc 5a 10 d2 0a 1f eb 8c a9 54 ab 41 00 ... 25 more bytes>
198
+ { rounds: 1, f: [Function: ff0], costed: 1437.0307759940624 }
199
+ { rounds: 1, f: [Function: ff1], costed: 740.9776969999075 }
200
+ w-ab-and-abvw.js
201
+ { rounds: 1, f: [Function: ff0], costed: 3125.2701260000467 }
202
+ { rounds: 1, f: [Function: ff1], costed: 1463.7843720018864 }
203
+ w-date.js
204
+ { rounds: 100000, f: [Function: f0], costed: 378.10796700417995 }
205
+ { rounds: 100000, f: [Function: f1], costed: 218.29990500211716 }
206
+ w-rgx.js
207
+ { rounds: 100000, f: [Function: f0], costed: 360.65081399679184 }
208
+ { rounds: 100000, f: [Function: f1], costed: 196.77194899320602 }
209
+ r-1bstr.js
210
+ OK
211
+ { rounds: 1, f: [Function: ff0], costed: 622.7416110038757 }
212
+ { rounds: 1, f: [Function: ff1], costed: 271.9350669980049 }
213
+ r-2bstr.js
214
+ OK
215
+ { rounds: 1, f: [Function: ff0], costed: 136.93560498952866 }
216
+ { rounds: 1, f: [Function: ff1], costed: 146.48304900527 }
217
+ r-bi.js
218
+ OK
219
+ { rounds: 1, f: [Function: ff0], costed: 1521.1638139933348 }
220
+ { rounds: 1, f: [Function: ff1], costed: 560.5311820060015 }
221
+ r-double.js
222
+ OK
223
+ { rounds: 1, f: [Function: ff0], costed: 1761.6175539940596 }
224
+ { rounds: 1, f: [Function: ff1], costed: 296.7176159918308 }
225
+ r-int-not-smi.js
226
+ OK
227
+ { rounds: 1000000, f: [Function: ff0], costed: 2367.8616740107536 }
228
+ { rounds: 1000000, f: [Function: ff1], costed: 451.3351549953222 }
229
+ r-odd-ball.js
230
+ OK
231
+ { rounds: 1, f: [Function: ff0], costed: 1346.4026799947023 }
232
+ { rounds: 1, f: [Function: ff1], costed: 240.1754889935255 }
233
+ r-packed-double.js
234
+ OK
235
+ { rounds: 20, f: [Function: ff0], costed: 3246.5816289931536 }
236
+ { rounds: 20, f: [Function: ff1], costed: 3989.6508100032806 }
237
+ r-packed-smi.js
238
+ OK
239
+ { rounds: 1000000, f: [Function: ff0], costed: 1818.279228001833 }
240
+ { rounds: 1000000, f: [Function: ff1], costed: 2230.154618009925 }
241
+ r-prim-wrap.js
242
+ OK
243
+ { rounds: 1000000, f: [Function: ff0], costed: 7234.687916994095 }
244
+ { rounds: 1000000, f: [Function: ff1], costed: 3035.835222005844 }
245
+ r-smi.js
246
+ OK
247
+ { rounds: 1000000, f: [Function: ff0], costed: 6417.46975800395 }
248
+ { rounds: 1000000, f: [Function: ff1], costed: 1456.2603430002928 }
249
+ r-packed-with-attr.js
250
+ OK
251
+ { rounds: 20, f: [Function: ff0], costed: 1868.1501239985228 }
252
+ { rounds: 20, f: [Function: ff1], costed: 7413.920781999826 }
253
+ r-ab-and-abvw.js
254
+ OK
255
+ { rounds: 1000000, f: [Function: ff0], costed: 30922.769218996167 }
256
+ { rounds: 1000000, f: [Function: ff1], costed: 22780.244821995497 }
257
+ r-date.js
258
+ OK
259
+ { rounds: 1000000, f: [Function: ff0], costed: 2954.3600009977818 }
260
+ { rounds: 1000000, f: [Function: ff1], costed: 1190.4288749992847 }
261
+ r-rgx.js
262
+ OK
263
+ { rounds: 1000000, f: [Function: ff0], costed: 3780.0919840037823 }
264
+ { rounds: 1000000, f: [Function: ff1], costed: 2295.3174780011177 }
265
+ r-mp-st-circular.js
266
+ OK
267
+ OK
268
+ OK
269
+ OK
270
+ OK
271
+ { rounds: 2000, f: [Function: ff0], costed: 350.00537499785423 }
272
+ { rounds: 2000, f: [Function: ff1], costed: 1388.989602997899 }
273
+
274
+
275
+ METHODS
276
+ ========
277
+ - too many, most are USELESS , just use ser/der AND refer to const is OK.
278
+
279
+
280
+ APIS
281
+ =======
282
+
283
+ {
284
+ ////-----------------------------------------------------------
285
+ fixed_cfg : _fixed_cfg, // v8flag compatible to nodejs
286
+ restrict : _restrict, // unsupported data-type readme
287
+ const : _const, // tag AND subtag(for array-buffer-view) definition
288
+ misc : _misc, // some int AND str util
289
+ zero_nid : _zero_nid, // v8 impl require ref-id from 0
290
+ ctx : _ctx, // context (for handle circular reference)
291
+ w : _w, // encode methods
292
+ r : _r, // decode methods
293
+ ////----------------------------------------------------------------------
294
+ ser, // serialize USED on sender-side
295
+ der, // deserialize USED on recver-side
296
+ }
297
+
298
+ RESTRICT
299
+ =========
300
+
301
+ ### RESTRICT and UNSUPPORTED
302
+
303
+ const restrict = require("nv-buf-serde").restrict;
304
+ console.dir(restrict,{depth:null})
305
+ /*
306
+
307
+ {
308
+
309
+ ////----- roughly support
310
+ kTheHole : `
311
+ the hole element will be replaced by undefined,coz in js-layer:
312
+ 1. when serialize: the-hole-element can only be founded using .foreach, and that is expensive.
313
+ 2. when deser : need use trick like { var a=[]; a[8] = 9;} to make the-hole, also expensive.
314
+ `,
315
+ kSparseArray : `
316
+ NOT support. only dense/packed_smi/packed_double.
317
+ hard to explain this, refer to ./TEST/hole-tst.js
318
+ this script will make sparse-array
319
+ `,
320
+ kSharedArrayBuffer : `
321
+ treated as normal ArrayBuffer,
322
+ although v8 has the code for this routing, but it failed when i test,
323
+ dont known how to find shared-array-buffer-id
324
+ `,
325
+ kArrayBufferView : `
326
+ 0. array-buffer-view will be treated as kHostObject,for compatible with nodejes delegate(although its implement MAYBE wrong),
327
+ event if several array-buf-views refer to the same buffer, still be DEEP-COPIED:
328
+ var ab = new ArrayBuffer(4);
329
+ var u8a = new Uint8Array(ab);
330
+ var u16a = new Uint16Array(ab);
331
+ var ary = [ab,u8a,u16a];
332
+ var dupe_ary = der(ser(ary));
333
+ /*
334
+ 1. dupe_ary[0]
335
+ 2. dupe_ary[1].buffer
336
+ 3. dupe_ary[2].buffer
337
+
338
+ [1. 2. 3.] are different buffer, this means:
339
+ the abview NOT support keeping the ref-of-<.buffer>-relations
340
+ */
341
+ `,
342
+ JSMap : "extra attributes set On Map will be dropped, for compatible to current v8-impl",
343
+ JSSet : "extra attributes set On Set will be dropped, for compatible to current v8-impl",
344
+ RegExp : "extra attributes set On RegExp will be dropped, for compatible to current v8-impl",
345
+ Date : "extra attributes set On Date will be dropped, for compatible to current v8-impl",
346
+ PrimitiveWrapper : `
347
+ extra attributes set On PrimitiveWrapper will be dropped(treat-as-leaf), for compatible to current v8-impl;
348
+ not support <new BigInt>, in c++ layer ,it can be done. in js-layer ,impossible
349
+ `,
350
+
351
+ ////------partly support:
352
+ "Error'message" : "Error'message treated as string",
353
+ "Error'stack" : "Error'stack treated as string",
354
+
355
+
356
+ ////----- unsupported:
357
+ kVerifyObjectCount : "no verify",
358
+ throwDetachedArrayBufferError : "dont know how to get this state in js-layer",
359
+ kArrayBufferTransfer : "hard to do this in js-layer",
360
+ kSharedObject : 'hard to do this in js-layer',
361
+ kWasmModuleTransfer : 'hard to do this in js-layer',
362
+ kWasmMemoryTransfer : 'hard to do this in js-layer',
363
+ ITERATOR : "dont know how to get the iter cursor in js-layer, treated as a {}",
364
+ ATOMICS : "dont know how to do this, treated as a {}",
365
+ FPG : "function | lambda | promise| generator| all treated as a {}",
366
+ Proxy : "hard to do this in browser, so treated as the-target-be-proxied",
367
+ }
368
+ */
369
+
370
+
371
+ APPENDIX
372
+ ========
373
+
374
+ this pkg JUST for test backword-serde in nvlang. NOT for production.
375
+ 70% syntax in nvlang is same as JS :
376
+ (es3 + await + Destructuring-assignment + getter-setter-only-class(similar to pod struct)) + a little TS(just-used-as-comments)
377
+ the lefted 30% is a graph-dsl.
378
+
379
+ LICENSE
380
+ =======
381
+ - ISC
382
+