bunite-core 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/preload/runtime.built.js +1 -1
- package/src/rpc/peer.ts +3 -2
- package/src/rpc/schema.ts +0 -1
- package/src/rpc/wire.ts +0 -1
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var I8=Symbol.for("bunite.rpc.CallDef"),k8=Symbol.for("bunite.rpc.StreamDef"),S8=Symbol.for("bunite.rpc.CapDef"),v8=Symbol.for("bunite.rpc.CapRefToken"),h8=Symbol.for("bunite.rpc.CapArrayToken"),m8=Symbol.for("bunite.rpc.CapRecordToken"),z$=Symbol.for("bunite.rpc.Schema");function n_(_){return{[v8]:!0,cap:_}}n_.array=(_)=>({[h8]:!0,cap:_});n_.record=(_)=>({[m8]:!0,cap:_});var s=n_;function A_(_){return typeof _==="object"&&_!==null&&_[v8]===!0}function U_(_){return typeof _==="object"&&_!==null&&_[h8]===!0}function T_(_){return typeof _==="object"&&_!==null&&_[m8]===!0}function B_(_){return typeof _==="object"&&_!==null&&_[I8]===!0}function z_(_){return typeof _==="object"&&_!==null&&_[k8]===!0}function T(_){return{[I8]:!0,idempotent:!!_?.idempotent,returns:_?.returns}}function P_(_){return{[k8]:!0,hint:_?.hint}}function a(_,$,X){return{[S8]:!0,name:_,version:X?.version!=null?String(X.version):void 0,methods:$,disposal:X?.disposal??void 0}}function V_(_){return typeof _==="object"&&_!==null&&_[S8]===!0}function s_(_){return typeof _==="object"&&_!==null&&_[z$]===!0}var i_;try{i_=new TextDecoder}catch(_){}var G,c,Z=0;var t8=[],a_=t8,r_=0,j={},E,Q_,d=0,r=0,g,$_,l=[],V,f8={useRecords:!1,mapsAsObjects:!0};class b_{}var e_=new b_;e_.name="MessagePack 0xC1";var K_=!1,g8=2,p8,l8,u8;class t{constructor(_){if(_){if(_.useRecords===!1&&_.mapsAsObjects===void 0)_.mapsAsObjects=!0;if(_.sequential&&_.trusted!==!1){if(_.trusted=!0,!_.structures&&_.useRecords!=!1){if(_.structures=[],!_.maxSharedStructures)_.maxSharedStructures=0}}if(_.structures)_.structures.sharedLength=_.structures.length;else if(_.getStructures)(_.structures=[]).uninitialized=!0,_.structures.sharedLength=0;if(_.int64AsNumber)_.int64AsType="number"}Object.assign(this,_)}unpack(_,$){if(G)return H$(()=>{return w_(),this?this.unpack(_,$):t.prototype.unpack.call(f8,_,$)});if(!_.buffer&&_.constructor===ArrayBuffer)_=typeof Buffer<"u"?Buffer.from(_):new Uint8Array(_);if(typeof $==="object")c=$.end||_.length,Z=$.start||0;else Z=0,c=$>-1?$:_.length;r_=0,r=0,Q_=null,a_=t8,g=null,G=_;try{V=_.dataView||(_.dataView=new DataView(_.buffer,_.byteOffset,_.byteLength))}catch(X){if(G=null,_ instanceof Uint8Array)throw X;throw Error("Source must be a Uint8Array or Buffer but was a "+(_&&typeof _=="object"?_.constructor.name:typeof _))}if(this instanceof t){if(j=this,this.structures)return E=this.structures,E_($);else if(!E||E.length>0)E=[]}else if(j=f8,!E||E.length>0)E=[];return E_($)}unpackMultiple(_,$){let X,H=0;try{K_=!0;let Q=_.length,K=this?this.unpack(_,Q):j_.unpack(_,Q);if($){if($(K,H,Z)===!1)return;while(Z<Q)if(H=Z,$(E_(),H,Z)===!1)return}else{X=[K];while(Z<Q)H=Z,X.push(E_());return X}}catch(Q){throw Q.lastPosition=H,Q.values=X,Q}finally{K_=!1,w_()}}_mergeStructures(_,$){if(l8)_=l8.call(this,_);if(_=_||[],Object.isFrozen(_))_=_.map((X)=>X.slice(0));for(let X=0,H=_.length;X<H;X++){let Q=_[X];if(Q){if(Q.isShared=!0,X>=32)Q.highByte=X-32>>5}}_.sharedLength=_.length;for(let X in $||[])if(X>=0){let H=_[X],Q=$[X];if(Q){if(H)(_.restoreStructures||(_.restoreStructures=[]))[X]=H;_[X]=Q}}return this.structures=_}decode(_,$){return this.unpack(_,$)}}function E_(_){try{if(!j.trusted&&!K_){let X=E.sharedLength||0;if(X<E.length)E.length=X}let $;if(j.randomAccessStructure&&G[Z]<64&&G[Z]>=32&&p8){if($=p8(G,Z,c,j),G=null,!(_&&_.lazy)&&$)$=$.toJSON();Z=c}else $=h();if(g)Z=g.postBundlePosition,g=null;if(K_)E.restoreStructures=null;if(Z==c){if(E&&E.restoreStructures)d8();if(E=null,G=null,$_)$_=null}else if(Z>c)throw Error("Unexpected end of MessagePack data");else if(!K_){let X;try{X=JSON.stringify($,(H,Q)=>typeof Q==="bigint"?`${Q}n`:Q).slice(0,100)}catch(H){X="(JSON view not available "+H+")"}throw Error("Data read, but end of buffer not reached "+X)}return $}catch($){if(E&&E.restoreStructures)d8();if(w_(),$ instanceof RangeError||$.message.startsWith("Unexpected end of buffer")||Z>c)$.incomplete=!0;throw $}}function d8(){for(let _ in E.restoreStructures)E[_]=E.restoreStructures[_];E.restoreStructures=null}function h(){let _=G[Z++];if(_<160)if(_<128)if(_<64)return _;else{let $=E[_&63]||j.getStructures&&e8()[_&63];if($){if(!$.read)$.read=_8($,_&63);return $.read()}else return _}else if(_<144)if(_-=128,j.mapsAsObjects){let $={};for(let X=0;X<_;X++){let H=$$();if(H==="__proto__")H="__proto_";$[H]=h()}return $}else{let $=new Map;for(let X=0;X<_;X++)$.set(h(),h());return $}else{_-=144;let $=Array(_);for(let X=0;X<_;X++)$[X]=h();if(j.freezeData)return Object.freeze($);return $}else if(_<192){let $=_-160;if(r>=Z)return Q_.slice(Z-d,(Z+=$)-d);if(r==0&&c<140){let X=$<16?$8($):_$($);if(X!=null)return X}return t_($)}else{let $;switch(_){case 192:return null;case 193:if(g)if($=h(),$>0)return g[1].slice(g.position1,g.position1+=$);else return g[0].slice(g.position0,g.position0-=$);return e_;case 194:return!1;case 195:return!0;case 196:if($=G[Z++],$===void 0)throw Error("Unexpected end of buffer");return o_($);case 197:return $=V.getUint16(Z),Z+=2,o_($);case 198:return $=V.getUint32(Z),Z+=4,o_($);case 199:return F_(G[Z++]);case 200:return $=V.getUint16(Z),Z+=2,F_($);case 201:return $=V.getUint32(Z),Z+=4,F_($);case 202:if($=V.getFloat32(Z),j.useFloat32>2){let X=x_[(G[Z]&127)<<1|G[Z+1]>>7];return Z+=4,(X*$+($>0?0.5:-0.5)>>0)/X}return Z+=4,$;case 203:return $=V.getFloat64(Z),Z+=8,$;case 204:return G[Z++];case 205:return $=V.getUint16(Z),Z+=2,$;case 206:return $=V.getUint32(Z),Z+=4,$;case 207:if(j.int64AsType==="number")$=V.getUint32(Z)*4294967296,$+=V.getUint32(Z+4);else if(j.int64AsType==="string")$=V.getBigUint64(Z).toString();else if(j.int64AsType==="auto"){if($=V.getBigUint64(Z),$<=BigInt(2)<<BigInt(52))$=Number($)}else $=V.getBigUint64(Z);return Z+=8,$;case 208:return V.getInt8(Z++);case 209:return $=V.getInt16(Z),Z+=2,$;case 210:return $=V.getInt32(Z),Z+=4,$;case 211:if(j.int64AsType==="number")$=V.getInt32(Z)*4294967296,$+=V.getUint32(Z+4);else if(j.int64AsType==="string")$=V.getBigInt64(Z).toString();else if(j.int64AsType==="auto"){if($=V.getBigInt64(Z),$>=BigInt(-2)<<BigInt(52)&&$<=BigInt(2)<<BigInt(52))$=Number($)}else $=V.getBigInt64(Z);return Z+=8,$;case 212:if($=G[Z++],$==114)return a8(G[Z++]&63);else{let X=l[$];if(X)if(X.read)return Z++,X.read(h());else if(X.noBuffer)return Z++,X();else return X(G.subarray(Z,++Z));else throw Error("Unknown extension "+$)}case 213:if($=G[Z],$==114)return Z++,a8(G[Z++]&63,G[Z++]);else return F_(2);case 214:return F_(4);case 215:return F_(8);case 216:return F_(16);case 217:if($=G[Z++],r>=Z)return Q_.slice(Z-d,(Z+=$)-d);return V$($);case 218:if($=V.getUint16(Z),Z+=2,r>=Z)return Q_.slice(Z-d,(Z+=$)-d);return E$($);case 219:if($=V.getUint32(Z),Z+=4,r>=Z)return Q_.slice(Z-d,(Z+=$)-d);return w$($);case 220:return $=V.getUint16(Z),Z+=2,n8($);case 221:return $=V.getUint32(Z),Z+=4,n8($);case 222:return $=V.getUint16(Z),Z+=2,s8($);case 223:return $=V.getUint32(Z),Z+=4,s8($);default:if(_>=224)return _-256;if(_===void 0){let X=Error("Unexpected end of MessagePack data");throw X.incomplete=!0,X}throw Error("Unknown MessagePack token "+_)}}}var P$=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function _8(_,$){function X(){if(X.count++>g8){let Q;try{Q=_.read=Function("r","return function(){return "+(j.freezeData?"Object.freeze":"")+"({"+_.map((K)=>K==="__proto__"?"__proto_:r()":P$.test(K)?K+":r()":"["+JSON.stringify(K)+"]:r()").join(",")+"})}")(h)}catch(K){return g8=1/0,X()}if(_.highByte===0)_.read=c8($,_.read);return Q()}let H={};for(let Q=0,K=_.length;Q<K;Q++){let Y=_[Q];if(Y==="__proto__")Y="__proto_";H[Y]=h()}if(j.freezeData)return Object.freeze(H);return H}if(X.count=0,_.highByte===0)return c8($,X);return X}var c8=(_,$)=>{return function(){let X=G[Z++];if(X===0)return $();let H=_<32?-(_+(X<<5)):_+(X<<5),Q=E[H]||e8()[H];if(!Q)throw Error("Record id is not defined for "+H);if(!Q.read)Q.read=_8(Q,_);return Q.read()}};function e8(){let _=H$(()=>{return G=null,j.getStructures()});return E=j._mergeStructures(_,E)}var t_=J_,V$=J_,E$=J_,w$=J_;function J_(_){let $;if(_<16){if($=$8(_))return $}if(_>64&&i_)return i_.decode(G.subarray(Z,Z+=_));let X=Z+_,H=[];$="";while(Z<X){let Q=G[Z++];if((Q&128)===0)H.push(Q);else if((Q&224)===192){let K=G[Z++]&63,Y=(Q&31)<<6|K;if(Y<128)H.push(65533);else H.push(Y)}else if((Q&240)===224){let K=G[Z++]&63,Y=G[Z++]&63,N=(Q&31)<<12|K<<6|Y;if(N<2048||N>=55296&&N<=57343)H.push(65533);else H.push(N)}else if((Q&248)===240){let K=G[Z++]&63,Y=G[Z++]&63,N=G[Z++]&63,W=(Q&7)<<18|K<<12|Y<<6|N;if(W<65536||W>1114111)H.push(65533);else if(W>65535)W-=65536,H.push(W>>>10&1023|55296),W=56320|W&1023,H.push(W);else H.push(W)}else H.push(65533);if(H.length>=4096)$+=f.apply(String,H),H.length=0}if(H.length>0)$+=f.apply(String,H);return $}function n8(_){let $=Array(_);for(let X=0;X<_;X++)$[X]=h();if(j.freezeData)return Object.freeze($);return $}function s8(_){if(j.mapsAsObjects){let $={};for(let X=0;X<_;X++){let H=$$();if(H==="__proto__")H="__proto_";$[H]=h()}return $}else{let $=new Map;for(let X=0;X<_;X++)$.set(h(),h());return $}}var f=String.fromCharCode;function _$(_){let $=Z,X=Array(_);for(let H=0;H<_;H++){let Q=G[Z++];if((Q&128)>0){Z=$;return}X[H]=Q}return f.apply(String,X)}function $8(_){if(_<4)if(_<2)if(_===0)return"";else{let $=G[Z++];if(($&128)>1){Z-=1;return}return f($)}else{let $=G[Z++],X=G[Z++];if(($&128)>0||(X&128)>0){Z-=2;return}if(_<3)return f($,X);let H=G[Z++];if((H&128)>0){Z-=3;return}return f($,X,H)}else{let $=G[Z++],X=G[Z++],H=G[Z++],Q=G[Z++];if(($&128)>0||(X&128)>0||(H&128)>0||(Q&128)>0){Z-=4;return}if(_<6)if(_===4)return f($,X,H,Q);else{let K=G[Z++];if((K&128)>0){Z-=5;return}return f($,X,H,Q,K)}else if(_<8){let K=G[Z++],Y=G[Z++];if((K&128)>0||(Y&128)>0){Z-=6;return}if(_<7)return f($,X,H,Q,K,Y);let N=G[Z++];if((N&128)>0){Z-=7;return}return f($,X,H,Q,K,Y,N)}else{let K=G[Z++],Y=G[Z++],N=G[Z++],W=G[Z++];if((K&128)>0||(Y&128)>0||(N&128)>0||(W&128)>0){Z-=8;return}if(_<10)if(_===8)return f($,X,H,Q,K,Y,N,W);else{let M=G[Z++];if((M&128)>0){Z-=9;return}return f($,X,H,Q,K,Y,N,W,M)}else if(_<12){let M=G[Z++],z=G[Z++];if((M&128)>0||(z&128)>0){Z-=10;return}if(_<11)return f($,X,H,Q,K,Y,N,W,M,z);let B=G[Z++];if((B&128)>0){Z-=11;return}return f($,X,H,Q,K,Y,N,W,M,z,B)}else{let M=G[Z++],z=G[Z++],B=G[Z++],w=G[Z++];if((M&128)>0||(z&128)>0||(B&128)>0||(w&128)>0){Z-=12;return}if(_<14)if(_===12)return f($,X,H,Q,K,Y,N,W,M,z,B,w);else{let I=G[Z++];if((I&128)>0){Z-=13;return}return f($,X,H,Q,K,Y,N,W,M,z,B,w,I)}else{let I=G[Z++],v=G[Z++];if((I&128)>0||(v&128)>0){Z-=14;return}if(_<15)return f($,X,H,Q,K,Y,N,W,M,z,B,w,I,v);let p=G[Z++];if((p&128)>0){Z-=15;return}return f($,X,H,Q,K,Y,N,W,M,z,B,w,I,v,p)}}}}}function o8(){let _=G[Z++],$;if(_<192)$=_-160;else switch(_){case 217:$=G[Z++];break;case 218:$=V.getUint16(Z),Z+=2;break;case 219:$=V.getUint32(Z),Z+=4;break;default:throw Error("Expected string")}return J_($)}function o_(_){return j.copyBuffers?Uint8Array.prototype.slice.call(G,Z,Z+=_):G.subarray(Z,Z+=_)}function F_(_){let $=G[Z++];if(l[$]){let X;return l[$](G.subarray(Z,X=Z+=_),(H)=>{Z=H;try{return h()}finally{Z=X}})}else throw Error("Unknown extension type "+$)}var i8=Array(4096);function $$(){let _=G[Z++];if(_>=160&&_<192){if(_=_-160,r>=Z)return Q_.slice(Z-d,(Z+=_)-d);else if(!(r==0&&c<180))return t_(_)}else return Z--,X$(h());let $=(_<<5^(_>1?V.getUint16(Z):_>0?G[Z]:0))&4095,X=i8[$],H=Z,Q=Z+_-3,K,Y=0;if(X&&X.bytes==_){while(H<Q){if(K=V.getUint32(H),K!=X[Y++]){H=1879048192;break}H+=4}Q+=3;while(H<Q)if(K=G[H++],K!=X[Y++]){H=1879048192;break}if(H===Q)return Z=H,X.string;Q-=3,H=Z}X=[],i8[$]=X,X.bytes=_;while(H<Q)K=V.getUint32(H),X.push(K),H+=4;Q+=3;while(H<Q)K=G[H++],X.push(K);let N=_<16?$8(_):_$(_);if(N!=null)return X.string=N;return X.string=t_(_)}function X$(_){if(typeof _==="string")return _;if(typeof _==="number"||typeof _==="boolean"||typeof _==="bigint")return _.toString();if(_==null)return _+"";if(j.allowArraysInMapKeys&&Array.isArray(_)&&_.flat().every(($)=>["string","number","boolean","bigint"].includes(typeof $)))return _.flat().toString();throw Error(`Invalid property type for record: ${typeof _}`)}var a8=(_,$)=>{let X=h().map(X$),H=_;if($!==void 0)_=_<32?-(($<<5)+_):($<<5)+_,X.highByte=$;let Q=E[_];if(Q&&(Q.isShared||K_))(E.restoreStructures||(E.restoreStructures=[]))[_]=Q;return E[_]=X,X.read=_8(X,H),X.read()};l[0]=()=>{};l[0].noBuffer=!0;l[66]=(_)=>{let $=_.byteLength%8||8,X=BigInt(_[0]&128?_[0]-256:_[0]);for(let H=1;H<$;H++)X<<=BigInt(8),X+=BigInt(_[H]);if(_.byteLength!==$){let H=new DataView(_.buffer,_.byteOffset,_.byteLength),Q=(K,Y)=>{let N=Y-K;if(N<=40){let B=H.getBigUint64(K);for(let w=K+8;w<Y;w+=8)B<<=BigInt(64),B|=H.getBigUint64(w);return B}let W=K+(N>>4<<3),M=Q(K,W),z=Q(W,Y);return M<<BigInt((Y-W)*8)|z};X=X<<BigInt((H.byteLength-$)*8)|Q($,H.byteLength)}return X};var r8={Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,AggregateError:typeof AggregateError==="function"?AggregateError:null};l[101]=()=>{let _=h();if(!r8[_[0]]){let $=Error(_[1],{cause:_[2]});return $.name=_[0],$}return r8[_[0]](_[1],{cause:_[2]})};l[105]=(_)=>{if(j.structuredClone===!1)throw Error("Structured clone extension is disabled");let $=V.getUint32(Z-4);if(!$_)$_=new Map;let X=G[Z],H;if(X>=144&&X<160||X==220||X==221)H=[];else if(X>=128&&X<144||X==222||X==223)H=new Map;else if((X>=199&&X<=201||X>=212&&X<=216)&&G[Z+1]===115)H=new Set;else H={};let Q={target:H};$_.set($,Q);let K=h();if(!Q.used)return Q.target=K;else Object.assign(H,K);if(H instanceof Map)for(let[Y,N]of K.entries())H.set(Y,N);if(H instanceof Set)for(let Y of Array.from(K))H.add(Y);return H};l[112]=(_)=>{if(j.structuredClone===!1)throw Error("Structured clone extension is disabled");let $=V.getUint32(Z-4),X=$_.get($);return X.used=!0,X.target};l[115]=()=>new Set(h());var X8=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map((_)=>_+"Array"),b$=typeof globalThis==="object"?globalThis:window;l[116]=(_)=>{let $=_[0],X=Uint8Array.prototype.slice.call(_,1).buffer,H=X8[$];if(!H){if($===16)return X;if($===17)return new DataView(X);throw Error("Could not find typed array for code "+$)}return new b$[H](X)};l[120]=()=>{let _=h();return new RegExp(_[0],_[1])};var x$=[];l[98]=(_)=>{let $=(_[0]<<24)+(_[1]<<16)+(_[2]<<8)+_[3],X=Z;return Z+=$-_.length,g=x$,g=[o8(),o8()],g.position0=0,g.position1=0,g.postBundlePosition=Z,Z=X,h()};l[255]=(_)=>{if(_.length==4)return new Date((_[0]*16777216+(_[1]<<16)+(_[2]<<8)+_[3])*1000);else if(_.length==8)return new Date(((_[0]<<22)+(_[1]<<14)+(_[2]<<6)+(_[3]>>2))/1e6+((_[3]&3)*4294967296+_[4]*16777216+(_[5]<<16)+(_[6]<<8)+_[7])*1000);else if(_.length==12)return new Date(((_[0]<<24)+(_[1]<<16)+(_[2]<<8)+_[3])/1e6+((_[4]&128?-281474976710656:0)+_[6]*1099511627776+_[7]*4294967296+_[8]*16777216+(_[9]<<16)+(_[10]<<8)+_[11])*1000);else return new Date("invalid")};function H$(_){if(u8)u8();let $=c,X=Z,H=r_,Q=d,K=r,Y=Q_,N=a_,W=$_,M=g,z=new Uint8Array(G.slice(0,c)),B=E,w=E.slice(0,E.length),I=j,v=K_,p=_();return c=$,Z=X,r_=H,d=Q,r=K,Q_=Y,a_=N,$_=W,g=M,G=z,K_=v,E=B,E.splice(0,E.length,...w),j=I,V=new DataView(G.buffer,G.byteOffset,G.byteLength),p}function w_(){G=null,$_=null,E=null}function Q$(_){if(_.unpack)l[_.type]=_.unpack;else l[_.type]=_}var x_=Array(147);for(let _=0;_<256;_++)x_[_]=+("1e"+Math.floor(45.15-_*0.30103));var j_=new t({useRecords:!1}),j$=j_.unpack,y$=j_.unpackMultiple,I$=j_.unpack;var k$=new Float32Array(1),DX=new Uint8Array(k$.buffer,0,4);var I_;try{I_=new TextEncoder}catch(_){}var k_,S_,D_=typeof Buffer<"u",y_=D_?function(_){return Buffer.allocUnsafeSlow(_)}:Uint8Array,D$=D_?Buffer:Uint8Array,K$=D_?4294967296:2144337920,D,R_,y,F=0,u,S=null,S$,v$=21760,h$=/[\u0080-\uFFFF]/,Y_=Symbol("record-id");class O_ extends t{constructor(_){super(_);this.offset=0;let $,X,H,Q,K,Y=D$.prototype.utf8Write?function(O,L){return D.utf8Write(O,L,D.byteLength-L)}:I_&&I_.encodeInto?function(O,L){return I_.encodeInto(O,D.subarray(L)).written}:!1,N=this;if(!_)_={};let W=_&&_.sequential,M=_.structures||_.saveStructures,z=_.maxSharedStructures;if(z==null)z=M?32:0;if(z>8160)throw Error("Maximum maxSharedStructure is 8160");if(_.structuredClone&&_.moreTypes==null)this.moreTypes=!0;let B=_.maxOwnStructures;if(B==null)B=M?32:64;if(!this.structures&&_.useRecords!=!1)this.structures=[];let w=z>32||B+z>64,I=z+64,v=z+B+64;if(v>8256)throw Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let p=[],m=0,e=0;this.pack=this.encode=function(O,L){if(!D)D=new y_(8192),y=D.dataView||(D.dataView=new DataView(D.buffer,0,8192)),F=0;if(u=D.length-10,u-F<2048)D=new y_(D.length),y=D.dataView||(D.dataView=new DataView(D.buffer,0,D.length)),u=D.length-10,F=0;else F=F+7&2147483640;if(X=F,L&J$)F+=L&255;if(K=N.structuredClone?new Map:null,N.bundleStrings&&typeof O!=="string")S=[],S.size=1/0;else S=null;if(Q=N.structures,Q){if(Q.uninitialized)Q=N._mergeStructures(N.getStructures());let q=Q.sharedLength||0;if(q>z)throw Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+Q.sharedLength);if(!Q.transitions){Q.transitions=Object.create(null);for(let J=0;J<q;J++){let A=Q[J];if(!A)continue;let U,C=Q.transitions;for(let b=0,x=A.length;b<x;b++){let i=A[b];if(U=C[i],!U)U=C[i]=Object.create(null);C=U}C[Y_]=J+64}this.lastNamedStructuresLength=q}if(!W)Q.nextId=q+64}if(H)H=!1;let R;try{if(N.randomAccessStructure&&O&&typeof O==="object")if(O.constructor===Object)y8(O);else if(O.constructor!==Map&&!Array.isArray(O)&&!S_.some((J)=>O instanceof J))y8(O.toJSON?O.toJSON():O);else k(O);else k(O);let q=S;if(S)F$(X,k,0);if(K&&K.idsToInsert){let J=K.idsToInsert.sort((b,x)=>b.offset>x.offset?1:-1),A=J.length,U=-1;while(q&&A>0){let b=J[--A].offset+X;if(b<q.stringsPosition+X&&U===-1)U=0;if(b>q.position+X){if(U>=0)U+=6}else{if(U>=0)y.setUint32(q.position+X,y.getUint32(q.position+X)+U),U=-1;q=q.previous,A++}}if(U>=0&&q)y.setUint32(q.position+X,y.getUint32(q.position+X)+U);if(F+=J.length*6,F>u)__(F);N.offset=F;let C=m$(D.subarray(X,F),J);return K=null,C}if(N.offset=F,L&N$)return D.start=X,D.end=F,D;return D.subarray(X,F)}catch(q){throw R=q,q}finally{if(Q){if(M_(),H&&N.saveStructures){let q=Q.sharedLength||0,J=D.subarray(X,F),A=f$(Q,N);if(!R){if(N.saveStructures(A,A.isCompatible)===!1)return N.pack(O,L);if(N.lastNamedStructuresLength=q,D.length>1073741824)D=null;return J}}}if(D.length>1073741824)D=null;if(L&q$)F=X}};let M_=()=>{if(e<10)e++;let O=Q.sharedLength||0;if(Q.length>O&&!W)Q.length=O;if(m>1e4){if(Q.transitions=null,e=0,m=0,p.length>0)p=[]}else if(p.length>0&&!W){for(let L=0,R=p.length;L<R;L++)p[L][Y_]=0;p=[]}},d_=(O)=>{var L=O.length;if(L<16)D[F++]=144|L;else if(L<65536)D[F++]=220,D[F++]=L>>8,D[F++]=L&255;else D[F++]=221,y.setUint32(F,L),F+=4;for(let R=0;R<L;R++)k(O[R])},k=(O)=>{if(F>u)D=__(F);var L=typeof O,R;if(L==="string"){let q=O.length;if(S&&q>=4&&q<4096){if((S.size+=q)>v$){let C,b=(S[0]?S[0].length*3+S[1].length:0)+10;if(F+b>u)D=__(F+b);let x;if(S.position)x=S,D[F]=200,F+=3,D[F++]=98,C=F-X,F+=4,F$(X,k,0),y.setUint16(C+X-3,F-X-C);else D[F++]=214,D[F++]=98,C=F-X,F+=4;S=["",""],S.previous=x,S.size=0,S.position=C}let U=h$.test(O);S[U?0:1]+=O,D[F++]=193,k(U?-q:q);return}let J;if(q<32)J=1;else if(q<256)J=2;else if(q<65536)J=3;else J=5;let A=q*3;if(F+A>u)D=__(F+A);if(q<64||!Y){let U,C,b,x=F+J;for(U=0;U<q;U++)if(C=O.charCodeAt(U),C<128)D[x++]=C;else if(C<2048)D[x++]=C>>6|192,D[x++]=C&63|128;else if((C&64512)===55296&&((b=O.charCodeAt(U+1))&64512)===56320)C=65536+((C&1023)<<10)+(b&1023),U++,D[x++]=C>>18|240,D[x++]=C>>12&63|128,D[x++]=C>>6&63|128,D[x++]=C&63|128;else D[x++]=C>>12|224,D[x++]=C>>6&63|128,D[x++]=C&63|128;R=x-F-J}else R=Y(O,F+J);if(R<32)D[F++]=160|R;else if(R<256){if(J<2)D.copyWithin(F+2,F+1,F+1+R);D[F++]=217,D[F++]=R}else if(R<65536){if(J<3)D.copyWithin(F+3,F+2,F+2+R);D[F++]=218,D[F++]=R>>8,D[F++]=R&255}else{if(J<5)D.copyWithin(F+5,F+3,F+3+R);D[F++]=219,y.setUint32(F,R),F+=4}F+=R}else if(L==="number")if(O>>>0===O)if(O<32||O<128&&this.useRecords===!1||O<64&&!this.randomAccessStructure)D[F++]=O;else if(O<256)D[F++]=204,D[F++]=O;else if(O<65536)D[F++]=205,D[F++]=O>>8,D[F++]=O&255;else D[F++]=206,y.setUint32(F,O),F+=4;else if(O>>0===O)if(O>=-32)D[F++]=256+O;else if(O>=-128)D[F++]=208,D[F++]=O+256;else if(O>=-32768)D[F++]=209,y.setInt16(F,O),F+=2;else D[F++]=210,y.setInt32(F,O),F+=4;else{let q;if((q=this.useFloat32)>0&&O<4294967296&&O>=-2147483648){D[F++]=202,y.setFloat32(F,O);let J;if(q<4||(J=O*x_[(D[F]&127)<<1|D[F+1]>>7])>>0===J){F+=4;return}else F--}D[F++]=203,y.setFloat64(F,O),F+=8}else if(L==="object"||L==="function")if(!O)D[F++]=192;else{if(K){let J=K.get(O);if(J){if(!J.id){let A=K.idsToInsert||(K.idsToInsert=[]);J.id=A.push(J)}D[F++]=214,D[F++]=112,y.setUint32(F,J.id),F+=4;return}else K.set(O,{offset:F-X})}let q=O.constructor;if(q===Object)C_(O);else if(q===Array)d_(O);else if(q===Map)if(this.mapAsEmptyObject)D[F++]=128;else{if(R=O.size,R<16)D[F++]=128|R;else if(R<65536)D[F++]=222,D[F++]=R>>8,D[F++]=R&255;else D[F++]=223,y.setUint32(F,R),F+=4;for(let[J,A]of O)k(J),k(A)}else{for(let J=0,A=k_.length;J<A;J++){let U=S_[J];if(O instanceof U){let C=k_[J];if(C.write){if(C.type)D[F++]=212,D[F++]=C.type,D[F++]=0;let q_=C.write.call(this,O);if(q_===O)if(Array.isArray(O))d_(O);else C_(O);else k(q_);return}let b=D,x=y,i=F;D=null;let H_;try{H_=C.pack.call(this,O,(q_)=>{if(D=b,b=null,F+=q_,F>u)__(F);return{target:D,targetView:y,position:F-q_}},k)}finally{if(b)D=b,y=x,F=i,u=D.length-10}if(H_){if(H_.length+F>u)__(H_.length+F);F=Z$(H_,D,F,C.type)}return}}if(Array.isArray(O))d_(O);else{if(O.toJSON){let J=O.toJSON();if(J!==O)return k(J)}if(L==="function")return k(this.writeFunction&&this.writeFunction(O));C_(O)}}}else if(L==="boolean")D[F++]=O?195:194;else if(L==="bigint"){if(O<9223372036854776000&&O>=-9223372036854776000)D[F++]=211,y.setBigInt64(F,O);else if(O<18446744073709552000&&O>0)D[F++]=207,y.setBigUint64(F,O);else if(this.largeBigIntToFloat)D[F++]=203,y.setFloat64(F,Number(O));else if(this.largeBigIntToString)return k(O.toString());else if(this.useBigIntExtension||this.moreTypes){let q=O<0?BigInt(-1):BigInt(0),J;if(O>>BigInt(65536)===q){let A=BigInt(18446744073709552000)-BigInt(1),U=[];while(!0){if(U.push(O&A),O>>BigInt(63)===q)break;O>>=BigInt(64)}J=new Uint8Array(new BigUint64Array(U).buffer),J.reverse()}else{let A=O<0,U=(A?~O:O).toString(16);if(U.length%2)U="0"+U;else if(parseInt(U.charAt(0),16)>=8)U="00"+U;if(D_)J=Buffer.from(U,"hex");else{J=new Uint8Array(U.length/2);for(let C=0;C<J.length;C++)J[C]=parseInt(U.slice(C*2,C*2+2),16)}if(A)for(let C=0;C<J.length;C++)J[C]=~J[C]}if(J.length+F>u)__(J.length+F);F=Z$(J,D,F,66);return}else throw RangeError(O+" was too large to fit in MessagePack 64-bit integer format, use useBigIntExtension, or set largeBigIntToFloat to convert to float-64, or set largeBigIntToString to convert to string");F+=8}else if(L==="undefined")if(this.encodeUndefinedAsNil)D[F++]=192;else D[F++]=212,D[F++]=0,D[F++]=0;else throw Error("Unknown type: "+L)},w8=this.variableMapSize||this.coercibleKeyAsNumber||this.skipValues?(O)=>{let L;if(this.skipValues){L=[];for(let J in O)if((typeof O.hasOwnProperty!=="function"||O.hasOwnProperty(J))&&!this.skipValues.includes(O[J]))L.push(J)}else L=Object.keys(O);let R=L.length;if(R<16)D[F++]=128|R;else if(R<65536)D[F++]=222,D[F++]=R>>8,D[F++]=R&255;else D[F++]=223,y.setUint32(F,R),F+=4;let q;if(this.coercibleKeyAsNumber)for(let J=0;J<R;J++){q=L[J];let A=Number(q);k(isNaN(A)?q:A),k(O[q])}else for(let J=0;J<R;J++)k(q=L[J]),k(O[q])}:(O)=>{D[F++]=222;let L=F-X;F+=2;let R=0;for(let q in O)if(typeof O.hasOwnProperty!=="function"||O.hasOwnProperty(q))k(q),k(O[q]),R++;if(R>65535)throw Error('Object is too large to serialize with fast 16-bit map size, use the "variableMapSize" option to serialize this object');D[L+++X]=R>>8,D[L+X]=R&255},b8=this.useRecords===!1?w8:_.progressiveRecords&&!w?(O)=>{let L,R=Q.transitions||(Q.transitions=Object.create(null)),q=F++-X,J;for(let A in O)if(typeof O.hasOwnProperty!=="function"||O.hasOwnProperty(A)){if(L=R[A],L)R=L;else{let U=Object.keys(O),C=R;R=Q.transitions;let b=0;for(let x=0,i=U.length;x<i;x++){let H_=U[x];if(L=R[H_],!L)L=R[H_]=Object.create(null),b++;R=L}if(q+X+1==F)F--,c_(R,U,b);else j8(R,U,q,b);J=!0,R=C[A]}k(O[A])}if(!J){let A=R[Y_];if(A)D[q+X]=A;else j8(R,Object.keys(O),q,0)}}:(O)=>{let L,R=Q.transitions||(Q.transitions=Object.create(null)),q=0;for(let A in O)if(typeof O.hasOwnProperty!=="function"||O.hasOwnProperty(A)){if(L=R[A],!L)L=R[A]=Object.create(null),q++;R=L}let J=R[Y_];if(J)if(J>=96&&w)D[F++]=((J-=96)&31)+96,D[F++]=J>>5;else D[F++]=J;else c_(R,R.__keys__||Object.keys(O),q);for(let A in O)if(typeof O.hasOwnProperty!=="function"||O.hasOwnProperty(A))k(O[A])},x8=typeof this.useRecords=="function"&&this.useRecords,C_=x8?(O)=>{x8(O)?b8(O):w8(O)}:b8,__=(O)=>{let L;if(O>16777216){if(O-X>K$)throw Error("Packed buffer would be larger than maximum buffer size");L=Math.min(K$,Math.round(Math.max((O-X)*(O>67108864?1.25:2),4194304)/4096)*4096)}else L=(Math.max(O-X<<2,D.length-1)>>12)+1<<12;let R=new y_(L);if(y=R.dataView||(R.dataView=new DataView(R.buffer,0,L)),O=Math.min(O,D.length),D.copy)D.copy(R,0,X,O);else R.set(D.slice(X,O));return F-=X,X=0,u=R.length-10,D=R},c_=(O,L,R)=>{let q=Q.nextId;if(!q)q=64;if(q<I&&this.shouldShareStructure&&!this.shouldShareStructure(L)){if(q=Q.nextOwnId,!(q<v))q=I;Q.nextOwnId=q+1}else{if(q>=v)q=I;Q.nextId=q+1}let J=L.highByte=q>=96&&w?q-96>>5:-1;if(O[Y_]=q,O.__keys__=L,Q[q-64]=L,q<I)if(L.isShared=!0,Q.sharedLength=q-63,H=!0,J>=0)D[F++]=(q&31)+96,D[F++]=J;else D[F++]=q;else{if(J>=0)D[F++]=213,D[F++]=114,D[F++]=(q&31)+96,D[F++]=J;else D[F++]=212,D[F++]=114,D[F++]=q;if(R)m+=e*R;if(p.length>=B)p.shift()[Y_]=0;p.push(O),k(L)}},j8=(O,L,R,q)=>{let J=D,A=F,U=u,C=X;if(D=R_,F=0,X=0,!D)R_=D=new y_(8192);u=D.length-10,c_(O,L,q),R_=D;let b=F;if(D=J,F=A,u=U,X=C,b>1){let x=F+b-1;if(x>u)__(x);let i=R+X;D.copyWithin(i+b,i+1,F),D.set(R_.slice(0,b),i),F=x}else D[R+X]=R_[0]},y8=(O)=>{let L=S$(O,D,X,F,Q,__,(R,q,J)=>{if(J)return H=!0;F=q;let A=D;if(k(R),M_(),A!==D)return{position:F,targetView:y,target:D};return F},this);if(L===0)return C_(O);F=L}}useBuffer(_){D=_,D.dataView||(D.dataView=new DataView(D.buffer,D.byteOffset,D.byteLength)),y=D.dataView,F=0}set position(_){F=_}get position(){return F}clearSharedData(){if(this.structures)this.structures=[];if(this.typedStructs)this.typedStructs=[]}}S_=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,DataView,b_];k_=[{pack(_,$,X){let H=_.getTime()/1000;if((this.useTimestamp32||_.getMilliseconds()===0)&&H>=0&&H<4294967296){let{target:Q,targetView:K,position:Y}=$(6);Q[Y++]=214,Q[Y++]=255,K.setUint32(Y,H)}else if(H>0&&H<4294967296){let{target:Q,targetView:K,position:Y}=$(10);Q[Y++]=215,Q[Y++]=255,K.setUint32(Y,_.getMilliseconds()*4000000+(H/1000/4294967296>>0)),K.setUint32(Y+4,H)}else if(isNaN(H)){if(this.onInvalidDate)return $(0),X(this.onInvalidDate());let{target:Q,targetView:K,position:Y}=$(3);Q[Y++]=212,Q[Y++]=255,Q[Y++]=255}else{let{target:Q,targetView:K,position:Y}=$(15);Q[Y++]=199,Q[Y++]=12,Q[Y++]=255,K.setUint32(Y,_.getMilliseconds()*1e6),K.setBigInt64(Y+4,BigInt(Math.floor(H)))}}},{pack(_,$,X){if(this.setAsEmptyObject)return $(0),X({});let H=Array.from(_),{target:Q,position:K}=$(this.moreTypes?3:0);if(this.moreTypes)Q[K++]=212,Q[K++]=115,Q[K++]=0;X(H)}},{pack(_,$,X){let{target:H,position:Q}=$(this.moreTypes?3:0);if(this.moreTypes)H[Q++]=212,H[Q++]=101,H[Q++]=0;X([_.name,_.message,_.cause])}},{pack(_,$,X){let{target:H,position:Q}=$(this.moreTypes?3:0);if(this.moreTypes)H[Q++]=212,H[Q++]=120,H[Q++]=0;X([_.source,_.flags])}},{pack(_,$){if(this.moreTypes)H8(_,16,$);else Q8(D_?Buffer.from(_):new Uint8Array(_),$)}},{pack(_,$){let X=_.constructor;if(X!==D$&&this.moreTypes)H8(_,X8.indexOf(X.name),$);else Q8(_,$)}},{pack(_,$){if(this.moreTypes)H8(_,17,$);else Q8(D_?Buffer.from(_):new Uint8Array(_),$)}},{pack(_,$){let{target:X,position:H}=$(1);X[H]=193}}];function H8(_,$,X,H){let Q=_.byteLength;if(Q+1<256){var{target:K,position:Y}=X(4+Q);K[Y++]=199,K[Y++]=Q+1}else if(Q+1<65536){var{target:K,position:Y}=X(5+Q);K[Y++]=200,K[Y++]=Q+1>>8,K[Y++]=Q+1&255}else{var{target:K,position:Y,targetView:N}=X(7+Q);K[Y++]=201,N.setUint32(Y,Q+1),Y+=4}if(K[Y++]=116,K[Y++]=$,!_.buffer)_=new Uint8Array(_);K.set(new Uint8Array(_.buffer,_.byteOffset,_.byteLength),Y)}function Q8(_,$){let X=_.byteLength;var H,Q;if(X<256){var{target:H,position:Q}=$(X+2);H[Q++]=196,H[Q++]=X}else if(X<65536){var{target:H,position:Q}=$(X+3);H[Q++]=197,H[Q++]=X>>8,H[Q++]=X&255}else{var{target:H,position:Q,targetView:K}=$(X+5);H[Q++]=198,K.setUint32(Q,X),Q+=4}H.set(_,Q)}function Z$(_,$,X,H){let Q=_.length;switch(Q){case 1:$[X++]=212;break;case 2:$[X++]=213;break;case 4:$[X++]=214;break;case 8:$[X++]=215;break;case 16:$[X++]=216;break;default:if(Q<256)$[X++]=199,$[X++]=Q;else if(Q<65536)$[X++]=200,$[X++]=Q>>8,$[X++]=Q&255;else $[X++]=201,$[X++]=Q>>24,$[X++]=Q>>16&255,$[X++]=Q>>8&255,$[X++]=Q&255}return $[X++]=H,$.set(_,X),X+=Q,X}function m$(_,$){let X,H=$.length*6,Q=_.length-H;while(X=$.pop()){let{offset:K,id:Y}=X;_.copyWithin(K+H,K,Q),H-=6;let N=K+H;_[N++]=214,_[N++]=105,_[N++]=Y>>24,_[N++]=Y>>16&255,_[N++]=Y>>8&255,_[N++]=Y&255,Q=K}return _}function F$(_,$,X){if(S.length>0){y.setUint32(S.position+_,F+X-S.position-_),S.stringsPosition=F-_;let H=S;S=null,$(H[0]),$(H[1])}}function K8(_){if(_.Class){if(!_.pack&&!_.write)throw Error("Extension has no pack or write function");if(_.pack&&!_.type)throw Error("Extension has no type (numeric code to identify the extension)");S_.unshift(_.Class),k_.unshift(_)}Q$(_)}function f$(_,$){return _.isCompatible=(X)=>{let H=!X||($.lastNamedStructuresLength||0)===X.length;if(!H)$._mergeStructures(X);return H},_}var O$=new O_({useRecords:!1}),g$=O$.pack,p$=O$.pack;var N$=512,q$=1024,J$=2048;var G$=80;class o{capId;constructor(_){this.capId=_}}var l$=new Set(["hello","goaway","call","result","cancel","stream","drop","cap_revoked"]);function Z8(_){if(typeof _!=="object"||_===null)return!1;let $=_,X=$.op;if(typeof X!=="string"||!l$.has(X))return!1;switch(X){case"hello":return $.v===1&&($.mode==="native"||$.mode==="web")&&Array.isArray($.features)&&typeof $.maxBytes==="number"&&typeof $.origin==="string";case"goaway":return $.reason===void 0||typeof $.reason==="string";case"call":return typeof $.id==="number"&&typeof $.method==="string"&&typeof $.target==="object"&&$.target!==null&&$.target.kind==="cap"&&typeof $.target.id==="number";case"result":return typeof $.id==="number"&&($.ok===!0||$.ok===!1);case"cancel":return typeof $.id==="number";case"stream":return typeof $.id==="number"&&typeof $.ev==="string"&&($.ev==="next"||$.ev==="credit"||$.ev==="end"||$.ev==="error");case"drop":return Array.isArray($.caps);case"cap_revoked":if(!Array.isArray($.capIds))return!1;for(let H of $.capIds)if(typeof H!=="number"||!Number.isInteger(H)||H<0||H>4294967295)return!1;return!0}}var R$=!1;function u$(){if(R$)return;R$=!0,K8({Class:o,type:G$,pack:(_)=>d$(_.capId),unpack:(_)=>new o(n$(_))})}function F8(){return u$(),{packr:new O_({useRecords:!0,sequential:!0,moreTypes:!0}),unpackr:new t({useRecords:!0,sequential:!0,moreTypes:!0})}}function d$(_){let $=new Uint8Array(5),X=_>>>0,H=0;while(X>=128)$[H++]=X&127|128,X>>>=7;return $[H++]=X&127,$.subarray(0,H)}var c$=5;function n$(_){let $=0,X=0,H=Math.min(_.length,c$);for(let Q=0;Q<H;Q++){let K=_[Q];if($|=(K&127)<<X,(K&128)===0)return $>>>0;X+=7}throw Error("Truncated or oversize varuint")}var Y8=67108864,D8=1,v_="bunite.",h_="bootstrap";class P extends Error{code;details;retry;constructor(_){super(_.message??_.code);this.name="IpcError",this.code=_.code,this.details=_.details,this.retry=_.retry}toStatus(){return{code:this.code,message:this.message,details:this.details,retry:this.retry}}}var m_=a("bunite.BrowserWindow",{focus:T(),close:T(),setBounds:T(),setTitle:T(),id:T({idempotent:!0}),label:T({idempotent:!0})}),O8=a("bunite.Window",{create:T({returns:s(m_)}),list:T({returns:s.array(m_),idempotent:!0}),focus:T(),close:T()}),f_=a("bunite.FileRef",{text:T({idempotent:!0}),bytes:T({idempotent:!0}),path:T({idempotent:!0}),revoke:T()},{disposal:{method:"revoke"}}),N8=a("bunite.Dialogs",{openFile:T({returns:s.array(f_)}),saveFile:T({returns:s(f_)}),showMessage:T()}),q8=a("bunite.Clipboard",{readText:T({idempotent:!0}),writeText:T(),readBytes:T({idempotent:!0}),writeBytes:T()}),J8=a("bunite.Shell",{openExternal:T(),showItemInFolder:T()}),R8=a("bunite.Surface",{init:T(),resize:T(),remove:T(),setHidden:T(),setMasks:T(),setAllPassthrough:T(),bringAllVisiblesToFront:T(),navigate:T(),goBack:T(),reload:T(),didNavigate:P_()}),G_=a("bunite.Runtime",{window:T({returns:s(O8),idempotent:!0}),dialogs:T({returns:s(N8),idempotent:!0}),clipboard:T({returns:s(q8),idempotent:!0}),shell:T({returns:s(J8),idempotent:!0}),appName:T({idempotent:!0}),appVersion:T({idempotent:!0}),theme:T({idempotent:!0}),themeWatch:P_(),surface:T({returns:s(R8),idempotent:!0})}),X_={Runtime:1,Window:2,Dialogs:3,FileRef:4,Clipboard:5,Shell:6,BrowserWindow:7,Surface:8},s$=new Map([[G_,X_.Runtime],[O8,X_.Window],[N8,X_.Dialogs],[f_,X_.FileRef],[q8,X_.Clipboard],[J8,X_.Shell],[m_,X_.BrowserWindow],[R8,X_.Surface]]);function G8(_){return s$.get(_)}var p_=0,M8=1,L$=0,M$=1,N_=2,C8=128,l_=1024,C$=1024,o$=l_*4,i$=500,a$=32,r$=8,t$=1024;function e$(_){let $=_?.initialBudget;if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<1)return a$;return Math.min($,t$)}var g_=null;class A8{entries=new Map;nextCapId=N_;capLimit;constructor(_=l_){this.capLimit=_}install(_,$){if(this.entries.has(_))throw Error(`cap-id ${_} already installed`);let X={capId:_,...$};return this.entries.set(_,X),X}allocate(_){if(this.entries.size>=this.capLimit)throw new P({code:"resource_exhausted",message:`cap-table limit ${this.capLimit}`,details:{reason:"max_caps_per_connection"}});let $=this.nextCapId++;while(this.entries.has($))$=this.nextCapId++;return this.install($,_)}get(_){return this.entries.get(_)}release(_,$=1){let X=this.entries.get(_);if(!X)return!1;if(X.refCount=Math.max(0,X.refCount-$),X.refCount===0&&_>=N_)return this.entries.delete(_),!0;return!1}delete(_){if(_<N_)return!1;return this.entries.delete(_)}clear(){this.entries.clear(),this.nextCapId=N_}size(){return this.entries.size}values(){return this.entries.values()}}var _X={origin:"",topOrigin:"",partition:"default",isAppRes:!1,isMainFrame:!1,userGesture:!1,level:"untrusted"},A$=Symbol("bunite.rpc.ExportedCap"),W$=Symbol("bunite.rpc.CapProxyMeta");function $X(_){return typeof _==="object"&&_!==null&&_[A$]===!0}var XX=typeof FinalizationRegistry<"u"?new FinalizationRegistry((_)=>{if(_.dropped())return;let $=_.connRef.deref();if(!$||$.closed)return;$._dropFromFinalizer(_.capId)}):{register:()=>{}};class U${transport;capTable;pending=new Map;clientStreams=new Map;serverStreams=new Map;serverCallChildren=new Map;serverActiveCalls=new Map;registry=new Map;rootInstances=new Map;revokedCapIds=new Set;closeHandlers=new Set;observers={};nextCallId=1;remoteHello=null;remoteReady;resolveRemoteReady;rejectRemoteReady;closed_=!1;maxBytes;maxInFlightCalls;mode;origin;features;attestation;peerId;policy;constructor(_){this.transport=_.transport,this.mode=_.mode,this.origin=_.origin,this.features=_.features??[],this.maxBytes=_.maxBytes??Y8,this.maxInFlightCalls=_.maxInFlightCalls??C$,this.attestation=_.attestation??_X,this.peerId=_.peerId??"peer",this.policy=_.policy,this.capTable=new A8(_.capLimit??l_),this.capTable.install(p_,{typeId:L$,cap:null,impl:null,refCount:1}),this.capTable.install(M8,{typeId:M$,cap:G_,impl:_.runtime??null,refCount:1}),this.remoteReady=new Promise(($,X)=>{this.resolveRemoteReady=$,this.rejectRemoteReady=X}),this.remoteReady.catch(()=>{}),this.transport.setReceive(($)=>this.handleFrame($)),this.transport.send({op:"hello",v:D8,mode:this.mode,features:this.features,maxBytes:this.maxBytes,origin:this.origin})}get closed(){return this.closed_}onClose(_){return this.closeHandlers.add(_),()=>this.closeHandlers.delete(_)}on(_,$){let X=this.observers[_];if(!X)X=new Set,this.observers[_]=X;return X.add($),()=>{X.delete($)}}emitObs(_,$){let X=this.observers[_];if(!X||X.size===0)return;for(let H of X)try{H($)}catch{}}markRevoked(_){this.revokedCapIds.add(_);while(this.revokedCapIds.size>o$){let $=this.revokedCapIds.values().next().value;if($===void 0)break;this.revokedCapIds.delete($)}}serve(_,$,X){this.assertNotFrameworkName(_.name);let H=X?.ifExists??"throw";if(this.registry.get(_.name))switch(H){case"throw":throw new P({code:"already_exists",message:`cap "${_.name}" already served`,details:{reason:"name_collision"}});case"skip":return this.makeHandle([]);case"replace":return this.replace(_,$),this.makeHandle([_.name])}return this.registry.set(_.name,{cap:_,impl:$,version:_.version}),this.makeHandle([_.name])}makeHandle(_){let $={names:_,[Symbol.dispose]:()=>this.unserve($)};return $}serveAll(_,$,X){let H=X?.ifExists??"throw";for(let K of Object.keys(_.roots)){let Y=_.roots[K];this.assertNotFrameworkName(Y.name);let N=this.registry.get(Y.name);if(N){if(H==="throw")throw new P({code:"already_exists",message:`cap "${Y.name}" already served`,details:{reason:"name_collision"}});if(H==="replace"&&N.version!==Y.version)throw new P({code:"failed_precondition",message:`version mismatch on replace for "${Y.name}" (current "${N.version}", new "${Y.version}")`,details:{reason:"version_mismatch"}})}}let Q=[];for(let K of Object.keys(_.roots)){let Y=_.roots[K],N=$[K];if(this.serve(Y,N,{ifExists:H}).names.length>0)Q.push(Y.name)}return this.makeHandle(Q)}unserve(_){let $=V_(_)?[_.name]:Array.from(_.names),X=[];for(let H of $){if(!this.registry.delete(H))continue;let Q=this.rootInstances.get(H);if(Q!==void 0){let K=this.capTable.get(Q);if(K)this.invokeServerDisposal(K);this.rootInstances.delete(H),this.capTable.delete(Q),X.push(Q)}}if(X.length>0)this.transport.send({op:"cap_revoked",capIds:X}),this.emitObs("revoke",{capIds:X,reason:"unserve"})}replace(_,$){let X=this.registry.get(_.name);if(!X)throw new P({code:"not_found",message:`cap "${_.name}" not served`});if(X.version!==_.version)throw new P({code:"failed_precondition",message:`version mismatch (current "${X.version}", new "${_.version}")`,details:{reason:"version_mismatch"}});X.impl=$,X.cap=_;let H=this.rootInstances.get(_.name);if(H!==void 0){let Q=this.capTable.get(H);if(Q)Q.impl=$,Q.cap=_}this.emitObs("revoke",{capIds:H!==void 0?[H]:[],reason:"replace"})}assertNotFrameworkName(_){if(_.startsWith(v_))throw new P({code:"already_exists",message:`cap name "${_}" uses reserved prefix "${v_}"`,details:{reason:"reserved_namespace"}})}runtimeProxy=null;runtime(){if(!this.runtimeProxy)this.runtimeProxy=this.makeCapProxy(G_,M8);return this.runtimeProxy}async bootstrap(_){if(V_(_))return this._bootstrapCap(_);if(s_(_))return this._bootstrapSchema(_);throw new P({code:"invalid_argument",message:"bootstrap target must be CapDef or Schema"})}async _bootstrapCap(_){await this.remoteReady;let $={name:_.name};if(_.version!=null)$.version=_.version;let X=await this.sendCallTyped(p_,h_,$,void 0);if(!(X instanceof o))throw new P({code:"invalid_argument",message:"bootstrap did not return a CapRef"});return this.makeCapProxy(_,X.capId)}async _bootstrapSchema(_){let $=Object.keys(_.roots),X=await Promise.allSettled($.map((K)=>this._bootstrapCap(_.roots[K]))),H=X.find((K)=>K.status==="rejected");if(H){for(let K of X)if(K.status==="fulfilled")try{this.releaseRef(K.value)}catch{}throw H.reason}let Q={};for(let K=0;K<$.length;K++)Q[$[K]]=X[K].value;return Q}handleFrame(_){if(this.closed_)return;switch(_.op){case"hello":this.handleHello(_);return;case"call":this.handleCall(_);return;case"result":this.handleResult(_);return;case"cancel":this.handleCancel(_);return;case"stream":this.handleStreamFrame(_);return;case"drop":this.handleDrop(_);return;case"cap_revoked":this.handleCapRevoked(_);return;case"goaway":this.handleGoaway(_);return;default:this.handleUnknownFrame(_);return}}handleUnknownFrame(_){let $=_?.id;if(typeof $==="number"){this.transport.send({op:"result",id:$,ok:!1,error:{code:"invalid_argument",message:"unknown opcode"}});return}this.transport.send({op:"goaway",reason:"invalid_argument",error:{code:"invalid_argument",message:"unknown opcode"}}),this.shutdown("invalid_argument")}handleHello(_){this.remoteHello=_,this.resolveRemoteReady(_)}handleGoaway(_){this.rejectRemoteReady(new P(_.error??{code:"unavailable",message:_.reason??"peer goaway"})),this.shutdown(_.reason??"remote goaway")}handleCapRevoked(_){for(let $ of _.capIds){this.markRevoked($);let X=new P({code:"failed_precondition",message:"cap revoked",details:{reason:"revoked"}});for(let[H,Q]of this.pending)if(Q.capId===$){if(this.pending.delete(H),Q.timer)clearTimeout(Q.timer);Q.reject(X)}for(let[H,Q]of this.clientStreams)if(Q.capId===$)this.clientStreams.delete(H),Q.fail(X)}}async handleCall(_){if(_.target.id===p_&&_.method===h_){await this.handleBootstrap(_);return}let $=this.capTable.get(_.target.id);if(!$)return this.emitObs("call",{capId:_.target.id,method:_.method,callId:_.id,result:"not_found"}),this.sendError(_.id,"not_found",`cap-id ${_.target.id} not found`);let X=$.cap;if(!X||!$.impl)return this.emitObs("call",{capId:_.target.id,method:_.method,callId:_.id,result:"not_found"}),this.sendError(_.id,"not_found","cap has no impl");let H=X.methods[_.method];if(!H)return this.emitObs("call",{capId:_.target.id,capName:X.name,method:_.method,callId:_.id,result:"not_found"}),this.sendError(_.id,"not_found",`method "${_.method}" on cap "${X.name}"`);let Q=$.impl[_.method];if(typeof Q!=="function")return this.emitObs("call",{capId:_.target.id,capName:X.name,method:_.method,callId:_.id,result:"not_found"}),this.sendError(_.id,"not_found",`method "${_.method}" has no handler`);if(this.serverActiveCalls.size+this.serverStreams.size>=this.maxInFlightCalls)return this.emitObs("call",{capId:_.target.id,capName:X.name,method:_.method,callId:_.id,result:"resource_exhausted"}),this.sendError(_.id,"resource_exhausted",`in-flight calls limit ${this.maxInFlightCalls}`,{reason:"max_concurrent_calls"});await this.invokeServerMethod(_,X,H,Q)}async handleBootstrap(_){let $=_.args??{},X=$.name;if(typeof X!=="string")return this.emitObs("bootstrap",{name:String(X),attestation:this.attestation,result:"invalid_argument"}),this.sendError(_.id,"invalid_argument","bootstrap requires {name: string}");let H=$.version!=null?String($.version):void 0,Q=this.registry.get(X);if(!Q)return this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"not_found"}),this.sendError(_.id,"not_found",`cap "${X}" not served`);let K=Q.version;if(K!=null&&H!=null&&K!==H)return this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"version_mismatch"}),this.sendError(_.id,"failed_precondition",`version mismatch (server "${K}", client "${H}")`,{reason:"version_mismatch"});if(this.policy){let N;try{N=await this.policy(X,this.attestation)}catch(W){return this.emitObs("error",{phase:"policy",error:W instanceof Error?W:Error(String(W))}),this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"internal"}),this.sendError(_.id,"internal","policy threw")}if(typeof N!=="boolean")return this.emitObs("error",{phase:"policy",error:Error(`policy must return boolean (got ${typeof N})`)}),this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"internal"}),this.sendError(_.id,"internal","policy returned non-boolean");if(!N)return this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"denied"}),this.sendError(_.id,"failed_precondition","policy denied",{reason:"unauthorized"})}let Y=this.rootInstances.get(X);if(Y!==void 0){let N=this.capTable.get(Y);if(N)N.refCount+=1;else this.rootInstances.delete(X),Y=void 0}if(Y===void 0)try{Y=this.capTable.allocate({typeId:G8(Q.cap)??C8,cap:Q.cap,impl:Q.impl,refCount:1}).capId,this.rootInstances.set(X,Y)}catch(N){if(N instanceof P){let W=N.code==="resource_exhausted"?"resource_exhausted":"internal";return this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:W}),this.sendError(_.id,N.code,N.message,N.details)}throw N}this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"ok",capId:Y}),this.transport.send({op:"result",id:_.id,ok:!0,value:new o(Y)})}async invokeServerMethod(_,$,X,H){let Q=this.makeCallCtx(_);if(z_(X)){let K=e$(X.hint);try{let Y=()=>H(_.args,Q),N=g_,M=(N?()=>N.run({callId:_.id},Y):Y)();this.runServerStream(_.id,M,Q,K,$,_.method,_.target.id)}catch(Y){this.emitObs("stream",{capId:_.target.id,capName:$.name,method:_.method,callId:_.id,event:"error"}),this.transport.send({op:"stream",id:_.id,ev:"error",error:W8(Y)})}return}if(B_(X)){let K=performance.now(),Y=X.idempotent?void 0:this.armServerDeadline(_,Q);this.serverActiveCalls.set(_.id,{ctrl:Q._ctrl,capId:_.target.id,capName:$.name,method:_.method,startedAt:K});let N=HX(X.returns),W=()=>Promise.resolve(H(_.args,Q)),M=g_,z=M?()=>M.run({callId:_.id},W):W;try{let B=await z();if(Y)clearTimeout(Y);if(!this.serverActiveCalls.delete(_.id))return;let w=N(B);this.transport.send({op:"result",id:_.id,ok:!0,value:w}),this.emitObs("call",{capId:_.target.id,capName:$.name,method:_.method,callId:_.id,durationMs:performance.now()-K,result:"ok"})}catch(B){if(Y)clearTimeout(Y);if(!this.serverActiveCalls.delete(_.id))return;let w=W8(B);this.sendErrorFromStatus(_.id,w),this.emitObs("call",{capId:_.target.id,capName:$.name,method:_.method,callId:_.id,durationMs:performance.now()-K,result:w.code})}return}this.sendError(_.id,"not_found","unknown method kind")}armServerDeadline(_,$){let X=_.meta?.deadlineMs;if(!X)return;return setTimeout(()=>{$._ctrl.abort()},X)}makeCallCtx(_){let $=new AbortController;return{callId:_.id,peerId:this.peerId,attestation:this.attestation,signal:$.signal,deadline:_.meta?.deadlineMs,context:_.meta?.context,_ctrl:$,exportCap:(H,Q)=>this.exportCap(H,Q)}}exportCap(_,$){let X=G8(_)??C8,H=this.capTable.allocate({typeId:X,cap:_,impl:$,refCount:1});return{[A$]:!0,cap:_,capId:H.capId,typeId:H.typeId}}runServerStream(_,$,X,H,Q,K,Y){let N=$[Symbol.asyncIterator](),W=X._ctrl,M={iter:N,abort:W,cancelled:!1,credit:H,creditWaker:null,capId:Y,capName:Q.name,method:K,callId:_,count:0};this.serverStreams.set(_,M),this.emitObs("stream",{capId:Y,capName:Q.name,method:K,callId:_,event:"start"});let z=()=>{if(M.credit>0||M.cancelled)return Promise.resolve();return new Promise((w)=>{M.creditWaker=w})};(async()=>{let w=!1;try{while(!M.cancelled){if(M.credit===0)await z();if(M.cancelled)break;let{done:I,value:v}=await N.next();if(I)break;if(M.cancelled)break;M.credit-=1,M.count+=1,this.transport.send({op:"stream",id:_,ev:"next",value:v})}}catch(I){w=!0,this.transport.send({op:"stream",id:_,ev:"error",error:W8(I)}),this.emitObs("stream",{capId:Y,capName:Q.name,method:K,callId:_,event:"error",count:M.count})}finally{if(!w)this.transport.send({op:"stream",id:_,ev:"end"}),this.emitObs("stream",{capId:Y,capName:Q.name,method:K,callId:_,event:M.cancelled?"cancel":"end",count:M.count});this.serverStreams.delete(_)}})()}handleResult(_){let $=this.pending.get(_.id);if($){if(this.pending.delete(_.id),this.serverCallChildren.delete(_.id),$.timer)clearTimeout($.timer);if(_.ok){let H=$.decodeReturn?$.decodeReturn(_.value):_.value;$.resolve(H)}else $.reject(new P(_.error));return}let X=this.clientStreams.get(_.id);if(X){this.clientStreams.delete(_.id);let H=_.ok?new P({code:"invalid_argument",message:"stream method returned result frame"}):new P(_.error);X.fail(H)}}handleCancel(_){let $=this.serverStreams.get(_.id);if($)$.cancelled=!0,$.abort.abort(),$.iter?.return?.(),this.serverStreams.delete(_.id);let X=this.serverActiveCalls.get(_.id);if(X)this.serverActiveCalls.delete(_.id),X.ctrl.abort(),this.transport.send({op:"result",id:_.id,ok:!1,error:{code:"cancelled",message:_.reason}}),this.emitObs("call",{capId:X.capId,capName:X.capName,method:X.method,callId:_.id,durationMs:performance.now()-X.startedAt,result:"cancelled"});for(let[H,Q]of this.serverCallChildren){if(Q.parentId!==_.id)continue;if(this.serverCallChildren.delete(H),this.pending.has(H))this.transport.send({op:"cancel",id:H,reason:_.reason})}}releaseRef(_){if(typeof _!=="object"||_===null)return;let $=_[W$];if(!$||$.dropped)return;$.dropped=!0,this.sendDrop($.capId)}sendDrop(_){if(this.closed_)return;if(_<N_)return;this.transport.send({op:"drop",caps:[{id:_,delta:1}]})}handleStreamFrame(_){if(_.ev==="credit"){let X=this.serverStreams.get(_.id);if(!X)return;X.credit+=_.credit?.messages??0;let H=X.creditWaker;X.creditWaker=null,H?.();return}let $=this.clientStreams.get(_.id);if(!$)return;switch(_.ev){case"next":$.push(_.value);return;case"end":$.end(),this.clientStreams.delete(_.id);return;case"error":$.fail(new P(_.error)),this.clientStreams.delete(_.id);return}}handleDrop(_){for(let{id:$,delta:X}of _.caps)if(this.capTable.release($,X)){for(let[Q,K]of this.rootInstances)if(K===$){this.rootInstances.delete(Q);break}}}sendError(_,$,X,H){let Q={code:$,message:X};if(H!==void 0)Q.details=H;this.transport.send({op:"result",id:_,ok:!1,error:Q})}sendErrorFromStatus(_,$){this.transport.send({op:"result",id:_,ok:!1,error:$})}nextId(){return this.nextCallId++}sendCallTyped(_,$,X,H,Q,K){if(this.closed_)return Promise.reject(new P({code:"unavailable",message:"connection closed"}));if(this.revokedCapIds.has(_))return Promise.reject(new P({code:"failed_precondition",message:"cap revoked",details:{reason:"revoked"}}));if(this.pending.size>=this.maxInFlightCalls)return Promise.reject(new P({code:"resource_exhausted",message:`in-flight calls limit ${this.maxInFlightCalls}`,details:{reason:"max_concurrent_calls"}}));let Y=this.nextId();return new Promise((N,W)=>{let M=new AbortController,z={resolve:N,reject:W,abort:M,decodeReturn:H,startedAt:performance.now(),capId:_,method:$,capName:K,kind:"call"};if(Q?.deadlineMs)z.timer=setTimeout(()=>{if(this.pending.delete(Y))this.transport.send({op:"cancel",id:Y,reason:"deadline_exceeded"}),W(new P({code:"deadline_exceeded"}))},Q.deadlineMs+i$);this.pending.set(Y,z);let B=Q;if(B?.parentCallId===void 0&&g_){let w=g_.getStore();if(w)B={...B??{},parentCallId:w.callId}}if(B?.parentCallId!==void 0)this.serverCallChildren.set(Y,{parentId:B.parentCallId});this.transport.send({op:"call",id:Y,target:{kind:"cap",id:_},method:$,args:X,meta:B})})}openClientStream(_,$,X,H,Q){if(this.closed_){let M=L8(_,0,()=>{},()=>{});return M.fail(new P({code:"unavailable",message:"connection closed"})),M.stream}if(this.revokedCapIds.has(_)){let M=L8(_,0,()=>{},()=>{});return M.fail(new P({code:"failed_precondition",message:"cap revoked",details:{reason:"revoked"}})),M.stream}let K=this.nextId(),W=L8(_,K,()=>{if(this.clientStreams.delete(K))this.transport.send({op:"cancel",id:K,reason:"client_cancel"})},(M)=>{if(this.closed_||!this.clientStreams.has(K))return;this.transport.send({op:"stream",id:K,ev:"credit",credit:{messages:M}})});return this.clientStreams.set(K,W),this.transport.send({op:"call",id:K,target:{kind:"cap",id:_},method:$,args:X,meta:H}),W.stream}makeCapProxy(_,$){let X={},H={capId:$,dropped:!1};X[W$]=H;let Q=()=>{if(H.dropped)return;H.dropped=!0,this.sendDrop($)};for(let Y of Object.keys(_.methods)){let N=_.methods[Y];if(z_(N))X[Y]=(W)=>this.openClientStream($,Y,W,void 0,_.name);else if(B_(N)){let W=QX(N.returns,(M,z)=>this.makeCapProxy(M,z));X[Y]=(M)=>this.sendCallTyped($,Y,M,W,void 0,_.name)}}let K=_.disposal;if(K){let Y=this;X[Symbol.dispose]=()=>{try{let N=X[K.method]?.();if(N&&typeof N.then==="function")N.catch((W)=>Y.emitObs("error",{phase:"dispose",error:W instanceof Error?W:Error(String(W))}))}catch(N){Y.emitObs("error",{phase:"dispose",error:N instanceof Error?N:Error(String(N))})}Q()}}if(typeof FinalizationRegistry<"u")XX.register(X,{connRef:new WeakRef(this),capId:$,dropped:()=>H.dropped});return X}_dropFromFinalizer(_){try{this.sendDrop(_)}catch{}}shutdown(_){if(this.closed_)return;this.closed_=!0;for(let $ of this.pending.values()){if($.timer)clearTimeout($.timer);$.reject(new P({code:"unavailable",message:_}))}this.pending.clear();for(let $ of this.clientStreams.values())$.fail(new P({code:"unavailable",message:_}));this.clientStreams.clear();for(let $ of this.serverStreams.values())$.cancelled=!0,$.abort.abort(),$.iter?.return?.();this.serverStreams.clear();for(let $ of this.serverActiveCalls.values())$.ctrl.abort();this.serverActiveCalls.clear();for(let $ of this.capTable.values())this.invokeServerDisposal($);if(this.capTable.clear(),!this.remoteHello)this.rejectRemoteReady(new P({code:"unavailable",message:_}));for(let $ of this.closeHandlers)try{$()}catch{}this.closeHandlers.clear();try{this.transport.close()}catch{}}invokeServerDisposal(_){let $=_.cap;if(!$)return;let X=$.disposal;if(!X)return;let H=_.impl,Q=H?.[X.method];if(!Q)return;try{Q.call(H,void 0,void 0)}catch{}}}function HX(_){if(!_)return(X)=>X;let $=(X,H)=>{if(!$X(X))throw new P({code:"failed_precondition",message:"expected ctx.exportCap return for cap method",details:{reason:"unregistered_cap_return"}});if(X.cap!==H)throw new P({code:"failed_precondition",message:"exported cap type mismatch with method returns",details:{reason:"unregistered_cap_return"}});return new o(X.capId)};if(A_(_))return(X)=>$(X,_.cap);if(U_(_))return(X)=>{if(!Array.isArray(X))throw new P({code:"invalid_argument",message:"expected ExportedCap[] for cap.array method"});return X.map((H)=>$(H,_.cap))};if(T_(_))return(X)=>{if(!X||typeof X!=="object")throw new P({code:"invalid_argument",message:"expected Record<string, ExportedCap> for cap.record method"});let H={};for(let Q of Object.keys(X))H[Q]=$(X[Q],_.cap);return H};return(X)=>X}function QX(_,$){if(!_)return;if(A_(_)){let X=_.cap;return(H)=>{if(!(H instanceof o))throw new P({code:"invalid_argument",message:"expected CapRef"});return $(X,H.capId)}}if(U_(_)){let X=_.cap,H=X.disposal;return(Q)=>{if(!Array.isArray(Q))throw new P({code:"invalid_argument",message:"expected array"});let K=Q.map((Y)=>{if(!(Y instanceof o))throw new P({code:"invalid_argument",message:"expected CapRef in array"});return $(X,Y.capId)});return KX(K,H),K}}if(T_(_)){let X=_.cap;return(H)=>{if(!H||typeof H!=="object")throw new P({code:"invalid_argument",message:"expected record"});let Q={};for(let K of Object.keys(H)){let Y=H[K];if(!(Y instanceof o))throw new P({code:"invalid_argument",message:"expected CapRef in record"});Q[K]=$(X,Y.capId)}return Q}}return}function KX(_,$){if(!$)return;_[Symbol.dispose]=()=>{for(let X of _)X[Symbol.dispose]?.call(X)}}function W8(_){if(_ instanceof P)return _.toStatus();if(_ instanceof Error)return{code:"internal",message:_.message};return{code:"internal",message:String(_)}}function L8(_,$,X,H){let Q=[],K=[],Y=!1,N=null,W=!1,M=0;function z(){if(M+=1,M>=r$)H(M),M=0}function B(){if(Q.length>0){let m=Q.shift();return z(),{value:m,done:!1}}if(N)return null;if(Y||W)return{value:void 0,done:!0};return null}function w(){let m=B();if(m)return Promise.resolve(m);if(N)return Promise.reject(N);return new Promise((e,M_)=>K.push({resolve:e,reject:M_}))}function I(){while(K.length>0){let m=K.shift(),e=B();if(e){m.resolve(e);continue}if(N){m.reject(N);continue}K.unshift(m);break}}function v(){if(W||Y||N)return;W=!0,X(),I()}let p={[Symbol.asyncIterator]:()=>({next:w,return:()=>{return v(),Promise.resolve({value:void 0,done:!0})},throw:(m)=>{return v(),Promise.reject(m)}}),[Symbol.dispose]:v,cancel:v};return{capId:_,stream:p,push(m){if(W||Y||N)return;Q.push(m),I()},end(){Y=!0,I()},fail(m){N=m,I()}}}function U8(_){return new U$(_)}function T8(_,$={}){let X=F8(),H;return _.setReceive((Q)=>{let K;try{K=X.unpackr.unpack(Q)}catch(Y){$.onProtocolError?.(`unpack failed: ${Y instanceof Error?Y.message:String(Y)}`),_.close();return}if(!Z8(K)){$.onProtocolError?.("malformed frame"),_.close();return}H?.(K)}),{send(Q){let K=X.packr.pack(Q);_.send(K instanceof Uint8Array?K:new Uint8Array(K))},setReceive(Q){H=Q},close(){_.close()}}}function B8(_){if("binaryType"in _)try{_.binaryType="arraybuffer"}catch{}let $,X=(H)=>{if(!$)return;let Q=H.data;if(Q instanceof Uint8Array){$(Q);return}if(Q instanceof ArrayBuffer){$(new Uint8Array(Q));return}if(typeof Blob<"u"&&Q instanceof Blob){Q.arrayBuffer().then((K)=>$?.(new Uint8Array(K)));return}};return _.addEventListener("message",X),{send(H){_.send(H)},setReceive(H){$=H},close(){_.removeEventListener?.("message",X),_.close?.()}}}function W_(_){let $=new ArrayBuffer(_.byteLength);return new Uint8Array($).set(_),$}async function ZX(_){return crypto.subtle.importKey("raw",W_(_),"AES-GCM",!1,["encrypt","decrypt"])}async function z8(_,$){let X=await ZX($),H,Q=Promise.resolve(),K=Promise.resolve(),Y=!1,N=()=>{if(!Y)Y=!0,_.close()};return _.setReceive((W)=>{if(Y)return;if(W.length<13||W[0]!==1){N();return}let M=W_(W.subarray(1,13)),z=W_(W.subarray(13));K=K.then(async()=>{if(Y)return;try{let B=await crypto.subtle.decrypt({name:"AES-GCM",iv:M},X,z);H?.(new Uint8Array(B))}catch{N()}})}),{send(W){if(Y)return;let M=W_(W);Q=Q.then(async()=>{if(Y)return;try{let z=crypto.getRandomValues(new Uint8Array(12)),B=W_(z),w=await crypto.subtle.encrypt({name:"AES-GCM",iv:B},X,M),I=new Uint8Array(w),v=new Uint8Array(13+I.byteLength);v[0]=1,v.set(z,1),v.set(I,13),_.send(v)}catch{N()}})},setReceive(W){H=W},close(){N()}}}class FX{buffer=[];waiters=[];ctrl=new AbortController;cleanup;ended=!1;failure=null;constructor(_){let $=(X)=>{if(this.ended||this.failure)return;let H=this.waiters.shift();if(H){H.resolve({value:X,done:!1});return}this.buffer.push(X)};try{let X=_($,this.ctrl.signal);if(typeof X==="function")this.cleanup=X}catch(X){this.failure=X}}[Symbol.asyncIterator](){return{next:async()=>{if(this.buffer.length>0)return{value:this.buffer.shift(),done:!1};if(this.failure)throw this.failure;if(this.ended)return{value:void 0,done:!0};return new Promise((_,$)=>this.waiters.push({resolve:_,reject:$}))},return:async()=>{return this.dispose(),{value:void 0,done:!0}}}}cancel(){this.dispose()}[Symbol.dispose](){this.dispose()}dispose(){if(this.ended)return;this.ended=!0,this.ctrl.abort();try{this.cleanup?.()}catch{}while(this.waiters.length>0)this.waiters.shift().resolve({value:void 0,done:!0})}}var P8=null;function V8(){if(!P8)P8=host.runtime().then((_)=>_.surface());return P8}function n(_){return V8().then(_).catch(($)=>{if(globalThis.__BUNITE_DEBUG__)console.warn("[bunite] surface call failed",$);return})}class T${element;onBoundsChange;observer=null;rafId=0;lastRect={x:0,y:0,width:0,height:0};dirty=!1;stopped=!1;constructor(_,$){this.element=_,this.onBoundsChange=$}start(){this.observer=new ResizeObserver(()=>this.markDirty()),this.observer.observe(this.element),this.scheduleFrame()}stop(){if(this.stopped=!0,this.observer?.disconnect(),this.observer=null,this.rafId)cancelAnimationFrame(this.rafId),this.rafId=0}markDirty(){this.dirty=!0}scheduleFrame(){if(this.stopped)return;this.rafId=requestAnimationFrame(()=>{this.flush(),this.scheduleFrame()})}flush(){let _=window.devicePixelRatio||1,$=this.element.getBoundingClientRect(),X={x:Math.round($.x*_),y:Math.round($.y*_),width:Math.round($.width*_),height:Math.round($.height*_)};if(!this.dirty&&X.x===this.lastRect.x&&X.y===this.lastRect.y&&X.width===this.lastRect.width&&X.height===this.lastRect.height)return;this.dirty=!1,this.lastRect=X,this.onBoundsChange(X)}}class B$ extends HTMLElement{static observedAttributes=["src"];_surfaceId=null;_syncCtrl=null;_initPromise=null;_aborted=!1;_pendingSrc=null;_syncHidden=!1;_userHidden=!1;_layoutObserver=null;_unsubNavigate=null;constructor(){super()}connectedCallback(){this._aborted=!1,this._syncHidden=!1,this._userHidden=!1;let _=new AbortController;this._unsubNavigate=()=>_.abort(),(async()=>{try{let X=(await V8()).didNavigate();for await(let H of X){if(_.signal.aborted)break;if(H.surfaceId===this._surfaceId)this.dispatchEvent(new CustomEvent("did-navigate",{detail:{url:H.url}}))}}catch($){if(globalThis.__BUNITE_DEBUG__)console.warn("[bunite] didNavigate stream failed",$)}})(),this._waitForLayout()}_waitForLayout(){if(this._layoutObserver)return;let _=()=>{if(!this.isConnected||this._aborted)return!0;let $=this.getBoundingClientRect();if($.width>0&&$.height>0){if(this.getAttribute("src")||this._pendingSrc||"")this.initSurface();return!0}return!1};requestAnimationFrame(()=>{if(_())return;this._layoutObserver=new ResizeObserver(()=>{if(_())this._layoutObserver?.disconnect(),this._layoutObserver=null}),this._layoutObserver.observe(this)})}disconnectedCallback(){if(this._aborted=!0,this._unsubNavigate?.(),this._unsubNavigate=null,this._layoutObserver?.disconnect(),this._layoutObserver=null,this._syncCtrl?.stop(),this._syncCtrl=null,this._surfaceId!=null){let _=this._surfaceId;this._surfaceId=null,n(($)=>$.remove({surfaceId:_}))}else if(this._initPromise)this._initPromise.then((_)=>{n(($)=>$.remove({surfaceId:_.surfaceId}))}).catch(()=>{});this._initPromise=null}attributeChangedCallback(_,$,X){if(_!=="src")return;if(this._surfaceId!=null){let H=this._surfaceId;n((Q)=>Q.navigate({surfaceId:H,url:X||""}))}else if(this._initPromise)this._pendingSrc=X||"";else if(this.isConnected&&!this._aborted&&X)this._waitForLayout()}setHidden(_){this._userHidden=_,this._applySurfaceHidden()}goBack(){let _=this._surfaceId;if(_!=null)n(($)=>$.goBack({surfaceId:_}))}reload(){let _=this._surfaceId;if(_!=null)n(($)=>$.reload({surfaceId:_}))}navigate(_){this.setAttribute("src",_)}_applySurfaceHidden(){let _=this._surfaceId;if(_==null)return;let $=this._userHidden||this._syncHidden;n((X)=>X.setHidden({surfaceId:_,hidden:$}))}initSurface(){if(this._surfaceId!=null||this._initPromise!=null)return;let _=window.devicePixelRatio||1,$=this.getBoundingClientRect(),X=this._pendingSrc||this.getAttribute("src")||"";this._pendingSrc=null;let H=V8().then((Q)=>Q.init({src:X,x:Math.round($.x*_),y:Math.round($.y*_),width:Math.round($.width*_),height:Math.round($.height*_),hidden:this._userHidden}));this._initPromise=H,H.then((Q)=>{if(this._initPromise!==H)return;if(this._aborted){n((K)=>K.remove({surfaceId:Q.surfaceId}));return}if(this._surfaceId=Q.surfaceId,this._userHidden)this._applySurfaceHidden();if(this._pendingSrc!=null){let K=this._pendingSrc;this._pendingSrc=null;let Y=this._surfaceId;if(Y!=null)n((N)=>N.navigate({surfaceId:Y,url:K}))}this._syncCtrl=new T$(this,(K)=>{let Y=this._surfaceId;if(Y==null)return;if(K.width===0&&K.height===0){if(!this._syncHidden)this._syncHidden=!0,this._applySurfaceHidden();return}if(this._syncHidden)this._syncHidden=!1,this._applySurfaceHidden();n((W)=>W.resize({surfaceId:Y,x:K.x,y:K.y,w:K.width,h:K.height}))}),this._syncCtrl.start()}).catch(()=>{}).finally(()=>{if(this._initPromise===H)this._initPromise=null})}}if(typeof customElements<"u"){customElements.define("bunite-webview",B$);let _=()=>{n(($)=>$.bringAllVisiblesToFront())};document.addEventListener("pointerdown",_,!0),document.addEventListener("dragstart",()=>{n(($)=>$.setAllPassthrough({passthrough:!0}))},!0),document.addEventListener("dragend",()=>{n(($)=>$.setAllPassthrough({passthrough:!1})),_()},!0)}var E8=null,L_=null;function u_(){if(E8)return Promise.resolve(E8);if(L_)return L_;let _=(async()=>{let $=new WebSocket(`ws://localhost:${__buniteRpcSocketPort}/rpc?webviewId=${__buniteWebviewId}`);$.binaryType="arraybuffer",await new Promise((K,Y)=>{$.addEventListener("open",()=>K(),{once:!0}),$.addEventListener("error",()=>Y(Error("bunite preload ws connect failed")),{once:!0})});let X=Uint8Array.from(atob(__buniteSecretKeyBase64),(K)=>K.charCodeAt(0)),H=await z8(B8($),X),Q=U8({transport:T8(H),mode:"native",origin:location.origin});return E8=Q,Q})();return L_=_,_.catch(()=>{if(L_===_)L_=null}),_}var Z_=window;Z_.__bunite??={};Z_.__buniteWebviewId=__buniteWebviewId;Z_.__buniteRpcSocketPort=__buniteRpcSocketPort;Z_.host??={};Z_.host.bootstrap=async(_)=>{return(await u_()).bootstrap(_)};Z_.host.runtime=async()=>(await u_()).runtime();Z_.host.releaseRef=async(_)=>{(await u_()).releaseRef(_)};Z_.host.getConnection=()=>u_();
|
|
1
|
+
var I8=Symbol.for("bunite.rpc.CallDef"),k8=Symbol.for("bunite.rpc.StreamDef"),S8=Symbol.for("bunite.rpc.CapDef"),v8=Symbol.for("bunite.rpc.CapRefToken"),h8=Symbol.for("bunite.rpc.CapArrayToken"),m8=Symbol.for("bunite.rpc.CapRecordToken"),z$=Symbol.for("bunite.rpc.Schema");function n_(_){return{[v8]:!0,cap:_}}n_.array=(_)=>({[h8]:!0,cap:_});n_.record=(_)=>({[m8]:!0,cap:_});var s=n_;function A_(_){return typeof _==="object"&&_!==null&&_[v8]===!0}function U_(_){return typeof _==="object"&&_!==null&&_[h8]===!0}function T_(_){return typeof _==="object"&&_!==null&&_[m8]===!0}function B_(_){return typeof _==="object"&&_!==null&&_[I8]===!0}function z_(_){return typeof _==="object"&&_!==null&&_[k8]===!0}function T(_){return{[I8]:!0,idempotent:!!_?.idempotent,returns:_?.returns}}function P_(_){return{[k8]:!0,hint:_?.hint}}function a(_,$,X){return{[S8]:!0,name:_,version:X?.version!=null?String(X.version):void 0,methods:$,disposal:X?.disposal??void 0}}function V_(_){return typeof _==="object"&&_!==null&&_[S8]===!0}function s_(_){return typeof _==="object"&&_!==null&&_[z$]===!0}var i_;try{i_=new TextDecoder}catch(_){}var G,c,Z=0;var t8=[],a_=t8,r_=0,j={},E,Q_,d=0,r=0,g,$_,l=[],V,f8={useRecords:!1,mapsAsObjects:!0};class b_{}var e_=new b_;e_.name="MessagePack 0xC1";var K_=!1,g8=2,p8,l8,u8;class t{constructor(_){if(_){if(_.useRecords===!1&&_.mapsAsObjects===void 0)_.mapsAsObjects=!0;if(_.sequential&&_.trusted!==!1){if(_.trusted=!0,!_.structures&&_.useRecords!=!1){if(_.structures=[],!_.maxSharedStructures)_.maxSharedStructures=0}}if(_.structures)_.structures.sharedLength=_.structures.length;else if(_.getStructures)(_.structures=[]).uninitialized=!0,_.structures.sharedLength=0;if(_.int64AsNumber)_.int64AsType="number"}Object.assign(this,_)}unpack(_,$){if(G)return H$(()=>{return w_(),this?this.unpack(_,$):t.prototype.unpack.call(f8,_,$)});if(!_.buffer&&_.constructor===ArrayBuffer)_=typeof Buffer<"u"?Buffer.from(_):new Uint8Array(_);if(typeof $==="object")c=$.end||_.length,Z=$.start||0;else Z=0,c=$>-1?$:_.length;r_=0,r=0,Q_=null,a_=t8,g=null,G=_;try{V=_.dataView||(_.dataView=new DataView(_.buffer,_.byteOffset,_.byteLength))}catch(X){if(G=null,_ instanceof Uint8Array)throw X;throw Error("Source must be a Uint8Array or Buffer but was a "+(_&&typeof _=="object"?_.constructor.name:typeof _))}if(this instanceof t){if(j=this,this.structures)return E=this.structures,E_($);else if(!E||E.length>0)E=[]}else if(j=f8,!E||E.length>0)E=[];return E_($)}unpackMultiple(_,$){let X,H=0;try{K_=!0;let Q=_.length,K=this?this.unpack(_,Q):j_.unpack(_,Q);if($){if($(K,H,Z)===!1)return;while(Z<Q)if(H=Z,$(E_(),H,Z)===!1)return}else{X=[K];while(Z<Q)H=Z,X.push(E_());return X}}catch(Q){throw Q.lastPosition=H,Q.values=X,Q}finally{K_=!1,w_()}}_mergeStructures(_,$){if(l8)_=l8.call(this,_);if(_=_||[],Object.isFrozen(_))_=_.map((X)=>X.slice(0));for(let X=0,H=_.length;X<H;X++){let Q=_[X];if(Q){if(Q.isShared=!0,X>=32)Q.highByte=X-32>>5}}_.sharedLength=_.length;for(let X in $||[])if(X>=0){let H=_[X],Q=$[X];if(Q){if(H)(_.restoreStructures||(_.restoreStructures=[]))[X]=H;_[X]=Q}}return this.structures=_}decode(_,$){return this.unpack(_,$)}}function E_(_){try{if(!j.trusted&&!K_){let X=E.sharedLength||0;if(X<E.length)E.length=X}let $;if(j.randomAccessStructure&&G[Z]<64&&G[Z]>=32&&p8){if($=p8(G,Z,c,j),G=null,!(_&&_.lazy)&&$)$=$.toJSON();Z=c}else $=h();if(g)Z=g.postBundlePosition,g=null;if(K_)E.restoreStructures=null;if(Z==c){if(E&&E.restoreStructures)d8();if(E=null,G=null,$_)$_=null}else if(Z>c)throw Error("Unexpected end of MessagePack data");else if(!K_){let X;try{X=JSON.stringify($,(H,Q)=>typeof Q==="bigint"?`${Q}n`:Q).slice(0,100)}catch(H){X="(JSON view not available "+H+")"}throw Error("Data read, but end of buffer not reached "+X)}return $}catch($){if(E&&E.restoreStructures)d8();if(w_(),$ instanceof RangeError||$.message.startsWith("Unexpected end of buffer")||Z>c)$.incomplete=!0;throw $}}function d8(){for(let _ in E.restoreStructures)E[_]=E.restoreStructures[_];E.restoreStructures=null}function h(){let _=G[Z++];if(_<160)if(_<128)if(_<64)return _;else{let $=E[_&63]||j.getStructures&&e8()[_&63];if($){if(!$.read)$.read=_8($,_&63);return $.read()}else return _}else if(_<144)if(_-=128,j.mapsAsObjects){let $={};for(let X=0;X<_;X++){let H=$$();if(H==="__proto__")H="__proto_";$[H]=h()}return $}else{let $=new Map;for(let X=0;X<_;X++)$.set(h(),h());return $}else{_-=144;let $=Array(_);for(let X=0;X<_;X++)$[X]=h();if(j.freezeData)return Object.freeze($);return $}else if(_<192){let $=_-160;if(r>=Z)return Q_.slice(Z-d,(Z+=$)-d);if(r==0&&c<140){let X=$<16?$8($):_$($);if(X!=null)return X}return t_($)}else{let $;switch(_){case 192:return null;case 193:if(g)if($=h(),$>0)return g[1].slice(g.position1,g.position1+=$);else return g[0].slice(g.position0,g.position0-=$);return e_;case 194:return!1;case 195:return!0;case 196:if($=G[Z++],$===void 0)throw Error("Unexpected end of buffer");return o_($);case 197:return $=V.getUint16(Z),Z+=2,o_($);case 198:return $=V.getUint32(Z),Z+=4,o_($);case 199:return F_(G[Z++]);case 200:return $=V.getUint16(Z),Z+=2,F_($);case 201:return $=V.getUint32(Z),Z+=4,F_($);case 202:if($=V.getFloat32(Z),j.useFloat32>2){let X=x_[(G[Z]&127)<<1|G[Z+1]>>7];return Z+=4,(X*$+($>0?0.5:-0.5)>>0)/X}return Z+=4,$;case 203:return $=V.getFloat64(Z),Z+=8,$;case 204:return G[Z++];case 205:return $=V.getUint16(Z),Z+=2,$;case 206:return $=V.getUint32(Z),Z+=4,$;case 207:if(j.int64AsType==="number")$=V.getUint32(Z)*4294967296,$+=V.getUint32(Z+4);else if(j.int64AsType==="string")$=V.getBigUint64(Z).toString();else if(j.int64AsType==="auto"){if($=V.getBigUint64(Z),$<=BigInt(2)<<BigInt(52))$=Number($)}else $=V.getBigUint64(Z);return Z+=8,$;case 208:return V.getInt8(Z++);case 209:return $=V.getInt16(Z),Z+=2,$;case 210:return $=V.getInt32(Z),Z+=4,$;case 211:if(j.int64AsType==="number")$=V.getInt32(Z)*4294967296,$+=V.getUint32(Z+4);else if(j.int64AsType==="string")$=V.getBigInt64(Z).toString();else if(j.int64AsType==="auto"){if($=V.getBigInt64(Z),$>=BigInt(-2)<<BigInt(52)&&$<=BigInt(2)<<BigInt(52))$=Number($)}else $=V.getBigInt64(Z);return Z+=8,$;case 212:if($=G[Z++],$==114)return a8(G[Z++]&63);else{let X=l[$];if(X)if(X.read)return Z++,X.read(h());else if(X.noBuffer)return Z++,X();else return X(G.subarray(Z,++Z));else throw Error("Unknown extension "+$)}case 213:if($=G[Z],$==114)return Z++,a8(G[Z++]&63,G[Z++]);else return F_(2);case 214:return F_(4);case 215:return F_(8);case 216:return F_(16);case 217:if($=G[Z++],r>=Z)return Q_.slice(Z-d,(Z+=$)-d);return V$($);case 218:if($=V.getUint16(Z),Z+=2,r>=Z)return Q_.slice(Z-d,(Z+=$)-d);return E$($);case 219:if($=V.getUint32(Z),Z+=4,r>=Z)return Q_.slice(Z-d,(Z+=$)-d);return w$($);case 220:return $=V.getUint16(Z),Z+=2,n8($);case 221:return $=V.getUint32(Z),Z+=4,n8($);case 222:return $=V.getUint16(Z),Z+=2,s8($);case 223:return $=V.getUint32(Z),Z+=4,s8($);default:if(_>=224)return _-256;if(_===void 0){let X=Error("Unexpected end of MessagePack data");throw X.incomplete=!0,X}throw Error("Unknown MessagePack token "+_)}}}var P$=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function _8(_,$){function X(){if(X.count++>g8){let Q;try{Q=_.read=Function("r","return function(){return "+(j.freezeData?"Object.freeze":"")+"({"+_.map((K)=>K==="__proto__"?"__proto_:r()":P$.test(K)?K+":r()":"["+JSON.stringify(K)+"]:r()").join(",")+"})}")(h)}catch(K){return g8=1/0,X()}if(_.highByte===0)_.read=c8($,_.read);return Q()}let H={};for(let Q=0,K=_.length;Q<K;Q++){let Y=_[Q];if(Y==="__proto__")Y="__proto_";H[Y]=h()}if(j.freezeData)return Object.freeze(H);return H}if(X.count=0,_.highByte===0)return c8($,X);return X}var c8=(_,$)=>{return function(){let X=G[Z++];if(X===0)return $();let H=_<32?-(_+(X<<5)):_+(X<<5),Q=E[H]||e8()[H];if(!Q)throw Error("Record id is not defined for "+H);if(!Q.read)Q.read=_8(Q,_);return Q.read()}};function e8(){let _=H$(()=>{return G=null,j.getStructures()});return E=j._mergeStructures(_,E)}var t_=J_,V$=J_,E$=J_,w$=J_;function J_(_){let $;if(_<16){if($=$8(_))return $}if(_>64&&i_)return i_.decode(G.subarray(Z,Z+=_));let X=Z+_,H=[];$="";while(Z<X){let Q=G[Z++];if((Q&128)===0)H.push(Q);else if((Q&224)===192){let K=G[Z++]&63,Y=(Q&31)<<6|K;if(Y<128)H.push(65533);else H.push(Y)}else if((Q&240)===224){let K=G[Z++]&63,Y=G[Z++]&63,N=(Q&31)<<12|K<<6|Y;if(N<2048||N>=55296&&N<=57343)H.push(65533);else H.push(N)}else if((Q&248)===240){let K=G[Z++]&63,Y=G[Z++]&63,N=G[Z++]&63,W=(Q&7)<<18|K<<12|Y<<6|N;if(W<65536||W>1114111)H.push(65533);else if(W>65535)W-=65536,H.push(W>>>10&1023|55296),W=56320|W&1023,H.push(W);else H.push(W)}else H.push(65533);if(H.length>=4096)$+=f.apply(String,H),H.length=0}if(H.length>0)$+=f.apply(String,H);return $}function n8(_){let $=Array(_);for(let X=0;X<_;X++)$[X]=h();if(j.freezeData)return Object.freeze($);return $}function s8(_){if(j.mapsAsObjects){let $={};for(let X=0;X<_;X++){let H=$$();if(H==="__proto__")H="__proto_";$[H]=h()}return $}else{let $=new Map;for(let X=0;X<_;X++)$.set(h(),h());return $}}var f=String.fromCharCode;function _$(_){let $=Z,X=Array(_);for(let H=0;H<_;H++){let Q=G[Z++];if((Q&128)>0){Z=$;return}X[H]=Q}return f.apply(String,X)}function $8(_){if(_<4)if(_<2)if(_===0)return"";else{let $=G[Z++];if(($&128)>1){Z-=1;return}return f($)}else{let $=G[Z++],X=G[Z++];if(($&128)>0||(X&128)>0){Z-=2;return}if(_<3)return f($,X);let H=G[Z++];if((H&128)>0){Z-=3;return}return f($,X,H)}else{let $=G[Z++],X=G[Z++],H=G[Z++],Q=G[Z++];if(($&128)>0||(X&128)>0||(H&128)>0||(Q&128)>0){Z-=4;return}if(_<6)if(_===4)return f($,X,H,Q);else{let K=G[Z++];if((K&128)>0){Z-=5;return}return f($,X,H,Q,K)}else if(_<8){let K=G[Z++],Y=G[Z++];if((K&128)>0||(Y&128)>0){Z-=6;return}if(_<7)return f($,X,H,Q,K,Y);let N=G[Z++];if((N&128)>0){Z-=7;return}return f($,X,H,Q,K,Y,N)}else{let K=G[Z++],Y=G[Z++],N=G[Z++],W=G[Z++];if((K&128)>0||(Y&128)>0||(N&128)>0||(W&128)>0){Z-=8;return}if(_<10)if(_===8)return f($,X,H,Q,K,Y,N,W);else{let M=G[Z++];if((M&128)>0){Z-=9;return}return f($,X,H,Q,K,Y,N,W,M)}else if(_<12){let M=G[Z++],z=G[Z++];if((M&128)>0||(z&128)>0){Z-=10;return}if(_<11)return f($,X,H,Q,K,Y,N,W,M,z);let B=G[Z++];if((B&128)>0){Z-=11;return}return f($,X,H,Q,K,Y,N,W,M,z,B)}else{let M=G[Z++],z=G[Z++],B=G[Z++],w=G[Z++];if((M&128)>0||(z&128)>0||(B&128)>0||(w&128)>0){Z-=12;return}if(_<14)if(_===12)return f($,X,H,Q,K,Y,N,W,M,z,B,w);else{let I=G[Z++];if((I&128)>0){Z-=13;return}return f($,X,H,Q,K,Y,N,W,M,z,B,w,I)}else{let I=G[Z++],v=G[Z++];if((I&128)>0||(v&128)>0){Z-=14;return}if(_<15)return f($,X,H,Q,K,Y,N,W,M,z,B,w,I,v);let p=G[Z++];if((p&128)>0){Z-=15;return}return f($,X,H,Q,K,Y,N,W,M,z,B,w,I,v,p)}}}}}function o8(){let _=G[Z++],$;if(_<192)$=_-160;else switch(_){case 217:$=G[Z++];break;case 218:$=V.getUint16(Z),Z+=2;break;case 219:$=V.getUint32(Z),Z+=4;break;default:throw Error("Expected string")}return J_($)}function o_(_){return j.copyBuffers?Uint8Array.prototype.slice.call(G,Z,Z+=_):G.subarray(Z,Z+=_)}function F_(_){let $=G[Z++];if(l[$]){let X;return l[$](G.subarray(Z,X=Z+=_),(H)=>{Z=H;try{return h()}finally{Z=X}})}else throw Error("Unknown extension type "+$)}var i8=Array(4096);function $$(){let _=G[Z++];if(_>=160&&_<192){if(_=_-160,r>=Z)return Q_.slice(Z-d,(Z+=_)-d);else if(!(r==0&&c<180))return t_(_)}else return Z--,X$(h());let $=(_<<5^(_>1?V.getUint16(Z):_>0?G[Z]:0))&4095,X=i8[$],H=Z,Q=Z+_-3,K,Y=0;if(X&&X.bytes==_){while(H<Q){if(K=V.getUint32(H),K!=X[Y++]){H=1879048192;break}H+=4}Q+=3;while(H<Q)if(K=G[H++],K!=X[Y++]){H=1879048192;break}if(H===Q)return Z=H,X.string;Q-=3,H=Z}X=[],i8[$]=X,X.bytes=_;while(H<Q)K=V.getUint32(H),X.push(K),H+=4;Q+=3;while(H<Q)K=G[H++],X.push(K);let N=_<16?$8(_):_$(_);if(N!=null)return X.string=N;return X.string=t_(_)}function X$(_){if(typeof _==="string")return _;if(typeof _==="number"||typeof _==="boolean"||typeof _==="bigint")return _.toString();if(_==null)return _+"";if(j.allowArraysInMapKeys&&Array.isArray(_)&&_.flat().every(($)=>["string","number","boolean","bigint"].includes(typeof $)))return _.flat().toString();throw Error(`Invalid property type for record: ${typeof _}`)}var a8=(_,$)=>{let X=h().map(X$),H=_;if($!==void 0)_=_<32?-(($<<5)+_):($<<5)+_,X.highByte=$;let Q=E[_];if(Q&&(Q.isShared||K_))(E.restoreStructures||(E.restoreStructures=[]))[_]=Q;return E[_]=X,X.read=_8(X,H),X.read()};l[0]=()=>{};l[0].noBuffer=!0;l[66]=(_)=>{let $=_.byteLength%8||8,X=BigInt(_[0]&128?_[0]-256:_[0]);for(let H=1;H<$;H++)X<<=BigInt(8),X+=BigInt(_[H]);if(_.byteLength!==$){let H=new DataView(_.buffer,_.byteOffset,_.byteLength),Q=(K,Y)=>{let N=Y-K;if(N<=40){let B=H.getBigUint64(K);for(let w=K+8;w<Y;w+=8)B<<=BigInt(64),B|=H.getBigUint64(w);return B}let W=K+(N>>4<<3),M=Q(K,W),z=Q(W,Y);return M<<BigInt((Y-W)*8)|z};X=X<<BigInt((H.byteLength-$)*8)|Q($,H.byteLength)}return X};var r8={Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,AggregateError:typeof AggregateError==="function"?AggregateError:null};l[101]=()=>{let _=h();if(!r8[_[0]]){let $=Error(_[1],{cause:_[2]});return $.name=_[0],$}return r8[_[0]](_[1],{cause:_[2]})};l[105]=(_)=>{if(j.structuredClone===!1)throw Error("Structured clone extension is disabled");let $=V.getUint32(Z-4);if(!$_)$_=new Map;let X=G[Z],H;if(X>=144&&X<160||X==220||X==221)H=[];else if(X>=128&&X<144||X==222||X==223)H=new Map;else if((X>=199&&X<=201||X>=212&&X<=216)&&G[Z+1]===115)H=new Set;else H={};let Q={target:H};$_.set($,Q);let K=h();if(!Q.used)return Q.target=K;else Object.assign(H,K);if(H instanceof Map)for(let[Y,N]of K.entries())H.set(Y,N);if(H instanceof Set)for(let Y of Array.from(K))H.add(Y);return H};l[112]=(_)=>{if(j.structuredClone===!1)throw Error("Structured clone extension is disabled");let $=V.getUint32(Z-4),X=$_.get($);return X.used=!0,X.target};l[115]=()=>new Set(h());var X8=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map((_)=>_+"Array"),b$=typeof globalThis==="object"?globalThis:window;l[116]=(_)=>{let $=_[0],X=Uint8Array.prototype.slice.call(_,1).buffer,H=X8[$];if(!H){if($===16)return X;if($===17)return new DataView(X);throw Error("Could not find typed array for code "+$)}return new b$[H](X)};l[120]=()=>{let _=h();return new RegExp(_[0],_[1])};var x$=[];l[98]=(_)=>{let $=(_[0]<<24)+(_[1]<<16)+(_[2]<<8)+_[3],X=Z;return Z+=$-_.length,g=x$,g=[o8(),o8()],g.position0=0,g.position1=0,g.postBundlePosition=Z,Z=X,h()};l[255]=(_)=>{if(_.length==4)return new Date((_[0]*16777216+(_[1]<<16)+(_[2]<<8)+_[3])*1000);else if(_.length==8)return new Date(((_[0]<<22)+(_[1]<<14)+(_[2]<<6)+(_[3]>>2))/1e6+((_[3]&3)*4294967296+_[4]*16777216+(_[5]<<16)+(_[6]<<8)+_[7])*1000);else if(_.length==12)return new Date(((_[0]<<24)+(_[1]<<16)+(_[2]<<8)+_[3])/1e6+((_[4]&128?-281474976710656:0)+_[6]*1099511627776+_[7]*4294967296+_[8]*16777216+(_[9]<<16)+(_[10]<<8)+_[11])*1000);else return new Date("invalid")};function H$(_){if(u8)u8();let $=c,X=Z,H=r_,Q=d,K=r,Y=Q_,N=a_,W=$_,M=g,z=new Uint8Array(G.slice(0,c)),B=E,w=E.slice(0,E.length),I=j,v=K_,p=_();return c=$,Z=X,r_=H,d=Q,r=K,Q_=Y,a_=N,$_=W,g=M,G=z,K_=v,E=B,E.splice(0,E.length,...w),j=I,V=new DataView(G.buffer,G.byteOffset,G.byteLength),p}function w_(){G=null,$_=null,E=null}function Q$(_){if(_.unpack)l[_.type]=_.unpack;else l[_.type]=_}var x_=Array(147);for(let _=0;_<256;_++)x_[_]=+("1e"+Math.floor(45.15-_*0.30103));var j_=new t({useRecords:!1}),j$=j_.unpack,y$=j_.unpackMultiple,I$=j_.unpack;var k$=new Float32Array(1),DX=new Uint8Array(k$.buffer,0,4);var I_;try{I_=new TextEncoder}catch(_){}var k_,S_,D_=typeof Buffer<"u",y_=D_?function(_){return Buffer.allocUnsafeSlow(_)}:Uint8Array,D$=D_?Buffer:Uint8Array,K$=D_?4294967296:2144337920,D,R_,y,F=0,u,S=null,S$,v$=21760,h$=/[\u0080-\uFFFF]/,Y_=Symbol("record-id");class O_ extends t{constructor(_){super(_);this.offset=0;let $,X,H,Q,K,Y=D$.prototype.utf8Write?function(O,L){return D.utf8Write(O,L,D.byteLength-L)}:I_&&I_.encodeInto?function(O,L){return I_.encodeInto(O,D.subarray(L)).written}:!1,N=this;if(!_)_={};let W=_&&_.sequential,M=_.structures||_.saveStructures,z=_.maxSharedStructures;if(z==null)z=M?32:0;if(z>8160)throw Error("Maximum maxSharedStructure is 8160");if(_.structuredClone&&_.moreTypes==null)this.moreTypes=!0;let B=_.maxOwnStructures;if(B==null)B=M?32:64;if(!this.structures&&_.useRecords!=!1)this.structures=[];let w=z>32||B+z>64,I=z+64,v=z+B+64;if(v>8256)throw Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let p=[],m=0,e=0;this.pack=this.encode=function(O,L){if(!D)D=new y_(8192),y=D.dataView||(D.dataView=new DataView(D.buffer,0,8192)),F=0;if(u=D.length-10,u-F<2048)D=new y_(D.length),y=D.dataView||(D.dataView=new DataView(D.buffer,0,D.length)),u=D.length-10,F=0;else F=F+7&2147483640;if(X=F,L&J$)F+=L&255;if(K=N.structuredClone?new Map:null,N.bundleStrings&&typeof O!=="string")S=[],S.size=1/0;else S=null;if(Q=N.structures,Q){if(Q.uninitialized)Q=N._mergeStructures(N.getStructures());let q=Q.sharedLength||0;if(q>z)throw Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+Q.sharedLength);if(!Q.transitions){Q.transitions=Object.create(null);for(let J=0;J<q;J++){let A=Q[J];if(!A)continue;let U,C=Q.transitions;for(let b=0,x=A.length;b<x;b++){let i=A[b];if(U=C[i],!U)U=C[i]=Object.create(null);C=U}C[Y_]=J+64}this.lastNamedStructuresLength=q}if(!W)Q.nextId=q+64}if(H)H=!1;let R;try{if(N.randomAccessStructure&&O&&typeof O==="object")if(O.constructor===Object)y8(O);else if(O.constructor!==Map&&!Array.isArray(O)&&!S_.some((J)=>O instanceof J))y8(O.toJSON?O.toJSON():O);else k(O);else k(O);let q=S;if(S)F$(X,k,0);if(K&&K.idsToInsert){let J=K.idsToInsert.sort((b,x)=>b.offset>x.offset?1:-1),A=J.length,U=-1;while(q&&A>0){let b=J[--A].offset+X;if(b<q.stringsPosition+X&&U===-1)U=0;if(b>q.position+X){if(U>=0)U+=6}else{if(U>=0)y.setUint32(q.position+X,y.getUint32(q.position+X)+U),U=-1;q=q.previous,A++}}if(U>=0&&q)y.setUint32(q.position+X,y.getUint32(q.position+X)+U);if(F+=J.length*6,F>u)__(F);N.offset=F;let C=m$(D.subarray(X,F),J);return K=null,C}if(N.offset=F,L&N$)return D.start=X,D.end=F,D;return D.subarray(X,F)}catch(q){throw R=q,q}finally{if(Q){if(M_(),H&&N.saveStructures){let q=Q.sharedLength||0,J=D.subarray(X,F),A=f$(Q,N);if(!R){if(N.saveStructures(A,A.isCompatible)===!1)return N.pack(O,L);if(N.lastNamedStructuresLength=q,D.length>1073741824)D=null;return J}}}if(D.length>1073741824)D=null;if(L&q$)F=X}};let M_=()=>{if(e<10)e++;let O=Q.sharedLength||0;if(Q.length>O&&!W)Q.length=O;if(m>1e4){if(Q.transitions=null,e=0,m=0,p.length>0)p=[]}else if(p.length>0&&!W){for(let L=0,R=p.length;L<R;L++)p[L][Y_]=0;p=[]}},d_=(O)=>{var L=O.length;if(L<16)D[F++]=144|L;else if(L<65536)D[F++]=220,D[F++]=L>>8,D[F++]=L&255;else D[F++]=221,y.setUint32(F,L),F+=4;for(let R=0;R<L;R++)k(O[R])},k=(O)=>{if(F>u)D=__(F);var L=typeof O,R;if(L==="string"){let q=O.length;if(S&&q>=4&&q<4096){if((S.size+=q)>v$){let C,b=(S[0]?S[0].length*3+S[1].length:0)+10;if(F+b>u)D=__(F+b);let x;if(S.position)x=S,D[F]=200,F+=3,D[F++]=98,C=F-X,F+=4,F$(X,k,0),y.setUint16(C+X-3,F-X-C);else D[F++]=214,D[F++]=98,C=F-X,F+=4;S=["",""],S.previous=x,S.size=0,S.position=C}let U=h$.test(O);S[U?0:1]+=O,D[F++]=193,k(U?-q:q);return}let J;if(q<32)J=1;else if(q<256)J=2;else if(q<65536)J=3;else J=5;let A=q*3;if(F+A>u)D=__(F+A);if(q<64||!Y){let U,C,b,x=F+J;for(U=0;U<q;U++)if(C=O.charCodeAt(U),C<128)D[x++]=C;else if(C<2048)D[x++]=C>>6|192,D[x++]=C&63|128;else if((C&64512)===55296&&((b=O.charCodeAt(U+1))&64512)===56320)C=65536+((C&1023)<<10)+(b&1023),U++,D[x++]=C>>18|240,D[x++]=C>>12&63|128,D[x++]=C>>6&63|128,D[x++]=C&63|128;else D[x++]=C>>12|224,D[x++]=C>>6&63|128,D[x++]=C&63|128;R=x-F-J}else R=Y(O,F+J);if(R<32)D[F++]=160|R;else if(R<256){if(J<2)D.copyWithin(F+2,F+1,F+1+R);D[F++]=217,D[F++]=R}else if(R<65536){if(J<3)D.copyWithin(F+3,F+2,F+2+R);D[F++]=218,D[F++]=R>>8,D[F++]=R&255}else{if(J<5)D.copyWithin(F+5,F+3,F+3+R);D[F++]=219,y.setUint32(F,R),F+=4}F+=R}else if(L==="number")if(O>>>0===O)if(O<32||O<128&&this.useRecords===!1||O<64&&!this.randomAccessStructure)D[F++]=O;else if(O<256)D[F++]=204,D[F++]=O;else if(O<65536)D[F++]=205,D[F++]=O>>8,D[F++]=O&255;else D[F++]=206,y.setUint32(F,O),F+=4;else if(O>>0===O)if(O>=-32)D[F++]=256+O;else if(O>=-128)D[F++]=208,D[F++]=O+256;else if(O>=-32768)D[F++]=209,y.setInt16(F,O),F+=2;else D[F++]=210,y.setInt32(F,O),F+=4;else{let q;if((q=this.useFloat32)>0&&O<4294967296&&O>=-2147483648){D[F++]=202,y.setFloat32(F,O);let J;if(q<4||(J=O*x_[(D[F]&127)<<1|D[F+1]>>7])>>0===J){F+=4;return}else F--}D[F++]=203,y.setFloat64(F,O),F+=8}else if(L==="object"||L==="function")if(!O)D[F++]=192;else{if(K){let J=K.get(O);if(J){if(!J.id){let A=K.idsToInsert||(K.idsToInsert=[]);J.id=A.push(J)}D[F++]=214,D[F++]=112,y.setUint32(F,J.id),F+=4;return}else K.set(O,{offset:F-X})}let q=O.constructor;if(q===Object)C_(O);else if(q===Array)d_(O);else if(q===Map)if(this.mapAsEmptyObject)D[F++]=128;else{if(R=O.size,R<16)D[F++]=128|R;else if(R<65536)D[F++]=222,D[F++]=R>>8,D[F++]=R&255;else D[F++]=223,y.setUint32(F,R),F+=4;for(let[J,A]of O)k(J),k(A)}else{for(let J=0,A=k_.length;J<A;J++){let U=S_[J];if(O instanceof U){let C=k_[J];if(C.write){if(C.type)D[F++]=212,D[F++]=C.type,D[F++]=0;let q_=C.write.call(this,O);if(q_===O)if(Array.isArray(O))d_(O);else C_(O);else k(q_);return}let b=D,x=y,i=F;D=null;let H_;try{H_=C.pack.call(this,O,(q_)=>{if(D=b,b=null,F+=q_,F>u)__(F);return{target:D,targetView:y,position:F-q_}},k)}finally{if(b)D=b,y=x,F=i,u=D.length-10}if(H_){if(H_.length+F>u)__(H_.length+F);F=Z$(H_,D,F,C.type)}return}}if(Array.isArray(O))d_(O);else{if(O.toJSON){let J=O.toJSON();if(J!==O)return k(J)}if(L==="function")return k(this.writeFunction&&this.writeFunction(O));C_(O)}}}else if(L==="boolean")D[F++]=O?195:194;else if(L==="bigint"){if(O<9223372036854776000&&O>=-9223372036854776000)D[F++]=211,y.setBigInt64(F,O);else if(O<18446744073709552000&&O>0)D[F++]=207,y.setBigUint64(F,O);else if(this.largeBigIntToFloat)D[F++]=203,y.setFloat64(F,Number(O));else if(this.largeBigIntToString)return k(O.toString());else if(this.useBigIntExtension||this.moreTypes){let q=O<0?BigInt(-1):BigInt(0),J;if(O>>BigInt(65536)===q){let A=BigInt(18446744073709552000)-BigInt(1),U=[];while(!0){if(U.push(O&A),O>>BigInt(63)===q)break;O>>=BigInt(64)}J=new Uint8Array(new BigUint64Array(U).buffer),J.reverse()}else{let A=O<0,U=(A?~O:O).toString(16);if(U.length%2)U="0"+U;else if(parseInt(U.charAt(0),16)>=8)U="00"+U;if(D_)J=Buffer.from(U,"hex");else{J=new Uint8Array(U.length/2);for(let C=0;C<J.length;C++)J[C]=parseInt(U.slice(C*2,C*2+2),16)}if(A)for(let C=0;C<J.length;C++)J[C]=~J[C]}if(J.length+F>u)__(J.length+F);F=Z$(J,D,F,66);return}else throw RangeError(O+" was too large to fit in MessagePack 64-bit integer format, use useBigIntExtension, or set largeBigIntToFloat to convert to float-64, or set largeBigIntToString to convert to string");F+=8}else if(L==="undefined")if(this.encodeUndefinedAsNil)D[F++]=192;else D[F++]=212,D[F++]=0,D[F++]=0;else throw Error("Unknown type: "+L)},w8=this.variableMapSize||this.coercibleKeyAsNumber||this.skipValues?(O)=>{let L;if(this.skipValues){L=[];for(let J in O)if((typeof O.hasOwnProperty!=="function"||O.hasOwnProperty(J))&&!this.skipValues.includes(O[J]))L.push(J)}else L=Object.keys(O);let R=L.length;if(R<16)D[F++]=128|R;else if(R<65536)D[F++]=222,D[F++]=R>>8,D[F++]=R&255;else D[F++]=223,y.setUint32(F,R),F+=4;let q;if(this.coercibleKeyAsNumber)for(let J=0;J<R;J++){q=L[J];let A=Number(q);k(isNaN(A)?q:A),k(O[q])}else for(let J=0;J<R;J++)k(q=L[J]),k(O[q])}:(O)=>{D[F++]=222;let L=F-X;F+=2;let R=0;for(let q in O)if(typeof O.hasOwnProperty!=="function"||O.hasOwnProperty(q))k(q),k(O[q]),R++;if(R>65535)throw Error('Object is too large to serialize with fast 16-bit map size, use the "variableMapSize" option to serialize this object');D[L+++X]=R>>8,D[L+X]=R&255},b8=this.useRecords===!1?w8:_.progressiveRecords&&!w?(O)=>{let L,R=Q.transitions||(Q.transitions=Object.create(null)),q=F++-X,J;for(let A in O)if(typeof O.hasOwnProperty!=="function"||O.hasOwnProperty(A)){if(L=R[A],L)R=L;else{let U=Object.keys(O),C=R;R=Q.transitions;let b=0;for(let x=0,i=U.length;x<i;x++){let H_=U[x];if(L=R[H_],!L)L=R[H_]=Object.create(null),b++;R=L}if(q+X+1==F)F--,c_(R,U,b);else j8(R,U,q,b);J=!0,R=C[A]}k(O[A])}if(!J){let A=R[Y_];if(A)D[q+X]=A;else j8(R,Object.keys(O),q,0)}}:(O)=>{let L,R=Q.transitions||(Q.transitions=Object.create(null)),q=0;for(let A in O)if(typeof O.hasOwnProperty!=="function"||O.hasOwnProperty(A)){if(L=R[A],!L)L=R[A]=Object.create(null),q++;R=L}let J=R[Y_];if(J)if(J>=96&&w)D[F++]=((J-=96)&31)+96,D[F++]=J>>5;else D[F++]=J;else c_(R,R.__keys__||Object.keys(O),q);for(let A in O)if(typeof O.hasOwnProperty!=="function"||O.hasOwnProperty(A))k(O[A])},x8=typeof this.useRecords=="function"&&this.useRecords,C_=x8?(O)=>{x8(O)?b8(O):w8(O)}:b8,__=(O)=>{let L;if(O>16777216){if(O-X>K$)throw Error("Packed buffer would be larger than maximum buffer size");L=Math.min(K$,Math.round(Math.max((O-X)*(O>67108864?1.25:2),4194304)/4096)*4096)}else L=(Math.max(O-X<<2,D.length-1)>>12)+1<<12;let R=new y_(L);if(y=R.dataView||(R.dataView=new DataView(R.buffer,0,L)),O=Math.min(O,D.length),D.copy)D.copy(R,0,X,O);else R.set(D.slice(X,O));return F-=X,X=0,u=R.length-10,D=R},c_=(O,L,R)=>{let q=Q.nextId;if(!q)q=64;if(q<I&&this.shouldShareStructure&&!this.shouldShareStructure(L)){if(q=Q.nextOwnId,!(q<v))q=I;Q.nextOwnId=q+1}else{if(q>=v)q=I;Q.nextId=q+1}let J=L.highByte=q>=96&&w?q-96>>5:-1;if(O[Y_]=q,O.__keys__=L,Q[q-64]=L,q<I)if(L.isShared=!0,Q.sharedLength=q-63,H=!0,J>=0)D[F++]=(q&31)+96,D[F++]=J;else D[F++]=q;else{if(J>=0)D[F++]=213,D[F++]=114,D[F++]=(q&31)+96,D[F++]=J;else D[F++]=212,D[F++]=114,D[F++]=q;if(R)m+=e*R;if(p.length>=B)p.shift()[Y_]=0;p.push(O),k(L)}},j8=(O,L,R,q)=>{let J=D,A=F,U=u,C=X;if(D=R_,F=0,X=0,!D)R_=D=new y_(8192);u=D.length-10,c_(O,L,q),R_=D;let b=F;if(D=J,F=A,u=U,X=C,b>1){let x=F+b-1;if(x>u)__(x);let i=R+X;D.copyWithin(i+b,i+1,F),D.set(R_.slice(0,b),i),F=x}else D[R+X]=R_[0]},y8=(O)=>{let L=S$(O,D,X,F,Q,__,(R,q,J)=>{if(J)return H=!0;F=q;let A=D;if(k(R),M_(),A!==D)return{position:F,targetView:y,target:D};return F},this);if(L===0)return C_(O);F=L}}useBuffer(_){D=_,D.dataView||(D.dataView=new DataView(D.buffer,D.byteOffset,D.byteLength)),y=D.dataView,F=0}set position(_){F=_}get position(){return F}clearSharedData(){if(this.structures)this.structures=[];if(this.typedStructs)this.typedStructs=[]}}S_=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,DataView,b_];k_=[{pack(_,$,X){let H=_.getTime()/1000;if((this.useTimestamp32||_.getMilliseconds()===0)&&H>=0&&H<4294967296){let{target:Q,targetView:K,position:Y}=$(6);Q[Y++]=214,Q[Y++]=255,K.setUint32(Y,H)}else if(H>0&&H<4294967296){let{target:Q,targetView:K,position:Y}=$(10);Q[Y++]=215,Q[Y++]=255,K.setUint32(Y,_.getMilliseconds()*4000000+(H/1000/4294967296>>0)),K.setUint32(Y+4,H)}else if(isNaN(H)){if(this.onInvalidDate)return $(0),X(this.onInvalidDate());let{target:Q,targetView:K,position:Y}=$(3);Q[Y++]=212,Q[Y++]=255,Q[Y++]=255}else{let{target:Q,targetView:K,position:Y}=$(15);Q[Y++]=199,Q[Y++]=12,Q[Y++]=255,K.setUint32(Y,_.getMilliseconds()*1e6),K.setBigInt64(Y+4,BigInt(Math.floor(H)))}}},{pack(_,$,X){if(this.setAsEmptyObject)return $(0),X({});let H=Array.from(_),{target:Q,position:K}=$(this.moreTypes?3:0);if(this.moreTypes)Q[K++]=212,Q[K++]=115,Q[K++]=0;X(H)}},{pack(_,$,X){let{target:H,position:Q}=$(this.moreTypes?3:0);if(this.moreTypes)H[Q++]=212,H[Q++]=101,H[Q++]=0;X([_.name,_.message,_.cause])}},{pack(_,$,X){let{target:H,position:Q}=$(this.moreTypes?3:0);if(this.moreTypes)H[Q++]=212,H[Q++]=120,H[Q++]=0;X([_.source,_.flags])}},{pack(_,$){if(this.moreTypes)H8(_,16,$);else Q8(D_?Buffer.from(_):new Uint8Array(_),$)}},{pack(_,$){let X=_.constructor;if(X!==D$&&this.moreTypes)H8(_,X8.indexOf(X.name),$);else Q8(_,$)}},{pack(_,$){if(this.moreTypes)H8(_,17,$);else Q8(D_?Buffer.from(_):new Uint8Array(_),$)}},{pack(_,$){let{target:X,position:H}=$(1);X[H]=193}}];function H8(_,$,X,H){let Q=_.byteLength;if(Q+1<256){var{target:K,position:Y}=X(4+Q);K[Y++]=199,K[Y++]=Q+1}else if(Q+1<65536){var{target:K,position:Y}=X(5+Q);K[Y++]=200,K[Y++]=Q+1>>8,K[Y++]=Q+1&255}else{var{target:K,position:Y,targetView:N}=X(7+Q);K[Y++]=201,N.setUint32(Y,Q+1),Y+=4}if(K[Y++]=116,K[Y++]=$,!_.buffer)_=new Uint8Array(_);K.set(new Uint8Array(_.buffer,_.byteOffset,_.byteLength),Y)}function Q8(_,$){let X=_.byteLength;var H,Q;if(X<256){var{target:H,position:Q}=$(X+2);H[Q++]=196,H[Q++]=X}else if(X<65536){var{target:H,position:Q}=$(X+3);H[Q++]=197,H[Q++]=X>>8,H[Q++]=X&255}else{var{target:H,position:Q,targetView:K}=$(X+5);H[Q++]=198,K.setUint32(Q,X),Q+=4}H.set(_,Q)}function Z$(_,$,X,H){let Q=_.length;switch(Q){case 1:$[X++]=212;break;case 2:$[X++]=213;break;case 4:$[X++]=214;break;case 8:$[X++]=215;break;case 16:$[X++]=216;break;default:if(Q<256)$[X++]=199,$[X++]=Q;else if(Q<65536)$[X++]=200,$[X++]=Q>>8,$[X++]=Q&255;else $[X++]=201,$[X++]=Q>>24,$[X++]=Q>>16&255,$[X++]=Q>>8&255,$[X++]=Q&255}return $[X++]=H,$.set(_,X),X+=Q,X}function m$(_,$){let X,H=$.length*6,Q=_.length-H;while(X=$.pop()){let{offset:K,id:Y}=X;_.copyWithin(K+H,K,Q),H-=6;let N=K+H;_[N++]=214,_[N++]=105,_[N++]=Y>>24,_[N++]=Y>>16&255,_[N++]=Y>>8&255,_[N++]=Y&255,Q=K}return _}function F$(_,$,X){if(S.length>0){y.setUint32(S.position+_,F+X-S.position-_),S.stringsPosition=F-_;let H=S;S=null,$(H[0]),$(H[1])}}function K8(_){if(_.Class){if(!_.pack&&!_.write)throw Error("Extension has no pack or write function");if(_.pack&&!_.type)throw Error("Extension has no type (numeric code to identify the extension)");S_.unshift(_.Class),k_.unshift(_)}Q$(_)}function f$(_,$){return _.isCompatible=(X)=>{let H=!X||($.lastNamedStructuresLength||0)===X.length;if(!H)$._mergeStructures(X);return H},_}var O$=new O_({useRecords:!1}),g$=O$.pack,p$=O$.pack;var N$=512,q$=1024,J$=2048;var G$=80;class o{capId;constructor(_){this.capId=_}}var l$=new Set(["hello","goaway","call","result","cancel","stream","drop","cap_revoked"]);function Z8(_){if(typeof _!=="object"||_===null)return!1;let $=_,X=$.op;if(typeof X!=="string"||!l$.has(X))return!1;switch(X){case"hello":return $.v===1&&($.mode==="native"||$.mode==="web")&&Array.isArray($.features)&&typeof $.maxBytes==="number"&&typeof $.origin==="string";case"goaway":return $.reason===void 0||typeof $.reason==="string";case"call":return typeof $.id==="number"&&typeof $.method==="string"&&typeof $.target==="object"&&$.target!==null&&$.target.kind==="cap"&&typeof $.target.id==="number";case"result":return typeof $.id==="number"&&($.ok===!0||$.ok===!1);case"cancel":return typeof $.id==="number";case"stream":return typeof $.id==="number"&&typeof $.ev==="string"&&($.ev==="next"||$.ev==="credit"||$.ev==="end"||$.ev==="error");case"drop":return Array.isArray($.caps);case"cap_revoked":if(!Array.isArray($.capIds))return!1;for(let H of $.capIds)if(typeof H!=="number"||!Number.isInteger(H)||H<0||H>4294967295)return!1;return!0}}var R$=!1;function u$(){if(R$)return;R$=!0,K8({Class:o,type:G$,pack:(_)=>d$(_.capId),unpack:(_)=>new o(n$(_))})}function F8(){return u$(),{packr:new O_({useRecords:!0,sequential:!0,moreTypes:!0}),unpackr:new t({useRecords:!0,sequential:!0,moreTypes:!0})}}function d$(_){let $=new Uint8Array(5),X=_>>>0,H=0;while(X>=128)$[H++]=X&127|128,X>>>=7;return $[H++]=X&127,$.subarray(0,H)}var c$=5;function n$(_){let $=0,X=0,H=Math.min(_.length,c$);for(let Q=0;Q<H;Q++){let K=_[Q];if($|=(K&127)<<X,(K&128)===0)return $>>>0;X+=7}throw Error("Truncated or oversize varuint")}var Y8=67108864,D8=1,v_="bunite.",h_="bootstrap";class P extends Error{code;details;retry;constructor(_){super(_.message??_.code);this.name="IpcError",this.code=_.code,this.details=_.details,this.retry=_.retry}toStatus(){return{code:this.code,message:this.message,details:this.details,retry:this.retry}}}var m_=a("bunite.BrowserWindow",{focus:T(),close:T(),setBounds:T(),setTitle:T(),id:T({idempotent:!0}),label:T({idempotent:!0})}),O8=a("bunite.Window",{create:T({returns:s(m_)}),list:T({returns:s.array(m_),idempotent:!0}),focus:T(),close:T()}),f_=a("bunite.FileRef",{text:T({idempotent:!0}),bytes:T({idempotent:!0}),path:T({idempotent:!0}),revoke:T()},{disposal:{method:"revoke"}}),N8=a("bunite.Dialogs",{openFile:T({returns:s.array(f_)}),saveFile:T({returns:s(f_)}),showMessage:T()}),q8=a("bunite.Clipboard",{readText:T({idempotent:!0}),writeText:T(),readBytes:T({idempotent:!0}),writeBytes:T()}),J8=a("bunite.Shell",{openExternal:T(),showItemInFolder:T()}),R8=a("bunite.Surface",{init:T(),resize:T(),remove:T(),setHidden:T(),setMasks:T(),setAllPassthrough:T(),bringAllVisiblesToFront:T(),navigate:T(),goBack:T(),reload:T(),didNavigate:P_()}),G_=a("bunite.Runtime",{window:T({returns:s(O8),idempotent:!0}),dialogs:T({returns:s(N8),idempotent:!0}),clipboard:T({returns:s(q8),idempotent:!0}),shell:T({returns:s(J8),idempotent:!0}),appName:T({idempotent:!0}),appVersion:T({idempotent:!0}),theme:T({idempotent:!0}),themeWatch:P_(),surface:T({returns:s(R8),idempotent:!0})}),X_={Runtime:1,Window:2,Dialogs:3,FileRef:4,Clipboard:5,Shell:6,BrowserWindow:7,Surface:8},s$=new Map([[G_,X_.Runtime],[O8,X_.Window],[N8,X_.Dialogs],[f_,X_.FileRef],[q8,X_.Clipboard],[J8,X_.Shell],[m_,X_.BrowserWindow],[R8,X_.Surface]]);function G8(_){return s$.get(_)}var p_=0,M8=1,L$=0,M$=1,N_=2,C8=128,l_=1024,C$=1024,o$=l_*4,i$=500,a$=32,r$=8,t$=1024;function e$(_){let $=_?.initialBudget;if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<1)return a$;return Math.min($,t$)}var g_=null;class A8{entries=new Map;nextCapId=N_;capLimit;constructor(_=l_){this.capLimit=_}install(_,$){if(this.entries.has(_))throw Error(`cap-id ${_} already installed`);let X={capId:_,...$};return this.entries.set(_,X),X}allocate(_){if(this.entries.size>=this.capLimit)throw new P({code:"resource_exhausted",message:`cap-table limit ${this.capLimit}`,details:{reason:"max_caps_per_connection"}});let $=this.nextCapId++;while(this.entries.has($))$=this.nextCapId++;return this.install($,_)}get(_){return this.entries.get(_)}release(_,$=1){let X=this.entries.get(_);if(!X)return!1;if(X.refCount=Math.max(0,X.refCount-$),X.refCount===0&&_>=N_)return this.entries.delete(_),!0;return!1}delete(_){if(_<N_)return!1;return this.entries.delete(_)}clear(){this.entries.clear(),this.nextCapId=N_}size(){return this.entries.size}values(){return this.entries.values()}}var _X={origin:"",topOrigin:"",partition:"default",isAppRes:!1,isMainFrame:!1,userGesture:!1,level:"untrusted"},A$=Symbol("bunite.rpc.ExportedCap"),W$=Symbol("bunite.rpc.CapProxyMeta");function $X(_){return typeof _==="object"&&_!==null&&_[A$]===!0}var XX=typeof FinalizationRegistry<"u"?new FinalizationRegistry((_)=>{if(_.dropped())return;let $=_.connRef.deref();if(!$||$.closed)return;$._dropFromFinalizer(_.capId)}):{register:()=>{}};class U${transport;capTable;pending=new Map;clientStreams=new Map;serverStreams=new Map;serverCallChildren=new Map;serverActiveCalls=new Map;registry=new Map;rootInstances=new Map;revokedCapIds=new Set;closeHandlers=new Set;observers={};nextCallId=1;remoteHello=null;remoteReady;resolveRemoteReady;rejectRemoteReady;closed_=!1;maxBytes;maxInFlightCalls;mode;origin;features;attestation;peerId;policy;constructor(_){this.transport=_.transport,this.mode=_.mode,this.origin=_.origin,this.features=_.features??[],this.maxBytes=_.maxBytes??Y8,this.maxInFlightCalls=_.maxInFlightCalls??C$,this.attestation=_.attestation??_X,this.peerId=_.peerId??"peer",this.policy=_.policy,this.capTable=new A8(_.capLimit??l_),this.capTable.install(p_,{typeId:L$,cap:null,impl:null,refCount:1}),this.capTable.install(M8,{typeId:M$,cap:G_,impl:_.runtime??null,refCount:1}),this.remoteReady=new Promise(($,X)=>{this.resolveRemoteReady=$,this.rejectRemoteReady=X}),this.remoteReady.catch(()=>{}),this.transport.setReceive(($)=>this.handleFrame($)),this.transport.send({op:"hello",v:D8,mode:this.mode,features:this.features,maxBytes:this.maxBytes,origin:this.origin})}get closed(){return this.closed_}onClose(_){return this.closeHandlers.add(_),()=>this.closeHandlers.delete(_)}on(_,$){let X=this.observers[_];if(!X)X=new Set,this.observers[_]=X;return X.add($),()=>{X.delete($)}}emitObs(_,$){let X=this.observers[_];if(!X||X.size===0)return;for(let H of X)try{H($)}catch{}}markRevoked(_){this.revokedCapIds.add(_);while(this.revokedCapIds.size>o$){let $=this.revokedCapIds.values().next().value;if($===void 0)break;this.revokedCapIds.delete($)}}serve(_,$,X){this.assertNotFrameworkName(_.name);let H=X?.ifExists??"throw";if(this.registry.get(_.name))switch(H){case"throw":throw new P({code:"already_exists",message:`cap "${_.name}" already served`,details:{reason:"name_collision"}});case"skip":return this.makeHandle([]);case"replace":return this.replace(_,$),this.makeHandle([_.name])}return this.registry.set(_.name,{cap:_,impl:$,version:_.version}),this.makeHandle([_.name])}makeHandle(_){let $={names:_,[Symbol.dispose]:()=>this.unserve($)};return $}serveAll(_,$,X){let H=X?.ifExists??"throw";for(let K of Object.keys(_.roots)){let Y=_.roots[K];this.assertNotFrameworkName(Y.name);let N=this.registry.get(Y.name);if(N){if(H==="throw")throw new P({code:"already_exists",message:`cap "${Y.name}" already served`,details:{reason:"name_collision"}});if(H==="replace"&&N.version!==Y.version)throw new P({code:"failed_precondition",message:`version mismatch on replace for "${Y.name}" (current "${N.version}", new "${Y.version}")`,details:{reason:"version_mismatch"}})}}let Q=[];for(let K of Object.keys(_.roots)){let Y=_.roots[K],N=$[K];if(this.serve(Y,N,{ifExists:H}).names.length>0)Q.push(Y.name)}return this.makeHandle(Q)}unserve(_){let $=V_(_)?[_.name]:Array.from(_.names),X=[];for(let H of $){if(!this.registry.delete(H))continue;let Q=this.rootInstances.get(H);if(Q!==void 0){let K=this.capTable.get(Q);if(K)this.invokeServerDisposal(K);this.rootInstances.delete(H),this.capTable.delete(Q),X.push(Q)}}if(X.length>0)this.transport.send({op:"cap_revoked",capIds:X}),this.emitObs("revoke",{capIds:X,reason:"unserve"})}replace(_,$){let X=this.registry.get(_.name);if(!X)throw new P({code:"not_found",message:`cap "${_.name}" not served`});if(X.version!==_.version)throw new P({code:"failed_precondition",message:`version mismatch (current "${X.version}", new "${_.version}")`,details:{reason:"version_mismatch"}});X.impl=$,X.cap=_;let H=this.rootInstances.get(_.name);if(H!==void 0){let Q=this.capTable.get(H);if(Q)Q.impl=$,Q.cap=_}this.emitObs("revoke",{capIds:H!==void 0?[H]:[],reason:"replace"})}assertNotFrameworkName(_){if(_.startsWith(v_))throw new P({code:"already_exists",message:`cap name "${_}" uses reserved prefix "${v_}"`,details:{reason:"reserved_namespace"}})}runtimeProxy=null;runtime(){if(!this.runtimeProxy)this.runtimeProxy=this.makeCapProxy(G_,M8);return this.runtimeProxy}async bootstrap(_){if(V_(_))return this._bootstrapCap(_);if(s_(_))return this._bootstrapSchema(_);throw new P({code:"invalid_argument",message:"bootstrap target must be CapDef or Schema"})}async _bootstrapCap(_){await this.remoteReady;let $={name:_.name};if(_.version!=null)$.version=_.version;let X=await this.sendCallTyped(p_,h_,$,void 0);if(!(X instanceof o))throw new P({code:"invalid_argument",message:"bootstrap did not return a CapRef"});return this.makeCapProxy(_,X.capId)}async _bootstrapSchema(_){let $=Object.keys(_.roots),X=await Promise.allSettled($.map((K)=>this._bootstrapCap(_.roots[K]))),H=X.find((K)=>K.status==="rejected");if(H){for(let K of X)if(K.status==="fulfilled")try{this.releaseRef(K.value)}catch{}throw H.reason}let Q={};for(let K=0;K<$.length;K++)Q[$[K]]=X[K].value;return Q}handleFrame(_){if(this.closed_)return;switch(_.op){case"hello":this.handleHello(_);return;case"call":this.handleCall(_);return;case"result":this.handleResult(_);return;case"cancel":this.handleCancel(_);return;case"stream":this.handleStreamFrame(_);return;case"drop":this.handleDrop(_);return;case"cap_revoked":this.handleCapRevoked(_);return;case"goaway":this.handleGoaway(_);return;default:this.handleUnknownFrame(_);return}}handleUnknownFrame(_){let $=_?.id;if(typeof $==="number"){this.transport.send({op:"result",id:$,ok:!1,error:{code:"invalid_argument",message:"unknown opcode"}});return}this.transport.send({op:"goaway",reason:"invalid_argument",error:{code:"invalid_argument",message:"unknown opcode"}}),this.shutdown("invalid_argument")}handleHello(_){this.remoteHello=_,this.resolveRemoteReady(_)}handleGoaway(_){this.rejectRemoteReady(new P(_.error??{code:"unavailable",message:_.reason??"peer goaway"})),this.shutdown(_.reason??"remote goaway")}handleCapRevoked(_){for(let $ of _.capIds){this.markRevoked($);let X=new P({code:"failed_precondition",message:"cap revoked",details:{reason:"revoked"}});for(let[H,Q]of this.pending)if(Q.capId===$){if(this.pending.delete(H),Q.timer)clearTimeout(Q.timer);Q.reject(X)}for(let[H,Q]of this.clientStreams)if(Q.capId===$)this.clientStreams.delete(H),Q.fail(X)}}async handleCall(_){if(_.target.id===p_&&_.method===h_){await this.handleBootstrap(_);return}let $=this.capTable.get(_.target.id);if(!$)return this.emitObs("call",{capId:_.target.id,method:_.method,callId:_.id,result:"not_found"}),this.sendError(_.id,"not_found",`cap-id ${_.target.id} not found`);let X=$.cap;if(!X||!$.impl)return this.emitObs("call",{capId:_.target.id,method:_.method,callId:_.id,result:"not_found"}),this.sendError(_.id,"not_found","cap has no impl");let H=X.methods[_.method];if(!H)return this.emitObs("call",{capId:_.target.id,capName:X.name,method:_.method,callId:_.id,result:"not_found"}),this.sendError(_.id,"not_found",`method "${_.method}" on cap "${X.name}"`);let Q=$.impl[_.method];if(typeof Q!=="function")return this.emitObs("call",{capId:_.target.id,capName:X.name,method:_.method,callId:_.id,result:"not_found"}),this.sendError(_.id,"not_found",`method "${_.method}" has no handler`);if(this.serverActiveCalls.size+this.serverStreams.size>=this.maxInFlightCalls)return this.emitObs("call",{capId:_.target.id,capName:X.name,method:_.method,callId:_.id,result:"resource_exhausted"}),this.sendError(_.id,"resource_exhausted",`in-flight calls limit ${this.maxInFlightCalls}`,{reason:"max_concurrent_calls"});await this.invokeServerMethod(_,X,H,Q)}async handleBootstrap(_){let $=_.args??{},X=$.name;if(typeof X!=="string")return this.emitObs("bootstrap",{name:String(X),attestation:this.attestation,result:"invalid_argument"}),this.sendError(_.id,"invalid_argument","bootstrap requires {name: string}");let H=$.version!=null?String($.version):void 0,Q=this.registry.get(X);if(!Q)return this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"not_found"}),this.sendError(_.id,"not_found",`cap "${X}" not served`);let K=Q.version;if(K!=null&&H!=null&&K!==H)return this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"version_mismatch"}),this.sendError(_.id,"failed_precondition",`version mismatch (server "${K}", client "${H}")`,{reason:"version_mismatch"});if(this.policy){let N;try{N=await this.policy(X,this.attestation)}catch(W){return this.emitObs("error",{phase:"policy",error:W instanceof Error?W:Error(String(W))}),this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"internal"}),this.sendError(_.id,"internal","policy threw")}if(typeof N!=="boolean")return this.emitObs("error",{phase:"policy",error:Error(`policy must return boolean (got ${typeof N})`)}),this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"internal"}),this.sendError(_.id,"internal","policy returned non-boolean");if(!N)return this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"denied"}),this.sendError(_.id,"failed_precondition","policy denied",{reason:"unauthorized"})}let Y=this.rootInstances.get(X);if(Y!==void 0){let N=this.capTable.get(Y);if(N)N.refCount+=1;else this.rootInstances.delete(X),Y=void 0}if(Y===void 0)try{Y=this.capTable.allocate({typeId:G8(Q.cap)??C8,cap:Q.cap,impl:Q.impl,refCount:1}).capId,this.rootInstances.set(X,Y)}catch(N){if(N instanceof P){let W=N.code==="resource_exhausted"?"resource_exhausted":"internal";return this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:W}),this.sendError(_.id,N.code,N.message,N.details)}throw N}this.emitObs("bootstrap",{name:X,version:H,attestation:this.attestation,result:"ok",capId:Y}),this.transport.send({op:"result",id:_.id,ok:!0,value:new o(Y)})}async invokeServerMethod(_,$,X,H){let Q=this.makeCallCtx(_);if(z_(X)){let K=e$(X.hint);try{let Y=()=>H(_.args,Q),N=g_,M=(N?()=>N.run({callId:_.id},Y):Y)();this.runServerStream(_.id,M,Q,K,$,_.method,_.target.id)}catch(Y){this.emitObs("stream",{capId:_.target.id,capName:$.name,method:_.method,callId:_.id,event:"error"}),this.transport.send({op:"stream",id:_.id,ev:"error",error:W8(Y)})}return}if(B_(X)){let K=performance.now(),Y=X.idempotent?void 0:this.armServerDeadline(_,Q);this.serverActiveCalls.set(_.id,{ctrl:Q._ctrl,capId:_.target.id,capName:$.name,method:_.method,startedAt:K});let N=HX(X.returns),W=()=>Promise.resolve(H(_.args,Q)),M=g_,z=M?()=>M.run({callId:_.id},W):W;try{let B=await z();if(Y)clearTimeout(Y);if(!this.serverActiveCalls.delete(_.id))return;let w=N(B);this.transport.send({op:"result",id:_.id,ok:!0,value:w}),this.emitObs("call",{capId:_.target.id,capName:$.name,method:_.method,callId:_.id,durationMs:performance.now()-K,result:"ok"})}catch(B){if(Y)clearTimeout(Y);if(!this.serverActiveCalls.delete(_.id))return;let w=W8(B);this.sendErrorFromStatus(_.id,w),this.emitObs("call",{capId:_.target.id,capName:$.name,method:_.method,callId:_.id,durationMs:performance.now()-K,result:w.code})}return}this.sendError(_.id,"not_found","unknown method kind")}armServerDeadline(_,$){let X=_.meta?.deadlineMs;if(!X)return;return setTimeout(()=>{$._ctrl.abort()},X)}makeCallCtx(_){let $=new AbortController;return{callId:_.id,peerId:this.peerId,attestation:this.attestation,signal:$.signal,deadline:_.meta?.deadlineMs,_ctrl:$,exportCap:(H,Q)=>this.exportCap(H,Q)}}exportCap(_,$){let X=G8(_)??C8,H=this.capTable.allocate({typeId:X,cap:_,impl:$,refCount:1});return{[A$]:!0,cap:_,capId:H.capId,typeId:H.typeId}}runServerStream(_,$,X,H,Q,K,Y){let N=$[Symbol.asyncIterator](),W=X._ctrl,M={iter:N,abort:W,cancelled:!1,credit:H,creditWaker:null,capId:Y,capName:Q.name,method:K,callId:_,count:0};this.serverStreams.set(_,M),this.emitObs("stream",{capId:Y,capName:Q.name,method:K,callId:_,event:"start"});let z=()=>{if(M.credit>0||M.cancelled)return Promise.resolve();return new Promise((w)=>{M.creditWaker=w})};(async()=>{let w=!1;try{while(!M.cancelled){if(M.credit===0)await z();if(M.cancelled)break;let{done:I,value:v}=await N.next();if(I)break;if(M.cancelled)break;M.credit-=1,M.count+=1,this.transport.send({op:"stream",id:_,ev:"next",value:v})}}catch(I){w=!0,this.transport.send({op:"stream",id:_,ev:"error",error:W8(I)}),this.emitObs("stream",{capId:Y,capName:Q.name,method:K,callId:_,event:"error",count:M.count})}finally{if(!w)this.transport.send({op:"stream",id:_,ev:"end"}),this.emitObs("stream",{capId:Y,capName:Q.name,method:K,callId:_,event:M.cancelled?"cancel":"end",count:M.count});this.serverStreams.delete(_)}})()}handleResult(_){let $=this.pending.get(_.id);if($){if(this.pending.delete(_.id),this.serverCallChildren.delete(_.id),$.timer)clearTimeout($.timer);if(_.ok){let H=$.decodeReturn?$.decodeReturn(_.value):_.value;$.resolve(H)}else $.reject(new P(_.error));return}let X=this.clientStreams.get(_.id);if(X){this.clientStreams.delete(_.id);let H=_.ok?new P({code:"invalid_argument",message:"stream method returned result frame"}):new P(_.error);X.fail(H)}}handleCancel(_){let $=this.serverStreams.get(_.id);if($)$.cancelled=!0,$.abort.abort(),$.iter?.return?.(),this.serverStreams.delete(_.id);let X=this.serverActiveCalls.get(_.id);if(X)this.serverActiveCalls.delete(_.id),X.ctrl.abort(),this.transport.send({op:"result",id:_.id,ok:!1,error:{code:"cancelled",message:_.reason}}),this.emitObs("call",{capId:X.capId,capName:X.capName,method:X.method,callId:_.id,durationMs:performance.now()-X.startedAt,result:"cancelled"});for(let[H,Q]of this.serverCallChildren){if(Q.parentId!==_.id)continue;if(this.serverCallChildren.delete(H),this.pending.has(H))this.transport.send({op:"cancel",id:H,reason:_.reason})}}releaseRef(_){if(typeof _!=="object"||_===null)return;let $=_[W$];if(!$||$.dropped)return;$.dropped=!0,this.sendDrop($.capId)}sendDrop(_){if(this.closed_)return;if(_<N_)return;this.transport.send({op:"drop",caps:[{id:_,delta:1}]})}handleStreamFrame(_){if(_.ev==="credit"){let X=this.serverStreams.get(_.id);if(!X)return;X.credit+=_.credit?.messages??0;let H=X.creditWaker;X.creditWaker=null,H?.();return}let $=this.clientStreams.get(_.id);if(!$)return;switch(_.ev){case"next":$.push(_.value);return;case"end":$.end(),this.clientStreams.delete(_.id);return;case"error":$.fail(new P(_.error)),this.clientStreams.delete(_.id);return}}handleDrop(_){for(let{id:$,delta:X}of _.caps)if(this.capTable.release($,X)){for(let[Q,K]of this.rootInstances)if(K===$){this.rootInstances.delete(Q);break}}}sendError(_,$,X,H){let Q={code:$,message:X};if(H!==void 0)Q.details=H;this.transport.send({op:"result",id:_,ok:!1,error:Q})}sendErrorFromStatus(_,$){this.transport.send({op:"result",id:_,ok:!1,error:$})}nextId(){return this.nextCallId++}sendCallTyped(_,$,X,H,Q,K){if(this.closed_)return Promise.reject(new P({code:"unavailable",message:"connection closed"}));if(this.revokedCapIds.has(_))return Promise.reject(new P({code:"failed_precondition",message:"cap revoked",details:{reason:"revoked"}}));if(this.pending.size>=this.maxInFlightCalls)return Promise.reject(new P({code:"resource_exhausted",message:`in-flight calls limit ${this.maxInFlightCalls}`,details:{reason:"max_concurrent_calls"}}));let Y=this.nextId();return new Promise((N,W)=>{let M=new AbortController,z={resolve:N,reject:W,abort:M,decodeReturn:H,startedAt:performance.now(),capId:_,method:$,capName:K,kind:"call"};if(Q?.deadlineMs)z.timer=setTimeout(()=>{if(this.pending.delete(Y))this.transport.send({op:"cancel",id:Y,reason:"deadline_exceeded"}),W(new P({code:"deadline_exceeded"}))},Q.deadlineMs+i$);this.pending.set(Y,z);let B=Q;if(B?.parentCallId===void 0&&g_){let w=g_.getStore();if(w)B={...B??{},parentCallId:w.callId}}if(B?.parentCallId!==void 0)this.serverCallChildren.set(Y,{parentId:B.parentCallId});this.transport.send({op:"call",id:Y,target:{kind:"cap",id:_},method:$,args:X,meta:B})})}openClientStream(_,$,X,H,Q){if(this.closed_){let M=L8(_,0,()=>{},()=>{});return M.fail(new P({code:"unavailable",message:"connection closed"})),M.stream}if(this.revokedCapIds.has(_)){let M=L8(_,0,()=>{},()=>{});return M.fail(new P({code:"failed_precondition",message:"cap revoked",details:{reason:"revoked"}})),M.stream}let K=this.nextId(),W=L8(_,K,()=>{if(this.clientStreams.delete(K))this.transport.send({op:"cancel",id:K,reason:"client_cancel"})},(M)=>{if(this.closed_||!this.clientStreams.has(K))return;this.transport.send({op:"stream",id:K,ev:"credit",credit:{messages:M}})});return this.clientStreams.set(K,W),this.transport.send({op:"call",id:K,target:{kind:"cap",id:_},method:$,args:X,meta:H}),W.stream}makeCapProxy(_,$){let X={},H={capId:$,dropped:!1};X[W$]=H;let Q=()=>{if(H.dropped)return;H.dropped=!0,this.sendDrop($)};for(let Y of Object.keys(_.methods)){let N=_.methods[Y];if(z_(N))X[Y]=(W)=>this.openClientStream($,Y,W,void 0,_.name);else if(B_(N)){let W=QX(N.returns,(M,z)=>this.makeCapProxy(M,z));X[Y]=(M)=>this.sendCallTyped($,Y,M,W,void 0,_.name)}}let K=_.disposal;if(K){let Y=this;X[Symbol.dispose]=()=>{try{let N=X[K.method]?.();if(N&&typeof N.then==="function")N.catch((W)=>Y.emitObs("error",{phase:"dispose",error:W instanceof Error?W:Error(String(W))}))}catch(N){Y.emitObs("error",{phase:"dispose",error:N instanceof Error?N:Error(String(N))})}Q()}}if(typeof FinalizationRegistry<"u")XX.register(X,{connRef:new WeakRef(this),capId:$,dropped:()=>H.dropped});return X}_dropFromFinalizer(_){try{this.sendDrop(_)}catch{}}shutdown(_="shutdown"){if(this.closed_)return;this.closed_=!0;for(let $ of this.pending.values()){if($.timer)clearTimeout($.timer);$.reject(new P({code:"unavailable",message:_}))}this.pending.clear();for(let $ of this.clientStreams.values())$.fail(new P({code:"unavailable",message:_}));this.clientStreams.clear();for(let $ of this.serverStreams.values())$.cancelled=!0,$.abort.abort(),$.iter?.return?.();this.serverStreams.clear();for(let $ of this.serverActiveCalls.values())$.ctrl.abort();this.serverActiveCalls.clear();for(let $ of this.capTable.values())this.invokeServerDisposal($);if(this.capTable.clear(),!this.remoteHello)this.rejectRemoteReady(new P({code:"unavailable",message:_}));for(let $ of this.closeHandlers)try{$()}catch{}this.closeHandlers.clear();try{this.transport.close()}catch{}}invokeServerDisposal(_){let $=_.cap;if(!$)return;let X=$.disposal;if(!X)return;let H=_.impl,Q=H?.[X.method];if(!Q)return;try{Q.call(H,void 0,void 0)}catch{}}}function HX(_){if(!_)return(X)=>X;let $=(X,H)=>{if(!$X(X))throw new P({code:"failed_precondition",message:"expected ctx.exportCap return for cap method",details:{reason:"unregistered_cap_return"}});if(X.cap!==H)throw new P({code:"failed_precondition",message:"exported cap type mismatch with method returns",details:{reason:"unregistered_cap_return"}});return new o(X.capId)};if(A_(_))return(X)=>$(X,_.cap);if(U_(_))return(X)=>{if(!Array.isArray(X))throw new P({code:"invalid_argument",message:"expected ExportedCap[] for cap.array method"});return X.map((H)=>$(H,_.cap))};if(T_(_))return(X)=>{if(!X||typeof X!=="object")throw new P({code:"invalid_argument",message:"expected Record<string, ExportedCap> for cap.record method"});let H={};for(let Q of Object.keys(X))H[Q]=$(X[Q],_.cap);return H};return(X)=>X}function QX(_,$){if(!_)return;if(A_(_)){let X=_.cap;return(H)=>{if(!(H instanceof o))throw new P({code:"invalid_argument",message:"expected CapRef"});return $(X,H.capId)}}if(U_(_)){let X=_.cap,H=X.disposal;return(Q)=>{if(!Array.isArray(Q))throw new P({code:"invalid_argument",message:"expected array"});let K=Q.map((Y)=>{if(!(Y instanceof o))throw new P({code:"invalid_argument",message:"expected CapRef in array"});return $(X,Y.capId)});return KX(K,H),K}}if(T_(_)){let X=_.cap;return(H)=>{if(!H||typeof H!=="object")throw new P({code:"invalid_argument",message:"expected record"});let Q={};for(let K of Object.keys(H)){let Y=H[K];if(!(Y instanceof o))throw new P({code:"invalid_argument",message:"expected CapRef in record"});Q[K]=$(X,Y.capId)}return Q}}return}function KX(_,$){if(!$)return;_[Symbol.dispose]=()=>{for(let X of _)X[Symbol.dispose]?.call(X)}}function W8(_){if(_ instanceof P)return _.toStatus();if(_ instanceof Error)return{code:"internal",message:_.message};return{code:"internal",message:String(_)}}function L8(_,$,X,H){let Q=[],K=[],Y=!1,N=null,W=!1,M=0;function z(){if(M+=1,M>=r$)H(M),M=0}function B(){if(Q.length>0){let m=Q.shift();return z(),{value:m,done:!1}}if(N)return null;if(Y||W)return{value:void 0,done:!0};return null}function w(){let m=B();if(m)return Promise.resolve(m);if(N)return Promise.reject(N);return new Promise((e,M_)=>K.push({resolve:e,reject:M_}))}function I(){while(K.length>0){let m=K.shift(),e=B();if(e){m.resolve(e);continue}if(N){m.reject(N);continue}K.unshift(m);break}}function v(){if(W||Y||N)return;W=!0,X(),I()}let p={[Symbol.asyncIterator]:()=>({next:w,return:()=>{return v(),Promise.resolve({value:void 0,done:!0})},throw:(m)=>{return v(),Promise.reject(m)}}),[Symbol.dispose]:v,cancel:v};return{capId:_,stream:p,push(m){if(W||Y||N)return;Q.push(m),I()},end(){Y=!0,I()},fail(m){N=m,I()}}}function U8(_){return new U$(_)}function T8(_,$={}){let X=F8(),H;return _.setReceive((Q)=>{let K;try{K=X.unpackr.unpack(Q)}catch(Y){$.onProtocolError?.(`unpack failed: ${Y instanceof Error?Y.message:String(Y)}`),_.close();return}if(!Z8(K)){$.onProtocolError?.("malformed frame"),_.close();return}H?.(K)}),{send(Q){let K=X.packr.pack(Q);_.send(K instanceof Uint8Array?K:new Uint8Array(K))},setReceive(Q){H=Q},close(){_.close()}}}function B8(_){if("binaryType"in _)try{_.binaryType="arraybuffer"}catch{}let $,X=(H)=>{if(!$)return;let Q=H.data;if(Q instanceof Uint8Array){$(Q);return}if(Q instanceof ArrayBuffer){$(new Uint8Array(Q));return}if(typeof Blob<"u"&&Q instanceof Blob){Q.arrayBuffer().then((K)=>$?.(new Uint8Array(K)));return}};return _.addEventListener("message",X),{send(H){_.send(H)},setReceive(H){$=H},close(){_.removeEventListener?.("message",X),_.close?.()}}}function W_(_){let $=new ArrayBuffer(_.byteLength);return new Uint8Array($).set(_),$}async function ZX(_){return crypto.subtle.importKey("raw",W_(_),"AES-GCM",!1,["encrypt","decrypt"])}async function z8(_,$){let X=await ZX($),H,Q=Promise.resolve(),K=Promise.resolve(),Y=!1,N=()=>{if(!Y)Y=!0,_.close()};return _.setReceive((W)=>{if(Y)return;if(W.length<13||W[0]!==1){N();return}let M=W_(W.subarray(1,13)),z=W_(W.subarray(13));K=K.then(async()=>{if(Y)return;try{let B=await crypto.subtle.decrypt({name:"AES-GCM",iv:M},X,z);H?.(new Uint8Array(B))}catch{N()}})}),{send(W){if(Y)return;let M=W_(W);Q=Q.then(async()=>{if(Y)return;try{let z=crypto.getRandomValues(new Uint8Array(12)),B=W_(z),w=await crypto.subtle.encrypt({name:"AES-GCM",iv:B},X,M),I=new Uint8Array(w),v=new Uint8Array(13+I.byteLength);v[0]=1,v.set(z,1),v.set(I,13),_.send(v)}catch{N()}})},setReceive(W){H=W},close(){N()}}}class FX{buffer=[];waiters=[];ctrl=new AbortController;cleanup;ended=!1;failure=null;constructor(_){let $=(X)=>{if(this.ended||this.failure)return;let H=this.waiters.shift();if(H){H.resolve({value:X,done:!1});return}this.buffer.push(X)};try{let X=_($,this.ctrl.signal);if(typeof X==="function")this.cleanup=X}catch(X){this.failure=X}}[Symbol.asyncIterator](){return{next:async()=>{if(this.buffer.length>0)return{value:this.buffer.shift(),done:!1};if(this.failure)throw this.failure;if(this.ended)return{value:void 0,done:!0};return new Promise((_,$)=>this.waiters.push({resolve:_,reject:$}))},return:async()=>{return this.dispose(),{value:void 0,done:!0}}}}cancel(){this.dispose()}[Symbol.dispose](){this.dispose()}dispose(){if(this.ended)return;this.ended=!0,this.ctrl.abort();try{this.cleanup?.()}catch{}while(this.waiters.length>0)this.waiters.shift().resolve({value:void 0,done:!0})}}var P8=null;function V8(){if(!P8)P8=host.runtime().then((_)=>_.surface());return P8}function n(_){return V8().then(_).catch(($)=>{if(globalThis.__BUNITE_DEBUG__)console.warn("[bunite] surface call failed",$);return})}class T${element;onBoundsChange;observer=null;rafId=0;lastRect={x:0,y:0,width:0,height:0};dirty=!1;stopped=!1;constructor(_,$){this.element=_,this.onBoundsChange=$}start(){this.observer=new ResizeObserver(()=>this.markDirty()),this.observer.observe(this.element),this.scheduleFrame()}stop(){if(this.stopped=!0,this.observer?.disconnect(),this.observer=null,this.rafId)cancelAnimationFrame(this.rafId),this.rafId=0}markDirty(){this.dirty=!0}scheduleFrame(){if(this.stopped)return;this.rafId=requestAnimationFrame(()=>{this.flush(),this.scheduleFrame()})}flush(){let _=window.devicePixelRatio||1,$=this.element.getBoundingClientRect(),X={x:Math.round($.x*_),y:Math.round($.y*_),width:Math.round($.width*_),height:Math.round($.height*_)};if(!this.dirty&&X.x===this.lastRect.x&&X.y===this.lastRect.y&&X.width===this.lastRect.width&&X.height===this.lastRect.height)return;this.dirty=!1,this.lastRect=X,this.onBoundsChange(X)}}class B$ extends HTMLElement{static observedAttributes=["src"];_surfaceId=null;_syncCtrl=null;_initPromise=null;_aborted=!1;_pendingSrc=null;_syncHidden=!1;_userHidden=!1;_layoutObserver=null;_unsubNavigate=null;constructor(){super()}connectedCallback(){this._aborted=!1,this._syncHidden=!1,this._userHidden=!1;let _=new AbortController;this._unsubNavigate=()=>_.abort(),(async()=>{try{let X=(await V8()).didNavigate();for await(let H of X){if(_.signal.aborted)break;if(H.surfaceId===this._surfaceId)this.dispatchEvent(new CustomEvent("did-navigate",{detail:{url:H.url}}))}}catch($){if(globalThis.__BUNITE_DEBUG__)console.warn("[bunite] didNavigate stream failed",$)}})(),this._waitForLayout()}_waitForLayout(){if(this._layoutObserver)return;let _=()=>{if(!this.isConnected||this._aborted)return!0;let $=this.getBoundingClientRect();if($.width>0&&$.height>0){if(this.getAttribute("src")||this._pendingSrc||"")this.initSurface();return!0}return!1};requestAnimationFrame(()=>{if(_())return;this._layoutObserver=new ResizeObserver(()=>{if(_())this._layoutObserver?.disconnect(),this._layoutObserver=null}),this._layoutObserver.observe(this)})}disconnectedCallback(){if(this._aborted=!0,this._unsubNavigate?.(),this._unsubNavigate=null,this._layoutObserver?.disconnect(),this._layoutObserver=null,this._syncCtrl?.stop(),this._syncCtrl=null,this._surfaceId!=null){let _=this._surfaceId;this._surfaceId=null,n(($)=>$.remove({surfaceId:_}))}else if(this._initPromise)this._initPromise.then((_)=>{n(($)=>$.remove({surfaceId:_.surfaceId}))}).catch(()=>{});this._initPromise=null}attributeChangedCallback(_,$,X){if(_!=="src")return;if(this._surfaceId!=null){let H=this._surfaceId;n((Q)=>Q.navigate({surfaceId:H,url:X||""}))}else if(this._initPromise)this._pendingSrc=X||"";else if(this.isConnected&&!this._aborted&&X)this._waitForLayout()}setHidden(_){this._userHidden=_,this._applySurfaceHidden()}goBack(){let _=this._surfaceId;if(_!=null)n(($)=>$.goBack({surfaceId:_}))}reload(){let _=this._surfaceId;if(_!=null)n(($)=>$.reload({surfaceId:_}))}navigate(_){this.setAttribute("src",_)}_applySurfaceHidden(){let _=this._surfaceId;if(_==null)return;let $=this._userHidden||this._syncHidden;n((X)=>X.setHidden({surfaceId:_,hidden:$}))}initSurface(){if(this._surfaceId!=null||this._initPromise!=null)return;let _=window.devicePixelRatio||1,$=this.getBoundingClientRect(),X=this._pendingSrc||this.getAttribute("src")||"";this._pendingSrc=null;let H=V8().then((Q)=>Q.init({src:X,x:Math.round($.x*_),y:Math.round($.y*_),width:Math.round($.width*_),height:Math.round($.height*_),hidden:this._userHidden}));this._initPromise=H,H.then((Q)=>{if(this._initPromise!==H)return;if(this._aborted){n((K)=>K.remove({surfaceId:Q.surfaceId}));return}if(this._surfaceId=Q.surfaceId,this._userHidden)this._applySurfaceHidden();if(this._pendingSrc!=null){let K=this._pendingSrc;this._pendingSrc=null;let Y=this._surfaceId;if(Y!=null)n((N)=>N.navigate({surfaceId:Y,url:K}))}this._syncCtrl=new T$(this,(K)=>{let Y=this._surfaceId;if(Y==null)return;if(K.width===0&&K.height===0){if(!this._syncHidden)this._syncHidden=!0,this._applySurfaceHidden();return}if(this._syncHidden)this._syncHidden=!1,this._applySurfaceHidden();n((W)=>W.resize({surfaceId:Y,x:K.x,y:K.y,w:K.width,h:K.height}))}),this._syncCtrl.start()}).catch(()=>{}).finally(()=>{if(this._initPromise===H)this._initPromise=null})}}if(typeof customElements<"u"){customElements.define("bunite-webview",B$);let _=()=>{n(($)=>$.bringAllVisiblesToFront())};document.addEventListener("pointerdown",_,!0),document.addEventListener("dragstart",()=>{n(($)=>$.setAllPassthrough({passthrough:!0}))},!0),document.addEventListener("dragend",()=>{n(($)=>$.setAllPassthrough({passthrough:!1})),_()},!0)}var E8=null,L_=null;function u_(){if(E8)return Promise.resolve(E8);if(L_)return L_;let _=(async()=>{let $=new WebSocket(`ws://localhost:${__buniteRpcSocketPort}/rpc?webviewId=${__buniteWebviewId}`);$.binaryType="arraybuffer",await new Promise((K,Y)=>{$.addEventListener("open",()=>K(),{once:!0}),$.addEventListener("error",()=>Y(Error("bunite preload ws connect failed")),{once:!0})});let X=Uint8Array.from(atob(__buniteSecretKeyBase64),(K)=>K.charCodeAt(0)),H=await z8(B8($),X),Q=U8({transport:T8(H),mode:"native",origin:location.origin});return E8=Q,Q})();return L_=_,_.catch(()=>{if(L_===_)L_=null}),_}var Z_=window;Z_.__bunite??={};Z_.__buniteWebviewId=__buniteWebviewId;Z_.__buniteRpcSocketPort=__buniteRpcSocketPort;Z_.host??={};Z_.host.bootstrap=async(_)=>{return(await u_()).bootstrap(_)};Z_.host.runtime=async()=>(await u_()).runtime();Z_.host.releaseRef=async(_)=>{(await u_()).releaseRef(_)};Z_.host.getConnection=()=>u_();
|
package/src/rpc/peer.ts
CHANGED
|
@@ -191,6 +191,8 @@ export interface Connection {
|
|
|
191
191
|
releaseRef(proxy: unknown): void;
|
|
192
192
|
on<K extends keyof ConnectionEvents>(event: K, handler: (e: ConnectionEvents[K]) => void): () => void;
|
|
193
193
|
onClose(handler: () => void): () => void;
|
|
194
|
+
/** Tear down the connection — rejects pending, fires onClose, closes transport. Reliable signal for application lifecycle. */
|
|
195
|
+
shutdown(reason?: string): void;
|
|
194
196
|
readonly closed: boolean;
|
|
195
197
|
}
|
|
196
198
|
|
|
@@ -851,7 +853,6 @@ class ConnectionImpl implements Connection {
|
|
|
851
853
|
attestation: this.attestation,
|
|
852
854
|
signal: ctrl.signal,
|
|
853
855
|
deadline: frame.meta?.deadlineMs,
|
|
854
|
-
context: frame.meta?.context,
|
|
855
856
|
_ctrl: ctrl,
|
|
856
857
|
exportCap: (capDef, impl) => this.exportCap(capDef, impl),
|
|
857
858
|
};
|
|
@@ -1203,7 +1204,7 @@ class ConnectionImpl implements Connection {
|
|
|
1203
1204
|
try { this.sendDrop(capId); } catch { /* swallow */ }
|
|
1204
1205
|
}
|
|
1205
1206
|
|
|
1206
|
-
shutdown(reason: string): void {
|
|
1207
|
+
shutdown(reason: string = "shutdown"): void {
|
|
1207
1208
|
if (this.closed_) return;
|
|
1208
1209
|
this.closed_ = true;
|
|
1209
1210
|
for (const pending of this.pending.values()) {
|
package/src/rpc/schema.ts
CHANGED