spacewave 0.57.19 → 0.57.21
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/THIRD_PARTY_NOTICES.txt +6 -6
- package/dist/build.json +1 -1
- package/dist/chunks/node.pb-VgU29ra5.mjs +2 -0
- package/dist/engine-worker.mjs +83 -83
- package/dist/index.mjs +1 -1
- package/dist/server.mjs +3 -3
- package/examples/task-board/package.json +1 -1
- package/package.json +1 -1
- package/dist/chunks/node.pb-BccNR73d.mjs +0 -2
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{$i as r,$n as i,$r as a,$t as o,A as s,Ai as c,An as l,Ar as u,At as d,Bn as f,Br as p,Bt as m,C as h,Ci as g,Cn as _,Ct as v,Dr as y,Dt as ee,E as b,Er as x,Et as te,Fn as S,Fr as ne,Ft as re,Gn as C,Gr as ie,Gt as ae,H as oe,Hr as se,Ht as ce,In as w,Ir as le,It as T,Jr as ue,Jt as E,Kn as de,Kr as fe,Kt as D,Li as pe,Ln as me,Lr as he,Lt as ge,M as _e,Mn as ve,Mr as ye,Mt as be,N as xe,Nn as Se,Nr as Ce,O as we,On as Te,Or as Ee,Ot as De,P as Oe,Pn as ke,Pr as Ae,Pt as je,Qn as Me,Qr as Ne,Qt as O,R as Pe,Ri as Fe,Rn as Ie,Rr as Le,Rt as Re,S as ze,Si as Be,Sn as Ve,Sr as He,T as Ue,Tt as We,Un as Ge,Ur as Ke,Ut as qe,V as Je,Vr as Ye,Vt as Xe,W as Ze,Wi as Qe,Wn as $e,Wr as et,Wt as tt,Xr as nt,Xt as rt,Yr as it,Yt as at,Zn as ot,Zr as st,Zt as ct,_ as lt,_i as ut,_n as dt,_r as ft,_t as pt,a as mt,ai as ht,an as gt,ar as _t,at as k,b as vt,bi as yt,bn as bt,br as xt,bt as St,c as Ct,ci as wt,cn as Tt,ct as A,d as Et,da as Dt,di as Ot,dn as kt,dr as At,dt as jt,ei as Mt,en as Nt,er as Pt,f as Ft,fa as j,fi as It,fn as Lt,fr as Rt,ft as zt,g as Bt,gi as Vt,gn as Ht,gr as Ut,gt as Wt,h as M,hi as Gt,hr as Kt,ht as qt,i as Jt,ii as Yt,in as Xt,ir as Zt,it as N,j as Qt,ji as $t,jn as en,jr as tn,jt as nn,k as rn,kn as an,kr 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,mr as gn,mt as _n,n as vn,ni as yn,nr as bn,nt as xn,o as Sn,oi as Cn,on as wn,ot as Tn,p as En,pa as Dn,pi as On,pn as kn,pr as An,pt 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,ua as P,ui as qn,un as Jn,ur as Yn,ut as Xn,v as F,vi as Zn,vn as Qn,vr as $n,vt as er,wt as tr,x as nr,xi as rr,xn as ir,xr as ar,xt as or,y as sr,yi as cr,yn as lr,yr as ur,yt as dr,z as fr,zn as pr,zr as mr,zt as hr}from"./chunks/node.pb-BccNR73d.mjs";import{MessageChannel as gr,Worker as _r}from"node:worker_threads";import{randomUUID as vr}from"node:crypto";import{createServer as yr}from"node:http";const br=Symbol(`server context parent`),xr=Symbol(`server context key`),Sr=Symbol(`server context value`);function Cr(){return{}}function wr(e,t,n){return{signal:e.signal,[br]:e,[xr]:t,[Sr]:n}}function Tr(e,t){let n=e;for(;n;){if(n[xr]===t)return n[Sr];n=n[br]}}async function Er(e,t,n){let r=F({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 Dr(r,a,()=>Kn(a))}var Dr=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=Et(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 Or=Symbol.for(`spacewave.SyncError`);var I=class extends Error{code;requestId;name=`SyncError`;[Or]=!0;static[Symbol.hasInstance](e){return e instanceof Error&&Or in e&&e[Or]===!0}constructor(e,t,n){super(t),this.code=e,this.requestId=n}};function kr(e){return e instanceof I?e:new I(`STORAGE`,`The data operation could not complete`)}function L(e){return Ar(e,`$`,[])}function R(e){return new TextEncoder().encode(L(e))}function z(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 L(n),n}function Ar(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)?jr(e,t,n):Mr(e,t,n);return n.pop(),r}function jr(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]=Ar(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 Mr(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:Ar(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 Nr(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:Pr(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:Pr(n)},r)}}function Pr(e){try{return z(R(e))}catch{throw new I(`VALIDATION`,`Input must contain only JSON-compatible values`)}}var Fr=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 B=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 Ir=P({typeName:`rpcstream.RpcStreamInit`,fields:[{no:1,name:`component_id`,kind:`scalar`,T:j.STRING}],packedByDefault:!0}),Lr=P({typeName:`rpcstream.RpcAck`,fields:[{no:1,name:`error`,kind:`scalar`,T:j.STRING}],packedByDefault:!0}),Rr=P({typeName:`rpcstream.RpcStreamPacket`,fields:[{no:1,name:`init`,kind:`message`,T:()=>Ir,oneof:`body`},{no:2,name:`ack`,kind:`message`,T:()=>Lr,oneof:`body`},{no:3,name:`data`,kind:`scalar`,T:j.BYTES,oneof:`body`}],packedByDefault:!0}),zr={typeName:`kvtx.rpc.Kvtx`,methods:{KvtxTransaction:{name:`KvtxTransaction`,I:Pe,O:fr,kind:r.BiDiStreaming},KvtxTransactionRpc:{name:`KvtxTransactionRpc`,I:Rr,O:Rr,kind:r.BiDiStreaming},Watch:{name:`Watch`,I:Je,O:oe,kind:r.ServerStreaming}}},Br=zr.typeName;var Vr=class{rpc;service;constructor(e,t){this.service=t?.service||Br,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,zr.methods.KvtxTransaction.name,Bt(Pe)(e),t||void 0);return M(fr)(n)}KvtxTransactionRpc(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,zr.methods.KvtxTransactionRpc.name,Bt(Rr)(e),t||void 0);return M(Rr)(n)}Watch(e,t){let n=Je.create(e),r=this.rpc.serverStreamingRequest(this.service,zr.methods.Watch.name,Je.toBinary(n),t||void 0);return M(oe)(r)}};const V={typeName:`kvtx.rpc.KvtxOps`,methods:{KeyCount:{name:`KeyCount`,I:vt,O:nr,kind:r.Unary},KeyData:{name:`KeyData`,I:s,O:we,kind:r.Unary},KeyExists:{name:`KeyExists`,I:s,O:rn,kind:r.Unary},SetKey:{name:`SetKey`,I:xe,O:Oe,kind:r.Unary},DeleteKey:{name:`DeleteKey`,I:ze,O:h,kind:r.Unary},ScanPrefix:{name:`ScanPrefix`,I:Qt,O:_e,kind:r.ServerStreaming},Iterate:{name:`Iterate`,I:Ue,O:b,kind:r.BiDiStreaming}}},Hr=V.typeName;var Ur=class{rpc;service;constructor(e,t){this.service=t?.service||Hr,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=vt.create(e),r=await this.rpc.request(this.service,V.methods.KeyCount.name,vt.toBinary(n),t||void 0);return nr.fromBinary(r)}async KeyData(e,t){let n=s.create(e),r=await this.rpc.request(this.service,V.methods.KeyData.name,s.toBinary(n),t||void 0);return we.fromBinary(r)}async KeyExists(e,t){let n=s.create(e),r=await this.rpc.request(this.service,V.methods.KeyExists.name,s.toBinary(n),t||void 0);return rn.fromBinary(r)}async SetKey(e,t){let n=xe.create(e),r=await this.rpc.request(this.service,V.methods.SetKey.name,xe.toBinary(n),t||void 0);return Oe.fromBinary(r)}async DeleteKey(e,t){let n=ze.create(e),r=await this.rpc.request(this.service,V.methods.DeleteKey.name,ze.toBinary(n),t||void 0);return h.fromBinary(r)}ScanPrefix(e,t){let n=Qt.create(e),r=this.rpc.serverStreamingRequest(this.service,V.methods.ScanPrefix.name,Qt.toBinary(n),t||void 0);return M(_e)(r)}Iterate(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,V.methods.Iterate.name,Bt(Ue)(e),t||void 0);return M(b)(n)}},Wr=class extends Error{constructor(){super(`The snapshot exceeds its record or byte limit; use a narrower prefix`),this.name=`KvScanLimitError`}},Gr=class extends B{service;constructor(e){super(e),this.service=new Vr(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 Fr(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 Wr;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 Wr;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=F({objectMode:!0}),r=this.service.KvtxTransaction(n,t)[Symbol.asyncIterator]();n.push({body:{case:`init`,value:{write:e}}});let i=await qr(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 Kr(n,r,new Ur(new pn(()=>Er(a,e=>this.service.KvtxTransactionRpc(e,t),!1))))}},Kr=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 Wr;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 qr(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 qr(this.responses)}finally{this.requests.end()}}}};async function qr(e){let t=await e.next();if(t.done)throw Error(`kv/store: transaction stream closed`);return t.value}function Jr(e){return e?`<${e}>`:``}const Yr=`types/`,Xr=`<type>`;function Zr(e){return e?Yr+e:``}function Qr(e,t){return{subject:Jr(e),predicate:Xr,obj:Jr(Zr(t))}}async function $r(e,t,n){let r=await e.lookupGraphQuads(Jr(t),Xr,void 0,void 0,1,n);if(!r.quads||r.quads.length===0)return``;let i=r.quads[0].obj;if(!i)return ei(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 ei(e,t,n){let r=await e.iterateObjects(Yr,!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 ti(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 ni(e,t,n,r){if(!t||!n)throw Error(`empty object key or type ID`);let i=Qr(t,n),a=await e.lookupGraphQuads(Jr(t),Xr,void 0,void 0,void 0,r),o=!1;a.quads&&(o=await ti(e,a.quads,i.obj,r)),await ri(e,n,r),o||await e.setGraphQuad(i.subject??``,i.predicate??``,i.obj??``,i.label,r)}async function ri(e,t,n){let r=Zr(t),i=await e.getObject(r,n);return i?(i.release(),!1):((await e.createObject(r,{},n)).release(),!0)}var ii=class extends Error{constructor(){super(`The existing object has a different ObjectType`),this.name=`KvObjectTypeError`}};async function ai(e,t,n,r){let i=await e.getObject(t,r);if(i){if(i.release(),await $r(e,t,r)!==`kv/store`)throw new ii}else{if(!n)return;let i=await e.buildStorageCursor(r);try{let n=await i.putBlock({data:Ze.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 ni(e,t,`kv/store`,r)}finally{i.release()}}let a=await e.accessTypedObject(t,r),o=e.resourceRef.createResource(a.resourceId,Gr);if(a.typeId!==`kv/store`)throw o.release(),new ii;return o}const H={typeName:`s4wave.world.EngineResourceService`,methods:{GetEngineInfo:{name:`GetEngineInfo`,I:T,O:ge,kind:r.Unary},GetWorldRootSnapshot:{name:`GetWorldRootSnapshot`,I:Nt,O:Vn,kind:r.Unary},WatchWorldRootSnapshots:{name:`WatchWorldRootSnapshots`,I:In,O:Vn,kind:r.ServerStreaming},NewTransaction:{name:`NewTransaction`,I:Qn,O:lr,kind:r.Unary},ExecuteWorldOp:{name:`ExecuteWorldOp`,I:A,O:fn,kind:r.Unary},Sync:{name:`Sync`,I:C,O:de,kind:r.Unary},GetSeqno:{name:`GetSeqno`,I:O,O:o,kind:r.Unary},WaitSeqno:{name:`WaitSeqno`,I:Gn,O:bn,kind:r.Unary},BuildStorageCursor:{name:`BuildStorageCursor`,I:Xn,O:jt,kind:r.Unary},AccessWorldState:{name:`AccessWorldState`,I:N,O:k,kind:r.Unary}}},oi=H.typeName;var si=class{rpc;service;constructor(e,t){this.service=t?.service||oi,this.rpc=e,this.GetEngineInfo=this.GetEngineInfo.bind(this),this.GetWorldRootSnapshot=this.GetWorldRootSnapshot.bind(this),this.WatchWorldRootSnapshots=this.WatchWorldRootSnapshots.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=T.create(e),r=await this.rpc.request(this.service,H.methods.GetEngineInfo.name,T.toBinary(n),t||void 0);return ge.fromBinary(r)}async GetWorldRootSnapshot(e,t){let n=Nt.create(e),r=await this.rpc.request(this.service,H.methods.GetWorldRootSnapshot.name,Nt.toBinary(n),t||void 0);return Vn.fromBinary(r)}WatchWorldRootSnapshots(e,t){let n=In.create(e),r=this.rpc.serverStreamingRequest(this.service,H.methods.WatchWorldRootSnapshots.name,In.toBinary(n),t||void 0);return M(Vn)(r)}async NewTransaction(e,t){let n=Qn.create(e),r=await this.rpc.request(this.service,H.methods.NewTransaction.name,Qn.toBinary(n),t||void 0);return lr.fromBinary(r)}async ExecuteWorldOp(e,t){let n=A.create(e),r=await this.rpc.request(this.service,H.methods.ExecuteWorldOp.name,A.toBinary(n),t||void 0);return fn.fromBinary(r)}async Sync(e,t){let n=C.create(e),r=await this.rpc.request(this.service,H.methods.Sync.name,C.toBinary(n),t||void 0);return de.fromBinary(r)}async GetSeqno(e,t){let n=O.create(e),r=await this.rpc.request(this.service,H.methods.GetSeqno.name,O.toBinary(n),t||void 0);return o.fromBinary(r)}async WaitSeqno(e,t){let n=Gn.create(e),r=await this.rpc.request(this.service,H.methods.WaitSeqno.name,Gn.toBinary(n),t||void 0);return bn.fromBinary(r)}async BuildStorageCursor(e,t){let n=Xn.create(e),r=await this.rpc.request(this.service,H.methods.BuildStorageCursor.name,Xn.toBinary(n),t||void 0);return jt.fromBinary(r)}async AccessWorldState(e,t){let n=N.create(e),r=await this.rpc.request(this.service,H.methods.AccessWorldState.name,N.toBinary(n),t||void 0);return k.fromBinary(r)}};const U={typeName:`s4wave.world.WorldStateResourceService`,methods:{CompareObjectRecords:{name:`CompareObjectRecords`,I:St,O:or,kind:r.Unary},GetReadOnly:{name:`GetReadOnly`,I:E,O:at,kind:r.Unary},Sync:{name:`Sync`,I:C,O:de,kind:r.Unary},GetSeqno:{name:`GetSeqno`,I:O,O:o,kind:r.Unary},WaitSeqno:{name:`WaitSeqno`,I:Gn,O:bn,kind:r.Unary},BuildStorageCursor:{name:`BuildStorageCursor`,I:Xn,O:jt,kind:r.Unary},AccessWorldState:{name:`AccessWorldState`,I:N,O:k,kind:r.Unary},OpenNestedWorld:{name:`OpenNestedWorld`,I:an,O:l,kind:r.Unary},OpenOuterWorld:{name:`OpenOuterWorld`,I:en,O:ve,kind:r.Unary},CreateObject:{name:`CreateObject`,I:v,O:tr,kind:r.Unary},GetObject:{name:`GetObject`,I:tt,O:ae,kind:r.Unary},IterateObjects:{name:`IterateObjects`,I:gt,O:wn,kind:r.Unary},RenameObject:{name:`RenameObject`,I:S,O:w,kind:r.Unary},DeleteObject:{name:`DeleteObject`,I:sn,O:d,kind:r.Unary},SetGraphQuad:{name:`SetGraphQuad`,I:pr,O:f,kind:r.Unary},DeleteGraphQuad:{name:`DeleteGraphQuad`,I:ee,O:De,kind:r.Unary},LookupGraphQuads:{name:`LookupGraphQuads`,I:Ht,O:dt,kind:r.Unary},LookupGraphQuadsBatch:{name:`LookupGraphQuadsBatch`,I:kn,O:hn,kind:r.Unary},ListGraphEdgeBuckets:{name:`ListGraphEdgeBuckets`,I:un,O:Jn,kind:r.Unary},ListObjectsWithType:{name:`ListObjectsWithType`,I:kt,O:Lt,kind:r.Unary},GetObjectRootRefsBatch:{name:`GetObjectRootRefsBatch`,I:D,O:Nn,kind:r.Unary},GetObjectMetadataBatch:{name:`GetObjectMetadataBatch`,I:ce,O:qe,kind:r.Unary},GetObjectBodiesBatch:{name:`GetObjectBodiesBatch`,I:m,O:Xe,kind:r.ServerStreaming},QueryGraphPath:{name:`QueryGraphPath`,I:Se,O:ke,kind:r.Unary},DeleteGraphObject:{name:`DeleteGraphObject`,I:We,O:te,kind:r.Unary},ApplyWorldOp:{name:`ApplyWorldOp`,I:A,O:fn,kind:r.Unary}}},ci=U.typeName;var li=class{rpc;service;constructor(e,t){this.service=t?.service||ci,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.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=St.create(e),r=await this.rpc.request(this.service,U.methods.CompareObjectRecords.name,St.toBinary(n),t||void 0);return or.fromBinary(r)}async GetReadOnly(e,t){let n=E.create(e),r=await this.rpc.request(this.service,U.methods.GetReadOnly.name,E.toBinary(n),t||void 0);return at.fromBinary(r)}async Sync(e,t){let n=C.create(e),r=await this.rpc.request(this.service,U.methods.Sync.name,C.toBinary(n),t||void 0);return de.fromBinary(r)}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 o.fromBinary(r)}async WaitSeqno(e,t){let n=Gn.create(e),r=await this.rpc.request(this.service,U.methods.WaitSeqno.name,Gn.toBinary(n),t||void 0);return bn.fromBinary(r)}async BuildStorageCursor(e,t){let n=Xn.create(e),r=await this.rpc.request(this.service,U.methods.BuildStorageCursor.name,Xn.toBinary(n),t||void 0);return jt.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 k.fromBinary(r)}async OpenNestedWorld(e,t){let n=an.create(e),r=await this.rpc.request(this.service,U.methods.OpenNestedWorld.name,an.toBinary(n),t||void 0);return l.fromBinary(r)}async OpenOuterWorld(e,t){let n=en.create(e),r=await this.rpc.request(this.service,U.methods.OpenOuterWorld.name,en.toBinary(n),t||void 0);return ve.fromBinary(r)}async CreateObject(e,t){let n=v.create(e),r=await this.rpc.request(this.service,U.methods.CreateObject.name,v.toBinary(n),t||void 0);return tr.fromBinary(r)}async GetObject(e,t){let n=tt.create(e),r=await this.rpc.request(this.service,U.methods.GetObject.name,tt.toBinary(n),t||void 0);return ae.fromBinary(r)}async IterateObjects(e,t){let n=gt.create(e),r=await this.rpc.request(this.service,U.methods.IterateObjects.name,gt.toBinary(n),t||void 0);return wn.fromBinary(r)}async RenameObject(e,t){let n=S.create(e),r=await this.rpc.request(this.service,U.methods.RenameObject.name,S.toBinary(n),t||void 0);return w.fromBinary(r)}async DeleteObject(e,t){let n=sn.create(e),r=await this.rpc.request(this.service,U.methods.DeleteObject.name,sn.toBinary(n),t||void 0);return d.fromBinary(r)}async SetGraphQuad(e,t){let n=pr.create(e),r=await this.rpc.request(this.service,U.methods.SetGraphQuad.name,pr.toBinary(n),t||void 0);return f.fromBinary(r)}async DeleteGraphQuad(e,t){let n=ee.create(e),r=await this.rpc.request(this.service,U.methods.DeleteGraphQuad.name,ee.toBinary(n),t||void 0);return De.fromBinary(r)}async LookupGraphQuads(e,t){let n=Ht.create(e),r=await this.rpc.request(this.service,U.methods.LookupGraphQuads.name,Ht.toBinary(n),t||void 0);return dt.fromBinary(r)}async LookupGraphQuadsBatch(e,t){let n=kn.create(e),r=await this.rpc.request(this.service,U.methods.LookupGraphQuadsBatch.name,kn.toBinary(n),t||void 0);return hn.fromBinary(r)}async ListGraphEdgeBuckets(e,t){let n=un.create(e),r=await this.rpc.request(this.service,U.methods.ListGraphEdgeBuckets.name,un.toBinary(n),t||void 0);return Jn.fromBinary(r)}async ListObjectsWithType(e,t){let n=kt.create(e),r=await this.rpc.request(this.service,U.methods.ListObjectsWithType.name,kt.toBinary(n),t||void 0);return Lt.fromBinary(r)}async GetObjectRootRefsBatch(e,t){let n=D.create(e),r=await this.rpc.request(this.service,U.methods.GetObjectRootRefsBatch.name,D.toBinary(n),t||void 0);return Nn.fromBinary(r)}async GetObjectMetadataBatch(e,t){let n=ce.create(e),r=await this.rpc.request(this.service,U.methods.GetObjectMetadataBatch.name,ce.toBinary(n),t||void 0);return qe.fromBinary(r)}GetObjectBodiesBatch(e,t){let n=m.create(e),r=this.rpc.serverStreamingRequest(this.service,U.methods.GetObjectBodiesBatch.name,m.toBinary(n),t||void 0);return M(Xe)(r)}async QueryGraphPath(e,t){let n=Se.create(e),r=await this.rpc.request(this.service,U.methods.QueryGraphPath.name,Se.toBinary(n),t||void 0);return ke.fromBinary(r)}async DeleteGraphObject(e,t){let n=We.create(e),r=await this.rpc.request(this.service,U.methods.DeleteGraphObject.name,We.toBinary(n),t||void 0);return te.fromBinary(r)}async ApplyWorldOp(e,t){let n=A.create(e),r=await this.rpc.request(this.service,U.methods.ApplyWorldOp.name,A.toBinary(n),t||void 0);return fn.fromBinary(r)}};const ui={typeName:`s4wave.world.WatchWorldStateResourceService`,methods:{WatchWorldState:{name:`WatchWorldState`,I:Zt,O:_t,kind:r.ServerStreaming}}},di=ui.typeName;var fi=class{rpc;service;constructor(e,t){this.service=t?.service||di,this.rpc=e,this.WatchWorldState=this.WatchWorldState.bind(this)}WatchWorldState(e,t){let n=Zt.create(e),r=this.rpc.serverStreamingRequest(this.service,ui.methods.WatchWorldState.name,Zt.toBinary(n),t||void 0);return M(_t)(r)}};const pi={typeName:`s4wave.world.TxResourceService`,methods:{CommitMutations:{name:`CommitMutations`,I:Wt,O:pt,kind:r.Unary},Commit:{name:`Commit`,I:er,O:dr,kind:r.Unary},Discard:{name:`Discard`,I:nn,O:be,kind:r.Unary}}},mi=pi.typeName;var hi=class{rpc;service;constructor(e,t){this.service=t?.service||mi,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=Wt.create(e),r=await this.rpc.request(this.service,pi.methods.CommitMutations.name,Wt.toBinary(n),t||void 0);return pt.fromBinary(r)}async Commit(e,t){let n=er.create(e),r=await this.rpc.request(this.service,pi.methods.Commit.name,er.toBinary(n),t||void 0);return dr.fromBinary(r)}async Discard(e,t){let n=nn.create(e),r=await this.rpc.request(this.service,pi.methods.Discard.name,nn.toBinary(n),t||void 0);return be.fromBinary(r)}};const W={typeName:`s4wave.world.ObjectIteratorResourceService`,methods:{Err:{name:`Err`,I:je,O:re,kind:r.Unary},Valid:{name:`Valid`,I:ot,O:Me,kind:r.Unary},Key:{name:`Key`,I:Bn,O:Tt,kind:r.Unary},Next:{name:`Next`,I:Ve,O:_,kind:r.Unary},Seek:{name:`Seek`,I:me,O:Ie,kind:r.Unary},Close:{name:`Close`,I:_n,O:qt,kind:r.Unary}}},gi=W.typeName;var _i=class{rpc;service;constructor(e,t){this.service=t?.service||gi,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=je.create(e),r=await this.rpc.request(this.service,W.methods.Err.name,je.toBinary(n),t||void 0);return re.fromBinary(r)}async Valid(e,t){let n=ot.create(e),r=await this.rpc.request(this.service,W.methods.Valid.name,ot.toBinary(n),t||void 0);return Me.fromBinary(r)}async Key(e,t){let n=Bn.create(e),r=await this.rpc.request(this.service,W.methods.Key.name,Bn.toBinary(n),t||void 0);return Tt.fromBinary(r)}async Next(e,t){let n=Ve.create(e),r=await this.rpc.request(this.service,W.methods.Next.name,Ve.toBinary(n),t||void 0);return _.fromBinary(r)}async Seek(e,t){let n=me.create(e),r=await this.rpc.request(this.service,W.methods.Seek.name,me.toBinary(n),t||void 0);return Ie.fromBinary(r)}async Close(e,t){let n=_n.create(e),r=await this.rpc.request(this.service,W.methods.Close.name,_n.toBinary(n),t||void 0);return qt.fromBinary(r)}};({typeName:`s4wave.world.GraphPathQueryResourceService`,methods:{Next:{name:`Next`,I:bt,O:ir,kind:r.Unary},Close:{name:`Close`,I:zt,O:jn,kind:r.Unary}}}).typeName;const G={typeName:`s4wave.world.ObjectStateResourceService`,methods:{GetKey:{name:`GetKey`,I:Re,O:hr,kind:r.Unary},GetRootRef:{name:`GetRootRef`,I:rt,O:ct,kind:r.Unary},SetRootRef:{name:`SetRootRef`,I:Ge,O:$e,kind:r.Unary},AccessWorldState:{name:`AccessWorldState`,I:N,O:k,kind:r.Unary},ApplyObjectOp:{name:`ApplyObjectOp`,I:Tn,O:Hn,kind:r.Unary},IncrementRev:{name:`IncrementRev`,I:Fn,O:Xt,kind:r.Unary},WaitRev:{name:`WaitRev`,I:i,O:Pt,kind:r.Unary}}},vi=G.typeName;var yi=class{rpc;service;constructor(e,t){this.service=t?.service||vi,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=Re.create(e),r=await this.rpc.request(this.service,G.methods.GetKey.name,Re.toBinary(n),t||void 0);return hr.fromBinary(r)}async GetRootRef(e,t){let n=rt.create(e),r=await this.rpc.request(this.service,G.methods.GetRootRef.name,rt.toBinary(n),t||void 0);return ct.fromBinary(r)}async SetRootRef(e,t){let n=Ge.create(e),r=await this.rpc.request(this.service,G.methods.SetRootRef.name,Ge.toBinary(n),t||void 0);return $e.fromBinary(r)}async AccessWorldState(e,t){let n=N.create(e),r=await this.rpc.request(this.service,G.methods.AccessWorldState.name,N.toBinary(n),t||void 0);return k.fromBinary(r)}async ApplyObjectOp(e,t){let n=Tn.create(e),r=await this.rpc.request(this.service,G.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,G.methods.IncrementRev.name,Fn.toBinary(n),t||void 0);return Xt.fromBinary(r)}async WaitRev(e,t){let n=i.create(e),r=await this.rpc.request(this.service,G.methods.WaitRev.name,i.toBinary(n),t||void 0);return Pt.fromBinary(r)}};const bi={typeName:`s4wave.world.TypedObjectResourceService`,methods:{AccessTypedObject:{name:`AccessTypedObject`,I:xn,O:Ln,kind:r.Unary}}},xi=bi.typeName;var Si=class{rpc;service;constructor(e,t){this.service=t?.service||xi,this.rpc=e,this.AccessTypedObject=this.AccessTypedObject.bind(this)}async AccessTypedObject(e,t){let n=xn.create(e),r=await this.rpc.request(this.service,bi.methods.AccessTypedObject.name,xn.toBinary(n),t||void 0);return Ln.fromBinary(r)}};const K={typeName:`s4wave.bucket_lookup.BucketLookupCursorResourceService`,methods:{GetRef:{name:`GetRef`,I:ar,O:He,kind:r.Unary},FollowRef:{name:`FollowRef`,I:Kt,O:Ut,kind:r.Unary},GetBlock:{name:`GetBlock`,I:ur,O:xt,kind:r.Unary},PutBlock:{name:`PutBlock`,I:Ee,O:on,kind:r.Unary},PutBlockBatch:{name:`PutBlockBatch`,I:x,O:y,kind:r.Unary},GetBlockExistsBatch:{name:`GetBlockExistsBatch`,I:ft,O:$n,kind:r.Unary},BuildTransaction:{name:`BuildTransaction`,I:At,O:Rt,kind:r.Unary},BuildTransactionAtRef:{name:`BuildTransactionAtRef`,I:dn,O:Yn,kind:r.Unary},Clone:{name:`Clone`,I:An,O:gn,kind:r.Unary},Release:{name:`Release`,I:u,O:tn,kind:r.Unary},Unmarshal:{name:`Unmarshal`,I:ye,O:Ce,kind:r.Unary}}},Ci=K.typeName;var wi=class{rpc;service;constructor(e,t){this.service=t?.service||Ci,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=ar.create(e),r=await this.rpc.request(this.service,K.methods.GetRef.name,ar.toBinary(n),t||void 0);return He.fromBinary(r)}async FollowRef(e,t){let n=Kt.create(e),r=await this.rpc.request(this.service,K.methods.FollowRef.name,Kt.toBinary(n),t||void 0);return Ut.fromBinary(r)}async GetBlock(e,t){let n=ur.create(e),r=await this.rpc.request(this.service,K.methods.GetBlock.name,ur.toBinary(n),t||void 0);return xt.fromBinary(r)}async PutBlock(e,t){let n=Ee.create(e),r=await this.rpc.request(this.service,K.methods.PutBlock.name,Ee.toBinary(n),t||void 0);return on.fromBinary(r)}async PutBlockBatch(e,t){let n=x.create(e),r=await this.rpc.request(this.service,K.methods.PutBlockBatch.name,x.toBinary(n),t||void 0);return y.fromBinary(r)}async GetBlockExistsBatch(e,t){let n=ft.create(e),r=await this.rpc.request(this.service,K.methods.GetBlockExistsBatch.name,ft.toBinary(n),t||void 0);return $n.fromBinary(r)}async BuildTransaction(e,t){let n=At.create(e),r=await this.rpc.request(this.service,K.methods.BuildTransaction.name,At.toBinary(n),t||void 0);return Rt.fromBinary(r)}async BuildTransactionAtRef(e,t){let n=dn.create(e),r=await this.rpc.request(this.service,K.methods.BuildTransactionAtRef.name,dn.toBinary(n),t||void 0);return Yn.fromBinary(r)}async Clone(e,t){let n=An.create(e),r=await this.rpc.request(this.service,K.methods.Clone.name,An.toBinary(n),t||void 0);return gn.fromBinary(r)}async Release(e,t){let n=u.create(e),r=await this.rpc.request(this.service,K.methods.Release.name,u.toBinary(n),t||void 0);return tn.fromBinary(r)}async Unmarshal(e,t){let n=ye.create(e),r=await this.rpc.request(this.service,K.methods.Unmarshal.name,ye.toBinary(n),t||void 0);return Ce.fromBinary(r)}};const q={typeName:`s4wave.block.cursor.BlockCursorResourceService`,methods:{Fetch:{name:`Fetch`,I:ue,O:it,kind:r.Unary},SetBlock:{name:`SetBlock`,I:Zn,O:cr,kind:r.Unary},FollowRef:{name:`FollowRef`,I:nt,O:st,kind:r.Unary},GetRef:{name:`GetRef`,I:Cn,O:zn,kind:r.Unary},IsDirty:{name:`IsDirty`,I:wt,O:ln,kind:r.Unary},MarkDirty:{name:`MarkDirty`,I:It,O:On,kind:r.Unary},GetBlock:{name:`GetBlock`,I:yn,O:Pn,kind:r.Unary},Unmarshal:{name:`Unmarshal`,I:Be,O:g,kind:r.Unary},IsSubBlock:{name:`IsSubBlock`,I:qn,O:Ot,kind:r.Unary},FollowSubBlock:{name:`FollowSubBlock`,I:Ne,O:a,kind:r.Unary},SetAsSubBlock:{name:`SetAsSubBlock`,I:Vt,O:ut,kind:r.Unary},ClearRef:{name:`ClearRef`,I:p,O:Ye,kind:r.Unary},ClearAllRefs:{name:`ClearAllRefs`,I:Le,O:mr,kind:r.Unary},SetRef:{name:`SetRef`,I:yt,O:rr,kind:r.Unary},GetExistingRef:{name:`GetExistingRef`,I:Yt,O:ht,kind:r.Unary},GetAllRefs:{name:`GetAllRefs`,I:Mt,O:Wn,kind:r.Unary},Detach:{name:`Detach`,I:et,O:ie,kind:r.Unary},DetachTransaction:{name:`DetachTransaction`,I:fe,O:Mn,kind:r.Unary},DetachRecursive:{name:`DetachRecursive`,I:se,O:Ke,kind:r.Unary},Parents:{name:`Parents`,I:mn,O:Gt,kind:r.Unary}}},Ti=q.typeName;var Ei=class{rpc;service;constructor(e,t){this.service=t?.service||Ti,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=ue.create(e),r=await this.rpc.request(this.service,q.methods.Fetch.name,ue.toBinary(n),t||void 0);return it.fromBinary(r)}async SetBlock(e,t){let n=Zn.create(e),r=await this.rpc.request(this.service,q.methods.SetBlock.name,Zn.toBinary(n),t||void 0);return cr.fromBinary(r)}async FollowRef(e,t){let n=nt.create(e),r=await this.rpc.request(this.service,q.methods.FollowRef.name,nt.toBinary(n),t||void 0);return st.fromBinary(r)}async GetRef(e,t){let n=Cn.create(e),r=await this.rpc.request(this.service,q.methods.GetRef.name,Cn.toBinary(n),t||void 0);return zn.fromBinary(r)}async IsDirty(e,t){let n=wt.create(e),r=await this.rpc.request(this.service,q.methods.IsDirty.name,wt.toBinary(n),t||void 0);return ln.fromBinary(r)}async MarkDirty(e,t){let n=It.create(e),r=await this.rpc.request(this.service,q.methods.MarkDirty.name,It.toBinary(n),t||void 0);return On.fromBinary(r)}async GetBlock(e,t){let n=yn.create(e),r=await this.rpc.request(this.service,q.methods.GetBlock.name,yn.toBinary(n),t||void 0);return Pn.fromBinary(r)}async Unmarshal(e,t){let n=Be.create(e),r=await this.rpc.request(this.service,q.methods.Unmarshal.name,Be.toBinary(n),t||void 0);return g.fromBinary(r)}async IsSubBlock(e,t){let n=qn.create(e),r=await this.rpc.request(this.service,q.methods.IsSubBlock.name,qn.toBinary(n),t||void 0);return Ot.fromBinary(r)}async FollowSubBlock(e,t){let n=Ne.create(e),r=await this.rpc.request(this.service,q.methods.FollowSubBlock.name,Ne.toBinary(n),t||void 0);return a.fromBinary(r)}async SetAsSubBlock(e,t){let n=Vt.create(e),r=await this.rpc.request(this.service,q.methods.SetAsSubBlock.name,Vt.toBinary(n),t||void 0);return ut.fromBinary(r)}async ClearRef(e,t){let n=p.create(e),r=await this.rpc.request(this.service,q.methods.ClearRef.name,p.toBinary(n),t||void 0);return Ye.fromBinary(r)}async ClearAllRefs(e,t){let n=Le.create(e),r=await this.rpc.request(this.service,q.methods.ClearAllRefs.name,Le.toBinary(n),t||void 0);return mr.fromBinary(r)}async SetRef(e,t){let n=yt.create(e),r=await this.rpc.request(this.service,q.methods.SetRef.name,yt.toBinary(n),t||void 0);return rr.fromBinary(r)}async GetExistingRef(e,t){let n=Yt.create(e),r=await this.rpc.request(this.service,q.methods.GetExistingRef.name,Yt.toBinary(n),t||void 0);return ht.fromBinary(r)}async GetAllRefs(e,t){let n=Mt.create(e),r=await this.rpc.request(this.service,q.methods.GetAllRefs.name,Mt.toBinary(n),t||void 0);return Wn.fromBinary(r)}async Detach(e,t){let n=et.create(e),r=await this.rpc.request(this.service,q.methods.Detach.name,et.toBinary(n),t||void 0);return ie.fromBinary(r)}async DetachTransaction(e,t){let n=fe.create(e),r=await this.rpc.request(this.service,q.methods.DetachTransaction.name,fe.toBinary(n),t||void 0);return Mn.fromBinary(r)}async DetachRecursive(e,t){let n=se.create(e),r=await this.rpc.request(this.service,q.methods.DetachRecursive.name,se.toBinary(n),t||void 0);return Ke.fromBinary(r)}async Parents(e,t){let n=mn.create(e),r=await this.rpc.request(this.service,q.methods.Parents.name,mn.toBinary(n),t||void 0);return Gt.fromBinary(r)}},Di=class e extends B{service;constructor(e){super(e),this.service=new Ei(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 Oi={typeName:`s4wave.block.transaction.BlockTransactionResourceService`,methods:{Write:{name:`Write`,I:le,O:he,kind:r.Unary},GetRootCursor:{name:`GetRootCursor`,I:Ae,O:ne,kind:r.Unary}}},ki=Oi.typeName;var Ai=class{rpc;service;constructor(e,t){this.service=t?.service||ki,this.rpc=e,this.Write=this.Write.bind(this),this.GetRootCursor=this.GetRootCursor.bind(this)}async Write(e,t){let n=le.create(e),r=await this.rpc.request(this.service,Oi.methods.Write.name,le.toBinary(n),t||void 0);return he.fromBinary(r)}async GetRootCursor(e,t){let n=Ae.create(e),r=await this.rpc.request(this.service,Oi.methods.GetRootCursor.name,Ae.toBinary(n),t||void 0);return ne.fromBinary(r)}},ji=class extends B{service;constructor(e){super(e),this.service=new Ai(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,Di)}};function Mi(e){return!!e?.hash?.hash?.length}var J=class e extends B{service;constructor(e){super(e),this.service=new wi(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(!Mi(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,ji),cursor:this.resourceRef.createResource(n.cursorResourceId??0,Di)}}async buildTransactionAtRef(e,t){let n=await this.service.BuildTransactionAtRef(e,t);return{transaction:this.resourceRef.createResource(n.transactionResourceId??0,ji),cursor:this.resourceRef.createResource(n.cursorResourceId??0,Di)}}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 Ni=Symbol.for(`spacewave.WorldOperationRejection`);var Pi=class extends Error{code;name=`WorldOperationRejection`;[Ni]=!0;static[Symbol.hasInstance](e){return e instanceof Error&&Ni in e&&e[Ni]===!0}constructor(e,t){super(t||e),this.code=e}};function Fi(e){if(e.rejectionCode)throw new Pi(e.rejectionCode,e.rejectionMessage??``);if(e.errorCode===1)throw Error(`remote world operation unhandled`)}var Ii=class extends B{service;objectKey;constructor(e,t){super(e),this.service=new yi(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,J)}async applyObjectOp(e,t,n,r){let i=await this.service.ApplyObjectOp({opTypeId:e,opData:t,opSender:n},r);return Fi(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}}},Li=class extends B{service;constructor(e){super(e),this.service=new _i(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 Ri(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 zi=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 Bi(this,e)}async getObject(e,t){return await this.performOp(!1,t,async n=>{try{var r=Dn();return r.u(await n.getObject(e,t))!==null}catch(e){r.e=e}finally{r.d()}})?new Bi(this,e):null}async iterateObjects(e,t,n){let r=await this.engine.newTransaction(!1,n);try{return new Hi(await r.iterateObjects(e,t,n),r)}catch(e){throw r.release(),e}}async renameObject(e,t,n){let r=Gi(n);return await this.performOp(!0,r.abortSignal,async n=>{(await n.renameObject(e,t,r)).release()}),new Bi(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 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 Ri(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()}},Bi=class{engineState;objectKey;constructor(e,t){this.engineState=e,this.objectKey=t}getKey(){return this.objectKey}async getRootRef(e){return Ri(this.engineState,!1,e,async t=>{try{var n=Dn();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 Ri(this.engineState,!0,t,async n=>{try{var r=Dn();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 Vi(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 Ri(this.engineState,!0,r,async i=>{try{var a=Dn();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 Ri(this.engineState,!0,e,async t=>{try{var n=Dn();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 Ri(this.engineState,!1,n,async e=>{try{var r=Dn();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](){}},Vi=class extends J{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()}))}},Hi=class extends Li{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())}},Ui=class e extends B{service;readOnly;constructor(e,t){super(e),this.service=new li(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,J)}async accessWorldState(e,t){let n=await this.service.AccessWorldState({ref:e},t);return this.resourceRef.createResource(n.resourceId??0,J)}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 zi(this.resourceRef.createResource(t.resourceId??0,Ki),!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,Ii,{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,Ii,{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,Li)}async renameObject(e,t,n){let r=Gi(n),i=await this.service.RenameObject({oldObjectKey:e,newObjectKey:t,descendants:r.descendants},r.abortSignal);return this.resourceRef.createResource(i.resourceId??0,Ii,{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 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 Fi(i),{seqno:i.seqno??0n,sysErr:i.sysErr??!1}}async accessTypedObject(e,t){let n=await new Si(this.resourceRef.client).AccessTypedObject({objectKey:e},t);return{resourceId:n.resourceId??0,typeId:n.typeId??``}}getDebugInfo(){return{label:this.readOnly?`(read-only)`:void 0}}},Wi=class extends Ui{txService;constructor(e,t){super(e,t),this.txService=new hi(e.client)}async commit(e){await this.txService.Commit({},e)}async discard(e){await this.txService.Discard({},e)}};function Gi(e){return e?e instanceof AbortSignal?{abortSignal:e}:e:{}}var Ki=class extends B{service;watchService;constructor(e){super(e),this.service=new si(e.client),this.watchService=new fi(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,Wi,{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,J)}async accessWorldState(e,t){let n=await this.service.AccessWorldState({ref:e},t);return this.resourceRef.createResource(n.resourceId??0,J)}async accessTypedObject(e,t){let n=await new Si(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,Ui),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 Ji(e){return`${Yi}${ea(`application`,e)}/metadata`}const Yi=`sync/v1/`,Xi=new TextEncoder;new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0});function Zi(e,t,n){return`${Yi}${ea(`application`,e)}/${ea(`scope`,t)}/collections/${ea(`collection`,n)}`}function Qi(e,t){return`${Yi}${ea(`application`,e)}/${ea(`scope`,t)}/receipts`}function $i(e){return ta(`record key`,e,1024)}function ea(e,t){return na(ta(e,t,256))}function ta(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=Xi.encode(t);if(r.length>n)throw TypeError(`invalid ${e}: exceeds ${n} UTF-8 bytes`);return r}function na(e){let t=``;for(let n of e)t+=(n>>4).toString(16)+(n&15).toString(16);return t}function ra(e){if(!e.id||!Number.isSafeInteger(e.version)||e.version<1||e.version>4294967295)throw new I(`VALIDATION`,`Application ID and positive version are required`);return e}async function ia(e,t,n){try{L(t);let r=await e[`~standard`].validate(t);if(r.issues)throw new I(`VALIDATION`,`${n} does not match its schema`);return L(r.value),r.value}catch(e){throw e instanceof I?e:new I(`VALIDATION`,`${n} must be a valid JSON value matching its schema`)}}const aa=new TextEncoder,oa=new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0});var sa=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 ai(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 I(`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(Zi(i,e.scope,n)));return{get:async e=>{let t=ua(e),n=await(await c(`read`))?.get(t,o);if(n?.found&&n.data.length>a.maxRecordBytes)throw new I(`QUERY_LIMIT`,`Record exceeds the configured byte limit`);return n?.found?z(n.data):void 0},scan:async(e={})=>{let t=e.prefix??``,n=t?ua(t):new Uint8Array,r=await c(`read`);return r?(await r.scanRecords(n,{maxRecords:a.maxRecords,maxBytes:a.maxSnapshotBytes},o)).map(e=>({key:oa.decode(e.key),value:z(e.value)})):[]},put:async(e,t)=>{let n=ua(e),r=await c(`write`);if(!this.options.write||!r)throw new I(`DENIED`,`Transaction is read-only`);let i=R(await ia(s,t,`Record`));if(i.length>a.maxRecordBytes)throw new I(`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=ua(e),n=await c(`write`);if(!this.options.write||!n)throw new I(`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 I(`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 I(`DENIED`,`Transaction is read-only`);let s=this.fingerprint(t);if(aa.encode(s).length>this.options.limits.maxRecordBytes)throw new I(`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(Qi(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 I(`VALIDATION`,`Mutation is not declared and implemented`);let o=await ia(n.input,t.input,`Mutation input`),s=await ca({...l,principal:e,scope:e.scope,signal:a},e=>i(e,o));if(f=await ia(n.output,s,`Mutation output`),R(f).length>this.options.limits.maxRecordBytes)throw new I(`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 I(`VALIDATION`,`Request ID must contain 1 to 128 characters`);if(aa.encode(this.fingerprint(t)).length>this.options.limits.maxRecordBytes)throw new I(`QUERY_LIMIT`,`Upgrade exceeds the input byte limit`);if(!this.options.write)throw new I(`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(Ji(a))).set(aa.encode(`scope/${L(e.scope)}`),R(e.scope),o),await(await this.store(Qi(a,e.scope))).set(aa.encode(L([e.subject,n])),R({fingerprint:this.fingerprint(t),result:r,accesses:i}),o)}async readAcceptance(e,t,n){this.checkOpen();let r=await this.store(Qi(this.options.instance,e.scope)),i=aa.encode(L([e.subject,n])),a=await r?.get(i,this.options.signal);if(!a?.found)return;let o=z(a.data);if(o.fingerprint!==this.fingerprint(t))throw new I(`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 L({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 I(`QUERY_LIMIT`,`Mutation exceeds the transaction data limit`)}checkOpen(){if(this.released)throw new I(`CLOSED`,`Transaction is closed`);this.options.signal.throwIfAborted()}};async function ca(e,t){return la(n=>t({...e,...n(e)}))}async function la(e){let t=!0,n=new Set,r=e=>{if(!t)return Promise.reject(new I(`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 I(`VALIDATION`,`Await every collection operation before returning`);return t}finally{t=!1,await Promise.allSettled(n)}}function ua(e){try{return $i(e)}catch{throw new I(`VALIDATION`,`Record key must be nonempty UTF-8 within 1024 bytes`)}}async function da(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 pa(z(R(r)),[],o)},o={collection:t=>{if(!i)throw new I(`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 I(`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 I(`VALIDATION`,`Query must await every snapshot read`);return{value:z(R(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 fa=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=>!ha(ma(e.before,t),ma(e.after,t)))||r.shapes.some(t=>ga(ma(e.before,t))!==ga(ma(e.after,t))):!1}unknown(e){return this.collections.has(e)}};function pa(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:pa(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:pa(i.value,[...t,r],n)}:i},set(){throw new I(`VALIDATION`,`Queries cannot mutate snapshot values`)},deleteProperty(){throw new I(`VALIDATION`,`Queries cannot mutate snapshot values`)},defineProperty(){throw new I(`VALIDATION`,`Queries cannot mutate snapshot values`)},setPrototypeOf(){throw new I(`VALIDATION`,`Queries cannot mutate snapshot values`)},preventExtensions(){throw new I(`VALIDATION`,`Queries cannot mutate snapshot values`)}}))}function ma(e,t){let n=e;for(let e of t){if(typeof n!=`object`||!n)return;n=n[e]}return n}function ha(e,t){return e===void 0||t===void 0?e===t:L(e)===L(t)}function ga(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}var _a=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 Ki(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 ia(e.input,z(R(t)),`Query input`);r.throwIfAborted();let a=L(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:z(R(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 Fr(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:kr(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 sa(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:Zi(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 da(va(d,a,this.options.limits.maxSnapshotBytes,this.options.limits.maxRecords),n=>e.evaluate(n,z(R(t)))),i=new fa(r.dependencies),o=await this.roots(c,r.dependencies,n),R(r.value).length>this.options.limits.maxSnapshotBytes)throw new I(`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})=>Zi(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 $r(e,r[i],n):``;return{type:a,ref:t.rootRef,signature:`${a}:${Array.from(Te.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 I(`AUTHENTICATION`,`Authentication is no longer valid`)}};function va(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+=R([e,o,s??null]).length,++a>r||i>n))throw new I(`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 ya=new TextEncoder,ba=new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}),xa=ya.encode(`version`);var Sa=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=ra(e.schema),this.instance=e.instance??this.schema.id;try{Qi(this.instance,`schema`);for(let[e,t]of Object.entries(this.schema.collections))if(Zi(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 I(`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 I(`VALIDATION`,`Limits must be positive integers`);this.engine=new Ki(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(Ji(this.instance));if(!r)throw Error(`missing metadata store`);let i=await r.get(xa,this.signal),a=i.found?z(i.data):void 0;if(a&&a.application!==this.schema.id)throw new I(`SCHEMA_MISMATCH`,`This dataset belongs to a different application`);if(a&&a.version!==this.schema.version){if(!e||e.from!==a.version)throw new I(`SCHEMA_MISMATCH`,`Stored version differs; supply an explicit maintenance migration`);await e.run({signal:this.signal,scopes:async()=>(await r.scanRecords(ya.encode(`scope/`),{maxRecords:this.limits.maxRecords,maxBytes:this.limits.maxSnapshotBytes},this.signal)).map(e=>z(e.value)),scope:e=>n.collections({subject:`admin`,scope:e})})}await r.set(xa,R({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 I(`MISSING_COLLECTION`,`Collection is not declared`);if(!r&&!await this.options.authorize({principal:e,scope:e.scope,collection:t,action:n}))throw new I(`DENIED`,`Collection ${n} is not authorized`)}async openCollection(e,t){try{await this.authorize(e,t,`read`)}catch(n){if(!(n instanceof I)||n.code!==`DENIED`)throw n;await this.authorize(e,t,`write`)}}execute(e,t,n={},r=!1){if(this.closing)return Promise.reject(new I(`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{...Nr((e,n)=>this.execute(t,e,n)),async*watch(e,a,o){if(n.closing)throw new I(`CLOSED`,`Server is closed`);let s=r??=new _a({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 I(`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 I(`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=L([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 Fr(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:kr(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=Zi(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 $r(t,a,r)!==`kv/store`)throw new ii}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,Gr);for await(let e of i.watchRecords(o,{maxRecords:this.limits.maxRecords,maxBytes:this.limits.maxSnapshotBytes},r))yield e.map(e=>({key:ba.decode(e.key),value:z(e.value)}))}catch(e){if(e instanceof Wr)throw new I(`QUERY_LIMIT`,e.message);if(!r.aborted)throw kr(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 I(`AUTHENTICATION`,`Authentication is no longer valid`);try{if(Qi(this.instance,e.scope),$i(e.subject).length>256)throw Error(`invalid subject`)}catch{throw new I(`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??vr(),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 ii?new I(`SCHEMA_MISMATCH`,t.message):o?new I(`UNCERTAIN`,`Acceptance could not be confirmed; retry the same request ID and input`,c):t instanceof Wr?new I(`QUERY_LIMIT`,t.message):l.aborted?(this.checkPrincipal(e),new I(this.signal.aborted?`CLOSED`:`UNAVAILABLE`,`Operation was canceled`)):kr(t)}finally{if(await a?.release(),i)try{await i.discard()}catch{}finally{i.release()}}}transaction(e,t,n,r){return new sa(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 $i(e)}catch{throw new I(`VALIDATION`,`Record key must be nonempty UTF-8 within 1024 bytes`)}}};function Ca(e){let t=new AbortController;return e&&(e.aborted?t.abort():e.addEventListener(`abort`,()=>t.abort(),{once:!0})),t}function wa(e=500){return()=>e}var Ta=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||wa(),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 Ea(e,t,n){return new Ta(t.bind(void 0,e),{...n,abortSignal:e}).result}const Da=Symbol.for(`bldr.ResourceFailureError`);var Y=class extends Error{failure;name=`ResourceFailureError`;[Da]=!0;static[Symbol.hasInstance](e){return e instanceof Error&&Da in e&&e[Da]===!0}constructor(e){super(e.message||`resource request failed`),this.failure=e}};function Oa(e){return e instanceof Y?e.failure:{message:e instanceof Error?e.message:String(e)}}async function*ka(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 Aa(e,t){let n=new AbortController,r=F({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 Y(t);return new Dr(r,ka(i),()=>{n.abort(),i.return?.().catch(()=>{})})}catch(e){throw r.end(),n.abort(),await i.return?.().catch(()=>{}),e}}async function*ja(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:Oa(e)}}};return}yield{body:{case:`ack`,value:{}}};let i=F({objectMode:!0}),a=new Dr(i,ka(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 Ma=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 X(`Cannot access "${n}" on released resource`,`INVALID_RESOURCE`)}}),Na=3e4,Pa=`ResourceClient stream did not initialize before timeout`;function Fa(e){return new Promise((t,n)=>{let r=!1,i=setTimeout(()=>{r||(r=!0,n(new X(Pa,`CONNECTION_FAILED`)))},Na);e.then(e=>{r||(r=!0,clearTimeout(i),t(e))}).catch(e=>{r||(r=!0,clearTimeout(i),n(e))})})}function Ia(e){return e instanceof Y&&[1,3,5].includes(e.failure.code??0)}var X=class extends Error{code;cause;constructor(e,t,n){super(e),this.code=t,this.cause=n,this.name=`ResourceClientError`}},La=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}},Ra=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=F({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=F({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 za(e,t,n,r){let i=!1,a=()=>{i||(i=!0,n(e,c))},o=null,s=()=>(o||=new Ra(t,async()=>Fa(Aa(e,t.service.ResourceRpc.bind(t.service))).catch(t=>{throw Ia(t)&&r(e),t})),o),c={get resourceId(){return e},get released(){return i},get client(){return i?Ma:s()},createRef(n){if(i)throw new X(`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 Ba=class{service;signal;initState=null;connectionController=null;resourceSession=null;resources=new Map;events=new La;connectionLostEvents=new La;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=Ca(this.signal),n=F({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 Y(a.value.failure);throw a.value.failure.code===2?(this.resetConnection(),new X(`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 Ct(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 Y(e.failure)):i.resolve(e.resourceId??0)}t?.case===`detachAck`&&l(t.value.resourceId??0)}})();return lt(u,c,Ft(),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 X(`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=Ca(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 X(`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 X(`Failed to initialize client connection: ${n.message}`,`CONNECTION_FAILED`,n))}})})}async startConnection(e,t){let n=this.connectionController;if(!n)throw new X(`No connection controller`,`CONNECTION_FAILED`);let r=!1;await Ea(n.signal,async i=>{let a=Ca(i),o=!1,s=!1,c=setTimeout(()=>{o||a.signal.aborted||(s=!0,a.abort())},Na),l=F({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 X(`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 X(Pa,`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 X(`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=za(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(sr);let t=this.resourceSession;if(!t||t.closed||!t.initialized)throw new X(`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 X(`ResourceClient control stream closed`,`CONNECTION_FAILED`)),l=()=>s(Error(sr));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 X&&e.message===Pa||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 X(`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 Va={typeName:`resource.ResourceService`,methods:{ResourceClient:{name:`ResourceClient`,I:pe,O:Fe,kind:r.BiDiStreaming},ResourceRpc:{name:`ResourceRpc`,I:Qe,O:Qe,kind:r.BiDiStreaming},ResourceAttach:{name:`ResourceAttach`,I:c,O:$t,kind:r.BiDiStreaming}}},Ha=Va.typeName;var Ua=class{rpc;service;constructor(e,t){this.service=t?.service||Ha,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,Va.methods.ResourceClient.name,Bt(pe)(e),t||void 0);return M(Fe)(n)}ResourceRpc(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Va.methods.ResourceRpc.name,Bt(Qe)(e),t||void 0);return M(Qe)(n)}ResourceAttach(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Va.methods.ResourceAttach.name,Bt(c)(e),t||void 0);return M($t)(n)}};async function Wa(e){if(!e)throw Error(`A sync storage directory is required`);let t=new _r(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=vn.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:vn.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 Ba(new Ua(new pn(async()=>{if(s)throw s;if(c||u)throw Error(`Sync engine is closed`);let{port1:e,port2:n}=new gr,r=Jt(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:vn.toBinary({kind:2}),port:n},[n]),r})),i.signal),{engine:new Ki(await o.accessRootResource()),resources:o,signal:i.signal,close:f}}catch(e){try{await f()}catch{}throw e}finally{clearTimeout(p)}}var Z=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:()=>{}}})),Ga=n(((e,t)=>{let{EMPTY_BUFFER:n}=Z(),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}})),Ka=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=Ga(),a=Ka(),{kStatusCode:o}=Z(),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)}})),Ja=n(((e,n)=>{let{isUtf8:r}=t(`buffer`),{hasBlob:i}=Z(),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)})})),Ya=n(((e,n)=>{let{Writable:r}=t(`stream`),i=qa(),{BINARY_TYPES:a,EMPTY_BUFFER:o,kStatusCode:s,kWebSocket:c}=Z(),{concat:l,toArrayBuffer:u,unmask:d}=Ga(),{isValidStatusCode:f,isValidUTF8:p}=Ja(),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}}})),Xa=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}=Z(),{isBlob:u,isValidStatusCode:d}=Ja(),{mask:f,toBuffer:p}=Ga(),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)}})),Za=n(((e,t)=>{let{kForOnEventAttribute:n,kListener:r}=Z(),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)}})),Qa=n(((e,t)=>{let{tokenChars:n}=Ja();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}})),$a=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=Ya(),h=Xa(),{isBlob:g}=Ja(),{BINARY_TYPES:_,CLOSE_TIMEOUT:v,EMPTY_BUFFER:y,GUID:ee,kForOnEventAttribute:b,kListener:x,kStatusCode:te,kWebSocket:S,NOOP:ne}=Z(),{EventTarget:{addEventListener:re,removeEventListener:C}}=Za(),{format:ie,parse:ae}=Qa(),{toBuffer:oe}=Ga(),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`,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){D(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){pe(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){pe(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){pe(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){D(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=re,T.prototype.removeEventListener=C,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;E(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?fe:de),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`,()=>{D(e,x,`Opening handshake has timed out`)}),x.on(`error`,t=>{x===null||x[se]||(x=e._req=null,E(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){D(e,x,`Maximum redirects exceeded`);return}x.abort();let i;try{i=new f(a,t)}catch{E(e,SyntaxError(`Invalid URL: ${a}`));return}ue(e,i,n,r)}else e.emit(`unexpected-response`,x,i)||D(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`){D(e,n,`Invalid Upgrade header`);return}let a=l(`sha1`).update(g+ee).digest(`base64`);if(t.headers[`sec-websocket-accept`]!==a){D(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){D(e,n,c);return}s&&(e._protocol=s);let u=t.headers[`sec-websocket-extensions`];if(u!==void 0){if(!b){D(e,n,`Server sent a Sec-WebSocket-Extensions header but no extension was requested`);return}let t;try{t=ae(u)}catch{D(e,n,`Invalid Sec-WebSocket-Extensions header`);return}let r=Object.keys(t);if(r.length!==1||r[0]!==p.extensionName){D(e,n,`Server indicated an extension that was not requested`);return}try{b.accept(t[p.extensionName])}catch{D(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 E(e,t){e._readyState=T.CLOSING,e._errorEmitted=!0,e.emit(`error`,t),e.emitClose()}function de(e){return e.path=e.socketPath,o.connect(e)}function fe(e){return e.path=void 0,!e.servername&&e.servername!==``&&(e.servername=o.isIP(e.host)?``:e.host),s.connect(e)}function D(e,t,n){e._readyState=T.CLOSING;let r=Error(n);Error.captureStackTrace(r,D),t.setHeader?(t[se]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(E,e,r)):(t.destroy(r),t.once(`error`,e.emit.bind(e,`error`)),t.once(`close`,e.emitClose.bind(e)))}function pe(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 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!==T.CLOSED&&(t.readyState===T.OPEN&&(t._readyState=T.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=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`,_e),e._receiver.on(`finish`,_e))}function Te(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`,ne),e&&(e._readyState=T.CLOSING,this.destroy())}})),eo=n(((e,n)=>{$a();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})),to=n(((e,t)=>{let{tokenChars:n}=Ja();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}})),no=n(((e,n)=>{let r=t(`events`),i=t(`http`),{Duplex:a}=t(`stream`),{createHash:o}=t(`crypto`),s=Qa(),c=qa(),l=to(),u=$a(),{CLOSE_TIMEOUT:d,GUID:f,kWebSocket:p}=Z(),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{$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
|
|
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)}}));eo(),Qa(),qa(),Ya(),Xa(),to(),$a();var ro=e(no(),1);let io=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 Q=P({typeName:`sdk.sync.Failure`,fields:[{no:1,name:`code`,kind:`enum`,T:Dt(`sdk.sync.ErrorCode`,io)},{no:2,name:`message`,kind:`scalar`,T:j.STRING},{no:3,name:`request_id`,kind:`scalar`,T:j.STRING}]}),ao=P({typeName:`sdk.sync.HandshakeRequest`,fields:[{no:1,name:`wire_version`,kind:`scalar`,T:j.UINT32},{no:2,name:`application_id`,kind:`scalar`,T:j.STRING},{no:3,name:`application_version`,kind:`scalar`,T:j.UINT32},{no:4,name:`token`,kind:`scalar`,T:j.STRING}]}),oo=P({typeName:`sdk.sync.HandshakeResponse`,fields:[{no:1,name:`error`,kind:`message`,T:Q}]}),so=P({typeName:`sdk.sync.OpenCollectionRequest`,fields:[{no:1,name:`name`,kind:`scalar`,T:j.STRING}]}),co=P({typeName:`sdk.sync.OpenCollectionResponse`,fields:[{no:1,name:`resource_id`,kind:`scalar`,T:j.UINT32},{no:2,name:`error`,kind:`message`,T:Q}]}),lo=P({typeName:`sdk.sync.GetRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:j.STRING}]}),uo=P({typeName:`sdk.sync.GetResponse`,fields:[{no:1,name:`found`,kind:`scalar`,T:j.BOOL},{no:2,name:`data`,kind:`scalar`,T:j.BYTES},{no:3,name:`error`,kind:`message`,T:Q}]}),fo=P({typeName:`sdk.sync.QueryRequest`,fields:[{no:1,name:`prefix`,kind:`scalar`,T:j.STRING}]}),po=P({typeName:`sdk.sync.RecordEntry`,fields:[{no:1,name:`key`,kind:`scalar`,T:j.STRING},{no:2,name:`data`,kind:`scalar`,T:j.BYTES}]}),mo=P({typeName:`sdk.sync.Snapshot`,fields:[{no:1,name:`entries`,kind:`message`,T:po,repeated:!0},{no:2,name:`error`,kind:`message`,T:Q}]}),ho=P({typeName:`sdk.sync.PutRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:j.STRING},{no:2,name:`data`,kind:`scalar`,T:j.BYTES},{no:3,name:`request_id`,kind:`scalar`,T:j.STRING}]}),go=P({typeName:`sdk.sync.DeleteRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:j.STRING},{no:2,name:`request_id`,kind:`scalar`,T:j.STRING}]}),_o=P({typeName:`sdk.sync.Acceptance`,fields:[{no:1,name:`error`,kind:`message`,T:Q}]}),vo=P({typeName:`sdk.sync.MutationRequest`,fields:[{no:1,name:`name`,kind:`scalar`,T:j.STRING},{no:2,name:`input`,kind:`scalar`,T:j.BYTES},{no:3,name:`request_id`,kind:`scalar`,T:j.STRING}]}),yo=P({typeName:`sdk.sync.MutationResponse`,fields:[{no:1,name:`result`,kind:`scalar`,T:j.BYTES},{no:2,name:`error`,kind:`message`,T:Q}]});function $(e){let t=kr(e);return{code:io[t.code],message:t.message,requestId:t.requestId}}function bo(e){try{return z(e??new Uint8Array)}catch{throw new I(`VALIDATION`,`Input must be valid UTF-8 JSON`)}}const xo={typeName:`sdk.sync.Gateway`,methods:{Authenticate:{name:`Authenticate`,I:ao,O:oo,kind:r.Unary}}},So=xo.typeName,Co={typeName:`sdk.sync.Application`,methods:{OpenCollection:{name:`OpenCollection`,I:so,O:co,kind:r.Unary},Mutate:{name:`Mutate`,I:vo,O:yo,kind:r.Unary}}};Co.typeName;const wo={typeName:`sdk.sync.Collection`,methods:{Get:{name:`Get`,I:lo,O:uo,kind:r.Unary},Scan:{name:`Scan`,I:fo,O:mo,kind:r.Unary},Put:{name:`Put`,I:ho,O:_o,kind:r.Unary},Delete:{name:`Delete`,I:go,O:_o,kind:r.Unary},Watch:{name:`Watch`,I:fo,O:mo,kind:r.ServerStreaming}}};wo.typeName;const To=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 Eo(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?To: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 Do(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?To: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 Do(r,t)},createResource(e,t,...n){return new t(this.createRef(e),...n)},release:r,[Symbol.dispose]:r}}var Oo=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 Do(e,this)}getRawAttachedRef(e){let t=this.attachedResources.get(e);if(!t)throw Error(`attached resource ${e} not found`);return Eo(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()}},ko=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 Ao=Cr();function jo(e,t){return wr(e,Ao,new ko(t))}function Mo(e){let t=Tr(e,Ao);if(!t)throw Error(`no resource call in server context`);return t}async function No(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 Po=class{rootResourceMux;clientHandleIDCtr=0;resourceIDCtr=0;clients=new Map;constructor(e){this.rootResourceMux=e??mt()}register(e){e.register(Sn(Va,this))}nextResourceID(){return++this.resourceIDCtr}ResourceClient(e,t){let n=F({objectMode:!0}),r=e[Symbol.asyncIterator]();return(async()=>{let e=await No(r,t);if(e.done||e.value.body?.case!==`init`)throw Error(`expected ResourceClient init`);let i=++this.clientHandleIDCtr,a=new Oo(()=>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 No(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 ja(e[Symbol.asyncIterator](),async e=>{if(!Number.isInteger(e)||e<=0)throw new Y({code:3,message:`invalid resource id`});let t=this.findResource(e);if(!t)throw new Y({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=jo(s,{client:r,parentResourceId:e,serviceId:t,methodId:i});await a(n,o,c)}:null}).rpcStreamHandler})}ResourceAttach(e,t){let n,r=F({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 Ct(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=Fo(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=lt(m,u,Ft(),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 Fo(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 Io(e,t){let n=mt();n.register(Sn(Co,{OpenCollection:async(n,r,i)=>{try{let r=n.name??``;return await e.openCollection(t,r),{resourceId:Mo(i).constructChildResource(n=>({mux:Lo(e,t,r,n),result:void 0})).resourceId}}catch(e){return{error:$(e)}}},Mutate:async(n,r)=>{try{return{result:R(await e.execute(t,{kind:`mutate`,name:n.name??``,input:bo(n.input)},{signal:r,requestId:n.requestId}))}}catch(e){return{error:$(e)}}}}));let r=mt();return new Po(n).register(r),r}function Lo(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?R(o.value):void 0}}catch(e){return{error:$(e)}}},Scan:async(i,a)=>{try{return Ro(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:bo(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 Ro(o)}catch(e){yield{error:$(e)}}}},a=mt();return a.register(Sn(wo,i)),a}function Ro(e){return{entries:e.map(e=>({key:e.key,data:R(e.value)}))}}function zo(e,t,n,r={}){let i=r.path??`/sync`,a=new ro.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)}}));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
|
|
7
7
|
Connection: close\r
|
|
8
8
|
\r
|
|
9
|
-
`);return}a.handleUpgrade(e,c,l,r=>{let i=
|
|
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};
|