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.
- package/DIST/dist.js +25 -0
- package/README.md +382 -0
- package/TEST/common.js +435 -0
- package/TEST/hole-tst.js +31 -0
- package/TEST/nd-benchmark.js +17 -0
- package/TEST/r-1bstr.js +33 -0
- package/TEST/r-2bstr.js +33 -0
- package/TEST/r-ab-and-abvw.js +48 -0
- package/TEST/r-bi.js +33 -0
- package/TEST/r-date.js +28 -0
- package/TEST/r-double.js +33 -0
- package/TEST/r-int-not-smi.js +28 -0
- package/TEST/r-mp-st-circular.js +105 -0
- package/TEST/r-odd-ball.js +33 -0
- package/TEST/r-packed-double.js +38 -0
- package/TEST/r-packed-smi.js +35 -0
- package/TEST/r-packed-with-attr.js +40 -0
- package/TEST/r-prim-wrap.js +35 -0
- package/TEST/r-rgx.js +28 -0
- package/TEST/r-smi.js +28 -0
- package/TEST/read-bi-contents.js +20 -0
- package/TEST/run.js +43 -0
- package/TEST/run.sh +29 -0
- package/TEST/serde-benchmark.js +17 -0
- package/TEST/tst.json +114 -0
- package/TEST/tst.v8ser +0 -0
- package/TEST/w-1bstr.js +34 -0
- package/TEST/w-2bstr.js +34 -0
- package/TEST/w-ab-and-abvw.js +60 -0
- package/TEST/w-bi.js +33 -0
- package/TEST/w-date.js +33 -0
- package/TEST/w-double.js +35 -0
- package/TEST/w-int-not-smi.js +37 -0
- package/TEST/w-mp-st-circular.js +60 -0
- package/TEST/w-odd-ball.js +43 -0
- package/TEST/w-packed-double.js +40 -0
- package/TEST/w-packed-smi.js +38 -0
- package/TEST/w-packed-with-attr.js +41 -0
- package/TEST/w-prim-wrap.js +41 -0
- package/TEST/w-rgx.js +33 -0
- package/TEST/w-smi.js +36 -0
- package/build.sh +1 -0
- package/const.js +181 -0
- package/ctx.js +89 -0
- package/fixed-cfg.js +6 -0
- package/index.js +27 -0
- package/misc.js +112 -0
- package/package.json +22 -0
- package/r.js +646 -0
- package/restrict.js +48 -0
- package/w.js +510 -0
- 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
|
+
|