spacewave 0.57.21 → 0.57.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.mjs CHANGED
@@ -1,9 +1,9 @@
1
- import{i as e,r as t,t as n}from"./chunks/rolldown-runtime-Csi-cuKc.mjs";import{$r as r,$t as i,A as a,An as o,At as s,Bn as c,Br as l,Bt as u,C as d,Ci as f,Cn as p,Cr as m,Ct as h,Di as g,Dr as _,Dt as v,E as y,Ei as ee,Er as b,Et as x,Fn as te,Fr as S,Ft as ne,Gn as re,Gr as ie,Gt as ae,H as oe,Hn as se,Hr as ce,Ht as le,Ii as C,In as ue,Ir as w,It as de,Jn as T,Jr as fe,Jt as pe,Kn as E,Kr as D,Kt as me,Li as he,Ln as ge,Lr as _e,Lt as ve,M as ye,Mn as be,Mr as xe,Mt as Se,N as Ce,Nn as we,Nr as Te,O as Ee,Oi as De,Or as Oe,Ot as ke,P as Ae,Pn as je,Pr as Me,Pt as Ne,Qr as Pe,Qt as Fe,R as Ie,Rn as Le,Rr as Re,Rt as ze,S as Be,Si as Ve,Sn as He,Sr as Ue,T as We,Ti as Ge,Tn as Ke,Tr as qe,Tt as Je,Ui as Ye,Ur as Xe,Ut as Ze,V as Qe,Vn as $e,Vr as et,Vt as tt,W as nt,Wi as rt,Wr as it,Wt as at,Xi as ot,Xn as st,Xr as ct,Xt as lt,Yn as ut,Yr as dt,Yt as ft,Zr as pt,Zt as mt,_ as ht,_a as gt,_i as _t,_r as vt,_t as yt,a as bt,aa as O,ai as xt,an as St,ar as k,at as A,b as Ct,bi as wt,bn as Tt,br as Et,bt as Dt,c as Ot,ci as kt,cn as At,cr as jt,ct as j,d as Mt,di as Nt,dn as Pt,dr as Ft,dt as It,ei as Lt,en as Rt,f as zt,fi as Bt,fn as Vt,ft as Ht,g as M,ga as N,gi as Ut,gn as Wt,gr as Gt,gt as Kt,h as P,hi as qt,hn as Jt,hr as Yt,ht as Xt,i as Zt,ii as Qt,in as $t,ir as en,it as F,j as tn,jn as nn,jt as rn,k as an,ki as on,kt as sn,l as cn,li as ln,ln as un,lr as dn,lt as fn,m as pn,mi as mn,mn as hn,mt as gn,n as _n,ni as vn,nr as yn,nt as bn,o as xn,oi as Sn,on as Cn,or as wn,ot as Tn,p as En,pi as Dn,pn as On,pr as kn,pt as An,qn as jn,qr as Mn,qt as Nn,ri as Pn,rn as Fn,rr as In,rt as Ln,s as Rn,si as zn,sn as Bn,sr as Vn,st as Hn,t as Un,ti as Wn,tr as Gn,u as Kn,ui as qn,un as Jn,ur as Yn,ut as Xn,v as I,va as L,vi as Zn,vn as Qn,vr as $n,vt as er,wi as tr,wn as nr,wr as rr,wt as ir,x as ar,xi as or,xn as sr,xr as cr,xt as lr,y as ur,ya as dr,yi as fr,yn as pr,yr as mr,yt as hr,z as gr,zn as _r,zr as vr,zt as yr}from"./chunks/node.pb-VgU29ra5.mjs";import{MessageChannel as br,Worker as xr}from"node:worker_threads";import{randomUUID as Sr}from"node:crypto";import{createServer as Cr}from"node:http";const wr=Symbol(`server context parent`),Tr=Symbol(`server context key`),Er=Symbol(`server context value`);function Dr(){return{}}function Or(e,t,n){return{signal:e.signal,[wr]:e,[Tr]:t,[Er]:n}}function kr(e,t){let n=e;for(;n;){if(n[Tr]===t)return n[Er];n=n[wr]}}async function Ar(e,t,n){let r=I({objectMode:!0}),i=t(r);r.push({body:{case:`init`,value:{componentId:e}}});let a=i[Symbol.asyncIterator]();if(n){let e=await a.next();if(e.done)throw Error(`rpcstream: closed before ack packet`);let t=e.value?.body;if(!t||t.case!==`ack`){let e=t?.case||`none`;throw Error(`rpcstream: expected ack packet but got ${e}`)}let n=t.value?.error;if(n)throw Error(`rpcstream: remote: ${n}`)}return new jr(r,a,()=>Kn(a))}var jr=class{source;sink;_packetRx;_packetTx;_termination=new cn;_cancelRpc;constructor(e,t,n=()=>Kn(t)){this._packetTx=e,this._packetRx=t,this._cancelRpc=n,this.sink=this._createSink(),this.source=this._createSource()}async close(){this._termination.terminate()&&(this._packetTx.end(),this._cancelRpc())}abort(e){this._termination.terminate(e)&&(this._packetTx.end(e),this._cancelRpc())}_createSink(){return async e=>{let t=Mt(e);try{for(;;){let e=await this._termination.next(t);if(`terminated`in e){if(e.error)throw e.error;return}if(`error`in e)throw e.error;if(e.result.done){this._packetTx.end();return}if(this._termination.terminated)return;this._packetTx.push({body:{case:`data`,value:e.result.value}})}}catch(e){let t=e instanceof Error?e:Error(String(e));throw this.abort(t),t}finally{Kn(t)}}}_createSource(){let e=this._packetRx,t=this._termination;return(async function*(){try{for(;;){let n=await t.next(e);if(`terminated`in n){if(n.error)throw n.error;return}if(`error`in n)throw n.error;if(n.result.done)return;let r=n.result.value?.body;if(r)switch(r.case){case`ack`:if(r.value.error?.length)throw Error(r.value.error);break;case`data`:yield r.value}}}finally{Kn(e)}})()}};const Mr=Symbol.for(`spacewave.SyncError`);var R=class extends Error{code;requestId;name=`SyncError`;[Mr]=!0;static[Symbol.hasInstance](e){return e instanceof Error&&Mr in e&&e[Mr]===!0}constructor(e,t,n){super(t),this.code=e,this.requestId=n}};function Nr(e){return e instanceof R?e:new R(`STORAGE`,`The data operation could not complete`)}function z(e){return Pr(e,`$`,[])}function B(e){return new TextEncoder().encode(z(e))}function V(e){let t;try{t=new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{throw TypeError(`invalid JSON at $: data is not valid UTF-8`)}let n;try{n=JSON.parse(t)}catch{throw TypeError(`invalid JSON at $: data is not valid JSON`)}return z(n),n}function Pr(e,t,n){switch(typeof e){case`boolean`:return e?`true`:`false`;case`number`:if(!Number.isFinite(e))throw TypeError(`invalid JSON at ${t}: non-finite number`);return JSON.stringify(e);case`string`:return JSON.stringify(e);case`object`:if(e===null)return`null`;break;default:throw TypeError(`invalid JSON at ${t}: ${typeof e} is not a JSON value`)}for(let r of n)if(r===e)throw TypeError(`invalid JSON at ${t}: cycle`);n.push(e);let r=Array.isArray(e)?Fr(e,t,n):Ir(e,t,n);return n.pop(),r}function Fr(e,t,n){let r=e.length,i=Array.from({length:r}),a=Array.from({length:r},()=>!1);for(let o of Reflect.ownKeys(e)){let s=Object.getOwnPropertyDescriptor(e,o);if(s.get!==void 0||s.set!==void 0)throw TypeError(`invalid JSON at ${t}[${String(o)}]: accessor property`);if(typeof o==`symbol`){if(s.enumerable)throw TypeError(`invalid JSON at ${t}: enumerable symbol key is not supported`);continue}let c=Number(o);if(Number.isInteger(c)&&c>=0&&c<r&&String(c)===o){a[c]=!0,i[c]=Pr(s.value,`${t}[${c}]`,n);continue}if(s.enumerable)throw TypeError(`invalid JSON at ${t}: extra enumerable array property ${JSON.stringify(o)}`)}for(let e=0;e<r;e++)if(!a[e])throw TypeError(`invalid JSON at ${t}[${e}]: array hole (missing index)`);return`[${i.join(`,`)}]`}function Ir(e,t,n){let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)throw TypeError(`invalid JSON at ${t}: not a plain object`);let i=[];for(let r of Reflect.ownKeys(e)){let a=Object.getOwnPropertyDescriptor(e,r);if(a.get!==void 0||a.set!==void 0)throw TypeError(`invalid JSON at ${t}.${String(r)}: accessor property`);if(typeof r==`symbol`){if(a.enumerable)throw TypeError(`invalid JSON at ${t}: enumerable symbol key is not supported`);continue}a.enumerable&&i.push({key:r,json:Pr(a.value,`${t}.${r}`,n)})}return i.sort((e,t)=>e.key<t.key?-1:+(e.key>t.key)),`{${i.map(e=>`${JSON.stringify(e.key)}:${e.json}`).join(`,`)}}`}function Lr(e){return{collection:t=>({get:async(n,r)=>{let i=await e({kind:`get`,collection:t,key:n},r);return i.found?i.value:void 0},scan:async(n,r)=>await e({kind:`scan`,collection:t,prefix:n?.prefix??``},r),put:async(n,r,i)=>{await e({kind:`put`,collection:t,key:n,value:Rr(r)},i)},delete:async(n,r)=>{await e({kind:`delete`,collection:t,key:n},r)}}),mutate:async(t,n,r)=>await e({kind:`mutate`,name:t,input:Rr(n)},r)}}function Rr(e){try{return V(B(e))}catch{throw new R(`VALIDATION`,`Input must contain only JSON-compatible values`)}}var zr=class{opts;nonce;getSnapshot;listeners=new Set;errorListeners=new Set;constructor(e,t){this.opts=t,this.getSnapshot=e||(async()=>void 0)}get snapshot(){return this.getSnapshot()}getIterable(){return{[Symbol.asyncIterator]:()=>{let e=[],t=null,n=null,r=!1,i=null,a=n=>{if(this.opts?.mostRecentOnly){if(i={value:n,nonce:this.nonce},t){let e=t;t=null,e({value:i.value,done:!1}),i=null}}else if(t){let e=t;t=null,e({value:n,done:!1})}else e.push(n)},o=e=>{if(n){let t=n;n=null,t(e)}r=!0};return this.listeners.add(a),this.errorListeners.add(o),(async()=>{try{let e=await this.getSnapshot();e!==void 0&&a(e)}catch(e){o(e instanceof Error?e:Error(String(e)))}})(),{next:async()=>{if(r)return{value:void 0,done:!0};if(i){let{value:e}=i;return i=null,{value:e,done:!1}}return e.length>0?{value:e.shift(),done:!1}:new Promise((e,r)=>{t=e,n=r})},return:async()=>{if(this.listeners.delete(a),this.errorListeners.delete(o),r=!0,t){let e=t;t=null,e({value:void 0,done:!0})}return n=null,{value:void 0,done:!0}},throw:async()=>(this.listeners.delete(a),this.errorListeners.delete(o),r=!0,t=null,n=null,{value:void 0,done:!0})}}}}pushChangeEvent(e){this.opts?.mostRecentOnly?(this.nonce=(this.nonce??0)+1,Array.from(this.listeners).forEach(t=>t(e))):this.listeners.forEach(t=>t(e))}async pushSnapshot(){try{let e=await this.getSnapshot();e&&this.pushChangeEvent(e)}catch(e){this.errorListeners.forEach(t=>t(e instanceof Error?e:Error(String(e))))}}};for(let e of[`dispose`,`asyncDispose`])Symbol[e]||Object.defineProperty(Symbol,e,{value:Symbol.for(`Symbol.${e}`)});var H=class{resourceRef;constructor(e){this.resourceRef=e}get id(){return this.resourceRef.resourceId}get client(){return this.resourceRef.client}get released(){return this.resourceRef.released}release(){this.resourceRef.release()}[Symbol.dispose](){this.release()}};const Br=N({typeName:`rpcstream.RpcStreamInit`,fields:[{no:1,name:`component_id`,kind:`scalar`,T:L.STRING}],packedByDefault:!0}),Vr=N({typeName:`rpcstream.RpcAck`,fields:[{no:1,name:`error`,kind:`scalar`,T:L.STRING}],packedByDefault:!0}),Hr=N({typeName:`rpcstream.RpcStreamPacket`,fields:[{no:1,name:`init`,kind:`message`,T:()=>Br,oneof:`body`},{no:2,name:`ack`,kind:`message`,T:()=>Vr,oneof:`body`},{no:3,name:`data`,kind:`scalar`,T:L.BYTES,oneof:`body`}],packedByDefault:!0}),Ur={typeName:`kvtx.rpc.Kvtx`,methods:{KvtxTransaction:{name:`KvtxTransaction`,I:Ie,O:gr,kind:O.BiDiStreaming},KvtxTransactionRpc:{name:`KvtxTransactionRpc`,I:Hr,O:Hr,kind:O.BiDiStreaming},Watch:{name:`Watch`,I:Qe,O:oe,kind:O.ServerStreaming}}},Wr=Ur.typeName;var Gr=class{rpc;service;constructor(e,t){this.service=t?.service||Wr,this.rpc=e,this.KvtxTransaction=this.KvtxTransaction.bind(this),this.KvtxTransactionRpc=this.KvtxTransactionRpc.bind(this),this.Watch=this.Watch.bind(this)}KvtxTransaction(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Ur.methods.KvtxTransaction.name,M(Ie)(e),t||void 0);return P(gr)(n)}KvtxTransactionRpc(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Ur.methods.KvtxTransactionRpc.name,M(Hr)(e),t||void 0);return P(Hr)(n)}Watch(e,t){let n=Qe.create(e),r=this.rpc.serverStreamingRequest(this.service,Ur.methods.Watch.name,Qe.toBinary(n),t||void 0);return P(oe)(r)}};const U={typeName:`kvtx.rpc.KvtxOps`,methods:{KeyCount:{name:`KeyCount`,I:Ct,O:ar,kind:O.Unary},KeyData:{name:`KeyData`,I:a,O:Ee,kind:O.Unary},KeyExists:{name:`KeyExists`,I:a,O:an,kind:O.Unary},SetKey:{name:`SetKey`,I:Ce,O:Ae,kind:O.Unary},DeleteKey:{name:`DeleteKey`,I:Be,O:d,kind:O.Unary},ScanPrefix:{name:`ScanPrefix`,I:tn,O:ye,kind:O.ServerStreaming},Iterate:{name:`Iterate`,I:We,O:y,kind:O.BiDiStreaming}}},Kr=U.typeName;var qr=class{rpc;service;constructor(e,t){this.service=t?.service||Kr,this.rpc=e,this.KeyCount=this.KeyCount.bind(this),this.KeyData=this.KeyData.bind(this),this.KeyExists=this.KeyExists.bind(this),this.SetKey=this.SetKey.bind(this),this.DeleteKey=this.DeleteKey.bind(this),this.ScanPrefix=this.ScanPrefix.bind(this),this.Iterate=this.Iterate.bind(this)}async KeyCount(e,t){let n=Ct.create(e),r=await this.rpc.request(this.service,U.methods.KeyCount.name,Ct.toBinary(n),t||void 0);return ar.fromBinary(r)}async KeyData(e,t){let n=a.create(e),r=await this.rpc.request(this.service,U.methods.KeyData.name,a.toBinary(n),t||void 0);return Ee.fromBinary(r)}async KeyExists(e,t){let n=a.create(e),r=await this.rpc.request(this.service,U.methods.KeyExists.name,a.toBinary(n),t||void 0);return an.fromBinary(r)}async SetKey(e,t){let n=Ce.create(e),r=await this.rpc.request(this.service,U.methods.SetKey.name,Ce.toBinary(n),t||void 0);return Ae.fromBinary(r)}async DeleteKey(e,t){let n=Be.create(e),r=await this.rpc.request(this.service,U.methods.DeleteKey.name,Be.toBinary(n),t||void 0);return d.fromBinary(r)}ScanPrefix(e,t){let n=tn.create(e),r=this.rpc.serverStreamingRequest(this.service,U.methods.ScanPrefix.name,tn.toBinary(n),t||void 0);return P(ye)(r)}Iterate(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,U.methods.Iterate.name,M(We)(e),t||void 0);return P(y)(n)}},Jr=class extends Error{constructor(){super(`The snapshot exceeds its record or byte limit; use a narrower prefix`),this.name=`KvScanLimitError`}},Yr=class extends H{service;constructor(e){super(e),this.service=new Gr(e.client)}async keyCount(e){return this.withTransaction(!1,async t=>t.keyCount(e),e)}async scanKeys(e,t){return this.withTransaction(!1,async n=>n.scanKeys(e,t),t)}async*watchKeys(e,t){let n=this.service.Watch({prefix:e,onlyKeys:!1},t);for await(let e of n){if(e.error)throw Error(e.error);yield(e.entries??[]).map(e=>({key:e.key??new Uint8Array,byteLength:e.value?.length??0}))}}async*watchRecords(e,t,n){let r=new AbortController,i=n?AbortSignal.any([r.signal,n]):r.signal;i.throwIfAborted();let a=new zr(void 0,{mostRecentOnly:!0}),o=a.getIterable()[Symbol.asyncIterator](),s=()=>{o.return?.()};i.addEventListener(`abort`,s,{once:!0});let c,l=(async()=>{try{for await(let n of this.service.Watch({prefix:e,maxRecords:BigInt(t.maxRecords),maxBytes:BigInt(t.maxBytes)},i)){if(n.limitExceeded)throw new Jr;if(n.error)throw Error(n.error);let e=(n.entries??[]).map(e=>({key:e.key??new Uint8Array,value:e.value??new Uint8Array})),r=e.reduce((e,t)=>e+t.key.length+t.value.length,0);if(e.length>t.maxRecords||r>t.maxBytes)throw new Jr;a.pushChangeEvent(e)}if(!i.aborted)throw Error(`kv/store: watch ended`)}catch(e){c=e}finally{await o.return?.()}})();try{for(;;){let e=await o.next();if(e.done)break;yield e.value}if(c&&!i.aborted)throw c}finally{r.abort(),i.removeEventListener(`abort`,s),await o.return?.(),await l}}async get(e,t){return this.withTransaction(!1,async n=>n.get(e,t),t)}async exists(e,t){return this.withTransaction(!1,async n=>n.exists(e,t),t)}async withTransaction(e,t,n){let r=await this.openTransaction(e,n);try{let i=await t(r);return e?await r.commit(n):await r.discard(),i}catch(e){throw await r.discard(),e}}async openTransaction(e,t){let n=I({objectMode:!0}),r=this.service.KvtxTransaction(n,t)[Symbol.asyncIterator]();n.push({body:{case:`init`,value:{write:e}}});let i=await Zr(r);if(i.body?.case!==`ack`)throw n.end(),Error(`kv/store: transaction did not return ack`);if(i.body.value.error)throw n.end(),Error(i.body.value.error);let a=i.body.value.transactionId??``;if(!a)throw n.end(),Error(`kv/store: transaction ack missing transaction id`);return new Xr(n,r,new qr(new pn(()=>Ar(a,e=>this.service.KvtxTransactionRpc(e,t),!1))))}},Xr=class{requests;responses;ops;released=!1;constructor(e,t,n){this.requests=e,this.responses=t,this.ops=n}async keyCount(e){return(await this.ops.KeyCount({},e)).keyCount??0n}async scanKeys(e,t){let n=[],r=this.ops.ScanPrefix({prefix:e,onlyKeys:!1},t);for await(let e of r){if(e.error)throw Error(e.error);e.key&&n.push({key:e.key,byteLength:e.value?.length??0})}return n}async scanRecords(e,t,n){let r=[],i=0,a=new AbortController,o=n?AbortSignal.any([a.signal,n]):a.signal;try{let n=this.ops.ScanPrefix({prefix:e,onlyKeys:!1},o);for await(let e of n){if(e.error)throw Error(e.error);if(!e.key)continue;let n=e.value??new Uint8Array;if(i+=e.key.length+n.length,r.length>=t.maxRecords||i>t.maxBytes)throw new Jr;r.push({key:e.key,value:n})}return r}finally{a.abort()}}async get(e,t){let n=await this.ops.KeyData({key:e},t);if(n.error)throw Error(n.error);return{data:n.data??new Uint8Array,found:n.found??!1}}async exists(e,t){let n=await this.ops.KeyExists({key:e},t);if(n.error)throw Error(n.error);return n.found??!1}async set(e,t,n){let r=await this.ops.SetKey({key:e,value:t},n);if(r.error)throw Error(r.error)}async delete(e,t){let n=await this.ops.DeleteKey({key:e},t);if(n.error)throw Error(n.error)}async commit(e){if(this.released)throw Error(`kv/store: transaction already released`);this.released=!0,this.requests.push({body:{case:`commit`,value:!0}});try{let e=await Zr(this.responses),t=e.body?.case===`complete`?e.body.value:null;if(!t)throw Error(`kv/store: transaction did not complete`);if(t.error)throw Error(t.error);if(!t.committed)throw Error(`kv/store: transaction discarded`)}finally{this.requests.end(),e?.throwIfAborted()}}async discard(){if(!this.released){this.released=!0,this.requests.push({body:{case:`discard`,value:!0}});try{await Zr(this.responses)}finally{this.requests.end()}}}};async function Zr(e){let t=await e.next();if(t.done)throw Error(`kv/store: transaction stream closed`);return t.value}function Qr(e){return e?`<${e}>`:``}const $r=`types/`,ei=`<type>`;function ti(e){return e?$r+e:``}function ni(e,t){return{subject:Qr(e),predicate:ei,obj:Qr(ti(t))}}async function ri(e,t,n){let r=await e.lookupGraphQuads(Qr(t),ei,void 0,void 0,1,n);if(!r.quads||r.quads.length===0)return``;let i=r.quads[0].obj;if(!i)return ii(e,t,n);let a;try{a=i.startsWith(`<`)?i.slice(1,-1):i}catch{return``}return a.startsWith(`types/`)?a.slice(6):``}async function ii(e,t,n){let r=await e.iterateObjects($r,!1,n);try{let i=async()=>{if(!await r.next(n))return``;let a=await r.key(n);if(!a.startsWith(`types/`))return i();let o=a.slice(6),s=await e.listObjectsWithType(o,n);return new Set(s).has(t)?o:i()};return await i()}finally{await r.close(n)}}async function ai(e,t,n,r){let i=!1,a=[];for(let o of t)o.obj===n?i=!0:a.push(e.deleteGraphQuad(o.subject??``,o.predicate??``,o.obj??``,o.label,r));return await Promise.all(a),i}async function oi(e,t,n,r){if(!t||!n)throw Error(`empty object key or type ID`);let i=ni(t,n),a=await e.lookupGraphQuads(Qr(t),ei,void 0,void 0,void 0,r),o=!1;a.quads&&(o=await ai(e,a.quads,i.obj,r)),await si(e,n,r),o||await e.setGraphQuad(i.subject??``,i.predicate??``,i.obj??``,i.label,r)}async function si(e,t,n){let r=ti(t),i=await e.getObject(r,n);return i?(i.release(),!1):((await e.createObject(r,{},n)).release(),!0)}var ci=class extends Error{constructor(){super(`The existing object has a different ObjectType`),this.name=`KvObjectTypeError`}};async function li(e,t,n,r){let i=await e.getObject(t,r);if(i){if(i.release(),await ri(e,t,r)!==`kv/store`)throw new ci}else{if(!n)return;let i=await e.buildStorageCursor(r);try{let n=await i.putBlock({data:nt.toBinary({implType:1})},r),a=await i.getRef(r);if(!n.ref)throw Error(`kv/store: missing initial root`);(await e.createObject(t,{...a.ref,rootRef:n.ref},r)).release(),await oi(e,t,`kv/store`,r)}finally{i.release()}}let a=await e.accessTypedObject(t,r),o=e.resourceRef.createResource(a.resourceId,Yr);if(a.typeId!==`kv/store`)throw o.release(),new ci;return o}const W={typeName:`s4wave.world.EngineResourceService`,methods:{GetEngineInfo:{name:`GetEngineInfo`,I:de,O:ve,kind:O.Unary},GetWorldRootSnapshot:{name:`GetWorldRootSnapshot`,I:Rt,O:kn,kind:O.Unary},WatchWorldRootSnapshots:{name:`WatchWorldRootSnapshots`,I:dn,O:kn,kind:O.ServerStreaming},SetRetainedRoot:{name:`SetRetainedRoot`,I:re,O:E,kind:O.Unary},NewTransaction:{name:`NewTransaction`,I:Tt,O:sr,kind:O.Unary},ExecuteWorldOp:{name:`ExecuteWorldOp`,I:j,O:fn,kind:O.Unary},Sync:{name:`Sync`,I:ut,O:st,kind:O.Unary},GetSeqno:{name:`GetSeqno`,I:Fe,O:i,kind:O.Unary},WaitSeqno:{name:`WaitSeqno`,I:k,O:wn,kind:O.Unary},BuildStorageCursor:{name:`BuildStorageCursor`,I:Xn,O:It,kind:O.Unary},AccessWorldState:{name:`AccessWorldState`,I:F,O:A,kind:O.Unary}}},ui=W.typeName;var di=class{rpc;service;constructor(e,t){this.service=t?.service||ui,this.rpc=e,this.GetEngineInfo=this.GetEngineInfo.bind(this),this.GetWorldRootSnapshot=this.GetWorldRootSnapshot.bind(this),this.WatchWorldRootSnapshots=this.WatchWorldRootSnapshots.bind(this),this.SetRetainedRoot=this.SetRetainedRoot.bind(this),this.NewTransaction=this.NewTransaction.bind(this),this.ExecuteWorldOp=this.ExecuteWorldOp.bind(this),this.Sync=this.Sync.bind(this),this.GetSeqno=this.GetSeqno.bind(this),this.WaitSeqno=this.WaitSeqno.bind(this),this.BuildStorageCursor=this.BuildStorageCursor.bind(this),this.AccessWorldState=this.AccessWorldState.bind(this)}async GetEngineInfo(e,t){let n=de.create(e),r=await this.rpc.request(this.service,W.methods.GetEngineInfo.name,de.toBinary(n),t||void 0);return ve.fromBinary(r)}async GetWorldRootSnapshot(e,t){let n=Rt.create(e),r=await this.rpc.request(this.service,W.methods.GetWorldRootSnapshot.name,Rt.toBinary(n),t||void 0);return kn.fromBinary(r)}WatchWorldRootSnapshots(e,t){let n=dn.create(e),r=this.rpc.serverStreamingRequest(this.service,W.methods.WatchWorldRootSnapshots.name,dn.toBinary(n),t||void 0);return P(kn)(r)}async SetRetainedRoot(e,t){let n=re.create(e),r=await this.rpc.request(this.service,W.methods.SetRetainedRoot.name,re.toBinary(n),t||void 0);return E.fromBinary(r)}async NewTransaction(e,t){let n=Tt.create(e),r=await this.rpc.request(this.service,W.methods.NewTransaction.name,Tt.toBinary(n),t||void 0);return sr.fromBinary(r)}async ExecuteWorldOp(e,t){let n=j.create(e),r=await this.rpc.request(this.service,W.methods.ExecuteWorldOp.name,j.toBinary(n),t||void 0);return fn.fromBinary(r)}async Sync(e,t){let n=ut.create(e),r=await this.rpc.request(this.service,W.methods.Sync.name,ut.toBinary(n),t||void 0);return st.fromBinary(r)}async GetSeqno(e,t){let n=Fe.create(e),r=await this.rpc.request(this.service,W.methods.GetSeqno.name,Fe.toBinary(n),t||void 0);return i.fromBinary(r)}async WaitSeqno(e,t){let n=k.create(e),r=await this.rpc.request(this.service,W.methods.WaitSeqno.name,k.toBinary(n),t||void 0);return wn.fromBinary(r)}async BuildStorageCursor(e,t){let n=Xn.create(e),r=await this.rpc.request(this.service,W.methods.BuildStorageCursor.name,Xn.toBinary(n),t||void 0);return It.fromBinary(r)}async AccessWorldState(e,t){let n=F.create(e),r=await this.rpc.request(this.service,W.methods.AccessWorldState.name,F.toBinary(n),t||void 0);return A.fromBinary(r)}};const G={typeName:`s4wave.world.WorldStateResourceService`,methods:{CompareObjectRecords:{name:`CompareObjectRecords`,I:Dt,O:lr,kind:O.Unary},GetReadOnly:{name:`GetReadOnly`,I:pe,O:ft,kind:O.Unary},Sync:{name:`Sync`,I:ut,O:st,kind:O.Unary},GetSeqno:{name:`GetSeqno`,I:Fe,O:i,kind:O.Unary},WaitSeqno:{name:`WaitSeqno`,I:k,O:wn,kind:O.Unary},BuildStorageCursor:{name:`BuildStorageCursor`,I:Xn,O:It,kind:O.Unary},AccessWorldState:{name:`AccessWorldState`,I:F,O:A,kind:O.Unary},OpenNestedWorld:{name:`OpenNestedWorld`,I:nn,O:be,kind:O.Unary},OpenOuterWorld:{name:`OpenOuterWorld`,I:we,O:je,kind:O.Unary},CreateObject:{name:`CreateObject`,I:h,O:ir,kind:O.Unary},GetObject:{name:`GetObject`,I:at,O:ae,kind:O.Unary},IterateObjects:{name:`IterateObjects`,I:St,O:Cn,kind:O.Unary},ListObjects:{name:`ListObjects`,I:Pt,O:Vt,kind:O.Unary},RenameObject:{name:`RenameObject`,I:ge,O:Le,kind:O.Unary},DeleteObject:{name:`DeleteObject`,I:sn,O:s,kind:O.Unary},SetGraphQuad:{name:`SetGraphQuad`,I:$e,O:se,kind:O.Unary},DeleteGraphQuad:{name:`DeleteGraphQuad`,I:v,O:ke,kind:O.Unary},LookupGraphQuads:{name:`LookupGraphQuads`,I:Qn,O:pr,kind:O.Unary},LookupGraphQuadsBatch:{name:`LookupGraphQuadsBatch`,I:Jt,O:Wt,kind:O.Unary},ListGraphEdgeBuckets:{name:`ListGraphEdgeBuckets`,I:un,O:Jn,kind:O.Unary},ListObjectsWithType:{name:`ListObjectsWithType`,I:On,O:hn,kind:O.Unary},GetObjectRootRefsBatch:{name:`GetObjectRootRefsBatch`,I:me,O:Nn,kind:O.Unary},GetObjectMetadataBatch:{name:`GetObjectMetadataBatch`,I:le,O:Ze,kind:O.Unary},GetObjectBodiesBatch:{name:`GetObjectBodiesBatch`,I:u,O:tt,kind:O.ServerStreaming},QueryGraphPath:{name:`QueryGraphPath`,I:te,O:ue,kind:O.Unary},DeleteGraphObject:{name:`DeleteGraphObject`,I:Je,O:x,kind:O.Unary},ApplyWorldOp:{name:`ApplyWorldOp`,I:j,O:fn,kind:O.Unary}}},fi=G.typeName;var pi=class{rpc;service;constructor(e,t){this.service=t?.service||fi,this.rpc=e,this.CompareObjectRecords=this.CompareObjectRecords.bind(this),this.GetReadOnly=this.GetReadOnly.bind(this),this.Sync=this.Sync.bind(this),this.GetSeqno=this.GetSeqno.bind(this),this.WaitSeqno=this.WaitSeqno.bind(this),this.BuildStorageCursor=this.BuildStorageCursor.bind(this),this.AccessWorldState=this.AccessWorldState.bind(this),this.OpenNestedWorld=this.OpenNestedWorld.bind(this),this.OpenOuterWorld=this.OpenOuterWorld.bind(this),this.CreateObject=this.CreateObject.bind(this),this.GetObject=this.GetObject.bind(this),this.IterateObjects=this.IterateObjects.bind(this),this.ListObjects=this.ListObjects.bind(this),this.RenameObject=this.RenameObject.bind(this),this.DeleteObject=this.DeleteObject.bind(this),this.SetGraphQuad=this.SetGraphQuad.bind(this),this.DeleteGraphQuad=this.DeleteGraphQuad.bind(this),this.LookupGraphQuads=this.LookupGraphQuads.bind(this),this.LookupGraphQuadsBatch=this.LookupGraphQuadsBatch.bind(this),this.ListGraphEdgeBuckets=this.ListGraphEdgeBuckets.bind(this),this.ListObjectsWithType=this.ListObjectsWithType.bind(this),this.GetObjectRootRefsBatch=this.GetObjectRootRefsBatch.bind(this),this.GetObjectMetadataBatch=this.GetObjectMetadataBatch.bind(this),this.GetObjectBodiesBatch=this.GetObjectBodiesBatch.bind(this),this.QueryGraphPath=this.QueryGraphPath.bind(this),this.DeleteGraphObject=this.DeleteGraphObject.bind(this),this.ApplyWorldOp=this.ApplyWorldOp.bind(this)}async CompareObjectRecords(e,t){let n=Dt.create(e),r=await this.rpc.request(this.service,G.methods.CompareObjectRecords.name,Dt.toBinary(n),t||void 0);return lr.fromBinary(r)}async GetReadOnly(e,t){let n=pe.create(e),r=await this.rpc.request(this.service,G.methods.GetReadOnly.name,pe.toBinary(n),t||void 0);return ft.fromBinary(r)}async Sync(e,t){let n=ut.create(e),r=await this.rpc.request(this.service,G.methods.Sync.name,ut.toBinary(n),t||void 0);return st.fromBinary(r)}async GetSeqno(e,t){let n=Fe.create(e),r=await this.rpc.request(this.service,G.methods.GetSeqno.name,Fe.toBinary(n),t||void 0);return i.fromBinary(r)}async WaitSeqno(e,t){let n=k.create(e),r=await this.rpc.request(this.service,G.methods.WaitSeqno.name,k.toBinary(n),t||void 0);return wn.fromBinary(r)}async BuildStorageCursor(e,t){let n=Xn.create(e),r=await this.rpc.request(this.service,G.methods.BuildStorageCursor.name,Xn.toBinary(n),t||void 0);return It.fromBinary(r)}async AccessWorldState(e,t){let n=F.create(e),r=await this.rpc.request(this.service,G.methods.AccessWorldState.name,F.toBinary(n),t||void 0);return A.fromBinary(r)}async OpenNestedWorld(e,t){let n=nn.create(e),r=await this.rpc.request(this.service,G.methods.OpenNestedWorld.name,nn.toBinary(n),t||void 0);return be.fromBinary(r)}async OpenOuterWorld(e,t){let n=we.create(e),r=await this.rpc.request(this.service,G.methods.OpenOuterWorld.name,we.toBinary(n),t||void 0);return je.fromBinary(r)}async CreateObject(e,t){let n=h.create(e),r=await this.rpc.request(this.service,G.methods.CreateObject.name,h.toBinary(n),t||void 0);return ir.fromBinary(r)}async GetObject(e,t){let n=at.create(e),r=await this.rpc.request(this.service,G.methods.GetObject.name,at.toBinary(n),t||void 0);return ae.fromBinary(r)}async IterateObjects(e,t){let n=St.create(e),r=await this.rpc.request(this.service,G.methods.IterateObjects.name,St.toBinary(n),t||void 0);return Cn.fromBinary(r)}async ListObjects(e,t){let n=Pt.create(e),r=await this.rpc.request(this.service,G.methods.ListObjects.name,Pt.toBinary(n),t||void 0);return Vt.fromBinary(r)}async RenameObject(e,t){let n=ge.create(e),r=await this.rpc.request(this.service,G.methods.RenameObject.name,ge.toBinary(n),t||void 0);return Le.fromBinary(r)}async DeleteObject(e,t){let n=sn.create(e),r=await this.rpc.request(this.service,G.methods.DeleteObject.name,sn.toBinary(n),t||void 0);return s.fromBinary(r)}async SetGraphQuad(e,t){let n=$e.create(e),r=await this.rpc.request(this.service,G.methods.SetGraphQuad.name,$e.toBinary(n),t||void 0);return se.fromBinary(r)}async DeleteGraphQuad(e,t){let n=v.create(e),r=await this.rpc.request(this.service,G.methods.DeleteGraphQuad.name,v.toBinary(n),t||void 0);return ke.fromBinary(r)}async LookupGraphQuads(e,t){let n=Qn.create(e),r=await this.rpc.request(this.service,G.methods.LookupGraphQuads.name,Qn.toBinary(n),t||void 0);return pr.fromBinary(r)}async LookupGraphQuadsBatch(e,t){let n=Jt.create(e),r=await this.rpc.request(this.service,G.methods.LookupGraphQuadsBatch.name,Jt.toBinary(n),t||void 0);return Wt.fromBinary(r)}async ListGraphEdgeBuckets(e,t){let n=un.create(e),r=await this.rpc.request(this.service,G.methods.ListGraphEdgeBuckets.name,un.toBinary(n),t||void 0);return Jn.fromBinary(r)}async ListObjectsWithType(e,t){let n=On.create(e),r=await this.rpc.request(this.service,G.methods.ListObjectsWithType.name,On.toBinary(n),t||void 0);return hn.fromBinary(r)}async GetObjectRootRefsBatch(e,t){let n=me.create(e),r=await this.rpc.request(this.service,G.methods.GetObjectRootRefsBatch.name,me.toBinary(n),t||void 0);return Nn.fromBinary(r)}async GetObjectMetadataBatch(e,t){let n=le.create(e),r=await this.rpc.request(this.service,G.methods.GetObjectMetadataBatch.name,le.toBinary(n),t||void 0);return Ze.fromBinary(r)}GetObjectBodiesBatch(e,t){let n=u.create(e),r=this.rpc.serverStreamingRequest(this.service,G.methods.GetObjectBodiesBatch.name,u.toBinary(n),t||void 0);return P(tt)(r)}async QueryGraphPath(e,t){let n=te.create(e),r=await this.rpc.request(this.service,G.methods.QueryGraphPath.name,te.toBinary(n),t||void 0);return ue.fromBinary(r)}async DeleteGraphObject(e,t){let n=Je.create(e),r=await this.rpc.request(this.service,G.methods.DeleteGraphObject.name,Je.toBinary(n),t||void 0);return x.fromBinary(r)}async ApplyWorldOp(e,t){let n=j.create(e),r=await this.rpc.request(this.service,G.methods.ApplyWorldOp.name,j.toBinary(n),t||void 0);return fn.fromBinary(r)}};const mi={typeName:`s4wave.world.WatchWorldStateResourceService`,methods:{WatchWorldState:{name:`WatchWorldState`,I:Yn,O:Ft,kind:O.ServerStreaming}}},hi=mi.typeName;var gi=class{rpc;service;constructor(e,t){this.service=t?.service||hi,this.rpc=e,this.WatchWorldState=this.WatchWorldState.bind(this)}WatchWorldState(e,t){let n=Yn.create(e),r=this.rpc.serverStreamingRequest(this.service,mi.methods.WatchWorldState.name,Yn.toBinary(n),t||void 0);return P(Ft)(r)}};const _i={typeName:`s4wave.world.TxResourceService`,methods:{CommitMutations:{name:`CommitMutations`,I:Kt,O:yt,kind:O.Unary},Commit:{name:`Commit`,I:er,O:hr,kind:O.Unary},Discard:{name:`Discard`,I:rn,O:Se,kind:O.Unary}}},vi=_i.typeName;var yi=class{rpc;service;constructor(e,t){this.service=t?.service||vi,this.rpc=e,this.CommitMutations=this.CommitMutations.bind(this),this.Commit=this.Commit.bind(this),this.Discard=this.Discard.bind(this)}async CommitMutations(e,t){let n=Kt.create(e),r=await this.rpc.request(this.service,_i.methods.CommitMutations.name,Kt.toBinary(n),t||void 0);return yt.fromBinary(r)}async Commit(e,t){let n=er.create(e),r=await this.rpc.request(this.service,_i.methods.Commit.name,er.toBinary(n),t||void 0);return hr.fromBinary(r)}async Discard(e,t){let n=rn.create(e),r=await this.rpc.request(this.service,_i.methods.Discard.name,rn.toBinary(n),t||void 0);return Se.fromBinary(r)}};const K={typeName:`s4wave.world.ObjectIteratorResourceService`,methods:{Err:{name:`Err`,I:Ne,O:ne,kind:O.Unary},Valid:{name:`Valid`,I:Gn,O:yn,kind:O.Unary},Key:{name:`Key`,I:Bn,O:At,kind:O.Unary},Next:{name:`Next`,I:nr,O:Ke,kind:O.Unary},Seek:{name:`Seek`,I:_r,O:c,kind:O.Unary},Close:{name:`Close`,I:gn,O:Xt,kind:O.Unary}}},bi=K.typeName;var xi=class{rpc;service;constructor(e,t){this.service=t?.service||bi,this.rpc=e,this.Err=this.Err.bind(this),this.Valid=this.Valid.bind(this),this.Key=this.Key.bind(this),this.Next=this.Next.bind(this),this.Seek=this.Seek.bind(this),this.Close=this.Close.bind(this)}async Err(e,t){let n=Ne.create(e),r=await this.rpc.request(this.service,K.methods.Err.name,Ne.toBinary(n),t||void 0);return ne.fromBinary(r)}async Valid(e,t){let n=Gn.create(e),r=await this.rpc.request(this.service,K.methods.Valid.name,Gn.toBinary(n),t||void 0);return yn.fromBinary(r)}async Key(e,t){let n=Bn.create(e),r=await this.rpc.request(this.service,K.methods.Key.name,Bn.toBinary(n),t||void 0);return At.fromBinary(r)}async Next(e,t){let n=nr.create(e),r=await this.rpc.request(this.service,K.methods.Next.name,nr.toBinary(n),t||void 0);return Ke.fromBinary(r)}async Seek(e,t){let n=_r.create(e),r=await this.rpc.request(this.service,K.methods.Seek.name,_r.toBinary(n),t||void 0);return c.fromBinary(r)}async Close(e,t){let n=gn.create(e),r=await this.rpc.request(this.service,K.methods.Close.name,gn.toBinary(n),t||void 0);return Xt.fromBinary(r)}};({typeName:`s4wave.world.GraphPathQueryResourceService`,methods:{Next:{name:`Next`,I:He,O:p,kind:O.Unary},Close:{name:`Close`,I:Ht,O:An,kind:O.Unary}}}).typeName;const q={typeName:`s4wave.world.ObjectStateResourceService`,methods:{GetKey:{name:`GetKey`,I:ze,O:yr,kind:O.Unary},GetRootRef:{name:`GetRootRef`,I:lt,O:mt,kind:O.Unary},SetRootRef:{name:`SetRootRef`,I:jn,O:T,kind:O.Unary},AccessWorldState:{name:`AccessWorldState`,I:F,O:A,kind:O.Unary},ApplyObjectOp:{name:`ApplyObjectOp`,I:Tn,O:Hn,kind:O.Unary},IncrementRev:{name:`IncrementRev`,I:Fn,O:$t,kind:O.Unary},WaitRev:{name:`WaitRev`,I:In,O:en,kind:O.Unary}}},Si=q.typeName;var Ci=class{rpc;service;constructor(e,t){this.service=t?.service||Si,this.rpc=e,this.GetKey=this.GetKey.bind(this),this.GetRootRef=this.GetRootRef.bind(this),this.SetRootRef=this.SetRootRef.bind(this),this.AccessWorldState=this.AccessWorldState.bind(this),this.ApplyObjectOp=this.ApplyObjectOp.bind(this),this.IncrementRev=this.IncrementRev.bind(this),this.WaitRev=this.WaitRev.bind(this)}async GetKey(e,t){let n=ze.create(e),r=await this.rpc.request(this.service,q.methods.GetKey.name,ze.toBinary(n),t||void 0);return yr.fromBinary(r)}async GetRootRef(e,t){let n=lt.create(e),r=await this.rpc.request(this.service,q.methods.GetRootRef.name,lt.toBinary(n),t||void 0);return mt.fromBinary(r)}async SetRootRef(e,t){let n=jn.create(e),r=await this.rpc.request(this.service,q.methods.SetRootRef.name,jn.toBinary(n),t||void 0);return T.fromBinary(r)}async AccessWorldState(e,t){let n=F.create(e),r=await this.rpc.request(this.service,q.methods.AccessWorldState.name,F.toBinary(n),t||void 0);return A.fromBinary(r)}async ApplyObjectOp(e,t){let n=Tn.create(e),r=await this.rpc.request(this.service,q.methods.ApplyObjectOp.name,Tn.toBinary(n),t||void 0);return Hn.fromBinary(r)}async IncrementRev(e,t){let n=Fn.create(e),r=await this.rpc.request(this.service,q.methods.IncrementRev.name,Fn.toBinary(n),t||void 0);return $t.fromBinary(r)}async WaitRev(e,t){let n=In.create(e),r=await this.rpc.request(this.service,q.methods.WaitRev.name,In.toBinary(n),t||void 0);return en.fromBinary(r)}};const wi={typeName:`s4wave.world.TypedObjectResourceService`,methods:{AccessTypedObject:{name:`AccessTypedObject`,I:bn,O:Ln,kind:O.Unary},WatchTypedObject:{name:`WatchTypedObject`,I:Vn,O:jt,kind:O.ServerStreaming}}},Ti=wi.typeName;var Ei=class{rpc;service;constructor(e,t){this.service=t?.service||Ti,this.rpc=e,this.AccessTypedObject=this.AccessTypedObject.bind(this),this.WatchTypedObject=this.WatchTypedObject.bind(this)}async AccessTypedObject(e,t){let n=bn.create(e),r=await this.rpc.request(this.service,wi.methods.AccessTypedObject.name,bn.toBinary(n),t||void 0);return Ln.fromBinary(r)}WatchTypedObject(e,t){let n=Vn.create(e),r=this.rpc.serverStreamingRequest(this.service,wi.methods.WatchTypedObject.name,Vn.toBinary(n),t||void 0);return P(jt)(r)}};const J={typeName:`s4wave.bucket_lookup.BucketLookupCursorResourceService`,methods:{GetRef:{name:`GetRef`,I:_,O:Oe,kind:O.Unary},FollowRef:{name:`FollowRef`,I:cr,O:Ue,kind:O.Unary},GetBlock:{name:`GetBlock`,I:qe,O:b,kind:O.Unary},PutBlock:{name:`PutBlock`,I:Me,O:S,kind:O.Unary},PutBlockBatch:{name:`PutBlockBatch`,I:xe,O:Te,kind:O.Unary},GetBlockExistsBatch:{name:`GetBlockExistsBatch`,I:m,O:rr,kind:O.Unary},BuildTransaction:{name:`BuildTransaction`,I:vt,O:$n,kind:O.Unary},BuildTransactionAtRef:{name:`BuildTransactionAtRef`,I:Yt,O:Gt,kind:O.Unary},Clone:{name:`Clone`,I:mr,O:Et,kind:O.Unary},Release:{name:`Release`,I:w,O:_e,kind:O.Unary},Unmarshal:{name:`Unmarshal`,I:Re,O:vr,kind:O.Unary}}},Di=J.typeName;var Oi=class{rpc;service;constructor(e,t){this.service=t?.service||Di,this.rpc=e,this.GetRef=this.GetRef.bind(this),this.FollowRef=this.FollowRef.bind(this),this.GetBlock=this.GetBlock.bind(this),this.PutBlock=this.PutBlock.bind(this),this.PutBlockBatch=this.PutBlockBatch.bind(this),this.GetBlockExistsBatch=this.GetBlockExistsBatch.bind(this),this.BuildTransaction=this.BuildTransaction.bind(this),this.BuildTransactionAtRef=this.BuildTransactionAtRef.bind(this),this.Clone=this.Clone.bind(this),this.Release=this.Release.bind(this),this.Unmarshal=this.Unmarshal.bind(this)}async GetRef(e,t){let n=_.create(e),r=await this.rpc.request(this.service,J.methods.GetRef.name,_.toBinary(n),t||void 0);return Oe.fromBinary(r)}async FollowRef(e,t){let n=cr.create(e),r=await this.rpc.request(this.service,J.methods.FollowRef.name,cr.toBinary(n),t||void 0);return Ue.fromBinary(r)}async GetBlock(e,t){let n=qe.create(e),r=await this.rpc.request(this.service,J.methods.GetBlock.name,qe.toBinary(n),t||void 0);return b.fromBinary(r)}async PutBlock(e,t){let n=Me.create(e),r=await this.rpc.request(this.service,J.methods.PutBlock.name,Me.toBinary(n),t||void 0);return S.fromBinary(r)}async PutBlockBatch(e,t){let n=xe.create(e),r=await this.rpc.request(this.service,J.methods.PutBlockBatch.name,xe.toBinary(n),t||void 0);return Te.fromBinary(r)}async GetBlockExistsBatch(e,t){let n=m.create(e),r=await this.rpc.request(this.service,J.methods.GetBlockExistsBatch.name,m.toBinary(n),t||void 0);return rr.fromBinary(r)}async BuildTransaction(e,t){let n=vt.create(e),r=await this.rpc.request(this.service,J.methods.BuildTransaction.name,vt.toBinary(n),t||void 0);return $n.fromBinary(r)}async BuildTransactionAtRef(e,t){let n=Yt.create(e),r=await this.rpc.request(this.service,J.methods.BuildTransactionAtRef.name,Yt.toBinary(n),t||void 0);return Gt.fromBinary(r)}async Clone(e,t){let n=mr.create(e),r=await this.rpc.request(this.service,J.methods.Clone.name,mr.toBinary(n),t||void 0);return Et.fromBinary(r)}async Release(e,t){let n=w.create(e),r=await this.rpc.request(this.service,J.methods.Release.name,w.toBinary(n),t||void 0);return _e.fromBinary(r)}async Unmarshal(e,t){let n=Re.create(e),r=await this.rpc.request(this.service,J.methods.Unmarshal.name,Re.toBinary(n),t||void 0);return vr.fromBinary(r)}};const Y={typeName:`s4wave.block.cursor.BlockCursorResourceService`,methods:{Fetch:{name:`Fetch`,I:Lt,O:Wn,kind:O.Unary},SetBlock:{name:`SetBlock`,I:tr,O:Ge,kind:O.Unary},FollowRef:{name:`FollowRef`,I:vn,O:Pn,kind:O.Unary},GetRef:{name:`GetRef`,I:Bt,O:Dn,kind:O.Unary},IsDirty:{name:`IsDirty`,I:mn,O:qt,kind:O.Unary},MarkDirty:{name:`MarkDirty`,I:Zn,O:fr,kind:O.Unary},GetBlock:{name:`GetBlock`,I:kt,O:ln,kind:O.Unary},Unmarshal:{name:`Unmarshal`,I:De,O:on,kind:O.Unary},IsSubBlock:{name:`IsSubBlock`,I:Ut,O:_t,kind:O.Unary},FollowSubBlock:{name:`FollowSubBlock`,I:Qt,O:xt,kind:O.Unary},SetAsSubBlock:{name:`SetAsSubBlock`,I:Ve,O:f,kind:O.Unary},ClearRef:{name:`ClearRef`,I:D,O:Mn,kind:O.Unary},ClearAllRefs:{name:`ClearAllRefs`,I:it,O:ie,kind:O.Unary},SetRef:{name:`SetRef`,I:ee,O:g,kind:O.Unary},GetExistingRef:{name:`GetExistingRef`,I:qn,O:Nt,kind:O.Unary},GetAllRefs:{name:`GetAllRefs`,I:Sn,O:zn,kind:O.Unary},Detach:{name:`Detach`,I:ct,O:pt,kind:O.Unary},DetachTransaction:{name:`DetachTransaction`,I:Pe,O:r,kind:O.Unary},DetachRecursive:{name:`DetachRecursive`,I:fe,O:dt,kind:O.Unary},Parents:{name:`Parents`,I:wt,O:or,kind:O.Unary}}},ki=Y.typeName;var Ai=class{rpc;service;constructor(e,t){this.service=t?.service||ki,this.rpc=e,this.Fetch=this.Fetch.bind(this),this.SetBlock=this.SetBlock.bind(this),this.FollowRef=this.FollowRef.bind(this),this.GetRef=this.GetRef.bind(this),this.IsDirty=this.IsDirty.bind(this),this.MarkDirty=this.MarkDirty.bind(this),this.GetBlock=this.GetBlock.bind(this),this.Unmarshal=this.Unmarshal.bind(this),this.IsSubBlock=this.IsSubBlock.bind(this),this.FollowSubBlock=this.FollowSubBlock.bind(this),this.SetAsSubBlock=this.SetAsSubBlock.bind(this),this.ClearRef=this.ClearRef.bind(this),this.ClearAllRefs=this.ClearAllRefs.bind(this),this.SetRef=this.SetRef.bind(this),this.GetExistingRef=this.GetExistingRef.bind(this),this.GetAllRefs=this.GetAllRefs.bind(this),this.Detach=this.Detach.bind(this),this.DetachTransaction=this.DetachTransaction.bind(this),this.DetachRecursive=this.DetachRecursive.bind(this),this.Parents=this.Parents.bind(this)}async Fetch(e,t){let n=Lt.create(e),r=await this.rpc.request(this.service,Y.methods.Fetch.name,Lt.toBinary(n),t||void 0);return Wn.fromBinary(r)}async SetBlock(e,t){let n=tr.create(e),r=await this.rpc.request(this.service,Y.methods.SetBlock.name,tr.toBinary(n),t||void 0);return Ge.fromBinary(r)}async FollowRef(e,t){let n=vn.create(e),r=await this.rpc.request(this.service,Y.methods.FollowRef.name,vn.toBinary(n),t||void 0);return Pn.fromBinary(r)}async GetRef(e,t){let n=Bt.create(e),r=await this.rpc.request(this.service,Y.methods.GetRef.name,Bt.toBinary(n),t||void 0);return Dn.fromBinary(r)}async IsDirty(e,t){let n=mn.create(e),r=await this.rpc.request(this.service,Y.methods.IsDirty.name,mn.toBinary(n),t||void 0);return qt.fromBinary(r)}async MarkDirty(e,t){let n=Zn.create(e),r=await this.rpc.request(this.service,Y.methods.MarkDirty.name,Zn.toBinary(n),t||void 0);return fr.fromBinary(r)}async GetBlock(e,t){let n=kt.create(e),r=await this.rpc.request(this.service,Y.methods.GetBlock.name,kt.toBinary(n),t||void 0);return ln.fromBinary(r)}async Unmarshal(e,t){let n=De.create(e),r=await this.rpc.request(this.service,Y.methods.Unmarshal.name,De.toBinary(n),t||void 0);return on.fromBinary(r)}async IsSubBlock(e,t){let n=Ut.create(e),r=await this.rpc.request(this.service,Y.methods.IsSubBlock.name,Ut.toBinary(n),t||void 0);return _t.fromBinary(r)}async FollowSubBlock(e,t){let n=Qt.create(e),r=await this.rpc.request(this.service,Y.methods.FollowSubBlock.name,Qt.toBinary(n),t||void 0);return xt.fromBinary(r)}async SetAsSubBlock(e,t){let n=Ve.create(e),r=await this.rpc.request(this.service,Y.methods.SetAsSubBlock.name,Ve.toBinary(n),t||void 0);return f.fromBinary(r)}async ClearRef(e,t){let n=D.create(e),r=await this.rpc.request(this.service,Y.methods.ClearRef.name,D.toBinary(n),t||void 0);return Mn.fromBinary(r)}async ClearAllRefs(e,t){let n=it.create(e),r=await this.rpc.request(this.service,Y.methods.ClearAllRefs.name,it.toBinary(n),t||void 0);return ie.fromBinary(r)}async SetRef(e,t){let n=ee.create(e),r=await this.rpc.request(this.service,Y.methods.SetRef.name,ee.toBinary(n),t||void 0);return g.fromBinary(r)}async GetExistingRef(e,t){let n=qn.create(e),r=await this.rpc.request(this.service,Y.methods.GetExistingRef.name,qn.toBinary(n),t||void 0);return Nt.fromBinary(r)}async GetAllRefs(e,t){let n=Sn.create(e),r=await this.rpc.request(this.service,Y.methods.GetAllRefs.name,Sn.toBinary(n),t||void 0);return zn.fromBinary(r)}async Detach(e,t){let n=ct.create(e),r=await this.rpc.request(this.service,Y.methods.Detach.name,ct.toBinary(n),t||void 0);return pt.fromBinary(r)}async DetachTransaction(e,t){let n=Pe.create(e),i=await this.rpc.request(this.service,Y.methods.DetachTransaction.name,Pe.toBinary(n),t||void 0);return r.fromBinary(i)}async DetachRecursive(e,t){let n=fe.create(e),r=await this.rpc.request(this.service,Y.methods.DetachRecursive.name,fe.toBinary(n),t||void 0);return dt.fromBinary(r)}async Parents(e,t){let n=wt.create(e),r=await this.rpc.request(this.service,Y.methods.Parents.name,wt.toBinary(n),t||void 0);return or.fromBinary(r)}},ji=class e extends H{service;constructor(e){super(e),this.service=new Ai(e.client)}async fetch(e){return await this.service.Fetch({},e)}async setBlock(e,t){await this.service.SetBlock(e,t)}async followRef(t,n){let r=await this.service.FollowRef(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}async getRef(e){return await this.service.GetRef({},e)}async isDirty(e){return await this.service.IsDirty({},e)}async markDirty(e){await this.service.MarkDirty({},e)}async getBlock(e){return await this.service.GetBlock({},e)}async unmarshal(e={},t){return await this.service.Unmarshal(e,t)}async isSubBlock(e){return await this.service.IsSubBlock({},e)}async followSubBlock(t,n){let r=await this.service.FollowSubBlock(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}async setAsSubBlock(e,t){await this.service.SetAsSubBlock(e,t)}async clearRef(e,t){await this.service.ClearRef(e,t)}async clearAllRefs(e){await this.service.ClearAllRefs({},e)}async setRef(e,t){await this.service.SetRef(e,t)}async getExistingRef(t,n){let r=await this.service.GetExistingRef(t,n);return r.resourceId?this.resourceRef.createResource(r.resourceId,e):null}async getAllRefs(e,t){return await this.service.GetAllRefs(e,t)}async detach(t,n){let r=await this.service.Detach(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}async detachTransaction(t){let n=await this.service.DetachTransaction({},t);return this.resourceRef.createResource(n.resourceId??0,e)}async detachRecursive(t,n){let r=await this.service.DetachRecursive(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}async parents(e){return await this.service.Parents({},e)}};const Mi={typeName:`s4wave.block.transaction.BlockTransactionResourceService`,methods:{Write:{name:`Write`,I:ce,O:Xe,kind:O.Unary},GetRootCursor:{name:`GetRootCursor`,I:l,O:et,kind:O.Unary}}},Ni=Mi.typeName;var Pi=class{rpc;service;constructor(e,t){this.service=t?.service||Ni,this.rpc=e,this.Write=this.Write.bind(this),this.GetRootCursor=this.GetRootCursor.bind(this)}async Write(e,t){let n=ce.create(e),r=await this.rpc.request(this.service,Mi.methods.Write.name,ce.toBinary(n),t||void 0);return Xe.fromBinary(r)}async GetRootCursor(e,t){let n=l.create(e),r=await this.rpc.request(this.service,Mi.methods.GetRootCursor.name,l.toBinary(n),t||void 0);return et.fromBinary(r)}},Fi=class extends H{service;constructor(e){super(e),this.service=new Pi(e.client)}async write(e,t){return await this.service.Write(e,t)}async getRootCursor(e){let t=await this.service.GetRootCursor({},e);return this.resourceRef.createResource(t.resourceId??0,ji)}};function Ii(e){return!!e?.hash?.hash?.length}var Li=class e extends H{service;constructor(e){super(e),this.service=new Oi(e.client)}async getRef(e){return await this.service.GetRef({},e)}async followRef(t,n){let r=await this.service.FollowRef(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}async getBlock(e,t){if(!Ii(e.ref)){let n=await this.getRef(t);return await this.service.GetBlock({...e,ref:n.ref?.rootRef},t)}return await this.service.GetBlock(e,t)}async putBlock(e,t){return await this.service.PutBlock(e,t)}async putBlockBatch(e,t){return await this.service.PutBlockBatch(e,t)}async getBlockExistsBatch(e,t){return await this.service.GetBlockExistsBatch(e,t)}async buildTransaction(e,t){let n=await this.service.BuildTransaction(e,t);return{transaction:this.resourceRef.createResource(n.transactionResourceId??0,Fi),cursor:this.resourceRef.createResource(n.cursorResourceId??0,ji)}}async buildTransactionAtRef(e,t){let n=await this.service.BuildTransactionAtRef(e,t);return{transaction:this.resourceRef.createResource(n.transactionResourceId??0,Fi),cursor:this.resourceRef.createResource(n.cursorResourceId??0,ji)}}async clone(t,n){let r=await this.service.Clone(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}release(e){this.service.Release({},e).catch(()=>{}),super.release()}async unmarshal(e,t){return await this.service.Unmarshal(e,t)}};const Ri=Symbol.for(`spacewave.WorldOperationRejection`);var zi=class extends Error{code;name=`WorldOperationRejection`;[Ri]=!0;static[Symbol.hasInstance](e){return e instanceof Error&&Ri in e&&e[Ri]===!0}constructor(e,t){super(t||e),this.code=e}};function Bi(e){if(e.rejectionCode)throw new zi(e.rejectionCode,e.rejectionMessage??``);if(e.errorCode===1)throw Error(`remote world operation unhandled`)}var Vi=class extends H{service;objectKey;constructor(e,t){super(e),this.service=new Ci(e.client),this.objectKey=t?.objectKey??``}getKey(){return this.objectKey}async getRootRef(e){return await this.service.GetRootRef({},e)}async setRootRef(e,t){return await this.service.SetRootRef({rootRef:e},t)}async accessWorldState(e,t){let n=await this.service.AccessWorldState({ref:e},t);return this.resourceRef.createResource(n.resourceId??0,Li)}async applyObjectOp(e,t,n,r){let i=await this.service.ApplyObjectOp({opTypeId:e,opData:t,opSender:n},r);return Bi(i),i}async incrementRev(e){return await this.service.IncrementRev({},e)}async waitRev(e,t,n){return await this.service.WaitRev({rev:e,ignoreNotFound:t},n)}getDebugInfo(){return{label:this.objectKey||void 0}}},Hi=class extends H{service;constructor(e){super(e),this.service=new xi(e.client)}async err(e){return(await this.service.Err({},e)).error||null}async valid(e){return(await this.service.Valid({},e)).valid??!1}async key(e){return(await this.service.Key({},e)).objectKey??``}async next(e){return(await this.service.Next({},e)).valid??!1}async seek(e,t){await this.service.Seek({objectKey:e},t)}async close(e){await this.service.Close({},e)}};async function Ui(e,t,n,r){if(!e.canWrite()&&t)throw Error(`EngineWorldState is read-only`);let i=await e.getEngine().newTransaction(t,n);try{let e=await r(i);return t&&await i.commit(n),e}finally{try{await i.discard()}finally{i.release()}}}var Wi=class{engine;write;ownsEngine;constructor(e,t,n=!1){this.engine=e,this.write=t,this.ownsEngine=n}getResourceRef(){return this.engine.resourceRef}getReadOnly(){return!this.write}async getSeqno(e){return{seqno:(await this.engine.getSeqno(e)).seqno??0n}}async waitSeqno(e,t){return{seqno:(await this.engine.waitSeqno(e,t)).seqno??0n}}async buildStorageCursor(e){return await this.engine.buildStorageCursor(e)}async accessWorldState(e,t){return this.engine.accessWorldState(e,t)}async openNestedWorld(e,t){return this.performOp(!1,t,n=>n.openNestedWorld(e,t))}async openOuterWorld(e){return this.performOp(!1,e,t=>t.openOuterWorld(e))}async applyWorldOp(e,t,n,r){return this.performOp(!0,r,async i=>{let a=await i.applyWorldOp(e,t,n,r);return{seqno:a.seqno??0n,sysErr:a.sysErr??!1}})}async createObject(e,t,n){return await this.performOp(!0,n,async r=>{(await r.createObject(e,t,n)).release()}),new Gi(this,e)}async getObject(e,t){return await this.performOp(!1,t,async n=>{try{var r=dr();return r.u(await n.getObject(e,t))!==null}catch(e){r.e=e}finally{r.d()}})?new Gi(this,e):null}async iterateObjects(e,t,n){let r=await this.engine.newTransaction(!1,n);try{return new qi(await r.iterateObjects(e,t,n),r)}catch(e){throw r.release(),e}}async renameObject(e,t,n){let r=Xi(n);return await this.performOp(!0,r.abortSignal,async n=>{(await n.renameObject(e,t,r)).release()}),new Gi(this,t)}async deleteObject(e,t){return{deleted:await this.performOp(!0,t,async n=>(await n.deleteObject(e,t)).deleted??!1)}}async setGraphQuad(e,t,n,r,i){await this.performOp(!0,i,async a=>{await a.setGraphQuad(e,t,n,r,i)})}async deleteGraphQuad(e,t,n,r,i){await this.performOp(!0,i,async a=>{await a.deleteGraphQuad(e,t,n,r,i)})}async lookupGraphQuads(e,t,n,r,i,a){return this.performOp(!1,a,async o=>await o.lookupGraphQuads(e,t,n,r,i,a))}async listGraphEdgeBuckets(e,t,n={}){return this.performOp(!1,n.abortSignal,async r=>await r.listGraphEdgeBuckets(e,t,n))}async getObjectBodies(e,t){return this.performOp(!1,t,async n=>await n.getObjectBodies(e,t))}async listObjectsWithType(e,t){return this.performOp(!1,t,async n=>await n.listObjectsWithType(e,t))}async listObjects(e,t){return this.performOp(!1,t,async n=>await n.listObjects(e,t))}async getObjectMetadataBatch(e,t){return this.performOp(!1,t,async n=>await n.getObjectMetadataBatch(e,t))}async deleteGraphObject(e,t){await this.performOp(!0,t,async n=>{await n.deleteGraphObject(e,t)})}async accessTypedObject(e,t){return this.engine.accessTypedObject(e,t)}performOp(e,t,n){return Ui(this,e,t,n)}canWrite(){return this.write}getEngine(){return this.engine}release(){this.ownsEngine&&!this.engine.released&&this.engine.release()}[Symbol.dispose](){this.release()}},Gi=class{engineState;objectKey;constructor(e,t){this.engineState=e,this.objectKey=t}getKey(){return this.objectKey}async getRootRef(e){return Ui(this.engineState,!1,e,async t=>{try{var n=dr();let r=n.u(await t.getObject(this.objectKey,e));if(!r)throw Error(`Object not found: ${this.objectKey}`);return await r.getRootRef(e)}catch(e){n.e=e}finally{n.d()}})}async setRootRef(e,t){return Ui(this.engineState,!0,t,async n=>{try{var r=dr();let i=r.u(await n.getObject(this.objectKey,t));if(!i)throw Error(`Object not found: ${this.objectKey}`);return await i.setRootRef(e,t)}catch(e){r.e=e}finally{r.d()}})}async accessWorldState(e,t){let n=await this.engineState.getEngine().newTransaction(!1,t);try{let r=await n.getObject(this.objectKey,t);if(!r)throw Error(`Object not found: ${this.objectKey}`);try{return new Ki(await r.accessWorldState(e,t),n)}finally{r.release()}}catch(e){throw await n.discard(t).catch(()=>{}),n.release(),e}}async applyObjectOp(e,t,n,r){return Ui(this.engineState,!0,r,async i=>{try{var a=dr();let o=a.u(await i.getObject(this.objectKey,r));if(!o)throw Error(`Object not found: ${this.objectKey}`);return await o.applyObjectOp(e,t,n,r)}catch(e){a.e=e}finally{a.d()}})}async incrementRev(e){return Ui(this.engineState,!0,e,async t=>{try{var n=dr();let r=n.u(await t.getObject(this.objectKey,e));if(!r)throw Error(`Object not found: ${this.objectKey}`);return await r.incrementRev(e)}catch(e){n.e=e}finally{n.d()}})}async waitRev(e,t,n){for(;;){let r=await Ui(this.engineState,!1,n,async e=>{try{var r=dr();let{seqno:i}=await e.getSeqno(n),a=r.u(await e.getObject(this.objectKey,n));if(!a&&!t)throw Error(`Object not found: ${this.objectKey}`);return{seqno:i,root:await a?.getRootRef(n)}}catch(e){r.e=e}finally{r.d()}});if(r.root&&(r.root.rev??0n)>=e)return{rev:r.root.rev};await this.engineState.getEngine().waitSeqno((r.seqno??0n)+1n,n)}}release(){}[Symbol.dispose](){}},Ki=class extends Li{cursor;tx;releasedCursor=!1;constructor(e,t){super(e.resourceRef),this.cursor=e,this.tx=t}release(e){this.releasedCursor||(this.releasedCursor=!0,this.cursor.release(e),this.tx.discard(e).catch(()=>{}).finally(()=>{this.tx.release()}))}},qi=class extends Hi{iterator;tx;closed=!1;constructor(e,t){super(e.resourceRef),this.iterator=e,this.tx=t}async close(e){if(!this.closed)try{await this.iterator.close(e)}finally{this.release()}}release(){this.closed||(this.closed=!0,this.iterator.release(),this.tx.release())}},Ji=class e extends H{service;readOnly;constructor(e,t){super(e),this.service=new pi(e.client),this.readOnly=t?.readOnly??!1}getResourceRef(){return this.resourceRef}getReadOnly(){return this.readOnly}async getSeqno(e){return{seqno:(await this.service.GetSeqno({},e)).seqno??0n}}async waitSeqno(e,t){return{seqno:(await this.service.WaitSeqno({seqno:e},t)).seqno??0n}}async compareObjectRecords(e,t){return this.service.CompareObjectRecords({bases:e},t)}async getObjectRootRefs(e,t){return(await this.service.GetObjectRootRefsBatch({objectKeys:e},t)).rootRefs??[]}async buildStorageCursor(e){let t=await this.service.BuildStorageCursor({},e);return this.resourceRef.createResource(t.resourceId??0,Li)}async accessWorldState(e,t){let n=await this.service.AccessWorldState({ref:e},t);return this.resourceRef.createResource(n.resourceId??0,Li)}async openNestedWorld(t,n){let r=await this.service.OpenNestedWorld({objectKey:t},n);return this.resourceRef.createResource(r.resourceId??0,e,{readOnly:!0})}async openOuterWorld(e){let t=await this.service.OpenOuterWorld({},e);return new Wi(this.resourceRef.createResource(t.resourceId??0,Zi),!0,!0)}async createObject(e,t,n){let r=await this.service.CreateObject({objectKey:e,rootRef:t},n);return this.resourceRef.createResource(r.resourceId??0,Vi,{objectKey:r.objectKey})}async getObject(e,t){let n=await this.service.GetObject({objectKey:e},t);return n.found?this.resourceRef.createResource(n.resourceId??0,Vi,{objectKey:n.objectKey}):null}async iterateObjects(e,t,n){let r=await this.service.IterateObjects({prefix:e,reversed:t},n);return this.resourceRef.createResource(r.resourceId??0,Hi)}async renameObject(e,t,n){let r=Xi(n),i=await this.service.RenameObject({oldObjectKey:e,newObjectKey:t,descendants:r.descendants},r.abortSignal);return this.resourceRef.createResource(i.resourceId??0,Vi,{objectKey:i.objectKey})}async deleteObject(e,t){return{deleted:(await this.service.DeleteObject({objectKey:e},t)).deleted??!1}}async setGraphQuad(e,t,n,r,i){await this.service.SetGraphQuad({quad:{subject:e,predicate:t,obj:n,label:r}},i)}async deleteGraphQuad(e,t,n,r,i){await this.service.DeleteGraphQuad({quad:{subject:e,predicate:t,obj:n,label:r}},i)}async lookupGraphQuads(e,t,n,r,i,a){return await this.service.LookupGraphQuads({filter:{subject:e,predicate:t,obj:n,label:r},limit:i},a)}async listGraphEdgeBuckets(e,t,n={}){return await this.service.ListGraphEdgeBuckets({originObjectKeys:e,predicate:n.predicate,limitPerOrigin:t,direction:n.direction},n.abortSignal)}async getObjectBodies(e,t){if(e.length===0)return[];for(let n=0;n<=3;n++){let n=await this.readObjectBodyPages(e,t);if(n)return n}throw Error(`The World changed on every attempt to read object bodies.`)}async readObjectBodyPages(e,t){let n=[],r,i=this.service.GetObjectBodiesBatch({objectKeys:e},t);for await(let e of i){let t=e.worldSeqno??0n;if(r??=t,t!==r)return null;n.push(...e.bodies??[])}return n}async listObjectsWithType(e,t){return(await this.service.ListObjectsWithType({typeId:e},t)).objectKeys??[]}async listObjects(e,t){return this.service.ListObjects(e,t)}async getObjectMetadataBatch(e,t){return(await this.service.GetObjectMetadataBatch({objectKeys:e},t)).metadata??[]}async deleteGraphObject(e,t){await this.service.DeleteGraphObject({objectKey:e},t)}async applyWorldOp(e,t,n,r){let i=await this.service.ApplyWorldOp({opTypeId:e,opData:t,opSender:n},r);return Bi(i),{seqno:i.seqno??0n,sysErr:i.sysErr??!1}}async accessTypedObject(e,t){let n=await new Ei(this.resourceRef.client).AccessTypedObject({objectKey:e},t);return{resourceId:n.resourceId??0,typeId:n.typeId??``}}getDebugInfo(){return{label:this.readOnly?`(read-only)`:void 0}}},Yi=class extends Ji{txService;constructor(e,t){super(e,t),this.txService=new yi(e.client)}async commit(e){await this.txService.Commit({},e)}async discard(e){await this.txService.Discard({},e)}};function Xi(e){return e?e instanceof AbortSignal?{abortSignal:e}:e:{}}var Zi=class extends H{service;watchService;constructor(e){super(e),this.service=new di(e.client),this.watchService=new gi(e.client)}async getEngineInfo(e){return await this.service.GetEngineInfo({},e)}async sync(e){return(await this.service.Sync({},e)).fenced??!1}async getWorldRootSnapshot(e){return await this.service.GetWorldRootSnapshot({},e)}watchWorldRootSnapshots(e){return this.service.WatchWorldRootSnapshots({},e)}async newTransaction(e,t){let n=await this.service.NewTransaction({write:e},t);return this.resourceRef.createResource(n.resourceId??0,Yi,{readOnly:n.readOnly})}async executeWorldOp(e,t,n){return this.service.ExecuteWorldOp({opTypeId:e,opData:t},n)}async getSeqno(e){return await this.service.GetSeqno({},e)}async waitSeqno(e,t){return await this.service.WaitSeqno({seqno:e},t)}async buildStorageCursor(e){let t=await this.service.BuildStorageCursor({},e);return this.resourceRef.createResource(t.resourceId??0,Li)}async accessWorldState(e,t){let n=await this.service.AccessWorldState({ref:e},t);return this.resourceRef.createResource(n.resourceId??0,Li)}async accessTypedObject(e,t){let n=await new Ei(this.resourceRef.client).AccessTypedObject({objectKey:e},t);return{resourceId:n.resourceId??0,typeId:n.typeId??``}}watchWorldState(e){return Qi(this.watchService,this.resourceRef,e)}};function Qi(e,t,n){let r=!1,i=[],a=new AbortController,o,s=()=>{r=!0,a.abort(),o?.abort(),i.forEach(e=>e[Symbol.dispose]()),i.length=0};return(async()=>{try{let s=e.WatchWorldState({},a.signal);for await(let e of s){if(r)break;o?.abort(),i.forEach(e=>e[Symbol.dispose]()),i.length=0,o=new AbortController;let a=o.signal,s=t.createResource(e.resourceId??0,Ji),c=e=>(e&&i.push(e),e);try{await n(s,a,c)}catch(e){e instanceof Error&&e.name!==`AbortError`&&console.error(`Error in watchWorldState callback:`,e)}finally{s[Symbol.dispose]()}}}catch(e){!r&&!(e instanceof Error&&e.name===`AbortError`)&&console.error(`WatchWorldState stream error:`,e)}finally{s()}})(),s}function $i(e){return`${ea}${aa(`application`,e)}/metadata`}const ea=`sync/v1/`,ta=new TextEncoder;new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0});function na(e,t,n){return`${ea}${aa(`application`,e)}/${aa(`scope`,t)}/collections/${aa(`collection`,n)}`}function ra(e,t){return`${ea}${aa(`application`,e)}/${aa(`scope`,t)}/receipts`}function ia(e){return oa(`record key`,e,1024)}function aa(e,t){return sa(oa(e,t,256))}function oa(e,t,n){if(t.length===0)throw TypeError(`invalid ${e}: must be nonempty`);if(!t.isWellFormed())throw TypeError(`invalid ${e}: must be well-formed Unicode`);let r=ta.encode(t);if(r.length>n)throw TypeError(`invalid ${e}: exceeds ${n} UTF-8 bytes`);return r}function sa(e){let t=``;for(let n of e)t+=(n>>4).toString(16)+(n&15).toString(16);return t}function ca(e){if(!e.id||!Number.isSafeInteger(e.version)||e.version<1||e.version>4294967295)throw new R(`VALIDATION`,`Application ID and positive version are required`);return e}async function la(e,t,n){try{z(t);let r=await e[`~standard`].validate(t);if(r.issues)throw new R(`VALIDATION`,`${n} does not match its schema`);return z(r.value),r.value}catch(e){throw e instanceof R?e:new R(`VALIDATION`,`${n} must be a valid JSON value matching its schema`)}}const ua=new TextEncoder,da=new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0});var fa=class{state;options;stores=new Map;released=!1;writeCount=0;writeBytes=0;constructor(e,t){this.state=e,this.options=t}async store(e){this.checkOpen();let t=this.stores.get(e);return t||(t=(async()=>{let t=await li(this.state,e,this.options.write,this.options.signal);if(t)try{return{store:t,tx:await t.openTransaction(this.options.write,this.options.signal)}}catch(e){throw t.release(),e}})(),this.stores.set(e,t)),(await t)?.tx}collections(e,t=[]){return{collection:n=>{let{schema:r,instance:i,limits:a,signal:o}=this.options;if(!Object.hasOwn(r.collections,n))throw new R(`MISSING_COLLECTION`,`Collection is not declared`);let s=r.collections[n],c=async r=>(this.checkOpen(),await this.options.authorize(e,n,r),t.some(e=>e.collection===n&&e.action===r)||t.push({collection:n,action:r}),this.store(na(i,e.scope,n)));return{get:async e=>{let t=ha(e),n=await(await c(`read`))?.get(t,o);if(n?.found&&n.data.length>a.maxRecordBytes)throw new R(`QUERY_LIMIT`,`Record exceeds the configured byte limit`);return n?.found?V(n.data):void 0},scan:async(e={})=>{let t=e.prefix??``,n=t?ha(t):new Uint8Array,r=await c(`read`);return r?(await r.scanRecords(n,{maxRecords:a.maxRecords,maxBytes:a.maxSnapshotBytes},o)).map(e=>({key:da.decode(e.key),value:V(e.value)})):[]},put:async(e,t)=>{let n=ha(e),r=await c(`write`);if(!this.options.write||!r)throw new R(`DENIED`,`Transaction is read-only`);let i=B(await la(s,t,`Record`));if(i.length>a.maxRecordBytes)throw new R(`QUERY_LIMIT`,`Record exceeds the configured byte limit`);this.trackWrite(n.length+i.length),await r.set(n,i,o)},delete:async e=>{let t=ha(e),n=await c(`write`);if(!this.options.write||!n)throw new R(`DENIED`,`Transaction is read-only`);this.trackWrite(t.length),await n.delete(t,o)}}}}}async execute(e,t,n){if(this.checkOpen(),!n||n.length>128)throw new R(`VALIDATION`,`Request ID must contain 1 to 128 characters`);let{schema:r,instance:i,signal:a}=this.options,o=t.kind!==`get`&&t.kind!==`scan`;if(o&&!this.options.write)throw new R(`DENIED`,`Transaction is read-only`);let s=this.fingerprint(t);if(ua.encode(s).length>this.options.limits.maxRecordBytes)throw new R(`QUERY_LIMIT`,`Operation exceeds the configured byte limit`);let c=[],l=this.collections(e,c);`collection`in t&&await this.options.authorize(e,t.collection,o?`write`:`read`);let u=o?await this.readAcceptance(e,t,n):void 0;if(u)return{value:u.value,duplicate:!0};let d=o?await this.store(ra(i,e.scope)):void 0,f;if(t.kind===`mutate`){let n=Object.hasOwn(r.mutations,t.name)?r.mutations[t.name]:void 0,i=Object.hasOwn(this.options.mutations,t.name)?this.options.mutations[t.name]:void 0;if(!n||!i)throw new R(`VALIDATION`,`Mutation is not declared and implemented`);let o=await la(n.input,t.input,`Mutation input`),s=await pa({...l,principal:e,scope:e.scope,signal:a},e=>i(e,o));if(f=await la(n.output,s,`Mutation output`),B(f).length>this.options.limits.maxRecordBytes)throw new R(`QUERY_LIMIT`,`Mutation result exceeds the configured byte limit`)}else{let e=l.collection(t.collection);switch(t.kind){case`get`:{let n=await e.get(t.key);f=n===void 0?{found:!1}:{found:!0,value:n};break}case`scan`:f=await e.scan({prefix:t.prefix});break;case`put`:await e.put(t.key,t.value),f=null;break;case`delete`:await e.delete(t.key),f=null}}return d&&await this.recordAcceptance(e,t,n,f,c),{value:f,duplicate:!1}}async upgrade(e,t,n,r){if(this.checkOpen(),!n||n.length>128)throw new R(`VALIDATION`,`Request ID must contain 1 to 128 characters`);if(ua.encode(this.fingerprint(t)).length>this.options.limits.maxRecordBytes)throw new R(`QUERY_LIMIT`,`Upgrade exceeds the input byte limit`);if(!this.options.write)throw new R(`DENIED`,`Transaction is read-only`);if(await this.readAcceptance(e,t,n))return;let i=[];await r(this.collections(e,i)),await this.recordAcceptance(e,t,n,null,i)}async recordAcceptance(e,t,n,r,i){let{instance:a,signal:o}=this.options;await(await this.store($i(a))).set(ua.encode(`scope/${z(e.scope)}`),B(e.scope),o),await(await this.store(ra(a,e.scope))).set(ua.encode(z([e.subject,n])),B({fingerprint:this.fingerprint(t),result:r,accesses:i}),o)}async readAcceptance(e,t,n){this.checkOpen();let r=await this.store(ra(this.options.instance,e.scope)),i=ua.encode(z([e.subject,n])),a=await r?.get(i,this.options.signal);if(!a?.found)return;let o=V(a.data);if(o.fingerprint!==this.fingerprint(t))throw new R(`CONFLICT`,`Request ID was already used for different input`,n);for(let t of o.accesses)await this.options.authorize(e,t.collection,t.action);return{value:o.result}}fingerprint(e){return z({application:this.options.schema.id,version:this.options.schema.version,revision:this.options.revision??``,operation:e})}async flush(){this.checkOpen();let e=await Promise.all(this.stores.values());for(let t of e)await t?.tx.commit(this.options.signal)}async release(){if(this.released)return;this.released=!0;let e=await Promise.allSettled(this.stores.values());await Promise.all(e.map(async e=>{if(e.status===`fulfilled`&&e.value)try{await e.value.tx.discard()}catch{}finally{e.value.store.release()}}))}trackWrite(e){if(this.writeCount++,this.writeBytes+=e,this.writeCount>this.options.limits.maxRecords||this.writeBytes>this.options.limits.maxSnapshotBytes)throw new R(`QUERY_LIMIT`,`Mutation exceeds the transaction data limit`)}checkOpen(){if(this.released)throw new R(`CLOSED`,`Transaction is closed`);this.options.signal.throwIfAborted()}};async function pa(e,t){return ma(n=>t({...e,...n(e)}))}async function ma(e){let t=!0,n=new Set,r=e=>{if(!t)return Promise.reject(new R(`CLOSED`,`Mutation has ended`));let r=e();return n.add(r),r.then(()=>n.delete(r),()=>n.delete(r)),r};try{let t=await e(e=>({collection:t=>{let n=e.collection(t);return{get:e=>r(()=>n.get(e)),scan:e=>r(()=>n.scan(e)),put:(e,t)=>r(()=>n.put(e,t)),delete:e=>r(()=>n.delete(e))}}}));if(n.size)throw new R(`VALIDATION`,`Await every collection operation before returning`);return t}finally{t=!1,await Promise.allSettled(n)}}function ha(e){try{return ia(e)}catch{throw new R(`VALIDATION`,`Record key must be nonempty UTF-8 within 1024 bytes`)}}async function ga(e,t){let n=new Map,r=new Set,i=!0,a=(e,t,r)=>{let i=n.get(e),a=i.records.get(t);a||(a={paths:new Map,shapes:new Map},i.records.set(t,a));let o=(e,t=!0)=>{(t?a.paths:a.shapes).set(JSON.stringify(e),e)};if(r!==void 0)return va(V(B(r)),[],o)},o={collection:t=>{if(!i)throw new R(`CLOSED`,`Query evaluation has ended`);let o=e.collection(t);n.has(t)||n.set(t,{prefixes:new Set,records:new Map});let s=e=>{if(!i)return Promise.reject(new R(`CLOSED`,`Query evaluation has ended`));let t=e();return r.add(t),t.finally(()=>r.delete(t)).catch(()=>{}),t};return{get:e=>s(async()=>a(t,e,await o.get(e))),scan:(e={})=>s(async()=>(n.get(t).prefixes.add(e.prefix??``),(await o.scan(e)).map(e=>({key:e.key,value:a(t,e.key,e.value)}))))}}};try{let e=await t(o);if(r.size)throw new R(`VALIDATION`,`Query must await every snapshot read`);return{value:V(B(e)),dependencies:[...n].map(([e,t])=>({collection:e,prefixes:[...t.prefixes],records:[...t.records].map(([e,{paths:t,shapes:n}])=>({key:e,paths:[...t.values()],shapes:[...n.values()]}))}))}}finally{i=!1,await Promise.allSettled(r)}}var _a=class{collections;constructor(e){this.collections=new Map(e.map(e=>[e.collection,{prefixes:e.prefixes,records:new Map(e.records.map(e=>[e.key,e]))}]))}watchesKey(e,t){let n=this.collections.get(e);return!!n&&(n.records.has(t)||n.prefixes.some(e=>t.startsWith(e)))}affected(e){let t=this.collections.get(e.collection);if(!t)return!1;let n=e.before===void 0!=(e.after===void 0);if(n&&t.prefixes.some(t=>e.key.startsWith(t)))return!0;let r=t.records.get(e.key);return r?n?!0:r.paths.some(t=>!ba(ya(e.before,t),ya(e.after,t)))||r.shapes.some(t=>xa(ya(e.before,t))!==xa(ya(e.after,t))):!1}unknown(e){return this.collections.has(e)}};function va(e,t,n){return typeof e!=`object`||!e?(n(t),e):(n(t,!1),new Proxy(e,{get(e,r,i){if(typeof r!=`string`)return Reflect.get(e,r,i);let a=[...t,r],o=Reflect.get(e,r,i);return typeof o==`function`?o:va(o,a,n)},has(e,r){return n(t),Reflect.has(e,r)},ownKeys(e){return n(t),Reflect.ownKeys(e)},getOwnPropertyDescriptor(e,r){typeof r==`string`&&n([...t,r]);let i=Reflect.getOwnPropertyDescriptor(e,r);return i&&`value`in i&&typeof r==`string`?{...i,value:va(i.value,[...t,r],n)}:i},set(){throw new R(`VALIDATION`,`Queries cannot mutate snapshot values`)},deleteProperty(){throw new R(`VALIDATION`,`Queries cannot mutate snapshot values`)},defineProperty(){throw new R(`VALIDATION`,`Queries cannot mutate snapshot values`)},setPrototypeOf(){throw new R(`VALIDATION`,`Queries cannot mutate snapshot values`)},preventExtensions(){throw new R(`VALIDATION`,`Queries cannot mutate snapshot values`)}}))}function ya(e,t){let n=e;for(let e of t){if(typeof n!=`object`||!n)return;n=n[e]}return n}function ba(e,t){return e===void 0||t===void 0?e===t:z(e)===z(t)}function xa(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}var Sa=class{options;engine;controller=new AbortController;producers=new Map;active=new Set;closing;counts={snapshots:0,processedSeqno:0n,evaluations:0,keyReads:0,rangeScans:0};diagnostics(){return{...this.counts}}measureReads(e){return{collection:t=>{let n=e.collection(t);return{get:async e=>(this.counts.keyReads++,n.get(e)),scan:async e=>(this.counts.rangeScans++,n.scan(e))}}}}constructor(e){this.options=e,this.engine=new Zi(e.engine.resourceRef.createRef(e.engine.id))}async*watch(e,t,n){let r=AbortSignal.any([this.controller.signal,...[n,this.options.signal,this.options.principal.signal].filter(e=>e!==void 0)]);r.throwIfAborted();let i=await la(e.input,V(B(t)),`Query input`);r.throwIfAborted();let a=z(i),o=this.producers.get(e);o||(o=new Map,this.producers.set(e,o));let s=o.get(a);s||(s=this.start(e,i,()=>{o.get(a)===s&&o.delete(a),!o.size&&this.producers.get(e)===o&&this.producers.delete(e)}),o.set(a,s)),s.users++;let c=s.state.getIterable()[Symbol.asyncIterator](),l=()=>{c.return?.()};r.addEventListener(`abort`,l,{once:!0});try{for(;;){let e=await c.next();if(e.done||r.aborted)break;this.checkPrincipal();for(let t of e.value.collections)await this.options.authorize(this.options.principal,t,`read`);r.throwIfAborted();let t=e.value.snapshot;if(t.status===`error`){yield t;break}yield{...t,value:V(B(t.value))}}}finally{r.removeEventListener(`abort`,l),await c.return?.(),--s.users===0&&(o.get(a)===s&&o.delete(a),!o.size&&this.producers.get(e)===o&&this.producers.delete(e),s.controller.abort(),await s.done)}}close(){return this.closing??=(async()=>{this.controller.abort(),await Promise.allSettled(this.active),this.engine.release()})()}start(e,t,n){let r,i=new zr(async()=>r,{mostRecentOnly:!0}),a=new AbortController,o=AbortSignal.any([this.controller.signal,a.signal,...[this.options.signal,this.options.principal.signal].filter(e=>e!==void 0)]),s=(async()=>{try{for await(let n of this.evaluate(e,t,o))r=n,i.pushChangeEvent(n)}catch(e){o.aborted||(r={snapshot:{status:`error`,error:Nr(e)},collections:[]},i.pushChangeEvent(r))}finally{n()}})();return this.active.add(s),s.finally(()=>this.active.delete(s)),{controller:a,state:i,done:s,users:0}}async*evaluate(e,t,n){let r,i,a=new Map,o=[],s=0n;for(;;){n.throwIfAborted(),this.checkPrincipal();let c=await this.engine.newTransaction(!1,n),l=new fa(c,{...this.options,write:!1,signal:n}),u;try{await this.options.checkState?.(c,n),s=(await c.getSeqno(n)).seqno,this.counts.snapshots++;let d=this.measureReads(l.collections(this.options.principal)),f=!r;if(r){let e=await this.roots(c,r.dependencies,n),t=r.dependencies.filter((t,n)=>e[n].signature!==o[n].signature);if(t.length){f=e.some((e,t)=>e.type!==o[t].type);let s=f?{}:await c.compareObjectRecords(t.map(({collection:e})=>{let t=r.dependencies.findIndex(t=>t.collection===e);return{objectKey:na(this.options.instance,this.options.principal.scope,e),rootRef:o[t].ref}}),n);for(let e=0;!f&&e<t.length;e++){let n=t[e],r=s.changes?.[e];if(!r||r.unknown){f=!0;break}let o=d.collection(n.collection),c=a.get(n.collection),l=new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}),u=new Set(r.keys?.map(e=>l.decode(e)));for(let e of u){if(!i.watchesKey(n.collection,e))continue;let t=await o.get(e);if(i.affected({collection:n.collection,key:e,before:c.get(e),after:t})){f=!0;break}c.set(e,t)}}}o=e}if(f){if(a=new Map,this.counts.evaluations++,r=await ga(Ca(d,a,this.options.limits.maxSnapshotBytes,this.options.limits.maxRecords),n=>e.evaluate(n,V(B(t)))),i=new _a(r.dependencies),o=await this.roots(c,r.dependencies,n),B(r.value).length>this.options.limits.maxSnapshotBytes)throw new R(`QUERY_LIMIT`,`Query result exceeds the configured byte limit`);u={snapshot:{status:`current`,value:r.value,seqno:s},collections:r.dependencies.map(({collection:e})=>e)}}}finally{await l.release();try{await c.discard()}finally{c.release()}}this.counts.processedSeqno=s,u&&(yield u),await this.engine.waitSeqno(s+1n,n)}}async roots(e,t,n){let r=t.map(({collection:e})=>na(this.options.instance,this.options.principal.scope,e));for(let e of t)await this.options.authorize(this.options.principal,e.collection,`read`);let i=await e.getObjectRootRefs(r,n);return Promise.all(i.map(async(t,i)=>{let a=t.exists?await ri(e,r[i],n):``;return{type:a,ref:t.rootRef,signature:`${a}:${Array.from(o.toBinary(t)).join(`,`)}`}}))}checkPrincipal(){let e=this.options.principal;if(!e.subject||!e.scope||e.signal?.aborted||e.expiresAt!==void 0&&(!Number.isFinite(e.expiresAt)||e.expiresAt<=Date.now()))throw new R(`AUTHENTICATION`,`Authentication is no longer valid`)}};function Ca(e,t,n,r){let i=0,a=0,o=(e,o,s)=>{let c=t.get(e);if(c||(c=new Map,t.set(e,c)),!c.has(o)&&(i+=B([e,o,s??null]).length,++a>r||i>n))throw new R(`QUERY_LIMIT`,`Query reads exceed the configured byte limit`);c.set(o,s)};return{collection(n){let r=e.collection(n);return t.has(n)||t.set(n,new Map),{async get(e){let t=await r.get(e);return o(n,e,t),t},async scan(e){let t=await r.scan(e);for(let e of t)o(n,e.key,e.value);return t}}}}}const wa=new TextEncoder,Ta=new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}),Ea=wa.encode(`version`);var Da=class{options;schema;instance;signal;limits;engine;controller=new AbortController;active=new Set;queries=new Map;functionQueries=new Set;closing;constructor(e){this.options=e,this.schema=ca(e.schema),this.instance=e.instance??this.schema.id;try{ra(this.instance,`schema`);for(let[e,t]of Object.entries(this.schema.collections))if(na(this.instance,`schema`,e),t[`~standard`]?.version!==1)throw Error(`invalid validator`);for(let[t,n]of Object.entries(this.schema.mutations))if(!Object.hasOwn(e.mutations,t)||n.input[`~standard`]?.version!==1||n.output[`~standard`]?.version!==1)throw Error(`invalid mutation`)}catch{throw new R(`VALIDATION`,`Schema requires valid names, Standard Schema v1 validators, and every mutation handler`)}this.signal=this.controller.signal,this.limits={maxRecords:e.limits?.maxRecords??1e4,maxSnapshotBytes:e.limits?.maxSnapshotBytes??8388608,maxRecordBytes:e.limits?.maxRecordBytes??262144};for(let e of Object.values(this.limits))if(!Number.isSafeInteger(e)||e<1)throw new R(`VALIDATION`,`Limits must be positive integers`);this.engine=new Zi(e.engine.resourceRef.createRef(e.engine.id))}async initialize(e){let t=await this.engine.newTransaction(!0,this.signal),n=this.transaction(t,!0,this.signal,!0);try{let r=await n.store($i(this.instance));if(!r)throw Error(`missing metadata store`);let i=await r.get(Ea,this.signal),a=i.found?V(i.data):void 0;if(a&&a.application!==this.schema.id)throw new R(`SCHEMA_MISMATCH`,`This dataset belongs to a different application`);if(a&&a.version!==this.schema.version){if(!e||e.from!==a.version)throw new R(`SCHEMA_MISMATCH`,`Stored version differs; supply an explicit maintenance migration`);await e.run({signal:this.signal,scopes:async()=>(await r.scanRecords(wa.encode(`scope/`),{maxRecords:this.limits.maxRecords,maxBytes:this.limits.maxSnapshotBytes},this.signal)).map(e=>V(e.value)),scope:e=>n.collections({subject:`admin`,scope:e})})}await r.set(Ea,B({application:this.schema.id,version:this.schema.version}),this.signal),await n.flush(),await t.commit(),await this.engine.sync()}finally{await n.release();try{await t.discard()}finally{t.release()}}}async authorize(e,t,n,r=!1){if(this.checkPrincipal(e),!Object.hasOwn(this.schema.collections,t))throw new R(`MISSING_COLLECTION`,`Collection is not declared`);if(!r&&!await this.options.authorize({principal:e,scope:e.scope,collection:t,action:n}))throw new R(`DENIED`,`Collection ${n} is not authorized`)}async openCollection(e,t){try{await this.authorize(e,t,`read`)}catch(n){if(!(n instanceof R)||n.code!==`DENIED`)throw n;await this.authorize(e,t,`write`)}}execute(e,t,n={},r=!1){if(this.closing)return Promise.reject(new R(`CLOSED`,`Server is closed`));let i=this.run(e,t,n,r);return this.active.add(i),i.finally(()=>this.active.delete(i)).catch(()=>{}),i}access(e){let t={...e},n=this,r,i=0;return{...Lr((e,n)=>this.execute(t,e,n)),async*watch(e,a,o){if(n.closing)throw new R(`CLOSED`,`Server is closed`);let s=r??=new Sa({schema:n.schema,instance:n.instance,mutations:n.options.mutations,engine:n.engine,limits:n.limits,principal:t,signal:n.signal,authorize:(e,t,r)=>n.authorize(e,t,r)});n.functionQueries.add(s),i++;try{yield*s.watch(e,a,o)}finally{--i===0&&(r=void 0,n.functionQueries.delete(s),await s.close())}}}}close(){return this.closing??=(async()=>{this.controller.abort(new R(`CLOSED`,`Server is closing`)),await Promise.all(Array.from(this.functionQueries,e=>e.close())),await Promise.allSettled(this.active),this.engine.release()})(),this.closing}async*watch(e,t,n,r){if(this.closing)throw new R(`CLOSED`,`Server is closed`);let i=AbortSignal.any([this.signal,r,...e.signal?[e.signal]:[]]),a=Promise.withResolvers();this.active.add(a.promise);let o,s,c=()=>{s?.return?.()},l=z([e.scope,t,n]);try{for(await this.authorize(e,t,`read`),i.throwIfAborted(),o=this.queries.get(l)??this.startQuery(l,e.scope,t,n),o.users++,s=o.state.getIterable()[Symbol.asyncIterator](),i.addEventListener(`abort`,c,{once:!0});;){let n=await s.next();if(n.done||i.aborted)break;if(await this.authorize(e,t,`read`),i.throwIfAborted(),`error`in n.value)throw n.value.error;yield n.value.entries}}finally{i.removeEventListener(`abort`,c),await s?.return?.(),o&&--o.users===0&&(this.queries.get(l)===o&&this.queries.delete(l),o.controller.abort()),a.resolve(),this.active.delete(a.promise)}}startQuery(e,t,n,r){let i,a={controller:new AbortController,state:new zr(async()=>i,{mostRecentOnly:!0}),users:0};this.queries.set(e,a);let o=AbortSignal.any([this.signal,a.controller.signal]),s=e=>{i=e,a.state.pushChangeEvent(e)},c=(async()=>{try{for await(let e of this.watchQuery(t,n,r,o))s({entries:e})}catch(e){o.aborted||s({error:Nr(e)})}finally{this.queries.get(e)===a&&this.queries.delete(e)}})();return this.active.add(c),c.finally(()=>this.active.delete(c)).catch(()=>{}),a}async*watchQuery(e,t,n,r){let i;try{let a=na(this.instance,e,t),o=n?this.recordKey(n):new Uint8Array,s=!1;for(;;){r.throwIfAborted();let e=await this.engine.getSeqno(r),t=await this.engine.newTransaction(!1,r),n=!1;try{let e=await t.getObject(a,r);if(n=e!==null,e?.release(),n&&await ri(t,a,r)!==`kv/store`)throw new ci}finally{try{await t.discard()}finally{t.release()}}if(n)break;s||=(yield[],!0),await this.engine.waitSeqno((e.seqno??0n)+1n,r)}let c=await this.engine.accessTypedObject(a,r);i=this.engine.resourceRef.createResource(c.resourceId,Yr);for await(let e of i.watchRecords(o,{maxRecords:this.limits.maxRecords,maxBytes:this.limits.maxSnapshotBytes},r))yield e.map(e=>({key:Ta.decode(e.key),value:V(e.value)}))}catch(e){if(e instanceof Jr)throw new R(`QUERY_LIMIT`,e.message);if(!r.aborted)throw Nr(e)}finally{i?.release()}}checkPrincipal(e){if(!e.subject||!e.scope||e.signal?.aborted||e.expiresAt!==void 0&&(!Number.isFinite(e.expiresAt)||e.expiresAt<=Date.now()))throw new R(`AUTHENTICATION`,`Authentication is no longer valid`);try{if(ra(this.instance,e.scope),ia(e.subject).length>256)throw Error(`invalid subject`)}catch{throw new R(`AUTHENTICATION`,`Principal subject and scope must be valid identities within 256 UTF-8 bytes`)}}async run(e,t,n,r){let i,a,o=!1,s=t.kind!==`get`&&t.kind!==`scan`,c=n.requestId??Sr(),l=AbortSignal.any([this.signal,...[e.signal,n.signal].filter(e=>!!e)]);try{this.checkPrincipal(e),l.throwIfAborted(),i=await this.engine.newTransaction(s,l),a=this.transaction(i,s,l,r);let n=await a.execute(e,t,c);return this.checkPrincipal(e),l.throwIfAborted(),s&&!n.duplicate&&(await a.flush(),l.throwIfAborted(),o=!0,await i.commit()),s&&(await a.release(),a=void 0,await i.discard(),i.release(),i=void 0,await this.engine.sync()),n.value}catch(t){throw t instanceof ci?new R(`SCHEMA_MISMATCH`,t.message):o?new R(`UNCERTAIN`,`Acceptance could not be confirmed; retry the same request ID and input`,c):t instanceof Jr?new R(`QUERY_LIMIT`,t.message):l.aborted?(this.checkPrincipal(e),new R(this.signal.aborted?`CLOSED`:`UNAVAILABLE`,`Operation was canceled`)):Nr(t)}finally{if(await a?.release(),i)try{await i.discard()}catch{}finally{i.release()}}}transaction(e,t,n,r){return new fa(e,{schema:this.schema,instance:this.instance,mutations:this.options.mutations,limits:this.limits,write:t,signal:n,authorize:(e,t,n)=>this.authorize(e,t,n,r)})}recordKey(e){try{return ia(e)}catch{throw new R(`VALIDATION`,`Record key must be nonempty UTF-8 within 1024 bytes`)}}};function Oa(e){let t=new AbortController;return e&&(e.aborted?t.abort():e.addEventListener(`abort`,()=>t.abort(),{once:!0})),t}function ka(e=500){return()=>e}var Aa=class{fn;result;get canceled(){return this._canceled}_backoffFn;_errorCb;_abortSignal;_abortListener;_canceled;_resolve;_reject;_currError;_cancelRetry;_setTimeout;_clearTimeout;constructor(e,t){this.fn=e,this._abortSignal=t?.abortSignal,this._abortSignal&&(this._abortListener=()=>this.cancel(),this._abortSignal.addEventListener(`abort`,this._abortListener,{once:!0})),this._backoffFn=t?.backoffFn||ka(),this._errorCb=t?.errorCb??(e=>{console.warn(`Retry: retrying after error`,{error:e})}),this._setTimeout=t?.setTimeout||setTimeout.bind(globalThis),this._clearTimeout=t?.clearTimeout||clearTimeout.bind(globalThis),this.result=new Promise((e,t)=>{this._resolve=e,this._reject=t}),this.result.catch(()=>{}),queueMicrotask(this._execute.bind(this))}cancel(){this._canceled||(this._canceled=!0,this._clearAbortListener(),this._cancelRetry&&this._cancelRetry(),this._reject&&this._reject(this._currError))}async _execute(){do try{let e=this._abortSignal;if(this._canceled||e?.aborted){this.cancel();return}let t=await this.fn();this._resolve&&(this._clearAbortListener(),this._resolve(t));return}catch(e){let t=this._abortSignal;if(this._currError=e,this._canceled||t?.aborted){this._reject&&(this._clearAbortListener(),this._reject(e));return}this._errorCb&&this._errorCb(e),await new Promise(e=>{let n=null;if(t?.aborted){e();return}this._cancelRetry=()=>{n&&this._clearTimeout(n),e()},n=this._setTimeout(()=>{this._cancelRetry=void 0,e()},this._backoffFn())})}while(1)}_clearAbortListener(){this._abortSignal&&this._abortListener&&(this._abortSignal.removeEventListener(`abort`,this._abortListener),this._abortListener=void 0)}};function ja(e,t,n){return new Aa(t.bind(void 0,e),{...n,abortSignal:e}).result}const Ma=Symbol.for(`bldr.ResourceFailureError`);var X=class extends Error{failure;name=`ResourceFailureError`;[Ma]=!0;static[Symbol.hasInstance](e){return e instanceof Error&&Ma in e&&e[Ma]===!0}constructor(e){super(e.message||`resource request failed`),this.failure=e}};function Na(e){return e instanceof X?e.failure:{message:e instanceof Error?e.message:String(e)}}async function*Pa(e){try{for(;;){let t=await e.next();if(t.done)return;if(t.value.body?.case!==`data`)throw Error(`expected ResourceRpc data`);yield{body:t.value.body}}}finally{await e.return?.()}}async function Fa(e,t){let n=new AbortController,r=I({objectMode:!0}),i=t((async function*(){yield{body:{case:`init`,value:{resourceId:e}}};for await(let e of r){if(e.body?.case!==`data`)throw Error(`expected ResourceRpc data`);yield{body:e.body}}})(),n.signal)[Symbol.asyncIterator]();try{let e=await i.next();if(e.done||e.value.body?.case!==`ack`)throw Error(`expected ResourceRpc acknowledgement`);let t=e.value.body.value.failure;if(t)throw new X(t);return new jr(r,Pa(i),()=>{n.abort(),i.return?.().catch(()=>{})})}catch(e){throw r.end(),n.abort(),await i.return?.().catch(()=>{}),e}}async function*Ia(e,t){let n=await e.next();if(n.done||n.value.body?.case!==`init`)throw Error(`expected ResourceRpc init`);let r;try{r=await t(n.value.body.value.resourceId??0)}catch(e){yield{body:{case:`ack`,value:{failure:Na(e)}}};return}yield{body:{case:`ack`,value:{}}};let i=I({objectMode:!0}),a=new jr(i,Pa(e)),o=r(a).then(()=>i.end(),e=>i.end(e));try{for await(let e of i){if(e.body?.case!==`data`)throw Error(`expected ResourceRpc data`);yield{body:e.body}}}finally{await a.close(),await o}}const La=new Proxy({released:!0},{get(e,t){if(t===`released`)return!0;if(t===`toJSON`)return()=>({released:!0});let n=String(t);if(!(typeof t==`symbol`||n.startsWith(`$$`)||n.startsWith(`@@__`)||t===`constructor`||t===`prototype`||t===`__proto__`||t===`then`||t===`asymmetricMatch`||t===`nodeType`||t===`tagName`))throw new Z(`Cannot access "${n}" on released resource`,`INVALID_RESOURCE`)}}),Ra=3e4,za=`ResourceClient stream did not initialize before timeout`;function Ba(e){return new Promise((t,n)=>{let r=!1,i=setTimeout(()=>{r||(r=!0,n(new Z(za,`CONNECTION_FAILED`)))},Ra);e.then(e=>{r||(r=!0,clearTimeout(i),t(e))}).catch(e=>{r||(r=!0,clearTimeout(i),n(e))})})}function Va(e){return e instanceof X&&[1,3,5].includes(e.failure.code??0)}var Z=class extends Error{code;cause;constructor(e,t,n){super(e),this.code=t,this.cause=n,this.name=`ResourceClientError`}},Ha=class{listeners=[];on(e){return this.listeners.push(e),()=>{let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}}emit(e){[...this.listeners].forEach(t=>{try{t(e)}catch(e){console.error(`Error in event listener:`,e)}})}clear(){this.listeners.length=0}},Ua=class extends pn{resourceClient;constructor(e,t){super(t),this.resourceClient=e}async request(e,t,n,r){return await this.resourceClient.waitForControls(r),super.request(e,t,n,r)}async clientStreamingRequest(e,t,n,r){return await this.resourceClient.waitForControls(r),super.clientStreamingRequest(e,t,n,r)}serverStreamingRequest(e,t,n,r){let i=I({objectMode:!0});return(async()=>{await this.resourceClient.waitForControls(r);for await(let a of super.serverStreamingRequest(e,t,n,r))i.push(a);i.end()})().catch(e=>i.end(e)),i}bidirectionalStreamingRequest(e,t,n,r){let i=I({objectMode:!0});return(async()=>{await this.resourceClient.waitForControls(r);for await(let a of super.bidirectionalStreamingRequest(e,t,n,r))i.push(a);i.end()})().catch(e=>i.end(e)),i}};function Wa(e,t,n,r){let i=!1,a=()=>{i||(i=!0,n(e,c))},o=null,s=()=>(o||=new Ua(t,async()=>Ba(Fa(e,t.service.ResourceRpc.bind(t.service))).catch(t=>{throw Va(t)&&r(e),t})),o),c={get resourceId(){return e},get released(){return i},get client(){return i?La:s()},createRef(n){if(i)throw new Z(`Cannot create ref from released resource ${e}`,`INVALID_RESOURCE`);return t.createResourceReference(n)},createResource(e,t,...n){return new t(this.createRef(e),...n)},release:a,[Symbol.dispose]:a,_markReleased(){i=!0}};return c}var Ga=class{service;signal;initState=null;connectionController=null;resourceSession=null;resources=new Map;events=new Ha;connectionLostEvents=new Ha;initPromise=null;disposed=!1;_connectionGeneration=0;_reconnectResolve=null;_reconnectReject=null;attachSession=null;attachSessionInitPromise=null;constructor(e,t){this.service=e,this.signal=t,t.addEventListener(`abort`,()=>{this.dispose(`CLIENT_CANCELLED`)},{once:!0})}get connectionGeneration(){return this._connectionGeneration}onResourceReleased(e){return this.throwIfDisposed(),this.events.on(e)}onConnectionLost(e){return this.throwIfDisposed(),this.connectionLostEvents.on(e)}async accessRootResource(){let e=await this.ensureInitialized();return this.createResourceReference(e.rootResourceId)}async attachRawInvoker(e,t,n){return this.attachResource(e,t,n)}async attachResourceTree(e,t,n,r){return this.attachResource(e,t,n,r)}async attachResource(e,t,n,r){let i=0;for(;;){let a=await this.ensureAttachSession();try{let i=++a.attachIdCtr,o=new Promise((e,t)=>{a.pending.set(i,{resolve:e,reject:t}),n?.addEventListener(`abort`,()=>{let e=a.pending.get(i);e&&(e.canceled=!0),t(Error(`aborted`))},{once:!0})});a.outgoing.push({body:{case:`add`,value:{attachId:i,label:e}}});let s=await o;return a.muxes.set(s,t),r&&a.releaseFns.set(s,r),{resourceId:s,cleanup:()=>{this.releaseAttachedResource(a,s),a.outgoing.push({body:{case:`detach`,value:{resourceId:s}}})}}}catch(e){if(n?.aborted||i>=3||!this.shouldRetryAttachResource(e,a))throw e;i++}}}shouldRetryAttachResource(e,t){return e instanceof Error&&e.message===`attach session closed`&&this.attachSession!==t}async ensureAttachSession(){return this.attachSession?this.attachSession:(this.attachSessionInitPromise||=this.openAttachSession().finally(()=>{this.attachSessionInitPromise=null}),this.attachSessionInitPromise)}async openAttachSession(){let e=await this.ensureInitialized(),t=Oa(this.signal),n=I({objectMode:!0}),r=this.service.ResourceAttach((async function*(){yield*n})(),t.signal)[Symbol.asyncIterator]();n.push({body:{case:`init`,value:{clientHandleId:e.clientHandleId}}});let i=await r.next();if(i.done)throw n.end(),t.abort(),Error(`stream closed before ack`);let a=i.value?.body;if(a?.case!==`ack`)throw n.end(),t.abort(),Error(`expected ack packet`);if(a.value.failure){n.end(),t.abort();let e=new X(a.value.failure);throw a.value.failure.code===2?(this.resetConnection(),new Z(`Resource attach client was released`,`CONNECTION_FAILED`,e)):e}let o={controller:t,outgoing:n,attachIdCtr:0,closed:!1,muxes:new Map,releaseFns:new Map,pending:new Map},s=new En(async(e,t)=>{let n=e.indexOf(`/`);if(n<0)return null;let r=parseInt(e.substring(0,n),10);if(isNaN(r))return null;let i=o.muxes.get(r);return i?i(e.substring(n+1),t):null}),c=new Ot(s,{direction:`inbound`,yamuxParams:{enableKeepAlive:!1}}),l=e=>this.releaseAttachedResource(o,e),u=(async function*(){for(;;){let e=await r.next();if(e.done)break;let t=e.value?.body;if(t?.case===`muxData`)yield t.value;else if(t?.case===`addAck`){let e=t.value,r=e.attachId??0,i=o.pending.get(r);if(o.pending.delete(r),!i)continue;if(i.canceled){e.failure||n.push({body:{case:`detach`,value:{resourceId:e.resourceId??0}}});continue}e.failure?i.reject(new X(e.failure)):i.resolve(e.resourceId??0)}t?.case===`detachAck`&&l(t.value.resourceId??0)}})();return ht(u,c,zt(),async e=>{for await(let t of e)n.push({body:{case:`muxData`,value:t}});n.end()}).catch(()=>{n.end()}).finally(()=>{this.clearAttachSession(o)}),this.attachSession=o,o}createResourceReference(e){return this.throwIfDisposed(),this.createRef(e)}dispose(e=`CLIENT_DISPOSED`){if(this.disposed)return;this.disposed=!0,this._reconnectReject?.(new Z(`Resource client is closed`,e)),this._reconnectResolve=null,this._reconnectReject=null;let t=e!==`CONNECTION_FAILED`;if(t)for(let e of this.resources.keys())this.queueControl({case:`release`,value:{resourceId:e}});this.clearAttachSession(),t?(this.finishResourceSession(),this.connectionController=null):(this.retireResourceSession(),this.connectionController?.abort(),this.connectionController=null);for(let[e,t]of this.resources.entries())t.forEach(e=>e._markReleased()),this.events.emit({resourceId:e,reason:`client-disposed`});this.resources.clear(),this.events.clear(),this.connectionLostEvents.clear(),this.initState=null,this.initPromise=null}async ensureInitialized(){return this.throwIfDisposed(),this.initState?this.initState:(this.initPromise||=this.performInitialization(),this.initPromise)}async performInitialization(){return this.throwIfDisposed(),this.connectionController=Oa(this.signal),new Promise((e,t)=>{let n=!1,r=()=>{n||(this.connectionController?.abort(),this.connectionController=null,this.initPromise=null)},i=()=>{n||(r(),t(new Z(`Client initialization was cancelled`,`CLIENT_CANCELLED`)))};if(this.signal.aborted){i();return}this.signal.addEventListener(`abort`,i,{once:!0}),this.startConnection(e,()=>{n=!0,this.signal.removeEventListener(`abort`,i)}).catch(e=>{if(r(),!n){let n=e instanceof Error?e:Error(String(e));t(new Z(`Failed to initialize client connection: ${n.message}`,`CONNECTION_FAILED`,n))}})})}async startConnection(e,t){let n=this.connectionController;if(!n)throw new Z(`No connection controller`,`CONNECTION_FAILED`);let r=!1;await ja(n.signal,async i=>{let a=Oa(i),o=!1,s=!1,c=setTimeout(()=>{o||a.signal.aborted||(s=!0,a.abort())},Ra),l=I({objectMode:!0}),u={controller:a,outgoing:l,generation:this._connectionGeneration,initialized:!1,closed:!1,nextControlId:0,acknowledgedControlId:0,controlWaiters:new Set};this.resourceSession=u;let d=()=>{if(u.closed)return;u.closed=!0,l.end();let e=new Z(`ResourceClient control stream closed`,`CONNECTION_FAILED`);for(let t of u.controlWaiters)t.reject(e);u.controlWaiters.clear(),this.resourceSession===u&&(this.resourceSession=null)},f=()=>{throw new Z(za,`CONNECTION_FAILED`)};try{let n=this.service.ResourceClient((async function*(){yield*l})(),a.signal);l.push({body:{case:`init`,value:{}}});for await(let l of n){if(i.aborted)return;if(a.signal.aborted){s&&f();return}let n=l.body;if(n?.case===`init`){o=!0,u.initialized=!0,c&&clearTimeout(c),c=void 0;let i={clientHandleId:n.value.clientHandleId??0,rootResourceId:n.value.rootResourceId??0};this._reconnectResolve?(this.initState=i,this._reconnectResolve(i),this._reconnectResolve=null,this._reconnectReject=null):this.initState?this.initState=i:(this.initState=i,r=!0,t(),e(i));continue}if(n?.case===`resourceReleased`){this.handleServerResourceRelease(n.value.resourceId??0);continue}n?.case===`controlAck`&&this.acknowledgeControl(u,n.value.controlId??0)}}catch(e){throw!i.aborted&&s&&f(),e}finally{c&&clearTimeout(c),c=void 0,d(),this.connectionController===n&&!this.disposed&&o&&this.releaseAllResources(`connection-lost`)}if(!this.disposed&&!i.aborted)throw s&&f(),Error(o?`ResourceClient stream closed`:`ResourceClient stream closed before init`)},{errorCb:e=>{if(!r){n.abort();return}this.shouldRetryResourceClientStreamSilently(e)||console.warn(`Retry: retrying after error`,{error:e})}})}throwIfDisposed(){if(this.disposed)throw new Z(`Client has been disposed`,`CLIENT_DISPOSED`)}createRef(e){this.throwIfDisposed();let t=this.resources.get(e),n=!t;t||(t=new Set,this.resources.set(e,t));let r=Wa(e,this,this.releaseRef.bind(this),this.handleServerResourceRelease.bind(this));return t.add(r),n&&this.queueControl({case:`adopt`,value:{resourceId:e}}),r}releaseRef(e,t){let n=this.resources.get(e);n&&(n.delete(t),n.size===0&&(this.resources.delete(e),this.queueControl({case:`release`,value:{resourceId:e}}),this.events.emit({resourceId:e,reason:`client-released`})))}queueControl(e){let t=this.resourceSession;if(!t||t.closed||!t.initialized)return;let n=++t.nextControlId;t.outgoing.push({controlId:n,body:e})}async waitForControls(e){if(e?.aborted)throw Error(ur);let t=this.resourceSession;if(!t||t.closed||!t.initialized)throw new Z(`ResourceClient control stream is unavailable`,`CONNECTION_FAILED`);let n=t.nextControlId;n<=t.acknowledgedControlId||await new Promise((r,i)=>{let a=()=>{t.controller.signal.removeEventListener(`abort`,c),e?.removeEventListener(`abort`,l)},o={target:n,resolve:()=>{a(),r()},reject:e=>{a(),i(e)}},s=e=>{t.controlWaiters.delete(o)&&o.reject(e)},c=()=>s(new Z(`ResourceClient control stream closed`,`CONNECTION_FAILED`)),l=()=>s(Error(ur));t.controlWaiters.add(o),t.controller.signal.addEventListener(`abort`,c,{once:!0}),e?.addEventListener(`abort`,l,{once:!0}),t.controller.signal.aborted&&c(),e?.aborted&&l()})}acknowledgeControl(e,t){if(t===0||t!==e.acknowledgedControlId+1||t>e.nextControlId)throw Error(`unexpected ResourceClient control acknowledgment ${t} after ${e.acknowledgedControlId}`);e.acknowledgedControlId=t;for(let n of e.controlWaiters)n.target>t||(e.controlWaiters.delete(n),n.resolve())}shouldRetryResourceClientStreamSilently(e){if(e instanceof Z&&e.message===za||String(e)===`StreamResetError: stream reset`)return!0;if(typeof e!=`object`||!e)return!1;let t=Reflect.get(e,`name`),n=Reflect.get(e,`message`);return(typeof t==`string`?t:``)===`StreamResetError`||(typeof n==`string`?n:``)===`stream reset`}handleServerResourceRelease(e){let t=this.resources.get(e);t&&(t.forEach(e=>e._markReleased()),this.resources.delete(e),this.events.emit({resourceId:e,reason:`server-released`}))}releaseAllResources(e){this._connectionGeneration++,this.clearAttachSession();for(let[t,n]of this.resources.entries())n.forEach(e=>e._markReleased()),this.events.emit({resourceId:t,reason:e});this.resources.clear(),this.initState=null,this.initPromise=new Promise((e,t)=>{this._reconnectResolve=e,this._reconnectReject=t}),this.initPromise.catch(()=>{}),this.connectionLostEvents.emit(void 0)}resetConnection(){if(this.disposed)return;let e=this.connectionController;this.connectionController=null,this.clearAttachSession();for(let[e,t]of this.resources.entries())t.forEach(e=>e._markReleased()),this.events.emit({resourceId:e,reason:`connection-lost`});this.resources.clear(),this.initState=null,this.initPromise=null,this._reconnectReject?.(new Z(`Resource generation was replaced`,`CONNECTION_FAILED`)),this._reconnectResolve=null,this._reconnectReject=null,this.retireResourceSession(),e?.abort(),this._connectionGeneration++,this.connectionLostEvents.emit(void 0)}finishResourceSession(){let e=this.resourceSession;e&&(e.closed=!0,e.outgoing.end(),this.resourceSession=null)}retireResourceSession(){let e=this.resourceSession;e&&(e.closed=!0,e.outgoing.end(),e.controller.abort(),this.resourceSession=null)}clearAttachSession(e){let t=e??this.attachSession;if(t&&(this.attachSession===t&&(this.attachSession=null),!t.closed)){t.closed=!0,t.controller.abort(),t.outgoing.end();for(let[,e]of t.pending)e.reject(Error(`attach session closed`));t.pending.clear(),this.releaseAllAttachedResources(t)}}releaseAttachedResource(e,t){let n=e.releaseFns.get(t);e.releaseFns.delete(t),e.muxes.delete(t),n?.()}releaseAllAttachedResources(e){let t=[...e.releaseFns.values()];e.releaseFns.clear(),e.muxes.clear();for(let e of t)e()}};const Ka={typeName:`resource.ResourceService`,methods:{ResourceClient:{name:`ResourceClient`,I:Ye,O:rt,kind:O.BiDiStreaming},ResourceRpc:{name:`ResourceRpc`,I:ot,O:ot,kind:O.BiDiStreaming},ResourceAttach:{name:`ResourceAttach`,I:C,O:he,kind:O.BiDiStreaming}}},qa=Ka.typeName;var Ja=class{rpc;service;constructor(e,t){this.service=t?.service||qa,this.rpc=e,this.ResourceClient=this.ResourceClient.bind(this),this.ResourceRpc=this.ResourceRpc.bind(this),this.ResourceAttach=this.ResourceAttach.bind(this)}ResourceClient(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Ka.methods.ResourceClient.name,M(Ye)(e),t||void 0);return P(rt)(n)}ResourceRpc(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Ka.methods.ResourceRpc.name,M(ot)(e),t||void 0);return P(ot)(n)}ResourceAttach(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Ka.methods.ResourceAttach.name,M(C)(e),t||void 0);return P(he)(n)}};async function Ya(e){if(!e)throw Error(`A sync storage directory is required`);let t=new xr(new URL(`./engine-worker.mjs`,import.meta.url),{workerData:Un.toBinary({directory:e}),execArgv:[]}),n=Promise.withResolvers(),r=Promise.withResolvers(),i=new AbortController,a=new Set,o,s,c,l=!1,u=!1,d=e=>{s??=e,n.reject(s),o?.dispose(`CONNECTION_FAILED`),i.abort(s);for(let e of a)e.abort(s);a.clear()};t.on(`error`,d),t.on(`exit`,e=>{u=!0,l||d(Error(`Sync engine Worker exited unexpectedly (${e})`)),i.abort(s),r.resolve()}),t.on(`message`,e=>{try{let t=_n.fromBinary(e);switch(t.kind){case 1:n.resolve();break;case 4:l=!0,t.error&&d(Error(t.error));break;case 5:d(Error(t.error||`Sync engine startup failed`));break;default:d(Error(`Sync engine returned an unsupported lifecycle message`))}}catch(e){d(e instanceof Error?e:Error(String(e)))}});let f=()=>(c??=(async()=>{if(o?.dispose(),!u){t.postMessage({message:_n.toBinary({kind:3})});let e=setTimeout(()=>{d(Error(`Sync engine shutdown timed out`)),t.terminate()},1e4);try{await r.promise}finally{clearTimeout(e)}}if(await Promise.all(Array.from(a,e=>e.close())),a.clear(),s)throw s})(),c),p=setTimeout(()=>{d(Error(`Sync engine startup timed out`)),t.terminate()},3e4);try{return await n.promise,o=new Ga(new Ja(new pn(async()=>{if(s)throw s;if(c||u)throw Error(`Sync engine is closed`);let{port1:e,port2:n}=new br,r=Zt(e),i=r.close.bind(r),o=r.abort.bind(r);return r.close=async()=>{a.delete(r),await i()},r.abort=e=>{a.delete(r),o(e)},a.add(r),t.postMessage({message:_n.toBinary({kind:2}),port:n},[n]),r})),i.signal),{engine:new Zi(await o.accessRootResource()),resources:o,signal:i.signal,close:f}}catch(e){try{await f()}catch{}throw e}finally{clearTimeout(p)}}var Q=n(((e,t)=>{let n=[`nodebuffer`,`arraybuffer`,`fragments`],r=typeof Blob<`u`;r&&n.push(`blob`),t.exports={BINARY_TYPES:n,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,hasBlob:r,kForOnEventAttribute:Symbol(`kIsForOnEventAttribute`),kListener:Symbol(`kListener`),kStatusCode:Symbol(`status-code`),kWebSocket:Symbol(`websocket`),NOOP:()=>{}}})),Xa=n(((e,t)=>{let{EMPTY_BUFFER:n}=Q(),r=Buffer[Symbol.species];function i(e,t){if(e.length===0)return n;if(e.length===1)return e[0];let i=Buffer.allocUnsafe(t),a=0;for(let t=0;t<e.length;t++){let n=e[t];i.set(n,a),a+=n.length}return a<t?new r(i.buffer,i.byteOffset,a):i}function a(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[a]^t[a&3]}function o(e,t){for(let n=0;n<e.length;n++)e[n]^=t[n&3]}function s(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function c(e){if(c.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new r(e):ArrayBuffer.isView(e)?t=new r(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),c.readOnly=!1),t}t.exports={concat:i,mask:a,toArrayBuffer:s,toBuffer:c,unmask:o}})),Za=n(((e,t)=>{let n=Symbol(`kDone`),r=Symbol(`kRun`);t.exports=class{constructor(e){this[n]=()=>{this.pending--,this[r]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[r]()}[r](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[n])}}}})),Qa=n(((e,n)=>{let r=t(`zlib`),i=Xa(),a=Za(),{kStatusCode:o}=Q(),s=Buffer[Symbol.species],c=Buffer.from([0,0,255,255]),l=Symbol(`permessage-deflate`),u=Symbol(`total-length`),d=Symbol(`callback`),f=Symbol(`buffers`),p=Symbol(`error`),m;n.exports=class{constructor(e){if(this._options=e||{},this._threshold=this._options.threshold===void 0?1024:this._options.threshold,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!m){let e=this._options.concurrencyLimit===void 0?10:this._options.concurrencyLimit;m=new a(e)}}static get extensionName(){return`permessage-deflate`}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits??(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&=(this._inflate.close(),null),this._deflate){let e=this._deflate[d];this._deflate.close(),this._deflate=null,e&&e(Error(`The deflate stream was closed while data was being processed`))}}acceptAsServer(e){let t=this._options,n=e.find(e=>!(t.serverNoContextTakeover===!1&&e.server_no_context_takeover||e.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits==`number`&&t.serverMaxWindowBits>e.server_max_window_bits)||typeof t.clientMaxWindowBits==`number`&&(typeof e.client_max_window_bits==`number`?t.clientMaxWindowBits>e.client_max_window_bits:!e.client_max_window_bits)));if(!n)throw Error(`None of the extension offers can be accepted`);return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof t.serverMaxWindowBits==`number`&&(n.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits==`number`?n.client_max_window_bits=t.clientMaxWindowBits:(n.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let t=e[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw Error(`Unexpected parameter "client_no_context_takeover"`);if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits==`number`&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==`number`&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw Error(`Unexpected or invalid parameter "client_max_window_bits"`);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let n=e[t];if(n.length>1)throw Error(`Parameter "${t}" must have only a single value`);if(n=n[0],t===`client_max_window_bits`){if(n!==!0){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else if(t===`server_max_window_bits`){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(t===`client_no_context_takeover`||t===`server_no_context_takeover`){if(n!==!0)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else throw Error(`Unknown parameter "${t}"`);e[t]=n})}),e}decompress(e,t,n){m.add(r=>{this._decompress(e,t,(e,t)=>{r(),n(e,t)})})}compress(e,t,n){m.add(r=>{this._compress(e,t,(e,t)=>{r(),n(e,t)})})}_decompress(e,t,n){let a=this._isServer?`client`:`server`;if(!this._inflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:r.Z_DEFAULT_WINDOWBITS;this._inflate=r.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[l]=this,this._inflate[u]=0,this._inflate[f]=[],this._inflate.on(`error`,_),this._inflate.on(`data`,g)}this._inflate[d]=n,this._inflate.write(e),t&&this._inflate.write(c),this._inflate.flush(()=>{let e=this._inflate[p];if(e){this._inflate.close(),this._inflate=null,n(e);return}let r=i.concat(this._inflate[f],this._inflate[u]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[u]=0,this._inflate[f]=[],t&&this.params[`${a}_no_context_takeover`]&&this._inflate.reset()),n(null,r)})}_compress(e,t,n){let a=this._isServer?`server`:`client`;if(!this._deflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:r.Z_DEFAULT_WINDOWBITS;this._deflate=r.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[u]=0,this._deflate[f]=[],this._deflate.on(`data`,h)}this._deflate[d]=n,this._deflate.write(e),this._deflate.flush(r.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=i.concat(this._deflate[f],this._deflate[u]);t&&(e=new s(e.buffer,e.byteOffset,e.length-4)),this._deflate[d]=null,this._deflate[u]=0,this._deflate[f]=[],t&&this.params[`${a}_no_context_takeover`]&&this._deflate.reset(),n(null,e)})}};function h(e){this[f].push(e),this[u]+=e.length}function g(e){if(this[u]+=e.length,this[l]._maxPayload<1||this[u]<=this[l]._maxPayload){this[f].push(e);return}this[p]=RangeError(`Max payload size exceeded`),this[p].code=`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`,this[p][o]=1009,this.removeListener(`data`,g),this.reset()}function _(e){if(this[l]._inflate=null,this[p]){this[d](this[p]);return}e[o]=1007,this[d](e)}})),$a=n(((e,n)=>{let{isUtf8:r}=t(`buffer`),{hasBlob:i}=Q(),a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function o(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function s(e){let t=e.length,n=0;for(;n<t;)if(!(e[n]&128))n++;else if((e[n]&224)==192){if(n+1===t||(e[n+1]&192)!=128||(e[n]&254)==192)return!1;n+=2}else if((e[n]&240)==224){if(n+2>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||e[n]===224&&(e[n+1]&224)==128||e[n]===237&&(e[n+1]&224)==160)return!1;n+=3}else if((e[n]&248)==240){if(n+3>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||(e[n+3]&192)!=128||e[n]===240&&(e[n+1]&240)==128||e[n]===244&&e[n+1]>143||e[n]>244)return!1;n+=4}else return!1;return!0}function c(e){return i&&typeof e==`object`&&typeof e.arrayBuffer==`function`&&typeof e.type==`string`&&typeof e.stream==`function`&&(e[Symbol.toStringTag]===`Blob`||e[Symbol.toStringTag]===`File`)}n.exports={isBlob:c,isValidStatusCode:o,isValidUTF8:s,tokenChars:a},r&&(n.exports.isValidUTF8=function(e){return e.length<24?s(e):r(e)})})),eo=n(((e,n)=>{let{Writable:r}=t(`stream`),i=Qa(),{BINARY_TYPES:a,EMPTY_BUFFER:o,kStatusCode:s,kWebSocket:c}=Q(),{concat:l,toArrayBuffer:u,unmask:d}=Xa(),{isValidStatusCode:f,isValidUTF8:p}=$a(),m=Buffer[Symbol.species];n.exports=class extends r{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents===void 0||e.allowSynchronousEvents,this._binaryType=e.binaryType||a[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxBufferedChunks=e.maxBufferedChunks|0,this._maxFragments=e.maxFragments|0,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[c]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._numFragments=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,n){if(this._opcode===8&&this._state==0)return n();if(this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks){n(this.createError(RangeError,`Too many buffered chunks`,!1,1008,`WS_ERR_TOO_MANY_BUFFERED_PARTS`));return}this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let t=this._buffers[0];return this._buffers[0]=new m(t.buffer,t.byteOffset+e,t.length-e),new m(t.buffer,t.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let n=this._buffers[0],r=t.length-e;e>=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=new m(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if(t[0]&48){e(this.createError(RangeError,`RSV2 and RSV3 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_2_3`));return}let n=(t[0]&64)==64;if(n&&!this._extensions[i.extensionName]){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._fin=(t[0]&128)==128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(!this._fragmented){e(this.createError(RangeError,`invalid opcode 0`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){e(this.createError(RangeError,`FIN must be set`,!0,1002,`WS_ERR_EXPECTED_FIN`));return}if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,`WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH`));return}}else{e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)==128,this._isServer){if(!this._masked){e(this.createError(RangeError,`MASK must be set`,!0,1002,`WS_ERR_EXPECTED_MASK`));return}}else if(this._masked){e(this.createError(RangeError,`MASK must be clear`,!0,1002,`WS_ERR_UNEXPECTED_MASK`));return}this._payloadLength===126?this._state=1:this._payloadLength===127?this._state=2:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),n=t.readUInt32BE(0);if(n>2**21-1){e(this.createError(RangeError,`Unsupported WebSocket frame: payload length > 2^53 - 1`,!1,1009,`WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH`));return}this._payloadLength=n*2**32+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._state=this._masked?3:4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(e){let t=o;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&d(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._maxFragments>0&&++this._numFragments>this._maxFragments){e(this.createError(RangeError,`Too many message fragments`,!1,1008,`WS_ERR_TOO_MANY_BUFFERED_PARTS`));return}if(this._compressed){this._state=5,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[i.extensionName].decompress(e,this._fin,(e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){t(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._fragments.push(n)}this.dataMessage(t),this._state===0&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=0;return}let t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._numFragments=0,this._fragments=[],this._opcode===2){let r;r=this._binaryType===`nodebuffer`?l(n,t):this._binaryType===`arraybuffer`?u(l(n,t)):this._binaryType===`blob`?new Blob(n):n,this._allowSynchronousEvents?(this.emit(`message`,r,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!0),this._state=0,this.startLoop(e)}))}else{let r=l(n,t);if(!this._skipUTF8Validation&&!p(r)){e(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._state===5||this._allowSynchronousEvents?(this.emit(`message`,r,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!1),this._state=0,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit(`conclude`,1005,o),this.end();else{let n=e.readUInt16BE(0);if(!f(n)){t(this.createError(RangeError,`invalid status code ${n}`,!0,1002,`WS_ERR_INVALID_CLOSE_CODE`));return}let r=new m(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!p(r)){t(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._loop=!1,this.emit(`conclude`,n,r),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0):(this._state=6,setImmediate(()=>{this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0,this.startLoop(t)}))}createError(e,t,n,r,i){this._loop=!1,this._errored=!0;let a=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(a,this.createError),a.code=i,a[s]=r,a}}})),to=n(((e,n)=>{let{Duplex:r}=t(`stream`),{randomFillSync:i}=t(`crypto`),{types:{isUint8Array:a}}=t(`util`),o=Qa(),{EMPTY_BUFFER:s,kWebSocket:c,NOOP:l}=Q(),{isBlob:u,isValidStatusCode:d}=$a(),{mask:f,toBuffer:p}=Xa(),m=Symbol(`kByteLength`),h=Buffer.alloc(4),g=8192,_,v=g;n.exports=class e{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=l,this[c]=void 0}static frame(e,t){let n,r=!1,a=2,o=!1;t.mask&&(n=t.maskBuffer||h,t.generateMask?t.generateMask(n):(v===g&&(_===void 0&&(_=Buffer.alloc(g)),i(_,0,g),v=0),n[0]=_[v++],n[1]=_[v++],n[2]=_[v++],n[3]=_[v++]),o=(n[0]|n[1]|n[2]|n[3])===0,a=6);let s;typeof e==`string`?(!t.mask||o)&&t[m]!==void 0?s=t[m]:(e=Buffer.from(e),s=e.length):(s=e.length,r=t.mask&&t.readOnly&&!o);let c=s;s>=65536?(a+=8,c=127):s>125&&(a+=2,c=126);let l=Buffer.allocUnsafe(r?s+a:a);return l[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(s,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(s,4,6)),!t.mask||(l[1]|=128,l[a-4]=n[0],l[a-3]=n[1],l[a-2]=n[2],l[a-1]=n[3],o)?[l,e]:r?(f(e,n,l,a,s),[l]):(f(e,n,e,0,s),[l,e])}close(t,n,r,i){let o;if(t===void 0)o=s;else if(typeof t!=`number`||!d(t))throw TypeError(`First argument must be a valid error code number`);else if(n===void 0||!n.length)o=Buffer.allocUnsafe(2),o.writeUInt16BE(t,0);else{let e=Buffer.byteLength(n);if(e>123)throw RangeError(`The message must not be greater than 123 bytes`);if(o=Buffer.allocUnsafe(2+e),o.writeUInt16BE(t,0),typeof n==`string`)o.write(n,2);else if(a(n))o.set(n,2);else throw TypeError(`Second argument must be a string or a Uint8Array`)}let c={[m]:o.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state===0?this.sendFrame(e.frame(o,c),i):this.enqueue([this.dispatch,o,!1,c,i])}ping(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):u(t)?(i=t.size,a=!1):(t=p(t),i=t.length,a=p.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[m]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:a,rsv1:!1};u(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}pong(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):u(t)?(i=t.size,a=!1):(t=p(t),i=t.length,a=p.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[m]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:a,rsv1:!1};u(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}send(e,t,n){let r=this._extensions[o.extensionName],i=t.binary?2:1,a=t.compress,s,c;typeof e==`string`?(s=Buffer.byteLength(e),c=!1):u(e)?(s=e.size,c=!1):(e=p(e),s=e.length,c=p.readOnly),this._firstFragment?(this._firstFragment=!1,a&&r&&r.params[r._isServer?`server_no_context_takeover`:`client_no_context_takeover`]&&(a=s>=r._threshold),this._compress=a):(a=!1,i=0),t.fin&&(this._firstFragment=!0);let l={[m]:s,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:c,rsv1:a};u(e)?this._state===0?this.getBlobData(e,this._compress,l,n):this.enqueue([this.getBlobData,e,this._compress,l,n]):this._state===0?this.dispatch(e,this._compress,l,n):this.enqueue([this.dispatch,e,this._compress,l,n])}getBlobData(t,n,r,i){this._bufferedBytes+=r[m],this._state=2,t.arrayBuffer().then(t=>{if(this._socket.destroyed){let e=Error(`The socket was closed while the blob was being read`);process.nextTick(y,this,e,i);return}this._bufferedBytes-=r[m];let a=p(t);n?this.dispatch(a,n,r,i):(this._state=0,this.sendFrame(e.frame(a,r),i),this.dequeue())}).catch(e=>{process.nextTick(ee,this,e,i)})}dispatch(t,n,r,i){if(!n){this.sendFrame(e.frame(t,r),i);return}let a=this._extensions[o.extensionName];this._bufferedBytes+=r[m],this._state=1,a.compress(t,r.fin,(t,n)=>{if(this._socket.destroyed){let e=Error(`The socket was closed while data was being compressed`);y(this,e,i);return}this._bufferedBytes-=r[m],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(n,r),i),this.dequeue()})}dequeue(){for(;this._state===0&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][m],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][m],this._queue.push(e)}sendFrame(e,t){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};function y(e,t,n){typeof n==`function`&&n(t);for(let n=0;n<e._queue.length;n++){let r=e._queue[n],i=r[r.length-1];typeof i==`function`&&i(t)}}function ee(e,t,n){y(e,t,n),e.onerror(t)}})),no=n(((e,t)=>{let{kForOnEventAttribute:n,kListener:r}=Q(),i=Symbol(`kCode`),a=Symbol(`kData`),o=Symbol(`kError`),s=Symbol(`kMessage`),c=Symbol(`kReason`),l=Symbol(`kTarget`),u=Symbol(`kType`),d=Symbol(`kWasClean`);var f=class{constructor(e){this[l]=null,this[u]=e}get target(){return this[l]}get type(){return this[u]}};Object.defineProperty(f.prototype,"target",{enumerable:!0}),Object.defineProperty(f.prototype,"type",{enumerable:!0});var p=class extends f{constructor(e,t={}){super(e),this[i]=t.code===void 0?0:t.code,this[c]=t.reason===void 0?``:t.reason,this[d]=t.wasClean!==void 0&&t.wasClean}get code(){return this[i]}get reason(){return this[c]}get wasClean(){return this[d]}};Object.defineProperty(p.prototype,"code",{enumerable:!0}),Object.defineProperty(p.prototype,"reason",{enumerable:!0}),Object.defineProperty(p.prototype,"wasClean",{enumerable:!0});var m=class extends f{constructor(e,t={}){super(e),this[o]=t.error===void 0?null:t.error,this[s]=t.message===void 0?``:t.message}get error(){return this[o]}get message(){return this[s]}};Object.defineProperty(m.prototype,"error",{enumerable:!0}),Object.defineProperty(m.prototype,"message",{enumerable:!0});var h=class extends f{constructor(e,t={}){super(e),this[a]=t.data===void 0?null:t.data}get data(){return this[a]}};Object.defineProperty(h.prototype,"data",{enumerable:!0}),t.exports={CloseEvent:p,ErrorEvent:m,Event:f,EventTarget:{addEventListener(e,t,i={}){for(let a of this.listeners(e))if(!i[n]&&a[r]===t&&!a[n])return;let a;if(e===`message`)a=function(e,n){let r=new h(`message`,{data:n?e:e.toString()});r[l]=this,g(t,this,r)};else if(e===`close`)a=function(e,n){let r=new p(`close`,{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[l]=this,g(t,this,r)};else if(e===`error`)a=function(e){let n=new m(`error`,{error:e,message:e.message});n[l]=this,g(t,this,n)};else if(e===`open`)a=function(){let e=new f(`open`);e[l]=this,g(t,this,e)};else return;a[n]=!!i[n],a[r]=t,i.once?this.once(e,a):this.on(e,a)},removeEventListener(e,t){for(let i of this.listeners(e))if(i[r]===t&&!i[n]){this.removeListener(e,i);break}}},MessageEvent:h};function g(e,t,n){typeof e==`object`&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}})),ro=n(((e,t)=>{let{tokenChars:n}=$a();function r(e,t,n){e[t]===void 0?e[t]=[n]:e[t].push(n)}function i(e){let t=Object.create(null),i=Object.create(null),a=!1,o=!1,s=!1,c,l,u=-1,d=-1,f=-1,p=0;for(;p<e.length;p++)if(d=e.charCodeAt(p),c===void 0){if(f===-1&&n[d]===1)u===-1&&(u=p);else if(p!==0&&(d===32||d===9))f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);d===44?(r(t,n,i),i=Object.create(null)):c=n,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`)}else if(l===void 0){if(f===-1&&n[d]===1)u===-1&&(u=p);else if(d===32||d===9)f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p),r(i,e.slice(u,f),!0),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),u=f=-1}else if(d===61&&u!==-1&&f===-1)l=e.slice(u,p),u=f=-1;else throw SyntaxError(`Unexpected character at index ${p}`)}else if(o){if(n[d]!==1)throw SyntaxError(`Unexpected character at index ${p}`);u===-1?u=p:a||=!0,o=!1}else if(s){if(n[d]===1)u===-1&&(u=p);else if(d===34&&u!==-1)s=!1,f=p;else if(d===92)o=!0;else throw SyntaxError(`Unexpected character at index ${p}`)}else if(d===34&&e.charCodeAt(p-1)===61)s=!0;else if(f===-1&&n[d]===1)u===-1&&(u=p);else if(u!==-1&&(d===32||d===9))f===-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);a&&=(n=n.replace(/\\/g,``),!1),r(i,l,n),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),l=void 0,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);if(u===-1||s||d===32||d===9)throw SyntaxError(`Unexpected end of input`);f===-1&&(f=p);let m=e.slice(u,f);return c===void 0?r(t,m,i):(l===void 0?r(i,m,!0):a?r(i,l,m.replace(/\\/g,``)):r(i,l,m),r(t,c,i)),t}function a(e){return Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>[t].concat(Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>e===!0?t:`${t}=${e}`).join(`; `)})).join(`; `)).join(`, `)}).join(`, `)}t.exports={format:a,parse:i}})),io=n(((e,n)=>{let r=t(`events`),i=t(`https`),a=t(`http`),o=t(`net`),s=t(`tls`),{randomBytes:c,createHash:l}=t(`crypto`),{Duplex:u,Readable:d}=t(`stream`),{URL:f}=t(`url`),p=Qa(),m=eo(),h=to(),{isBlob:g}=$a(),{BINARY_TYPES:_,CLOSE_TIMEOUT:v,EMPTY_BUFFER:y,GUID:ee,kForOnEventAttribute:b,kListener:x,kStatusCode:te,kWebSocket:S,NOOP:ne}=Q(),{EventTarget:{addEventListener:re,removeEventListener:ie}}=no(),{format:ae,parse:oe}=ro(),{toBuffer:se}=Xa(),ce=Symbol(`kAborted`),le=[8,13],C=[`CONNECTING`,`OPEN`,`CLOSING`,`CLOSED`],ue=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;var w=class e extends r{constructor(t,n,r){super(),this._binaryType=_[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=y,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol=``,this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t===null?(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0):(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n==`object`&&n?(r=n,n=[]):n=[n]),de(this,t,n,r))}get binaryType(){return this._binaryType}set binaryType(e){_.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,n,r){let i=new m({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:r.maxBufferedChunks,maxFragments:r.maxFragments,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),a=new h(t,this._extensions,r.generateMask);this._receiver=i,this._sender=a,this._socket=t,i[S]=this,a[S]=this,t[S]=this,i.on(`conclude`,me),i.on(`drain`,he),i.on(`error`,ge),i.on(`message`,ve),i.on(`ping`,ye),i.on(`pong`,be),a.onerror=Se,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on(`close`,we),t.on(`data`,Te),t.on(`end`,Ee),t.on(`error`,De),this._readyState=e.OPEN,this.emit(`open`)}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage);return}this._extensions[p.extensionName]&&this._extensions[p.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage)}close(t,n){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){E(this,this._req,`WebSocket was closed before the connection was established`);return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,n,!this._isServer,e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Ce(this)}}pause(){this.readyState!==e.CONNECTING&&this.readyState!==e.CLOSED&&(this._paused=!0,this._socket.pause())}ping(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){D(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(t||y,n,r)}pong(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){D(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(t||y,n,r)}resume(){this.readyState!==e.CONNECTING&&this.readyState!==e.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof n==`function`&&(r=n,n={}),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){D(this,t,r);return}let i={binary:typeof t!=`string`,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[p.extensionName]||(i.compress=!1),this._sender.send(t||y,i,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){E(this,this._req,`WebSocket was closed before the connection was established`);return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(w,"CONNECTING",{enumerable:!0,value:C.indexOf(`CONNECTING`)}),Object.defineProperty(w.prototype,"CONNECTING",{enumerable:!0,value:C.indexOf(`CONNECTING`)}),Object.defineProperty(w,"OPEN",{enumerable:!0,value:C.indexOf(`OPEN`)}),Object.defineProperty(w.prototype,"OPEN",{enumerable:!0,value:C.indexOf(`OPEN`)}),Object.defineProperty(w,"CLOSING",{enumerable:!0,value:C.indexOf(`CLOSING`)}),Object.defineProperty(w.prototype,"CLOSING",{enumerable:!0,value:C.indexOf(`CLOSING`)}),Object.defineProperty(w,"CLOSED",{enumerable:!0,value:C.indexOf(`CLOSED`)}),Object.defineProperty(w.prototype,"CLOSED",{enumerable:!0,value:C.indexOf(`CLOSED`)}),[`binaryType`,`bufferedAmount`,`extensions`,`isPaused`,`protocol`,`readyState`,`url`].forEach(e=>{Object.defineProperty(w.prototype,e,{enumerable:!0})}),[`open`,`error`,`close`,`message`].forEach(e=>{Object.defineProperty(w.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[b])return t[x];return null},set(t){for(let t of this.listeners(e))if(t[b]){this.removeListener(e,t);break}typeof t==`function`&&this.addEventListener(e,t,{[b]:!0})}})}),w.prototype.addEventListener=re,w.prototype.removeEventListener=ie,n.exports=w;function de(e,t,n,r){let o={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:v,protocolVersion:le[1],maxBufferedChunks:262144,maxFragments:16384,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:`GET`,host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,e._closeTimeout=o.closeTimeout,!le.includes(o.protocolVersion))throw RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${le.join(`, `)})`);let s;if(t instanceof f)s=t;else try{s=new f(t)}catch{throw SyntaxError(`Invalid URL: ${t}`)}s.protocol===`http:`?s.protocol=`ws:`:s.protocol===`https:`&&(s.protocol=`wss:`),e._url=s.href;let u=s.protocol===`wss:`,d=s.protocol===`ws+unix:`,m;if(s.protocol!==`ws:`&&!u&&!d?m=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:d&&!s.pathname?m=`The URL's pathname is empty`:s.hash&&(m=`The URL contains a fragment identifier`),m){let t=SyntaxError(m);if(e._redirects===0)throw t;T(e,t);return}let h=u?443:80,g=c(16).toString(`base64`),_=u?i.request:a.request,y=new Set,b;if(o.createConnection=o.createConnection||(u?pe:fe),o.defaultPort=o.defaultPort||h,o.port=s.port||h,o.host=s.hostname.startsWith(`[`)?s.hostname.slice(1,-1):s.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":g,Connection:`Upgrade`,Upgrade:`websocket`},o.path=s.pathname+s.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(b=new p({...o.perMessageDeflate,isServer:!1,maxPayload:o.maxPayload}),o.headers[`Sec-WebSocket-Extensions`]=ae({[p.extensionName]:b.offer()})),n.length){for(let e of n){if(typeof e!=`string`||!ue.test(e)||y.has(e))throw SyntaxError(`An invalid or duplicated subprotocol was specified`);y.add(e)}o.headers[`Sec-WebSocket-Protocol`]=n.join(`,`)}if(o.origin&&(o.protocolVersion<13?o.headers[`Sec-WebSocket-Origin`]=o.origin:o.headers.Origin=o.origin),(s.username||s.password)&&(o.auth=`${s.username}:${s.password}`),d){let e=o.path.split(`:`);o.socketPath=e[0],o.path=e[1]}let x;if(o.followRedirects){if(e._redirects===0){e._originalIpc=d,e._originalSecure=u,e._originalHostOrSocketPath=d?o.socketPath:s.host;let t=r&&r.headers;if(r={...r,headers:{}},t)for(let[e,n]of Object.entries(t))r.headers[e.toLowerCase()]=n}else if(e.listenerCount(`redirect`)===0){let t=d?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:!e._originalIpc&&s.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!u)&&(delete o.headers.authorization,delete o.headers.cookie,t||delete o.headers.host,o.auth=void 0)}o.auth&&!r.headers.authorization&&(r.headers.authorization=`Basic `+Buffer.from(o.auth).toString(`base64`)),x=e._req=_(o),e._redirects&&e.emit(`redirect`,e.url,x)}else x=e._req=_(o);o.timeout&&x.on(`timeout`,()=>{E(e,x,`Opening handshake has timed out`)}),x.on(`error`,t=>{x===null||x[ce]||(x=e._req=null,T(e,t))}),x.on(`response`,i=>{let a=i.headers.location,s=i.statusCode;if(a&&o.followRedirects&&s>=300&&s<400){if(++e._redirects>o.maxRedirects){E(e,x,`Maximum redirects exceeded`);return}x.abort();let i;try{i=new f(a,t)}catch{T(e,SyntaxError(`Invalid URL: ${a}`));return}de(e,i,n,r)}else e.emit(`unexpected-response`,x,i)||E(e,x,`Unexpected server response: ${i.statusCode}`)}),x.on(`upgrade`,(t,n,r)=>{if(e.emit(`upgrade`,t),e.readyState!==w.CONNECTING)return;x=e._req=null;let i=t.headers.upgrade;if(i===void 0||i.toLowerCase()!==`websocket`){E(e,n,`Invalid Upgrade header`);return}let a=l(`sha1`).update(g+ee).digest(`base64`);if(t.headers[`sec-websocket-accept`]!==a){E(e,n,`Invalid Sec-WebSocket-Accept header`);return}let s=t.headers[`sec-websocket-protocol`],c;if(s===void 0?y.size&&(c=`Server sent no subprotocol`):y.size?y.has(s)||(c=`Server sent an invalid subprotocol`):c=`Server sent a subprotocol but none was requested`,c){E(e,n,c);return}s&&(e._protocol=s);let u=t.headers[`sec-websocket-extensions`];if(u!==void 0){if(!b){E(e,n,`Server sent a Sec-WebSocket-Extensions header but no extension was requested`);return}let t;try{t=oe(u)}catch{E(e,n,`Invalid Sec-WebSocket-Extensions header`);return}let r=Object.keys(t);if(r.length!==1||r[0]!==p.extensionName){E(e,n,`Server indicated an extension that was not requested`);return}try{b.accept(t[p.extensionName])}catch{E(e,n,`Invalid Sec-WebSocket-Extensions header`);return}e._extensions[p.extensionName]=b}e.setSocket(n,r,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxBufferedChunks:o.maxBufferedChunks,maxFragments:o.maxFragments,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(x,e):x.end()}function T(e,t){e._readyState=w.CLOSING,e._errorEmitted=!0,e.emit(`error`,t),e.emitClose()}function fe(e){return e.path=e.socketPath,o.connect(e)}function pe(e){return e.path=void 0,!e.servername&&e.servername!==``&&(e.servername=o.isIP(e.host)?``:e.host),s.connect(e)}function E(e,t,n){e._readyState=w.CLOSING;let r=Error(n);Error.captureStackTrace(r,E),t.setHeader?(t[ce]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(T,e,r)):(t.destroy(r),t.once(`error`,e.emit.bind(e,`error`)),t.once(`close`,e.emitClose.bind(e)))}function D(e,t,n){if(t){let n=g(t)?t.size:se(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){let t=Error(`WebSocket is not open: readyState ${e.readyState} (${C[e.readyState]})`);process.nextTick(n,t)}}function me(e,t){let n=this[S];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,n._socket[S]!==void 0&&(n._socket.removeListener(`data`,Te),process.nextTick(xe,n._socket),e===1005?n.close():n.close(e,t))}function he(){let e=this[S];e.isPaused||e._socket.resume()}function ge(e){let t=this[S];t._socket[S]!==void 0&&(t._socket.removeListener(`data`,Te),process.nextTick(xe,t._socket),t.close(e[te])),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e))}function _e(){this[S].emitClose()}function ve(e,t){this[S].emit(`message`,e,t)}function ye(e){let t=this[S];t._autoPong&&t.pong(e,!this._isServer,ne),t.emit(`ping`,e)}function be(e){this[S].emit(`pong`,e)}function xe(e){e.resume()}function Se(e){let t=this[S];t.readyState!==w.CLOSED&&(t.readyState===w.OPEN&&(t._readyState=w.CLOSING,Ce(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e)))}function Ce(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),e._closeTimeout)}function we(){let e=this[S];if(this.removeListener(`close`,we),this.removeListener(`data`,Te),this.removeListener(`end`,Ee),e._readyState=w.CLOSING,!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&this._readableState.length!==0){let t=this.read(this._readableState.length);e._receiver.write(t)}e._receiver.end(),this[S]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on(`error`,_e),e._receiver.on(`finish`,_e))}function Te(e){this[S]._receiver.write(e)||this.pause()}function Ee(){let e=this[S];e._readyState=w.CLOSING,e._receiver.end(),this.end()}function De(){let e=this[S];this.removeListener(`error`,De),this.on(`error`,ne),e&&(e._readyState=w.CLOSING,this.destroy())}})),ao=n(((e,n)=>{io();let{Duplex:r}=t(`stream`);function i(e){e.emit(`close`)}function a(){!this.destroyed&&this._writableState.finished&&this.destroy()}function o(e){this.removeListener(`error`,o),this.destroy(),this.listenerCount(`error`)===0&&this.emit(`error`,e)}function s(e,t){let n=!0,s=new r({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on(`message`,function(t,n){let r=!n&&s._readableState.objectMode?t.toString():t;s.push(r)||e.pause()}),e.once(`error`,function(e){s.destroyed||(n=!1,s.destroy(e))}),e.once(`close`,function(){s.destroyed||s.push(null)}),s._destroy=function(t,r){if(e.readyState===e.CLOSED){r(t),process.nextTick(i,s);return}let a=!1;e.once(`error`,function(e){a=!0,r(e)}),e.once(`close`,function(){a||r(t),process.nextTick(i,s)}),n&&e.terminate()},s._final=function(t){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._final(t)});return}e._socket!==null&&(e._socket._writableState.finished?(t(),s._readableState.endEmitted&&s.destroy()):(e._socket.once(`finish`,function(){t()}),e.close()))},s._read=function(){e.isPaused&&e.resume()},s._write=function(t,n,r){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._write(t,n,r)});return}e.send(t,r)},s.on(`end`,a),s.on(`error`,o),s}n.exports=s})),oo=n(((e,t)=>{let{tokenChars:n}=$a();function r(e){let t=new Set,r=-1,i=-1,a=0;for(;a<e.length;a++){let o=e.charCodeAt(a);if(i===-1&&n[o]===1)r===-1&&(r=a);else if(a!==0&&(o===32||o===9))i===-1&&r!==-1&&(i=a);else if(o===44){if(r===-1)throw SyntaxError(`Unexpected character at index ${a}`);i===-1&&(i=a);let n=e.slice(r,i);if(t.has(n))throw SyntaxError(`The "${n}" subprotocol is duplicated`);t.add(n),r=i=-1}else throw SyntaxError(`Unexpected character at index ${a}`)}if(r===-1||i!==-1)throw SyntaxError(`Unexpected end of input`);let o=e.slice(r,a);if(t.has(o))throw SyntaxError(`The "${o}" subprotocol is duplicated`);return t.add(o),t}t.exports={parse:r}})),so=n(((e,n)=>{let r=t(`events`),i=t(`http`),{Duplex:a}=t(`stream`),{createHash:o}=t(`crypto`),s=ro(),c=Qa(),l=oo(),u=io(),{CLOSE_TIMEOUT:d,GUID:f,kWebSocket:p}=Q(),m=/^[+/0-9A-Za-z]{22}==$/;n.exports=class extends r{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:262144,maxFragments:16384,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:d,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:u,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw TypeError(`One and only one of the "port", "server", or "noServer" options must be specified`);if(e.port==null?e.server&&(this._server=e.server):(this._server=i.createServer((e,t)=>{let n=i.STATUS_CODES[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":`text/plain`}),t.end(n)}),this._server.listen(e.port,e.host,e.backlog,t)),this._server){let e=this.emit.bind(this,`connection`);this._removeListeners=h(this._server,{listening:this.emit.bind(this,`listening`),error:this.emit.bind(this,`error`),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw Error(`The server is operating in "noServer" mode`);return this._server?this._server.address():null}close(e){if(this._state===2){e&&this.once(`close`,()=>{e(Error(`The server is not running`))}),process.nextTick(g,this);return}if(e&&this.once(`close`,e),this._state!==1){if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(g,this);else{let e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close(()=>{g(this)})}}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf(`?`);if((t===-1?e.url:e.url.slice(0,t))!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on(`error`,_);let i=e.headers[`sec-websocket-key`],a=e.headers.upgrade,o=+e.headers[`sec-websocket-version`];if(e.method!==`GET`){y(this,e,t,405,`Invalid HTTP method`);return}if(a===void 0||a.toLowerCase()!==`websocket`){y(this,e,t,400,`Invalid Upgrade header`);return}if(i===void 0||!m.test(i)){y(this,e,t,400,`Missing or invalid Sec-WebSocket-Key header`);return}if(o!==13&&o!==8){y(this,e,t,400,`Missing or invalid Sec-WebSocket-Version header`,{"Sec-WebSocket-Version":`13, 8`});return}if(!this.shouldHandle(e)){v(t,400);return}let u=e.headers[`sec-websocket-protocol`],d=new Set;if(u!==void 0)try{d=l.parse(u)}catch{y(this,e,t,400,`Invalid Sec-WebSocket-Protocol header`);return}let f=e.headers[`sec-websocket-extensions`],p={};if(this.options.perMessageDeflate&&f!==void 0){let n=new c({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let e=s.parse(f);e[c.extensionName]&&(n.accept(e[c.extensionName]),p[c.extensionName]=n)}catch{y(this,e,t,400,`Invalid or unacceptable Sec-WebSocket-Extensions header`);return}}if(this.options.verifyClient){let a={origin:e.headers[`${o===8?`sec-websocket-origin`:`origin`}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(a,(a,o,s,c)=>{if(!a)return v(t,o||401,s,c);this.completeUpgrade(p,i,d,e,t,n,r)});return}if(!this.options.verifyClient(a))return v(t,401)}this.completeUpgrade(p,i,d,e,t,n,r)}completeUpgrade(e,t,n,r,i,a,l){if(!i.readable||!i.writable)return i.destroy();if(i[p])throw Error(`server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration`);if(this._state>0)return v(i,503);let u=[`HTTP/1.1 101 Switching Protocols`,`Upgrade: websocket`,`Connection: Upgrade`,`Sec-WebSocket-Accept: ${o(`sha1`).update(t+f).digest(`base64`)}`],d=new this.options.WebSocket(null,void 0,this.options);if(n.size){let e=this.options.handleProtocols?this.options.handleProtocols(n,r):n.values().next().value;e&&(u.push(`Sec-WebSocket-Protocol: ${e}`),d._protocol=e)}if(e[c.extensionName]){let t=e[c.extensionName].params,n=s.format({[c.extensionName]:[t]});u.push(`Sec-WebSocket-Extensions: ${n}`),d._extensions=e}this.emit(`headers`,u,r),i.write(u.concat(`\r
1
+ import{i as e,r as t,t as n}from"./chunks/rolldown-runtime-Csi-cuKc.mjs";import{$n as r,$r as i,$t as a,A as o,Ai as s,An as c,Ar as l,At as u,Bi as d,Bn as f,Br as p,Bt as m,C as h,Ca as g,Ci as _,Cn as v,Cr as y,Ct as ee,Di as b,Dr as x,Dt as te,E as S,Ea as C,Ei as ne,Er as re,Et as ie,Fn as ae,Ft as oe,Gr as se,Gt as ce,H as w,Hn as le,Hr as T,Ht as ue,In as de,Ir as fe,It as pe,Ji as E,Jn as me,Jr as he,Jt as ge,Kr as _e,Kt as ve,Ln as ye,Lr as be,Lt as xe,M as Se,Mi as Ce,Mn as we,Mr as Te,Mt as D,N as Ee,Ni as De,Nn as Oe,O as ke,Oi as Ae,Or as je,Ot as Me,P as Ne,Pn as Pe,Pt as Fe,Qn as Ie,Qr as Le,Qt as O,R as Re,Rn as ze,Rr as Be,Rt as Ve,S as He,Si as Ue,Sn as We,Sr as Ge,T as Ke,Ta as k,Ti as qe,Tn as Je,Tr as Ye,Tt as Xe,Un as Ze,Ur as Qe,Ut as $e,V as et,Vi as tt,Vn as nt,Vr as rt,Vt as it,W as at,Wn as ot,Wr as st,Wt as ct,Xn as lt,Xr as ut,Xt as dt,Yn as ft,Yr as pt,Yt as mt,Zn as A,Zr as ht,Zt as gt,_ as _t,_i as vt,_r as yt,_t as bt,a as xt,ai as St,an as Ct,ar as wt,at as j,b as Tt,bi as Et,bn as Dt,br as Ot,bt as kt,c as At,ci as jt,cn as Mt,cr as Nt,ct as Pt,d as Ft,di as It,dn as Lt,dr as Rt,dt as zt,ei as Bt,en as Vt,er as Ht,f as Ut,fi as Wt,fn as Gt,fr as Kt,ft as qt,g as Jt,gi as Yt,gn as Xt,gt as Zt,h as M,hi as Qt,hn as $t,hr as en,ht as tn,i as nn,ii as rn,in as an,it as N,j as on,ji as sn,jn as cn,jr as ln,jt as un,k as dn,ki as fn,kr as pn,kt as mn,l as hn,li as gn,ln as _n,lr as vn,lt as yn,m as bn,mi as xn,mn as Sn,mr as Cn,mt as wn,n as Tn,ni as En,nt as Dn,o as On,oi as kn,on as An,or as jn,ot as Mn,p as Nn,pi as Pn,pn as Fn,pr as In,pt as Ln,qi as Rn,qn as zn,qr as Bn,qt as Vn,ri as Hn,rn as Un,rt as Wn,s as Gn,si as Kn,sn as qn,sr as Jn,st as Yn,t as Xn,ta as Zn,ti as Qn,u as $n,ua as P,ui as er,un as tr,ur as nr,ut as F,v as I,vi as rr,vn as ir,vt as ar,wa as or,wi as sr,wn as cr,wr as lr,wt as ur,x as dr,xi as fr,xn as pr,xr as mr,xt as hr,y as gr,yi as _r,yn as vr,yr,yt as br,z as xr,zn as Sr,zr as Cr,zt as wr}from"./chunks/node.pb-QNjWnpTx.mjs";import{MessageChannel as Tr,Worker as Er}from"node:worker_threads";import{randomUUID as Dr}from"node:crypto";import{createServer as Or}from"node:http";const kr=Symbol(`server context parent`),Ar=Symbol(`server context key`),jr=Symbol(`server context value`);function Mr(){return{}}function Nr(e,t,n){return{signal:e.signal,[kr]:e,[Ar]:t,[jr]:n}}function Pr(e,t){let n=e;for(;n;){if(n[Ar]===t)return n[jr];n=n[kr]}}async function Fr(e,t,n){let r=I({objectMode:!0}),i=t(r);r.push({body:{case:`init`,value:{componentId:e}}});let a=i[Symbol.asyncIterator]();if(n){let e=await a.next();if(e.done)throw Error(`rpcstream: closed before ack packet`);let t=e.value?.body;if(!t||t.case!==`ack`){let e=t?.case||`none`;throw Error(`rpcstream: expected ack packet but got ${e}`)}let n=t.value?.error;if(n)throw Error(`rpcstream: remote: ${n}`)}return new Ir(r,a,()=>$n(a))}var Ir=class{source;sink;_packetRx;_packetTx;_termination=new hn;_cancelRpc;constructor(e,t,n=()=>$n(t)){this._packetTx=e,this._packetRx=t,this._cancelRpc=n,this.sink=this._createSink(),this.source=this._createSource()}async close(){this._termination.terminate()&&(this._packetTx.end(),this._cancelRpc())}abort(e){this._termination.terminate(e)&&(this._packetTx.end(e),this._cancelRpc())}_createSink(){return async e=>{let t=Ft(e);try{for(;;){let e=await this._termination.next(t);if(`terminated`in e){if(e.error)throw e.error;return}if(`error`in e)throw e.error;if(e.result.done){this._packetTx.end();return}if(this._termination.terminated)return;this._packetTx.push({body:{case:`data`,value:e.result.value}})}}catch(e){let t=e instanceof Error?e:Error(String(e));throw this.abort(t),t}finally{$n(t)}}}_createSource(){let e=this._packetRx,t=this._termination;return(async function*(){try{for(;;){let n=await t.next(e);if(`terminated`in n){if(n.error)throw n.error;return}if(`error`in n)throw n.error;if(n.result.done)return;let r=n.result.value?.body;if(r)switch(r.case){case`ack`:if(r.value.error?.length)throw Error(r.value.error);break;case`data`:yield r.value}}}finally{$n(e)}})()}};const Lr=Symbol.for(`spacewave.SyncError`);var L=class extends Error{code;requestId;name=`SyncError`;[Lr]=!0;static[Symbol.hasInstance](e){return e instanceof Error&&Lr in e&&e[Lr]===!0}constructor(e,t,n){super(t),this.code=e,this.requestId=n}};function Rr(e){return e instanceof L?e:new L(`STORAGE`,`The data operation could not complete`)}function R(e){return zr(e,`$`,[])}function z(e){return new TextEncoder().encode(R(e))}function B(e){let t;try{t=new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{throw TypeError(`invalid JSON at $: data is not valid UTF-8`)}let n;try{n=JSON.parse(t)}catch{throw TypeError(`invalid JSON at $: data is not valid JSON`)}return R(n),n}function zr(e,t,n){switch(typeof e){case`boolean`:return e?`true`:`false`;case`number`:if(!Number.isFinite(e))throw TypeError(`invalid JSON at ${t}: non-finite number`);return JSON.stringify(e);case`string`:return JSON.stringify(e);case`object`:if(e===null)return`null`;break;default:throw TypeError(`invalid JSON at ${t}: ${typeof e} is not a JSON value`)}for(let r of n)if(r===e)throw TypeError(`invalid JSON at ${t}: cycle`);n.push(e);let r=Array.isArray(e)?Br(e,t,n):Vr(e,t,n);return n.pop(),r}function Br(e,t,n){let r=e.length,i=Array.from({length:r}),a=Array.from({length:r},()=>!1);for(let o of Reflect.ownKeys(e)){let s=Object.getOwnPropertyDescriptor(e,o);if(s.get!==void 0||s.set!==void 0)throw TypeError(`invalid JSON at ${t}[${String(o)}]: accessor property`);if(typeof o==`symbol`){if(s.enumerable)throw TypeError(`invalid JSON at ${t}: enumerable symbol key is not supported`);continue}let c=Number(o);if(Number.isInteger(c)&&c>=0&&c<r&&String(c)===o){a[c]=!0,i[c]=zr(s.value,`${t}[${c}]`,n);continue}if(s.enumerable)throw TypeError(`invalid JSON at ${t}: extra enumerable array property ${JSON.stringify(o)}`)}for(let e=0;e<r;e++)if(!a[e])throw TypeError(`invalid JSON at ${t}[${e}]: array hole (missing index)`);return`[${i.join(`,`)}]`}function Vr(e,t,n){let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)throw TypeError(`invalid JSON at ${t}: not a plain object`);let i=[];for(let r of Reflect.ownKeys(e)){let a=Object.getOwnPropertyDescriptor(e,r);if(a.get!==void 0||a.set!==void 0)throw TypeError(`invalid JSON at ${t}.${String(r)}: accessor property`);if(typeof r==`symbol`){if(a.enumerable)throw TypeError(`invalid JSON at ${t}: enumerable symbol key is not supported`);continue}a.enumerable&&i.push({key:r,json:zr(a.value,`${t}.${r}`,n)})}return i.sort((e,t)=>e.key<t.key?-1:+(e.key>t.key)),`{${i.map(e=>`${JSON.stringify(e.key)}:${e.json}`).join(`,`)}}`}function Hr(e){return{collection:t=>({get:async(n,r)=>{let i=await e({kind:`get`,collection:t,key:n},r);return i.found?i.value:void 0},scan:async(n,r)=>await e({kind:`scan`,collection:t,prefix:n?.prefix??``},r),put:async(n,r,i)=>{await e({kind:`put`,collection:t,key:n,value:Ur(r)},i)},delete:async(n,r)=>{await e({kind:`delete`,collection:t,key:n},r)}}),mutate:async(t,n,r)=>await e({kind:`mutate`,name:t,input:Ur(n)},r)}}function Ur(e){try{return B(z(e))}catch{throw new L(`VALIDATION`,`Input must contain only JSON-compatible values`)}}var Wr=class{opts;nonce;getSnapshot;listeners=new Set;errorListeners=new Set;constructor(e,t){this.opts=t,this.getSnapshot=e||(async()=>void 0)}get snapshot(){return this.getSnapshot()}getIterable(){return{[Symbol.asyncIterator]:()=>{let e=[],t=null,n=null,r=!1,i=null,a=n=>{if(this.opts?.mostRecentOnly){if(i={value:n,nonce:this.nonce},t){let e=t;t=null,e({value:i.value,done:!1}),i=null}}else if(t){let e=t;t=null,e({value:n,done:!1})}else e.push(n)},o=e=>{if(n){let t=n;n=null,t(e)}r=!0};return this.listeners.add(a),this.errorListeners.add(o),(async()=>{try{let e=await this.getSnapshot();e!==void 0&&a(e)}catch(e){o(e instanceof Error?e:Error(String(e)))}})(),{next:async()=>{if(r)return{value:void 0,done:!0};if(i){let{value:e}=i;return i=null,{value:e,done:!1}}return e.length>0?{value:e.shift(),done:!1}:new Promise((e,r)=>{t=e,n=r})},return:async()=>{if(this.listeners.delete(a),this.errorListeners.delete(o),r=!0,t){let e=t;t=null,e({value:void 0,done:!0})}return n=null,{value:void 0,done:!0}},throw:async()=>(this.listeners.delete(a),this.errorListeners.delete(o),r=!0,t=null,n=null,{value:void 0,done:!0})}}}}pushChangeEvent(e){this.opts?.mostRecentOnly?(this.nonce=(this.nonce??0)+1,Array.from(this.listeners).forEach(t=>t(e))):this.listeners.forEach(t=>t(e))}async pushSnapshot(){try{let e=await this.getSnapshot();e&&this.pushChangeEvent(e)}catch(e){this.errorListeners.forEach(t=>t(e instanceof Error?e:Error(String(e))))}}};for(let e of[`dispose`,`asyncDispose`])Symbol[e]||Object.defineProperty(Symbol,e,{value:Symbol.for(`Symbol.${e}`)});var V=class{resourceRef;constructor(e){this.resourceRef=e}get id(){return this.resourceRef.resourceId}get client(){return this.resourceRef.client}get released(){return this.resourceRef.released}release(){this.resourceRef.release()}[Symbol.dispose](){this.release()}};const Gr=g({typeName:`rpcstream.RpcStreamInit`,fields:[{no:1,name:`component_id`,kind:`scalar`,T:k.STRING}],packedByDefault:!0}),Kr=g({typeName:`rpcstream.RpcAck`,fields:[{no:1,name:`error`,kind:`scalar`,T:k.STRING}],packedByDefault:!0}),qr=g({typeName:`rpcstream.RpcStreamPacket`,fields:[{no:1,name:`init`,kind:`message`,T:()=>Gr,oneof:`body`},{no:2,name:`ack`,kind:`message`,T:()=>Kr,oneof:`body`},{no:3,name:`data`,kind:`scalar`,T:k.BYTES,oneof:`body`}],packedByDefault:!0}),Jr={typeName:`kvtx.rpc.Kvtx`,methods:{KvtxTransaction:{name:`KvtxTransaction`,I:Re,O:xr,kind:P.BiDiStreaming},KvtxTransactionRpc:{name:`KvtxTransactionRpc`,I:qr,O:qr,kind:P.BiDiStreaming},Watch:{name:`Watch`,I:et,O:w,kind:P.ServerStreaming}}},Yr=Jr.typeName;var Xr=class{rpc;service;constructor(e,t){this.service=t?.service||Yr,this.rpc=e,this.KvtxTransaction=this.KvtxTransaction.bind(this),this.KvtxTransactionRpc=this.KvtxTransactionRpc.bind(this),this.Watch=this.Watch.bind(this)}KvtxTransaction(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Jr.methods.KvtxTransaction.name,Jt(Re)(e),t||void 0);return M(xr)(n)}KvtxTransactionRpc(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Jr.methods.KvtxTransactionRpc.name,Jt(qr)(e),t||void 0);return M(qr)(n)}Watch(e,t){let n=et.create(e),r=this.rpc.serverStreamingRequest(this.service,Jr.methods.Watch.name,et.toBinary(n),t||void 0);return M(w)(r)}};const H={typeName:`kvtx.rpc.KvtxOps`,methods:{KeyCount:{name:`KeyCount`,I:Tt,O:dr,kind:P.Unary},KeyData:{name:`KeyData`,I:o,O:ke,kind:P.Unary},KeyExists:{name:`KeyExists`,I:o,O:dn,kind:P.Unary},SetKey:{name:`SetKey`,I:Ee,O:Ne,kind:P.Unary},DeleteKey:{name:`DeleteKey`,I:He,O:h,kind:P.Unary},ScanPrefix:{name:`ScanPrefix`,I:on,O:Se,kind:P.ServerStreaming},Iterate:{name:`Iterate`,I:Ke,O:S,kind:P.BiDiStreaming}}},Zr=H.typeName;var Qr=class{rpc;service;constructor(e,t){this.service=t?.service||Zr,this.rpc=e,this.KeyCount=this.KeyCount.bind(this),this.KeyData=this.KeyData.bind(this),this.KeyExists=this.KeyExists.bind(this),this.SetKey=this.SetKey.bind(this),this.DeleteKey=this.DeleteKey.bind(this),this.ScanPrefix=this.ScanPrefix.bind(this),this.Iterate=this.Iterate.bind(this)}async KeyCount(e,t){let n=Tt.create(e),r=await this.rpc.request(this.service,H.methods.KeyCount.name,Tt.toBinary(n),t||void 0);return dr.fromBinary(r)}async KeyData(e,t){let n=o.create(e),r=await this.rpc.request(this.service,H.methods.KeyData.name,o.toBinary(n),t||void 0);return ke.fromBinary(r)}async KeyExists(e,t){let n=o.create(e),r=await this.rpc.request(this.service,H.methods.KeyExists.name,o.toBinary(n),t||void 0);return dn.fromBinary(r)}async SetKey(e,t){let n=Ee.create(e),r=await this.rpc.request(this.service,H.methods.SetKey.name,Ee.toBinary(n),t||void 0);return Ne.fromBinary(r)}async DeleteKey(e,t){let n=He.create(e),r=await this.rpc.request(this.service,H.methods.DeleteKey.name,He.toBinary(n),t||void 0);return h.fromBinary(r)}ScanPrefix(e,t){let n=on.create(e),r=this.rpc.serverStreamingRequest(this.service,H.methods.ScanPrefix.name,on.toBinary(n),t||void 0);return M(Se)(r)}Iterate(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,H.methods.Iterate.name,Jt(Ke)(e),t||void 0);return M(S)(n)}},$r=class extends Error{constructor(){super(`The snapshot exceeds its record or byte limit; use a narrower prefix`),this.name=`KvScanLimitError`}},ei=class extends V{service;constructor(e){super(e),this.service=new Xr(e.client)}async keyCount(e){return this.withTransaction(!1,async t=>t.keyCount(e),e)}async scanKeys(e,t){return this.withTransaction(!1,async n=>n.scanKeys(e,t),t)}async*watchKeys(e,t){let n=this.service.Watch({prefix:e,onlyKeys:!1},t);for await(let e of n){if(e.error)throw Error(e.error);yield(e.entries??[]).map(e=>({key:e.key??new Uint8Array,byteLength:e.value?.length??0}))}}async*watchRecords(e,t,n){let r=new AbortController,i=n?AbortSignal.any([r.signal,n]):r.signal;i.throwIfAborted();let a=new Wr(void 0,{mostRecentOnly:!0}),o=a.getIterable()[Symbol.asyncIterator](),s=()=>{o.return?.()};i.addEventListener(`abort`,s,{once:!0});let c,l=(async()=>{try{for await(let n of this.service.Watch({prefix:e,maxRecords:BigInt(t.maxRecords),maxBytes:BigInt(t.maxBytes)},i)){if(n.limitExceeded)throw new $r;if(n.error)throw Error(n.error);let e=(n.entries??[]).map(e=>({key:e.key??new Uint8Array,value:e.value??new Uint8Array})),r=e.reduce((e,t)=>e+t.key.length+t.value.length,0);if(e.length>t.maxRecords||r>t.maxBytes)throw new $r;a.pushChangeEvent(e)}if(!i.aborted)throw Error(`kv/store: watch ended`)}catch(e){c=e}finally{await o.return?.()}})();try{for(;;){let e=await o.next();if(e.done)break;yield e.value}if(c&&!i.aborted)throw c}finally{r.abort(),i.removeEventListener(`abort`,s),await o.return?.(),await l}}async get(e,t){return this.withTransaction(!1,async n=>n.get(e,t),t)}async exists(e,t){return this.withTransaction(!1,async n=>n.exists(e,t),t)}async withTransaction(e,t,n){let r=await this.openTransaction(e,n);try{let i=await t(r);return e?await r.commit(n):await r.discard(),i}catch(e){throw await r.discard(),e}}async openTransaction(e,t){let n=I({objectMode:!0}),r=this.service.KvtxTransaction(n,t)[Symbol.asyncIterator]();n.push({body:{case:`init`,value:{write:e}}});let i=await ni(r);if(i.body?.case!==`ack`)throw n.end(),Error(`kv/store: transaction did not return ack`);if(i.body.value.error)throw n.end(),Error(i.body.value.error);let a=i.body.value.transactionId??``;if(!a)throw n.end(),Error(`kv/store: transaction ack missing transaction id`);return new ti(n,r,new Qr(new bn(()=>Fr(a,e=>this.service.KvtxTransactionRpc(e,t),!1))))}},ti=class{requests;responses;ops;released=!1;constructor(e,t,n){this.requests=e,this.responses=t,this.ops=n}async keyCount(e){return(await this.ops.KeyCount({},e)).keyCount??0n}async scanKeys(e,t){let n=[],r=this.ops.ScanPrefix({prefix:e,onlyKeys:!1},t);for await(let e of r){if(e.error)throw Error(e.error);e.key&&n.push({key:e.key,byteLength:e.value?.length??0})}return n}async scanRecords(e,t,n){let r=[],i=0,a=new AbortController,o=n?AbortSignal.any([a.signal,n]):a.signal;try{let n=this.ops.ScanPrefix({prefix:e,onlyKeys:!1},o);for await(let e of n){if(e.error)throw Error(e.error);if(!e.key)continue;let n=e.value??new Uint8Array;if(i+=e.key.length+n.length,r.length>=t.maxRecords||i>t.maxBytes)throw new $r;r.push({key:e.key,value:n})}return r}finally{a.abort()}}async get(e,t){let n=await this.ops.KeyData({key:e},t);if(n.error)throw Error(n.error);return{data:n.data??new Uint8Array,found:n.found??!1}}async exists(e,t){let n=await this.ops.KeyExists({key:e},t);if(n.error)throw Error(n.error);return n.found??!1}async set(e,t,n){let r=await this.ops.SetKey({key:e,value:t},n);if(r.error)throw Error(r.error)}async delete(e,t){let n=await this.ops.DeleteKey({key:e},t);if(n.error)throw Error(n.error)}async commit(e){if(this.released)throw Error(`kv/store: transaction already released`);this.released=!0,this.requests.push({body:{case:`commit`,value:!0}});try{let e=await ni(this.responses),t=e.body?.case===`complete`?e.body.value:null;if(!t)throw Error(`kv/store: transaction did not complete`);if(t.error)throw Error(t.error);if(!t.committed)throw Error(`kv/store: transaction discarded`)}finally{this.requests.end(),e?.throwIfAborted()}}async discard(){if(!this.released){this.released=!0,this.requests.push({body:{case:`discard`,value:!0}});try{await ni(this.responses)}finally{this.requests.end()}}}};async function ni(e){let t=await e.next();if(t.done)throw Error(`kv/store: transaction stream closed`);return t.value}function ri(e){return e?`<${e}>`:``}const ii=`types/`,ai=`<type>`;function oi(e){return e?ii+e:``}function si(e,t){return{subject:ri(e),predicate:ai,obj:ri(oi(t))}}async function ci(e,t,n){let r=await e.lookupGraphQuads(ri(t),ai,void 0,void 0,1,n);if(!r.quads||r.quads.length===0)return``;let i=r.quads[0].obj;if(!i)return li(e,t,n);let a;try{a=i.startsWith(`<`)?i.slice(1,-1):i}catch{return``}return a.startsWith(`types/`)?a.slice(6):``}async function li(e,t,n){let r=await e.iterateObjects(ii,!1,n);try{let i=async()=>{if(!await r.next(n))return``;let a=await r.key(n);if(!a.startsWith(`types/`))return i();let o=a.slice(6),s=await e.listObjectsWithType(o,n);return new Set(s).has(t)?o:i()};return await i()}finally{await r.close(n)}}async function ui(e,t,n,r){let i=!1,a=[];for(let o of t)o.obj===n?i=!0:a.push(e.deleteGraphQuad(o.subject??``,o.predicate??``,o.obj??``,o.label,r));return await Promise.all(a),i}async function di(e,t,n,r){if(!t||!n)throw Error(`empty object key or type ID`);let i=si(t,n),a=await e.lookupGraphQuads(ri(t),ai,void 0,void 0,void 0,r),o=!1;a.quads&&(o=await ui(e,a.quads,i.obj,r)),await fi(e,n,r),o||await e.setGraphQuad(i.subject??``,i.predicate??``,i.obj??``,i.label,r)}async function fi(e,t,n){let r=oi(t),i=await e.getObject(r,n);return i?(i.release(),!1):((await e.createObject(r,{},n)).release(),!0)}var pi=class extends Error{constructor(){super(`The existing object has a different ObjectType`),this.name=`KvObjectTypeError`}};async function mi(e,t,n,r){let i=await e.getObject(t,r);if(i){if(i.release(),await ci(e,t,r)!==`kv/store`)throw new pi}else try{var a=C();if(!n)return;let i=a.u(await e.stageWorldState(r)),o=a.u(await i.buildStorageCursor(r)),s=await o.putBlock({data:at.toBinary({implType:1})},r),c=await o.getRef(r);if(!s.ref)throw Error(`kv/store: missing initial root`);(await e.createObject(t,{...c.ref,rootRef:s.ref},r)).release(),await di(e,t,`kv/store`,r)}catch(e){a.e=e}finally{a.d()}let o=await e.accessTypedObject(t,r),s=e.resourceRef.createResource(o.resourceId,ei);if(o.typeId!==`kv/store`)throw s.release(),new pi;return s}const U={typeName:`s4wave.world.EngineResourceService`,methods:{GetEngineInfo:{name:`GetEngineInfo`,I:pe,O:xe,kind:P.Unary},GetWorldRootSnapshot:{name:`GetWorldRootSnapshot`,I:Vt,O:yt,kind:P.Unary},WatchWorldRootSnapshots:{name:`WatchWorldRootSnapshots`,I:In,O:yt,kind:P.ServerStreaming},SetRetainedRoot:{name:`SetRetainedRoot`,I:zn,O:me,kind:P.Unary},NewTransaction:{name:`NewTransaction`,I:Dt,O:pr,kind:P.Unary},ExecuteWorldOp:{name:`ExecuteWorldOp`,I:Pt,O:yn,kind:P.Unary},Sync:{name:`Sync`,I:r,O:Ht,kind:P.Unary},GetSeqno:{name:`GetSeqno`,I:O,O:a,kind:P.Unary},WaitSeqno:{name:`WaitSeqno`,I:vn,O:nr,kind:P.Unary},BuildStorageCursor:{name:`BuildStorageCursor`,I:F,O:zt,kind:P.Unary},AccessWorldState:{name:`AccessWorldState`,I:N,O:j,kind:P.Unary},StageWorldState:{name:`StageWorldState`,I:A,O:Ie,kind:P.Unary}}},hi=U.typeName;var gi=class{rpc;service;constructor(e,t){this.service=t?.service||hi,this.rpc=e,this.GetEngineInfo=this.GetEngineInfo.bind(this),this.GetWorldRootSnapshot=this.GetWorldRootSnapshot.bind(this),this.WatchWorldRootSnapshots=this.WatchWorldRootSnapshots.bind(this),this.SetRetainedRoot=this.SetRetainedRoot.bind(this),this.NewTransaction=this.NewTransaction.bind(this),this.ExecuteWorldOp=this.ExecuteWorldOp.bind(this),this.Sync=this.Sync.bind(this),this.GetSeqno=this.GetSeqno.bind(this),this.WaitSeqno=this.WaitSeqno.bind(this),this.BuildStorageCursor=this.BuildStorageCursor.bind(this),this.AccessWorldState=this.AccessWorldState.bind(this),this.StageWorldState=this.StageWorldState.bind(this)}async GetEngineInfo(e,t){let n=pe.create(e),r=await this.rpc.request(this.service,U.methods.GetEngineInfo.name,pe.toBinary(n),t||void 0);return xe.fromBinary(r)}async GetWorldRootSnapshot(e,t){let n=Vt.create(e),r=await this.rpc.request(this.service,U.methods.GetWorldRootSnapshot.name,Vt.toBinary(n),t||void 0);return yt.fromBinary(r)}WatchWorldRootSnapshots(e,t){let n=In.create(e),r=this.rpc.serverStreamingRequest(this.service,U.methods.WatchWorldRootSnapshots.name,In.toBinary(n),t||void 0);return M(yt)(r)}async SetRetainedRoot(e,t){let n=zn.create(e),r=await this.rpc.request(this.service,U.methods.SetRetainedRoot.name,zn.toBinary(n),t||void 0);return me.fromBinary(r)}async NewTransaction(e,t){let n=Dt.create(e),r=await this.rpc.request(this.service,U.methods.NewTransaction.name,Dt.toBinary(n),t||void 0);return pr.fromBinary(r)}async ExecuteWorldOp(e,t){let n=Pt.create(e),r=await this.rpc.request(this.service,U.methods.ExecuteWorldOp.name,Pt.toBinary(n),t||void 0);return yn.fromBinary(r)}async Sync(e,t){let n=r.create(e),i=await this.rpc.request(this.service,U.methods.Sync.name,r.toBinary(n),t||void 0);return Ht.fromBinary(i)}async GetSeqno(e,t){let n=O.create(e),r=await this.rpc.request(this.service,U.methods.GetSeqno.name,O.toBinary(n),t||void 0);return a.fromBinary(r)}async WaitSeqno(e,t){let n=vn.create(e),r=await this.rpc.request(this.service,U.methods.WaitSeqno.name,vn.toBinary(n),t||void 0);return nr.fromBinary(r)}async BuildStorageCursor(e,t){let n=F.create(e),r=await this.rpc.request(this.service,U.methods.BuildStorageCursor.name,F.toBinary(n),t||void 0);return zt.fromBinary(r)}async AccessWorldState(e,t){let n=N.create(e),r=await this.rpc.request(this.service,U.methods.AccessWorldState.name,N.toBinary(n),t||void 0);return j.fromBinary(r)}async StageWorldState(e,t){let n=A.create(e),r=await this.rpc.request(this.service,U.methods.StageWorldState.name,A.toBinary(n),t||void 0);return Ie.fromBinary(r)}};const _i={typeName:`s4wave.world.WorldStageResourceService`,methods:{BuildStorageCursor:{name:`BuildStorageCursor`,I:F,O:zt,kind:P.Unary},AccessWorldState:{name:`AccessWorldState`,I:N,O:j,kind:P.Unary},ReleaseRoots:{name:`ReleaseRoots`,I:ye,O:ze,kind:P.Unary}}},vi=_i.typeName;var yi=class{rpc;service;constructor(e,t){this.service=t?.service||vi,this.rpc=e,this.BuildStorageCursor=this.BuildStorageCursor.bind(this),this.AccessWorldState=this.AccessWorldState.bind(this),this.ReleaseRoots=this.ReleaseRoots.bind(this)}async BuildStorageCursor(e,t){let n=F.create(e),r=await this.rpc.request(this.service,_i.methods.BuildStorageCursor.name,F.toBinary(n),t||void 0);return zt.fromBinary(r)}async AccessWorldState(e,t){let n=N.create(e),r=await this.rpc.request(this.service,_i.methods.AccessWorldState.name,N.toBinary(n),t||void 0);return j.fromBinary(r)}async ReleaseRoots(e,t){let n=ye.create(e),r=await this.rpc.request(this.service,_i.methods.ReleaseRoots.name,ye.toBinary(n),t||void 0);return ze.fromBinary(r)}};const W={typeName:`s4wave.world.WorldStateResourceService`,methods:{CompareObjectRecords:{name:`CompareObjectRecords`,I:kt,O:hr,kind:P.Unary},GetReadOnly:{name:`GetReadOnly`,I:ge,O:mt,kind:P.Unary},Sync:{name:`Sync`,I:r,O:Ht,kind:P.Unary},GetSeqno:{name:`GetSeqno`,I:O,O:a,kind:P.Unary},WaitSeqno:{name:`WaitSeqno`,I:vn,O:nr,kind:P.Unary},BuildStorageCursor:{name:`BuildStorageCursor`,I:F,O:zt,kind:P.Unary},AccessWorldState:{name:`AccessWorldState`,I:N,O:j,kind:P.Unary},StageWorldState:{name:`StageWorldState`,I:A,O:Ie,kind:P.Unary},OpenNestedWorld:{name:`OpenNestedWorld`,I:cn,O:we,kind:P.Unary},OpenOuterWorld:{name:`OpenOuterWorld`,I:Oe,O:Pe,kind:P.Unary},CreateObject:{name:`CreateObject`,I:ee,O:ur,kind:P.Unary},GetObject:{name:`GetObject`,I:ct,O:ce,kind:P.Unary},IterateObjects:{name:`IterateObjects`,I:Ct,O:An,kind:P.Unary},ListObjects:{name:`ListObjects`,I:Lt,O:Gt,kind:P.Unary},RenameObject:{name:`RenameObject`,I:Sr,O:f,kind:P.Unary},DeleteObject:{name:`DeleteObject`,I:mn,O:u,kind:P.Unary},SetGraphQuad:{name:`SetGraphQuad`,I:Ze,O:ot,kind:P.Unary},DeleteGraphQuad:{name:`DeleteGraphQuad`,I:te,O:Me,kind:P.Unary},LookupGraphQuads:{name:`LookupGraphQuads`,I:ir,O:vr,kind:P.Unary},LookupGraphQuadsBatch:{name:`LookupGraphQuadsBatch`,I:$t,O:Xt,kind:P.Unary},ListGraphEdgeBuckets:{name:`ListGraphEdgeBuckets`,I:_n,O:tr,kind:P.Unary},ListObjectsWithType:{name:`ListObjectsWithType`,I:Fn,O:Sn,kind:P.Unary},GetObjectRootRefsBatch:{name:`GetObjectRootRefsBatch`,I:ve,O:Vn,kind:P.Unary},GetObjectMetadataBatch:{name:`GetObjectMetadataBatch`,I:ue,O:$e,kind:P.Unary},GetObjectBodiesBatch:{name:`GetObjectBodiesBatch`,I:m,O:it,kind:P.ServerStreaming},QueryGraphPath:{name:`QueryGraphPath`,I:ae,O:de,kind:P.Unary},DeleteGraphObject:{name:`DeleteGraphObject`,I:Xe,O:ie,kind:P.Unary},ApplyWorldOp:{name:`ApplyWorldOp`,I:Pt,O:yn,kind:P.Unary}}},bi=W.typeName;var xi=class{rpc;service;constructor(e,t){this.service=t?.service||bi,this.rpc=e,this.CompareObjectRecords=this.CompareObjectRecords.bind(this),this.GetReadOnly=this.GetReadOnly.bind(this),this.Sync=this.Sync.bind(this),this.GetSeqno=this.GetSeqno.bind(this),this.WaitSeqno=this.WaitSeqno.bind(this),this.BuildStorageCursor=this.BuildStorageCursor.bind(this),this.AccessWorldState=this.AccessWorldState.bind(this),this.StageWorldState=this.StageWorldState.bind(this),this.OpenNestedWorld=this.OpenNestedWorld.bind(this),this.OpenOuterWorld=this.OpenOuterWorld.bind(this),this.CreateObject=this.CreateObject.bind(this),this.GetObject=this.GetObject.bind(this),this.IterateObjects=this.IterateObjects.bind(this),this.ListObjects=this.ListObjects.bind(this),this.RenameObject=this.RenameObject.bind(this),this.DeleteObject=this.DeleteObject.bind(this),this.SetGraphQuad=this.SetGraphQuad.bind(this),this.DeleteGraphQuad=this.DeleteGraphQuad.bind(this),this.LookupGraphQuads=this.LookupGraphQuads.bind(this),this.LookupGraphQuadsBatch=this.LookupGraphQuadsBatch.bind(this),this.ListGraphEdgeBuckets=this.ListGraphEdgeBuckets.bind(this),this.ListObjectsWithType=this.ListObjectsWithType.bind(this),this.GetObjectRootRefsBatch=this.GetObjectRootRefsBatch.bind(this),this.GetObjectMetadataBatch=this.GetObjectMetadataBatch.bind(this),this.GetObjectBodiesBatch=this.GetObjectBodiesBatch.bind(this),this.QueryGraphPath=this.QueryGraphPath.bind(this),this.DeleteGraphObject=this.DeleteGraphObject.bind(this),this.ApplyWorldOp=this.ApplyWorldOp.bind(this)}async CompareObjectRecords(e,t){let n=kt.create(e),r=await this.rpc.request(this.service,W.methods.CompareObjectRecords.name,kt.toBinary(n),t||void 0);return hr.fromBinary(r)}async GetReadOnly(e,t){let n=ge.create(e),r=await this.rpc.request(this.service,W.methods.GetReadOnly.name,ge.toBinary(n),t||void 0);return mt.fromBinary(r)}async Sync(e,t){let n=r.create(e),i=await this.rpc.request(this.service,W.methods.Sync.name,r.toBinary(n),t||void 0);return Ht.fromBinary(i)}async GetSeqno(e,t){let n=O.create(e),r=await this.rpc.request(this.service,W.methods.GetSeqno.name,O.toBinary(n),t||void 0);return a.fromBinary(r)}async WaitSeqno(e,t){let n=vn.create(e),r=await this.rpc.request(this.service,W.methods.WaitSeqno.name,vn.toBinary(n),t||void 0);return nr.fromBinary(r)}async BuildStorageCursor(e,t){let n=F.create(e),r=await this.rpc.request(this.service,W.methods.BuildStorageCursor.name,F.toBinary(n),t||void 0);return zt.fromBinary(r)}async AccessWorldState(e,t){let n=N.create(e),r=await this.rpc.request(this.service,W.methods.AccessWorldState.name,N.toBinary(n),t||void 0);return j.fromBinary(r)}async StageWorldState(e,t){let n=A.create(e),r=await this.rpc.request(this.service,W.methods.StageWorldState.name,A.toBinary(n),t||void 0);return Ie.fromBinary(r)}async OpenNestedWorld(e,t){let n=cn.create(e),r=await this.rpc.request(this.service,W.methods.OpenNestedWorld.name,cn.toBinary(n),t||void 0);return we.fromBinary(r)}async OpenOuterWorld(e,t){let n=Oe.create(e),r=await this.rpc.request(this.service,W.methods.OpenOuterWorld.name,Oe.toBinary(n),t||void 0);return Pe.fromBinary(r)}async CreateObject(e,t){let n=ee.create(e),r=await this.rpc.request(this.service,W.methods.CreateObject.name,ee.toBinary(n),t||void 0);return ur.fromBinary(r)}async GetObject(e,t){let n=ct.create(e),r=await this.rpc.request(this.service,W.methods.GetObject.name,ct.toBinary(n),t||void 0);return ce.fromBinary(r)}async IterateObjects(e,t){let n=Ct.create(e),r=await this.rpc.request(this.service,W.methods.IterateObjects.name,Ct.toBinary(n),t||void 0);return An.fromBinary(r)}async ListObjects(e,t){let n=Lt.create(e),r=await this.rpc.request(this.service,W.methods.ListObjects.name,Lt.toBinary(n),t||void 0);return Gt.fromBinary(r)}async RenameObject(e,t){let n=Sr.create(e),r=await this.rpc.request(this.service,W.methods.RenameObject.name,Sr.toBinary(n),t||void 0);return f.fromBinary(r)}async DeleteObject(e,t){let n=mn.create(e),r=await this.rpc.request(this.service,W.methods.DeleteObject.name,mn.toBinary(n),t||void 0);return u.fromBinary(r)}async SetGraphQuad(e,t){let n=Ze.create(e),r=await this.rpc.request(this.service,W.methods.SetGraphQuad.name,Ze.toBinary(n),t||void 0);return ot.fromBinary(r)}async DeleteGraphQuad(e,t){let n=te.create(e),r=await this.rpc.request(this.service,W.methods.DeleteGraphQuad.name,te.toBinary(n),t||void 0);return Me.fromBinary(r)}async LookupGraphQuads(e,t){let n=ir.create(e),r=await this.rpc.request(this.service,W.methods.LookupGraphQuads.name,ir.toBinary(n),t||void 0);return vr.fromBinary(r)}async LookupGraphQuadsBatch(e,t){let n=$t.create(e),r=await this.rpc.request(this.service,W.methods.LookupGraphQuadsBatch.name,$t.toBinary(n),t||void 0);return Xt.fromBinary(r)}async ListGraphEdgeBuckets(e,t){let n=_n.create(e),r=await this.rpc.request(this.service,W.methods.ListGraphEdgeBuckets.name,_n.toBinary(n),t||void 0);return tr.fromBinary(r)}async ListObjectsWithType(e,t){let n=Fn.create(e),r=await this.rpc.request(this.service,W.methods.ListObjectsWithType.name,Fn.toBinary(n),t||void 0);return Sn.fromBinary(r)}async GetObjectRootRefsBatch(e,t){let n=ve.create(e),r=await this.rpc.request(this.service,W.methods.GetObjectRootRefsBatch.name,ve.toBinary(n),t||void 0);return Vn.fromBinary(r)}async GetObjectMetadataBatch(e,t){let n=ue.create(e),r=await this.rpc.request(this.service,W.methods.GetObjectMetadataBatch.name,ue.toBinary(n),t||void 0);return $e.fromBinary(r)}GetObjectBodiesBatch(e,t){let n=m.create(e),r=this.rpc.serverStreamingRequest(this.service,W.methods.GetObjectBodiesBatch.name,m.toBinary(n),t||void 0);return M(it)(r)}async QueryGraphPath(e,t){let n=ae.create(e),r=await this.rpc.request(this.service,W.methods.QueryGraphPath.name,ae.toBinary(n),t||void 0);return de.fromBinary(r)}async DeleteGraphObject(e,t){let n=Xe.create(e),r=await this.rpc.request(this.service,W.methods.DeleteGraphObject.name,Xe.toBinary(n),t||void 0);return ie.fromBinary(r)}async ApplyWorldOp(e,t){let n=Pt.create(e),r=await this.rpc.request(this.service,W.methods.ApplyWorldOp.name,Pt.toBinary(n),t||void 0);return yn.fromBinary(r)}};const Si={typeName:`s4wave.world.WatchWorldStateResourceService`,methods:{WatchWorldState:{name:`WatchWorldState`,I:Cn,O:en,kind:P.ServerStreaming}}},Ci=Si.typeName;var wi=class{rpc;service;constructor(e,t){this.service=t?.service||Ci,this.rpc=e,this.WatchWorldState=this.WatchWorldState.bind(this)}WatchWorldState(e,t){let n=Cn.create(e),r=this.rpc.serverStreamingRequest(this.service,Si.methods.WatchWorldState.name,Cn.toBinary(n),t||void 0);return M(en)(r)}};const Ti={typeName:`s4wave.world.TxResourceService`,methods:{CommitMutations:{name:`CommitMutations`,I:Zt,O:bt,kind:P.Unary},Commit:{name:`Commit`,I:ar,O:br,kind:P.Unary},Discard:{name:`Discard`,I:un,O:D,kind:P.Unary}}},Ei=Ti.typeName;var Di=class{rpc;service;constructor(e,t){this.service=t?.service||Ei,this.rpc=e,this.CommitMutations=this.CommitMutations.bind(this),this.Commit=this.Commit.bind(this),this.Discard=this.Discard.bind(this)}async CommitMutations(e,t){let n=Zt.create(e),r=await this.rpc.request(this.service,Ti.methods.CommitMutations.name,Zt.toBinary(n),t||void 0);return bt.fromBinary(r)}async Commit(e,t){let n=ar.create(e),r=await this.rpc.request(this.service,Ti.methods.Commit.name,ar.toBinary(n),t||void 0);return br.fromBinary(r)}async Discard(e,t){let n=un.create(e),r=await this.rpc.request(this.service,Ti.methods.Discard.name,un.toBinary(n),t||void 0);return D.fromBinary(r)}};const G={typeName:`s4wave.world.ObjectIteratorResourceService`,methods:{Err:{name:`Err`,I:Fe,O:oe,kind:P.Unary},Valid:{name:`Valid`,I:wt,O:jn,kind:P.Unary},Key:{name:`Key`,I:qn,O:Mt,kind:P.Unary},Next:{name:`Next`,I:cr,O:Je,kind:P.Unary},Seek:{name:`Seek`,I:nt,O:le,kind:P.Unary},Close:{name:`Close`,I:wn,O:tn,kind:P.Unary}}},Oi=G.typeName;var ki=class{rpc;service;constructor(e,t){this.service=t?.service||Oi,this.rpc=e,this.Err=this.Err.bind(this),this.Valid=this.Valid.bind(this),this.Key=this.Key.bind(this),this.Next=this.Next.bind(this),this.Seek=this.Seek.bind(this),this.Close=this.Close.bind(this)}async Err(e,t){let n=Fe.create(e),r=await this.rpc.request(this.service,G.methods.Err.name,Fe.toBinary(n),t||void 0);return oe.fromBinary(r)}async Valid(e,t){let n=wt.create(e),r=await this.rpc.request(this.service,G.methods.Valid.name,wt.toBinary(n),t||void 0);return jn.fromBinary(r)}async Key(e,t){let n=qn.create(e),r=await this.rpc.request(this.service,G.methods.Key.name,qn.toBinary(n),t||void 0);return Mt.fromBinary(r)}async Next(e,t){let n=cr.create(e),r=await this.rpc.request(this.service,G.methods.Next.name,cr.toBinary(n),t||void 0);return Je.fromBinary(r)}async Seek(e,t){let n=nt.create(e),r=await this.rpc.request(this.service,G.methods.Seek.name,nt.toBinary(n),t||void 0);return le.fromBinary(r)}async Close(e,t){let n=wn.create(e),r=await this.rpc.request(this.service,G.methods.Close.name,wn.toBinary(n),t||void 0);return tn.fromBinary(r)}};({typeName:`s4wave.world.GraphPathQueryResourceService`,methods:{Next:{name:`Next`,I:We,O:v,kind:P.Unary},Close:{name:`Close`,I:qt,O:Ln,kind:P.Unary}}}).typeName;const K={typeName:`s4wave.world.ObjectStateResourceService`,methods:{GetKey:{name:`GetKey`,I:Ve,O:wr,kind:P.Unary},GetRootRef:{name:`GetRootRef`,I:dt,O:gt,kind:P.Unary},SetRootRef:{name:`SetRootRef`,I:ft,O:lt,kind:P.Unary},AccessWorldState:{name:`AccessWorldState`,I:N,O:j,kind:P.Unary},ApplyObjectOp:{name:`ApplyObjectOp`,I:Mn,O:Yn,kind:P.Unary},IncrementRev:{name:`IncrementRev`,I:Un,O:an,kind:P.Unary},WaitRev:{name:`WaitRev`,I:Jn,O:Nt,kind:P.Unary}}},Ai=K.typeName;var ji=class{rpc;service;constructor(e,t){this.service=t?.service||Ai,this.rpc=e,this.GetKey=this.GetKey.bind(this),this.GetRootRef=this.GetRootRef.bind(this),this.SetRootRef=this.SetRootRef.bind(this),this.AccessWorldState=this.AccessWorldState.bind(this),this.ApplyObjectOp=this.ApplyObjectOp.bind(this),this.IncrementRev=this.IncrementRev.bind(this),this.WaitRev=this.WaitRev.bind(this)}async GetKey(e,t){let n=Ve.create(e),r=await this.rpc.request(this.service,K.methods.GetKey.name,Ve.toBinary(n),t||void 0);return wr.fromBinary(r)}async GetRootRef(e,t){let n=dt.create(e),r=await this.rpc.request(this.service,K.methods.GetRootRef.name,dt.toBinary(n),t||void 0);return gt.fromBinary(r)}async SetRootRef(e,t){let n=ft.create(e),r=await this.rpc.request(this.service,K.methods.SetRootRef.name,ft.toBinary(n),t||void 0);return lt.fromBinary(r)}async AccessWorldState(e,t){let n=N.create(e),r=await this.rpc.request(this.service,K.methods.AccessWorldState.name,N.toBinary(n),t||void 0);return j.fromBinary(r)}async ApplyObjectOp(e,t){let n=Mn.create(e),r=await this.rpc.request(this.service,K.methods.ApplyObjectOp.name,Mn.toBinary(n),t||void 0);return Yn.fromBinary(r)}async IncrementRev(e,t){let n=Un.create(e),r=await this.rpc.request(this.service,K.methods.IncrementRev.name,Un.toBinary(n),t||void 0);return an.fromBinary(r)}async WaitRev(e,t){let n=Jn.create(e),r=await this.rpc.request(this.service,K.methods.WaitRev.name,Jn.toBinary(n),t||void 0);return Nt.fromBinary(r)}};const Mi={typeName:`s4wave.world.TypedObjectResourceService`,methods:{AccessTypedObject:{name:`AccessTypedObject`,I:Dn,O:Wn,kind:P.Unary},WatchTypedObject:{name:`WatchTypedObject`,I:Rt,O:Kt,kind:P.ServerStreaming}}},Ni=Mi.typeName;var Pi=class{rpc;service;constructor(e,t){this.service=t?.service||Ni,this.rpc=e,this.AccessTypedObject=this.AccessTypedObject.bind(this),this.WatchTypedObject=this.WatchTypedObject.bind(this)}async AccessTypedObject(e,t){let n=Dn.create(e),r=await this.rpc.request(this.service,Mi.methods.AccessTypedObject.name,Dn.toBinary(n),t||void 0);return Wn.fromBinary(r)}WatchTypedObject(e,t){let n=Rt.create(e),r=this.rpc.serverStreamingRequest(this.service,Mi.methods.WatchTypedObject.name,Rt.toBinary(n),t||void 0);return M(Kt)(r)}};const q={typeName:`s4wave.bucket_lookup.BucketLookupCursorResourceService`,methods:{GetRef:{name:`GetRef`,I:ln,O:Te,kind:P.Unary},FollowRef:{name:`FollowRef`,I:Ye,O:re,kind:P.Unary},GetBlock:{name:`GetBlock`,I:pn,O:l,kind:P.Unary},PutBlock:{name:`PutBlock`,I:Be,O:Cr,kind:P.Unary},PutBlockBatch:{name:`PutBlockBatch`,I:fe,O:be,kind:P.Unary},GetBlockExistsBatch:{name:`GetBlockExistsBatch`,I:x,O:je,kind:P.Unary},BuildTransaction:{name:`BuildTransaction`,I:mr,O:Ge,kind:P.Unary},BuildTransactionAtRef:{name:`BuildTransactionAtRef`,I:yr,O:Ot,kind:P.Unary},Clone:{name:`Clone`,I:y,O:lr,kind:P.Unary},Release:{name:`Release`,I:p,O:rt,kind:P.Unary},Unmarshal:{name:`Unmarshal`,I:T,O:Qe,kind:P.Unary}}},Fi=q.typeName;var Ii=class{rpc;service;constructor(e,t){this.service=t?.service||Fi,this.rpc=e,this.GetRef=this.GetRef.bind(this),this.FollowRef=this.FollowRef.bind(this),this.GetBlock=this.GetBlock.bind(this),this.PutBlock=this.PutBlock.bind(this),this.PutBlockBatch=this.PutBlockBatch.bind(this),this.GetBlockExistsBatch=this.GetBlockExistsBatch.bind(this),this.BuildTransaction=this.BuildTransaction.bind(this),this.BuildTransactionAtRef=this.BuildTransactionAtRef.bind(this),this.Clone=this.Clone.bind(this),this.Release=this.Release.bind(this),this.Unmarshal=this.Unmarshal.bind(this)}async GetRef(e,t){let n=ln.create(e),r=await this.rpc.request(this.service,q.methods.GetRef.name,ln.toBinary(n),t||void 0);return Te.fromBinary(r)}async FollowRef(e,t){let n=Ye.create(e),r=await this.rpc.request(this.service,q.methods.FollowRef.name,Ye.toBinary(n),t||void 0);return re.fromBinary(r)}async GetBlock(e,t){let n=pn.create(e),r=await this.rpc.request(this.service,q.methods.GetBlock.name,pn.toBinary(n),t||void 0);return l.fromBinary(r)}async PutBlock(e,t){let n=Be.create(e),r=await this.rpc.request(this.service,q.methods.PutBlock.name,Be.toBinary(n),t||void 0);return Cr.fromBinary(r)}async PutBlockBatch(e,t){let n=fe.create(e),r=await this.rpc.request(this.service,q.methods.PutBlockBatch.name,fe.toBinary(n),t||void 0);return be.fromBinary(r)}async GetBlockExistsBatch(e,t){let n=x.create(e),r=await this.rpc.request(this.service,q.methods.GetBlockExistsBatch.name,x.toBinary(n),t||void 0);return je.fromBinary(r)}async BuildTransaction(e,t){let n=mr.create(e),r=await this.rpc.request(this.service,q.methods.BuildTransaction.name,mr.toBinary(n),t||void 0);return Ge.fromBinary(r)}async BuildTransactionAtRef(e,t){let n=yr.create(e),r=await this.rpc.request(this.service,q.methods.BuildTransactionAtRef.name,yr.toBinary(n),t||void 0);return Ot.fromBinary(r)}async Clone(e,t){let n=y.create(e),r=await this.rpc.request(this.service,q.methods.Clone.name,y.toBinary(n),t||void 0);return lr.fromBinary(r)}async Release(e,t){let n=p.create(e),r=await this.rpc.request(this.service,q.methods.Release.name,p.toBinary(n),t||void 0);return rt.fromBinary(r)}async Unmarshal(e,t){let n=T.create(e),r=await this.rpc.request(this.service,q.methods.Unmarshal.name,T.toBinary(n),t||void 0);return Qe.fromBinary(r)}};const J={typeName:`s4wave.block.cursor.BlockCursorResourceService`,methods:{Fetch:{name:`Fetch`,I:rn,O:St,kind:P.Unary},SetBlock:{name:`SetBlock`,I:Ae,O:fn,kind:P.Unary},FollowRef:{name:`FollowRef`,I:kn,O:Kn,kind:P.Unary},GetRef:{name:`GetRef`,I:Yt,O:vt,kind:P.Unary},IsDirty:{name:`IsDirty`,I:rr,O:_r,kind:P.Unary},MarkDirty:{name:`MarkDirty`,I:Ue,O:_,kind:P.Unary},GetBlock:{name:`GetBlock`,I:Wt,O:Pn,kind:P.Unary},Unmarshal:{name:`Unmarshal`,I:Ce,O:De,kind:P.Unary},IsSubBlock:{name:`IsSubBlock`,I:Et,O:fr,kind:P.Unary},FollowSubBlock:{name:`FollowSubBlock`,I:jt,O:gn,kind:P.Unary},SetAsSubBlock:{name:`SetAsSubBlock`,I:ne,O:b,kind:P.Unary},ClearRef:{name:`ClearRef`,I:ut,O:ht,kind:P.Unary},ClearAllRefs:{name:`ClearAllRefs`,I:he,O:pt,kind:P.Unary},SetRef:{name:`SetRef`,I:s,O:sn,kind:P.Unary},GetExistingRef:{name:`GetExistingRef`,I:xn,O:Qt,kind:P.Unary},GetAllRefs:{name:`GetAllRefs`,I:er,O:It,kind:P.Unary},Detach:{name:`Detach`,I:Bt,O:Qn,kind:P.Unary},DetachTransaction:{name:`DetachTransaction`,I:En,O:Hn,kind:P.Unary},DetachRecursive:{name:`DetachRecursive`,I:Le,O:i,kind:P.Unary},Parents:{name:`Parents`,I:sr,O:qe,kind:P.Unary}}},Li=J.typeName;var Ri=class{rpc;service;constructor(e,t){this.service=t?.service||Li,this.rpc=e,this.Fetch=this.Fetch.bind(this),this.SetBlock=this.SetBlock.bind(this),this.FollowRef=this.FollowRef.bind(this),this.GetRef=this.GetRef.bind(this),this.IsDirty=this.IsDirty.bind(this),this.MarkDirty=this.MarkDirty.bind(this),this.GetBlock=this.GetBlock.bind(this),this.Unmarshal=this.Unmarshal.bind(this),this.IsSubBlock=this.IsSubBlock.bind(this),this.FollowSubBlock=this.FollowSubBlock.bind(this),this.SetAsSubBlock=this.SetAsSubBlock.bind(this),this.ClearRef=this.ClearRef.bind(this),this.ClearAllRefs=this.ClearAllRefs.bind(this),this.SetRef=this.SetRef.bind(this),this.GetExistingRef=this.GetExistingRef.bind(this),this.GetAllRefs=this.GetAllRefs.bind(this),this.Detach=this.Detach.bind(this),this.DetachTransaction=this.DetachTransaction.bind(this),this.DetachRecursive=this.DetachRecursive.bind(this),this.Parents=this.Parents.bind(this)}async Fetch(e,t){let n=rn.create(e),r=await this.rpc.request(this.service,J.methods.Fetch.name,rn.toBinary(n),t||void 0);return St.fromBinary(r)}async SetBlock(e,t){let n=Ae.create(e),r=await this.rpc.request(this.service,J.methods.SetBlock.name,Ae.toBinary(n),t||void 0);return fn.fromBinary(r)}async FollowRef(e,t){let n=kn.create(e),r=await this.rpc.request(this.service,J.methods.FollowRef.name,kn.toBinary(n),t||void 0);return Kn.fromBinary(r)}async GetRef(e,t){let n=Yt.create(e),r=await this.rpc.request(this.service,J.methods.GetRef.name,Yt.toBinary(n),t||void 0);return vt.fromBinary(r)}async IsDirty(e,t){let n=rr.create(e),r=await this.rpc.request(this.service,J.methods.IsDirty.name,rr.toBinary(n),t||void 0);return _r.fromBinary(r)}async MarkDirty(e,t){let n=Ue.create(e),r=await this.rpc.request(this.service,J.methods.MarkDirty.name,Ue.toBinary(n),t||void 0);return _.fromBinary(r)}async GetBlock(e,t){let n=Wt.create(e),r=await this.rpc.request(this.service,J.methods.GetBlock.name,Wt.toBinary(n),t||void 0);return Pn.fromBinary(r)}async Unmarshal(e,t){let n=Ce.create(e),r=await this.rpc.request(this.service,J.methods.Unmarshal.name,Ce.toBinary(n),t||void 0);return De.fromBinary(r)}async IsSubBlock(e,t){let n=Et.create(e),r=await this.rpc.request(this.service,J.methods.IsSubBlock.name,Et.toBinary(n),t||void 0);return fr.fromBinary(r)}async FollowSubBlock(e,t){let n=jt.create(e),r=await this.rpc.request(this.service,J.methods.FollowSubBlock.name,jt.toBinary(n),t||void 0);return gn.fromBinary(r)}async SetAsSubBlock(e,t){let n=ne.create(e),r=await this.rpc.request(this.service,J.methods.SetAsSubBlock.name,ne.toBinary(n),t||void 0);return b.fromBinary(r)}async ClearRef(e,t){let n=ut.create(e),r=await this.rpc.request(this.service,J.methods.ClearRef.name,ut.toBinary(n),t||void 0);return ht.fromBinary(r)}async ClearAllRefs(e,t){let n=he.create(e),r=await this.rpc.request(this.service,J.methods.ClearAllRefs.name,he.toBinary(n),t||void 0);return pt.fromBinary(r)}async SetRef(e,t){let n=s.create(e),r=await this.rpc.request(this.service,J.methods.SetRef.name,s.toBinary(n),t||void 0);return sn.fromBinary(r)}async GetExistingRef(e,t){let n=xn.create(e),r=await this.rpc.request(this.service,J.methods.GetExistingRef.name,xn.toBinary(n),t||void 0);return Qt.fromBinary(r)}async GetAllRefs(e,t){let n=er.create(e),r=await this.rpc.request(this.service,J.methods.GetAllRefs.name,er.toBinary(n),t||void 0);return It.fromBinary(r)}async Detach(e,t){let n=Bt.create(e),r=await this.rpc.request(this.service,J.methods.Detach.name,Bt.toBinary(n),t||void 0);return Qn.fromBinary(r)}async DetachTransaction(e,t){let n=En.create(e),r=await this.rpc.request(this.service,J.methods.DetachTransaction.name,En.toBinary(n),t||void 0);return Hn.fromBinary(r)}async DetachRecursive(e,t){let n=Le.create(e),r=await this.rpc.request(this.service,J.methods.DetachRecursive.name,Le.toBinary(n),t||void 0);return i.fromBinary(r)}async Parents(e,t){let n=sr.create(e),r=await this.rpc.request(this.service,J.methods.Parents.name,sr.toBinary(n),t||void 0);return qe.fromBinary(r)}},zi=class e extends V{service;constructor(e){super(e),this.service=new Ri(e.client)}async fetch(e){return await this.service.Fetch({},e)}async setBlock(e,t){await this.service.SetBlock(e,t)}async followRef(t,n){let r=await this.service.FollowRef(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}async getRef(e){return await this.service.GetRef({},e)}async isDirty(e){return await this.service.IsDirty({},e)}async markDirty(e){await this.service.MarkDirty({},e)}async getBlock(e){return await this.service.GetBlock({},e)}async unmarshal(e={},t){return await this.service.Unmarshal(e,t)}async isSubBlock(e){return await this.service.IsSubBlock({},e)}async followSubBlock(t,n){let r=await this.service.FollowSubBlock(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}async setAsSubBlock(e,t){await this.service.SetAsSubBlock(e,t)}async clearRef(e,t){await this.service.ClearRef(e,t)}async clearAllRefs(e){await this.service.ClearAllRefs({},e)}async setRef(e,t){await this.service.SetRef(e,t)}async getExistingRef(t,n){let r=await this.service.GetExistingRef(t,n);return r.resourceId?this.resourceRef.createResource(r.resourceId,e):null}async getAllRefs(e,t){return await this.service.GetAllRefs(e,t)}async detach(t,n){let r=await this.service.Detach(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}async detachTransaction(t){let n=await this.service.DetachTransaction({},t);return this.resourceRef.createResource(n.resourceId??0,e)}async detachRecursive(t,n){let r=await this.service.DetachRecursive(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}async parents(e){return await this.service.Parents({},e)}};const Bi={typeName:`s4wave.block.transaction.BlockTransactionResourceService`,methods:{Write:{name:`Write`,I:_e,O:Bn,kind:P.Unary},GetRootCursor:{name:`GetRootCursor`,I:st,O:se,kind:P.Unary}}},Vi=Bi.typeName;var Hi=class{rpc;service;constructor(e,t){this.service=t?.service||Vi,this.rpc=e,this.Write=this.Write.bind(this),this.GetRootCursor=this.GetRootCursor.bind(this)}async Write(e,t){let n=_e.create(e),r=await this.rpc.request(this.service,Bi.methods.Write.name,_e.toBinary(n),t||void 0);return Bn.fromBinary(r)}async GetRootCursor(e,t){let n=st.create(e),r=await this.rpc.request(this.service,Bi.methods.GetRootCursor.name,st.toBinary(n),t||void 0);return se.fromBinary(r)}},Ui=class extends V{service;constructor(e){super(e),this.service=new Hi(e.client)}async write(e,t){return await this.service.Write(e,t)}async getRootCursor(e){let t=await this.service.GetRootCursor({},e);return this.resourceRef.createResource(t.resourceId??0,zi)}};function Wi(e){return!!e?.hash?.hash?.length}var Y=class e extends V{service;constructor(e){super(e),this.service=new Ii(e.client)}async getRef(e){return await this.service.GetRef({},e)}async followRef(t,n){let r=await this.service.FollowRef(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}async getBlock(e,t){if(!Wi(e.ref)){let n=await this.getRef(t);return await this.service.GetBlock({...e,ref:n.ref?.rootRef},t)}return await this.service.GetBlock(e,t)}async putBlock(e,t){return await this.service.PutBlock(e,t)}async putBlockBatch(e,t){return await this.service.PutBlockBatch(e,t)}async getBlockExistsBatch(e,t){return await this.service.GetBlockExistsBatch(e,t)}async buildTransaction(e,t){let n=await this.service.BuildTransaction(e,t);return{transaction:this.resourceRef.createResource(n.transactionResourceId??0,Ui),cursor:this.resourceRef.createResource(n.cursorResourceId??0,zi)}}async buildTransactionAtRef(e,t){let n=await this.service.BuildTransactionAtRef(e,t);return{transaction:this.resourceRef.createResource(n.transactionResourceId??0,Ui),cursor:this.resourceRef.createResource(n.cursorResourceId??0,zi)}}async clone(t,n){let r=await this.service.Clone(t,n);return this.resourceRef.createResource(r.resourceId??0,e)}release(e){this.service.Release({},e).catch(()=>{}),super.release()}async unmarshal(e,t){return await this.service.Unmarshal(e,t)}},Gi=class extends V{service;constructor(e){super(e),this.service=new yi(e.client)}async buildStorageCursor(e){let t=await this.service.BuildStorageCursor({},e);return this.resourceRef.createResource(t.resourceId??0,Y)}async accessWorldState(e,t){let n=await this.service.AccessWorldState({ref:e},t);return this.resourceRef.createResource(n.resourceId??0,Y)}async releaseRoots(e,t){await this.service.ReleaseRoots({rootRefs:e},t)}},Ki=class extends Error{name=`TypedObjectGrantRetiredError`;constructor(){super(`typed object granting World mount retired`)}};function qi(e,t){if(e.errorCode===2)throw t?.throwIfAborted(),new Ki}const Ji=Symbol.for(`spacewave.WorldOperationRejection`);var Yi=class extends Error{code;name=`WorldOperationRejection`;[Ji]=!0;static[Symbol.hasInstance](e){return e instanceof Error&&Ji in e&&e[Ji]===!0}constructor(e,t){super(t||e),this.code=e}};function Xi(e){if(e.rejectionCode)throw new Yi(e.rejectionCode,e.rejectionMessage??``);if(e.errorCode===1)throw Error(`remote world operation unhandled`)}var Zi=class extends V{service;objectKey;constructor(e,t){super(e),this.service=new ji(e.client),this.objectKey=t?.objectKey??``}getKey(){return this.objectKey}async getRootRef(e){return await this.service.GetRootRef({},e)}async setRootRef(e,t){return await this.service.SetRootRef({rootRef:e},t)}async accessWorldState(e,t){let n=await this.service.AccessWorldState({ref:e},t);return this.resourceRef.createResource(n.resourceId??0,Y)}async applyObjectOp(e,t,n,r){let i=await this.service.ApplyObjectOp({opTypeId:e,opData:t,opSender:n},r);return Xi(i),i}async incrementRev(e){return await this.service.IncrementRev({},e)}async waitRev(e,t,n){return await this.service.WaitRev({rev:e,ignoreNotFound:t},n)}getDebugInfo(){return{label:this.objectKey||void 0}}},Qi=class extends V{service;constructor(e){super(e),this.service=new ki(e.client)}async err(e){return(await this.service.Err({},e)).error||null}async valid(e){return(await this.service.Valid({},e)).valid??!1}async key(e){return(await this.service.Key({},e)).objectKey??``}async next(e){return(await this.service.Next({},e)).valid??!1}async seek(e,t){await this.service.Seek({objectKey:e},t)}async close(e){await this.service.Close({},e)}};async function $i(e,t,n,r){if(!e.canWrite()&&t)throw Error(`EngineWorldState is read-only`);let i=await e.getEngine().newTransaction(t,n);try{let e=await r(i);return t&&await i.commit(n),e}finally{try{await i.discard()}finally{i.release()}}}var ea=class{engine;write;ownsEngine;constructor(e,t,n=!1){this.engine=e,this.write=t,this.ownsEngine=n}getResourceRef(){return this.engine.resourceRef}getReadOnly(){return!this.write}async getSeqno(e){return{seqno:(await this.engine.getSeqno(e)).seqno??0n}}async waitSeqno(e,t){return{seqno:(await this.engine.waitSeqno(e,t)).seqno??0n}}async buildStorageCursor(e){return await this.engine.buildStorageCursor(e)}async accessWorldState(e,t){return this.engine.accessWorldState(e,t)}async stageWorldState(e){if(!this.write)throw Error(`EngineWorldState is read-only`);return this.engine.stageWorldState(e)}async openNestedWorld(e,t){return this.performOp(!1,t,n=>n.openNestedWorld(e,t))}async openOuterWorld(e){return this.performOp(!1,e,t=>t.openOuterWorld(e))}async applyWorldOp(e,t,n,r){return this.performOp(!0,r,async i=>{let a=await i.applyWorldOp(e,t,n,r);return{seqno:a.seqno??0n,sysErr:a.sysErr??!1}})}async createObject(e,t,n){return await this.performOp(!0,n,async r=>{(await r.createObject(e,t,n)).release()}),new ta(this,e)}async getObject(e,t){return await this.performOp(!1,t,async n=>{try{var r=C();return r.u(await n.getObject(e,t))!==null}catch(e){r.e=e}finally{r.d()}})?new ta(this,e):null}async iterateObjects(e,t,n){let r=await this.engine.newTransaction(!1,n);try{return new ra(await r.iterateObjects(e,t,n),r)}catch(e){throw r.release(),e}}async renameObject(e,t,n){return await this.performOp(!0,n?.abortSignal,async r=>{(await r.renameObject(e,t,n)).release()}),new ta(this,t)}async deleteObject(e,t){return{deleted:await this.performOp(!0,t,async n=>(await n.deleteObject(e,t)).deleted??!1)}}async setGraphQuad(e,t,n,r,i){await this.performOp(!0,i,async a=>{await a.setGraphQuad(e,t,n,r,i)})}async deleteGraphQuad(e,t,n,r,i){await this.performOp(!0,i,async a=>{await a.deleteGraphQuad(e,t,n,r,i)})}async lookupGraphQuads(e,t,n,r,i,a){return this.performOp(!1,a,async o=>await o.lookupGraphQuads(e,t,n,r,i,a))}async listGraphEdgeBuckets(e,t,n={}){return this.performOp(!1,n.abortSignal,async r=>await r.listGraphEdgeBuckets(e,t,n))}async getObjectBodies(e,t){return this.performOp(!1,t,async n=>await n.getObjectBodies(e,t))}async listObjectsWithType(e,t){return this.performOp(!1,t,async n=>await n.listObjectsWithType(e,t))}async listObjects(e,t){return this.performOp(!1,t,async n=>await n.listObjects(e,t))}async getObjectMetadataBatch(e,t){return this.performOp(!1,t,async n=>await n.getObjectMetadataBatch(e,t))}async deleteGraphObject(e,t){await this.performOp(!0,t,async n=>{await n.deleteGraphObject(e,t)})}async accessTypedObject(e,t){return this.engine.accessTypedObject(e,t)}performOp(e,t,n){return $i(this,e,t,n)}canWrite(){return this.write}getEngine(){return this.engine}release(){this.ownsEngine&&!this.engine.released&&this.engine.release()}[Symbol.dispose](){this.release()}},ta=class{engineState;objectKey;constructor(e,t){this.engineState=e,this.objectKey=t}getKey(){return this.objectKey}async getRootRef(e){return $i(this.engineState,!1,e,async t=>{try{var n=C();let r=n.u(await t.getObject(this.objectKey,e));if(!r)throw Error(`Object not found: ${this.objectKey}`);return await r.getRootRef(e)}catch(e){n.e=e}finally{n.d()}})}async setRootRef(e,t){return $i(this.engineState,!0,t,async n=>{try{var r=C();let i=r.u(await n.getObject(this.objectKey,t));if(!i)throw Error(`Object not found: ${this.objectKey}`);return await i.setRootRef(e,t)}catch(e){r.e=e}finally{r.d()}})}async accessWorldState(e,t){let n=await this.engineState.getEngine().newTransaction(!1,t);try{let r=await n.getObject(this.objectKey,t);if(!r)throw Error(`Object not found: ${this.objectKey}`);try{return new na(await r.accessWorldState(e,t),n)}finally{r.release()}}catch(e){throw await n.discard(t).catch(()=>{}),n.release(),e}}async applyObjectOp(e,t,n,r){return $i(this.engineState,!0,r,async i=>{try{var a=C();let o=a.u(await i.getObject(this.objectKey,r));if(!o)throw Error(`Object not found: ${this.objectKey}`);return await o.applyObjectOp(e,t,n,r)}catch(e){a.e=e}finally{a.d()}})}async incrementRev(e){return $i(this.engineState,!0,e,async t=>{try{var n=C();let r=n.u(await t.getObject(this.objectKey,e));if(!r)throw Error(`Object not found: ${this.objectKey}`);return await r.incrementRev(e)}catch(e){n.e=e}finally{n.d()}})}async waitRev(e,t,n){for(;;){let r=await $i(this.engineState,!1,n,async e=>{try{var r=C();let{seqno:i}=await e.getSeqno(n),a=r.u(await e.getObject(this.objectKey,n));if(!a&&!t)throw Error(`Object not found: ${this.objectKey}`);return{seqno:i,root:await a?.getRootRef(n)}}catch(e){r.e=e}finally{r.d()}});if(r.root&&(r.root.rev??0n)>=e)return{rev:r.root.rev};await this.engineState.getEngine().waitSeqno((r.seqno??0n)+1n,n)}}release(){}[Symbol.dispose](){}},na=class extends Y{cursor;tx;releasedCursor=!1;constructor(e,t){super(e.resourceRef),this.cursor=e,this.tx=t}release(e){this.releasedCursor||(this.releasedCursor=!0,this.cursor.release(e),this.tx.discard(e).catch(()=>{}).finally(()=>{this.tx.release()}))}},ra=class extends Qi{iterator;tx;closed=!1;constructor(e,t){super(e.resourceRef),this.iterator=e,this.tx=t}async close(e){if(!this.closed)try{await this.iterator.close(e)}finally{this.release()}}release(){this.closed||(this.closed=!0,this.iterator.release(),this.tx.release())}},ia=class e extends V{service;readOnly;constructor(e,t){super(e),this.service=new xi(e.client),this.readOnly=t?.readOnly??!1}getResourceRef(){return this.resourceRef}getReadOnly(){return this.readOnly}async getSeqno(e){return{seqno:(await this.service.GetSeqno({},e)).seqno??0n}}async waitSeqno(e,t){return{seqno:(await this.service.WaitSeqno({seqno:e},t)).seqno??0n}}async compareObjectRecords(e,t){return this.service.CompareObjectRecords({bases:e},t)}async getObjectRootRefs(e,t){return(await this.service.GetObjectRootRefsBatch({objectKeys:e},t)).rootRefs??[]}async buildStorageCursor(e){let t=await this.service.BuildStorageCursor({},e);return this.resourceRef.createResource(t.resourceId??0,Y)}async accessWorldState(e,t){let n=await this.service.AccessWorldState({ref:e},t);return this.resourceRef.createResource(n.resourceId??0,Y)}async stageWorldState(e){let t=await this.service.StageWorldState({},e);return this.resourceRef.createResource(t.resourceId??0,Gi)}async openNestedWorld(t,n){let r=await this.service.OpenNestedWorld({objectKey:t},n);return this.resourceRef.createResource(r.resourceId??0,e,{readOnly:!0})}async openOuterWorld(e){let t=await this.service.OpenOuterWorld({},e);return new ea(this.resourceRef.createResource(t.resourceId??0,oa),!0,!0)}async createObject(e,t,n){let r=await this.service.CreateObject({objectKey:e,rootRef:t},n);return this.resourceRef.createResource(r.resourceId??0,Zi,{objectKey:r.objectKey})}async getObject(e,t){let n=await this.service.GetObject({objectKey:e},t);return n.found?this.resourceRef.createResource(n.resourceId??0,Zi,{objectKey:n.objectKey}):null}async iterateObjects(e,t,n){let r=await this.service.IterateObjects({prefix:e,reversed:t},n);return this.resourceRef.createResource(r.resourceId??0,Qi)}async renameObject(e,t,n){let r=await this.service.RenameObject({oldObjectKey:e,newObjectKey:t,descendants:n?.descendants},n?.abortSignal);return this.resourceRef.createResource(r.resourceId??0,Zi,{objectKey:r.objectKey})}async deleteObject(e,t){return{deleted:(await this.service.DeleteObject({objectKey:e},t)).deleted??!1}}async setGraphQuad(e,t,n,r,i){await this.service.SetGraphQuad({quad:{subject:e,predicate:t,obj:n,label:r}},i)}async deleteGraphQuad(e,t,n,r,i){await this.service.DeleteGraphQuad({quad:{subject:e,predicate:t,obj:n,label:r}},i)}async lookupGraphQuads(e,t,n,r,i,a){return await this.service.LookupGraphQuads({filter:{subject:e,predicate:t,obj:n,label:r},limit:i},a)}async listGraphEdgeBuckets(e,t,n={}){return await this.service.ListGraphEdgeBuckets({originObjectKeys:e,predicate:n.predicate,limitPerOrigin:t,direction:n.direction},n.abortSignal)}async getObjectBodies(e,t){if(e.length===0)return[];for(let n=0;n<=3;n++){let n=await this.readObjectBodyPages(e,t);if(n)return n}throw Error(`The World changed on every attempt to read object bodies.`)}async readObjectBodyPages(e,t){let n=[],r,i=this.service.GetObjectBodiesBatch({objectKeys:e},t);for await(let e of i){let t=e.worldSeqno??0n;if(r??=t,t!==r)return null;n.push(...e.bodies??[])}return n}async listObjectsWithType(e,t){return(await this.service.ListObjectsWithType({typeId:e},t)).objectKeys??[]}async listObjects(e,t){return this.service.ListObjects(e,t)}async getObjectMetadataBatch(e,t){return(await this.service.GetObjectMetadataBatch({objectKeys:e},t)).metadata??[]}async deleteGraphObject(e,t){await this.service.DeleteGraphObject({objectKey:e},t)}async applyWorldOp(e,t,n,r){let i=await this.service.ApplyWorldOp({opTypeId:e,opData:t,opSender:n},r);return Xi(i),{seqno:i.seqno??0n,sysErr:i.sysErr??!1}}async accessTypedObject(e,t){let n=await new Pi(this.resourceRef.client).AccessTypedObject({objectKey:e},t);return qi(n,t),{resourceId:n.resourceId??0,typeId:n.typeId??``}}getDebugInfo(){return{label:this.readOnly?`(read-only)`:void 0}}},aa=class extends ia{txService;constructor(e,t){super(e,t),this.txService=new Di(e.client)}async commit(e){await this.txService.Commit({},e)}async discard(e){await this.txService.Discard({},e)}},oa=class extends V{service;watchService;constructor(e){super(e),this.service=new gi(e.client),this.watchService=new wi(e.client)}async getEngineInfo(e){return await this.service.GetEngineInfo({},e)}async sync(e){return(await this.service.Sync({},e)).fenced??!1}async getWorldRootSnapshot(e){return await this.service.GetWorldRootSnapshot({},e)}watchWorldRootSnapshots(e){return this.service.WatchWorldRootSnapshots({},e)}async newTransaction(e,t){let n=await this.service.NewTransaction({write:e},t);return this.resourceRef.createResource(n.resourceId??0,aa,{readOnly:n.readOnly})}async executeWorldOp(e,t,n){return this.service.ExecuteWorldOp({opTypeId:e,opData:t},n)}async getSeqno(e){return await this.service.GetSeqno({},e)}async waitSeqno(e,t){return await this.service.WaitSeqno({seqno:e},t)}async buildStorageCursor(e){let t=await this.service.BuildStorageCursor({},e);return this.resourceRef.createResource(t.resourceId??0,Y)}async accessWorldState(e,t){let n=await this.service.AccessWorldState({ref:e},t);return this.resourceRef.createResource(n.resourceId??0,Y)}async stageWorldState(e){let t=await this.service.StageWorldState({},e);return this.resourceRef.createResource(t.resourceId??0,Gi)}async accessTypedObject(e,t){let n=await new Pi(this.resourceRef.client).AccessTypedObject({objectKey:e},t);return qi(n,t),{resourceId:n.resourceId??0,typeId:n.typeId??``}}watchWorldState(e){return sa(this.watchService,this.resourceRef,e)}};function sa(e,t,n){let r=!1,i=[],a=new AbortController,o,s=()=>{r=!0,a.abort(),o?.abort(),i.forEach(e=>e[Symbol.dispose]()),i.length=0};return(async()=>{try{let s=e.WatchWorldState({},a.signal);for await(let e of s){if(r)break;o?.abort(),i.forEach(e=>e[Symbol.dispose]()),i.length=0,o=new AbortController;let a=o.signal,s=t.createResource(e.resourceId??0,ia),c=e=>(e&&i.push(e),e);try{await n(s,a,c)}catch(e){e instanceof Error&&e.name!==`AbortError`&&console.error(`Error in watchWorldState callback:`,e)}finally{s[Symbol.dispose]()}}}catch(e){!r&&!(e instanceof Error&&e.name===`AbortError`)&&console.error(`WatchWorldState stream error:`,e)}finally{s()}})(),s}function ca(e){return`${la}${ma(`application`,e)}/metadata`}const la=`sync/v1/`,ua=new TextEncoder;new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0});function da(e,t,n){return`${la}${ma(`application`,e)}/${ma(`scope`,t)}/collections/${ma(`collection`,n)}`}function fa(e,t){return`${la}${ma(`application`,e)}/${ma(`scope`,t)}/receipts`}function pa(e){return ha(`record key`,e,1024)}function ma(e,t){return ga(ha(e,t,256))}function ha(e,t,n){if(t.length===0)throw TypeError(`invalid ${e}: must be nonempty`);if(!t.isWellFormed())throw TypeError(`invalid ${e}: must be well-formed Unicode`);let r=ua.encode(t);if(r.length>n)throw TypeError(`invalid ${e}: exceeds ${n} UTF-8 bytes`);return r}function ga(e){let t=``;for(let n of e)t+=(n>>4).toString(16)+(n&15).toString(16);return t}function _a(e){if(!e.id||!Number.isSafeInteger(e.version)||e.version<1||e.version>4294967295)throw new L(`VALIDATION`,`Application ID and positive version are required`);return e}async function va(e,t,n){try{R(t);let r=await e[`~standard`].validate(t);if(r.issues)throw new L(`VALIDATION`,`${n} does not match its schema`);return R(r.value),r.value}catch(e){throw e instanceof L?e:new L(`VALIDATION`,`${n} must be a valid JSON value matching its schema`)}}const ya=new TextEncoder,ba=new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0});var xa=class{state;options;stores=new Map;released=!1;writeCount=0;writeBytes=0;constructor(e,t){this.state=e,this.options=t}async store(e){this.checkOpen();let t=this.stores.get(e);return t||(t=(async()=>{let t=await mi(this.state,e,this.options.write,this.options.signal);if(t)try{return{store:t,tx:await t.openTransaction(this.options.write,this.options.signal)}}catch(e){throw t.release(),e}})(),this.stores.set(e,t)),(await t)?.tx}collections(e,t=[]){return{collection:n=>{let{schema:r,instance:i,limits:a,signal:o}=this.options;if(!Object.hasOwn(r.collections,n))throw new L(`MISSING_COLLECTION`,`Collection is not declared`);let s=r.collections[n],c=async r=>(this.checkOpen(),await this.options.authorize(e,n,r),t.some(e=>e.collection===n&&e.action===r)||t.push({collection:n,action:r}),this.store(da(i,e.scope,n)));return{get:async e=>{let t=wa(e),n=await(await c(`read`))?.get(t,o);if(n?.found&&n.data.length>a.maxRecordBytes)throw new L(`QUERY_LIMIT`,`Record exceeds the configured byte limit`);return n?.found?B(n.data):void 0},scan:async(e={})=>{let t=e.prefix??``,n=t?wa(t):new Uint8Array,r=await c(`read`);return r?(await r.scanRecords(n,{maxRecords:a.maxRecords,maxBytes:a.maxSnapshotBytes},o)).map(e=>({key:ba.decode(e.key),value:B(e.value)})):[]},put:async(e,t)=>{let n=wa(e),r=await c(`write`);if(!this.options.write||!r)throw new L(`DENIED`,`Transaction is read-only`);let i=z(await va(s,t,`Record`));if(i.length>a.maxRecordBytes)throw new L(`QUERY_LIMIT`,`Record exceeds the configured byte limit`);this.trackWrite(n.length+i.length),await r.set(n,i,o)},delete:async e=>{let t=wa(e),n=await c(`write`);if(!this.options.write||!n)throw new L(`DENIED`,`Transaction is read-only`);this.trackWrite(t.length),await n.delete(t,o)}}}}}async execute(e,t,n){if(this.checkOpen(),!n||n.length>128)throw new L(`VALIDATION`,`Request ID must contain 1 to 128 characters`);let{schema:r,instance:i,signal:a}=this.options,o=t.kind!==`get`&&t.kind!==`scan`;if(o&&!this.options.write)throw new L(`DENIED`,`Transaction is read-only`);let s=this.fingerprint(t);if(ya.encode(s).length>this.options.limits.maxRecordBytes)throw new L(`QUERY_LIMIT`,`Operation exceeds the configured byte limit`);let c=[],l=this.collections(e,c);`collection`in t&&await this.options.authorize(e,t.collection,o?`write`:`read`);let u=o?await this.readAcceptance(e,t,n):void 0;if(u)return{value:u.value,duplicate:!0};let d=o?await this.store(fa(i,e.scope)):void 0,f;if(t.kind===`mutate`){let n=Object.hasOwn(r.mutations,t.name)?r.mutations[t.name]:void 0,i=Object.hasOwn(this.options.mutations,t.name)?this.options.mutations[t.name]:void 0;if(!n||!i)throw new L(`VALIDATION`,`Mutation is not declared and implemented`);let o=await va(n.input,t.input,`Mutation input`),s=await Sa({...l,principal:e,scope:e.scope,signal:a},e=>i(e,o));if(f=await va(n.output,s,`Mutation output`),z(f).length>this.options.limits.maxRecordBytes)throw new L(`QUERY_LIMIT`,`Mutation result exceeds the configured byte limit`)}else{let e=l.collection(t.collection);switch(t.kind){case`get`:{let n=await e.get(t.key);f=n===void 0?{found:!1}:{found:!0,value:n};break}case`scan`:f=await e.scan({prefix:t.prefix});break;case`put`:await e.put(t.key,t.value),f=null;break;case`delete`:await e.delete(t.key),f=null}}return d&&await this.recordAcceptance(e,t,n,f,c),{value:f,duplicate:!1}}async upgrade(e,t,n,r){if(this.checkOpen(),!n||n.length>128)throw new L(`VALIDATION`,`Request ID must contain 1 to 128 characters`);if(ya.encode(this.fingerprint(t)).length>this.options.limits.maxRecordBytes)throw new L(`QUERY_LIMIT`,`Upgrade exceeds the input byte limit`);if(!this.options.write)throw new L(`DENIED`,`Transaction is read-only`);if(await this.readAcceptance(e,t,n))return;let i=[];await r(this.collections(e,i)),await this.recordAcceptance(e,t,n,null,i)}async recordAcceptance(e,t,n,r,i){let{instance:a,signal:o}=this.options;await(await this.store(ca(a))).set(ya.encode(`scope/${R(e.scope)}`),z(e.scope),o),await(await this.store(fa(a,e.scope))).set(ya.encode(R([e.subject,n])),z({fingerprint:this.fingerprint(t),result:r,accesses:i}),o)}async readAcceptance(e,t,n){this.checkOpen();let r=await this.store(fa(this.options.instance,e.scope)),i=ya.encode(R([e.subject,n])),a=await r?.get(i,this.options.signal);if(!a?.found)return;let o=B(a.data);if(o.fingerprint!==this.fingerprint(t))throw new L(`CONFLICT`,`Request ID was already used for different input`,n);for(let t of o.accesses)await this.options.authorize(e,t.collection,t.action);return{value:o.result}}fingerprint(e){return R({application:this.options.schema.id,version:this.options.schema.version,revision:this.options.revision??``,operation:e})}async flush(){this.checkOpen();let e=await Promise.all(this.stores.values());for(let t of e)await t?.tx.commit(this.options.signal)}async release(){if(this.released)return;this.released=!0;let e=await Promise.allSettled(this.stores.values());await Promise.all(e.map(async e=>{if(e.status===`fulfilled`&&e.value)try{await e.value.tx.discard()}catch{}finally{e.value.store.release()}}))}trackWrite(e){if(this.writeCount++,this.writeBytes+=e,this.writeCount>this.options.limits.maxRecords||this.writeBytes>this.options.limits.maxSnapshotBytes)throw new L(`QUERY_LIMIT`,`Mutation exceeds the transaction data limit`)}checkOpen(){if(this.released)throw new L(`CLOSED`,`Transaction is closed`);this.options.signal.throwIfAborted()}};async function Sa(e,t){return Ca(n=>t({...e,...n(e)}))}async function Ca(e){let t=!0,n=new Set,r=e=>{if(!t)return Promise.reject(new L(`CLOSED`,`Mutation has ended`));let r=e();return n.add(r),r.then(()=>n.delete(r),()=>n.delete(r)),r};try{let t=await e(e=>({collection:t=>{let n=e.collection(t);return{get:e=>r(()=>n.get(e)),scan:e=>r(()=>n.scan(e)),put:(e,t)=>r(()=>n.put(e,t)),delete:e=>r(()=>n.delete(e))}}}));if(n.size)throw new L(`VALIDATION`,`Await every collection operation before returning`);return t}finally{t=!1,await Promise.allSettled(n)}}function wa(e){try{return pa(e)}catch{throw new L(`VALIDATION`,`Record key must be nonempty UTF-8 within 1024 bytes`)}}async function Ta(e,t){let n=new Map,r=new Set,i=!0,a=(e,t,r)=>{let i=n.get(e),a=i.records.get(t);a||(a={paths:new Map,shapes:new Map},i.records.set(t,a));let o=(e,t=!0)=>{(t?a.paths:a.shapes).set(JSON.stringify(e),e)};if(r!==void 0)return Da(B(z(r)),[],o)},o={collection:t=>{if(!i)throw new L(`CLOSED`,`Query evaluation has ended`);let o=e.collection(t);n.has(t)||n.set(t,{prefixes:new Set,records:new Map});let s=e=>{if(!i)return Promise.reject(new L(`CLOSED`,`Query evaluation has ended`));let t=e();return r.add(t),t.finally(()=>r.delete(t)).catch(()=>{}),t};return{get:e=>s(async()=>a(t,e,await o.get(e))),scan:(e={})=>s(async()=>(n.get(t).prefixes.add(e.prefix??``),(await o.scan(e)).map(e=>({key:e.key,value:a(t,e.key,e.value)}))))}}};try{let e=await t(o);if(r.size)throw new L(`VALIDATION`,`Query must await every snapshot read`);return{value:B(z(e)),dependencies:[...n].map(([e,t])=>({collection:e,prefixes:[...t.prefixes],records:[...t.records].map(([e,{paths:t,shapes:n}])=>({key:e,paths:[...t.values()],shapes:[...n.values()]}))}))}}finally{i=!1,await Promise.allSettled(r)}}var Ea=class{collections;constructor(e){this.collections=new Map(e.map(e=>[e.collection,{prefixes:e.prefixes,records:new Map(e.records.map(e=>[e.key,e]))}]))}watchesKey(e,t){let n=this.collections.get(e);return!!n&&(n.records.has(t)||n.prefixes.some(e=>t.startsWith(e)))}affected(e){let t=this.collections.get(e.collection);if(!t)return!1;let n=e.before===void 0!=(e.after===void 0);if(n&&t.prefixes.some(t=>e.key.startsWith(t)))return!0;let r=t.records.get(e.key);return r?n?!0:r.paths.some(t=>!ka(Oa(e.before,t),Oa(e.after,t)))||r.shapes.some(t=>Aa(Oa(e.before,t))!==Aa(Oa(e.after,t))):!1}unknown(e){return this.collections.has(e)}};function Da(e,t,n){return typeof e!=`object`||!e?(n(t),e):(n(t,!1),new Proxy(e,{get(e,r,i){if(typeof r!=`string`)return Reflect.get(e,r,i);let a=[...t,r],o=Reflect.get(e,r,i);return typeof o==`function`?o:Da(o,a,n)},has(e,r){return n(t),Reflect.has(e,r)},ownKeys(e){return n(t),Reflect.ownKeys(e)},getOwnPropertyDescriptor(e,r){typeof r==`string`&&n([...t,r]);let i=Reflect.getOwnPropertyDescriptor(e,r);return i&&`value`in i&&typeof r==`string`?{...i,value:Da(i.value,[...t,r],n)}:i},set(){throw new L(`VALIDATION`,`Queries cannot mutate snapshot values`)},deleteProperty(){throw new L(`VALIDATION`,`Queries cannot mutate snapshot values`)},defineProperty(){throw new L(`VALIDATION`,`Queries cannot mutate snapshot values`)},setPrototypeOf(){throw new L(`VALIDATION`,`Queries cannot mutate snapshot values`)},preventExtensions(){throw new L(`VALIDATION`,`Queries cannot mutate snapshot values`)}}))}function Oa(e,t){let n=e;for(let e of t){if(typeof n!=`object`||!n)return;n=n[e]}return n}function ka(e,t){return e===void 0||t===void 0?e===t:R(e)===R(t)}function Aa(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}var ja=class{options;engine;controller=new AbortController;producers=new Map;active=new Set;closing;counts={snapshots:0,processedSeqno:0n,evaluations:0,keyReads:0,rangeScans:0};diagnostics(){return{...this.counts}}measureReads(e){return{collection:t=>{let n=e.collection(t);return{get:async e=>(this.counts.keyReads++,n.get(e)),scan:async e=>(this.counts.rangeScans++,n.scan(e))}}}}constructor(e){this.options=e,this.engine=new oa(e.engine.resourceRef.createRef(e.engine.id))}async*watch(e,t,n){let r=AbortSignal.any([this.controller.signal,...[n,this.options.signal,this.options.principal.signal].filter(e=>e!==void 0)]);r.throwIfAborted();let i=await va(e.input,B(z(t)),`Query input`);r.throwIfAborted();let a=R(i),o=this.producers.get(e);o||(o=new Map,this.producers.set(e,o));let s=o.get(a);s||(s=this.start(e,i,()=>{o.get(a)===s&&o.delete(a),!o.size&&this.producers.get(e)===o&&this.producers.delete(e)}),o.set(a,s)),s.users++;let c=s.state.getIterable()[Symbol.asyncIterator](),l=()=>{c.return?.()};r.addEventListener(`abort`,l,{once:!0});try{for(;;){let e=await c.next();if(e.done||r.aborted)break;this.checkPrincipal();for(let t of e.value.collections)await this.options.authorize(this.options.principal,t,`read`);r.throwIfAborted();let t=e.value.snapshot;if(t.status===`error`){yield t;break}yield{...t,value:B(z(t.value))}}}finally{r.removeEventListener(`abort`,l),await c.return?.(),--s.users===0&&(o.get(a)===s&&o.delete(a),!o.size&&this.producers.get(e)===o&&this.producers.delete(e),s.controller.abort(),await s.done)}}close(){return this.closing??=(async()=>{this.controller.abort(),await Promise.allSettled(this.active),this.engine.release()})()}start(e,t,n){let r,i=new Wr(async()=>r,{mostRecentOnly:!0}),a=new AbortController,o=AbortSignal.any([this.controller.signal,a.signal,...[this.options.signal,this.options.principal.signal].filter(e=>e!==void 0)]),s=(async()=>{try{for await(let n of this.evaluate(e,t,o))r=n,i.pushChangeEvent(n)}catch(e){o.aborted||(r={snapshot:{status:`error`,error:Rr(e)},collections:[]},i.pushChangeEvent(r))}finally{n()}})();return this.active.add(s),s.finally(()=>this.active.delete(s)),{controller:a,state:i,done:s,users:0}}async*evaluate(e,t,n){let r,i,a=new Map,o=[],s=0n;for(;;){n.throwIfAborted(),this.checkPrincipal();let c=await this.engine.newTransaction(!1,n),l=new xa(c,{...this.options,write:!1,signal:n}),u;try{await this.options.checkState?.(c,n),s=(await c.getSeqno(n)).seqno,this.counts.snapshots++;let d=this.measureReads(l.collections(this.options.principal)),f=!r;if(r){let e=await this.roots(c,r.dependencies,n),t=r.dependencies.filter((t,n)=>e[n].signature!==o[n].signature);if(t.length){f=e.some((e,t)=>e.type!==o[t].type);let s=f?{}:await c.compareObjectRecords(t.map(({collection:e})=>{let t=r.dependencies.findIndex(t=>t.collection===e);return{objectKey:da(this.options.instance,this.options.principal.scope,e),rootRef:o[t].ref}}),n);for(let e=0;!f&&e<t.length;e++){let n=t[e],r=s.changes?.[e];if(!r||r.unknown){f=!0;break}let o=d.collection(n.collection),c=a.get(n.collection),l=new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}),u=new Set(r.keys?.map(e=>l.decode(e)));for(let e of u){if(!i.watchesKey(n.collection,e))continue;let t=await o.get(e);if(i.affected({collection:n.collection,key:e,before:c.get(e),after:t})){f=!0;break}c.set(e,t)}}}o=e}if(f){if(a=new Map,this.counts.evaluations++,r=await Ta(Ma(d,a,this.options.limits.maxSnapshotBytes,this.options.limits.maxRecords),n=>e.evaluate(n,B(z(t)))),i=new Ea(r.dependencies),o=await this.roots(c,r.dependencies,n),z(r.value).length>this.options.limits.maxSnapshotBytes)throw new L(`QUERY_LIMIT`,`Query result exceeds the configured byte limit`);u={snapshot:{status:`current`,value:r.value,seqno:s},collections:r.dependencies.map(({collection:e})=>e)}}}finally{await l.release();try{await c.discard()}finally{c.release()}}this.counts.processedSeqno=s,u&&(yield u),await this.engine.waitSeqno(s+1n,n)}}async roots(e,t,n){let r=t.map(({collection:e})=>da(this.options.instance,this.options.principal.scope,e));for(let e of t)await this.options.authorize(this.options.principal,e.collection,`read`);let i=await e.getObjectRootRefs(r,n);return Promise.all(i.map(async(t,i)=>{let a=t.exists?await ci(e,r[i],n):``;return{type:a,ref:t.rootRef,signature:`${a}:${Array.from(c.toBinary(t)).join(`,`)}`}}))}checkPrincipal(){let e=this.options.principal;if(!e.subject||!e.scope||e.signal?.aborted||e.expiresAt!==void 0&&(!Number.isFinite(e.expiresAt)||e.expiresAt<=Date.now()))throw new L(`AUTHENTICATION`,`Authentication is no longer valid`)}};function Ma(e,t,n,r){let i=0,a=0,o=(e,o,s)=>{let c=t.get(e);if(c||(c=new Map,t.set(e,c)),!c.has(o)&&(i+=z([e,o,s??null]).length,++a>r||i>n))throw new L(`QUERY_LIMIT`,`Query reads exceed the configured byte limit`);c.set(o,s)};return{collection(n){let r=e.collection(n);return t.has(n)||t.set(n,new Map),{async get(e){let t=await r.get(e);return o(n,e,t),t},async scan(e){let t=await r.scan(e);for(let e of t)o(n,e.key,e.value);return t}}}}}const Na=new TextEncoder,Pa=new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}),Fa=Na.encode(`version`);var Ia=class{options;schema;instance;signal;limits;engine;controller=new AbortController;active=new Set;queries=new Map;functionQueries=new Set;closing;constructor(e){this.options=e,this.schema=_a(e.schema),this.instance=e.instance??this.schema.id;try{fa(this.instance,`schema`);for(let[e,t]of Object.entries(this.schema.collections))if(da(this.instance,`schema`,e),t[`~standard`]?.version!==1)throw Error(`invalid validator`);for(let[t,n]of Object.entries(this.schema.mutations))if(!Object.hasOwn(e.mutations,t)||n.input[`~standard`]?.version!==1||n.output[`~standard`]?.version!==1)throw Error(`invalid mutation`)}catch{throw new L(`VALIDATION`,`Schema requires valid names, Standard Schema v1 validators, and every mutation handler`)}this.signal=this.controller.signal,this.limits={maxRecords:e.limits?.maxRecords??1e4,maxSnapshotBytes:e.limits?.maxSnapshotBytes??8388608,maxRecordBytes:e.limits?.maxRecordBytes??262144};for(let e of Object.values(this.limits))if(!Number.isSafeInteger(e)||e<1)throw new L(`VALIDATION`,`Limits must be positive integers`);this.engine=new oa(e.engine.resourceRef.createRef(e.engine.id))}async initialize(e){let t=await this.engine.newTransaction(!0,this.signal),n=this.transaction(t,!0,this.signal,!0);try{let r=await n.store(ca(this.instance));if(!r)throw Error(`missing metadata store`);let i=await r.get(Fa,this.signal),a=i.found?B(i.data):void 0;if(a&&a.application!==this.schema.id)throw new L(`SCHEMA_MISMATCH`,`This dataset belongs to a different application`);if(a&&a.version!==this.schema.version){if(!e||e.from!==a.version)throw new L(`SCHEMA_MISMATCH`,`Stored version differs; supply an explicit maintenance migration`);await e.run({signal:this.signal,scopes:async()=>(await r.scanRecords(Na.encode(`scope/`),{maxRecords:this.limits.maxRecords,maxBytes:this.limits.maxSnapshotBytes},this.signal)).map(e=>B(e.value)),scope:e=>n.collections({subject:`admin`,scope:e})})}await r.set(Fa,z({application:this.schema.id,version:this.schema.version}),this.signal),await n.flush(),await t.commit(),await this.engine.sync()}finally{await n.release();try{await t.discard()}finally{t.release()}}}async authorize(e,t,n,r=!1){if(this.checkPrincipal(e),!Object.hasOwn(this.schema.collections,t))throw new L(`MISSING_COLLECTION`,`Collection is not declared`);if(!r&&!await this.options.authorize({principal:e,scope:e.scope,collection:t,action:n}))throw new L(`DENIED`,`Collection ${n} is not authorized`)}async openCollection(e,t){try{await this.authorize(e,t,`read`)}catch(n){if(!(n instanceof L)||n.code!==`DENIED`)throw n;await this.authorize(e,t,`write`)}}execute(e,t,n={},r=!1){if(this.closing)return Promise.reject(new L(`CLOSED`,`Server is closed`));let i=this.run(e,t,n,r);return this.active.add(i),i.finally(()=>this.active.delete(i)).catch(()=>{}),i}access(e){let t={...e},n=this,r,i=0;return{...Hr((e,n)=>this.execute(t,e,n)),async*watch(e,a,o){if(n.closing)throw new L(`CLOSED`,`Server is closed`);let s=r??=new ja({schema:n.schema,instance:n.instance,mutations:n.options.mutations,engine:n.engine,limits:n.limits,principal:t,signal:n.signal,authorize:(e,t,r)=>n.authorize(e,t,r)});n.functionQueries.add(s),i++;try{yield*s.watch(e,a,o)}finally{--i===0&&(r=void 0,n.functionQueries.delete(s),await s.close())}}}}close(){return this.closing??=(async()=>{this.controller.abort(new L(`CLOSED`,`Server is closing`)),await Promise.all(Array.from(this.functionQueries,e=>e.close())),await Promise.allSettled(this.active),this.engine.release()})(),this.closing}async*watch(e,t,n,r){if(this.closing)throw new L(`CLOSED`,`Server is closed`);let i=AbortSignal.any([this.signal,r,...e.signal?[e.signal]:[]]),a=Promise.withResolvers();this.active.add(a.promise);let o,s,c=()=>{s?.return?.()},l=R([e.scope,t,n]);try{for(await this.authorize(e,t,`read`),i.throwIfAborted(),o=this.queries.get(l)??this.startQuery(l,e.scope,t,n),o.users++,s=o.state.getIterable()[Symbol.asyncIterator](),i.addEventListener(`abort`,c,{once:!0});;){let n=await s.next();if(n.done||i.aborted)break;if(await this.authorize(e,t,`read`),i.throwIfAborted(),`error`in n.value)throw n.value.error;yield n.value.entries}}finally{i.removeEventListener(`abort`,c),await s?.return?.(),o&&--o.users===0&&(this.queries.get(l)===o&&this.queries.delete(l),o.controller.abort()),a.resolve(),this.active.delete(a.promise)}}startQuery(e,t,n,r){let i,a={controller:new AbortController,state:new Wr(async()=>i,{mostRecentOnly:!0}),users:0};this.queries.set(e,a);let o=AbortSignal.any([this.signal,a.controller.signal]),s=e=>{i=e,a.state.pushChangeEvent(e)},c=(async()=>{try{for await(let e of this.watchQuery(t,n,r,o))s({entries:e})}catch(e){o.aborted||s({error:Rr(e)})}finally{this.queries.get(e)===a&&this.queries.delete(e)}})();return this.active.add(c),c.finally(()=>this.active.delete(c)).catch(()=>{}),a}async*watchQuery(e,t,n,r){let i;try{let a=da(this.instance,e,t),o=n?this.recordKey(n):new Uint8Array,s=!1;for(;;){r.throwIfAborted();let e=await this.engine.getSeqno(r),t=await this.engine.newTransaction(!1,r),n=!1;try{let e=await t.getObject(a,r);if(n=e!==null,e?.release(),n&&await ci(t,a,r)!==`kv/store`)throw new pi}finally{try{await t.discard()}finally{t.release()}}if(n)break;s||=(yield[],!0),await this.engine.waitSeqno((e.seqno??0n)+1n,r)}let c=await this.engine.accessTypedObject(a,r);i=this.engine.resourceRef.createResource(c.resourceId,ei);for await(let e of i.watchRecords(o,{maxRecords:this.limits.maxRecords,maxBytes:this.limits.maxSnapshotBytes},r))yield e.map(e=>({key:Pa.decode(e.key),value:B(e.value)}))}catch(e){if(e instanceof $r)throw new L(`QUERY_LIMIT`,e.message);if(!r.aborted)throw Rr(e)}finally{i?.release()}}checkPrincipal(e){if(!e.subject||!e.scope||e.signal?.aborted||e.expiresAt!==void 0&&(!Number.isFinite(e.expiresAt)||e.expiresAt<=Date.now()))throw new L(`AUTHENTICATION`,`Authentication is no longer valid`);try{if(fa(this.instance,e.scope),pa(e.subject).length>256)throw Error(`invalid subject`)}catch{throw new L(`AUTHENTICATION`,`Principal subject and scope must be valid identities within 256 UTF-8 bytes`)}}async run(e,t,n,r){let i,a,o=!1,s=t.kind!==`get`&&t.kind!==`scan`,c=n.requestId??Dr(),l=AbortSignal.any([this.signal,...[e.signal,n.signal].filter(e=>!!e)]);try{this.checkPrincipal(e),l.throwIfAborted(),i=await this.engine.newTransaction(s,l),a=this.transaction(i,s,l,r);let n=await a.execute(e,t,c);return this.checkPrincipal(e),l.throwIfAborted(),s&&!n.duplicate&&(await a.flush(),l.throwIfAborted(),o=!0,await i.commit()),s&&(await a.release(),a=void 0,await i.discard(),i.release(),i=void 0,await this.engine.sync()),n.value}catch(t){throw t instanceof pi?new L(`SCHEMA_MISMATCH`,t.message):o?new L(`UNCERTAIN`,`Acceptance could not be confirmed; retry the same request ID and input`,c):t instanceof $r?new L(`QUERY_LIMIT`,t.message):l.aborted?(this.checkPrincipal(e),new L(this.signal.aborted?`CLOSED`:`UNAVAILABLE`,`Operation was canceled`)):Rr(t)}finally{if(await a?.release(),i)try{await i.discard()}catch{}finally{i.release()}}}transaction(e,t,n,r){return new xa(e,{schema:this.schema,instance:this.instance,mutations:this.options.mutations,limits:this.limits,write:t,signal:n,authorize:(e,t,n)=>this.authorize(e,t,n,r)})}recordKey(e){try{return pa(e)}catch{throw new L(`VALIDATION`,`Record key must be nonempty UTF-8 within 1024 bytes`)}}};function La(e){let t=new AbortController;return e&&(e.aborted?t.abort():e.addEventListener(`abort`,()=>t.abort(),{once:!0})),t}function Ra(e=500){return()=>e}var za=class{fn;result;get canceled(){return this._canceled}_backoffFn;_errorCb;_abortSignal;_abortListener;_canceled;_resolve;_reject;_currError;_cancelRetry;_setTimeout;_clearTimeout;constructor(e,t){this.fn=e,this._abortSignal=t?.abortSignal,this._abortSignal&&(this._abortListener=()=>this.cancel(),this._abortSignal.addEventListener(`abort`,this._abortListener,{once:!0})),this._backoffFn=t?.backoffFn||Ra(),this._errorCb=t?.errorCb??(e=>{console.warn(`Retry: retrying after error`,{error:e})}),this._setTimeout=t?.setTimeout||setTimeout.bind(globalThis),this._clearTimeout=t?.clearTimeout||clearTimeout.bind(globalThis),this.result=new Promise((e,t)=>{this._resolve=e,this._reject=t}),this.result.catch(()=>{}),queueMicrotask(this._execute.bind(this))}cancel(){this._canceled||(this._canceled=!0,this._clearAbortListener(),this._cancelRetry&&this._cancelRetry(),this._reject&&this._reject(this._currError))}async _execute(){do try{let e=this._abortSignal;if(this._canceled||e?.aborted){this.cancel();return}let t=await this.fn();this._resolve&&(this._clearAbortListener(),this._resolve(t));return}catch(e){let t=this._abortSignal;if(this._currError=e,this._canceled||t?.aborted){this._reject&&(this._clearAbortListener(),this._reject(e));return}this._errorCb&&this._errorCb(e),await new Promise(e=>{let n=null;if(t?.aborted){e();return}this._cancelRetry=()=>{n&&this._clearTimeout(n),e()},n=this._setTimeout(()=>{this._cancelRetry=void 0,e()},this._backoffFn())})}while(1)}_clearAbortListener(){this._abortSignal&&this._abortListener&&(this._abortSignal.removeEventListener(`abort`,this._abortListener),this._abortListener=void 0)}};function Ba(e,t,n){return new za(t.bind(void 0,e),{...n,abortSignal:e}).result}const Va=Symbol.for(`bldr.ResourceFailureError`);var X=class extends Error{failure;name=`ResourceFailureError`;[Va]=!0;static[Symbol.hasInstance](e){return e instanceof Error&&Va in e&&e[Va]===!0}constructor(e){super(e.message||`resource request failed`),this.failure=e}};function Ha(e){return e instanceof X?e.failure:{message:e instanceof Error?e.message:String(e)}}async function*Ua(e,t=!1){try{for(;;){let t=await e.next();if(t.done)return;if(t.value.body?.case!==`data`)throw Error(`expected ResourceRpc data`);yield{body:t.value.body}}}finally{t||await e.return?.()}}async function Wa(e,t,n=!1){let r=new AbortController,i=I({objectMode:!0}),a,o=new Promise(e=>{a=e}),s=t((async function*(){try{yield{body:{case:`init`,value:{resourceId:e}}},yield*i}finally{a()}})(),r.signal)[Symbol.asyncIterator]();try{let e=await s.next();if(e.done||e.value.body?.case!==`ack`)throw Error(`expected ResourceRpc acknowledgement`);let t=e.value.body.value.failure;if(t)throw new X(t);let a=()=>{r.abort(),Promise.resolve(s.return?.()).catch(()=>{})},c=!1,l=new Ir({push:e=>{if(e.body?.case!==`data`)throw Error(`expected ResourceRpc data`);i.push({body:e.body})},end:e=>{n||i.end(e)}},Ua(s,n),n?()=>{}:a);return Object.assign(l,{finish(e){if(!c){if(c=!0,e&&i.push({body:{case:`abandon`,value:{}}}),i.end(),e){o.then(a);return}a()}}})}catch(e){throw i.end(),r.abort(),await Promise.resolve(s.return?.()).catch(()=>{}),e}}async function*Ga(e,t){let n=await e.next();if(n.done||n.value.body?.case!==`init`)throw Error(`expected ResourceRpc init`);let r;try{r=await t(n.value.body.value.resourceId??0)}catch(e){yield{body:{case:`ack`,value:{failure:Ha(e)}}};return}yield{body:{case:`ack`,value:{}}};let i=I({objectMode:!0}),a=new Ir(i,Ua(e)),o=r(a).then(()=>i.end(),e=>i.end(e));try{for await(let e of i){if(e.body?.case!==`data`)throw Error(`expected ResourceRpc data`);yield{body:e.body}}}finally{await a.close(),await o}}const Ka=new Proxy({released:!0},{get(e,t){if(t===`released`)return!0;if(t===`toJSON`)return()=>({released:!0});let n=String(t);if(!(typeof t==`symbol`||n.startsWith(`$$`)||n.startsWith(`@@__`)||t===`constructor`||t===`prototype`||t===`__proto__`||t===`then`||t===`asymmetricMatch`||t===`nodeType`||t===`tagName`))throw new Z(`Cannot access "${n}" on released resource`,`INVALID_RESOURCE`)}}),qa=3e4,Ja=`ResourceClient stream did not initialize before timeout`;function Ya(e){return new Promise((t,n)=>{let r=!1,i=setTimeout(()=>{r||(r=!0,n(new Z(Ja,`CONNECTION_FAILED`)))},qa);e.then(e=>{r||(r=!0,clearTimeout(i),t(e))}).catch(e=>{r||(r=!0,clearTimeout(i),n(e))})})}function Xa(e){return e instanceof X&&[1,3,5].includes(e.failure.code??0)}var Z=class extends Error{code;cause;constructor(e,t,n){super(e),this.code=t,this.cause=n,this.name=`ResourceClientError`}},Za=class{listeners=[];on(e){return this.listeners.push(e),()=>{let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}}emit(e){[...this.listeners].forEach(t=>{try{t(e)}catch(e){console.error(`Error in event listener:`,e)}})}clear(){this.listeners.length=0}},Qa=class extends bn{resourceClient;openRoute;constructor(e,t){super(()=>t()),this.resourceClient=e,this.openRoute=t}async request(e,t,n,r){await this.resourceClient.waitForControls(r);let i,a=new bn(async()=>(i=await this.openRoute(!0),i));try{let o=await a.request(e,t,n,r);return i?.finish(!1),o}catch(e){throw i?.finish(!0),e}}async clientStreamingRequest(e,t,n,r){return await this.resourceClient.waitForControls(r),super.clientStreamingRequest(e,t,n,r)}serverStreamingRequest(e,t,n,r){let i=I({objectMode:!0});return(async()=>{await this.resourceClient.waitForControls(r);for await(let a of super.serverStreamingRequest(e,t,n,r))i.push(a);i.end()})().catch(e=>i.end(e)),i}bidirectionalStreamingRequest(e,t,n,r){let i=I({objectMode:!0});return(async()=>{await this.resourceClient.waitForControls(r);for await(let a of super.bidirectionalStreamingRequest(e,t,n,r))i.push(a);i.end()})().catch(e=>i.end(e)),i}};function $a(e,t,n,r){let i=!1,a=()=>{i||(i=!0,n(e,c))},o=null,s=()=>(o||=new Qa(t,async n=>Ya(Wa(e,t.service.ResourceRpc.bind(t.service),n)).catch(t=>{throw Xa(t)&&r(e),t})),o),c={get resourceId(){return e},get released(){return i},get client(){return i?Ka:s()},createRef(n){if(i)throw new Z(`Cannot create ref from released resource ${e}`,`INVALID_RESOURCE`);return t.createResourceReference(n)},createResource(e,t,...n){return new t(this.createRef(e),...n)},release:a,[Symbol.dispose]:a,_markReleased(){i=!0}};return c}var eo=class{service;signal;initState=null;connectionController=null;resourceSession=null;resources=new Map;events=new Za;connectionLostEvents=new Za;initPromise=null;disposed=!1;_connectionGeneration=0;_reconnectResolve=null;_reconnectReject=null;attachSession=null;attachSessionInitPromise=null;constructor(e,t){this.service=e,this.signal=t,t.addEventListener(`abort`,()=>{this.dispose(`CLIENT_CANCELLED`)},{once:!0})}get connectionGeneration(){return this._connectionGeneration}onResourceReleased(e){return this.throwIfDisposed(),this.events.on(e)}onConnectionLost(e){return this.throwIfDisposed(),this.connectionLostEvents.on(e)}async accessRootResource(){let e=await this.ensureInitialized();return this.createResourceReference(e.rootResourceId)}async attachRawInvoker(e,t,n){return this.attachResource(e,t,n)}async attachResourceTree(e,t,n,r){return this.attachResource(e,t,n,r)}async attachResource(e,t,n,r){let i=0;for(;;){let a=await this.ensureAttachSession();try{let i=++a.attachIdCtr,o=new Promise((e,t)=>{a.pending.set(i,{resolve:e,reject:t}),n?.addEventListener(`abort`,()=>{let e=a.pending.get(i);e&&(e.canceled=!0),t(Error(`aborted`))},{once:!0})});a.outgoing.push({body:{case:`add`,value:{attachId:i,label:e}}});let s=await o;return a.muxes.set(s,t),r&&a.releaseFns.set(s,r),{resourceId:s,cleanup:()=>{this.releaseAttachedResource(a,s),a.outgoing.push({body:{case:`detach`,value:{resourceId:s}}})}}}catch(e){if(n?.aborted||i>=3||!this.shouldRetryAttachResource(e,a))throw e;i++}}}shouldRetryAttachResource(e,t){return e instanceof Error&&e.message===`attach session closed`&&this.attachSession!==t}async ensureAttachSession(){return this.attachSession?this.attachSession:(this.attachSessionInitPromise||=this.openAttachSession().finally(()=>{this.attachSessionInitPromise=null}),this.attachSessionInitPromise)}async openAttachSession(){let e=await this.ensureInitialized(),t=La(this.signal),n=I({objectMode:!0}),r=this.service.ResourceAttach((async function*(){yield*n})(),t.signal)[Symbol.asyncIterator]();n.push({body:{case:`init`,value:{clientHandleId:e.clientHandleId}}});let i=await r.next();if(i.done)throw n.end(),t.abort(),Error(`stream closed before ack`);let a=i.value?.body;if(a?.case!==`ack`)throw n.end(),t.abort(),Error(`expected ack packet`);if(a.value.failure){n.end(),t.abort();let e=new X(a.value.failure);throw a.value.failure.code===2?(this.resetConnection(),new Z(`Resource attach client was released`,`CONNECTION_FAILED`,e)):e}let o={controller:t,outgoing:n,attachIdCtr:0,closed:!1,muxes:new Map,releaseFns:new Map,pending:new Map},s=new Nn(async(e,t)=>{let n=e.indexOf(`/`);if(n<0)return null;let r=parseInt(e.substring(0,n),10);if(isNaN(r))return null;let i=o.muxes.get(r);return i?i(e.substring(n+1),t):null}),c=new At(s,{direction:`inbound`,yamuxParams:{enableKeepAlive:!1}}),l=e=>this.releaseAttachedResource(o,e),u=(async function*(){for(;;){let e=await r.next();if(e.done)break;let t=e.value?.body;if(t?.case===`muxData`)yield t.value;else if(t?.case===`addAck`){let e=t.value,r=e.attachId??0,i=o.pending.get(r);if(o.pending.delete(r),!i)continue;if(i.canceled){e.failure||n.push({body:{case:`detach`,value:{resourceId:e.resourceId??0}}});continue}e.failure?i.reject(new X(e.failure)):i.resolve(e.resourceId??0)}t?.case===`detachAck`&&l(t.value.resourceId??0)}})();return _t(u,c,Ut(),async e=>{for await(let t of e)n.push({body:{case:`muxData`,value:t}});n.end()}).catch(()=>{n.end()}).finally(()=>{this.clearAttachSession(o)}),this.attachSession=o,o}createResourceReference(e){return this.throwIfDisposed(),this.createRef(e)}dispose(e=`CLIENT_DISPOSED`){if(this.disposed)return;this.disposed=!0,this._reconnectReject?.(new Z(`Resource client is closed`,e)),this._reconnectResolve=null,this._reconnectReject=null;let t=e!==`CONNECTION_FAILED`;if(t)for(let e of this.resources.keys())this.queueControl({case:`release`,value:{resourceId:e}});this.clearAttachSession(),t?(this.finishResourceSession(),this.connectionController=null):(this.retireResourceSession(),this.connectionController?.abort(),this.connectionController=null);for(let[e,t]of this.resources.entries())t.forEach(e=>e._markReleased()),this.events.emit({resourceId:e,reason:`client-disposed`});this.resources.clear(),this.events.clear(),this.connectionLostEvents.clear(),this.initState=null,this.initPromise=null}async ensureInitialized(){return this.throwIfDisposed(),this.initState?this.initState:(this.initPromise||=this.performInitialization(),this.initPromise)}async performInitialization(){return this.throwIfDisposed(),this.connectionController=La(this.signal),new Promise((e,t)=>{let n=!1,r=()=>{n||(this.connectionController?.abort(),this.connectionController=null,this.initPromise=null)},i=()=>{n||(r(),t(new Z(`Client initialization was cancelled`,`CLIENT_CANCELLED`)))};if(this.signal.aborted){i();return}this.signal.addEventListener(`abort`,i,{once:!0}),this.startConnection(e,()=>{n=!0,this.signal.removeEventListener(`abort`,i)}).catch(e=>{if(r(),!n){let n=e instanceof Error?e:Error(String(e));t(new Z(`Failed to initialize client connection: ${n.message}`,`CONNECTION_FAILED`,n))}})})}async startConnection(e,t){let n=this.connectionController;if(!n)throw new Z(`No connection controller`,`CONNECTION_FAILED`);let r=!1;await Ba(n.signal,async i=>{let a=La(i),o=!1,s=!1,c=setTimeout(()=>{o||a.signal.aborted||(s=!0,a.abort())},qa),l=I({objectMode:!0}),u={controller:a,outgoing:l,generation:this._connectionGeneration,initialized:!1,closed:!1,nextControlId:0,acknowledgedControlId:0,controlWaiters:new Set};this.resourceSession=u;let d=()=>{if(u.closed)return;u.closed=!0,l.end();let e=new Z(`ResourceClient control stream closed`,`CONNECTION_FAILED`);for(let t of u.controlWaiters)t.reject(e);u.controlWaiters.clear(),this.resourceSession===u&&(this.resourceSession=null)},f=()=>{throw new Z(Ja,`CONNECTION_FAILED`)};try{let n=this.service.ResourceClient((async function*(){yield*l})(),a.signal);l.push({body:{case:`init`,value:{}}});for await(let l of n){if(i.aborted)return;if(a.signal.aborted){s&&f();return}let n=l.body;if(n?.case===`init`){o=!0,u.initialized=!0,c&&clearTimeout(c),c=void 0;let i={clientHandleId:n.value.clientHandleId??0,rootResourceId:n.value.rootResourceId??0};this._reconnectResolve?(this.initState=i,this._reconnectResolve(i),this._reconnectResolve=null,this._reconnectReject=null):this.initState?this.initState=i:(this.initState=i,r=!0,t(),e(i));continue}if(n?.case===`resourceReleased`){this.handleServerResourceRelease(n.value.resourceId??0);continue}n?.case===`controlAck`&&this.acknowledgeControl(u,n.value.controlId??0)}}catch(e){throw!i.aborted&&s&&f(),e}finally{c&&clearTimeout(c),c=void 0,d(),this.connectionController===n&&!this.disposed&&o&&this.releaseAllResources(`connection-lost`)}if(!this.disposed&&!i.aborted)throw s&&f(),Error(o?`ResourceClient stream closed`:`ResourceClient stream closed before init`)},{errorCb:e=>{if(!r){n.abort();return}this.shouldRetryResourceClientStreamSilently(e)||console.warn(`Retry: retrying after error`,{error:e})}})}throwIfDisposed(){if(this.disposed)throw new Z(`Client has been disposed`,`CLIENT_DISPOSED`)}createRef(e){this.throwIfDisposed();let t=this.resources.get(e),n=!t;t||(t=new Set,this.resources.set(e,t));let r=$a(e,this,this.releaseRef.bind(this),this.handleServerResourceRelease.bind(this));return t.add(r),n&&this.queueControl({case:`adopt`,value:{resourceId:e}}),r}releaseRef(e,t){let n=this.resources.get(e);n&&(n.delete(t),n.size===0&&(this.resources.delete(e),this.queueControl({case:`release`,value:{resourceId:e}}),this.events.emit({resourceId:e,reason:`client-released`})))}queueControl(e){let t=this.resourceSession;if(!t||t.closed||!t.initialized)return;let n=++t.nextControlId;t.outgoing.push({controlId:n,body:e})}async waitForControls(e){if(e?.aborted)throw Error(gr);let t=this.resourceSession;if(!t||t.closed||!t.initialized)throw new Z(`ResourceClient control stream is unavailable`,`CONNECTION_FAILED`);let n=t.nextControlId;n<=t.acknowledgedControlId||await new Promise((r,i)=>{let a=()=>{t.controller.signal.removeEventListener(`abort`,c),e?.removeEventListener(`abort`,l)},o={target:n,resolve:()=>{a(),r()},reject:e=>{a(),i(e)}},s=e=>{t.controlWaiters.delete(o)&&o.reject(e)},c=()=>s(new Z(`ResourceClient control stream closed`,`CONNECTION_FAILED`)),l=()=>s(Error(gr));t.controlWaiters.add(o),t.controller.signal.addEventListener(`abort`,c,{once:!0}),e?.addEventListener(`abort`,l,{once:!0}),t.controller.signal.aborted&&c(),e?.aborted&&l()})}acknowledgeControl(e,t){if(t===0||t!==e.acknowledgedControlId+1||t>e.nextControlId)throw Error(`unexpected ResourceClient control acknowledgment ${t} after ${e.acknowledgedControlId}`);e.acknowledgedControlId=t;for(let n of e.controlWaiters)n.target>t||(e.controlWaiters.delete(n),n.resolve())}shouldRetryResourceClientStreamSilently(e){if(e instanceof Z&&e.message===Ja||String(e)===`StreamResetError: stream reset`)return!0;if(typeof e!=`object`||!e)return!1;let t=Reflect.get(e,`name`),n=Reflect.get(e,`message`);return(typeof t==`string`?t:``)===`StreamResetError`||(typeof n==`string`?n:``)===`stream reset`}handleServerResourceRelease(e){let t=this.resources.get(e);t&&(t.forEach(e=>e._markReleased()),this.resources.delete(e),this.events.emit({resourceId:e,reason:`server-released`}))}releaseAllResources(e){this._connectionGeneration++,this.clearAttachSession();for(let[t,n]of this.resources.entries())n.forEach(e=>e._markReleased()),this.events.emit({resourceId:t,reason:e});this.resources.clear(),this.initState=null,this.initPromise=new Promise((e,t)=>{this._reconnectResolve=e,this._reconnectReject=t}),this.initPromise.catch(()=>{}),this.connectionLostEvents.emit(void 0)}resetConnection(){if(this.disposed)return;let e=this.connectionController;this.connectionController=null,this.clearAttachSession();for(let[e,t]of this.resources.entries())t.forEach(e=>e._markReleased()),this.events.emit({resourceId:e,reason:`connection-lost`});this.resources.clear(),this.initState=null,this.initPromise=null,this._reconnectReject?.(new Z(`Resource generation was replaced`,`CONNECTION_FAILED`)),this._reconnectResolve=null,this._reconnectReject=null,this.retireResourceSession(),e?.abort(),this._connectionGeneration++,this.connectionLostEvents.emit(void 0)}finishResourceSession(){let e=this.resourceSession;e&&(e.closed=!0,e.outgoing.end(),this.resourceSession=null)}retireResourceSession(){let e=this.resourceSession;e&&(e.closed=!0,e.outgoing.end(),e.controller.abort(),this.resourceSession=null)}clearAttachSession(e){let t=e??this.attachSession;if(t&&(this.attachSession===t&&(this.attachSession=null),!t.closed)){t.closed=!0,t.controller.abort(),t.outgoing.end();for(let[,e]of t.pending)e.reject(Error(`attach session closed`));t.pending.clear(),this.releaseAllAttachedResources(t)}}releaseAttachedResource(e,t){let n=e.releaseFns.get(t);e.releaseFns.delete(t),e.muxes.delete(t),n?.()}releaseAllAttachedResources(e){let t=[...e.releaseFns.values()];e.releaseFns.clear(),e.muxes.clear();for(let e of t)e()}};const to={typeName:`resource.ResourceService`,methods:{ResourceClient:{name:`ResourceClient`,I:Rn,O:E,kind:P.BiDiStreaming},ResourceRpc:{name:`ResourceRpc`,I:Zn,O:Zn,kind:P.BiDiStreaming},ResourceAttach:{name:`ResourceAttach`,I:d,O:tt,kind:P.BiDiStreaming}}},no=to.typeName;var ro=class{rpc;service;constructor(e,t){this.service=t?.service||no,this.rpc=e,this.ResourceClient=this.ResourceClient.bind(this),this.ResourceRpc=this.ResourceRpc.bind(this),this.ResourceAttach=this.ResourceAttach.bind(this)}ResourceClient(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,to.methods.ResourceClient.name,Jt(Rn)(e),t||void 0);return M(E)(n)}ResourceRpc(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,to.methods.ResourceRpc.name,Jt(Zn)(e),t||void 0);return M(Zn)(n)}ResourceAttach(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,to.methods.ResourceAttach.name,Jt(d)(e),t||void 0);return M(tt)(n)}};async function io(e){if(!e)throw Error(`A sync storage directory is required`);let t=new Er(new URL(`./engine-worker.mjs`,import.meta.url),{workerData:Xn.toBinary({directory:e}),execArgv:[]}),n=Promise.withResolvers(),r=Promise.withResolvers(),i=new AbortController,a=new Set,o,s,c,l=!1,u=!1,d=e=>{s??=e,n.reject(s),o?.dispose(`CONNECTION_FAILED`),i.abort(s);for(let e of a)e.abort(s);a.clear()};t.on(`error`,d),t.on(`exit`,e=>{u=!0,l||d(Error(`Sync engine Worker exited unexpectedly (${e})`)),i.abort(s),r.resolve()}),t.on(`message`,e=>{try{let t=Tn.fromBinary(e);switch(t.kind){case 1:n.resolve();break;case 4:l=!0,t.error&&d(Error(t.error));break;case 5:d(Error(t.error||`Sync engine startup failed`));break;default:d(Error(`Sync engine returned an unsupported lifecycle message`))}}catch(e){d(e instanceof Error?e:Error(String(e)))}});let f=()=>(c??=(async()=>{if(o?.dispose(),!u){t.postMessage({message:Tn.toBinary({kind:3})});let e=setTimeout(()=>{d(Error(`Sync engine shutdown timed out`)),t.terminate()},1e4);try{await r.promise}finally{clearTimeout(e)}}if(await Promise.all(Array.from(a,e=>e.close())),a.clear(),s)throw s})(),c),p=setTimeout(()=>{d(Error(`Sync engine startup timed out`)),t.terminate()},3e4);try{return await n.promise,o=new eo(new ro(new bn(async()=>{if(s)throw s;if(c||u)throw Error(`Sync engine is closed`);let{port1:e,port2:n}=new Tr,r=nn(e),i=r.close.bind(r),o=r.abort.bind(r);return r.close=async()=>{a.delete(r),await i()},r.abort=e=>{a.delete(r),o(e)},a.add(r),t.postMessage({message:Tn.toBinary({kind:2}),port:n},[n]),r})),i.signal),{engine:new oa(await o.accessRootResource()),resources:o,signal:i.signal,close:f}}catch(e){try{await f()}catch{}throw e}finally{clearTimeout(p)}}var Q=n(((e,t)=>{let n=[`nodebuffer`,`arraybuffer`,`fragments`],r=typeof Blob<`u`;r&&n.push(`blob`),t.exports={BINARY_TYPES:n,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,hasBlob:r,kForOnEventAttribute:Symbol(`kIsForOnEventAttribute`),kListener:Symbol(`kListener`),kStatusCode:Symbol(`status-code`),kWebSocket:Symbol(`websocket`),NOOP:()=>{}}})),ao=n(((e,t)=>{let{EMPTY_BUFFER:n}=Q(),r=Buffer[Symbol.species];function i(e,t){if(e.length===0)return n;if(e.length===1)return e[0];let i=Buffer.allocUnsafe(t),a=0;for(let t=0;t<e.length;t++){let n=e[t];i.set(n,a),a+=n.length}return a<t?new r(i.buffer,i.byteOffset,a):i}function a(e,t,n,r,i){for(let a=0;a<i;a++)n[r+a]=e[a]^t[a&3]}function o(e,t){for(let n=0;n<e.length;n++)e[n]^=t[n&3]}function s(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function c(e){if(c.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new r(e):ArrayBuffer.isView(e)?t=new r(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),c.readOnly=!1),t}t.exports={concat:i,mask:a,toArrayBuffer:s,toBuffer:c,unmask:o}})),oo=n(((e,t)=>{let n=Symbol(`kDone`),r=Symbol(`kRun`);t.exports=class{constructor(e){this[n]=()=>{this.pending--,this[r]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[r]()}[r](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[n])}}}})),so=n(((e,n)=>{let r=t(`zlib`),i=ao(),a=oo(),{kStatusCode:o}=Q(),s=Buffer[Symbol.species],c=Buffer.from([0,0,255,255]),l=Symbol(`permessage-deflate`),u=Symbol(`total-length`),d=Symbol(`callback`),f=Symbol(`buffers`),p=Symbol(`error`),m;n.exports=class{constructor(e){if(this._options=e||{},this._threshold=this._options.threshold===void 0?1024:this._options.threshold,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!m){let e=this._options.concurrencyLimit===void 0?10:this._options.concurrencyLimit;m=new a(e)}}static get extensionName(){return`permessage-deflate`}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits??(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&=(this._inflate.close(),null),this._deflate){let e=this._deflate[d];this._deflate.close(),this._deflate=null,e&&e(Error(`The deflate stream was closed while data was being processed`))}}acceptAsServer(e){let t=this._options,n=e.find(e=>!(t.serverNoContextTakeover===!1&&e.server_no_context_takeover||e.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits==`number`&&t.serverMaxWindowBits>e.server_max_window_bits)||typeof t.clientMaxWindowBits==`number`&&(typeof e.client_max_window_bits==`number`?t.clientMaxWindowBits>e.client_max_window_bits:!e.client_max_window_bits)));if(!n)throw Error(`None of the extension offers can be accepted`);return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof t.serverMaxWindowBits==`number`&&(n.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits==`number`?n.client_max_window_bits=t.clientMaxWindowBits:(n.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let t=e[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw Error(`Unexpected parameter "client_no_context_takeover"`);if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits==`number`&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==`number`&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw Error(`Unexpected or invalid parameter "client_max_window_bits"`);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let n=e[t];if(n.length>1)throw Error(`Parameter "${t}" must have only a single value`);if(n=n[0],t===`client_max_window_bits`){if(n!==!0){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else if(t===`server_max_window_bits`){let e=+n;if(!Number.isInteger(e)||e<8||e>15)throw TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(t===`client_no_context_takeover`||t===`server_no_context_takeover`){if(n!==!0)throw TypeError(`Invalid value for parameter "${t}": ${n}`)}else throw Error(`Unknown parameter "${t}"`);e[t]=n})}),e}decompress(e,t,n){m.add(r=>{this._decompress(e,t,(e,t)=>{r(),n(e,t)})})}compress(e,t,n){m.add(r=>{this._compress(e,t,(e,t)=>{r(),n(e,t)})})}_decompress(e,t,n){let a=this._isServer?`client`:`server`;if(!this._inflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:r.Z_DEFAULT_WINDOWBITS;this._inflate=r.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[l]=this,this._inflate[u]=0,this._inflate[f]=[],this._inflate.on(`error`,_),this._inflate.on(`data`,g)}this._inflate[d]=n,this._inflate.write(e),t&&this._inflate.write(c),this._inflate.flush(()=>{let e=this._inflate[p];if(e){this._inflate.close(),this._inflate=null,n(e);return}let r=i.concat(this._inflate[f],this._inflate[u]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[u]=0,this._inflate[f]=[],t&&this.params[`${a}_no_context_takeover`]&&this._inflate.reset()),n(null,r)})}_compress(e,t,n){let a=this._isServer?`server`:`client`;if(!this._deflate){let e=`${a}_max_window_bits`,t=typeof this.params[e]==`number`?this.params[e]:r.Z_DEFAULT_WINDOWBITS;this._deflate=r.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[u]=0,this._deflate[f]=[],this._deflate.on(`data`,h)}this._deflate[d]=n,this._deflate.write(e),this._deflate.flush(r.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=i.concat(this._deflate[f],this._deflate[u]);t&&(e=new s(e.buffer,e.byteOffset,e.length-4)),this._deflate[d]=null,this._deflate[u]=0,this._deflate[f]=[],t&&this.params[`${a}_no_context_takeover`]&&this._deflate.reset(),n(null,e)})}};function h(e){this[f].push(e),this[u]+=e.length}function g(e){if(this[u]+=e.length,this[l]._maxPayload<1||this[u]<=this[l]._maxPayload){this[f].push(e);return}this[p]=RangeError(`Max payload size exceeded`),this[p].code=`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`,this[p][o]=1009,this.removeListener(`data`,g),this.reset()}function _(e){if(this[l]._inflate=null,this[p]){this[d](this[p]);return}e[o]=1007,this[d](e)}})),co=n(((e,n)=>{let{isUtf8:r}=t(`buffer`),{hasBlob:i}=Q(),a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function o(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function s(e){let t=e.length,n=0;for(;n<t;)if(!(e[n]&128))n++;else if((e[n]&224)==192){if(n+1===t||(e[n+1]&192)!=128||(e[n]&254)==192)return!1;n+=2}else if((e[n]&240)==224){if(n+2>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||e[n]===224&&(e[n+1]&224)==128||e[n]===237&&(e[n+1]&224)==160)return!1;n+=3}else if((e[n]&248)==240){if(n+3>=t||(e[n+1]&192)!=128||(e[n+2]&192)!=128||(e[n+3]&192)!=128||e[n]===240&&(e[n+1]&240)==128||e[n]===244&&e[n+1]>143||e[n]>244)return!1;n+=4}else return!1;return!0}function c(e){return i&&typeof e==`object`&&typeof e.arrayBuffer==`function`&&typeof e.type==`string`&&typeof e.stream==`function`&&(e[Symbol.toStringTag]===`Blob`||e[Symbol.toStringTag]===`File`)}n.exports={isBlob:c,isValidStatusCode:o,isValidUTF8:s,tokenChars:a},r&&(n.exports.isValidUTF8=function(e){return e.length<24?s(e):r(e)})})),lo=n(((e,n)=>{let{Writable:r}=t(`stream`),i=so(),{BINARY_TYPES:a,EMPTY_BUFFER:o,kStatusCode:s,kWebSocket:c}=Q(),{concat:l,toArrayBuffer:u,unmask:d}=ao(),{isValidStatusCode:f,isValidUTF8:p}=co(),m=Buffer[Symbol.species];n.exports=class extends r{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents===void 0||e.allowSynchronousEvents,this._binaryType=e.binaryType||a[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxBufferedChunks=e.maxBufferedChunks|0,this._maxFragments=e.maxFragments|0,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[c]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._numFragments=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,n){if(this._opcode===8&&this._state==0)return n();if(this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks){n(this.createError(RangeError,`Too many buffered chunks`,!1,1008,`WS_ERR_TOO_MANY_BUFFERED_PARTS`));return}this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let t=this._buffers[0];return this._buffers[0]=new m(t.buffer,t.byteOffset+e,t.length-e),new m(t.buffer,t.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let n=this._buffers[0],r=t.length-e;e>=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=new m(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if(t[0]&48){e(this.createError(RangeError,`RSV2 and RSV3 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_2_3`));return}let n=(t[0]&64)==64;if(n&&!this._extensions[i.extensionName]){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._fin=(t[0]&128)==128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(!this._fragmented){e(this.createError(RangeError,`invalid opcode 0`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){e(this.createError(RangeError,`FIN must be set`,!0,1002,`WS_ERR_EXPECTED_FIN`));return}if(n){e(this.createError(RangeError,`RSV1 must be clear`,!0,1002,`WS_ERR_UNEXPECTED_RSV_1`));return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,`WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH`));return}}else{e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,`WS_ERR_INVALID_OPCODE`));return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)==128,this._isServer){if(!this._masked){e(this.createError(RangeError,`MASK must be set`,!0,1002,`WS_ERR_EXPECTED_MASK`));return}}else if(this._masked){e(this.createError(RangeError,`MASK must be clear`,!0,1002,`WS_ERR_UNEXPECTED_MASK`));return}this._payloadLength===126?this._state=1:this._payloadLength===127?this._state=2:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),n=t.readUInt32BE(0);if(n>2**21-1){e(this.createError(RangeError,`Unsupported WebSocket frame: payload length > 2^53 - 1`,!1,1009,`WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH`));return}this._payloadLength=n*2**32+t.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){e(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._state=this._masked?3:4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(e){let t=o;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&d(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._maxFragments>0&&++this._numFragments>this._maxFragments){e(this.createError(RangeError,`Too many message fragments`,!1,1008,`WS_ERR_TOO_MANY_BUFFERED_PARTS`));return}if(this._compressed){this._state=5,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[i.extensionName].decompress(e,this._fin,(e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){t(this.createError(RangeError,`Max payload size exceeded`,!1,1009,`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`));return}this._fragments.push(n)}this.dataMessage(t),this._state===0&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=0;return}let t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._numFragments=0,this._fragments=[],this._opcode===2){let r;r=this._binaryType===`nodebuffer`?l(n,t):this._binaryType===`arraybuffer`?u(l(n,t)):this._binaryType===`blob`?new Blob(n):n,this._allowSynchronousEvents?(this.emit(`message`,r,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!0),this._state=0,this.startLoop(e)}))}else{let r=l(n,t);if(!this._skipUTF8Validation&&!p(r)){e(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._state===5||this._allowSynchronousEvents?(this.emit(`message`,r,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit(`message`,r,!1),this._state=0,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit(`conclude`,1005,o),this.end();else{let n=e.readUInt16BE(0);if(!f(n)){t(this.createError(RangeError,`invalid status code ${n}`,!0,1002,`WS_ERR_INVALID_CLOSE_CODE`));return}let r=new m(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!p(r)){t(this.createError(Error,`invalid UTF-8 sequence`,!0,1007,`WS_ERR_INVALID_UTF8`));return}this._loop=!1,this.emit(`conclude`,n,r),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0):(this._state=6,setImmediate(()=>{this.emit(this._opcode===9?`ping`:`pong`,e),this._state=0,this.startLoop(t)}))}createError(e,t,n,r,i){this._loop=!1,this._errored=!0;let a=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(a,this.createError),a.code=i,a[s]=r,a}}})),uo=n(((e,n)=>{let{Duplex:r}=t(`stream`),{randomFillSync:i}=t(`crypto`),{types:{isUint8Array:a}}=t(`util`),o=so(),{EMPTY_BUFFER:s,kWebSocket:c,NOOP:l}=Q(),{isBlob:u,isValidStatusCode:d}=co(),{mask:f,toBuffer:p}=ao(),m=Symbol(`kByteLength`),h=Buffer.alloc(4),g=8192,_,v=g;n.exports=class e{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=l,this[c]=void 0}static frame(e,t){let n,r=!1,a=2,o=!1;t.mask&&(n=t.maskBuffer||h,t.generateMask?t.generateMask(n):(v===g&&(_===void 0&&(_=Buffer.alloc(g)),i(_,0,g),v=0),n[0]=_[v++],n[1]=_[v++],n[2]=_[v++],n[3]=_[v++]),o=(n[0]|n[1]|n[2]|n[3])===0,a=6);let s;typeof e==`string`?(!t.mask||o)&&t[m]!==void 0?s=t[m]:(e=Buffer.from(e),s=e.length):(s=e.length,r=t.mask&&t.readOnly&&!o);let c=s;s>=65536?(a+=8,c=127):s>125&&(a+=2,c=126);let l=Buffer.allocUnsafe(r?s+a:a);return l[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(s,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(s,4,6)),!t.mask||(l[1]|=128,l[a-4]=n[0],l[a-3]=n[1],l[a-2]=n[2],l[a-1]=n[3],o)?[l,e]:r?(f(e,n,l,a,s),[l]):(f(e,n,e,0,s),[l,e])}close(t,n,r,i){let o;if(t===void 0)o=s;else if(typeof t!=`number`||!d(t))throw TypeError(`First argument must be a valid error code number`);else if(n===void 0||!n.length)o=Buffer.allocUnsafe(2),o.writeUInt16BE(t,0);else{let e=Buffer.byteLength(n);if(e>123)throw RangeError(`The message must not be greater than 123 bytes`);if(o=Buffer.allocUnsafe(2+e),o.writeUInt16BE(t,0),typeof n==`string`)o.write(n,2);else if(a(n))o.set(n,2);else throw TypeError(`Second argument must be a string or a Uint8Array`)}let c={[m]:o.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state===0?this.sendFrame(e.frame(o,c),i):this.enqueue([this.dispatch,o,!1,c,i])}ping(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):u(t)?(i=t.size,a=!1):(t=p(t),i=t.length,a=p.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[m]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:a,rsv1:!1};u(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}pong(t,n,r){let i,a;if(typeof t==`string`?(i=Buffer.byteLength(t),a=!1):u(t)?(i=t.size,a=!1):(t=p(t),i=t.length,a=p.readOnly),i>125)throw RangeError(`The data size must not be greater than 125 bytes`);let o={[m]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:a,rsv1:!1};u(t)?this._state===0?this.getBlobData(t,!1,o,r):this.enqueue([this.getBlobData,t,!1,o,r]):this._state===0?this.sendFrame(e.frame(t,o),r):this.enqueue([this.dispatch,t,!1,o,r])}send(e,t,n){let r=this._extensions[o.extensionName],i=t.binary?2:1,a=t.compress,s,c;typeof e==`string`?(s=Buffer.byteLength(e),c=!1):u(e)?(s=e.size,c=!1):(e=p(e),s=e.length,c=p.readOnly),this._firstFragment?(this._firstFragment=!1,a&&r&&r.params[r._isServer?`server_no_context_takeover`:`client_no_context_takeover`]&&(a=s>=r._threshold),this._compress=a):(a=!1,i=0),t.fin&&(this._firstFragment=!0);let l={[m]:s,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:c,rsv1:a};u(e)?this._state===0?this.getBlobData(e,this._compress,l,n):this.enqueue([this.getBlobData,e,this._compress,l,n]):this._state===0?this.dispatch(e,this._compress,l,n):this.enqueue([this.dispatch,e,this._compress,l,n])}getBlobData(t,n,r,i){this._bufferedBytes+=r[m],this._state=2,t.arrayBuffer().then(t=>{if(this._socket.destroyed){let e=Error(`The socket was closed while the blob was being read`);process.nextTick(y,this,e,i);return}this._bufferedBytes-=r[m];let a=p(t);n?this.dispatch(a,n,r,i):(this._state=0,this.sendFrame(e.frame(a,r),i),this.dequeue())}).catch(e=>{process.nextTick(ee,this,e,i)})}dispatch(t,n,r,i){if(!n){this.sendFrame(e.frame(t,r),i);return}let a=this._extensions[o.extensionName];this._bufferedBytes+=r[m],this._state=1,a.compress(t,r.fin,(t,n)=>{if(this._socket.destroyed){let e=Error(`The socket was closed while data was being compressed`);y(this,e,i);return}this._bufferedBytes-=r[m],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(n,r),i),this.dequeue()})}dequeue(){for(;this._state===0&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][m],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][m],this._queue.push(e)}sendFrame(e,t){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};function y(e,t,n){typeof n==`function`&&n(t);for(let n=0;n<e._queue.length;n++){let r=e._queue[n],i=r[r.length-1];typeof i==`function`&&i(t)}}function ee(e,t,n){y(e,t,n),e.onerror(t)}})),fo=n(((e,t)=>{let{kForOnEventAttribute:n,kListener:r}=Q(),i=Symbol(`kCode`),a=Symbol(`kData`),o=Symbol(`kError`),s=Symbol(`kMessage`),c=Symbol(`kReason`),l=Symbol(`kTarget`),u=Symbol(`kType`),d=Symbol(`kWasClean`);var f=class{constructor(e){this[l]=null,this[u]=e}get target(){return this[l]}get type(){return this[u]}};Object.defineProperty(f.prototype,"target",{enumerable:!0}),Object.defineProperty(f.prototype,"type",{enumerable:!0});var p=class extends f{constructor(e,t={}){super(e),this[i]=t.code===void 0?0:t.code,this[c]=t.reason===void 0?``:t.reason,this[d]=t.wasClean!==void 0&&t.wasClean}get code(){return this[i]}get reason(){return this[c]}get wasClean(){return this[d]}};Object.defineProperty(p.prototype,"code",{enumerable:!0}),Object.defineProperty(p.prototype,"reason",{enumerable:!0}),Object.defineProperty(p.prototype,"wasClean",{enumerable:!0});var m=class extends f{constructor(e,t={}){super(e),this[o]=t.error===void 0?null:t.error,this[s]=t.message===void 0?``:t.message}get error(){return this[o]}get message(){return this[s]}};Object.defineProperty(m.prototype,"error",{enumerable:!0}),Object.defineProperty(m.prototype,"message",{enumerable:!0});var h=class extends f{constructor(e,t={}){super(e),this[a]=t.data===void 0?null:t.data}get data(){return this[a]}};Object.defineProperty(h.prototype,"data",{enumerable:!0}),t.exports={CloseEvent:p,ErrorEvent:m,Event:f,EventTarget:{addEventListener(e,t,i={}){for(let a of this.listeners(e))if(!i[n]&&a[r]===t&&!a[n])return;let a;if(e===`message`)a=function(e,n){let r=new h(`message`,{data:n?e:e.toString()});r[l]=this,g(t,this,r)};else if(e===`close`)a=function(e,n){let r=new p(`close`,{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[l]=this,g(t,this,r)};else if(e===`error`)a=function(e){let n=new m(`error`,{error:e,message:e.message});n[l]=this,g(t,this,n)};else if(e===`open`)a=function(){let e=new f(`open`);e[l]=this,g(t,this,e)};else return;a[n]=!!i[n],a[r]=t,i.once?this.once(e,a):this.on(e,a)},removeEventListener(e,t){for(let i of this.listeners(e))if(i[r]===t&&!i[n]){this.removeListener(e,i);break}}},MessageEvent:h};function g(e,t,n){typeof e==`object`&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}})),po=n(((e,t)=>{let{tokenChars:n}=co();function r(e,t,n){e[t]===void 0?e[t]=[n]:e[t].push(n)}function i(e){let t=Object.create(null),i=Object.create(null),a=!1,o=!1,s=!1,c,l,u=-1,d=-1,f=-1,p=0;for(;p<e.length;p++)if(d=e.charCodeAt(p),c===void 0){if(f===-1&&n[d]===1)u===-1&&(u=p);else if(p!==0&&(d===32||d===9))f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);d===44?(r(t,n,i),i=Object.create(null)):c=n,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`)}else if(l===void 0){if(f===-1&&n[d]===1)u===-1&&(u=p);else if(d===32||d===9)f===-1&&u!==-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p),r(i,e.slice(u,f),!0),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),u=f=-1}else if(d===61&&u!==-1&&f===-1)l=e.slice(u,p),u=f=-1;else throw SyntaxError(`Unexpected character at index ${p}`)}else if(o){if(n[d]!==1)throw SyntaxError(`Unexpected character at index ${p}`);u===-1?u=p:a||=!0,o=!1}else if(s){if(n[d]===1)u===-1&&(u=p);else if(d===34&&u!==-1)s=!1,f=p;else if(d===92)o=!0;else throw SyntaxError(`Unexpected character at index ${p}`)}else if(d===34&&e.charCodeAt(p-1)===61)s=!0;else if(f===-1&&n[d]===1)u===-1&&(u=p);else if(u!==-1&&(d===32||d===9))f===-1&&(f=p);else if(d===59||d===44){if(u===-1)throw SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let n=e.slice(u,f);a&&=(n=n.replace(/\\/g,``),!1),r(i,l,n),d===44&&(r(t,c,i),i=Object.create(null),c=void 0),l=void 0,u=f=-1}else throw SyntaxError(`Unexpected character at index ${p}`);if(u===-1||s||d===32||d===9)throw SyntaxError(`Unexpected end of input`);f===-1&&(f=p);let m=e.slice(u,f);return c===void 0?r(t,m,i):(l===void 0?r(i,m,!0):a?r(i,l,m.replace(/\\/g,``)):r(i,l,m),r(t,c,i)),t}function a(e){return Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>[t].concat(Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>e===!0?t:`${t}=${e}`).join(`; `)})).join(`; `)).join(`, `)}).join(`, `)}t.exports={format:a,parse:i}})),mo=n(((e,n)=>{let r=t(`events`),i=t(`https`),a=t(`http`),o=t(`net`),s=t(`tls`),{randomBytes:c,createHash:l}=t(`crypto`),{Duplex:u,Readable:d}=t(`stream`),{URL:f}=t(`url`),p=so(),m=lo(),h=uo(),{isBlob:g}=co(),{BINARY_TYPES:_,CLOSE_TIMEOUT:v,EMPTY_BUFFER:y,GUID:ee,kForOnEventAttribute:b,kListener:x,kStatusCode:te,kWebSocket:S,NOOP:C}=Q(),{EventTarget:{addEventListener:ne,removeEventListener:re}}=fo(),{format:ie,parse:ae}=po(),{toBuffer:oe}=ao(),se=Symbol(`kAborted`),ce=[8,13],w=[`CONNECTING`,`OPEN`,`CLOSING`,`CLOSED`],le=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;var T=class e extends r{constructor(t,n,r){super(),this._binaryType=_[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=y,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol=``,this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t===null?(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0):(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n==`object`&&n?(r=n,n=[]):n=[n]),ue(this,t,n,r))}get binaryType(){return this._binaryType}set binaryType(e){_.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,n,r){let i=new m({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:r.maxBufferedChunks,maxFragments:r.maxFragments,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),a=new h(t,this._extensions,r.generateMask);this._receiver=i,this._sender=a,this._socket=t,i[S]=this,a[S]=this,t[S]=this,i.on(`conclude`,he),i.on(`drain`,ge),i.on(`error`,_e),i.on(`message`,ye),i.on(`ping`,be),i.on(`pong`,xe),a.onerror=Ce,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on(`close`,Te),t.on(`data`,D),t.on(`end`,Ee),t.on(`error`,De),this._readyState=e.OPEN,this.emit(`open`)}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage);return}this._extensions[p.extensionName]&&this._extensions[p.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit(`close`,this._closeCode,this._closeMessage)}close(t,n){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){E(this,this._req,`WebSocket was closed before the connection was established`);return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,n,!this._isServer,e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),we(this)}}pause(){this.readyState!==e.CONNECTING&&this.readyState!==e.CLOSED&&(this._paused=!0,this._socket.pause())}ping(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){me(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(t||y,n,r)}pong(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof t==`function`?(r=t,t=n=void 0):typeof n==`function`&&(r=n,n=void 0),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){me(this,t,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(t||y,n,r)}resume(){this.readyState!==e.CONNECTING&&this.readyState!==e.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,n,r){if(this.readyState===e.CONNECTING)throw Error(`WebSocket is not open: readyState 0 (CONNECTING)`);if(typeof n==`function`&&(r=n,n={}),typeof t==`number`&&(t=t.toString()),this.readyState!==e.OPEN){me(this,t,r);return}let i={binary:typeof t!=`string`,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[p.extensionName]||(i.compress=!1),this._sender.send(t||y,i,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){E(this,this._req,`WebSocket was closed before the connection was established`);return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(T,"CONNECTING",{enumerable:!0,value:w.indexOf(`CONNECTING`)}),Object.defineProperty(T.prototype,"CONNECTING",{enumerable:!0,value:w.indexOf(`CONNECTING`)}),Object.defineProperty(T,"OPEN",{enumerable:!0,value:w.indexOf(`OPEN`)}),Object.defineProperty(T.prototype,"OPEN",{enumerable:!0,value:w.indexOf(`OPEN`)}),Object.defineProperty(T,"CLOSING",{enumerable:!0,value:w.indexOf(`CLOSING`)}),Object.defineProperty(T.prototype,"CLOSING",{enumerable:!0,value:w.indexOf(`CLOSING`)}),Object.defineProperty(T,"CLOSED",{enumerable:!0,value:w.indexOf(`CLOSED`)}),Object.defineProperty(T.prototype,"CLOSED",{enumerable:!0,value:w.indexOf(`CLOSED`)}),[`binaryType`,`bufferedAmount`,`extensions`,`isPaused`,`protocol`,`readyState`,`url`].forEach(e=>{Object.defineProperty(T.prototype,e,{enumerable:!0})}),[`open`,`error`,`close`,`message`].forEach(e=>{Object.defineProperty(T.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[b])return t[x];return null},set(t){for(let t of this.listeners(e))if(t[b]){this.removeListener(e,t);break}typeof t==`function`&&this.addEventListener(e,t,{[b]:!0})}})}),T.prototype.addEventListener=ne,T.prototype.removeEventListener=re,n.exports=T;function ue(e,t,n,r){let o={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:v,protocolVersion:ce[1],maxBufferedChunks:262144,maxFragments:16384,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:`GET`,host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,e._closeTimeout=o.closeTimeout,!ce.includes(o.protocolVersion))throw RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${ce.join(`, `)})`);let s;if(t instanceof f)s=t;else try{s=new f(t)}catch{throw SyntaxError(`Invalid URL: ${t}`)}s.protocol===`http:`?s.protocol=`ws:`:s.protocol===`https:`&&(s.protocol=`wss:`),e._url=s.href;let u=s.protocol===`wss:`,d=s.protocol===`ws+unix:`,m;if(s.protocol!==`ws:`&&!u&&!d?m=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:d&&!s.pathname?m=`The URL's pathname is empty`:s.hash&&(m=`The URL contains a fragment identifier`),m){let t=SyntaxError(m);if(e._redirects===0)throw t;de(e,t);return}let h=u?443:80,g=c(16).toString(`base64`),_=u?i.request:a.request,y=new Set,b;if(o.createConnection=o.createConnection||(u?pe:fe),o.defaultPort=o.defaultPort||h,o.port=s.port||h,o.host=s.hostname.startsWith(`[`)?s.hostname.slice(1,-1):s.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":g,Connection:`Upgrade`,Upgrade:`websocket`},o.path=s.pathname+s.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(b=new p({...o.perMessageDeflate,isServer:!1,maxPayload:o.maxPayload}),o.headers[`Sec-WebSocket-Extensions`]=ie({[p.extensionName]:b.offer()})),n.length){for(let e of n){if(typeof e!=`string`||!le.test(e)||y.has(e))throw SyntaxError(`An invalid or duplicated subprotocol was specified`);y.add(e)}o.headers[`Sec-WebSocket-Protocol`]=n.join(`,`)}if(o.origin&&(o.protocolVersion<13?o.headers[`Sec-WebSocket-Origin`]=o.origin:o.headers.Origin=o.origin),(s.username||s.password)&&(o.auth=`${s.username}:${s.password}`),d){let e=o.path.split(`:`);o.socketPath=e[0],o.path=e[1]}let x;if(o.followRedirects){if(e._redirects===0){e._originalIpc=d,e._originalSecure=u,e._originalHostOrSocketPath=d?o.socketPath:s.host;let t=r&&r.headers;if(r={...r,headers:{}},t)for(let[e,n]of Object.entries(t))r.headers[e.toLowerCase()]=n}else if(e.listenerCount(`redirect`)===0){let t=d?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:!e._originalIpc&&s.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!u)&&(delete o.headers.authorization,delete o.headers.cookie,t||delete o.headers.host,o.auth=void 0)}o.auth&&!r.headers.authorization&&(r.headers.authorization=`Basic `+Buffer.from(o.auth).toString(`base64`)),x=e._req=_(o),e._redirects&&e.emit(`redirect`,e.url,x)}else x=e._req=_(o);o.timeout&&x.on(`timeout`,()=>{E(e,x,`Opening handshake has timed out`)}),x.on(`error`,t=>{x===null||x[se]||(x=e._req=null,de(e,t))}),x.on(`response`,i=>{let a=i.headers.location,s=i.statusCode;if(a&&o.followRedirects&&s>=300&&s<400){if(++e._redirects>o.maxRedirects){E(e,x,`Maximum redirects exceeded`);return}x.abort();let i;try{i=new f(a,t)}catch{de(e,SyntaxError(`Invalid URL: ${a}`));return}ue(e,i,n,r)}else e.emit(`unexpected-response`,x,i)||E(e,x,`Unexpected server response: ${i.statusCode}`)}),x.on(`upgrade`,(t,n,r)=>{if(e.emit(`upgrade`,t),e.readyState!==T.CONNECTING)return;x=e._req=null;let i=t.headers.upgrade;if(i===void 0||i.toLowerCase()!==`websocket`){E(e,n,`Invalid Upgrade header`);return}let a=l(`sha1`).update(g+ee).digest(`base64`);if(t.headers[`sec-websocket-accept`]!==a){E(e,n,`Invalid Sec-WebSocket-Accept header`);return}let s=t.headers[`sec-websocket-protocol`],c;if(s===void 0?y.size&&(c=`Server sent no subprotocol`):y.size?y.has(s)||(c=`Server sent an invalid subprotocol`):c=`Server sent a subprotocol but none was requested`,c){E(e,n,c);return}s&&(e._protocol=s);let u=t.headers[`sec-websocket-extensions`];if(u!==void 0){if(!b){E(e,n,`Server sent a Sec-WebSocket-Extensions header but no extension was requested`);return}let t;try{t=ae(u)}catch{E(e,n,`Invalid Sec-WebSocket-Extensions header`);return}let r=Object.keys(t);if(r.length!==1||r[0]!==p.extensionName){E(e,n,`Server indicated an extension that was not requested`);return}try{b.accept(t[p.extensionName])}catch{E(e,n,`Invalid Sec-WebSocket-Extensions header`);return}e._extensions[p.extensionName]=b}e.setSocket(n,r,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxBufferedChunks:o.maxBufferedChunks,maxFragments:o.maxFragments,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(x,e):x.end()}function de(e,t){e._readyState=T.CLOSING,e._errorEmitted=!0,e.emit(`error`,t),e.emitClose()}function fe(e){return e.path=e.socketPath,o.connect(e)}function pe(e){return e.path=void 0,!e.servername&&e.servername!==``&&(e.servername=o.isIP(e.host)?``:e.host),s.connect(e)}function E(e,t,n){e._readyState=T.CLOSING;let r=Error(n);Error.captureStackTrace(r,E),t.setHeader?(t[se]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(de,e,r)):(t.destroy(r),t.once(`error`,e.emit.bind(e,`error`)),t.once(`close`,e.emitClose.bind(e)))}function me(e,t,n){if(t){let n=g(t)?t.size:oe(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){let t=Error(`WebSocket is not open: readyState ${e.readyState} (${w[e.readyState]})`);process.nextTick(n,t)}}function he(e,t){let n=this[S];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,n._socket[S]!==void 0&&(n._socket.removeListener(`data`,D),process.nextTick(Se,n._socket),e===1005?n.close():n.close(e,t))}function ge(){let e=this[S];e.isPaused||e._socket.resume()}function _e(e){let t=this[S];t._socket[S]!==void 0&&(t._socket.removeListener(`data`,D),process.nextTick(Se,t._socket),t.close(e[te])),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e))}function ve(){this[S].emitClose()}function ye(e,t){this[S].emit(`message`,e,t)}function be(e){let t=this[S];t._autoPong&&t.pong(e,!this._isServer,C),t.emit(`ping`,e)}function xe(e){this[S].emit(`pong`,e)}function Se(e){e.resume()}function Ce(e){let t=this[S];t.readyState!==T.CLOSED&&(t.readyState===T.OPEN&&(t._readyState=T.CLOSING,we(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e)))}function we(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),e._closeTimeout)}function Te(){let e=this[S];if(this.removeListener(`close`,Te),this.removeListener(`data`,D),this.removeListener(`end`,Ee),e._readyState=T.CLOSING,!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&this._readableState.length!==0){let t=this.read(this._readableState.length);e._receiver.write(t)}e._receiver.end(),this[S]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on(`error`,ve),e._receiver.on(`finish`,ve))}function D(e){this[S]._receiver.write(e)||this.pause()}function Ee(){let e=this[S];e._readyState=T.CLOSING,e._receiver.end(),this.end()}function De(){let e=this[S];this.removeListener(`error`,De),this.on(`error`,C),e&&(e._readyState=T.CLOSING,this.destroy())}})),ho=n(((e,n)=>{mo();let{Duplex:r}=t(`stream`);function i(e){e.emit(`close`)}function a(){!this.destroyed&&this._writableState.finished&&this.destroy()}function o(e){this.removeListener(`error`,o),this.destroy(),this.listenerCount(`error`)===0&&this.emit(`error`,e)}function s(e,t){let n=!0,s=new r({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on(`message`,function(t,n){let r=!n&&s._readableState.objectMode?t.toString():t;s.push(r)||e.pause()}),e.once(`error`,function(e){s.destroyed||(n=!1,s.destroy(e))}),e.once(`close`,function(){s.destroyed||s.push(null)}),s._destroy=function(t,r){if(e.readyState===e.CLOSED){r(t),process.nextTick(i,s);return}let a=!1;e.once(`error`,function(e){a=!0,r(e)}),e.once(`close`,function(){a||r(t),process.nextTick(i,s)}),n&&e.terminate()},s._final=function(t){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._final(t)});return}e._socket!==null&&(e._socket._writableState.finished?(t(),s._readableState.endEmitted&&s.destroy()):(e._socket.once(`finish`,function(){t()}),e.close()))},s._read=function(){e.isPaused&&e.resume()},s._write=function(t,n,r){if(e.readyState===e.CONNECTING){e.once(`open`,function(){s._write(t,n,r)});return}e.send(t,r)},s.on(`end`,a),s.on(`error`,o),s}n.exports=s})),go=n(((e,t)=>{let{tokenChars:n}=co();function r(e){let t=new Set,r=-1,i=-1,a=0;for(;a<e.length;a++){let o=e.charCodeAt(a);if(i===-1&&n[o]===1)r===-1&&(r=a);else if(a!==0&&(o===32||o===9))i===-1&&r!==-1&&(i=a);else if(o===44){if(r===-1)throw SyntaxError(`Unexpected character at index ${a}`);i===-1&&(i=a);let n=e.slice(r,i);if(t.has(n))throw SyntaxError(`The "${n}" subprotocol is duplicated`);t.add(n),r=i=-1}else throw SyntaxError(`Unexpected character at index ${a}`)}if(r===-1||i!==-1)throw SyntaxError(`Unexpected end of input`);let o=e.slice(r,a);if(t.has(o))throw SyntaxError(`The "${o}" subprotocol is duplicated`);return t.add(o),t}t.exports={parse:r}})),_o=n(((e,n)=>{let r=t(`events`),i=t(`http`),{Duplex:a}=t(`stream`),{createHash:o}=t(`crypto`),s=po(),c=so(),l=go(),u=mo(),{CLOSE_TIMEOUT:d,GUID:f,kWebSocket:p}=Q(),m=/^[+/0-9A-Za-z]{22}==$/;n.exports=class extends r{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:262144,maxFragments:16384,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:d,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:u,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw TypeError(`One and only one of the "port", "server", or "noServer" options must be specified`);if(e.port==null?e.server&&(this._server=e.server):(this._server=i.createServer((e,t)=>{let n=i.STATUS_CODES[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":`text/plain`}),t.end(n)}),this._server.listen(e.port,e.host,e.backlog,t)),this._server){let e=this.emit.bind(this,`connection`);this._removeListeners=h(this._server,{listening:this.emit.bind(this,`listening`),error:this.emit.bind(this,`error`),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw Error(`The server is operating in "noServer" mode`);return this._server?this._server.address():null}close(e){if(this._state===2){e&&this.once(`close`,()=>{e(Error(`The server is not running`))}),process.nextTick(g,this);return}if(e&&this.once(`close`,e),this._state!==1){if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(g,this);else{let e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close(()=>{g(this)})}}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf(`?`);if((t===-1?e.url:e.url.slice(0,t))!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on(`error`,_);let i=e.headers[`sec-websocket-key`],a=e.headers.upgrade,o=+e.headers[`sec-websocket-version`];if(e.method!==`GET`){y(this,e,t,405,`Invalid HTTP method`);return}if(a===void 0||a.toLowerCase()!==`websocket`){y(this,e,t,400,`Invalid Upgrade header`);return}if(i===void 0||!m.test(i)){y(this,e,t,400,`Missing or invalid Sec-WebSocket-Key header`);return}if(o!==13&&o!==8){y(this,e,t,400,`Missing or invalid Sec-WebSocket-Version header`,{"Sec-WebSocket-Version":`13, 8`});return}if(!this.shouldHandle(e)){v(t,400);return}let u=e.headers[`sec-websocket-protocol`],d=new Set;if(u!==void 0)try{d=l.parse(u)}catch{y(this,e,t,400,`Invalid Sec-WebSocket-Protocol header`);return}let f=e.headers[`sec-websocket-extensions`],p={};if(this.options.perMessageDeflate&&f!==void 0){let n=new c({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let e=s.parse(f);e[c.extensionName]&&(n.accept(e[c.extensionName]),p[c.extensionName]=n)}catch{y(this,e,t,400,`Invalid or unacceptable Sec-WebSocket-Extensions header`);return}}if(this.options.verifyClient){let a={origin:e.headers[`${o===8?`sec-websocket-origin`:`origin`}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(a,(a,o,s,c)=>{if(!a)return v(t,o||401,s,c);this.completeUpgrade(p,i,d,e,t,n,r)});return}if(!this.options.verifyClient(a))return v(t,401)}this.completeUpgrade(p,i,d,e,t,n,r)}completeUpgrade(e,t,n,r,i,a,l){if(!i.readable||!i.writable)return i.destroy();if(i[p])throw Error(`server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration`);if(this._state>0)return v(i,503);let u=[`HTTP/1.1 101 Switching Protocols`,`Upgrade: websocket`,`Connection: Upgrade`,`Sec-WebSocket-Accept: ${o(`sha1`).update(t+f).digest(`base64`)}`],d=new this.options.WebSocket(null,void 0,this.options);if(n.size){let e=this.options.handleProtocols?this.options.handleProtocols(n,r):n.values().next().value;e&&(u.push(`Sec-WebSocket-Protocol: ${e}`),d._protocol=e)}if(e[c.extensionName]){let t=e[c.extensionName].params,n=s.format({[c.extensionName]:[t]});u.push(`Sec-WebSocket-Extensions: ${n}`),d._extensions=e}this.emit(`headers`,u,r),i.write(u.concat(`\r
2
2
  `).join(`\r
3
3
  `)),i.removeListener(`error`,_),d.setSocket(i,a,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxBufferedChunks:this.options.maxBufferedChunks,maxFragments:this.options.maxFragments,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(d),d.on(`close`,()=>{this.clients.delete(d),this._shouldEmitClose&&!this.clients.size&&process.nextTick(g,this)})),l(d,r)}};function h(e,t){for(let n of Object.keys(t))e.on(n,t[n]);return function(){for(let n of Object.keys(t))e.removeListener(n,t[n])}}function g(e){e._state=2,e.emit(`close`)}function _(){this.destroy()}function v(e,t,n,r){n||=i.STATUS_CODES[t],r={Connection:`close`,"Content-Type":`text/html`,"Content-Length":Buffer.byteLength(n),...r},e.once(`finish`,e.destroy),e.end(`HTTP/1.1 ${t} ${i.STATUS_CODES[t]}\r\n`+Object.keys(r).map(e=>`${e}: ${r[e]}`).join(`\r
4
4
  `)+`\r
5
5
  \r
6
- `+n)}function y(e,t,n,r,i,a){if(e.listenerCount(`wsClientError`)){let r=Error(i);Error.captureStackTrace(r,y),e.emit(`wsClientError`,r,n,t)}else v(n,r,i,a)}}));ao(),ro(),Qa(),eo(),to(),oo(),io();var co=e(so(),1);let lo=function(e){return e[e.ERROR_CODE_UNSPECIFIED=0]=`ERROR_CODE_UNSPECIFIED`,e[e.VALIDATION=1]=`VALIDATION`,e[e.AUTHENTICATION=2]=`AUTHENTICATION`,e[e.DENIED=3]=`DENIED`,e[e.MISSING_COLLECTION=4]=`MISSING_COLLECTION`,e[e.SCHEMA_MISMATCH=5]=`SCHEMA_MISMATCH`,e[e.QUERY_LIMIT=6]=`QUERY_LIMIT`,e[e.CONFLICT=7]=`CONFLICT`,e[e.UNAVAILABLE=8]=`UNAVAILABLE`,e[e.UNCERTAIN=9]=`UNCERTAIN`,e[e.STORAGE=10]=`STORAGE`,e[e.CLOSED=11]=`CLOSED`,e}({});const uo=N({typeName:`sdk.sync.Failure`,fields:[{no:1,name:`code`,kind:`enum`,T:gt(`sdk.sync.ErrorCode`,lo)},{no:2,name:`message`,kind:`scalar`,T:L.STRING},{no:3,name:`request_id`,kind:`scalar`,T:L.STRING}]}),fo=N({typeName:`sdk.sync.HandshakeRequest`,fields:[{no:1,name:`wire_version`,kind:`scalar`,T:L.UINT32},{no:2,name:`application_id`,kind:`scalar`,T:L.STRING},{no:3,name:`application_version`,kind:`scalar`,T:L.UINT32},{no:4,name:`token`,kind:`scalar`,T:L.STRING}]}),po=N({typeName:`sdk.sync.HandshakeResponse`,fields:[{no:1,name:`error`,kind:`message`,T:uo}]}),mo=N({typeName:`sdk.sync.OpenCollectionRequest`,fields:[{no:1,name:`name`,kind:`scalar`,T:L.STRING}]}),ho=N({typeName:`sdk.sync.OpenCollectionResponse`,fields:[{no:1,name:`resource_id`,kind:`scalar`,T:L.UINT32},{no:2,name:`error`,kind:`message`,T:uo}]}),go=N({typeName:`sdk.sync.GetRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:L.STRING}]}),_o=N({typeName:`sdk.sync.GetResponse`,fields:[{no:1,name:`found`,kind:`scalar`,T:L.BOOL},{no:2,name:`data`,kind:`scalar`,T:L.BYTES},{no:3,name:`error`,kind:`message`,T:uo}]}),vo=N({typeName:`sdk.sync.QueryRequest`,fields:[{no:1,name:`prefix`,kind:`scalar`,T:L.STRING}]}),yo=N({typeName:`sdk.sync.RecordEntry`,fields:[{no:1,name:`key`,kind:`scalar`,T:L.STRING},{no:2,name:`data`,kind:`scalar`,T:L.BYTES}]}),bo=N({typeName:`sdk.sync.Snapshot`,fields:[{no:1,name:`entries`,kind:`message`,T:yo,repeated:!0},{no:2,name:`error`,kind:`message`,T:uo}]}),xo=N({typeName:`sdk.sync.PutRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:L.STRING},{no:2,name:`data`,kind:`scalar`,T:L.BYTES},{no:3,name:`request_id`,kind:`scalar`,T:L.STRING}]}),So=N({typeName:`sdk.sync.DeleteRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:L.STRING},{no:2,name:`request_id`,kind:`scalar`,T:L.STRING}]}),Co=N({typeName:`sdk.sync.Acceptance`,fields:[{no:1,name:`error`,kind:`message`,T:uo}]}),wo=N({typeName:`sdk.sync.MutationRequest`,fields:[{no:1,name:`name`,kind:`scalar`,T:L.STRING},{no:2,name:`input`,kind:`scalar`,T:L.BYTES},{no:3,name:`request_id`,kind:`scalar`,T:L.STRING}]}),To=N({typeName:`sdk.sync.MutationResponse`,fields:[{no:1,name:`result`,kind:`scalar`,T:L.BYTES},{no:2,name:`error`,kind:`message`,T:uo}]});function $(e){let t=Nr(e);return{code:lo[t.code],message:t.message,requestId:t.requestId}}function Eo(e){try{return V(e??new Uint8Array)}catch{throw new R(`VALIDATION`,`Input must be valid UTF-8 JSON`)}}const Do={typeName:`sdk.sync.Gateway`,methods:{Authenticate:{name:`Authenticate`,I:fo,O:po,kind:O.Unary}}},Oo=Do.typeName,ko={typeName:`sdk.sync.Application`,methods:{OpenCollection:{name:`OpenCollection`,I:mo,O:ho,kind:O.Unary},Mutate:{name:`Mutate`,I:wo,O:To,kind:O.Unary}}};ko.typeName;const Ao={typeName:`sdk.sync.Collection`,methods:{Get:{name:`Get`,I:go,O:_o,kind:O.Unary},Scan:{name:`Scan`,I:vo,O:bo,kind:O.Unary},Put:{name:`Put`,I:xo,O:Co,kind:O.Unary},Delete:{name:`Delete`,I:So,O:Co,kind:O.Unary},Watch:{name:`Watch`,I:vo,O:bo,kind:O.ServerStreaming}}};Ao.typeName;const jo=new Proxy({released:!0},{get(e,t){if(t===`released`)return!0;if(t===`toJSON`)return()=>({released:!0});if(typeof t!=`symbol`&&t!==`constructor`&&t!==`prototype`&&t!==`__proto__`&&t!==`then`&&t!==`asymmetricMatch`&&t!==`nodeType`&&t!==`tagName`)throw Error(`Cannot access "${String(t)}" on released attached resource`)}});function Mo(e,t){let n=!1,r=()=>{n=!0};return{get resourceId(){return e},get released(){return n||t.signal.aborted},get client(){return n||t.signal.aborted?jo:t.client},createRef(){throw Error(`Cannot create child ref from raw attached resource ${e}`)},createResource(){throw Error(`Cannot create child resource from raw attached resource ${e}`)},release:r,[Symbol.dispose]:r}}function No(e,t){let n=!1,r=()=>{n||(n=!0,t.releaseResource(e))};return{get resourceId(){return e},get released(){let r=t.attachedResources.get(e);return n||!r||r.signal.aborted},get client(){let r=t.attachedResources.get(e);return n||!r||r.signal.aborted?jo:r.client},createRef(r){let i=t.attachedResources.get(e);if(n||!i||i.signal.aborted)throw Error(`Cannot create ref from released attached resource ${e}`);if(!t.attachedResources.has(r))throw Error(`attached child resource ${r} not found`);return No(r,t)},createResource(e,t,...n){return new t(this.createRef(e),...n)},release:r,[Symbol.dispose]:r}}var Po=class{clientID;controller;released=!1;resources=new Map;attachedResources=new Map;tombstones=new Set;retainedRootResourceID;txQueue=[];notifyCallbacks=new Set;nextResourceID;pendingChildren=new Map;warnedPending=new Set;warningTimer;now;onPendingWarning;constructor(e,t,n,r={}){this.nextResourceID=e,this.clientID=t,this.controller=new AbortController,this.now=r.now??Date.now,this.onPendingWarning=r.onPendingWarning??(e=>console.warn(`Resource remains pending adoption`,e)),n?.addEventListener(`abort`,()=>this.controller.abort(),{once:!0})}get signal(){return this.controller.signal}setRetainedRootResourceID(e){this.retainedRootResourceID=e}addResource(e,t,n,r,i){if(this.released)throw Error(`client was released`);let a=this.nextResourceID();if(this.resources.set(a,{mux:e,ownerClientID:this.clientID,releaseFn:t,parentResourceID:n,pendingSince:n===void 0?void 0:this.now(),serviceID:r,methodID:i,adopted:!1}),n!==void 0){let e=this.pendingChildren.get(n);e||(e=new Set,this.pendingChildren.set(n,e)),e.add(a),this.schedulePendingWarning()}return a}adoptResource(e){if(this.tombstones.has(e))return this.pushReleased(e),`released`;let t=this.resources.get(e);return t?(t.adopted=!0,t.pendingSince=void 0,this.warnedPending.delete(e),this.schedulePendingWarning(),`adopted`):this.attachedResources.has(e)?`adopted`:`invalid`}getAttachedRef(e){if(!this.attachedResources.has(e))throw Error(`attached resource ${e} not found`);return No(e,this)}getRawAttachedRef(e){let t=this.attachedResources.get(e);if(!t)throw Error(`attached resource ${e} not found`);return Mo(e,t)}getRawAttachedClient(e){let t=this.attachedResources.get(e);if(!t)throw Error(`attached resource ${e} not found`);return t.client}releaseResource(e,t=!0){if(this.released)return!1;let n=this.resources.get(e);if(!n){let n=this.attachedResources.get(e);return n?(this.attachedResources.delete(e),this.tombstones.add(e),n.controller.abort(),t&&this.pushReleased(e),n.release?.(),!0):this.tombstones.has(e)}return e===this.retainedRootResourceID?(this.releasePendingChildren(e),!0):(this.releasePendingChildren(e),n.parentResourceID!==void 0&&this.pendingChildren.get(n.parentResourceID)?.delete(e),this.resources.delete(e),this.tombstones.add(e),t&&this.pushReleased(e),n.releaseFn?.(),this.warnedPending.delete(e),this.schedulePendingWarning(),!0)}releaseAll(){this.warningTimer!==void 0&&(clearTimeout(this.warningTimer),this.warningTimer=void 0);for(let[e,t]of this.resources)t.parentResourceID===void 0&&this.releaseResourceTree(e);for(;this.resources.size>0;){let e=this.resources.keys().next().value;if(e===void 0)break;this.releaseResourceTree(e)}for(let e of Array.from(this.attachedResources.keys()))this.releaseResource(e,!1);this.released=!0,this.resources.clear(),this.pendingChildren.clear(),this.controller.abort(),this.notify()}pushMessage(e){this.txQueue.push(e),this.notify()}drainQueue(){let e=this.txQueue;return this.txQueue=[],e}waitForNotify(e){return this.txQueue.length>0||this.released||e?.aborted?Promise.resolve():new Promise(t=>{let n=()=>{e?.removeEventListener(`abort`,r),t()},r=()=>{this.notifyCallbacks.delete(n),t()};this.notifyCallbacks.add(n),e?.addEventListener(`abort`,r,{once:!0})})}rootResourceID(){for(let[e,t]of this.resources)if(t.parentResourceID===void 0)return e;return 0}releaseResourceTree(e){for(let t of this.pendingChildren.get(e)??[])this.releaseResourceTree(t);let t=this.resources.get(e);t&&(this.resources.delete(e),this.tombstones.add(e),t.releaseFn?.())}releasePendingChildren(e){let t=[...this.pendingChildren.get(e)??[]];for(let e of t)this.resources.get(e)?.adopted||this.releaseResource(e)}pushReleased(e){this.pushMessage({body:{case:`resourceReleased`,value:{resourceId:e}}})}scanPending(){if(this.released)return;let e=this.now();for(let[t,n]of this.resources)!n.adopted&&n.pendingSince!==void 0&&e-n.pendingSince>=1e4&&!this.warnedPending.has(t)&&(this.warnedPending.add(t),this.onPendingWarning({clientHandleId:this.clientID,parentResourceID:n.parentResourceID??0,resourceID:t,ageMS:e-n.pendingSince,serviceID:n.serviceID,methodID:n.methodID}));this.schedulePendingWarning()}schedulePendingWarning(){if(this.warningTimer!==void 0&&(clearTimeout(this.warningTimer),this.warningTimer=void 0),this.released)return;let e=this.now(),t;for(let[n,r]of this.resources){if(r.adopted||r.pendingSince===void 0||this.warnedPending.has(n))continue;let i=Math.max(0,r.pendingSince+1e4-e);t=t===void 0?i:Math.min(t,i)}t!==void 0&&(this.warningTimer=setTimeout(()=>{this.warningTimer=void 0,this.scanPending()},t))}notify(){for(let e of this.notifyCallbacks)this.notifyCallbacks.delete(e),e()}},Fo=class{init;constructor(e){this.init=e}constructChildResource(e){let{client:t}=this.init,n=new AbortController,r=()=>n.abort();t.signal.addEventListener(`abort`,r,{once:!0});let i;try{i=e(n.signal)}catch(e){throw t.signal.removeEventListener(`abort`,r),n.abort(),e}let a=()=>{t.signal.removeEventListener(`abort`,r);try{i.releaseFn?.()}finally{n.abort()}};try{let e=t.addResource(i.mux,a,this.init.parentResourceId,this.init.serviceId,this.init.methodId);return{result:i.result,resourceId:e}}catch(e){throw a(),e}}getAttachedRef(e){return this.init.client.getAttachedRef(e)}};const Io=Dr();function Lo(e,t){return Or(e,Io,new Fo(t))}function Ro(e){let t=kr(e,Io);if(!t)throw Error(`no resource call in server context`);return t}async function zo(e,t){return t?t.aborted?{value:void 0,done:!0}:await new Promise((n,r)=>{let i=()=>t.removeEventListener(`abort`,a),a=()=>{i(),n({value:void 0,done:!0})};if(t.addEventListener(`abort`,a,{once:!0}),t.aborted){a();return}e.next().then(e=>{i(),n(e)},e=>{i(),r(e)})}):await e.next()}var Bo=class{rootResourceMux;clientHandleIDCtr=0;resourceIDCtr=0;clients=new Map;constructor(e){this.rootResourceMux=e??bt()}register(e){e.register(xn(Ka,this))}nextResourceID(){return++this.resourceIDCtr}ResourceClient(e,t){let n=I({objectMode:!0}),r=e[Symbol.asyncIterator]();return(async()=>{let e=await zo(r,t);if(e.done||e.value.body?.case!==`init`)throw Error(`expected ResourceClient init`);let i=++this.clientHandleIDCtr,a=new Po(()=>this.nextResourceID(),i,t);this.clients.set(i,a);let o=a.addResource(this.rootResourceMux);a.setRetainedRootResourceID(o),n.push({body:{case:`init`,value:{clientHandleId:i,rootResourceId:o}}});let s=(async()=>{for(;;){await a.waitForNotify(t);let e=a.drainQueue();for(let t of e)n.push(t);if(a.released&&e.length===0)return}})(),c=0;try{for(;!a.released;){let e=await zo(r,t);if(e.done)break;let n=e.value.controlId??0;if(n===0||n!==c+1)throw Error(`unexpected ResourceClient control ID ${n} after ${c}`);let i=e.value.body;if(i?.case===`adopt`){if(a.adoptResource(i.value.resourceId??0)===`invalid`)throw Error(`invalid resource id`)}else if(i?.case===`release`){let e=i.value.resourceId??0;if(!a.releaseResource(e,!1))throw Error(`invalid resource id`)}else throw Error(`invalid ResourceClient control`);c=n,a.pushMessage({body:{case:`controlAck`,value:{controlId:n}}})}}finally{this.clients.delete(i),a.releaseAll(),await s,n.end()}})().catch(e=>n.end(e)),n}findResource(e){for(let[,t]of this.clients){if(t.released)continue;let n=t.resources.get(e);if(n)return{mux:n.mux,client:t}}}ResourceRpc(e,t){return Ia(e[Symbol.asyncIterator](),async e=>{if(!Number.isInteger(e)||e<=0)throw new X({code:3,message:`invalid resource id`});let t=this.findResource(e);if(!t)throw new X({code:5,message:`resource or client was released`});let{mux:n,client:r}=t;return new En(async(t,i)=>{let a=await n.lookupMethod(t,i);return a?async(n,o,s)=>{let c=Lo(s,{client:r,parentResourceId:e,serviceId:t,methodId:i});await a(n,o,c)}:null}).rpcStreamHandler})}ResourceAttach(e,t){let n,r=I({objectMode:!0,onEnd:()=>{n?.()}});return this.runResourceAttach(e,r,t,e=>{n=e}).catch(e=>{r.end(e)}).finally(()=>{r.end()}),r}async runResourceAttach(e,t,n,r){let i=e[Symbol.asyncIterator](),a=await i.next();if(a.done)throw Error(`stream closed before init`);let o=a.value?.body;if(o?.case!==`init`)throw Error(`expected init packet`);let s=o.value.clientHandleId??0,c=this.clients.get(s);if(!c||c.released){t.push({body:{case:`ack`,value:{failure:{code:2,message:`client not found`}}}});return}t.push({body:{case:`ack`,value:{}}});let l=new AbortController,u=new Ot(void 0,{direction:`outbound`,yamuxParams:{enableKeepAlive:!1}}),d=u.buildClient(),f=[],p=e=>{if(c.released)throw Error(`resource client generation was released`);let n=e.body;if(n?.case===`add`){let e=n.value.attachId??0,r=n.value.label??``,i=this.nextResourceID(),a=new AbortController,o=Vo(d,i,a.signal);l.signal.addEventListener(`abort`,()=>a.abort(),{once:!0}),c.attachedResources.set(i,{label:r,client:o,signal:a.signal,controller:a,release:()=>{t.push({body:{case:`detachAck`,value:{resourceId:i}}})}}),f.push(i),t.push({body:{case:`addAck`,value:{attachId:e,resourceId:i}}})}else if(n?.case===`detach`){let e=n.value.resourceId??0,r=c.attachedResources.has(e);c.releaseResource(e,!1);let i=f.indexOf(e);i>=0&&f.splice(i,1),r||t.push({body:{case:`detachAck`,value:{resourceId:e}}})}},m=(async function*(){for(;;){let e=await i.next();if(e.done)break;let t=e.value?.body;t?.case===`muxData`?yield t.value:(t?.case===`add`||t?.case===`detach`)&&p(e.value)}})(),h=ht(m,u,zt(),async e=>{for await(let n of e)t.push({body:{case:`muxData`,value:n}});t.end()}).catch(e=>{t.end(e)}),g=!1,_=()=>{if(!g){g=!0,l.abort(),u.close();for(let e of f)c.releaseResource(e,!1)}};r(_),n?.addEventListener(`abort`,_,{once:!0});try{await h}finally{n?.removeEventListener(`abort`,_),_()}}};function Vo(e,t,n){let r=`${t}/`,i=e=>e?AbortSignal.any([n,e]):n;return{request(t,n,a,o){return e.request(r+t,n,a,i(o))},clientStreamingRequest(t,n,a,o){return e.clientStreamingRequest(r+t,n,a,i(o))},serverStreamingRequest(t,n,a,o){return e.serverStreamingRequest(r+t,n,a,i(o))},bidirectionalStreamingRequest(t,n,a,o){return e.bidirectionalStreamingRequest(r+t,n,a,i(o))}}}function Ho(e,t){let n=bt();n.register(xn(ko,{OpenCollection:async(n,r,i)=>{try{let r=n.name??``;return await e.openCollection(t,r),{resourceId:Ro(i).constructChildResource(n=>({mux:Uo(e,t,r,n),result:void 0})).resourceId}}catch(e){return{error:$(e)}}},Mutate:async(n,r)=>{try{return{result:B(await e.execute(t,{kind:`mutate`,name:n.name??``,input:Eo(n.input)},{signal:r,requestId:n.requestId}))}}catch(e){return{error:$(e)}}}}));let r=bt();return new Bo(n).register(r),r}function Uo(e,t,n,r){let i={Get:async(i,a)=>{try{let o=await e.execute(t,{kind:`get`,collection:n,key:i.key??``},{signal:AbortSignal.any([r,a])});return{found:o.found,data:o.found?B(o.value):void 0}}catch(e){return{error:$(e)}}},Scan:async(i,a)=>{try{return Wo(await e.execute(t,{kind:`scan`,collection:n,prefix:i.prefix??``},{signal:AbortSignal.any([r,a])}))}catch(e){return{error:$(e)}}},Put:async(i,a)=>{try{return await e.execute(t,{kind:`put`,collection:n,key:i.key??``,value:Eo(i.data)},{signal:AbortSignal.any([r,a]),requestId:i.requestId}),{}}catch(e){return{error:$(e)}}},Delete:async(i,a)=>{try{return await e.execute(t,{kind:`delete`,collection:n,key:i.key??``},{signal:AbortSignal.any([r,a]),requestId:i.requestId}),{}}catch(e){return{error:$(e)}}},Watch:async function*(i,a){try{for await(let o of e.watch(t,n,i.prefix??``,AbortSignal.any([r,a])))yield Wo(o)}catch(e){yield{error:$(e)}}}},a=bt();return a.register(xn(Ao,i)),a}function Wo(e){return{entries:e.map(e=>({key:e.key,data:B(e.value)}))}}function Go(e,t,n,r={}){let i=r.path??`/sync`,a=new co.default({noServer:!0,maxPayload:r.maxRequestBytes??1048576}),o=new Set,s,c=(e,c,l)=>{let u=new URL(e.url??`/`,`http://sync.local`);if(u.pathname!==i)return;let d=e.headers.origin,f=!d||(r.allowedOrigins?r.allowedOrigins.includes(d):d===`http://${e.headers.host}`||d===`https://${e.headers.host}`);if(s||!f||u.search){c.end(`HTTP/1.1 403 Forbidden\r
6
+ `+n)}function y(e,t,n,r,i,a){if(e.listenerCount(`wsClientError`)){let r=Error(i);Error.captureStackTrace(r,y),e.emit(`wsClientError`,r,n,t)}else v(n,r,i,a)}}));ho(),po(),so(),lo(),uo(),go(),mo();var vo=e(_o(),1);let yo=function(e){return e[e.ERROR_CODE_UNSPECIFIED=0]=`ERROR_CODE_UNSPECIFIED`,e[e.VALIDATION=1]=`VALIDATION`,e[e.AUTHENTICATION=2]=`AUTHENTICATION`,e[e.DENIED=3]=`DENIED`,e[e.MISSING_COLLECTION=4]=`MISSING_COLLECTION`,e[e.SCHEMA_MISMATCH=5]=`SCHEMA_MISMATCH`,e[e.QUERY_LIMIT=6]=`QUERY_LIMIT`,e[e.CONFLICT=7]=`CONFLICT`,e[e.UNAVAILABLE=8]=`UNAVAILABLE`,e[e.UNCERTAIN=9]=`UNCERTAIN`,e[e.STORAGE=10]=`STORAGE`,e[e.CLOSED=11]=`CLOSED`,e}({});const bo=g({typeName:`sdk.sync.Failure`,fields:[{no:1,name:`code`,kind:`enum`,T:or(`sdk.sync.ErrorCode`,yo)},{no:2,name:`message`,kind:`scalar`,T:k.STRING},{no:3,name:`request_id`,kind:`scalar`,T:k.STRING}]}),xo=g({typeName:`sdk.sync.HandshakeRequest`,fields:[{no:1,name:`wire_version`,kind:`scalar`,T:k.UINT32},{no:2,name:`application_id`,kind:`scalar`,T:k.STRING},{no:3,name:`application_version`,kind:`scalar`,T:k.UINT32},{no:4,name:`token`,kind:`scalar`,T:k.STRING}]}),So=g({typeName:`sdk.sync.HandshakeResponse`,fields:[{no:1,name:`error`,kind:`message`,T:bo}]}),Co=g({typeName:`sdk.sync.OpenCollectionRequest`,fields:[{no:1,name:`name`,kind:`scalar`,T:k.STRING}]}),wo=g({typeName:`sdk.sync.OpenCollectionResponse`,fields:[{no:1,name:`resource_id`,kind:`scalar`,T:k.UINT32},{no:2,name:`error`,kind:`message`,T:bo}]}),To=g({typeName:`sdk.sync.GetRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:k.STRING}]}),Eo=g({typeName:`sdk.sync.GetResponse`,fields:[{no:1,name:`found`,kind:`scalar`,T:k.BOOL},{no:2,name:`data`,kind:`scalar`,T:k.BYTES},{no:3,name:`error`,kind:`message`,T:bo}]}),Do=g({typeName:`sdk.sync.QueryRequest`,fields:[{no:1,name:`prefix`,kind:`scalar`,T:k.STRING}]}),Oo=g({typeName:`sdk.sync.RecordEntry`,fields:[{no:1,name:`key`,kind:`scalar`,T:k.STRING},{no:2,name:`data`,kind:`scalar`,T:k.BYTES}]}),ko=g({typeName:`sdk.sync.Snapshot`,fields:[{no:1,name:`entries`,kind:`message`,T:Oo,repeated:!0},{no:2,name:`error`,kind:`message`,T:bo}]}),Ao=g({typeName:`sdk.sync.PutRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:k.STRING},{no:2,name:`data`,kind:`scalar`,T:k.BYTES},{no:3,name:`request_id`,kind:`scalar`,T:k.STRING}]}),jo=g({typeName:`sdk.sync.DeleteRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:k.STRING},{no:2,name:`request_id`,kind:`scalar`,T:k.STRING}]}),Mo=g({typeName:`sdk.sync.Acceptance`,fields:[{no:1,name:`error`,kind:`message`,T:bo}]}),No=g({typeName:`sdk.sync.MutationRequest`,fields:[{no:1,name:`name`,kind:`scalar`,T:k.STRING},{no:2,name:`input`,kind:`scalar`,T:k.BYTES},{no:3,name:`request_id`,kind:`scalar`,T:k.STRING}]}),Po=g({typeName:`sdk.sync.MutationResponse`,fields:[{no:1,name:`result`,kind:`scalar`,T:k.BYTES},{no:2,name:`error`,kind:`message`,T:bo}]});function $(e){let t=Rr(e);return{code:yo[t.code],message:t.message,requestId:t.requestId}}function Fo(e){try{return B(e??new Uint8Array)}catch{throw new L(`VALIDATION`,`Input must be valid UTF-8 JSON`)}}const Io={typeName:`sdk.sync.Gateway`,methods:{Authenticate:{name:`Authenticate`,I:xo,O:So,kind:P.Unary}}},Lo=Io.typeName,Ro={typeName:`sdk.sync.Application`,methods:{OpenCollection:{name:`OpenCollection`,I:Co,O:wo,kind:P.Unary},Mutate:{name:`Mutate`,I:No,O:Po,kind:P.Unary}}};Ro.typeName;const zo={typeName:`sdk.sync.Collection`,methods:{Get:{name:`Get`,I:To,O:Eo,kind:P.Unary},Scan:{name:`Scan`,I:Do,O:ko,kind:P.Unary},Put:{name:`Put`,I:Ao,O:Mo,kind:P.Unary},Delete:{name:`Delete`,I:jo,O:Mo,kind:P.Unary},Watch:{name:`Watch`,I:Do,O:ko,kind:P.ServerStreaming}}};zo.typeName;const Bo=new Proxy({released:!0},{get(e,t){if(t===`released`)return!0;if(t===`toJSON`)return()=>({released:!0});if(typeof t!=`symbol`&&t!==`constructor`&&t!==`prototype`&&t!==`__proto__`&&t!==`then`&&t!==`asymmetricMatch`&&t!==`nodeType`&&t!==`tagName`)throw Error(`Cannot access "${String(t)}" on released attached resource`)}});function Vo(e,t){let n=!1,r=()=>{n=!0};return{get resourceId(){return e},get released(){return n||t.signal.aborted},get client(){return n||t.signal.aborted?Bo:t.client},createRef(){throw Error(`Cannot create child ref from raw attached resource ${e}`)},createResource(){throw Error(`Cannot create child resource from raw attached resource ${e}`)},release:r,[Symbol.dispose]:r}}function Ho(e,t){let n=!1,r=()=>{n||(n=!0,t.releaseResource(e))};return{get resourceId(){return e},get released(){let r=t.attachedResources.get(e);return n||!r||r.signal.aborted},get client(){let r=t.attachedResources.get(e);return n||!r||r.signal.aborted?Bo:r.client},createRef(r){let i=t.attachedResources.get(e);if(n||!i||i.signal.aborted)throw Error(`Cannot create ref from released attached resource ${e}`);if(!t.attachedResources.has(r))throw Error(`attached child resource ${r} not found`);return Ho(r,t)},createResource(e,t,...n){return new t(this.createRef(e),...n)},release:r,[Symbol.dispose]:r}}var Uo=class{clientID;controller;released=!1;resources=new Map;attachedResources=new Map;tombstones=new Set;retainedRootResourceID;txQueue=[];notifyCallbacks=new Set;nextResourceID;pendingChildren=new Map;warnedPending=new Set;warningTimer;now;onPendingWarning;constructor(e,t,n,r={}){this.nextResourceID=e,this.clientID=t,this.controller=new AbortController,this.now=r.now??Date.now,this.onPendingWarning=r.onPendingWarning??(e=>console.warn(`Resource remains pending adoption`,e)),n?.addEventListener(`abort`,()=>this.controller.abort(),{once:!0})}get signal(){return this.controller.signal}setRetainedRootResourceID(e){this.retainedRootResourceID=e}addResource(e,t,n,r,i){if(this.released)throw Error(`client was released`);let a=this.nextResourceID();if(this.resources.set(a,{mux:e,ownerClientID:this.clientID,releaseFn:t,parentResourceID:n,pendingSince:n===void 0?void 0:this.now(),serviceID:r,methodID:i,adopted:!1}),n!==void 0){let e=this.pendingChildren.get(n);e||(e=new Set,this.pendingChildren.set(n,e)),e.add(a),this.schedulePendingWarning()}return a}adoptResource(e){if(this.tombstones.has(e))return this.pushReleased(e),`released`;let t=this.resources.get(e);return t?(t.adopted=!0,t.pendingSince=void 0,this.warnedPending.delete(e),this.schedulePendingWarning(),`adopted`):this.attachedResources.has(e)?`adopted`:`invalid`}getAttachedRef(e){if(!this.attachedResources.has(e))throw Error(`attached resource ${e} not found`);return Ho(e,this)}getRawAttachedRef(e){let t=this.attachedResources.get(e);if(!t)throw Error(`attached resource ${e} not found`);return Vo(e,t)}getRawAttachedClient(e){let t=this.attachedResources.get(e);if(!t)throw Error(`attached resource ${e} not found`);return t.client}releaseResource(e,t=!0){if(this.released)return!1;let n=this.resources.get(e);if(!n){let n=this.attachedResources.get(e);return n?(this.attachedResources.delete(e),this.tombstones.add(e),n.controller.abort(),t&&this.pushReleased(e),n.release?.(),!0):this.tombstones.has(e)}return e===this.retainedRootResourceID?(this.releasePendingChildren(e),!0):(this.releasePendingChildren(e),n.parentResourceID!==void 0&&this.pendingChildren.get(n.parentResourceID)?.delete(e),this.resources.delete(e),this.tombstones.add(e),t&&this.pushReleased(e),n.releaseFn?.(),this.warnedPending.delete(e),this.schedulePendingWarning(),!0)}releaseAll(){this.warningTimer!==void 0&&(clearTimeout(this.warningTimer),this.warningTimer=void 0);for(let[e,t]of this.resources)t.parentResourceID===void 0&&this.releaseResourceTree(e);for(;this.resources.size>0;){let e=this.resources.keys().next().value;if(e===void 0)break;this.releaseResourceTree(e)}for(let e of Array.from(this.attachedResources.keys()))this.releaseResource(e,!1);this.released=!0,this.resources.clear(),this.pendingChildren.clear(),this.controller.abort(),this.notify()}pushMessage(e){this.txQueue.push(e),this.notify()}drainQueue(){let e=this.txQueue;return this.txQueue=[],e}waitForNotify(e){return this.txQueue.length>0||this.released||e?.aborted?Promise.resolve():new Promise(t=>{let n=()=>{e?.removeEventListener(`abort`,r),t()},r=()=>{this.notifyCallbacks.delete(n),t()};this.notifyCallbacks.add(n),e?.addEventListener(`abort`,r,{once:!0})})}rootResourceID(){for(let[e,t]of this.resources)if(t.parentResourceID===void 0)return e;return 0}releaseResourceTree(e){for(let t of this.pendingChildren.get(e)??[])this.releaseResourceTree(t);let t=this.resources.get(e);t&&(this.resources.delete(e),this.tombstones.add(e),t.releaseFn?.())}releasePendingChildren(e){let t=[...this.pendingChildren.get(e)??[]];for(let e of t)this.resources.get(e)?.adopted||this.releaseResource(e)}pushReleased(e){this.pushMessage({body:{case:`resourceReleased`,value:{resourceId:e}}})}scanPending(){if(this.released)return;let e=this.now();for(let[t,n]of this.resources)!n.adopted&&n.pendingSince!==void 0&&e-n.pendingSince>=1e4&&!this.warnedPending.has(t)&&(this.warnedPending.add(t),this.onPendingWarning({clientHandleId:this.clientID,parentResourceID:n.parentResourceID??0,resourceID:t,ageMS:e-n.pendingSince,serviceID:n.serviceID,methodID:n.methodID}));this.schedulePendingWarning()}schedulePendingWarning(){if(this.warningTimer!==void 0&&(clearTimeout(this.warningTimer),this.warningTimer=void 0),this.released)return;let e=this.now(),t;for(let[n,r]of this.resources){if(r.adopted||r.pendingSince===void 0||this.warnedPending.has(n))continue;let i=Math.max(0,r.pendingSince+1e4-e);t=t===void 0?i:Math.min(t,i)}t!==void 0&&(this.warningTimer=setTimeout(()=>{this.warningTimer=void 0,this.scanPending()},t))}notify(){for(let e of this.notifyCallbacks)this.notifyCallbacks.delete(e),e()}},Wo=class{init;constructor(e){this.init=e}constructChildResource(e){let{client:t}=this.init,n=new AbortController,r=()=>n.abort();t.signal.addEventListener(`abort`,r,{once:!0});let i;try{i=e(n.signal)}catch(e){throw t.signal.removeEventListener(`abort`,r),n.abort(),e}let a=()=>{t.signal.removeEventListener(`abort`,r);try{i.releaseFn?.()}finally{n.abort()}};try{let e=t.addResource(i.mux,a,this.init.parentResourceId,this.init.serviceId,this.init.methodId);return{result:i.result,resourceId:e}}catch(e){throw a(),e}}getAttachedRef(e){return this.init.client.getAttachedRef(e)}};const Go=Mr();function Ko(e,t){return Nr(e,Go,new Wo(t))}function qo(e){let t=Pr(e,Go);if(!t)throw Error(`no resource call in server context`);return t}async function Jo(e,t){return t?t.aborted?{value:void 0,done:!0}:await new Promise((n,r)=>{let i=()=>t.removeEventListener(`abort`,a),a=()=>{i(),n({value:void 0,done:!0})};if(t.addEventListener(`abort`,a,{once:!0}),t.aborted){a();return}e.next().then(e=>{i(),n(e)},e=>{i(),r(e)})}):await e.next()}var Yo=class{rootResourceMux;clientHandleIDCtr=0;resourceIDCtr=0;clients=new Map;constructor(e){this.rootResourceMux=e??xt()}register(e){e.register(On(to,this))}nextResourceID(){return++this.resourceIDCtr}ResourceClient(e,t){let n=I({objectMode:!0}),r=e[Symbol.asyncIterator]();return(async()=>{let e=await Jo(r,t);if(e.done||e.value.body?.case!==`init`)throw Error(`expected ResourceClient init`);let i=++this.clientHandleIDCtr,a=new Uo(()=>this.nextResourceID(),i,t);this.clients.set(i,a);let o=a.addResource(this.rootResourceMux);a.setRetainedRootResourceID(o),n.push({body:{case:`init`,value:{clientHandleId:i,rootResourceId:o}}});let s=(async()=>{for(;;){await a.waitForNotify(t);let e=a.drainQueue();for(let t of e)n.push(t);if(a.released&&e.length===0)return}})(),c=0;try{for(;!a.released;){let e=await Jo(r,t);if(e.done)break;let n=e.value.controlId??0;if(n===0||n!==c+1)throw Error(`unexpected ResourceClient control ID ${n} after ${c}`);let i=e.value.body;if(i?.case===`adopt`){if(a.adoptResource(i.value.resourceId??0)===`invalid`)throw Error(`invalid resource id`)}else if(i?.case===`release`){let e=i.value.resourceId??0;if(!a.releaseResource(e,!1))throw Error(`invalid resource id`)}else throw Error(`invalid ResourceClient control`);c=n,a.pushMessage({body:{case:`controlAck`,value:{controlId:n}}})}}finally{this.clients.delete(i),a.releaseAll(),await s,n.end()}})().catch(e=>n.end(e)),n}findResource(e){for(let[,t]of this.clients){if(t.released)continue;let n=t.resources.get(e);if(n)return{mux:n.mux,client:t}}}ResourceRpc(e,t){return Ga(e[Symbol.asyncIterator](),async e=>{if(!Number.isInteger(e)||e<=0)throw new X({code:3,message:`invalid resource id`});let t=this.findResource(e);if(!t)throw new X({code:5,message:`resource or client was released`});let{mux:n,client:r}=t;return new Nn(async(t,i)=>{let a=await n.lookupMethod(t,i);return a?async(n,o,s)=>{let c=Ko(s,{client:r,parentResourceId:e,serviceId:t,methodId:i});await a(n,o,c)}:null}).rpcStreamHandler})}ResourceAttach(e,t){let n,r=I({objectMode:!0,onEnd:()=>{n?.()}});return this.runResourceAttach(e,r,t,e=>{n=e}).catch(e=>{r.end(e)}).finally(()=>{r.end()}),r}async runResourceAttach(e,t,n,r){let i=e[Symbol.asyncIterator](),a=await i.next();if(a.done)throw Error(`stream closed before init`);let o=a.value?.body;if(o?.case!==`init`)throw Error(`expected init packet`);let s=o.value.clientHandleId??0,c=this.clients.get(s);if(!c||c.released){t.push({body:{case:`ack`,value:{failure:{code:2,message:`client not found`}}}});return}t.push({body:{case:`ack`,value:{}}});let l=new AbortController,u=new At(void 0,{direction:`outbound`,yamuxParams:{enableKeepAlive:!1}}),d=u.buildClient(),f=[],p=e=>{if(c.released)throw Error(`resource client generation was released`);let n=e.body;if(n?.case===`add`){let e=n.value.attachId??0,r=n.value.label??``,i=this.nextResourceID(),a=new AbortController,o=Xo(d,i,a.signal);l.signal.addEventListener(`abort`,()=>a.abort(),{once:!0}),c.attachedResources.set(i,{label:r,client:o,signal:a.signal,controller:a,release:()=>{t.push({body:{case:`detachAck`,value:{resourceId:i}}})}}),f.push(i),t.push({body:{case:`addAck`,value:{attachId:e,resourceId:i}}})}else if(n?.case===`detach`){let e=n.value.resourceId??0,r=c.attachedResources.has(e);c.releaseResource(e,!1);let i=f.indexOf(e);i>=0&&f.splice(i,1),r||t.push({body:{case:`detachAck`,value:{resourceId:e}}})}},m=(async function*(){for(;;){let e=await i.next();if(e.done)break;let t=e.value?.body;t?.case===`muxData`?yield t.value:(t?.case===`add`||t?.case===`detach`)&&p(e.value)}})(),h=_t(m,u,Ut(),async e=>{for await(let n of e)t.push({body:{case:`muxData`,value:n}});t.end()}).catch(e=>{t.end(e)}),g=!1,_=()=>{if(!g){g=!0,l.abort(),u.close();for(let e of f)c.releaseResource(e,!1)}};r(_),n?.addEventListener(`abort`,_,{once:!0});try{await h}finally{n?.removeEventListener(`abort`,_),_()}}};function Xo(e,t,n){let r=`${t}/`,i=e=>e?AbortSignal.any([n,e]):n;return{request(t,n,a,o){return e.request(r+t,n,a,i(o))},clientStreamingRequest(t,n,a,o){return e.clientStreamingRequest(r+t,n,a,i(o))},serverStreamingRequest(t,n,a,o){return e.serverStreamingRequest(r+t,n,a,i(o))},bidirectionalStreamingRequest(t,n,a,o){return e.bidirectionalStreamingRequest(r+t,n,a,i(o))}}}function Zo(e,t){let n=xt();n.register(On(Ro,{OpenCollection:async(n,r,i)=>{try{let r=n.name??``;return await e.openCollection(t,r),{resourceId:qo(i).constructChildResource(n=>({mux:Qo(e,t,r,n),result:void 0})).resourceId}}catch(e){return{error:$(e)}}},Mutate:async(n,r)=>{try{return{result:z(await e.execute(t,{kind:`mutate`,name:n.name??``,input:Fo(n.input)},{signal:r,requestId:n.requestId}))}}catch(e){return{error:$(e)}}}}));let r=xt();return new Yo(n).register(r),r}function Qo(e,t,n,r){let i={Get:async(i,a)=>{try{let o=await e.execute(t,{kind:`get`,collection:n,key:i.key??``},{signal:AbortSignal.any([r,a])});return{found:o.found,data:o.found?z(o.value):void 0}}catch(e){return{error:$(e)}}},Scan:async(i,a)=>{try{return $o(await e.execute(t,{kind:`scan`,collection:n,prefix:i.prefix??``},{signal:AbortSignal.any([r,a])}))}catch(e){return{error:$(e)}}},Put:async(i,a)=>{try{return await e.execute(t,{kind:`put`,collection:n,key:i.key??``,value:Fo(i.data)},{signal:AbortSignal.any([r,a]),requestId:i.requestId}),{}}catch(e){return{error:$(e)}}},Delete:async(i,a)=>{try{return await e.execute(t,{kind:`delete`,collection:n,key:i.key??``},{signal:AbortSignal.any([r,a]),requestId:i.requestId}),{}}catch(e){return{error:$(e)}}},Watch:async function*(i,a){try{for await(let o of e.watch(t,n,i.prefix??``,AbortSignal.any([r,a])))yield $o(o)}catch(e){yield{error:$(e)}}}},a=xt();return a.register(On(zo,i)),a}function $o(e){return{entries:e.map(e=>({key:e.key,data:z(e.value)}))}}function es(e,t,n,r={}){let i=r.path??`/sync`,a=new vo.default({noServer:!0,maxPayload:r.maxRequestBytes??1048576}),o=new Set,s,c=(e,c,l)=>{let u=new URL(e.url??`/`,`http://sync.local`);if(u.pathname!==i)return;let d=e.headers.origin,f=!d||(r.allowedOrigins?r.allowedOrigins.includes(d):d===`http://${e.headers.host}`||d===`https://${e.headers.host}`);if(s||!f||u.search){c.end(`HTTP/1.1 403 Forbidden\r
7
7
  Connection: close\r
8
8
  \r
9
- `);return}a.handleUpgrade(e,c,l,r=>{let i=qo(r,e,t,n);o.add(i),i.finally(()=>o.delete(i)).catch(()=>r.terminate())})};e.on(`upgrade`,c);let l=()=>(s??=(async()=>{e.off(`upgrade`,c);for(let e of a.clients)e.close(1001,`Server closed`);let t=setTimeout(()=>{for(let e of a.clients)e.terminate()},1e3);try{await Promise.allSettled(o),await new Promise((e,t)=>a.close(n=>n?t(n):e()))}finally{clearTimeout(t)}})(),s);return{close:l,[Symbol.asyncDispose]:l}}async function Ko(e,t,n={}){let r=Cr((e,t)=>{t.writeHead(404),t.end()}),i=Go(r,e,t,n);try{await new Promise((e,t)=>{let i=e=>t(e);r.once(`error`,i),r.listen(n.port??8787,n.host??`127.0.0.1`,()=>{r.off(`error`,i),e()})})}catch(e){throw await i.close(),e}let a=r.address();if(!a||typeof a==`string`)throw Error(`Listener has no TCP address`);let o=a.address.includes(`:`)?`[${a.address}]`:a.address,s,c=()=>s??=(async()=>{await i.close(),await new Promise((e,t)=>r.close(n=>n?t(n):e()))})();return{url:`ws://${o}:${a.port}${n.path??`/sync`}`,close:c,[Symbol.asyncDispose]:c}}async function qo(e,t,n,r){let i=new AbortController,a=Promise.withResolvers(),o,s=!1,c,l,u=new Set,d=()=>{i.abort(),e.close(4001,`Authentication ended`)},f=bt();f.register(xn(Do,{Authenticate:async(e,t)=>{try{if(s)throw new R(`AUTHENTICATION`,`This connection already attempted authentication`);if(s=!0,e.wireVersion!==1||e.applicationId!==n.schema.id||e.applicationVersion!==n.schema.version)throw new R(`SCHEMA_MISMATCH`,`Client and server contracts are incompatible`);let a=await r(e.token??``,AbortSignal.any([i.signal,t]));n.checkPrincipal(a),l={...a},o=Ho(n,l),l.signal?.addEventListener(`abort`,d,{once:!0}),l.signal?.aborted&&d();let u=()=>{let e=(l?.expiresAt??1/0)-Date.now();e<=0?d():Number.isFinite(e)&&(c=setTimeout(u,Math.min(e,2147483647)))};return u(),{}}catch(e){return{error:$(e instanceof R?e:new R(`AUTHENTICATION`,`Authentication failed`))}}}}));let p=new En(async(e,t)=>{let n=e===Oo?await f.lookupMethod(e,t):o&&e===Ka.typeName&&t!==`ResourceAttach`?await o.lookupMethod(e,t):null;return n?(e,t,r)=>{let a=n(e,t,{...r,signal:AbortSignal.any([r.signal,i.signal])});return u.add(a),a.finally(()=>u.delete(a)).catch(()=>{}),a}:null}),m=new Ot(p,{direction:`inbound`}),h=Rn(e,{remoteAddress:t.socket.remoteAddress,remotePort:t.socket.remotePort}),g=ht(h,m,zt(),h).catch(e=>m.close(e)).finally(()=>e.close()),_=()=>{i.abort(),m.close(Error(`WebSocket connection ended`)),a.resolve()};e.once(`close`,_),e.once(`error`,_),n.signal.addEventListener(`abort`,d,{once:!0});let v=setTimeout(()=>{o||d()},1e4);try{await a.promise,await Promise.allSettled(u)}finally{clearTimeout(v),c&&clearTimeout(c),l?.signal?.removeEventListener(`abort`,d),n.signal.removeEventListener(`abort`,d),e.off(`close`,_),e.off(`error`,_),i.abort(),await m.muxer.close(),await g}}var Jo=class{application;options;owner;closing;attachments=new Set;constructor(e,t,n){this.application=e,this.options=t,this.owner=n}as(e){return this.application.access(e)}admin(e){let t={subject:`admin`,scope:e};return Lr((e,n)=>this.application.execute(t,e,n,!0))}attach(e,t){if(this.closing)throw new R(`CLOSED`,`Server is closed`);let n=Go(e,this.application,this.options.authenticate,t);return this.attachments.add(n),this.track(n)}async listen(e){if(this.closing)throw new R(`CLOSED`,`Server is closed`);let t=await Ko(this.application,this.options.authenticate,e);if(this.closing)throw await t.close(),new R(`CLOSED`,`Server is closed`);return this.attachments.add(t),{...this.track(t),url:t.url}}close(){return this.closing??=(async()=>{await Promise.all(Array.from(this.attachments,e=>e.close())),await this.application.close(),await this.owner?.close()})(),this.closing}[Symbol.asyncDispose](){return this.close()}track(e){let t=async()=>{try{await e.close()}finally{this.attachments.delete(e)}};return{close:t,[Symbol.asyncDispose]:t}}};async function Yo(e){let t,n;try{e.directory!==void 0&&(t=await Ya(e.directory));let r=e.engine??t?.engine;if(!r)throw new R(`VALIDATION`,`A directory or supplied engine is required`);return n=new Da({...e,engine:r}),await n.initialize(e.migration),new Jo(n,e,t)}catch(e){throw await n?.close(),await t?.close().catch(()=>{}),Nr(e)}}const Xo=Yo;export{Xo as createServer};
9
+ `);return}a.handleUpgrade(e,c,l,r=>{let i=ns(r,e,t,n);o.add(i),i.finally(()=>o.delete(i)).catch(()=>r.terminate())})};e.on(`upgrade`,c);let l=()=>(s??=(async()=>{e.off(`upgrade`,c);for(let e of a.clients)e.close(1001,`Server closed`);let t=setTimeout(()=>{for(let e of a.clients)e.terminate()},1e3);try{await Promise.allSettled(o),await new Promise((e,t)=>a.close(n=>n?t(n):e()))}finally{clearTimeout(t)}})(),s);return{close:l,[Symbol.asyncDispose]:l}}async function ts(e,t,n={}){let r=Or((e,t)=>{t.writeHead(404),t.end()}),i=es(r,e,t,n);try{await new Promise((e,t)=>{let i=e=>t(e);r.once(`error`,i),r.listen(n.port??8787,n.host??`127.0.0.1`,()=>{r.off(`error`,i),e()})})}catch(e){throw await i.close(),e}let a=r.address();if(!a||typeof a==`string`)throw Error(`Listener has no TCP address`);let o=a.address.includes(`:`)?`[${a.address}]`:a.address,s,c=()=>s??=(async()=>{await i.close(),await new Promise((e,t)=>r.close(n=>n?t(n):e()))})();return{url:`ws://${o}:${a.port}${n.path??`/sync`}`,close:c,[Symbol.asyncDispose]:c}}async function ns(e,t,n,r){let i=new AbortController,a=Promise.withResolvers(),o,s=!1,c,l,u=new Set,d=()=>{i.abort(),e.close(4001,`Authentication ended`)},f=xt();f.register(On(Io,{Authenticate:async(e,t)=>{try{if(s)throw new L(`AUTHENTICATION`,`This connection already attempted authentication`);if(s=!0,e.wireVersion!==1||e.applicationId!==n.schema.id||e.applicationVersion!==n.schema.version)throw new L(`SCHEMA_MISMATCH`,`Client and server contracts are incompatible`);let a=await r(e.token??``,AbortSignal.any([i.signal,t]));n.checkPrincipal(a),l={...a},o=Zo(n,l),l.signal?.addEventListener(`abort`,d,{once:!0}),l.signal?.aborted&&d();let u=()=>{let e=(l?.expiresAt??1/0)-Date.now();e<=0?d():Number.isFinite(e)&&(c=setTimeout(u,Math.min(e,2147483647)))};return u(),{}}catch(e){return{error:$(e instanceof L?e:new L(`AUTHENTICATION`,`Authentication failed`))}}}}));let p=new Nn(async(e,t)=>{let n=e===Lo?await f.lookupMethod(e,t):o&&e===to.typeName&&t!==`ResourceAttach`?await o.lookupMethod(e,t):null;return n?(e,t,r)=>{let a=n(e,t,{...r,signal:AbortSignal.any([r.signal,i.signal])});return u.add(a),a.finally(()=>u.delete(a)).catch(()=>{}),a}:null}),m=new At(p,{direction:`inbound`}),h=Gn(e,{remoteAddress:t.socket.remoteAddress,remotePort:t.socket.remotePort}),g=_t(h,m,Ut(),h).catch(e=>m.close(e)).finally(()=>e.close()),_=()=>{i.abort(),m.close(Error(`WebSocket connection ended`)),a.resolve()};e.once(`close`,_),e.once(`error`,_),n.signal.addEventListener(`abort`,d,{once:!0});let v=setTimeout(()=>{o||d()},1e4);try{await a.promise,await Promise.allSettled(u)}finally{clearTimeout(v),c&&clearTimeout(c),l?.signal?.removeEventListener(`abort`,d),n.signal.removeEventListener(`abort`,d),e.off(`close`,_),e.off(`error`,_),i.abort(),await m.muxer.close(),await g}}var rs=class{application;options;owner;closing;attachments=new Set;constructor(e,t,n){this.application=e,this.options=t,this.owner=n}as(e){return this.application.access(e)}admin(e){let t={subject:`admin`,scope:e};return Hr((e,n)=>this.application.execute(t,e,n,!0))}attach(e,t){if(this.closing)throw new L(`CLOSED`,`Server is closed`);let n=es(e,this.application,this.options.authenticate,t);return this.attachments.add(n),this.track(n)}async listen(e){if(this.closing)throw new L(`CLOSED`,`Server is closed`);let t=await ts(this.application,this.options.authenticate,e);if(this.closing)throw await t.close(),new L(`CLOSED`,`Server is closed`);return this.attachments.add(t),{...this.track(t),url:t.url}}close(){return this.closing??=(async()=>{await Promise.all(Array.from(this.attachments,e=>e.close())),await this.application.close(),await this.owner?.close()})(),this.closing}[Symbol.asyncDispose](){return this.close()}track(e){let t=async()=>{try{await e.close()}finally{this.attachments.delete(e)}};return{close:t,[Symbol.asyncDispose]:t}}};async function is(e){let t,n;try{e.directory!==void 0&&(t=await io(e.directory));let r=e.engine??t?.engine;if(!r)throw new L(`VALIDATION`,`A directory or supplied engine is required`);return n=new Ia({...e,engine:r}),await n.initialize(e.migration),new rs(n,e,t)}catch(e){throw await n?.close(),await t?.close().catch(()=>{}),Rr(e)}}const as=is;export{as as createServer};