spacewave 0.57.13 → 0.57.14
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 +9 -9
- package/dist/build.json +1 -1
- package/dist/chunks/json-CzK0YV3M.mjs +2 -0
- package/dist/chunks/node.pb-C9x5fxb1.mjs +2 -0
- package/dist/engine-worker.mjs +86 -86
- package/dist/index.mjs +1 -1
- package/dist/react.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/json-BuGtLL3Z.mjs +0 -2
- package/dist/chunks/node.pb-cbYXvSyD.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{$n as r,$r as i,A as a,An as o,Ar as s,At as c,B as l,Br as u,Bt as d,Cr as f,Ct as p,D as m,Di as h,Dn as g,Dr as _,Dt as v,En as y,Er as ee,Et as b,Fi as x,Fn as te,Fr as S,Ft as ne,Gi as C,Gr as re,Gt as ie,H as ae,Hn as oe,Hr as se,Ht as ce,In as w,Ir as le,It as T,Jr as ue,Jt as E,Kr as de,Kt as fe,L as D,Ln as O,Lr as pe,Lt as me,M as he,Mn as ge,Mr as _e,Mt as ve,N as ye,Nn as be,Nr as xe,Nt as Se,O as Ce,Oi as k,On as we,Or as Te,Ot as Ee,Pi as De,Pn as Oe,Pr as ke,Pt as Ae,Qn as je,Qr as Me,Qt as Ne,R as Pe,Rn as Fe,Rr as Ie,Rt as Le,S as Re,St as ze,T as Be,Tr as Ve,Tt as He,Un as A,Ur as Ue,Ut as We,V as Ge,Vn as Ke,Vr as qe,Vt as Je,Wn as Ye,Wr as Xe,Wt as Ze,Xn as Qe,Xr as $e,Xt as et,Yn as tt,Yr as nt,Yt as rt,Zn as it,Zr as at,Zt as ot,_ as j,_i as st,_n as ct,_r as lt,_t as ut,a as dt,aa as ft,ai as pt,an as mt,at as ht,b as gt,bi as _t,bn as vt,c as yt,ci as bt,cn as xt,cr as St,ct as Ct,d as wt,di as Tt,dn as Et,dr as Dt,dt as Ot,ei as kt,er as At,et as jt,f as Mt,fi as Nt,fn as Pt,fr as Ft,ft as It,g as Lt,gi as Rt,gn as zt,gr as Bt,gt as Vt,h as Ht,hi as Ut,hn as Wt,hr as Gt,ht as Kt,i as qt,ia as M,ii as Jt,in as Yt,ir as Xt,it as Zt,j as Qt,jn as $t,jr as en,k as N,kn as tn,kr as nn,kt as rn,l as an,li as on,ln as sn,lr as cn,lt as ln,m as P,mi as un,mn as dn,mr as fn,mt as pn,n as mn,na as F,ni as hn,nn as gn,nr as _n,nt as I,o as vn,oi as yn,on as bn,or as xn,ot as L,p as Sn,pi as Cn,pr as wn,pt as Tn,qr as En,qt as Dn,r as On,ra as kn,ri as An,rn as jn,rr as Mn,rt as Nn,s as Pn,si as Fn,sn as In,sr as Ln,st as Rn,t as zn,ti as Bn,tn as Vn,tr as Hn,tt as Un,u as Wn,ui as Gn,un as Kn,ur as qn,ut as Jn,v as Yn,vi as Xn,vn as Zn,vr as Qn,vt as $n,w as er,wr as tr,wt as nr,x as rr,xn as ir,xt as ar,y as or,yi as sr,yn as cr,yr as lr,yt as ur,zr as dr,zt as fr}from"./chunks/node.pb-cbYXvSyD.mjs";import{MessageChannel as pr,Worker as mr}from"node:worker_threads";import{randomUUID as hr}from"node:crypto";import{createServer as gr}from"node:http";const _r=Symbol(`server context parent`),vr=Symbol(`server context key`),yr=Symbol(`server context value`);function br(){return{}}function xr(e,t,n){return{signal:e.signal,[_r]:e,[vr]:t,[yr]:n}}function Sr(e,t){let n=e;for(;n;){if(n[vr]===t)return n[yr];n=n[_r]}}async function Cr(e,t,n){let r=j({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 Tr(r,a,()=>an(a))}async function*wr(e,t){let n=await e.next();if(n.done)throw Error(`closed before init received`);let r=n.value;if(r?.body?.case!==`init`)throw Error(`expected init packet`);let i=null,a;try{i=await t(r.body.value.componentId??``)}catch(e){a=e,a?a.message||(a=Error(`rpc getter failed: ${a}`)):a=Error(`rpc getter failed`)}if(!i&&!a&&(a=Error(`not implemented`)),yield*[{body:{case:`ack`,value:{error:a?.message||``}}}],a)throw a;let o=j({objectMode:!0}),s=new Tr(o,e,()=>an(e));i(s).catch(e=>o.end(e)).then(()=>o.end());for await(let e of o)yield*[e]}var Tr=class{source;sink;_packetRx;_packetTx;_termination=new yt;_cancelRpc;constructor(e,t,n=()=>an(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=Wn(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{an(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{an(e)}})()}};const Er=Symbol.for(`spacewave.SyncError`);var R=class extends Error{code;requestId;name=`SyncError`;[Er]=!0;static[Symbol.hasInstance](e){return e instanceof Error&&Er in e&&e[Er]===!0}constructor(e,t,n){super(t),this.code=e,this.requestId=n}};function Dr(e){return e instanceof R?e:new R(`STORAGE`,`The data operation could not complete`)}function z(e){return Or(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 Or(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)?kr(e,t,n):Ar(e,t,n);return n.pop(),r}function kr(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]=Or(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 Ar(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:Or(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 jr(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:Mr(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:Mr(n)},r)}}function Mr(e){try{return V(B(e))}catch{throw new R(`VALIDATION`,`Input must contain only JSON-compatible values`)}}var Nr=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 Pr=F({typeName:`rpcstream.RpcStreamInit`,fields:[{no:1,name:`component_id`,kind:`scalar`,T:M.STRING}],packedByDefault:!0}),Fr=F({typeName:`rpcstream.RpcAck`,fields:[{no:1,name:`error`,kind:`scalar`,T:M.STRING}],packedByDefault:!0}),U=F({typeName:`rpcstream.RpcStreamPacket`,fields:[{no:1,name:`init`,kind:`message`,T:()=>Pr,oneof:`body`},{no:2,name:`ack`,kind:`message`,T:()=>Fr,oneof:`body`},{no:3,name:`data`,kind:`scalar`,T:M.BYTES,oneof:`body`}],packedByDefault:!0}),Ir={typeName:`kvtx.rpc.Kvtx`,methods:{KvtxTransaction:{name:`KvtxTransaction`,I:D,O:Pe,kind:C.BiDiStreaming},KvtxTransactionRpc:{name:`KvtxTransactionRpc`,I:U,O:U,kind:C.BiDiStreaming},Watch:{name:`Watch`,I:l,O:Ge,kind:C.ServerStreaming}}},Lr=Ir.typeName;var Rr=class{rpc;service;constructor(e,t){this.service=t?.service||Lr,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,Ir.methods.KvtxTransaction.name,Ht(D)(e),t||void 0);return P(Pe)(n)}KvtxTransactionRpc(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Ir.methods.KvtxTransactionRpc.name,Ht(U)(e),t||void 0);return P(U)(n)}Watch(e,t){let n=l.create(e),r=this.rpc.serverStreamingRequest(this.service,Ir.methods.Watch.name,l.toBinary(n),t||void 0);return P(Ge)(r)}};const W={typeName:`kvtx.rpc.KvtxOps`,methods:{KeyCount:{name:`KeyCount`,I:or,O:gt,kind:C.Unary},KeyData:{name:`KeyData`,I:N,O:m,kind:C.Unary},KeyExists:{name:`KeyExists`,I:N,O:Ce,kind:C.Unary},SetKey:{name:`SetKey`,I:he,O:ye,kind:C.Unary},DeleteKey:{name:`DeleteKey`,I:rr,O:Re,kind:C.Unary},ScanPrefix:{name:`ScanPrefix`,I:a,O:Qt,kind:C.ServerStreaming},Iterate:{name:`Iterate`,I:er,O:Be,kind:C.BiDiStreaming}}},zr=W.typeName;var Br=class{rpc;service;constructor(e,t){this.service=t?.service||zr,this.rpc=e,this.KeyCount=this.KeyCount.bind(this),this.KeyData=this.KeyData.bind(this),this.KeyExists=this.KeyExists.bind(this),this.SetKey=this.SetKey.bind(this),this.DeleteKey=this.DeleteKey.bind(this),this.ScanPrefix=this.ScanPrefix.bind(this),this.Iterate=this.Iterate.bind(this)}async KeyCount(e,t){let n=or.create(e),r=await this.rpc.request(this.service,W.methods.KeyCount.name,or.toBinary(n),t||void 0);return gt.fromBinary(r)}async KeyData(e,t){let n=N.create(e),r=await this.rpc.request(this.service,W.methods.KeyData.name,N.toBinary(n),t||void 0);return m.fromBinary(r)}async KeyExists(e,t){let n=N.create(e),r=await this.rpc.request(this.service,W.methods.KeyExists.name,N.toBinary(n),t||void 0);return Ce.fromBinary(r)}async SetKey(e,t){let n=he.create(e),r=await this.rpc.request(this.service,W.methods.SetKey.name,he.toBinary(n),t||void 0);return ye.fromBinary(r)}async DeleteKey(e,t){let n=rr.create(e),r=await this.rpc.request(this.service,W.methods.DeleteKey.name,rr.toBinary(n),t||void 0);return Re.fromBinary(r)}ScanPrefix(e,t){let n=a.create(e),r=this.rpc.serverStreamingRequest(this.service,W.methods.ScanPrefix.name,a.toBinary(n),t||void 0);return P(Qt)(r)}Iterate(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,W.methods.Iterate.name,Ht(er)(e),t||void 0);return P(Be)(n)}},Vr=class extends Error{constructor(){super(`The snapshot exceeds its record or byte limit; use a narrower prefix`),this.name=`KvScanLimitError`}},Hr=class extends H{service;constructor(e){super(e),this.service=new Rr(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 Nr(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 Vr;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 Vr;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=j({objectMode:!0}),r=this.service.KvtxTransaction(n,t)[Symbol.asyncIterator]();n.push({body:{case:`init`,value:{write:e}}});let i=await Wr(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 Ur(n,r,new Br(new Sn(()=>Cr(a,e=>this.service.KvtxTransactionRpc(e,t),!1))))}},Ur=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 Vr;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 Wr(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 Wr(this.responses)}finally{this.requests.end()}}}};async function Wr(e){let t=await e.next();if(t.done)throw Error(`kv/store: transaction stream closed`);return t.value}function Gr(e){return e?`<${e}>`:``}const Kr=`types/`,qr=`<type>`;function Jr(e){return e?Kr+e:``}function Yr(e,t){return{subject:Gr(e),predicate:qr,obj:Gr(Jr(t))}}async function Xr(e,t,n){let r=await e.lookupGraphQuads(Gr(t),qr,void 0,void 0,1,n);if(!r.quads||r.quads.length===0)return``;let i=r.quads[0].obj;if(!i)return Zr(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 Zr(e,t,n){let r=await e.iterateObjects(Kr,!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 Qr(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 $r(e,t,n,r){if(!t||!n)throw Error(`empty object key or type ID`);let i=Yr(t,n),a=await e.lookupGraphQuads(Gr(t),qr,void 0,void 0,void 0,r),o=!1;a.quads&&(o=await Qr(e,a.quads,i.obj,r)),await ei(e,n,r),o||await e.setGraphQuad(i.subject??``,i.predicate??``,i.obj??``,i.label,r)}async function ei(e,t,n){let r=Jr(t),i=await e.getObject(r,n);return i?(i.release(),!1):((await e.createObject(r,{},n)).release(),!0)}var ti=class extends Error{constructor(){super(`The existing object has a different ObjectType`),this.name=`KvObjectTypeError`}};async function ni(e,t,n,r){let i=await e.getObject(t,r);if(i){if(i.release(),await Xr(e,t,r)!==`kv/store`)throw new ti}else{if(!n)return;let i=await e.buildStorageCursor(r);try{let n=await i.putBlock({data:ae.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 $r(e,t,`kv/store`,r)}finally{i.release()}}let a=await e.accessTypedObject(t,r),o=e.resourceRef.createResource(a.resourceId,Hr);if(a.typeId!==`kv/store`)throw o.release(),new ti;return o}const G={typeName:`s4wave.world.EngineResourceService`,methods:{GetEngineInfo:{name:`GetEngineInfo`,I:Ae,O:ne,kind:C.Unary},GetWorldRootSnapshot:{name:`GetWorldRootSnapshot`,I:Ne,O:Xt,kind:C.Unary},WatchWorldRootSnapshots:{name:`WatchWorldRootSnapshots`,I:Hn,O:Xt,kind:C.ServerStreaming},NewTransaction:{name:`NewTransaction`,I:zt,O:ct,kind:C.Unary},ExecuteWorldOp:{name:`ExecuteWorldOp`,I:L,O:Rn,kind:C.Unary},Sync:{name:`Sync`,I:A,O:Ye,kind:C.Unary},GetSeqno:{name:`GetSeqno`,I:et,O:ot,kind:C.Unary},WaitSeqno:{name:`WaitSeqno`,I:r,O:At,kind:C.Unary},BuildStorageCursor:{name:`BuildStorageCursor`,I:Ct,O:ln,kind:C.Unary},AccessWorldState:{name:`AccessWorldState`,I,O:Nn,kind:C.Unary}}},ri=G.typeName;var ii=class{rpc;service;constructor(e,t){this.service=t?.service||ri,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=Ae.create(e),r=await this.rpc.request(this.service,G.methods.GetEngineInfo.name,Ae.toBinary(n),t||void 0);return ne.fromBinary(r)}async GetWorldRootSnapshot(e,t){let n=Ne.create(e),r=await this.rpc.request(this.service,G.methods.GetWorldRootSnapshot.name,Ne.toBinary(n),t||void 0);return Xt.fromBinary(r)}WatchWorldRootSnapshots(e,t){let n=Hn.create(e),r=this.rpc.serverStreamingRequest(this.service,G.methods.WatchWorldRootSnapshots.name,Hn.toBinary(n),t||void 0);return P(Xt)(r)}async NewTransaction(e,t){let n=zt.create(e),r=await this.rpc.request(this.service,G.methods.NewTransaction.name,zt.toBinary(n),t||void 0);return ct.fromBinary(r)}async ExecuteWorldOp(e,t){let n=L.create(e),r=await this.rpc.request(this.service,G.methods.ExecuteWorldOp.name,L.toBinary(n),t||void 0);return Rn.fromBinary(r)}async Sync(e,t){let n=A.create(e),r=await this.rpc.request(this.service,G.methods.Sync.name,A.toBinary(n),t||void 0);return Ye.fromBinary(r)}async GetSeqno(e,t){let n=et.create(e),r=await this.rpc.request(this.service,G.methods.GetSeqno.name,et.toBinary(n),t||void 0);return ot.fromBinary(r)}async WaitSeqno(e,t){let n=r.create(e),i=await this.rpc.request(this.service,G.methods.WaitSeqno.name,r.toBinary(n),t||void 0);return At.fromBinary(i)}async BuildStorageCursor(e,t){let n=Ct.create(e),r=await this.rpc.request(this.service,G.methods.BuildStorageCursor.name,Ct.toBinary(n),t||void 0);return ln.fromBinary(r)}async AccessWorldState(e,t){let n=I.create(e),r=await this.rpc.request(this.service,G.methods.AccessWorldState.name,I.toBinary(n),t||void 0);return Nn.fromBinary(r)}};const K={typeName:`s4wave.world.WorldStateResourceService`,methods:{CompareObjectRecords:{name:`CompareObjectRecords`,I:$n,O:ur,kind:C.Unary},GetReadOnly:{name:`GetReadOnly`,I:fe,O:Dn,kind:C.Unary},Sync:{name:`Sync`,I:A,O:Ye,kind:C.Unary},GetSeqno:{name:`GetSeqno`,I:et,O:ot,kind:C.Unary},WaitSeqno:{name:`WaitSeqno`,I:r,O:At,kind:C.Unary},BuildStorageCursor:{name:`BuildStorageCursor`,I:Ct,O:ln,kind:C.Unary},AccessWorldState:{name:`AccessWorldState`,I,O:Nn,kind:C.Unary},OpenNestedWorld:{name:`OpenNestedWorld`,I:g,O:we,kind:C.Unary},OpenOuterWorld:{name:`OpenOuterWorld`,I:tn,O:o,kind:C.Unary},CreateObject:{name:`CreateObject`,I:ar,O:ze,kind:C.Unary},GetObject:{name:`GetObject`,I:ce,O:We,kind:C.Unary},IterateObjects:{name:`IterateObjects`,I:jn,O:Yt,kind:C.Unary},RenameObject:{name:`RenameObject`,I:be,O:Oe,kind:C.Unary},DeleteObject:{name:`DeleteObject`,I:v,O:Ee,kind:C.Unary},SetGraphQuad:{name:`SetGraphQuad`,I:O,O:Fe,kind:C.Unary},DeleteGraphQuad:{name:`DeleteGraphQuad`,I:He,O:b,kind:C.Unary},LookupGraphQuads:{name:`LookupGraphQuads`,I:dn,O:Wt,kind:C.Unary},LookupGraphQuadsBatch:{name:`LookupGraphQuadsBatch`,I:Et,O:Pt,kind:C.Unary},ListGraphEdgeBuckets:{name:`ListGraphEdgeBuckets`,I:In,O:xt,kind:C.Unary},ListObjectsWithType:{name:`ListObjectsWithType`,I:sn,O:Kn,kind:C.Unary},GetObjectRootRefsBatch:{name:`GetObjectRootRefsBatch`,I:Ze,O:ie,kind:C.Unary},GetObjectMetadataBatch:{name:`GetObjectMetadataBatch`,I:d,O:Je,kind:C.Unary},GetObjectBodiesBatch:{name:`GetObjectBodiesBatch`,I:Le,O:fr,kind:C.ServerStreaming},QueryGraphPath:{name:`QueryGraphPath`,I:$t,O:ge,kind:C.Unary},DeleteGraphObject:{name:`DeleteGraphObject`,I:p,O:nr,kind:C.Unary},ApplyWorldOp:{name:`ApplyWorldOp`,I:L,O:Rn,kind:C.Unary}}},ai=K.typeName;var oi=class{rpc;service;constructor(e,t){this.service=t?.service||ai,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=$n.create(e),r=await this.rpc.request(this.service,K.methods.CompareObjectRecords.name,$n.toBinary(n),t||void 0);return ur.fromBinary(r)}async GetReadOnly(e,t){let n=fe.create(e),r=await this.rpc.request(this.service,K.methods.GetReadOnly.name,fe.toBinary(n),t||void 0);return Dn.fromBinary(r)}async Sync(e,t){let n=A.create(e),r=await this.rpc.request(this.service,K.methods.Sync.name,A.toBinary(n),t||void 0);return Ye.fromBinary(r)}async GetSeqno(e,t){let n=et.create(e),r=await this.rpc.request(this.service,K.methods.GetSeqno.name,et.toBinary(n),t||void 0);return ot.fromBinary(r)}async WaitSeqno(e,t){let n=r.create(e),i=await this.rpc.request(this.service,K.methods.WaitSeqno.name,r.toBinary(n),t||void 0);return At.fromBinary(i)}async BuildStorageCursor(e,t){let n=Ct.create(e),r=await this.rpc.request(this.service,K.methods.BuildStorageCursor.name,Ct.toBinary(n),t||void 0);return ln.fromBinary(r)}async AccessWorldState(e,t){let n=I.create(e),r=await this.rpc.request(this.service,K.methods.AccessWorldState.name,I.toBinary(n),t||void 0);return Nn.fromBinary(r)}async OpenNestedWorld(e,t){let n=g.create(e),r=await this.rpc.request(this.service,K.methods.OpenNestedWorld.name,g.toBinary(n),t||void 0);return we.fromBinary(r)}async OpenOuterWorld(e,t){let n=tn.create(e),r=await this.rpc.request(this.service,K.methods.OpenOuterWorld.name,tn.toBinary(n),t||void 0);return o.fromBinary(r)}async CreateObject(e,t){let n=ar.create(e),r=await this.rpc.request(this.service,K.methods.CreateObject.name,ar.toBinary(n),t||void 0);return ze.fromBinary(r)}async GetObject(e,t){let n=ce.create(e),r=await this.rpc.request(this.service,K.methods.GetObject.name,ce.toBinary(n),t||void 0);return We.fromBinary(r)}async IterateObjects(e,t){let n=jn.create(e),r=await this.rpc.request(this.service,K.methods.IterateObjects.name,jn.toBinary(n),t||void 0);return Yt.fromBinary(r)}async RenameObject(e,t){let n=be.create(e),r=await this.rpc.request(this.service,K.methods.RenameObject.name,be.toBinary(n),t||void 0);return Oe.fromBinary(r)}async DeleteObject(e,t){let n=v.create(e),r=await this.rpc.request(this.service,K.methods.DeleteObject.name,v.toBinary(n),t||void 0);return Ee.fromBinary(r)}async SetGraphQuad(e,t){let n=O.create(e),r=await this.rpc.request(this.service,K.methods.SetGraphQuad.name,O.toBinary(n),t||void 0);return Fe.fromBinary(r)}async DeleteGraphQuad(e,t){let n=He.create(e),r=await this.rpc.request(this.service,K.methods.DeleteGraphQuad.name,He.toBinary(n),t||void 0);return b.fromBinary(r)}async LookupGraphQuads(e,t){let n=dn.create(e),r=await this.rpc.request(this.service,K.methods.LookupGraphQuads.name,dn.toBinary(n),t||void 0);return Wt.fromBinary(r)}async LookupGraphQuadsBatch(e,t){let n=Et.create(e),r=await this.rpc.request(this.service,K.methods.LookupGraphQuadsBatch.name,Et.toBinary(n),t||void 0);return Pt.fromBinary(r)}async ListGraphEdgeBuckets(e,t){let n=In.create(e),r=await this.rpc.request(this.service,K.methods.ListGraphEdgeBuckets.name,In.toBinary(n),t||void 0);return xt.fromBinary(r)}async ListObjectsWithType(e,t){let n=sn.create(e),r=await this.rpc.request(this.service,K.methods.ListObjectsWithType.name,sn.toBinary(n),t||void 0);return Kn.fromBinary(r)}async GetObjectRootRefsBatch(e,t){let n=Ze.create(e),r=await this.rpc.request(this.service,K.methods.GetObjectRootRefsBatch.name,Ze.toBinary(n),t||void 0);return ie.fromBinary(r)}async GetObjectMetadataBatch(e,t){let n=d.create(e),r=await this.rpc.request(this.service,K.methods.GetObjectMetadataBatch.name,d.toBinary(n),t||void 0);return Je.fromBinary(r)}GetObjectBodiesBatch(e,t){let n=Le.create(e),r=this.rpc.serverStreamingRequest(this.service,K.methods.GetObjectBodiesBatch.name,Le.toBinary(n),t||void 0);return P(fr)(r)}async QueryGraphPath(e,t){let n=$t.create(e),r=await this.rpc.request(this.service,K.methods.QueryGraphPath.name,$t.toBinary(n),t||void 0);return ge.fromBinary(r)}async DeleteGraphObject(e,t){let n=p.create(e),r=await this.rpc.request(this.service,K.methods.DeleteGraphObject.name,p.toBinary(n),t||void 0);return nr.fromBinary(r)}async ApplyWorldOp(e,t){let n=L.create(e),r=await this.rpc.request(this.service,K.methods.ApplyWorldOp.name,L.toBinary(n),t||void 0);return Rn.fromBinary(r)}};const si={typeName:`s4wave.world.WatchWorldStateResourceService`,methods:{WatchWorldState:{name:`WatchWorldState`,I:_n,O:Mn,kind:C.ServerStreaming}}},ci=si.typeName;var li=class{rpc;service;constructor(e,t){this.service=t?.service||ci,this.rpc=e,this.WatchWorldState=this.WatchWorldState.bind(this)}WatchWorldState(e,t){let n=_n.create(e),r=this.rpc.serverStreamingRequest(this.service,si.methods.WatchWorldState.name,_n.toBinary(n),t||void 0);return P(Mn)(r)}};const ui={typeName:`s4wave.world.TxResourceService`,methods:{CommitMutations:{name:`CommitMutations`,I:pn,O:Kt,kind:C.Unary},Commit:{name:`Commit`,I:Vt,O:ut,kind:C.Unary},Discard:{name:`Discard`,I:rn,O:c,kind:C.Unary}}},di=ui.typeName;var fi=class{rpc;service;constructor(e,t){this.service=t?.service||di,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=pn.create(e),r=await this.rpc.request(this.service,ui.methods.CommitMutations.name,pn.toBinary(n),t||void 0);return Kt.fromBinary(r)}async Commit(e,t){let n=Vt.create(e),r=await this.rpc.request(this.service,ui.methods.Commit.name,Vt.toBinary(n),t||void 0);return ut.fromBinary(r)}async Discard(e,t){let n=rn.create(e),r=await this.rpc.request(this.service,ui.methods.Discard.name,rn.toBinary(n),t||void 0);return c.fromBinary(r)}};const q={typeName:`s4wave.world.ObjectIteratorResourceService`,methods:{Err:{name:`Err`,I:ve,O:Se,kind:C.Unary},Valid:{name:`Valid`,I:tt,O:Qe,kind:C.Unary},Key:{name:`Key`,I:mt,O:bn,kind:C.Unary},Next:{name:`Next`,I:vt,O:ir,kind:C.Unary},Seek:{name:`Seek`,I:te,O:w,kind:C.Unary},Close:{name:`Close`,I:It,O:Tn,kind:C.Unary}}},pi=q.typeName;var mi=class{rpc;service;constructor(e,t){this.service=t?.service||pi,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=ve.create(e),r=await this.rpc.request(this.service,q.methods.Err.name,ve.toBinary(n),t||void 0);return Se.fromBinary(r)}async Valid(e,t){let n=tt.create(e),r=await this.rpc.request(this.service,q.methods.Valid.name,tt.toBinary(n),t||void 0);return Qe.fromBinary(r)}async Key(e,t){let n=mt.create(e),r=await this.rpc.request(this.service,q.methods.Key.name,mt.toBinary(n),t||void 0);return bn.fromBinary(r)}async Next(e,t){let n=vt.create(e),r=await this.rpc.request(this.service,q.methods.Next.name,vt.toBinary(n),t||void 0);return ir.fromBinary(r)}async Seek(e,t){let n=te.create(e),r=await this.rpc.request(this.service,q.methods.Seek.name,te.toBinary(n),t||void 0);return w.fromBinary(r)}async Close(e,t){let n=It.create(e),r=await this.rpc.request(this.service,q.methods.Close.name,It.toBinary(n),t||void 0);return Tn.fromBinary(r)}};({typeName:`s4wave.world.GraphPathQueryResourceService`,methods:{Next:{name:`Next`,I:Zn,O:cr,kind:C.Unary},Close:{name:`Close`,I:Jn,O:Ot,kind:C.Unary}}}).typeName;const J={typeName:`s4wave.world.ObjectStateResourceService`,methods:{GetKey:{name:`GetKey`,I:T,O:me,kind:C.Unary},GetRootRef:{name:`GetRootRef`,I:E,O:rt,kind:C.Unary},SetRootRef:{name:`SetRootRef`,I:Ke,O:oe,kind:C.Unary},AccessWorldState:{name:`AccessWorldState`,I,O:Nn,kind:C.Unary},ApplyObjectOp:{name:`ApplyObjectOp`,I:Zt,O:ht,kind:C.Unary},IncrementRev:{name:`IncrementRev`,I:Vn,O:gn,kind:C.Unary},WaitRev:{name:`WaitRev`,I:it,O:je,kind:C.Unary}}},hi=J.typeName;var gi=class{rpc;service;constructor(e,t){this.service=t?.service||hi,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=T.create(e),r=await this.rpc.request(this.service,J.methods.GetKey.name,T.toBinary(n),t||void 0);return me.fromBinary(r)}async GetRootRef(e,t){let n=E.create(e),r=await this.rpc.request(this.service,J.methods.GetRootRef.name,E.toBinary(n),t||void 0);return rt.fromBinary(r)}async SetRootRef(e,t){let n=Ke.create(e),r=await this.rpc.request(this.service,J.methods.SetRootRef.name,Ke.toBinary(n),t||void 0);return oe.fromBinary(r)}async AccessWorldState(e,t){let n=I.create(e),r=await this.rpc.request(this.service,J.methods.AccessWorldState.name,I.toBinary(n),t||void 0);return Nn.fromBinary(r)}async ApplyObjectOp(e,t){let n=Zt.create(e),r=await this.rpc.request(this.service,J.methods.ApplyObjectOp.name,Zt.toBinary(n),t||void 0);return ht.fromBinary(r)}async IncrementRev(e,t){let n=Vn.create(e),r=await this.rpc.request(this.service,J.methods.IncrementRev.name,Vn.toBinary(n),t||void 0);return gn.fromBinary(r)}async WaitRev(e,t){let n=it.create(e),r=await this.rpc.request(this.service,J.methods.WaitRev.name,it.toBinary(n),t||void 0);return je.fromBinary(r)}};const _i={typeName:`s4wave.world.TypedObjectResourceService`,methods:{AccessTypedObject:{name:`AccessTypedObject`,I:jt,O:Un,kind:C.Unary}}},vi=_i.typeName;var yi=class{rpc;service;constructor(e,t){this.service=t?.service||vi,this.rpc=e,this.AccessTypedObject=this.AccessTypedObject.bind(this)}async AccessTypedObject(e,t){let n=jt.create(e),r=await this.rpc.request(this.service,_i.methods.AccessTypedObject.name,jt.toBinary(n),t||void 0);return Un.fromBinary(r)}};const Y={typeName:`s4wave.bucket_lookup.BucketLookupCursorResourceService`,methods:{GetRef:{name:`GetRef`,I:Qn,O:lr,kind:C.Unary},FollowRef:{name:`FollowRef`,I:Ft,O:wn,kind:C.Unary},GetBlock:{name:`GetBlock`,I:Bt,O:lt,kind:C.Unary},PutBlock:{name:`PutBlock`,I:Ve,O:ee,kind:C.Unary},PutBlockBatch:{name:`PutBlockBatch`,I:f,O:tr,kind:C.Unary},GetBlockExistsBatch:{name:`GetBlockExistsBatch`,I:fn,O:Gt,kind:C.Unary},BuildTransaction:{name:`BuildTransaction`,I:St,O:cn,kind:C.Unary},BuildTransactionAtRef:{name:`BuildTransactionAtRef`,I:xn,O:Ln,kind:C.Unary},Clone:{name:`Clone`,I:qn,O:Dt,kind:C.Unary},Release:{name:`Release`,I:_,O:Te,kind:C.Unary},Unmarshal:{name:`Unmarshal`,I:nn,O:s,kind:C.Unary}}},bi=Y.typeName;var xi=class{rpc;service;constructor(e,t){this.service=t?.service||bi,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=Qn.create(e),r=await this.rpc.request(this.service,Y.methods.GetRef.name,Qn.toBinary(n),t||void 0);return lr.fromBinary(r)}async FollowRef(e,t){let n=Ft.create(e),r=await this.rpc.request(this.service,Y.methods.FollowRef.name,Ft.toBinary(n),t||void 0);return wn.fromBinary(r)}async GetBlock(e,t){let n=Bt.create(e),r=await this.rpc.request(this.service,Y.methods.GetBlock.name,Bt.toBinary(n),t||void 0);return lt.fromBinary(r)}async PutBlock(e,t){let n=Ve.create(e),r=await this.rpc.request(this.service,Y.methods.PutBlock.name,Ve.toBinary(n),t||void 0);return ee.fromBinary(r)}async PutBlockBatch(e,t){let n=f.create(e),r=await this.rpc.request(this.service,Y.methods.PutBlockBatch.name,f.toBinary(n),t||void 0);return tr.fromBinary(r)}async GetBlockExistsBatch(e,t){let n=fn.create(e),r=await this.rpc.request(this.service,Y.methods.GetBlockExistsBatch.name,fn.toBinary(n),t||void 0);return Gt.fromBinary(r)}async BuildTransaction(e,t){let n=St.create(e),r=await this.rpc.request(this.service,Y.methods.BuildTransaction.name,St.toBinary(n),t||void 0);return cn.fromBinary(r)}async BuildTransactionAtRef(e,t){let n=xn.create(e),r=await this.rpc.request(this.service,Y.methods.BuildTransactionAtRef.name,xn.toBinary(n),t||void 0);return Ln.fromBinary(r)}async Clone(e,t){let n=qn.create(e),r=await this.rpc.request(this.service,Y.methods.Clone.name,qn.toBinary(n),t||void 0);return Dt.fromBinary(r)}async Release(e,t){let n=_.create(e),r=await this.rpc.request(this.service,Y.methods.Release.name,_.toBinary(n),t||void 0);return Te.fromBinary(r)}async Unmarshal(e,t){let n=nn.create(e),r=await this.rpc.request(this.service,Y.methods.Unmarshal.name,nn.toBinary(n),t||void 0);return s.fromBinary(r)}};const X={typeName:`s4wave.block.cursor.BlockCursorResourceService`,methods:{Fetch:{name:`Fetch`,I:re,O:de,kind:C.Unary},SetBlock:{name:`SetBlock`,I:Ut,O:Rt,kind:C.Unary},FollowRef:{name:`FollowRef`,I:En,O:ue,kind:C.Unary},GetRef:{name:`GetRef`,I:An,O:Jt,kind:C.Unary},IsDirty:{name:`IsDirty`,I:pt,O:yn,kind:C.Unary},MarkDirty:{name:`MarkDirty`,I:on,O:Gn,kind:C.Unary},GetBlock:{name:`GetBlock`,I:i,O:kt,kind:C.Unary},Unmarshal:{name:`Unmarshal`,I:sr,O:_t,kind:C.Unary},IsSubBlock:{name:`IsSubBlock`,I:Fn,O:bt,kind:C.Unary},FollowSubBlock:{name:`FollowSubBlock`,I:nt,O:$e,kind:C.Unary},SetAsSubBlock:{name:`SetAsSubBlock`,I:Cn,O:un,kind:C.Unary},ClearRef:{name:`ClearRef`,I:pe,O:Ie,kind:C.Unary},ClearAllRefs:{name:`ClearAllRefs`,I:S,O:le,kind:C.Unary},SetRef:{name:`SetRef`,I:st,O:Xn,kind:C.Unary},GetExistingRef:{name:`GetExistingRef`,I:Bn,O:hn,kind:C.Unary},GetAllRefs:{name:`GetAllRefs`,I:at,O:Me,kind:C.Unary},Detach:{name:`Detach`,I:qe,O:se,kind:C.Unary},DetachTransaction:{name:`DetachTransaction`,I:Ue,O:Xe,kind:C.Unary},DetachRecursive:{name:`DetachRecursive`,I:dr,O:u,kind:C.Unary},Parents:{name:`Parents`,I:Tt,O:Nt,kind:C.Unary}}},Si=X.typeName;var Ci=class{rpc;service;constructor(e,t){this.service=t?.service||Si,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=re.create(e),r=await this.rpc.request(this.service,X.methods.Fetch.name,re.toBinary(n),t||void 0);return de.fromBinary(r)}async SetBlock(e,t){let n=Ut.create(e),r=await this.rpc.request(this.service,X.methods.SetBlock.name,Ut.toBinary(n),t||void 0);return Rt.fromBinary(r)}async FollowRef(e,t){let n=En.create(e),r=await this.rpc.request(this.service,X.methods.FollowRef.name,En.toBinary(n),t||void 0);return ue.fromBinary(r)}async GetRef(e,t){let n=An.create(e),r=await this.rpc.request(this.service,X.methods.GetRef.name,An.toBinary(n),t||void 0);return Jt.fromBinary(r)}async IsDirty(e,t){let n=pt.create(e),r=await this.rpc.request(this.service,X.methods.IsDirty.name,pt.toBinary(n),t||void 0);return yn.fromBinary(r)}async MarkDirty(e,t){let n=on.create(e),r=await this.rpc.request(this.service,X.methods.MarkDirty.name,on.toBinary(n),t||void 0);return Gn.fromBinary(r)}async GetBlock(e,t){let n=i.create(e),r=await this.rpc.request(this.service,X.methods.GetBlock.name,i.toBinary(n),t||void 0);return kt.fromBinary(r)}async Unmarshal(e,t){let n=sr.create(e),r=await this.rpc.request(this.service,X.methods.Unmarshal.name,sr.toBinary(n),t||void 0);return _t.fromBinary(r)}async IsSubBlock(e,t){let n=Fn.create(e),r=await this.rpc.request(this.service,X.methods.IsSubBlock.name,Fn.toBinary(n),t||void 0);return bt.fromBinary(r)}async FollowSubBlock(e,t){let n=nt.create(e),r=await this.rpc.request(this.service,X.methods.FollowSubBlock.name,nt.toBinary(n),t||void 0);return $e.fromBinary(r)}async SetAsSubBlock(e,t){let n=Cn.create(e),r=await this.rpc.request(this.service,X.methods.SetAsSubBlock.name,Cn.toBinary(n),t||void 0);return un.fromBinary(r)}async ClearRef(e,t){let n=pe.create(e),r=await this.rpc.request(this.service,X.methods.ClearRef.name,pe.toBinary(n),t||void 0);return Ie.fromBinary(r)}async ClearAllRefs(e,t){let n=S.create(e),r=await this.rpc.request(this.service,X.methods.ClearAllRefs.name,S.toBinary(n),t||void 0);return le.fromBinary(r)}async SetRef(e,t){let n=st.create(e),r=await this.rpc.request(this.service,X.methods.SetRef.name,st.toBinary(n),t||void 0);return Xn.fromBinary(r)}async GetExistingRef(e,t){let n=Bn.create(e),r=await this.rpc.request(this.service,X.methods.GetExistingRef.name,Bn.toBinary(n),t||void 0);return hn.fromBinary(r)}async GetAllRefs(e,t){let n=at.create(e),r=await this.rpc.request(this.service,X.methods.GetAllRefs.name,at.toBinary(n),t||void 0);return Me.fromBinary(r)}async Detach(e,t){let n=qe.create(e),r=await this.rpc.request(this.service,X.methods.Detach.name,qe.toBinary(n),t||void 0);return se.fromBinary(r)}async DetachTransaction(e,t){let n=Ue.create(e),r=await this.rpc.request(this.service,X.methods.DetachTransaction.name,Ue.toBinary(n),t||void 0);return Xe.fromBinary(r)}async DetachRecursive(e,t){let n=dr.create(e),r=await this.rpc.request(this.service,X.methods.DetachRecursive.name,dr.toBinary(n),t||void 0);return u.fromBinary(r)}async Parents(e,t){let n=Tt.create(e),r=await this.rpc.request(this.service,X.methods.Parents.name,Tt.toBinary(n),t||void 0);return Nt.fromBinary(r)}},wi=class e extends H{service;constructor(e){super(e),this.service=new Ci(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 Ti={typeName:`s4wave.block.transaction.BlockTransactionResourceService`,methods:{Write:{name:`Write`,I:xe,O:ke,kind:C.Unary},GetRootCursor:{name:`GetRootCursor`,I:en,O:_e,kind:C.Unary}}},Ei=Ti.typeName;var Di=class{rpc;service;constructor(e,t){this.service=t?.service||Ei,this.rpc=e,this.Write=this.Write.bind(this),this.GetRootCursor=this.GetRootCursor.bind(this)}async Write(e,t){let n=xe.create(e),r=await this.rpc.request(this.service,Ti.methods.Write.name,xe.toBinary(n),t||void 0);return ke.fromBinary(r)}async GetRootCursor(e,t){let n=en.create(e),r=await this.rpc.request(this.service,Ti.methods.GetRootCursor.name,en.toBinary(n),t||void 0);return _e.fromBinary(r)}},Oi=class extends H{service;constructor(e){super(e),this.service=new Di(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,wi)}};function ki(e){return!!e?.hash?.hash?.length}var Ai=class e extends H{service;constructor(e){super(e),this.service=new xi(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(!ki(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,Oi),cursor:this.resourceRef.createResource(n.cursorResourceId??0,wi)}}async buildTransactionAtRef(e,t){let n=await this.service.BuildTransactionAtRef(e,t);return{transaction:this.resourceRef.createResource(n.transactionResourceId??0,Oi),cursor:this.resourceRef.createResource(n.cursorResourceId??0,wi)}}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 ji=Symbol.for(`spacewave.WorldOperationRejection`);var Mi=class extends Error{code;name=`WorldOperationRejection`;[ji]=!0;static[Symbol.hasInstance](e){return e instanceof Error&&ji in e&&e[ji]===!0}constructor(e,t){super(t||e),this.code=e}};function Ni(e){if(e.rejectionCode)throw new Mi(e.rejectionCode,e.rejectionMessage??``);if(e.errorCode===1)throw Error(`remote world operation unhandled`)}var Pi=class extends H{service;objectKey;constructor(e,t){super(e),this.service=new gi(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,Ai)}async applyObjectOp(e,t,n,r){let i=await this.service.ApplyObjectOp({opTypeId:e,opData:t,opSender:n},r);return Ni(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}}},Fi=class extends H{service;constructor(e){super(e),this.service=new mi(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 Ii(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 Li=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 Ri(this,e)}async getObject(e,t){return await this.performOp(!1,t,async n=>{try{var r=ft();return r.u(await n.getObject(e,t))!==null}catch(e){r.e=e}finally{r.d()}})?new Ri(this,e):null}async iterateObjects(e,t,n){let r=await this.engine.newTransaction(!1,n);try{return new Bi(await r.iterateObjects(e,t,n),r)}catch(e){throw r.release(),e}}async renameObject(e,t,n){let r=Ui(n);return await this.performOp(!0,r.abortSignal,async n=>{(await n.renameObject(e,t,r)).release()}),new Ri(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 Ii(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()}},Ri=class{engineState;objectKey;constructor(e,t){this.engineState=e,this.objectKey=t}getKey(){return this.objectKey}async getRootRef(e){return Ii(this.engineState,!1,e,async t=>{try{var n=ft();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 Ii(this.engineState,!0,t,async n=>{try{var r=ft();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 zi(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 Ii(this.engineState,!0,r,async i=>{try{var a=ft();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 Ii(this.engineState,!0,e,async t=>{try{var n=ft();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 Ii(this.engineState,!1,n,async e=>{try{var r=ft();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](){}},zi=class extends Ai{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()}))}},Bi=class extends Fi{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())}},Vi=class e extends H{service;readOnly;constructor(e,t){super(e),this.service=new oi(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,Ai)}async accessWorldState(e,t){let n=await this.service.AccessWorldState({ref:e},t);return this.resourceRef.createResource(n.resourceId??0,Ai)}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 Li(this.resourceRef.createResource(t.resourceId??0,Wi),!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,Pi,{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,Pi,{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,Fi)}async renameObject(e,t,n){let r=Ui(n),i=await this.service.RenameObject({oldObjectKey:e,newObjectKey:t,descendants:r.descendants},r.abortSignal);return this.resourceRef.createResource(i.resourceId??0,Pi,{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 Ni(i),{seqno:i.seqno??0n,sysErr:i.sysErr??!1}}async accessTypedObject(e,t){let n=await new yi(this.resourceRef.client).AccessTypedObject({objectKey:e},t);return{resourceId:n.resourceId??0,typeId:n.typeId??``}}getDebugInfo(){return{label:this.readOnly?`(read-only)`:void 0}}},Hi=class extends Vi{txService;constructor(e,t){super(e,t),this.txService=new fi(e.client)}async commit(e){await this.txService.Commit({},e)}async discard(e){await this.txService.Discard({},e)}};function Ui(e){return e?e instanceof AbortSignal?{abortSignal:e}:e:{}}var Wi=class extends H{service;watchService;constructor(e){super(e),this.service=new ii(e.client),this.watchService=new li(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,Hi,{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,Ai)}async accessWorldState(e,t){let n=await this.service.AccessWorldState({ref:e},t);return this.resourceRef.createResource(n.resourceId??0,Ai)}async accessTypedObject(e,t){let n=await new yi(this.resourceRef.client).AccessTypedObject({objectKey:e},t);return{resourceId:n.resourceId??0,typeId:n.typeId??``}}watchWorldState(e){return Gi(this.watchService,this.resourceRef,e)}};function Gi(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,Vi),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 Ki(e){return`${qi}${Qi(`application`,e)}/metadata`}const qi=`sync/v1/`,Ji=new TextEncoder;new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0});function Yi(e,t,n){return`${qi}${Qi(`application`,e)}/${Qi(`scope`,t)}/collections/${Qi(`collection`,n)}`}function Xi(e,t){return`${qi}${Qi(`application`,e)}/${Qi(`scope`,t)}/receipts`}function Zi(e){return $i(`record key`,e,1024)}function Qi(e,t){return ea($i(e,t,256))}function $i(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=Ji.encode(t);if(r.length>n)throw TypeError(`invalid ${e}: exceeds ${n} UTF-8 bytes`);return r}function ea(e){let t=``;for(let n of e)t+=(n>>4).toString(16)+(n&15).toString(16);return t}function ta(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 na(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 ra=new TextEncoder,ia=new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0});var aa=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 ni(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(Yi(i,e.scope,n)));return{get:async e=>{let t=ca(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?ca(t):new Uint8Array,r=await c(`read`);return r?(await r.scanRecords(n,{maxRecords:a.maxRecords,maxBytes:a.maxSnapshotBytes},o)).map(e=>({key:ia.decode(e.key),value:V(e.value)})):[]},put:async(e,t)=>{let n=ca(e),r=await c(`write`);if(!this.options.write||!r)throw new R(`DENIED`,`Transaction is read-only`);let i=B(await na(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=ca(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(ra.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(Xi(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 na(n.input,t.input,`Mutation input`),s=await oa({...l,principal:e,scope:e.scope,signal:a},e=>i(e,o));if(f=await na(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(ra.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(Ki(a))).set(ra.encode(`scope/${z(e.scope)}`),B(e.scope),o),await(await this.store(Xi(a,e.scope))).set(ra.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(Xi(this.options.instance,e.scope)),i=ra.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 oa(e,t){return sa(n=>t({...e,...n(e)}))}async function sa(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 ca(e){try{return Zi(e)}catch{throw new R(`VALIDATION`,`Record key must be nonempty UTF-8 within 1024 bytes`)}}async function la(e,t){let n=new Map,r=new Set,i=!0,a=(e,t,r)=>{let i=n.get(e),a=i.records.get(t);a||(a={paths:new Map,shapes:new Map},i.records.set(t,a));let o=(e,t=!0)=>{(t?a.paths:a.shapes).set(JSON.stringify(e),e)};if(r!==void 0)return da(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 ua=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=>!pa(fa(e.before,t),fa(e.after,t)))||r.shapes.some(t=>ma(fa(e.before,t))!==ma(fa(e.after,t))):!1}unknown(e){return this.collections.has(e)}};function da(e,t,n){return typeof e!=`object`||!e?(n(t),e):(n(t,!1),new Proxy(e,{get(e,r,i){if(typeof r!=`string`)return Reflect.get(e,r,i);let a=[...t,r],o=Reflect.get(e,r,i);return typeof o==`function`?o:da(o,a,n)},has(e,r){return n(t),Reflect.has(e,r)},ownKeys(e){return n(t),Reflect.ownKeys(e)},getOwnPropertyDescriptor(e,r){typeof r==`string`&&n([...t,r]);let i=Reflect.getOwnPropertyDescriptor(e,r);return i&&`value`in i&&typeof r==`string`?{...i,value:da(i.value,[...t,r],n)}:i},set(){throw new 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 fa(e,t){let n=e;for(let e of t){if(typeof n!=`object`||!n)return;n=n[e]}return n}function pa(e,t){return e===void 0||t===void 0?e===t:z(e)===z(t)}function ma(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}var ha=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 Wi(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 na(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 Nr(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:Dr(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 aa(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:Yi(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 la(ga(d,a,this.options.limits.maxSnapshotBytes,this.options.limits.maxRecords),n=>e.evaluate(n,V(B(t)))),i=new ua(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})=>Yi(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 Xr(e,r[i],n):``;return{type:a,ref:t.rootRef,signature:`${a}:${Array.from(y.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 ga(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 _a=new TextEncoder,va=new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}),ya=_a.encode(`version`);var ba=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=ta(e.schema),this.instance=e.instance??this.schema.id;try{Xi(this.instance,`schema`);for(let[e,t]of Object.entries(this.schema.collections))if(Yi(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 Wi(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(Ki(this.instance));if(!r)throw Error(`missing metadata store`);let i=await r.get(ya,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(_a.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(ya,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{...jr((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 ha({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 Nr(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:Dr(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=Yi(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 Xr(t,a,r)!==`kv/store`)throw new ti}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,Hr);for await(let e of i.watchRecords(o,{maxRecords:this.limits.maxRecords,maxBytes:this.limits.maxSnapshotBytes},r))yield e.map(e=>({key:va.decode(e.key),value:V(e.value)}))}catch(e){if(e instanceof Vr)throw new R(`QUERY_LIMIT`,e.message);if(!r.aborted)throw Dr(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(Xi(this.instance,e.scope),Zi(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??hr(),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 ti?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 Vr?new R(`QUERY_LIMIT`,t.message):l.aborted?(this.checkPrincipal(e),new R(this.signal.aborted?`CLOSED`:`UNAVAILABLE`,`Operation was canceled`)):Dr(t)}finally{if(await a?.release(),i)try{await i.discard()}catch{}finally{i.release()}}}transaction(e,t,n,r){return new aa(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 Zi(e)}catch{throw new R(`VALIDATION`,`Record key must be nonempty UTF-8 within 1024 bytes`)}}};function xa(e){let t=new AbortController;return e&&(e.aborted?t.abort():e.addEventListener(`abort`,()=>t.abort(),{once:!0})),t}function Sa(e=500){return()=>e}var Ca=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||Sa(),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 wa(e,t,n){return new Ca(t.bind(void 0,e),{...n,abortSignal:e}).result}const Ta=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`)}}),Ea=3e4,Da=`ResourceClient stream did not initialize before timeout`;function Oa(e){return new Promise((t,n)=>{let r=!1,i=setTimeout(()=>{r||(r=!0,n(new Z(Da,`CONNECTION_FAILED`)))},Ea);e.then(e=>{r||(r=!0,clearTimeout(i),t(e))}).catch(e=>{r||(r=!0,clearTimeout(i),n(e))})})}function ka(e){let t=e instanceof Error?e.message:String(e??``);return t.includes(`resource not found`)||t.includes(`invalid resource id`)||t.includes(`resource or client was released`)}var Z=class extends Error{code;cause;constructor(e,t,n){super(e),this.code=t,this.cause=n,this.name=`ResourceClientError`}},Aa=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}},ja=class extends Sn{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=j({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=j({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 Ma(e,t,n,r){let i=!1,a=()=>{i||(i=!0,n(e,c))},o=null,s=()=>(o||=new ja(t,async()=>Oa(Cr(e.toString(),t.service.ResourceRpc.bind(t.service),!0)).catch(t=>{throw ka(t)&&r(e),t})),o),c={get resourceId(){return e},get released(){return i},get client(){return i?Ta: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 Na=class{service;signal;initState=null;connectionController=null;resourceSession=null;resources=new Map;events=new Aa;connectionLostEvents=new Aa;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=xa(this.signal),n=j({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.error){n.end(),t.abort();let e=Error(a.value.error);throw a.value.error===`client not found`?(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 Mt(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 Pn(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.error||n.push({body:{case:`detach`,value:{resourceId:e.resourceId??0}}});continue}e.error?i.reject(Error(e.error)):i.resolve(e.resourceId??0)}t?.case===`detachAck`&&l(t.value.resourceId??0)}})();return Lt(u,c,wt(),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=xa(this.signal),new Promise((e,t)=>{let n=!1,r=()=>{n||(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,t,()=>{n=!0,this.signal.removeEventListener(`abort`,i)}).catch(e=>{r(),n||t(new Z(`Failed to initialize client connection`,`CONNECTION_FAILED`,e instanceof Error?e:Error(String(e))))})})}async startConnection(e,t,n){let r=this.connectionController;if(!r)throw new Z(`No connection controller`,`CONNECTION_FAILED`);await wa(r.signal,async t=>{let i=xa(t),a=!1,o=!1,s=setTimeout(()=>{a||i.signal.aborted||(o=!0,i.abort())},Ea),c=j({objectMode:!0}),l={controller:i,outgoing:c,generation:this._connectionGeneration,initialized:!1,closed:!1,nextControlId:0,acknowledgedControlId:0,controlWaiters:new Set};this.resourceSession=l;let u=()=>{if(l.closed)return;l.closed=!0,c.end();let e=new Z(`ResourceClient control stream closed`,`CONNECTION_FAILED`);for(let t of l.controlWaiters)t.reject(e);l.controlWaiters.clear(),this.resourceSession===l&&(this.resourceSession=null)},d=()=>{throw new Z(Da,`CONNECTION_FAILED`)};try{let r=this.service.ResourceClient((async function*(){yield*c})(),i.signal);c.push({body:{case:`init`,value:{}}});for await(let c of r){if(t.aborted)return;if(i.signal.aborted){o&&d();return}let r=c.body;if(r?.case===`init`){a=!0,l.initialized=!0,s&&clearTimeout(s),s=void 0;let t={clientHandleId:r.value.clientHandleId??0,rootResourceId:r.value.rootResourceId??0};this._reconnectResolve?(this.initState=t,this._reconnectResolve(t),this._reconnectResolve=null,this._reconnectReject=null):this.initState?this.initState=t:(this.initState=t,n(),e(t));continue}if(r?.case===`resourceReleased`){this.handleServerResourceRelease(r.value.resourceId??0);continue}r?.case===`controlAck`&&this.acknowledgeControl(l,r.value.controlId??0)}}catch(e){throw!t.aborted&&o&&d(),e}finally{s&&clearTimeout(s),s=void 0,u(),this.connectionController===r&&!this.disposed&&a&&this.releaseAllResources(`connection-lost`)}if(!this.disposed&&!t.aborted)throw o&&d(),Error(a?`ResourceClient stream closed`:`ResourceClient stream closed before init`)},{errorCb:e=>{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=Ma(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(Yn);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(Yn));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===Da||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 Pa={typeName:`resource.ResourceService`,methods:{ResourceClient:{name:`ResourceClient`,I:De,O:x,kind:C.BiDiStreaming},ResourceRpc:{name:`ResourceRpc`,I:U,O:U,kind:C.BiDiStreaming},ResourceAttach:{name:`ResourceAttach`,I:h,O:k,kind:C.BiDiStreaming}}},Fa=Pa.typeName;var Ia=class{rpc;service;constructor(e,t){this.service=t?.service||Fa,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,Pa.methods.ResourceClient.name,Ht(De)(e),t||void 0);return P(x)(n)}ResourceRpc(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Pa.methods.ResourceRpc.name,Ht(U)(e),t||void 0);return P(U)(n)}ResourceAttach(e,t){let n=this.rpc.bidirectionalStreamingRequest(this.service,Pa.methods.ResourceAttach.name,Ht(h)(e),t||void 0);return P(k)(n)}};async function La(e){if(!e)throw Error(`A sync storage directory is required`);let t=new mr(new URL(`./engine-worker.mjs`,import.meta.url),{workerData:zn.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=mn.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:mn.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 Na(new Ia(new Sn(async()=>{if(s)throw s;if(c||u)throw Error(`Sync engine is closed`);let{port1:e,port2:n}=new pr,r=On(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:mn.toBinary({kind:2}),port:n},[n]),r})),i.signal),{engine:new Wi(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:()=>{}}})),Ra=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])}}}})),Ba=n(((e,n)=>{let r=t(`zlib`),i=Ra(),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)}})),Va=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)})})),Ha=n(((e,n)=>{let{Writable:r}=t(`stream`),i=Ba(),{BINARY_TYPES:a,EMPTY_BUFFER:o,kStatusCode:s,kWebSocket:c}=Q(),{concat:l,toArrayBuffer:u,unmask:d}=Ra(),{isValidStatusCode:f,isValidUTF8:p}=Va(),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}}})),Ua=n(((e,n)=>{let{Duplex:r}=t(`stream`),{randomFillSync:i}=t(`crypto`),{types:{isUint8Array:a}}=t(`util`),o=Ba(),{EMPTY_BUFFER:s,kWebSocket:c,NOOP:l}=Q(),{isBlob:u,isValidStatusCode:d}=Va(),{mask:f,toBuffer:p}=Ra(),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)}})),Wa=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)}})),Ga=n(((e,t)=>{let{tokenChars:n}=Va();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}})),Ka=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=Ba(),m=Ha(),h=Ua(),{isBlob:g}=Va(),{BINARY_TYPES:_,CLOSE_TIMEOUT:v,EMPTY_BUFFER:y,GUID:ee,kForOnEventAttribute:b,kListener:x,kStatusCode:te,kWebSocket:S,NOOP:ne}=Q(),{EventTarget:{addEventListener:C,removeEventListener:re}}=Wa(),{format:ie,parse:ae}=Ga(),{toBuffer:oe}=Ra(),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`,pe),i.on(`drain`,me),i.on(`error`,he),i.on(`message`,_e),i.on(`ping`,ve),i.on(`pong`,ye),a.onerror=xe,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on(`close`,Ce),t.on(`data`,k),t.on(`end`,we),t.on(`error`,Te),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())}),Se(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){O(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){O(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){O(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=C,T.prototype.removeEventListener=re,n.exports=T;function ue(e,t,n,r){let o={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:v,protocolVersion:ce[1],maxBufferedChunks:262144,maxFragments:16384,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:`GET`,host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,e._closeTimeout=o.closeTimeout,!ce.includes(o.protocolVersion))throw RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${ce.join(`, `)})`);let s;if(t instanceof f)s=t;else try{s=new f(t)}catch{throw SyntaxError(`Invalid URL: ${t}`)}s.protocol===`http:`?s.protocol=`ws:`:s.protocol===`https:`&&(s.protocol=`wss:`),e._url=s.href;let u=s.protocol===`wss:`,d=s.protocol===`ws+unix:`,m;if(s.protocol!==`ws:`&&!u&&!d?m=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:d&&!s.pathname?m=`The URL's pathname is empty`:s.hash&&(m=`The URL contains a fragment identifier`),m){let t=SyntaxError(m);if(e._redirects===0)throw t;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 O(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 pe(e,t){let n=this[S];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,n._socket[S]!==void 0&&(n._socket.removeListener(`data`,k),process.nextTick(be,n._socket),e===1005?n.close():n.close(e,t))}function me(){let e=this[S];e.isPaused||e._socket.resume()}function he(e){let t=this[S];t._socket[S]!==void 0&&(t._socket.removeListener(`data`,k),process.nextTick(be,t._socket),t.close(e[te])),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e))}function ge(){this[S].emitClose()}function _e(e,t){this[S].emit(`message`,e,t)}function ve(e){let t=this[S];t._autoPong&&t.pong(e,!this._isServer,ne),t.emit(`ping`,e)}function ye(e){this[S].emit(`pong`,e)}function be(e){e.resume()}function xe(e){let t=this[S];t.readyState!==T.CLOSED&&(t.readyState===T.OPEN&&(t._readyState=T.CLOSING,Se(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit(`error`,e)))}function Se(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),e._closeTimeout)}function Ce(){let e=this[S];if(this.removeListener(`close`,Ce),this.removeListener(`data`,k),this.removeListener(`end`,we),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`,ge),e._receiver.on(`finish`,ge))}function k(e){this[S]._receiver.write(e)||this.pause()}function we(){let e=this[S];e._readyState=T.CLOSING,e._receiver.end(),this.end()}function Te(){let e=this[S];this.removeListener(`error`,Te),this.on(`error`,ne),e&&(e._readyState=T.CLOSING,this.destroy())}})),qa=n(((e,n)=>{Ka();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})),Ja=n(((e,t)=>{let{tokenChars:n}=Va();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}})),Ya=n(((e,n)=>{let r=t(`events`),i=t(`http`),{Duplex:a}=t(`stream`),{createHash:o}=t(`crypto`),s=Ga(),c=Ba(),l=Ja(),u=Ka(),{CLOSE_TIMEOUT:d,GUID:f,kWebSocket:p}=Q(),m=/^[+/0-9A-Za-z]{22}==$/;n.exports=class extends r{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:262144,maxFragments:16384,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:d,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:u,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw TypeError(`One and only one of the "port", "server", or "noServer" options must be specified`);if(e.port==null?e.server&&(this._server=e.server):(this._server=i.createServer((e,t)=>{let n=i.STATUS_CODES[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":`text/plain`}),t.end(n)}),this._server.listen(e.port,e.host,e.backlog,t)),this._server){let e=this.emit.bind(this,`connection`);this._removeListeners=h(this._server,{listening:this.emit.bind(this,`listening`),error:this.emit.bind(this,`error`),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw Error(`The server is operating in "noServer" mode`);return this._server?this._server.address():null}close(e){if(this._state===2){e&&this.once(`close`,()=>{e(Error(`The server is not running`))}),process.nextTick(g,this);return}if(e&&this.once(`close`,e),this._state!==1){if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(g,this);else{let e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close(()=>{g(this)})}}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf(`?`);if((t===-1?e.url:e.url.slice(0,t))!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on(`error`,_);let i=e.headers[`sec-websocket-key`],a=e.headers.upgrade,o=+e.headers[`sec-websocket-version`];if(e.method!==`GET`){y(this,e,t,405,`Invalid HTTP method`);return}if(a===void 0||a.toLowerCase()!==`websocket`){y(this,e,t,400,`Invalid Upgrade header`);return}if(i===void 0||!m.test(i)){y(this,e,t,400,`Missing or invalid Sec-WebSocket-Key header`);return}if(o!==13&&o!==8){y(this,e,t,400,`Missing or invalid Sec-WebSocket-Version header`,{"Sec-WebSocket-Version":`13, 8`});return}if(!this.shouldHandle(e)){v(t,400);return}let u=e.headers[`sec-websocket-protocol`],d=new Set;if(u!==void 0)try{d=l.parse(u)}catch{y(this,e,t,400,`Invalid Sec-WebSocket-Protocol header`);return}let f=e.headers[`sec-websocket-extensions`],p={};if(this.options.perMessageDeflate&&f!==void 0){let n=new c({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let e=s.parse(f);e[c.extensionName]&&(n.accept(e[c.extensionName]),p[c.extensionName]=n)}catch{y(this,e,t,400,`Invalid or unacceptable Sec-WebSocket-Extensions header`);return}}if(this.options.verifyClient){let a={origin:e.headers[`${o===8?`sec-websocket-origin`:`origin`}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(a,(a,o,s,c)=>{if(!a)return v(t,o||401,s,c);this.completeUpgrade(p,i,d,e,t,n,r)});return}if(!this.options.verifyClient(a))return v(t,401)}this.completeUpgrade(p,i,d,e,t,n,r)}completeUpgrade(e,t,n,r,i,a,l){if(!i.readable||!i.writable)return i.destroy();if(i[p])throw Error(`server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration`);if(this._state>0)return v(i,503);let u=[`HTTP/1.1 101 Switching Protocols`,`Upgrade: websocket`,`Connection: Upgrade`,`Sec-WebSocket-Accept: ${o(`sha1`).update(t+f).digest(`base64`)}`],d=new this.options.WebSocket(null,void 0,this.options);if(n.size){let e=this.options.handleProtocols?this.options.handleProtocols(n,r):n.values().next().value;e&&(u.push(`Sec-WebSocket-Protocol: ${e}`),d._protocol=e)}if(e[c.extensionName]){let t=e[c.extensionName].params,n=s.format({[c.extensionName]:[t]});u.push(`Sec-WebSocket-Extensions: ${n}`),d._extensions=e}this.emit(`headers`,u,r),i.write(u.concat(`\r
|
|
1
|
+
import{i as e,r as t,t as n}from"./chunks/rolldown-runtime-Csi-cuKc.mjs";import{$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-C9x5fxb1.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
|
|
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)}}));qa(),Ga(),Ba(),Ha(),Ua(),Ja(),Ka();var Xa=e(Ya(),1);let Za=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 Qa=F({typeName:`sdk.sync.Failure`,fields:[{no:1,name:`code`,kind:`enum`,T:kn(`sdk.sync.ErrorCode`,[[0,`ERROR_CODE_UNSPECIFIED`],[1,`VALIDATION`],[2,`AUTHENTICATION`],[3,`DENIED`],[4,`MISSING_COLLECTION`],[5,`SCHEMA_MISMATCH`],[6,`QUERY_LIMIT`],[7,`CONFLICT`],[8,`UNAVAILABLE`],[9,`UNCERTAIN`],[10,`STORAGE`],[11,`CLOSED`]])},{no:2,name:`message`,kind:`scalar`,T:M.STRING},{no:3,name:`request_id`,kind:`scalar`,T:M.STRING}],packedByDefault:!0}),$a=F({typeName:`sdk.sync.HandshakeRequest`,fields:[{no:1,name:`wire_version`,kind:`scalar`,T:M.UINT32},{no:2,name:`application_id`,kind:`scalar`,T:M.STRING},{no:3,name:`application_version`,kind:`scalar`,T:M.UINT32},{no:4,name:`token`,kind:`scalar`,T:M.STRING}],packedByDefault:!0}),eo=F({typeName:`sdk.sync.HandshakeResponse`,fields:[{no:1,name:`error`,kind:`message`,T:()=>Qa}],packedByDefault:!0}),to=F({typeName:`sdk.sync.OpenCollectionRequest`,fields:[{no:1,name:`name`,kind:`scalar`,T:M.STRING}],packedByDefault:!0}),no=F({typeName:`sdk.sync.OpenCollectionResponse`,fields:[{no:1,name:`resource_id`,kind:`scalar`,T:M.UINT32},{no:2,name:`error`,kind:`message`,T:()=>Qa}],packedByDefault:!0}),ro=F({typeName:`sdk.sync.GetRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:M.STRING}],packedByDefault:!0}),io=F({typeName:`sdk.sync.GetResponse`,fields:[{no:1,name:`found`,kind:`scalar`,T:M.BOOL},{no:2,name:`data`,kind:`scalar`,T:M.BYTES},{no:3,name:`error`,kind:`message`,T:()=>Qa}],packedByDefault:!0}),ao=F({typeName:`sdk.sync.QueryRequest`,fields:[{no:1,name:`prefix`,kind:`scalar`,T:M.STRING}],packedByDefault:!0}),oo=F({typeName:`sdk.sync.RecordEntry`,fields:[{no:1,name:`key`,kind:`scalar`,T:M.STRING},{no:2,name:`data`,kind:`scalar`,T:M.BYTES}],packedByDefault:!0}),so=F({typeName:`sdk.sync.Snapshot`,fields:[{no:1,name:`entries`,kind:`message`,T:()=>oo,repeated:!0},{no:2,name:`error`,kind:`message`,T:()=>Qa}],packedByDefault:!0}),co=F({typeName:`sdk.sync.PutRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:M.STRING},{no:2,name:`data`,kind:`scalar`,T:M.BYTES},{no:3,name:`request_id`,kind:`scalar`,T:M.STRING}],packedByDefault:!0}),lo=F({typeName:`sdk.sync.DeleteRequest`,fields:[{no:1,name:`key`,kind:`scalar`,T:M.STRING},{no:2,name:`request_id`,kind:`scalar`,T:M.STRING}],packedByDefault:!0}),uo=F({typeName:`sdk.sync.Acceptance`,fields:[{no:1,name:`error`,kind:`message`,T:()=>Qa}],packedByDefault:!0}),fo=F({typeName:`sdk.sync.MutationRequest`,fields:[{no:1,name:`name`,kind:`scalar`,T:M.STRING},{no:2,name:`input`,kind:`scalar`,T:M.BYTES},{no:3,name:`request_id`,kind:`scalar`,T:M.STRING}],packedByDefault:!0}),po=F({typeName:`sdk.sync.MutationResponse`,fields:[{no:1,name:`result`,kind:`scalar`,T:M.BYTES},{no:2,name:`error`,kind:`message`,T:()=>Qa}],packedByDefault:!0});function $(e){let t=Dr(e);return{code:Za[t.code],message:t.message,requestId:t.requestId}}function mo(e){try{return V(e??new Uint8Array)}catch{throw new R(`VALIDATION`,`Input must be valid UTF-8 JSON`)}}const ho={typeName:`sdk.sync.Gateway`,methods:{Authenticate:{name:`Authenticate`,I:$a,O:eo,kind:C.Unary}}},go=ho.typeName,_o={typeName:`sdk.sync.Application`,methods:{OpenCollection:{name:`OpenCollection`,I:to,O:no,kind:C.Unary},Mutate:{name:`Mutate`,I:fo,O:po,kind:C.Unary}}};_o.typeName;const vo={typeName:`sdk.sync.Collection`,methods:{Get:{name:`Get`,I:ro,O:io,kind:C.Unary},Scan:{name:`Scan`,I:ao,O:so,kind:C.Unary},Put:{name:`Put`,I:co,O:uo,kind:C.Unary},Delete:{name:`Delete`,I:lo,O:uo,kind:C.Unary},Watch:{name:`Watch`,I:ao,O:so,kind:C.ServerStreaming}}};vo.typeName;const yo=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 bo(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?yo: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 xo(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?yo: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 xo(r,t)},createResource(e,t,...n){return new t(this.createRef(e),...n)},release:r,[Symbol.dispose]:r}}var So=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 xo(e,this)}getRawAttachedRef(e){let t=this.attachedResources.get(e);if(!t)throw Error(`attached resource ${e} not found`);return bo(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()}},Co=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 wo=br();function To(e,t){return xr(e,wo,new Co(t))}function Eo(e){let t=Sr(e,wo);if(!t)throw Error(`no resource call in server context`);return t}async function Do(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 Oo=class{rootResourceMux;clientHandleIDCtr=0;resourceIDCtr=0;clients=new Map;constructor(e){this.rootResourceMux=e??qt()}register(e){e.register(dt(Pa,this))}nextResourceID(){return++this.resourceIDCtr}ResourceClient(e,t){let n=j({objectMode:!0}),r=e[Symbol.asyncIterator]();return(async()=>{let e=await Do(r,t);if(e.done||e.value.body?.case!==`init`)throw Error(`expected ResourceClient init`);let i=++this.clientHandleIDCtr,a=new So(()=>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 Do(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 wr(e[Symbol.asyncIterator](),async e=>{let t=parseInt(e,10);if(isNaN(t)||t<=0)throw Error(`invalid component id format`);let n=this.findResource(t);if(!n)throw Error(`resource or client was released`);let{mux:r,client:i}=n;return new Mt(async(e,n)=>{let a=await r.lookupMethod(e,n);return a?async(r,o,s)=>{let c=To(s,{client:i,parentResourceId:t,serviceId:e,methodId:n});await a(r,o,c)}:null}).rpcStreamHandler})}ResourceAttach(e,t){let n,r=j({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:{error:`client not found`}}});return}t.push({body:{case:`ack`,value:{}}});let l=new AbortController,u=new Pn(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=ko(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,wt(),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 ko(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 Ao(e,t){let n=qt();n.register(dt(_o,{OpenCollection:async(n,r,i)=>{try{let r=n.name??``;return await e.openCollection(t,r),{resourceId:Eo(i).constructChildResource(n=>({mux:jo(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:mo(n.input)},{signal:r,requestId:n.requestId}))}}catch(e){return{error:$(e)}}}}));let r=qt();return new Oo(n).register(r),r}function jo(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 Mo(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:mo(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 Mo(o)}catch(e){yield{error:$(e)}}}},a=qt();return a.register(dt(vo,i)),a}function Mo(e){return{entries:e.map(e=>({key:e.key,data:B(e.value)}))}}function No(e,t,n,r={}){let i=r.path??`/sync`,a=new Xa.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)}}));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
|
|
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=Vo(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 Bo(e,t,n={}){let r=yr((e,t)=>{t.writeHead(404),t.end()}),i=zo(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 Vo(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=mt();f.register(Sn(xo,{Authenticate:async(e,t)=>{try{if(s)throw new I(`AUTHENTICATION`,`This connection already attempted authentication`);if(s=!0,e.wireVersion!==1||e.applicationId!==n.schema.id||e.applicationVersion!==n.schema.version)throw new I(`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=Io(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 I?e:new I(`AUTHENTICATION`,`Authentication failed`))}}}}));let p=new En(async(e,t)=>{let n=e===So?await f.lookupMethod(e,t):o&&e===Va.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 Ct(p,{direction:`inbound`}),h=Rn(e,{remoteAddress:t.socket.remoteAddress,remotePort:t.socket.remotePort}),g=lt(h,m,Ft(),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 Ho=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 Nr((e,n)=>this.application.execute(t,e,n,!0))}attach(e,t){if(this.closing)throw new I(`CLOSED`,`Server is closed`);let n=zo(e,this.application,this.options.authenticate,t);return this.attachments.add(n),this.track(n)}async listen(e){if(this.closing)throw new I(`CLOSED`,`Server is closed`);let t=await Bo(this.application,this.options.authenticate,e);if(this.closing)throw await t.close(),new I(`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 Uo(e){let t,n;try{e.directory!==void 0&&(t=await Wa(e.directory));let r=e.engine??t?.engine;if(!r)throw new I(`VALIDATION`,`A directory or supplied engine is required`);return n=new Sa({...e,engine:r}),await n.initialize(e.migration),new Ho(n,e,t)}catch(e){throw await n?.close(),await t?.close().catch(()=>{}),kr(e)}}const Wo=Uo;export{Wo as createServer};
|