@phpsandbox/sdk 0.0.52 → 0.0.53

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/README.md CHANGED
@@ -220,16 +220,15 @@ await notebook.git.revert({ path: 'README.md' });
220
220
  await notebook.git.revert({ path: 'staged-file.php', staged: true });
221
221
 
222
222
  const fork = await notebook.fork();
223
- const forkCredentials = await fork.git.credentials();
224
223
  const preview = await notebook.git.diff({
225
- url: forkCredentials.url,
226
- token: forkCredentials.token,
224
+ notebookId: fork.data.id,
225
+ token: process.env.PHPSANDBOX_TOKEN,
227
226
  });
228
227
 
229
228
  if (preview.status === 'ready') {
230
229
  const result = await notebook.git.merge({
231
- url: forkCredentials.url,
232
- token: forkCredentials.token,
230
+ notebookId: fork.data.id,
231
+ token: process.env.PHPSANDBOX_TOKEN,
233
232
  expectedBaseRef: preview.baseRef,
234
233
  author: 'PHPSandbox <hi@phpsandbox.io>',
235
234
  message: 'Merge fork into base',
@@ -241,6 +240,8 @@ if (preview.status === 'ready') {
241
240
  }
242
241
  ```
243
242
 
243
+ Use `notebookId` when diffing or merging from another PHPSandbox notebook. Use `url` for external Git remotes. `notebookId`, `url`, and `target` are mutually exclusive.
244
+
244
245
  Fork diff requires the base and fork to share Git history. If they do not, `diff()` returns `status: 'unrelated'`.
245
246
 
246
247
  ### Mail
@@ -3825,10 +3825,10 @@ var Git = class {
3825
3825
  return this.okra.invoke("git.log", { ref });
3826
3826
  }
3827
3827
  diff(input) {
3828
- return this.okra.invoke("git.diff", input);
3828
+ return this.okra.invoke("git.diff", this.normalizeRemoteInput(input));
3829
3829
  }
3830
3830
  merge(input) {
3831
- return this.okra.invoke("git.merge", input);
3831
+ return this.okra.invoke("git.merge", this.normalizeRemoteInput(input));
3832
3832
  }
3833
3833
  conflicts() {
3834
3834
  return this.okra.invoke("git.conflicts", {});
@@ -3860,6 +3860,35 @@ var Git = class {
3860
3860
  status() {
3861
3861
  return this.okra.invoke("git.status", {});
3862
3862
  }
3863
+ normalizeRemoteInput(input) {
3864
+ if (input.notebookId === void 0) {
3865
+ return input;
3866
+ }
3867
+ const notebookId = input.notebookId.trim();
3868
+ if (!notebookId) {
3869
+ throw new Error("'notebookId' cannot be empty.");
3870
+ }
3871
+ if (input.url?.trim()) {
3872
+ throw new Error("Pass either 'url' or 'notebookId', not both.");
3873
+ }
3874
+ if (input.target?.trim()) {
3875
+ throw new Error("Pass either 'target' or 'notebookId', not both.");
3876
+ }
3877
+ const { notebookId: _notebookId, ...payload } = input;
3878
+ return {
3879
+ ...payload,
3880
+ url: this.gitUrlForNotebook(notebookId)
3881
+ };
3882
+ }
3883
+ gitUrlForNotebook(notebookId) {
3884
+ const url = new URL(this.okra.data.gitUrl);
3885
+ url.username = "";
3886
+ url.password = "";
3887
+ url.pathname = `/${encodeURIComponent(notebookId)}.git`;
3888
+ url.search = "";
3889
+ url.hash = "";
3890
+ return url.toString();
3891
+ }
3863
3892
  };
3864
3893
 
3865
3894
  // src/beacon/navigator.ts
@@ -1,5 +1,5 @@
1
- var kt=Object.defineProperty;var et=i=>{throw TypeError(i)};var tt=(i,e)=>{for(var t in e)kt(i,t,{get:e[t],enumerable:!0})};var ke=(i,e,t)=>e.has(i)||et("Cannot "+t);var se=(i,e,t)=>(ke(i,e,"read from private field"),t?t.call(i):e.get(i)),B=(i,e,t)=>e.has(i)?et("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(i):e.set(i,t),xe=(i,e,t,r)=>(ke(i,e,"write to private field"),r?r.call(i,t):e.set(i,t),t),x=(i,e,t)=>(ke(i,e,"access private method"),t);var y=class extends Error{constructor(t,r,n={}){super(r);this.code=t;this.message=r;this.raw=n}},M=class extends y{constructor(e,t={}){super(429,e,t)}},rt=class extends y{};var nt="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var m=(i=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(i|=0));for(;i--;)e+=nt[t[i]&63];return e};var xt=(n=>(n[n.Unknown=0]="Unknown",n[n.File=1]="File",n[n.Directory=2]="Directory",n[n.SymbolicLink=64]="SymbolicLink",n))(xt||{}),Et=(r=>(r[r.UPDATED=2]="UPDATED",r[r.ADDED=4]="ADDED",r[r.DELETED=8]="DELETED",r))(Et||{}),St=(r=>(r[r.UPDATED=1]="UPDATED",r[r.ADDED=2]="ADDED",r[r.DELETED=3]="DELETED",r))(St||{}),It=(s=>(s.Unavailable="Unavailable",s.NoPermissions="NoPermissions",s.FileExists="FileExists",s.FileNotFound="FileNotFound",s.FileIsADirectory="FileIsADirectory",s.FileNotADirectory="FileNotADirectory",s))(It||{}),Ee=class extends y{constructor(t,r){super(t.code,t.message);this.name=r}},Se=class{constructor(e,t){this.disposable=e;this.onDispose=t;this.disposed=!1}dispose(){this.disposed||(this.disposed=!0,this.disposable.dispose(),this.onDispose())}},ae=class{constructor(e){this.okra=e;this.watches=new Map;this.watchOkraConnection()}watchOkraConnection(){this.okra.onDidConnect(()=>{for(let{path:e,options:t}of this.watches.values())this.okra.invoke("fs.watch",{path:e,options:t}).catch(()=>{})})}info(e){return this.okra.invoke("fs.info",{path:e})}write(e,t){return this.okra.invoke("fs.write",{path:e,contents:t})}find(e,t={useIgnoreFiles:!1,followSymlinks:!1,useGlobalIgnoreFiles:!1,useParentIgnoreFiles:!1}){return this.okra.invoke("fs.find",{query:e,options:{includes:[],excludes:["**/storage","**/vendor","**/node_modules","**/.git","**/.svn","**/.hg","**/CVS","**/.DS_Store","**/Thumbs.db","**/*.crswap"],useIgnoreFiles:!1,followSymlinks:!1,useGlobalIgnoreFiles:!1,useParentIgnoreFiles:!1,...t}})}search(e,t,r){e.id||(e.id=m());let n={maxResults:5,afterContext:2,beforeContext:2,includes:[],excludes:["**/.git","**/.svn","**/.hg","**/CVS","**/.DS_Store","**/Thumbs.db","**/*.crswap","**/node_modules","**/vendor","**/bower_components","**/*.code-search"],useIgnoreFiles:!0,followSymlinks:!0,useGlobalIgnoreFiles:!0,useParentIgnoreFiles:!0,encoding:"utf-8",previewOptions:{matchLines:5,charsPerLine:1e3}},o=e.id,s=async c=>{c===!1&&a.dispose(),r&&await Promise.resolve(r(c))===!1&&a.dispose()},a=this.okra.listen(`fs.text.search.${o}`,s);return this.okra.invoke("fs.textSearch",{query:e,options:{...n,...t}}).finally(()=>a.dispose())}mkdir(e){return this.okra.invoke("fs.mkdir",{path:e})}move(e,t){return this.okra.invoke("fs.move",{from:e,to:t})}remove(e,t){return this.okra.invoke("fs.remove",{path:e,type:t})}async readFile(e,t){try{let r=await this.okra.invoke("fs.readFile",{path:e,lineRange:t});return r instanceof Uint8Array?r:typeof r=="string"?new TextEncoder().encode(r):r}catch(r){this.handleError(r)}}tail(e,t=10){return this.okra.invoke("fs.tail",{path:e,lines:t}).catch(r=>this.handleError(r))}writeFile(e,t,r){return this.okra.invoke("fs.writeFile",{path:e,contents:t,options:r}).catch(n=>this.handleError(n))}stat(e){return this.okra.invoke("fs.stat",{path:e}).catch(t=>this.handleError(t))}rename(e,t,r){return this.okra.invoke("fs.rename",{from:e,to:t,options:r}).catch(n=>this.handleError(n))}delete(e,t){return this.okra.invoke("fs.delete",{path:e,options:t}).catch(r=>this.handleError(r))}copy(e,t,r){return this.okra.invoke("fs.copy",{source:e,destination:t,options:r}).catch(n=>this.handleError(n))}readDirectory(e,t=[],r=[]){return this.okra.invoke("fs.readDirectory",{path:e,include:t,exclude:r}).catch(n=>this.handleError(n))}createDirectory(e){return this.okra.invoke("fs.createDirectory",{path:e}).catch(t=>this.handleError(t))}watch(e,t,r){let n=this.okra.listen(`fs.watch.${e}`,r),o={dispose:()=>{n.dispose(),this.okra.invoke("fs.unwatch",{path:e}).catch(()=>{})}},s=new Se(o,()=>{this.watches.get(e)?.onDidChange===r&&this.watches.delete(e)});return this.watches.set(e,{options:t,path:e,onDidChange:r}),this.okra.invoke("fs.watch",{path:e,options:t}).then(()=>s).catch(a=>{throw s.dispose(),a})}exists(e){return this.stat(e).then(()=>!0).catch(()=>!1)}async download(e,t,r){let n=m(),o=!!e,s=[],a=this.okra.listen(`fs.download.${n}`,o?e:c=>{s.push(c)});return this.okra.invoke("fs.download",{id:n,exclude:t,include:r}).then(()=>new Blob(s,{type:"application/octet-stream"})).finally(()=>a.dispose())}tree(e="/"){return this.okra.invoke("fs.tree",{path:e})}handleError(e){throw e instanceof y&&"name"in e.raw?new Ee(e,e.raw.name):e}};var D=class extends Error{constructor(t,r){super(t);this.time=r}},O=class i extends D{static fromPromiseTimeoutError(e){return new i(e.message,e.time)}},E=class extends Error{constructor(t="Notebook is no longer available",r={}){super(t);this.raw=r;this.name="NotebookUnavailableError"}};var ce=(i,e)=>{let t;return Promise.race([i,new Promise((r,n)=>t=setTimeout(n,e,new D("Timeout before promise can resolve",e)))]).finally(()=>clearTimeout(t))},le=i=>{let e=null;return()=>e||(e=i())};var Tt=8,Pt=/[\x00-\x1f\x7f]/,F=class{constructor(e){this.okra=e}list(){return this.okra.invoke("terminal.list")}start(){return this.okra.invoke("terminal.start")}create(e){return this.okra.invoke("terminal.create",e)}onStarted(e){return this.okra.listen("terminal.started",e)}resize(e,t){return this.okra.invoke("terminal.resize",{id:e,width:t[0],height:t[1]})}onOutput(e,t){return this.okra.listen(`terminal.output.${e}`,t)}input(e,t){return Promise.resolve(this.okra.send("terminal.input",{id:e,input:t}))}listen(e,t){return this.okra.listen(e,t)}async attach(e,t){let r=this.processHandle(e,t?.abortSignal);try{let n=await this.okra.invoke("terminal.attach",{id:e,replayHistory:t?.replayHistory},{abortSignal:t?.abortSignal});return n?{...r.process,...n}:(r.dispose(),!1)}catch(n){throw r.dispose(),n}}async spawn(e,t,r){let n=r?.id||m(),o=this.processHandle(n,r?.abortSignal),{abortSignal:s,...a}=r??{};try{let c=await this.okra.invoke("terminal.spawn",{command:[e,...t],opts:{id:n,...a}},{abortSignal:s});return{...o.process,...c}}catch(c){throw o.dispose(),c}}processHandle(e,t){let r=new Set,n,o=()=>{n&&(t?.removeEventListener("abort",n),n=void 0);for(let v of r)v.dispose();r.clear()},s="",a,c=()=>{if(a&&(clearTimeout(a),a=void 0),s==="")return;let v=s;s="",this.input(e,v)},l=()=>{a||(a=setTimeout(c,Tt))},d=v=>{if(s+=v,Pt.test(v)){c();return}l()},u=()=>{c(),o()},g=new WritableStream({write:d,close:u,abort:u}),p=null,f=new ReadableStream({start:v=>{p=v,r.add(this.listen(`terminal.output.${e}`,we=>{p?.enqueue(we.output)}))},cancel:()=>{p=null,u()}}),h=new Promise(v=>{r.add(this.listen(`terminal.close.${e}`,we=>{if(p)try{p.close()}catch{}u(),v(we.exitCode)}))}),k=le(()=>(u(),this.okra.invoke("terminal.close",{id:e}))),wt=v=>{this.okra.invoke("terminal.resize",{id:e,width:v.cols,height:v.rows})};return t&&!t.aborted&&(n=()=>{k()},t.addEventListener("abort",n,{once:!0})),{process:{exit:h,input:g,output:f,kill:k,resize:wt},dispose:u}}};var Dt=(a=>(a.RUNNING="running",a.STOPPED="stopped",a.STARTING="starting",a.STOPPING="stopping",a.KILLED="killed",a.ERROR="error",a.PROVISIONING="provisioning",a))(Dt||{}),W=class{constructor(e){this.okra=e}start(){return this.okra.invoke("container.start")}stop(){return this.okra.invoke("container.stop")}state(){return this.okra.invoke("container.state")}openedPorts(){return this.okra.invoke("container.opened-ports")}setPhp(e){return this.okra.invoke("container.set-php",{version:e})}enableTelemetry(e){return this.okra.invoke("container.stream-telemetry",{features:Array.from(e)})}stopTelemetry(){return this.okra.invoke("container.stop-telemetry")}listen(e,t){return this.okra.listen(e,t)}onPort(e){let t=[];return this.listen("container.ports",r=>{for(let n of r)t.some(o=>o.port===n.port)||e(n,"open");for(let n of t)r.some(o=>o.port===n.port)||e(n,"close");t=r})}};var G=class{constructor(e){this.okra=e}logout(){return this.okra.invoke("auth.logout")}login(e){return this.okra.invoke("auth.login",{newConnectionData:e})}};var $=class{constructor(e){this.okra=e}message(e,t){return this.okra.invoke("lsp.message",{id:e,message:t})}listen(e,t,r){return this.okra.listen(`${t}.${e}`,n=>r(n))}onClose(e,t){return this.listen(e,"lsp.closed",r=>t(r.code,r.reason))}onError(e,t){return this.listen(e,"lsp.error",r=>t(r.message))}onClientDisconnect(e){return this.okra.onDidDisconnect(()=>e(1e3,"OKRA DISCONNECTED"))}onResponse(e,t){return this.listen(e,"lsp.response",r=>t(JSON.stringify(r)))}close(e){return this.okra.invoke("lsp.close",{id:e})}start(e){return this.okra.invoke("lsp.start",{id:e})}connection(e){return Ie.create(e,this)}whenSocketConnected(){return this.okra.whenConnected()}},Ie=class i{constructor(e,t){this.id=e;this.lsp=t}send(e){return this.lsp.message(this.id,e)}onMessage(e){return this.lsp.onResponse(this.id,e)}onError(e){return this.lsp.onError(this.id,e)}onClose(e){return this.lsp.onClose(this.id,e)}dispose(){this.lsp.close(this.id)}start(){this.lsp.start(this.id)}onClientDisconnect(e){return this.lsp.onClientDisconnect(e)}whenSocketConnected(){return this.lsp.whenSocketConnected()}static create(e,t){return new i(e,t)}};var H=class{constructor(e){this.okra=e}invoke(e,t={},r={}){return this.okra.invoke("composer.invoke",{command:e,args:t,options:r})}dumpAutoload(){return this.okra.invoke("composer.dump-autoload")}install(e={}){return this.invoke("install",{},e)}update(e,t={}){return this.invoke("update",e,t)}require(e,t={}){return this.invoke("require",e,t)}remove(e,t={}){return this.invoke("remove",e,t)}stream(e){return this.okra.listen("composer.log",e)}packages(){return this.okra.invoke("composer.packages")}};var K=class{constructor(e){this.okra=e}stream(e){return this.okra.listen("notebook.log",e)}listen(e,t){return this.okra.listen(e,t)}};var z=class{constructor(e){this.okra=e}maintenanceInfo(){return this.okra.invoke("laravel.maintenance.info",{})}toggleMaintenance(e){return this.okra.invoke("laravel.maintenance.toggle",e)}};var q=class{constructor(e){this.okra=e}eval(e,t="",r={prependWith:"",appendWith:""}){return this.okra.invoke("repl.eval",{code:e,args:t,repl:r})}write(e){return this.okra.invoke("repl.write",{input:e})}stop(){return this.okra.invoke("repl.stop")}start(){return this.okra.invoke("repl.start")}resize(e,t){return this.okra.invoke("repl.resize",{cols:e,rows:t})}listen(e,t){return this.okra.listen(e,t)}onOutput(e){return this.okra.listen("repl.output",e)}};function it(i,e=[],t){let r=Array.isArray(e)?e:[],n=Array.isArray(e)?t:e;return{command:Array.isArray(i)?i:r.length>0?[i,...r]:i,opts:n}}var Te=class extends Error{constructor(t,r){super(t);this.output=t;this.exitCode=r}},Pe=class{constructor(e,t){this.output=e;this.exitCode=t}throw(){if(this.exitCode!==0)throw new Te(this.output,this.exitCode);return this}},V=class{constructor(e){this.okra=e}onOutput(e,t){return this.okra.listen(`shell.output.${e}`,t)}listen(e,t){return this.okra.listen(e,t)}async exec(e,t=[],r){let n=it(e,t,r),{abortSignal:o,...s}=n.opts??{},a=await this.okra.invoke("shell.exec",{command:n.command,opts:Object.keys(s).length>0?s:void 0},{abortSignal:o});return new Pe(a.output,a.exitCode)}execStream(e,t=[],r){let n=it(e,t,r),o=n.opts?.id||m(),s=new Set,a=null,c=!1,l=()=>{for(let f of s)f.dispose();s.clear()},d=()=>{if(!c&&(c=!0,l(),a))try{a.close()}catch{}},u=f=>{c||(c=!0,l(),a&&a.error(f))},g=new ReadableStream({start:f=>{a=f,s.add(this.listen(`shell.output.${o}`,h=>{a?.enqueue(h.output)}))},cancel:()=>{c=!0,l()}}),p=this.exec(n.command,{...n.opts,id:o}).then(f=>(d(),f)).catch(f=>{throw u(f),f});return{output:g,result:p}}};var Ct=["redis"],Hr=["start","nginx",...Ct],j=class{constructor(e){this.okra=e}list(){return this.okra.invoke("service.list")}run(e,t){return this.okra.invoke("service.run",{name:e,command:t})}stop(e){return this.okra.invoke("service.stop",{name:e})}onLog(e,t){return this.okra.listen(`service.log.${e}`,t)}listen(e,t){return this.okra.listen(e,t)}logs(e,t={}){return t.follow?this.followLogs(e,t):this.okra.invoke("service.logs",{name:e,tail:t.tail}).then(r=>{if(!("output"in r))throw new Error(`Unexpected service.logs response for ${e}`);return r.output})}followLogs(e,t){let r=t.id||m(),n=new Set,o=null,s=!1,a=()=>{for(let g of n)g.dispose();n.clear()},c=()=>{if(!s&&(s=!0,a(),o))try{o.close()}catch{}},l=g=>{s||(s=!0,a(),o&&o.error(g))},d=le(()=>(c(),this.okra.invoke("service.stop-logs",{id:r}))),u=new ReadableStream({start:g=>{o=g,n.add(this.onLog(r,p=>{o?.enqueue(p.output)})),this.okra.invoke("service.logs",{name:e,tail:t.tail,follow:!0,id:r}).catch(p=>{l(p)})},cancel:()=>{d()}});return{id:r,output:u,stop:d}}};var Q=class{constructor(e){this.okra=e}get(){return this.okra.invoke("config.get")}update(e){return this.okra.invoke("config.update",{config:e})}setPorts(e){return this.okra.invoke("config.set-ports",{ports:e})}};function ot(i){let e=i.length,t=0,r=0;for(;r<e;){let n=i.charCodeAt(r++);if((n&4294967168)===0){t++;continue}else if((n&4294965248)===0)t+=2;else{if(n>=55296&&n<=56319&&r<e){let o=i.charCodeAt(r);(o&64512)===56320&&(++r,n=((n&1023)<<10)+(o&1023)+65536)}(n&4294901760)===0?t+=3:t+=4}}return t}function Nt(i,e,t){let r=i.length,n=t,o=0;for(;o<r;){let s=i.charCodeAt(o++);if((s&4294967168)===0){e[n++]=s;continue}else if((s&4294965248)===0)e[n++]=s>>6&31|192;else{if(s>=55296&&s<=56319&&o<r){let a=i.charCodeAt(o);(a&64512)===56320&&(++o,s=((s&1023)<<10)+(a&1023)+65536)}(s&4294901760)===0?(e[n++]=s>>12&15|224,e[n++]=s>>6&63|128):(e[n++]=s>>18&7|240,e[n++]=s>>12&63|128,e[n++]=s>>6&63|128)}e[n++]=s&63|128}}var Rt=new TextEncoder,At=50;function _t(i,e,t){Rt.encodeInto(i,e.subarray(t))}function st(i,e,t){i.length>At?_t(i,e,t):Nt(i,e,t)}var Ut=4096;function De(i,e,t){let r=e,n=r+t,o=[],s="";for(;r<n;){let a=i[r++];if((a&128)===0)o.push(a);else if((a&224)===192){let c=i[r++]&63;o.push((a&31)<<6|c)}else if((a&240)===224){let c=i[r++]&63,l=i[r++]&63;o.push((a&31)<<12|c<<6|l)}else if((a&248)===240){let c=i[r++]&63,l=i[r++]&63,d=i[r++]&63,u=(a&7)<<18|c<<12|l<<6|d;u>65535&&(u-=65536,o.push(u>>>10&1023|55296),u=56320|u&1023),o.push(u)}else o.push(a);o.length>=Ut&&(s+=String.fromCharCode(...o),o.length=0)}return o.length>0&&(s+=String.fromCharCode(...o)),s}var Lt=new TextDecoder,Bt=200;function Mt(i,e,t){let r=i.subarray(e,e+t);return Lt.decode(r)}function at(i,e,t){return t>Bt?Mt(i,e,t):De(i,e,t)}var C=class{constructor(e,t){this.type=e,this.data=t}};var b=class i extends Error{constructor(e){super(e);let t=Object.create(i.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:i.name})}};function ct(i,e,t){let r=t/4294967296,n=t;i.setUint32(e,r),i.setUint32(e+4,n)}function ue(i,e,t){let r=Math.floor(t/4294967296),n=t;i.setUint32(e,r),i.setUint32(e+4,n)}function pe(i,e){let t=i.getInt32(e),r=i.getUint32(e+4);return t*4294967296+r}function lt(i,e){let t=i.getUint32(e),r=i.getUint32(e+4);return t*4294967296+r}var Ot=-1,Ft=4294967296-1,Wt=17179869184-1;function Gt({sec:i,nsec:e}){if(i>=0&&e>=0&&i<=Wt)if(e===0&&i<=Ft){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,i),t}else{let t=i/4294967296,r=i&4294967295,n=new Uint8Array(8),o=new DataView(n.buffer);return o.setUint32(0,e<<2|t&3),o.setUint32(4,r),n}else{let t=new Uint8Array(12),r=new DataView(t.buffer);return r.setUint32(0,e),ue(r,4,i),t}}function $t(i){let e=i.getTime(),t=Math.floor(e/1e3),r=(e-t*1e3)*1e6,n=Math.floor(r/1e9);return{sec:t+n,nsec:r-n*1e9}}function Ht(i){if(i instanceof Date){let e=$t(i);return Gt(e)}else return null}function Kt(i){let e=new DataView(i.buffer,i.byteOffset,i.byteLength);switch(i.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),r=e.getUint32(4),n=(t&3)*4294967296+r,o=t>>>2;return{sec:n,nsec:o}}case 12:{let t=pe(e,4),r=e.getUint32(0);return{sec:t,nsec:r}}default:throw new b(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${i.length}`)}}function zt(i){let e=Kt(i);return new Date(e.sec*1e3+e.nsec/1e6)}var ut={type:Ot,encode:Ht,decode:zt};var S=class{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(ut)}register({type:e,encode:t,decode:r}){if(e>=0)this.encoders[e]=t,this.decoders[e]=r;else{let n=-1-e;this.builtInEncoders[n]=t,this.builtInDecoders[n]=r}}tryToEncode(e,t){for(let r=0;r<this.builtInEncoders.length;r++){let n=this.builtInEncoders[r];if(n!=null){let o=n(e,t);if(o!=null){let s=-1-r;return new C(s,o)}}}for(let r=0;r<this.encoders.length;r++){let n=this.encoders[r];if(n!=null){let o=n(e,t);if(o!=null){let s=r;return new C(s,o)}}}return e instanceof C?e:null}decode(e,t,r){let n=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return n?n(e,t,r):new C(t,e)}};S.defaultCodec=new S;function qt(i){return i instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&i instanceof SharedArrayBuffer}function X(i){return i instanceof Uint8Array?i:ArrayBuffer.isView(i)?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):qt(i)?new Uint8Array(i):Uint8Array.from(i)}var Vt=100,jt=2048,he=class i{constructor(e){this.entered=!1,this.extensionCodec=e?.extensionCodec??S.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??Vt,this.initialBufferSize=e?.initialBufferSize??jt,this.sortKeys=e?.sortKeys??!1,this.forceFloat32=e?.forceFloat32??!1,this.ignoreUndefined=e?.ignoreUndefined??!1,this.forceIntegerToFloat=e?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new i({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef(e){if(this.entered)return this.clone().encodeSharedRef(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode(e){if(this.entered)return this.clone().encode(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode(e,t){if(t>this.maxDepth)throw new Error(`Too deep objects in depth ${t}`);e==null?this.encodeNil():typeof e=="boolean"?this.encodeBoolean(e):typeof e=="number"?this.forceIntegerToFloat?this.encodeNumberAsFloat(e):this.encodeNumber(e):typeof e=="string"?this.encodeString(e):this.useBigInt64&&typeof e=="bigint"?this.encodeBigInt64(e):this.encodeObject(e,t)}ensureBufferSizeToWrite(e){let t=this.pos+e;this.view.byteLength<t&&this.resizeBuffer(t*2)}resizeBuffer(e){let t=new ArrayBuffer(e),r=new Uint8Array(t),n=new DataView(t);r.set(this.bytes),this.view=n,this.bytes=r}encodeNil(){this.writeU8(192)}encodeBoolean(e){e===!1?this.writeU8(194):this.writeU8(195)}encodeNumber(e){!this.forceIntegerToFloat&&Number.isSafeInteger(e)?e>=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(211),this.writeI64(e)):this.encodeNumberAsFloat(e)}encodeNumberAsFloat(e){this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}encodeBigInt64(e){e>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(e)):(this.writeU8(211),this.writeBigInt64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else if(e<4294967296)this.writeU8(219),this.writeU32(e);else throw new Error(`Too long string: ${e} bytes in UTF-8`)}encodeString(e){let r=ot(e);this.ensureBufferSizeToWrite(5+r),this.writeStringHeader(r),st(e,this.bytes,this.pos),this.pos+=r}encodeObject(e,t){let r=this.extensionCodec.tryToEncode(e,this.context);if(r!=null)this.encodeExtension(r);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else if(typeof e=="object")this.encodeMap(e,t);else throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(e)}`)}encodeBinary(e){let t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else if(t<4294967296)this.writeU8(198),this.writeU32(t);else throw new Error(`Too large binary: ${t}`);let r=X(e);this.writeU8a(r)}encodeArray(e,t){let r=e.length;if(r<16)this.writeU8(144+r);else if(r<65536)this.writeU8(220),this.writeU16(r);else if(r<4294967296)this.writeU8(221),this.writeU32(r);else throw new Error(`Too large array: ${r}`);for(let n of e)this.doEncode(n,t+1)}countWithoutUndefined(e,t){let r=0;for(let n of t)e[n]!==void 0&&r++;return r}encodeMap(e,t){let r=Object.keys(e);this.sortKeys&&r.sort();let n=this.ignoreUndefined?this.countWithoutUndefined(e,r):r.length;if(n<16)this.writeU8(128+n);else if(n<65536)this.writeU8(222),this.writeU16(n);else if(n<4294967296)this.writeU8(223),this.writeU32(n);else throw new Error(`Too large map object: ${n}`);for(let o of r){let s=e[o];this.ignoreUndefined&&s===void 0||(this.encodeString(o),this.doEncode(s,t+1))}}encodeExtension(e){if(typeof e.data=="function"){let r=e.data(this.pos+6),n=r.length;if(n>=4294967296)throw new Error(`Too large extension object: ${n}`);this.writeU8(201),this.writeU32(n),this.writeI8(e.type),this.writeU8a(r);return}let t=e.data.length;if(t===1)this.writeU8(212);else if(t===2)this.writeU8(213);else if(t===4)this.writeU8(214);else if(t===8)this.writeU8(215);else if(t===16)this.writeU8(216);else if(t<256)this.writeU8(199),this.writeU8(t);else if(t<65536)this.writeU8(200),this.writeU16(t);else if(t<4294967296)this.writeU8(201),this.writeU32(t);else throw new Error(`Too large extension object: ${t}`);this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){let t=e.length;this.ensureBufferSizeToWrite(t),this.bytes.set(e,this.pos),this.pos+=t}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),ct(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),ue(this.view,this.pos,e),this.pos+=8}writeBigUint64(e){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,e),this.pos+=8}writeBigInt64(e){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,e),this.pos+=8}};function Ce(i,e){return new he(e).encodeSharedRef(i)}function de(i){return`${i<0?"-":""}0x${Math.abs(i).toString(16).padStart(2,"0")}`}var Qt=16,Xt=16,fe=class{constructor(e=Qt,t=Xt){this.hit=0,this.miss=0,this.maxKeyLength=e,this.maxLengthPerKey=t,this.caches=[];for(let r=0;r<this.maxKeyLength;r++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,r){let n=this.caches[r-1];e:for(let o of n){let s=o.bytes;for(let a=0;a<r;a++)if(s[a]!==e[t+a])continue e;return o.str}return null}store(e,t){let r=this.caches[e.length-1],n={bytes:e,str:t};r.length>=this.maxLengthPerKey?r[Math.random()*r.length|0]=n:r.push(n)}decode(e,t,r){let n=this.find(e,t,r);if(n!=null)return this.hit++,n;this.miss++;let o=De(e,t,r),s=Uint8Array.prototype.slice.call(e,t,t+r);return this.store(s,o),o}};var Ne="array",Z="map_key",ht="map_value",Jt=i=>{if(typeof i=="string"||typeof i=="number")return i;throw new b("The type of key must be string or number but "+typeof i)},Re=class{constructor(){this.stack=[],this.stackHeadPosition=-1}get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){let t=this.getUninitializedStateFromPool();t.type=Ne,t.position=0,t.size=e,t.array=new Array(e)}pushMapState(e){let t=this.getUninitializedStateFromPool();t.type=Z,t.readCount=0,t.size=e,t.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){let e={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push(e)}return this.stack[this.stackHeadPosition]}release(e){if(this.stack[this.stackHeadPosition]!==e)throw new Error("Invalid stack state. Released state is not on top of the stack.");if(e.type===Ne){let r=e;r.size=0,r.array=void 0,r.position=0,r.type=void 0}if(e.type===Z||e.type===ht){let r=e;r.size=0,r.map=void 0,r.readCount=0,r.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}},Y=-1,Ae=new DataView(new ArrayBuffer(0)),Yt=new Uint8Array(Ae.buffer);try{Ae.getInt8(0)}catch(i){if(!(i instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}var pt=new RangeError("Insufficient data"),Zt=new fe,ge=class i{constructor(e){this.totalPos=0,this.pos=0,this.view=Ae,this.bytes=Yt,this.headByte=Y,this.stack=new Re,this.entered=!1,this.extensionCodec=e?.extensionCodec??S.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.rawStrings=e?.rawStrings??!1,this.maxStrLength=e?.maxStrLength??4294967295,this.maxBinLength=e?.maxBinLength??4294967295,this.maxArrayLength=e?.maxArrayLength??4294967295,this.maxMapLength=e?.maxMapLength??4294967295,this.maxExtLength=e?.maxExtLength??4294967295,this.keyDecoder=e?.keyDecoder!==void 0?e.keyDecoder:Zt,this.mapKeyConverter=e?.mapKeyConverter??Jt}clone(){return new i({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=Y,this.stack.reset()}setBuffer(e){let t=X(e);this.bytes=t,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength),this.pos=0}appendBuffer(e){if(this.headByte===Y&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),r=X(e),n=new Uint8Array(t.length+r.length);n.set(t),n.set(r,t.length),this.setBuffer(n)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:r}=this;return new RangeError(`Extra ${t.byteLength-r} of ${t.byteLength} byte(s) found at buffer[${e}]`)}decode(e){if(this.entered)return this.clone().decode(e);try{this.entered=!0,this.reinitializeState(),this.setBuffer(e);let t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t}finally{this.entered=!1}}*decodeMulti(e){if(this.entered){yield*this.clone().decodeMulti(e);return}try{for(this.entered=!0,this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(e){if(this.entered)return this.clone().decodeAsync(e);try{this.entered=!0;let t=!1,r;for await(let a of e){if(t)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{r=this.doDecodeSync(),t=!0}catch(c){if(!(c instanceof RangeError))throw c}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return r}let{headByte:n,pos:o,totalPos:s}=this;throw new RangeError(`Insufficient data in parsing ${de(n)} at ${s} (${o} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,t){if(this.entered){yield*this.clone().decodeMultiAsync(e,t);return}try{this.entered=!0;let r=t,n=-1;for await(let o of e){if(t&&n===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(o),r&&(n=this.readArraySize(),r=!1,this.complete());try{for(;yield this.doDecodeSync(),--n!==0;);}catch(s){if(!(s instanceof RangeError))throw s}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){e:for(;;){let e=this.readHeadByte(),t;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){let n=e-128;if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e<160){let n=e-144;if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else{let n=e-160;t=this.decodeString(n,0)}else if(e===192)t=null;else if(e===194)t=!1;else if(e===195)t=!0;else if(e===202)t=this.readF32();else if(e===203)t=this.readF64();else if(e===204)t=this.readU8();else if(e===205)t=this.readU16();else if(e===206)t=this.readU32();else if(e===207)this.useBigInt64?t=this.readU64AsBigInt():t=this.readU64();else if(e===208)t=this.readI8();else if(e===209)t=this.readI16();else if(e===210)t=this.readI32();else if(e===211)this.useBigInt64?t=this.readI64AsBigInt():t=this.readI64();else if(e===217){let n=this.lookU8();t=this.decodeString(n,1)}else if(e===218){let n=this.lookU16();t=this.decodeString(n,2)}else if(e===219){let n=this.lookU32();t=this.decodeString(n,4)}else if(e===220){let n=this.readU16();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===221){let n=this.readU32();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===222){let n=this.readU16();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===223){let n=this.readU32();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===196){let n=this.lookU8();t=this.decodeBinary(n,1)}else if(e===197){let n=this.lookU16();t=this.decodeBinary(n,2)}else if(e===198){let n=this.lookU32();t=this.decodeBinary(n,4)}else if(e===212)t=this.decodeExtension(1,0);else if(e===213)t=this.decodeExtension(2,0);else if(e===214)t=this.decodeExtension(4,0);else if(e===215)t=this.decodeExtension(8,0);else if(e===216)t=this.decodeExtension(16,0);else if(e===199){let n=this.lookU8();t=this.decodeExtension(n,1)}else if(e===200){let n=this.lookU16();t=this.decodeExtension(n,2)}else if(e===201){let n=this.lookU32();t=this.decodeExtension(n,4)}else throw new b(`Unrecognized type byte: ${de(e)}`);this.complete();let r=this.stack;for(;r.length>0;){let n=r.top();if(n.type===Ne)if(n.array[n.position]=t,n.position++,n.position===n.size)t=n.array,r.release(n);else continue e;else if(n.type===Z){if(t==="__proto__")throw new b("The key __proto__ is not allowed");n.key=this.mapKeyConverter(t),n.type=ht;continue e}else if(n.map[n.key]=t,n.readCount++,n.readCount===n.size)t=n.map,r.release(n);else{n.key=null,n.type=Z;continue e}}return t}}readHeadByte(){return this.headByte===Y&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=Y}readArraySize(){let e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:{if(e<160)return e-144;throw new b(`Unrecognized array type byte: ${de(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new b(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new b(`Max length exceeded: array length (${e}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState(e)}decodeString(e,t){return!this.rawStrings||this.stateIsMapKey()?this.decodeUtf8String(e,t):this.decodeBinary(e,t)}decodeUtf8String(e,t){if(e>this.maxStrLength)throw new b(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw pt;let r=this.pos+t,n;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?n=this.keyDecoder.decode(this.bytes,r,e):n=at(this.bytes,r,e),this.pos+=t+e,n}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===Z:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new b(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw pt;let r=this.pos+t,n=this.bytes.subarray(r,r+e);return this.pos+=t+e,n}decodeExtension(e,t){if(e>this.maxExtLength)throw new b(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let r=this.view.getInt8(this.pos+t),n=this.decodeBinary(e,t+1);return this.extensionCodec.decode(n,r,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){let e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){let e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){let e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){let e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){let e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){let e=lt(this.view,this.pos);return this.pos+=8,e}readI64(){let e=pe(this.view,this.pos);return this.pos+=8,e}readU64AsBigInt(){let e=this.view.getBigUint64(this.pos);return this.pos+=8,e}readI64AsBigInt(){let e=this.view.getBigInt64(this.pos);return this.pos+=8,e}readF32(){let e=this.view.getFloat32(this.pos);return this.pos+=4,e}readF64(){let e=this.view.getFloat64(this.pos);return this.pos+=8,e}};function _e(i,e){return new ge(e).decode(i)}var me=class{constructor(e){this.error=e}},er=i=>new Promise(e=>{setTimeout(e,i)}),tr=(i,e)=>{let t=e.randomize?Math.random()+1:1,r=Math.max(e.minTimeout,1)*Math.pow(e.factor,i-1);return Math.round(Math.min(t*r,e.maxTimeout))};async function ee(i,e={}){let t={retries:e.retries??10,minTimeout:e.minTimeout??1e3,maxTimeout:e.maxTimeout??1/0,factor:e.factor??2,randomize:e.randomize??!0},r=o=>{throw new me(o??new Error("Aborted"))},n;for(let o=1;o<=t.retries+1;o++)try{return await i(r,o)}catch(s){if(s instanceof me)throw s.error;if(n=s,o>t.retries)throw s;await e.onRetry?.(s,o),await er(tr(o,t))}throw n}var Be={};tt(Be,{default:()=>Le});var Ue=function(i,e){return Ue=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},Ue(i,e)};function dt(i,e){Ue(i,e);function t(){this.constructor=i}i.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function rr(i){var e=typeof Symbol=="function"&&i[Symbol.iterator],t=0;return e?e.call(i):{next:function(){return i&&t>=i.length&&(i=void 0),{value:i&&i[t++],done:!i}}}}function nr(i,e){var t=typeof Symbol=="function"&&i[Symbol.iterator];if(!t)return i;var r=t.call(i),n,o=[],s;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)o.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(s)throw s.error}}return o}function ir(){for(var i=[],e=0;e<arguments.length;e++)i=i.concat(nr(arguments[e]));return i}var ft=(function(){function i(e,t){this.target=t,this.type=e}return i})(),or=(function(i){dt(e,i);function e(t,r){var n=i.call(this,"error",r)||this;return n.message=t.message,n.error=t,n}return e})(ft),sr=(function(i){dt(e,i);function e(t,r,n){t===void 0&&(t=1e3),r===void 0&&(r="");var o=i.call(this,"close",n)||this;return o.wasClean=!0,o.code=t,o.reason=r,o}return e})(ft);var ar=function(){if(typeof WebSocket<"u")return WebSocket},cr=function(i){return typeof i<"u"&&!!i&&i.CLOSING===2},N={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},lr=(function(){function i(e,t,r){var n=this;r===void 0&&(r={}),this._listeners={error:[],message:[],open:[],close:[]},this._retryCount=-1,this._shouldReconnect=!0,this._connectLock=!1,this._binaryType="blob",this._closeCalled=!1,this._messageQueue=[],this.onclose=null,this.onerror=null,this.onmessage=null,this.onopen=null,this._handleOpen=function(o){n._debug("open event");var s=n._options.minUptime,a=s===void 0?N.minUptime:s;clearTimeout(n._connectTimeout),n._uptimeTimeout=setTimeout(function(){return n._acceptOpen()},a),n._ws.binaryType=n._binaryType,n._messageQueue.forEach(function(c){return n._ws.send(c)}),n._messageQueue=[],n.onopen&&n.onopen(o),n._listeners.open.forEach(function(c){return n._callEventListener(o,c)})},this._handleMessage=function(o){n._debug("message event"),n.onmessage&&n.onmessage(o),n._listeners.message.forEach(function(s){return n._callEventListener(o,s)})},this._handleError=function(o){n._debug("error event",o.message),n._disconnect(void 0,o.message==="TIMEOUT"?"timeout":void 0),n.onerror&&n.onerror(o),n._debug("exec error listeners"),n._listeners.error.forEach(function(s){return n._callEventListener(o,s)}),n._connect()},this._handleClose=function(o){n._debug("close event"),n._clearTimeouts(),n._shouldReconnect&&n._connect(),n.onclose&&n.onclose(o),n._listeners.close.forEach(function(s){return n._callEventListener(o,s)})},this._url=e,this._protocols=t,this._options=r,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(i,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(i,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(i,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(i,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CONNECTING",{get:function(){return i.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"OPEN",{get:function(){return i.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CLOSING",{get:function(){return i.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CLOSED",{get:function(){return i.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"binaryType",{get:function(){return this._ws?this._ws.binaryType:this._binaryType},set:function(e){this._binaryType=e,this._ws&&(this._ws.binaryType=e)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"bufferedAmount",{get:function(){var e=this._messageQueue.reduce(function(t,r){return typeof r=="string"?t+=r.length:r instanceof Blob?t+=r.size:t+=r.byteLength,t},0);return e+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?i.CLOSED:i.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),i.prototype.close=function(e,t){if(e===void 0&&(e=1e3),this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(e,t)},i.prototype.reconnect=function(e,t){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(e,t),this._connect())},i.prototype.send=function(e){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",e),this._ws.send(e);else{var t=this._options.maxEnqueuedMessages,r=t===void 0?N.maxEnqueuedMessages:t;this._messageQueue.length<r&&(this._debug("enqueue",e),this._messageQueue.push(e))}},i.prototype.addEventListener=function(e,t){this._listeners[e]&&this._listeners[e].push(t)},i.prototype.dispatchEvent=function(e){var t,r,n=this._listeners[e.type];if(n)try{for(var o=rr(n),s=o.next();!s.done;s=o.next()){var a=s.value;this._callEventListener(e,a)}}catch(c){t={error:c}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return!0},i.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter(function(r){return r!==t}))},i.prototype._debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._options.debug&&console.log.apply(console,ir(["RWS>"],e))},i.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,r=t===void 0?N.reconnectionDelayGrowFactor:t,n=e.minReconnectionDelay,o=n===void 0?N.minReconnectionDelay:n,s=e.maxReconnectionDelay,a=s===void 0?N.maxReconnectionDelay:s,c=0;return this._retryCount>0&&(c=o*Math.pow(r,this._retryCount-1),c>a&&(c=a)),this._debug("next delay",c),c},i.prototype._wait=function(){var e=this;return new Promise(function(t){setTimeout(t,e._getNextDelay())})},i.prototype._getNextUrl=function(e){if(typeof e=="string")return Promise.resolve(e);if(typeof e=="function"){var t=e();if(typeof t=="string")return Promise.resolve(t);if(t.then)return t}throw Error("Invalid URL")},i.prototype._connect=function(){var e=this;if(!(this._connectLock||!this._shouldReconnect)){this._connectLock=!0;var t=this._options,r=t.maxRetries,n=r===void 0?N.maxRetries:r,o=t.connectionTimeout,s=o===void 0?N.connectionTimeout:o,a=t.WebSocket,c=a===void 0?ar():a;if(this._retryCount>=n){this._debug("max retries reached",this._retryCount,">=",n);return}if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),!cr(c))throw Error("No valid WebSocket class provided");this._wait().then(function(){return e._getNextUrl(e._url)}).then(function(l){e._closeCalled||(e._debug("connect",{url:l,protocols:e._protocols}),e._ws=e._protocols?new c(l,e._protocols):new c(l),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout(function(){return e._handleTimeout()},s))})}},i.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new or(Error("TIMEOUT"),this))},i.prototype._disconnect=function(e,t){if(e===void 0&&(e=1e3),this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(e,t),this._handleClose(new sr(e,t,this))}catch{}}},i.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},i.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},i.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},i.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},i.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},i})(),Le=lr;var ur=i=>{if(typeof i=="number")return{0:"CONNECTING",1:"OPEN",2:"CLOSING",3:"CLOSED"}[i]??`STATE_${i}`},pr=i=>{try{let e=new URL(i);return`${e.origin}${e.pathname}`}catch{return i}},gt=i=>{if(i instanceof Error)return i.message?`${i.name}: ${i.message}`:i.name;if(typeof i=="string")return i;if(!i||typeof i!="object")return;let e=i,t=typeof e.message=="string"&&e.message?e.message:typeof e.reason=="string"&&e.reason?e.reason:void 0;if(!t)return;let r=typeof e.name=="string"&&e.name?e.name:void 0;return r?`${r}: ${t}`:t},be=i=>{if(i instanceof Error)return i.message?`${i.name}: ${i.message}`:i.name;if(typeof i=="string")return i;if(!i||typeof i!="object")return String(i);let e=i,t=[],r=gt(e);r&&t.push(r);let n=gt(e.error);n&&n!==r&&t.push(`error=${n}`),typeof e.type=="string"&&e.type&&t.push(`type=${e.type}`),typeof e.code=="number"&&t.push(`code=${e.code}`),typeof e.reason=="string"&&e.reason&&e.reason!==r&&t.push(`reason=${e.reason}`),typeof e.wasClean=="boolean"&&t.push(`wasClean=${e.wasClean}`);let o=e.target??e.currentTarget;if(o&&typeof o=="object"){typeof o.url=="string"&&o.url&&t.push(`url=${pr(o.url)}`);let s=ur(o.readyState);s&&t.push(`readyState=${s}`)}return t.length>0?t.join(" | "):"Unknown websocket event"};var U=null;typeof WebSocket<"u"?U=WebSocket:typeof MozWebSocket<"u"?U=MozWebSocket:typeof global<"u"?U=global.WebSocket||global.MozWebSocket:typeof window<"u"?U=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(U=self.WebSocket||self.MozWebSocket);var mt=U;var ve=class{constructor(){this.disposables=new Map}add(e,t){this.disposables.has(e)&&(console.warn(`Disposable with key "${e}" already exists. Disposing the old one.`),this.disposables.get(e)?.dispose()),typeof t=="function"&&(t=t()),this.disposables.set(e,t)}dispose(){this.disposables.forEach(e=>e.dispose()),this.disposables.clear()}};var hr=Le??Be;var Me=class extends Error{constructor(e="WebSocket connection timeout"){super(e),this.name="ConnectionTimeoutError"}},te=class extends Error{constructor(t,r){super(t);this.originalError=r;this.name="ConnectionFailedError"}},R=class extends Error{constructor(t,r){super(t);this.data=r;this.name="InvalidMessageError"}},A=class extends Error{constructor(e){super(e),this.name="InvalidConfigurationError"}},I,Oe,Fe,re=class{constructor(e,t,r={}){this.eventEmitter=t;this.options=r;B(this,I);this.clientId="";this.closed=!1;this.disposables=new ve;this.connectPromise=null;this.terminalError=null;this.pingIntervalStarted=!1;this.incomingMessageChain=Promise.resolve();this.validateConfiguration(r),this.url=new URL(e),this.PING_INTERVAL=r.pingInterval??3e4,this.CONNECT_WAIT_TIMEOUT=r.connectWaitTimeout??3e4;let n=r.startClosed!==!1;this.rws=new hr(this.url.toString(),[],{WebSocket:r.webSocket??globalThis.WebSocket??mt,connectionTimeout:r.connectionTimeout,maxReconnectionDelay:2e3,minReconnectionDelay:200,maxEnqueuedMessages:0,maxRetries:r.maxRetries??50,startClosed:n}),this.log("debug","Transport initialized",{url:this.url.toString(),options:r}),this.registerWatchers()}validateConfiguration(e){if(e.pingInterval!==void 0&&(e.pingInterval<1e3||e.pingInterval>3e5))throw new A("pingInterval must be between 1000ms and 300000ms");if(e.connectionTimeout!==void 0&&(e.connectionTimeout<100||e.connectionTimeout>3e4))throw new A("connectionTimeout must be between 100ms and 30000ms");if(e.connectWaitTimeout!==void 0&&(e.connectWaitTimeout<1e3||e.connectWaitTimeout>3e5))throw new A("connectWaitTimeout must be between 1000ms and 300000ms");if(e.maxRetries!==void 0&&(e.maxRetries<0||e.maxRetries>100))throw new A("maxRetries must be between 0 and 100")}log(e,t,r){if(this.options.debug){let n=new Date().toISOString(),o=r?JSON.stringify(r,null,2):"";console[e](`[Transport ${n}] ${t}${o?`
2
- `+o:""}`)}}connect(){return this.terminalError?Promise.reject(this.terminalError):x(this,I,Oe).call(this)}id(){return this.clientId}async registerWatchers(){let e=t=>{this.incomingMessageChain=this.incomingMessageChain.catch(()=>{}).then(()=>this.processIncomingMessage(t)).catch(r=>{this.log("error","Failed to process queued WebSocket frame",{error:r instanceof Error?r.message:String(r)}),this.eventEmitter.emit("transport.error",{type:"message_handle_error",error:r,rawMessage:t.data,timestamp:Date.now()})})};this.rws.addEventListener("message",e),this.disposables.add("message",{dispose:()=>{this.rws.removeEventListener("message",e)}})}async processIncomingMessage(e){let t;try{t=await this.toArrayBuffer(e.data)}catch(n){this.log("error","Unexpected WebSocket message type",{error:n instanceof Error?n.message:String(n),messageType:typeof e.data}),this.eventEmitter.emit("transport.error",{type:"message_type_error",error:n,rawMessage:e.data,timestamp:Date.now()});return}if(t.byteLength===0){this.log("warn","Ignoring empty WebSocket frame");return}let r;try{r=_e(t)}catch(n){this.log("error","Failed to decode WebSocket frame",{error:n instanceof Error?n.message:String(n),byteLength:t.byteLength}),this.eventEmitter.emit("transport.error",{type:"message_decode_error",error:n,rawMessage:t,timestamp:Date.now()});return}try{await this.handleRawMessage(r)}catch(n){this.log("error","Failed to process WebSocket frame",{error:n instanceof Error?n.message:String(n),byteLength:t.byteLength}),this.eventEmitter.emit("transport.error",{type:"message_handle_error",error:n,rawMessage:t,timestamp:Date.now()})}}async toArrayBuffer(e){if(e instanceof Blob)return e.arrayBuffer();if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength).slice().buffer;throw new Error("Unexpected message type: "+typeof e)}async handleRawMessage(e){if(this.closed){this.log("debug","Ignoring message received after transport was closed");return}if(typeof e!="object"||e===null){this.log("debug","Received invalid message format",{ev:e});return}try{let{data:t,event:r,as:n}=e;if(!r||typeof r!="string")throw new R("Message missing event field",e);if(this.log("debug","Processing message",{event:r,hasData:!!t}),r==="App.Actions.GetClientId"){this.clientId=t.id,this.log("info","Client ID received",{clientId:this.clientId});return}if(r==="Events.BootError"){let o=t,s=new E(o?.message||"Notebook is no longer available",o||{});this.log("error","Boot error received",{data:t}),this.terminate(s,4e3,s.message);return}if(r==="response"){let{responseEvent:o,data:s}=t;if(!o)throw new R("Response message missing responseEvent",e);this.log("debug","Response message received",{responseEvent:o}),await this.handleMessage(o,s);return}if(r==="error"){let{errorEvent:o,data:s}=t;if(!o)throw new R("Error message missing errorEvent",e);this.log("debug","Error message received",{errorEvent:o,errorData:s}),await this.handleMessage(o,s);return}await this.handleMessage(r,t,n)}catch(t){t instanceof R?this.log("error","Invalid message format",{error:t.message,data:t.data}):this.log("error","Failed to parse message",{ev:e,error:t instanceof Error?t.message:String(t)}),this.eventEmitter.emit("transport.error",{type:"message_parse_error",error:t,rawMessage:e,timestamp:Date.now()})}}async handleMessage(e,t,r){if(e==="App.Actions.GetClientId"){this.clientId=t.id,this.eventEmitter.emit(e,this.clientId);return}e&&this.eventEmitter.emit(r||e,t)}listen(e,t,r){return this.eventEmitter.listen(e,t)}onDidBootError(e){return this.eventEmitter.listen("transport.boot_error",t=>{e(t.error)})}removeListener(e,t){this.eventEmitter.removeListener(e,t)}listenOnce(e,t,r){return this.eventEmitter.once(e,t,r)}emit(e,...t){this.eventEmitter.emit(e,...t)}get isConnected(){return this.status==="OPEN"}get isConnecting(){return this.status==="CONNECTING"}get isDisconnected(){return this.status==="CLOSED"}get isClosed(){return this.closed}getTerminalError(){return this.terminalError}get status(){return{0:"CONNECTING",1:"OPEN",2:"CLOSING",3:"CLOSED"}[this.rws.readyState]}async call(e,t={},r={}){if(this.terminalError)throw this.terminalError;let n=r.responseEvent||`${e}_${m()}_response`,o=`${n}_error`,s,a,c=()=>{s&&(this.rws.removeEventListener("close",s),this.rws.removeEventListener("error",s)),a&&(r.abortSignal?.removeEventListener("abort",a),a=void 0),this.eventEmitter.removeListener(n),this.eventEmitter.removeListener(o)},l=(g,p)=>{if(this.terminalError){p(this.terminalError);return}let f=new DOMException("Request aborted","AbortError");if(r.abortSignal?.aborted){p(f);return}if(r.abortSignal&&(a=()=>{p(f)},r.abortSignal.addEventListener("abort",a,{once:!0})),!this.isConnected||this.isClosed){p(new te(`Connection is not open while sending ${e}. Current status: ${this.status}`));return}this.listenOnce(n,h=>{this.log("debug","Message response received",{action:e}),g(h)}),this.listenOnce(o,h=>{this.log("error","Message error received",{action:e,error:h});let k=h;p(new y(k.code,k.message,k))}),s=h=>{if(h.code===1008&&(h.reason||"").includes("rate limit")){p(new M(h.reason||"Rate limit exceeded",h));return}let k=be(h);p(this.terminalError||new te(`Connection lost to the notebook during request: ${k}`,h))},this.rws.addEventListener("close",s),this.rws.addEventListener("error",s);try{this.rws.send(this.pack({action:e,data:t,errorEvent:o,responseEvent:n})),this.log("debug","Message sent",{action:e,data:t})}catch(h){this.log("error","Failed to send message",{action:e,error:h}),p(h)}},d=async()=>{if(r.abortSignal?.aborted)throw new DOMException("Request aborted","AbortError");if(await x(this,I,Oe).call(this),r.abortSignal?.aborted)throw new DOMException("Request aborted","AbortError");let g=new Promise(l).finally(c);return r.timeout?ce(g,r.timeout).catch(p=>{throw p instanceof D?O.fromPromiseTimeoutError(p):p}).finally(c):g},u=r.retries===!1?0:r.retries??0;return this.sendWithRetry(async()=>await d(),u)}send(e,t={}){if(this.terminalError)throw this.terminalError;if(!this.isConnected||this.isClosed)return this.log("debug","Connection not available, dropping one-way message",{action:e}),!1;try{return this.rws.send(this.pack({action:e,data:t})),this.log("debug","One-way message sent",{action:e,data:t}),!0}catch(r){return this.log("error","Failed to send one-way message",{action:e,error:r}),!1}}pack(e){return new Blob([Ce(e)])}sendWithRetry(e,t){return ee(async(r,n)=>{try{return await e()}catch(o){if(o instanceof y||o instanceof M||o instanceof A||o instanceof R||o instanceof E||o instanceof DOMException){this.log("debug","Non-retryable error, bailing",{error:o.message,attempt:n}),r(o);return}throw o instanceof O&&(this.reconnect(),this.log("warn","Send operation timed out, connection reset",{attempt:n,timeout:o.time})),this.log("debug","Retrying send operation",{attempt:n,error:o instanceof Error?o.message:String(o)}),o}},{retries:t,onRetry:(r,n)=>{this.log("warn","Send operation retry",{attempt:n,maxRetries:t,error:r instanceof Error?r.message:String(r)})},minTimeout:1e3,factor:2,maxTimeout:3e4,randomize:!0})}invoke(e,t={},r={}){return r.responseEvent||(r.responseEvent=`${e}_${m()}`),this.call("invoke",{action:e,data:t},r)}reconnect(){if(this.terminalError)throw this.terminalError;if(this.closed)throw new Error("Cannot reconnect a closed transport. The transport has been permanently closed.");this.log("info","Reconnecting transport"),this.connectPromise=null,this.rws.reconnect()}disconnect(){this.closed||this.close()}terminate(e,t=4e3,r=e.message){this.terminalError=e,e instanceof E&&this.eventEmitter.emit("transport.boot_error",{error:e,timestamp:Date.now()}),this.close(t,r)}close(e,t){if(!this.closed){this.log("info","Closing transport connection",{code:e,reason:t}),this.connectPromise=null,this.disposables.dispose();try{this.rws.close(e,t)}catch(r){this.log("error","Error closing WebSocket",{error:r instanceof Error?r.message:String(r)})}this.eventEmitter.emit("transport.closed",{code:e,reason:t,timestamp:Date.now()}),this.eventEmitter.removeListener("*"),this.closed=!0,this.log("info","Transport connection closed successfully")}}onDidConnect(e){this.rws.addEventListener("open",e);let t={dispose:()=>{this.rws.removeEventListener("open",e)}};return this.disposables.add(`connect_${m()}`,t),t}onDidClose(e){this.rws.addEventListener("close",e);let t={dispose:()=>{this.rws.removeEventListener("close",e)}};return this.disposables.add(`close_${m()}`,t),t}};I=new WeakSet,Oe=function(){return this.terminalError?Promise.reject(this.terminalError):this.isConnected?Promise.resolve():this.connectPromise?this.connectPromise:(this.connectPromise=new Promise((e,t)=>{if(this.isConnected){e(),x(this,I,Fe).call(this);return}let r,n=0,o=()=>{this.rws.removeEventListener("open",s),this.rws.removeEventListener("error",a),this.rws.removeEventListener("close",c),clearTimeout(r)},s=()=>{o(),this.connectPromise=null,e(),x(this,I,Fe).call(this)},a=l=>{n+=1,this.log("warn","WebSocket emitted an error while connecting; waiting for reconnect/open",{errorCount:n,error:be(l)})},c=l=>{let d=be(l);if(l.code===1008||l.code===4e3){o(),this.connectPromise=null,t(new te(`WebSocket connection failed: ${d}`,l));return}this.log("warn","WebSocket closed before opening; waiting for reconnect/open",{error:d})};this.rws.addEventListener("open",s),this.rws.addEventListener("error",a),this.rws.addEventListener("close",c),this.rws.readyState===3&&this.rws.reconnect(),r=setTimeout(()=>{o(),this.connectPromise=null,t(new Me(`WebSocket connection timeout after ${this.CONNECT_WAIT_TIMEOUT}ms`))},this.CONNECT_WAIT_TIMEOUT)}),this.connectPromise)},Fe=function(){this.pingIntervalStarted||this.closed||(this.pingIntervalStarted=!0,this.disposables.add("pingInterval",()=>{let e=setInterval(async()=>{try{this.log("debug","Sending periodic ping"),await this.invoke("ping"),this.log("debug","Ping successful")}catch(t){this.log("error","Ping failed",{error:t instanceof Error?t.message:String(t)})}},this.PING_INTERVAL);return{dispose:()=>{clearInterval(e),this.pingIntervalStarted=!1}}}))};var Ge={};tt(Ge,{default:()=>We});function We(i){return{all:i=i||new Map,on:function(e,t){var r=i.get(e);r?r.push(t):i.set(e,[t])},off:function(e,t){var r=i.get(e);r&&(t?r.splice(r.indexOf(t)>>>0,1):i.set(e,[]))},emit:function(e,t){var r=i.get(e);r&&r.slice().map(function(n){n(t)}),(r=i.get("*"))&&r.slice().map(function(n){n(e,t)})}}}var dr=We??Ge;function fr(i){let e=dr(i);return e.once=(t,r)=>{let n=o=>{e.off(t,n),r(o)};return e.on(t,n),{dispose:()=>{e.off(t,n)}}},e}var _=class i{constructor(){this.emitter=fr()}listen(e,t){let r=()=>{this.removeListener(e,t)};return this.emitter.on(e,t),{dispose:r}}emit(e,...t){this.emitter.emit(e,t.length>1?t:t[0])}once(e,t){return this.emitter.once(e,t)}static make(){return new i}static refresh(){return new i}removeListener(e,t){this.emitter.off(e,t)}static createInstance(){return new i}inspect(){return this.emitter.all}};var ne=class{constructor(e){this.okra=e}checkpoint(e,t,r="main",n=!1){return this.okra.invoke("git.checkpoint",{author:e,message:t,branch:r,allowEmpty:n})}checkout(e,t=!0){return this.okra.invoke("git.checkout",{branch:e,create:t})}sync(e,t,r="main",n,o="both",s=!1){return this.okra.invoke("git.sync",{url:e,author:t,ref:r,token:n,direction:o,force:s})}log(e="main"){return this.okra.invoke("git.log",{ref:e})}diff(e){return this.okra.invoke("git.diff",e)}merge(e){return this.okra.invoke("git.merge",e)}conflicts(){return this.okra.invoke("git.conflicts",{})}abortMerge(){return this.okra.invoke("git.resolve",{action:"abort"})}continueMerge(e,t){return this.okra.invoke("git.resolve",{action:"continue",author:e,message:t})}review(){return this.okra.invoke("git.review",{})}stage(e={all:!0}){return this.okra.invoke("git.stage",e)}unstage(e={all:!0}){return this.okra.invoke("git.unstage",e)}revert(e){return this.okra.invoke("git.revert",e)}credentials(){return this.okra.gitCredentials()}restore(e){return this.okra.invoke("git.restore",{ref:e})}status(){return this.okra.invoke("git.status",{})}};var ie=class{constructor(e,t,r){this.onEvent=e;this.onceEvent=t;this.beacon=r;this.urlHistory=[];this.currentIndex=0;this._canGoBack=!1;this._canGoForward=!1;this.beacon=r,this.setupUrlChangeListener(),this.urlHistory.push(r.iframe.src),this.updateNavigationState()}visit(e){if(!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.currentIndex<this.urlHistory.length-1&&(this.urlHistory=this.urlHistory.slice(0,this.currentIndex+1)),this.urlHistory.push(e),this.currentIndex=this.urlHistory.length-1,this.updateNavigationState(),this.emitHistoryChange(e,"push")}setupUrlChangeListener(){this.beacon.on("urlChange",e=>{this.addToHistory(e.newUrl)})}addToHistory(e){this.currentIndex<this.urlHistory.length-1&&(this.urlHistory=this.urlHistory.slice(0,this.currentIndex+1)),this.urlHistory.push(e),this.currentIndex=this.urlHistory.length-1,this.updateNavigationState()}updateNavigationState(){let e=this._canGoBack,t=this._canGoForward;this._canGoBack=this.currentIndex>0,this._canGoForward=this.currentIndex<this.urlHistory.length-1,(e!==this._canGoBack||t!==this._canGoForward)&&this.emitNavigationStateChange()}emitNavigationStateChange(){this.beacon&&this.beacon.emit&&this.beacon.emit("navigationStateChange",{canGoBack:this._canGoBack,canGoForward:this._canGoForward,currentIndex:this.currentIndex,historyLength:this.urlHistory.length,timestamp:Date.now()})}get canGoBack(){return this._canGoBack}get canGoForward(){return this._canGoForward}async goBack(){if(!this.canGoBack)return{success:!1,error:"Cannot go back - no previous history"};this.currentIndex--,this.updateNavigationState();let e=this.urlHistory[this.currentIndex];return this.beacon?(this.beacon.navigate(e),this.emitHistoryChange(e,"back"),{success:!0,url:e}):{success:!1,error:"Beacon reference not set"}}async goForward(){if(!this.canGoForward)return{success:!1,error:"Cannot go forward - no forward history"};this.currentIndex++,this.updateNavigationState();let e=this.urlHistory[this.currentIndex];return this.beacon?(this.beacon.navigate(e),this.emitHistoryChange(e,"forward"),{success:!0,url:e}):{success:!1,error:"Beacon reference not set"}}async reload(){if(this.currentIndex>=0&&this.currentIndex<this.urlHistory.length){let e=this.urlHistory[this.currentIndex];if(!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.emitHistoryChange(e,"reload")}}getCurrentUrl(){return this.currentIndex>=0&&this.currentIndex<this.urlHistory.length?new URL(this.urlHistory[this.currentIndex]):new URL("about:blank")}getHistory(){return[...this.urlHistory]}getCurrentIndex(){return this.currentIndex}canGoBackSync(){return this.currentIndex>0}canGoForwardSync(){return this.currentIndex<this.urlHistory.length-1}emitHistoryChange(e,t){this.beacon&&this.beacon.emit&&this.beacon.emit("historyChange",{url:e,state:null,direction:t,timestamp:Date.now()})}async pushState(e){this.visit(e)}async replaceState(e){if(this.currentIndex>=0&&this.currentIndex<this.urlHistory.length){if(this.urlHistory[this.currentIndex]=e,!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.emitHistoryChange(e,"replace")}else this.visit(e)}async getHistoryLength(){return this.urlHistory.length}async getHistoryState(){return null}async getHistoryInfo(){return{length:this.urlHistory.length,state:null,url:this.urlHistory[this.currentIndex]||"",canGoBack:this.canGoBack,canGoForward:this.canGoForward}}on(e,t){return this.onEvent(e,t)}once(e,t){this.onceEvent(e,t)}};function bt(){if(typeof window>"u")throw new Error("Beacon SDK can only be used in a browser environment")}var L=class extends Error{constructor(t,r){super(t);this.code=r;this.name="BeaconError"}},ye=class extends L{constructor(e,t){super(`Beacon operation '${e}' timed out after ${t}ms`),this.code="TIMEOUT"}},w=class extends L{constructor(e){super(`Beacon connection error: ${e}`),this.code="CONNECTION_ERROR"}},$e=class{constructor(e,t={}){this.messageHandlers=new Map;this.isBeaconReady=!1;this.readyPromise=null;this.isStarted=!1;this.disposables=[];this.messageChannel=null;this.port=null;this.channelEstablished=!1;bt(),this.iframe=e;let r={retries:3,minTimeout:1e3,maxTimeout:5e3,factor:2,randomize:!0};this.options={timeout:1e4,targetOrigin:"*",debug:!1,retry:{...r,...t.retry},...t},this.eventEmitter=_.make(),this.setupMessageChannel(),this.navigator=new ie(this.eventEmitter.listen.bind(this.eventEmitter),this.eventEmitter.once.bind(this.eventEmitter),this)}setupMessageChannel(){let e=t=>{try{if(t.source!==this.iframe.contentWindow)return;let r=t.data;if(!r||typeof r!="object"||!r.type)return;r.type==="beacon:ready-for-channel"&&this.establishChannel().catch(n=>{this.options.debug&&console.error("[Beacon SDK] Channel establishment failed:",n)}),r.type==="beacon:channel-established"&&(this.channelEstablished=!0,this.isBeaconReady=!0,this.emit("ready",r.payload),this.options.debug&&console.log("[Beacon SDK] Channel established and beacon ready"))}catch(r){this.options.debug&&console.error("[Beacon SDK] Message parsing error:",r)}};window.addEventListener("message",e),this.disposables.push({dispose:()=>window.removeEventListener("message",e)})}async establishChannel(){if(!this.iframe.contentWindow)throw new w("Iframe contentWindow not available");this.messageChannel=new MessageChannel,this.port=this.messageChannel.port1,this.port.onmessage=t=>{this.handleBeaconMessage(t.data)},this.port.onmessageerror=t=>{this.options.debug&&console.error("[Beacon SDK] Port message error:",t)},this.port.start();let e={type:"beacon:establish-channel",timestamp:Date.now(),id:this.generateId()};return this.iframe.contentWindow.postMessage(e,"*",[this.messageChannel.port2]),this.options.debug&&console.log("[Beacon SDK] Channel establishment message sent"),new Promise((t,r)=>{let n=setTimeout(()=>{r(new w("Channel establishment timeout"))},this.options.timeout),o=()=>{this.channelEstablished&&this.isBeaconReady?(clearTimeout(n),t()):setTimeout(o,100)};o()})}handleBeaconMessage(e){this.options.debug&&console.log("[Beacon SDK] Received message:",e.type,e.payload);let t=e.type.replace("beacon:","");this.emit(t,e.payload);let r=this.messageHandlers.get(e.type);r&&r.forEach(n=>{try{n(e.payload)}catch(o){this.options.debug&&console.error("[Beacon SDK] Message handler error:",o)}})}waitForBeaconReady(){return ee(async()=>new Promise((e,t)=>{if(this.isBeaconReady&&this.channelEstablished){e();return}let r=this.options.timeout,n=setTimeout(()=>{t(new ye("beacon ready",r))},r),o=this.on("ready",()=>{clearTimeout(n),o.dispose(),e()})}),{retries:this.options.retry?.retries??3,minTimeout:this.options.retry?.minTimeout??1e3,maxTimeout:this.options.retry?.maxTimeout??5e3,factor:this.options.retry?.factor??2,randomize:this.options.retry?.randomize??!0,onRetry:(e,t)=>{if(this.options.debug){let r=e instanceof Error?e.message:String(e);console.warn(`[Beacon SDK] Beacon ready retry attempt ${t}:`,r)}this.isBeaconReady=!1,this.channelEstablished=!1}})}sendMessage(e,t={}){if(!this.port)throw new w("MessagePort not available - channel not established");let r={type:`beacon:${e}`,payload:t,timestamp:Date.now(),source:"parent",id:this.generateId()};try{this.port.postMessage(r),this.options.debug&&console.log("[Beacon SDK] Sent message via port:",r.type,r.payload)}catch(n){throw new w(`Failed to send message via port: ${n instanceof Error?n.message:String(n)}`)}}async sendAndWaitFor(e,t,r={},n){return await this.ready(),ee(async o=>new Promise((s,a)=>{let c=n||this.options.timeout,l=setTimeout(()=>{d.dispose();let u=new ye(e,c);a(u)},c),d=this.eventEmitter.listen(t,u=>{clearTimeout(l),d.dispose(),s(u)});try{this.sendMessage(e,r)}catch(u){clearTimeout(l),d.dispose(),u instanceof w?a(u):o(u)}}),{retries:this.options.retry?.retries??3,minTimeout:this.options.retry?.minTimeout??1e3,maxTimeout:this.options.retry?.maxTimeout??5e3,factor:this.options.retry?.factor??2,randomize:this.options.retry?.randomize??!0,onRetry:(o,s)=>{if(this.options.debug){let a=o instanceof Error?o.message:String(o);console.warn(`[Beacon SDK] Retry attempt ${s} for ${e}:`,a)}}})}generateId(){return`sdk_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}emit(e,t){this.eventEmitter.emit(e,t)}start(){return this.isStarted?this.readyPromise||Promise.resolve():(this.isStarted=!0,this.readyPromise=this.waitForBeaconReady(),this.readyPromise)}async ready(){if(!this.isStarted)throw new L("Beacon has not been started. Call start() first.");if(!this.readyPromise)throw new L("Beacon ready promise is not available");return ce(this.readyPromise,this.options.timeout)}get isReady(){return this.isBeaconReady}on(e,t){return this.eventEmitter.listen(e,t)}once(e,t){return this.eventEmitter.once(e,t)}async ping(){try{return await this.sendAndWaitFor("ping","pong",{timestamp:Date.now()}),!0}catch(e){return this.options.debug&&console.warn("[Beacon SDK] Ping failed:",e),!1}}async getDebugInfo(){return this.sendAndWaitFor("getDebugInfo","debugInfo")}async getConsoleEvents(){return this.sendAndWaitFor("getConsoleEvents","consoleEvents")}async getErrorEvents(){return this.sendAndWaitFor("getErrorEvents","errorEvents")}async clearConsole(){await this.ready(),this.sendMessage("clearConsole")}async clearErrors(){await this.ready(),this.sendMessage("clearErrors")}async executeCode(e){return this.sendAndWaitFor("executeCode","codeExecutionResult",{code:e})}async inspectElement(e){return this.sendAndWaitFor("inspectElement","elementInspectionResult",{selector:e})}async fetch(e){return this.sendAndWaitFor("fetch","fetchResult",e)}async captureScreenshot(e={}){let t=e.mediaTimeoutMs??e.timeout??3e4,r=e.transportTimeoutMs??t+5e3;return this.sendAndWaitFor("captureScreenshot","screenshotResult",e,r)}async debug(e,t){let r=new URL(e.path,this.iframe.src||window.location.origin).href;this.iframe.src!==r&&(this.navigator.visit(r),await this.ready()),t&&await this.wait(t);let n=(e.options?.timeout||3e4)+5e3;return this.sendAndWaitFor("debug","debugResult",e,n)}async wait(e){return new Promise(t=>setTimeout(t,e*1e3))}navigate(e){if(!this.iframe)throw new w("Iframe not available");try{let t=new URL(e,this.iframe.src||window.location.origin);this.iframe.src=t.href,this.isBeaconReady=!1,this.channelEstablished=!1,this.port&&(this.port.close(),this.port=null),this.messageChannel&&(this.messageChannel=null),this.isStarted&&(this.readyPromise=this.waitForBeaconReady())}catch{throw new w(`Invalid URL: ${e}`)}}get url(){return this.iframe.src}get element(){return this.iframe}dispose(){this.port&&(this.port.close(),this.port=null),this.messageChannel&&(this.messageChannel=null),this.disposables.forEach(e=>e.dispose()),this.disposables=[],this.messageHandlers.clear(),this.isBeaconReady=!1,this.channelEstablished=!1,this.isStarted=!1,this.readyPromise=null}};function vt(i,e){return new $e(i,e)}function Yn(){try{return bt(),!0}catch{return!1}}function gr(i){return Array.isArray(i)?i:Object.entries(i).map(([e,t])=>({name:e,...typeof t=="string"?{value:t}:t}))}var He=class extends Error{constructor(t,r={}){super(t);this.message=t;this.data=r;this.name="NotebookInitError"}},Ke=class extends Error{constructor(t,r){super(`PHPSandbox API Error: ${t.status} ${t.statusText} - ${r}`);this.response=t;this.body=r;this.status=t.status}},ze=class{constructor(e){this.client=e;this.secrets=new Ve(e),this.preview=new je(e),this.mail=new Qe(e)}async create(e,t={},r=!0){let n=await this.client.post("/notebook",{template:e,...t}),o=new T(n.data,this.client);return r?this.init(o):o}async get(e){let t=await this.client.get(`/notebook/${e}`);return new T(t.data,this.client)}async update(e,t={}){let r=await this.client.put(`/notebook/${e}`,t);return new T(r.data,this.client)}async delete(e){await this.client.delete(`/notebook/${e}`)}async fork(e,t={}){let r=await this.client.post(`/notebook/${e}/fork`,t);return this.init(new T(r.data,this.client))}async gitCredentials(e){return(await this.client.post(`/notebook/${e}/git/credentials`)).data}async open(e){let t=await this.client.get(`/notebook/${e}`);return new T(t.data,this.client)}openFromData(e){return this.init(new T(e,this.client))}async init(e){return await e.ready(),e}};function mr(i){let e=new URL(i),t=e.pathname.replace(/\/+$/,"");return e.pathname=t===""||t==="/"?"/v1/":`${t}/`,e.search="",e.hash="",e.toString()}var qe=class{constructor(e,t="https://api.phpsandbox.io/v1",r={}){this.fetch=globalThis.fetch;this.notebook=new ze(this),this.options=Object.assign({startClosed:!0},r),this.baseUrl=mr(t),r.fetch&&(this.fetch=r.fetch),this.headers={Accept:"application/json",Authorization:`Bearer ${e}`,"Content-Type":"application/json"}}get(e){return this.makeRequest("GET",e)}post(e,t){return this.makeRequest("POST",e,{body:t===void 0?void 0:JSON.stringify(t)})}delete(e){return this.makeRequest("DELETE",e)}put(e,t){return this.makeRequest("PUT",e,{body:t===void 0?void 0:JSON.stringify(t)})}async makeRequest(e,t,r){let n=await this.fetch(new Request(new URL(t.replace(/^\//,""),this.baseUrl),{method:e,...r,headers:this.headers}));if(!n.ok)throw new Ke(n,await n.text());if(n.status===204)return{data:void 0};let o=await n.text();return{data:o===""?void 0:JSON.parse(o)}}},yt=class extends qe{},Ve=class{constructor(e){this.client=e}async list(e){return(await this.client.get(`/notebook/${e}/secrets`)).data}async set(e,t,r){let n=typeof r=="string"?{name:t,value:r}:{name:t,...r};return(await this.client.put(`/notebook/${e}/secrets`,n)).data}async setMany(e,t){return(await this.client.put(`/notebook/${e}/secrets`,{secrets:gr(t)})).data}async delete(e,t){await this.client.delete(`/notebook/${e}/secrets/${encodeURIComponent(t)}`)}},je=class{constructor(e){this.client=e}async get(e){return(await this.client.get(`/notebook/${e}/preview`)).data}async setPassword(e,t){return(await this.client.put(`/notebook/${e}/preview`,t)).data}async disable(e){await this.client.delete(`/notebook/${e}/preview`)}async createSession(e){return(await this.client.post(`/notebook/${e}/preview/session`)).data}async createHandoff(e,t){return(await this.client.post(`/notebook/${e}/preview/handoff`,t)).data}},Qe=class{constructor(e){this.client=e}async status(e){return(await this.client.get(`/notebook/${e}/mail`)).data}async enable(e){return(await this.client.put(`/notebook/${e}/mail`)).data}async disable(e){await this.client.delete(`/notebook/${e}/mail`)}async list(e,t={}){return(await this.client.get(`/notebook/${e}/mails${br(t)}`)).data}async get(e,t){return(await this.client.get(`/notebook/${e}/mails/${encodeURIComponent(t)}`)).data}async delete(e,t){await this.client.delete(`/notebook/${e}/mails/${encodeURIComponent(t)}`)}},P,oe,Xe,T=class{constructor(e,t){this.data=e;this.client=t;B(this,oe);this.initialized=!1;B(this,P);this.disposables=[];this.emitter=_.createInstance(),this.socket=new re(e.okraUrl,this.emitter,{debug:t.options.debug,startClosed:t.options.startClosed,webSocket:t.options.webSocket}),this.watchConnection(),xe(this,P,x(this,oe,Xe).call(this)),this.file=new ae(this),this.terminal=new F(this),this.auth=new G(this),this.lsp=new $(this),this.composer=new H(this),this.log=new K(this),this.repl=new q(this),this.container=new W(this),this.laravel=new z(this),this.shell=new V(this),this.git=new ne(this),this.services=new j(this),this.config=new Q(this),this.secrets=new Je(t,this.data.id),this.preview=new Ye(t,this.data.id),this.mail=new Ze(t,this.data.id)}async ready(){let e=this.socket.getTerminalError();if(e)throw e;return(async()=>(this.client.options.startClosed&&!this.socket.isConnected&&await this.socket.connect(),se(this,P)))()}fork(e={}){return this.client.notebook.fork(this.data.id,e)}gitCredentials(){return this.client.notebook.gitCredentials(this.data.id)}delete(){return this.client.notebook.delete(this.data.id).then(()=>{this.socket.terminate(new E("Notebook has been deleted.",{id:this.data.id}))})}stop(){return this.container.stop()}restart(){return this.container.start()}invoke(e,t={},r={}){return this.socket.invoke(e,t||{},r)}send(e,t={}){return this.socket.send(e,t||{})}ping(){return this.invoke("ping")}listen(e,t){let r=this.emitter.listen(e,t);return this.disposables.push(r),r}dispose(){this.disposables.forEach(e=>e.dispose()),!this.socket.isClosed&&this.socket.disconnect()}connected(){return this.waitForSocketConnection({rejectOnClose:!0})}whenConnected(){return this.waitForSocketConnection({rejectOnClose:!1})}waitForSocketConnection(e){let t=this.socket.getTerminalError();return t?Promise.reject(t):this.socket.isConnected?Promise.resolve(this):new Promise((r,n)=>{let o=[],s=!1,a=()=>{for(let l of o)l.dispose();o.length=0},c=l=>{s||(s=!0,a(),l())};try{o.push(this.socket.onDidConnect(()=>c(()=>r(this)))),e.rejectOnClose&&o.push(this.socket.onDidClose(()=>c(()=>n(new Error("Connection closed"))))),o.push(this.socket.onDidBootError(l=>c(()=>n(l))))}catch(l){c(()=>n(l))}})}watchConnection(){this.socket.onDidConnect(()=>{this.socket.emit("okra.connected"),this.client.options.telemetry&&this.container.enableTelemetry(this.client.options.telemetry)}),this.socket.onDidClose(()=>{this.socket.emit("okra.disconnected"),this.initialized=!1}),this.socket.onDidBootError(e=>{this.socket.emit("okra.boot_error",e),this.socket.emit("okra.disconnected"),this.initialized=!1})}onDidConnect(e){this.socket.removeListener("okra.connected",e);let t=this.socket.listen("okra.connected",e);return this.disposables.push(t),t}onDidDisconnect(e){let t=this.socket.listen("okra.disconnected",e);return this.disposables.push(t),t}onDidBootError(e){let t=this.socket.listen("okra.boot_error",e);return this.disposables.push(t),t}update(){return this.invoke("notebook.update")}onDidInitialize(e){return this.listen("notebook.initialized",e)}async reconnect(){let e=this.whenConnected();return this.socket.reconnect(),this.initialized=!1,await e,x(this,oe,Xe).call(this),this.ready().then(()=>this)}async beacon(e,t){let r=await this.ready();return e.src=r.data.previewUrl,vt(e,t)}};P=new WeakMap,oe=new WeakSet,Xe=function(){return xe(this,P,new Promise((e,t)=>{let r=this.onDidInitialize(o=>{if(n.dispose(),r.dispose(),this.initialized=o,o.type==="error"){t(new He(o.message,o.data));return}e(o)}),n=this.onDidBootError(o=>{r.dispose(),n.dispose(),t(o)})})),se(this,P).catch(()=>{}),se(this,P)};var Je=class{constructor(e,t){this.client=e;this.notebookId=t}list(){return this.client.notebook.secrets.list(this.notebookId)}set(e,t){return this.client.notebook.secrets.set(this.notebookId,e,t)}setMany(e){return this.client.notebook.secrets.setMany(this.notebookId,e)}delete(e){return this.client.notebook.secrets.delete(this.notebookId,e)}},Ye=class{constructor(e,t){this.client=e;this.notebookId=t}get(){return this.client.notebook.preview.get(this.notebookId)}setPassword(e){return this.client.notebook.preview.setPassword(this.notebookId,e)}disable(){return this.client.notebook.preview.disable(this.notebookId)}createSession(){return this.client.notebook.preview.createSession(this.notebookId)}createHandoff(e){return this.client.notebook.preview.createHandoff(this.notebookId,e)}},Ze=class{constructor(e,t){this.client=e;this.notebookId=t}status(){return this.client.notebook.mail.status(this.notebookId)}enable(){return this.client.notebook.mail.enable(this.notebookId)}disable(){return this.client.notebook.mail.disable(this.notebookId)}list(e={}){return this.client.notebook.mail.list(this.notebookId,e)}get(e){return this.client.notebook.mail.get(this.notebookId,e)}delete(e){return this.client.notebook.mail.delete(this.notebookId,e)}};function br(i){let e=new URLSearchParams;for(let[r,n]of Object.entries(i))(typeof n=="string"||typeof n=="number"||typeof n=="boolean")&&e.set(r,String(n));let t=e.toString();return t===""?"":`?${t}`}export{Ke as ApiError,$e as Beacon,w as BeaconConnectionError,L as BeaconError,ye as BeaconTimeoutError,qe as Client,Te as CommandError,y as ErrorEvent,Et as FileChangeFilter,St as FileChangeType,xt as FileType,ae as Filesystem,Ee as FilesystemError,It as FilesystemErrorType,Ie as LspConnection,ie as Navigator,ze as NotebookApi,He as NotebookInitError,T as NotebookInstance,Ze as NotebookMail,Qe as NotebookMailApi,Ye as NotebookPreview,je as NotebookPreviewApi,Ve as NotebookSecretApi,Je as NotebookSecrets,Dt as NotebookState,E as NotebookUnavailableError,yt as PHPSandbox,rt as PHPSandboxError,D as PromiseTimeoutError,M as RateLimitError,O as SendTimeoutError,re as Transport,vt as createBeacon,Yn as isBeaconSupported,Ct as notebookBuiltinServices,Hr as notebookKnownServices,le as once,ce as timeout};
1
+ var kt=Object.defineProperty;var et=i=>{throw TypeError(i)};var tt=(i,e)=>{for(var t in e)kt(i,t,{get:e[t],enumerable:!0})};var ke=(i,e,t)=>e.has(i)||et("Cannot "+t);var se=(i,e,t)=>(ke(i,e,"read from private field"),t?t.call(i):e.get(i)),B=(i,e,t)=>e.has(i)?et("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(i):e.set(i,t),xe=(i,e,t,r)=>(ke(i,e,"write to private field"),r?r.call(i,t):e.set(i,t),t),x=(i,e,t)=>(ke(i,e,"access private method"),t);var y=class extends Error{constructor(t,r,n={}){super(r);this.code=t;this.message=r;this.raw=n}},M=class extends y{constructor(e,t={}){super(429,e,t)}},rt=class extends y{};var nt="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var m=(i=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(i|=0));for(;i--;)e+=nt[t[i]&63];return e};var xt=(n=>(n[n.Unknown=0]="Unknown",n[n.File=1]="File",n[n.Directory=2]="Directory",n[n.SymbolicLink=64]="SymbolicLink",n))(xt||{}),Et=(r=>(r[r.UPDATED=2]="UPDATED",r[r.ADDED=4]="ADDED",r[r.DELETED=8]="DELETED",r))(Et||{}),St=(r=>(r[r.UPDATED=1]="UPDATED",r[r.ADDED=2]="ADDED",r[r.DELETED=3]="DELETED",r))(St||{}),It=(s=>(s.Unavailable="Unavailable",s.NoPermissions="NoPermissions",s.FileExists="FileExists",s.FileNotFound="FileNotFound",s.FileIsADirectory="FileIsADirectory",s.FileNotADirectory="FileNotADirectory",s))(It||{}),Ee=class extends y{constructor(t,r){super(t.code,t.message);this.name=r}},Se=class{constructor(e,t){this.disposable=e;this.onDispose=t;this.disposed=!1}dispose(){this.disposed||(this.disposed=!0,this.disposable.dispose(),this.onDispose())}},ae=class{constructor(e){this.okra=e;this.watches=new Map;this.watchOkraConnection()}watchOkraConnection(){this.okra.onDidConnect(()=>{for(let{path:e,options:t}of this.watches.values())this.okra.invoke("fs.watch",{path:e,options:t}).catch(()=>{})})}info(e){return this.okra.invoke("fs.info",{path:e})}write(e,t){return this.okra.invoke("fs.write",{path:e,contents:t})}find(e,t={useIgnoreFiles:!1,followSymlinks:!1,useGlobalIgnoreFiles:!1,useParentIgnoreFiles:!1}){return this.okra.invoke("fs.find",{query:e,options:{includes:[],excludes:["**/storage","**/vendor","**/node_modules","**/.git","**/.svn","**/.hg","**/CVS","**/.DS_Store","**/Thumbs.db","**/*.crswap"],useIgnoreFiles:!1,followSymlinks:!1,useGlobalIgnoreFiles:!1,useParentIgnoreFiles:!1,...t}})}search(e,t,r){e.id||(e.id=m());let n={maxResults:5,afterContext:2,beforeContext:2,includes:[],excludes:["**/.git","**/.svn","**/.hg","**/CVS","**/.DS_Store","**/Thumbs.db","**/*.crswap","**/node_modules","**/vendor","**/bower_components","**/*.code-search"],useIgnoreFiles:!0,followSymlinks:!0,useGlobalIgnoreFiles:!0,useParentIgnoreFiles:!0,encoding:"utf-8",previewOptions:{matchLines:5,charsPerLine:1e3}},o=e.id,s=async c=>{c===!1&&a.dispose(),r&&await Promise.resolve(r(c))===!1&&a.dispose()},a=this.okra.listen(`fs.text.search.${o}`,s);return this.okra.invoke("fs.textSearch",{query:e,options:{...n,...t}}).finally(()=>a.dispose())}mkdir(e){return this.okra.invoke("fs.mkdir",{path:e})}move(e,t){return this.okra.invoke("fs.move",{from:e,to:t})}remove(e,t){return this.okra.invoke("fs.remove",{path:e,type:t})}async readFile(e,t){try{let r=await this.okra.invoke("fs.readFile",{path:e,lineRange:t});return r instanceof Uint8Array?r:typeof r=="string"?new TextEncoder().encode(r):r}catch(r){this.handleError(r)}}tail(e,t=10){return this.okra.invoke("fs.tail",{path:e,lines:t}).catch(r=>this.handleError(r))}writeFile(e,t,r){return this.okra.invoke("fs.writeFile",{path:e,contents:t,options:r}).catch(n=>this.handleError(n))}stat(e){return this.okra.invoke("fs.stat",{path:e}).catch(t=>this.handleError(t))}rename(e,t,r){return this.okra.invoke("fs.rename",{from:e,to:t,options:r}).catch(n=>this.handleError(n))}delete(e,t){return this.okra.invoke("fs.delete",{path:e,options:t}).catch(r=>this.handleError(r))}copy(e,t,r){return this.okra.invoke("fs.copy",{source:e,destination:t,options:r}).catch(n=>this.handleError(n))}readDirectory(e,t=[],r=[]){return this.okra.invoke("fs.readDirectory",{path:e,include:t,exclude:r}).catch(n=>this.handleError(n))}createDirectory(e){return this.okra.invoke("fs.createDirectory",{path:e}).catch(t=>this.handleError(t))}watch(e,t,r){let n=this.okra.listen(`fs.watch.${e}`,r),o={dispose:()=>{n.dispose(),this.okra.invoke("fs.unwatch",{path:e}).catch(()=>{})}},s=new Se(o,()=>{this.watches.get(e)?.onDidChange===r&&this.watches.delete(e)});return this.watches.set(e,{options:t,path:e,onDidChange:r}),this.okra.invoke("fs.watch",{path:e,options:t}).then(()=>s).catch(a=>{throw s.dispose(),a})}exists(e){return this.stat(e).then(()=>!0).catch(()=>!1)}async download(e,t,r){let n=m(),o=!!e,s=[],a=this.okra.listen(`fs.download.${n}`,o?e:c=>{s.push(c)});return this.okra.invoke("fs.download",{id:n,exclude:t,include:r}).then(()=>new Blob(s,{type:"application/octet-stream"})).finally(()=>a.dispose())}tree(e="/"){return this.okra.invoke("fs.tree",{path:e})}handleError(e){throw e instanceof y&&"name"in e.raw?new Ee(e,e.raw.name):e}};var D=class extends Error{constructor(t,r){super(t);this.time=r}},O=class i extends D{static fromPromiseTimeoutError(e){return new i(e.message,e.time)}},E=class extends Error{constructor(t="Notebook is no longer available",r={}){super(t);this.raw=r;this.name="NotebookUnavailableError"}};var ce=(i,e)=>{let t;return Promise.race([i,new Promise((r,n)=>t=setTimeout(n,e,new D("Timeout before promise can resolve",e)))]).finally(()=>clearTimeout(t))},le=i=>{let e=null;return()=>e||(e=i())};var Tt=8,Pt=/[\x00-\x1f\x7f]/,F=class{constructor(e){this.okra=e}list(){return this.okra.invoke("terminal.list")}start(){return this.okra.invoke("terminal.start")}create(e){return this.okra.invoke("terminal.create",e)}onStarted(e){return this.okra.listen("terminal.started",e)}resize(e,t){return this.okra.invoke("terminal.resize",{id:e,width:t[0],height:t[1]})}onOutput(e,t){return this.okra.listen(`terminal.output.${e}`,t)}input(e,t){return Promise.resolve(this.okra.send("terminal.input",{id:e,input:t}))}listen(e,t){return this.okra.listen(e,t)}async attach(e,t){let r=this.processHandle(e,t?.abortSignal);try{let n=await this.okra.invoke("terminal.attach",{id:e,replayHistory:t?.replayHistory},{abortSignal:t?.abortSignal});return n?{...r.process,...n}:(r.dispose(),!1)}catch(n){throw r.dispose(),n}}async spawn(e,t,r){let n=r?.id||m(),o=this.processHandle(n,r?.abortSignal),{abortSignal:s,...a}=r??{};try{let c=await this.okra.invoke("terminal.spawn",{command:[e,...t],opts:{id:n,...a}},{abortSignal:s});return{...o.process,...c}}catch(c){throw o.dispose(),c}}processHandle(e,t){let r=new Set,n,o=()=>{n&&(t?.removeEventListener("abort",n),n=void 0);for(let v of r)v.dispose();r.clear()},s="",a,c=()=>{if(a&&(clearTimeout(a),a=void 0),s==="")return;let v=s;s="",this.input(e,v)},l=()=>{a||(a=setTimeout(c,Tt))},d=v=>{if(s+=v,Pt.test(v)){c();return}l()},u=()=>{c(),o()},g=new WritableStream({write:d,close:u,abort:u}),p=null,f=new ReadableStream({start:v=>{p=v,r.add(this.listen(`terminal.output.${e}`,we=>{p?.enqueue(we.output)}))},cancel:()=>{p=null,u()}}),h=new Promise(v=>{r.add(this.listen(`terminal.close.${e}`,we=>{if(p)try{p.close()}catch{}u(),v(we.exitCode)}))}),k=le(()=>(u(),this.okra.invoke("terminal.close",{id:e}))),wt=v=>{this.okra.invoke("terminal.resize",{id:e,width:v.cols,height:v.rows})};return t&&!t.aborted&&(n=()=>{k()},t.addEventListener("abort",n,{once:!0})),{process:{exit:h,input:g,output:f,kill:k,resize:wt},dispose:u}}};var Dt=(a=>(a.RUNNING="running",a.STOPPED="stopped",a.STARTING="starting",a.STOPPING="stopping",a.KILLED="killed",a.ERROR="error",a.PROVISIONING="provisioning",a))(Dt||{}),G=class{constructor(e){this.okra=e}start(){return this.okra.invoke("container.start")}stop(){return this.okra.invoke("container.stop")}state(){return this.okra.invoke("container.state")}openedPorts(){return this.okra.invoke("container.opened-ports")}setPhp(e){return this.okra.invoke("container.set-php",{version:e})}enableTelemetry(e){return this.okra.invoke("container.stream-telemetry",{features:Array.from(e)})}stopTelemetry(){return this.okra.invoke("container.stop-telemetry")}listen(e,t){return this.okra.listen(e,t)}onPort(e){let t=[];return this.listen("container.ports",r=>{for(let n of r)t.some(o=>o.port===n.port)||e(n,"open");for(let n of t)r.some(o=>o.port===n.port)||e(n,"close");t=r})}};var W=class{constructor(e){this.okra=e}logout(){return this.okra.invoke("auth.logout")}login(e){return this.okra.invoke("auth.login",{newConnectionData:e})}};var $=class{constructor(e){this.okra=e}message(e,t){return this.okra.invoke("lsp.message",{id:e,message:t})}listen(e,t,r){return this.okra.listen(`${t}.${e}`,n=>r(n))}onClose(e,t){return this.listen(e,"lsp.closed",r=>t(r.code,r.reason))}onError(e,t){return this.listen(e,"lsp.error",r=>t(r.message))}onClientDisconnect(e){return this.okra.onDidDisconnect(()=>e(1e3,"OKRA DISCONNECTED"))}onResponse(e,t){return this.listen(e,"lsp.response",r=>t(JSON.stringify(r)))}close(e){return this.okra.invoke("lsp.close",{id:e})}start(e){return this.okra.invoke("lsp.start",{id:e})}connection(e){return Ie.create(e,this)}whenSocketConnected(){return this.okra.whenConnected()}},Ie=class i{constructor(e,t){this.id=e;this.lsp=t}send(e){return this.lsp.message(this.id,e)}onMessage(e){return this.lsp.onResponse(this.id,e)}onError(e){return this.lsp.onError(this.id,e)}onClose(e){return this.lsp.onClose(this.id,e)}dispose(){this.lsp.close(this.id)}start(){this.lsp.start(this.id)}onClientDisconnect(e){return this.lsp.onClientDisconnect(e)}whenSocketConnected(){return this.lsp.whenSocketConnected()}static create(e,t){return new i(e,t)}};var H=class{constructor(e){this.okra=e}invoke(e,t={},r={}){return this.okra.invoke("composer.invoke",{command:e,args:t,options:r})}dumpAutoload(){return this.okra.invoke("composer.dump-autoload")}install(e={}){return this.invoke("install",{},e)}update(e,t={}){return this.invoke("update",e,t)}require(e,t={}){return this.invoke("require",e,t)}remove(e,t={}){return this.invoke("remove",e,t)}stream(e){return this.okra.listen("composer.log",e)}packages(){return this.okra.invoke("composer.packages")}};var K=class{constructor(e){this.okra=e}stream(e){return this.okra.listen("notebook.log",e)}listen(e,t){return this.okra.listen(e,t)}};var z=class{constructor(e){this.okra=e}maintenanceInfo(){return this.okra.invoke("laravel.maintenance.info",{})}toggleMaintenance(e){return this.okra.invoke("laravel.maintenance.toggle",e)}};var q=class{constructor(e){this.okra=e}eval(e,t="",r={prependWith:"",appendWith:""}){return this.okra.invoke("repl.eval",{code:e,args:t,repl:r})}write(e){return this.okra.invoke("repl.write",{input:e})}stop(){return this.okra.invoke("repl.stop")}start(){return this.okra.invoke("repl.start")}resize(e,t){return this.okra.invoke("repl.resize",{cols:e,rows:t})}listen(e,t){return this.okra.listen(e,t)}onOutput(e){return this.okra.listen("repl.output",e)}};function it(i,e=[],t){let r=Array.isArray(e)?e:[],n=Array.isArray(e)?t:e;return{command:Array.isArray(i)?i:r.length>0?[i,...r]:i,opts:n}}var Te=class extends Error{constructor(t,r){super(t);this.output=t;this.exitCode=r}},Pe=class{constructor(e,t){this.output=e;this.exitCode=t}throw(){if(this.exitCode!==0)throw new Te(this.output,this.exitCode);return this}},V=class{constructor(e){this.okra=e}onOutput(e,t){return this.okra.listen(`shell.output.${e}`,t)}listen(e,t){return this.okra.listen(e,t)}async exec(e,t=[],r){let n=it(e,t,r),{abortSignal:o,...s}=n.opts??{},a=await this.okra.invoke("shell.exec",{command:n.command,opts:Object.keys(s).length>0?s:void 0},{abortSignal:o});return new Pe(a.output,a.exitCode)}execStream(e,t=[],r){let n=it(e,t,r),o=n.opts?.id||m(),s=new Set,a=null,c=!1,l=()=>{for(let f of s)f.dispose();s.clear()},d=()=>{if(!c&&(c=!0,l(),a))try{a.close()}catch{}},u=f=>{c||(c=!0,l(),a&&a.error(f))},g=new ReadableStream({start:f=>{a=f,s.add(this.listen(`shell.output.${o}`,h=>{a?.enqueue(h.output)}))},cancel:()=>{c=!0,l()}}),p=this.exec(n.command,{...n.opts,id:o}).then(f=>(d(),f)).catch(f=>{throw u(f),f});return{output:g,result:p}}};var Ct=["redis"],Hr=["start","nginx",...Ct],j=class{constructor(e){this.okra=e}list(){return this.okra.invoke("service.list")}run(e,t){return this.okra.invoke("service.run",{name:e,command:t})}stop(e){return this.okra.invoke("service.stop",{name:e})}onLog(e,t){return this.okra.listen(`service.log.${e}`,t)}listen(e,t){return this.okra.listen(e,t)}logs(e,t={}){return t.follow?this.followLogs(e,t):this.okra.invoke("service.logs",{name:e,tail:t.tail}).then(r=>{if(!("output"in r))throw new Error(`Unexpected service.logs response for ${e}`);return r.output})}followLogs(e,t){let r=t.id||m(),n=new Set,o=null,s=!1,a=()=>{for(let g of n)g.dispose();n.clear()},c=()=>{if(!s&&(s=!0,a(),o))try{o.close()}catch{}},l=g=>{s||(s=!0,a(),o&&o.error(g))},d=le(()=>(c(),this.okra.invoke("service.stop-logs",{id:r}))),u=new ReadableStream({start:g=>{o=g,n.add(this.onLog(r,p=>{o?.enqueue(p.output)})),this.okra.invoke("service.logs",{name:e,tail:t.tail,follow:!0,id:r}).catch(p=>{l(p)})},cancel:()=>{d()}});return{id:r,output:u,stop:d}}};var Q=class{constructor(e){this.okra=e}get(){return this.okra.invoke("config.get")}update(e){return this.okra.invoke("config.update",{config:e})}setPorts(e){return this.okra.invoke("config.set-ports",{ports:e})}};function ot(i){let e=i.length,t=0,r=0;for(;r<e;){let n=i.charCodeAt(r++);if((n&4294967168)===0){t++;continue}else if((n&4294965248)===0)t+=2;else{if(n>=55296&&n<=56319&&r<e){let o=i.charCodeAt(r);(o&64512)===56320&&(++r,n=((n&1023)<<10)+(o&1023)+65536)}(n&4294901760)===0?t+=3:t+=4}}return t}function Nt(i,e,t){let r=i.length,n=t,o=0;for(;o<r;){let s=i.charCodeAt(o++);if((s&4294967168)===0){e[n++]=s;continue}else if((s&4294965248)===0)e[n++]=s>>6&31|192;else{if(s>=55296&&s<=56319&&o<r){let a=i.charCodeAt(o);(a&64512)===56320&&(++o,s=((s&1023)<<10)+(a&1023)+65536)}(s&4294901760)===0?(e[n++]=s>>12&15|224,e[n++]=s>>6&63|128):(e[n++]=s>>18&7|240,e[n++]=s>>12&63|128,e[n++]=s>>6&63|128)}e[n++]=s&63|128}}var Rt=new TextEncoder,At=50;function _t(i,e,t){Rt.encodeInto(i,e.subarray(t))}function st(i,e,t){i.length>At?_t(i,e,t):Nt(i,e,t)}var Ut=4096;function De(i,e,t){let r=e,n=r+t,o=[],s="";for(;r<n;){let a=i[r++];if((a&128)===0)o.push(a);else if((a&224)===192){let c=i[r++]&63;o.push((a&31)<<6|c)}else if((a&240)===224){let c=i[r++]&63,l=i[r++]&63;o.push((a&31)<<12|c<<6|l)}else if((a&248)===240){let c=i[r++]&63,l=i[r++]&63,d=i[r++]&63,u=(a&7)<<18|c<<12|l<<6|d;u>65535&&(u-=65536,o.push(u>>>10&1023|55296),u=56320|u&1023),o.push(u)}else o.push(a);o.length>=Ut&&(s+=String.fromCharCode(...o),o.length=0)}return o.length>0&&(s+=String.fromCharCode(...o)),s}var Lt=new TextDecoder,Bt=200;function Mt(i,e,t){let r=i.subarray(e,e+t);return Lt.decode(r)}function at(i,e,t){return t>Bt?Mt(i,e,t):De(i,e,t)}var C=class{constructor(e,t){this.type=e,this.data=t}};var b=class i extends Error{constructor(e){super(e);let t=Object.create(i.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:i.name})}};function ct(i,e,t){let r=t/4294967296,n=t;i.setUint32(e,r),i.setUint32(e+4,n)}function ue(i,e,t){let r=Math.floor(t/4294967296),n=t;i.setUint32(e,r),i.setUint32(e+4,n)}function pe(i,e){let t=i.getInt32(e),r=i.getUint32(e+4);return t*4294967296+r}function lt(i,e){let t=i.getUint32(e),r=i.getUint32(e+4);return t*4294967296+r}var Ot=-1,Ft=4294967296-1,Gt=17179869184-1;function Wt({sec:i,nsec:e}){if(i>=0&&e>=0&&i<=Gt)if(e===0&&i<=Ft){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,i),t}else{let t=i/4294967296,r=i&4294967295,n=new Uint8Array(8),o=new DataView(n.buffer);return o.setUint32(0,e<<2|t&3),o.setUint32(4,r),n}else{let t=new Uint8Array(12),r=new DataView(t.buffer);return r.setUint32(0,e),ue(r,4,i),t}}function $t(i){let e=i.getTime(),t=Math.floor(e/1e3),r=(e-t*1e3)*1e6,n=Math.floor(r/1e9);return{sec:t+n,nsec:r-n*1e9}}function Ht(i){if(i instanceof Date){let e=$t(i);return Wt(e)}else return null}function Kt(i){let e=new DataView(i.buffer,i.byteOffset,i.byteLength);switch(i.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),r=e.getUint32(4),n=(t&3)*4294967296+r,o=t>>>2;return{sec:n,nsec:o}}case 12:{let t=pe(e,4),r=e.getUint32(0);return{sec:t,nsec:r}}default:throw new b(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${i.length}`)}}function zt(i){let e=Kt(i);return new Date(e.sec*1e3+e.nsec/1e6)}var ut={type:Ot,encode:Ht,decode:zt};var S=class{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(ut)}register({type:e,encode:t,decode:r}){if(e>=0)this.encoders[e]=t,this.decoders[e]=r;else{let n=-1-e;this.builtInEncoders[n]=t,this.builtInDecoders[n]=r}}tryToEncode(e,t){for(let r=0;r<this.builtInEncoders.length;r++){let n=this.builtInEncoders[r];if(n!=null){let o=n(e,t);if(o!=null){let s=-1-r;return new C(s,o)}}}for(let r=0;r<this.encoders.length;r++){let n=this.encoders[r];if(n!=null){let o=n(e,t);if(o!=null){let s=r;return new C(s,o)}}}return e instanceof C?e:null}decode(e,t,r){let n=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return n?n(e,t,r):new C(t,e)}};S.defaultCodec=new S;function qt(i){return i instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&i instanceof SharedArrayBuffer}function X(i){return i instanceof Uint8Array?i:ArrayBuffer.isView(i)?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):qt(i)?new Uint8Array(i):Uint8Array.from(i)}var Vt=100,jt=2048,he=class i{constructor(e){this.entered=!1,this.extensionCodec=e?.extensionCodec??S.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??Vt,this.initialBufferSize=e?.initialBufferSize??jt,this.sortKeys=e?.sortKeys??!1,this.forceFloat32=e?.forceFloat32??!1,this.ignoreUndefined=e?.ignoreUndefined??!1,this.forceIntegerToFloat=e?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new i({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef(e){if(this.entered)return this.clone().encodeSharedRef(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode(e){if(this.entered)return this.clone().encode(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode(e,t){if(t>this.maxDepth)throw new Error(`Too deep objects in depth ${t}`);e==null?this.encodeNil():typeof e=="boolean"?this.encodeBoolean(e):typeof e=="number"?this.forceIntegerToFloat?this.encodeNumberAsFloat(e):this.encodeNumber(e):typeof e=="string"?this.encodeString(e):this.useBigInt64&&typeof e=="bigint"?this.encodeBigInt64(e):this.encodeObject(e,t)}ensureBufferSizeToWrite(e){let t=this.pos+e;this.view.byteLength<t&&this.resizeBuffer(t*2)}resizeBuffer(e){let t=new ArrayBuffer(e),r=new Uint8Array(t),n=new DataView(t);r.set(this.bytes),this.view=n,this.bytes=r}encodeNil(){this.writeU8(192)}encodeBoolean(e){e===!1?this.writeU8(194):this.writeU8(195)}encodeNumber(e){!this.forceIntegerToFloat&&Number.isSafeInteger(e)?e>=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(211),this.writeI64(e)):this.encodeNumberAsFloat(e)}encodeNumberAsFloat(e){this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}encodeBigInt64(e){e>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(e)):(this.writeU8(211),this.writeBigInt64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else if(e<4294967296)this.writeU8(219),this.writeU32(e);else throw new Error(`Too long string: ${e} bytes in UTF-8`)}encodeString(e){let r=ot(e);this.ensureBufferSizeToWrite(5+r),this.writeStringHeader(r),st(e,this.bytes,this.pos),this.pos+=r}encodeObject(e,t){let r=this.extensionCodec.tryToEncode(e,this.context);if(r!=null)this.encodeExtension(r);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else if(typeof e=="object")this.encodeMap(e,t);else throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(e)}`)}encodeBinary(e){let t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else if(t<4294967296)this.writeU8(198),this.writeU32(t);else throw new Error(`Too large binary: ${t}`);let r=X(e);this.writeU8a(r)}encodeArray(e,t){let r=e.length;if(r<16)this.writeU8(144+r);else if(r<65536)this.writeU8(220),this.writeU16(r);else if(r<4294967296)this.writeU8(221),this.writeU32(r);else throw new Error(`Too large array: ${r}`);for(let n of e)this.doEncode(n,t+1)}countWithoutUndefined(e,t){let r=0;for(let n of t)e[n]!==void 0&&r++;return r}encodeMap(e,t){let r=Object.keys(e);this.sortKeys&&r.sort();let n=this.ignoreUndefined?this.countWithoutUndefined(e,r):r.length;if(n<16)this.writeU8(128+n);else if(n<65536)this.writeU8(222),this.writeU16(n);else if(n<4294967296)this.writeU8(223),this.writeU32(n);else throw new Error(`Too large map object: ${n}`);for(let o of r){let s=e[o];this.ignoreUndefined&&s===void 0||(this.encodeString(o),this.doEncode(s,t+1))}}encodeExtension(e){if(typeof e.data=="function"){let r=e.data(this.pos+6),n=r.length;if(n>=4294967296)throw new Error(`Too large extension object: ${n}`);this.writeU8(201),this.writeU32(n),this.writeI8(e.type),this.writeU8a(r);return}let t=e.data.length;if(t===1)this.writeU8(212);else if(t===2)this.writeU8(213);else if(t===4)this.writeU8(214);else if(t===8)this.writeU8(215);else if(t===16)this.writeU8(216);else if(t<256)this.writeU8(199),this.writeU8(t);else if(t<65536)this.writeU8(200),this.writeU16(t);else if(t<4294967296)this.writeU8(201),this.writeU32(t);else throw new Error(`Too large extension object: ${t}`);this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){let t=e.length;this.ensureBufferSizeToWrite(t),this.bytes.set(e,this.pos),this.pos+=t}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),ct(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),ue(this.view,this.pos,e),this.pos+=8}writeBigUint64(e){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,e),this.pos+=8}writeBigInt64(e){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,e),this.pos+=8}};function Ce(i,e){return new he(e).encodeSharedRef(i)}function de(i){return`${i<0?"-":""}0x${Math.abs(i).toString(16).padStart(2,"0")}`}var Qt=16,Xt=16,fe=class{constructor(e=Qt,t=Xt){this.hit=0,this.miss=0,this.maxKeyLength=e,this.maxLengthPerKey=t,this.caches=[];for(let r=0;r<this.maxKeyLength;r++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,r){let n=this.caches[r-1];e:for(let o of n){let s=o.bytes;for(let a=0;a<r;a++)if(s[a]!==e[t+a])continue e;return o.str}return null}store(e,t){let r=this.caches[e.length-1],n={bytes:e,str:t};r.length>=this.maxLengthPerKey?r[Math.random()*r.length|0]=n:r.push(n)}decode(e,t,r){let n=this.find(e,t,r);if(n!=null)return this.hit++,n;this.miss++;let o=De(e,t,r),s=Uint8Array.prototype.slice.call(e,t,t+r);return this.store(s,o),o}};var Ne="array",Z="map_key",ht="map_value",Jt=i=>{if(typeof i=="string"||typeof i=="number")return i;throw new b("The type of key must be string or number but "+typeof i)},Re=class{constructor(){this.stack=[],this.stackHeadPosition=-1}get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){let t=this.getUninitializedStateFromPool();t.type=Ne,t.position=0,t.size=e,t.array=new Array(e)}pushMapState(e){let t=this.getUninitializedStateFromPool();t.type=Z,t.readCount=0,t.size=e,t.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){let e={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push(e)}return this.stack[this.stackHeadPosition]}release(e){if(this.stack[this.stackHeadPosition]!==e)throw new Error("Invalid stack state. Released state is not on top of the stack.");if(e.type===Ne){let r=e;r.size=0,r.array=void 0,r.position=0,r.type=void 0}if(e.type===Z||e.type===ht){let r=e;r.size=0,r.map=void 0,r.readCount=0,r.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}},Y=-1,Ae=new DataView(new ArrayBuffer(0)),Yt=new Uint8Array(Ae.buffer);try{Ae.getInt8(0)}catch(i){if(!(i instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}var pt=new RangeError("Insufficient data"),Zt=new fe,ge=class i{constructor(e){this.totalPos=0,this.pos=0,this.view=Ae,this.bytes=Yt,this.headByte=Y,this.stack=new Re,this.entered=!1,this.extensionCodec=e?.extensionCodec??S.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.rawStrings=e?.rawStrings??!1,this.maxStrLength=e?.maxStrLength??4294967295,this.maxBinLength=e?.maxBinLength??4294967295,this.maxArrayLength=e?.maxArrayLength??4294967295,this.maxMapLength=e?.maxMapLength??4294967295,this.maxExtLength=e?.maxExtLength??4294967295,this.keyDecoder=e?.keyDecoder!==void 0?e.keyDecoder:Zt,this.mapKeyConverter=e?.mapKeyConverter??Jt}clone(){return new i({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=Y,this.stack.reset()}setBuffer(e){let t=X(e);this.bytes=t,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength),this.pos=0}appendBuffer(e){if(this.headByte===Y&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),r=X(e),n=new Uint8Array(t.length+r.length);n.set(t),n.set(r,t.length),this.setBuffer(n)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:r}=this;return new RangeError(`Extra ${t.byteLength-r} of ${t.byteLength} byte(s) found at buffer[${e}]`)}decode(e){if(this.entered)return this.clone().decode(e);try{this.entered=!0,this.reinitializeState(),this.setBuffer(e);let t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t}finally{this.entered=!1}}*decodeMulti(e){if(this.entered){yield*this.clone().decodeMulti(e);return}try{for(this.entered=!0,this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(e){if(this.entered)return this.clone().decodeAsync(e);try{this.entered=!0;let t=!1,r;for await(let a of e){if(t)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{r=this.doDecodeSync(),t=!0}catch(c){if(!(c instanceof RangeError))throw c}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return r}let{headByte:n,pos:o,totalPos:s}=this;throw new RangeError(`Insufficient data in parsing ${de(n)} at ${s} (${o} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,t){if(this.entered){yield*this.clone().decodeMultiAsync(e,t);return}try{this.entered=!0;let r=t,n=-1;for await(let o of e){if(t&&n===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(o),r&&(n=this.readArraySize(),r=!1,this.complete());try{for(;yield this.doDecodeSync(),--n!==0;);}catch(s){if(!(s instanceof RangeError))throw s}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){e:for(;;){let e=this.readHeadByte(),t;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){let n=e-128;if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e<160){let n=e-144;if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else{let n=e-160;t=this.decodeString(n,0)}else if(e===192)t=null;else if(e===194)t=!1;else if(e===195)t=!0;else if(e===202)t=this.readF32();else if(e===203)t=this.readF64();else if(e===204)t=this.readU8();else if(e===205)t=this.readU16();else if(e===206)t=this.readU32();else if(e===207)this.useBigInt64?t=this.readU64AsBigInt():t=this.readU64();else if(e===208)t=this.readI8();else if(e===209)t=this.readI16();else if(e===210)t=this.readI32();else if(e===211)this.useBigInt64?t=this.readI64AsBigInt():t=this.readI64();else if(e===217){let n=this.lookU8();t=this.decodeString(n,1)}else if(e===218){let n=this.lookU16();t=this.decodeString(n,2)}else if(e===219){let n=this.lookU32();t=this.decodeString(n,4)}else if(e===220){let n=this.readU16();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===221){let n=this.readU32();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===222){let n=this.readU16();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===223){let n=this.readU32();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===196){let n=this.lookU8();t=this.decodeBinary(n,1)}else if(e===197){let n=this.lookU16();t=this.decodeBinary(n,2)}else if(e===198){let n=this.lookU32();t=this.decodeBinary(n,4)}else if(e===212)t=this.decodeExtension(1,0);else if(e===213)t=this.decodeExtension(2,0);else if(e===214)t=this.decodeExtension(4,0);else if(e===215)t=this.decodeExtension(8,0);else if(e===216)t=this.decodeExtension(16,0);else if(e===199){let n=this.lookU8();t=this.decodeExtension(n,1)}else if(e===200){let n=this.lookU16();t=this.decodeExtension(n,2)}else if(e===201){let n=this.lookU32();t=this.decodeExtension(n,4)}else throw new b(`Unrecognized type byte: ${de(e)}`);this.complete();let r=this.stack;for(;r.length>0;){let n=r.top();if(n.type===Ne)if(n.array[n.position]=t,n.position++,n.position===n.size)t=n.array,r.release(n);else continue e;else if(n.type===Z){if(t==="__proto__")throw new b("The key __proto__ is not allowed");n.key=this.mapKeyConverter(t),n.type=ht;continue e}else if(n.map[n.key]=t,n.readCount++,n.readCount===n.size)t=n.map,r.release(n);else{n.key=null,n.type=Z;continue e}}return t}}readHeadByte(){return this.headByte===Y&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=Y}readArraySize(){let e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:{if(e<160)return e-144;throw new b(`Unrecognized array type byte: ${de(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new b(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new b(`Max length exceeded: array length (${e}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState(e)}decodeString(e,t){return!this.rawStrings||this.stateIsMapKey()?this.decodeUtf8String(e,t):this.decodeBinary(e,t)}decodeUtf8String(e,t){if(e>this.maxStrLength)throw new b(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw pt;let r=this.pos+t,n;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?n=this.keyDecoder.decode(this.bytes,r,e):n=at(this.bytes,r,e),this.pos+=t+e,n}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===Z:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new b(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw pt;let r=this.pos+t,n=this.bytes.subarray(r,r+e);return this.pos+=t+e,n}decodeExtension(e,t){if(e>this.maxExtLength)throw new b(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let r=this.view.getInt8(this.pos+t),n=this.decodeBinary(e,t+1);return this.extensionCodec.decode(n,r,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){let e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){let e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){let e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){let e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){let e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){let e=lt(this.view,this.pos);return this.pos+=8,e}readI64(){let e=pe(this.view,this.pos);return this.pos+=8,e}readU64AsBigInt(){let e=this.view.getBigUint64(this.pos);return this.pos+=8,e}readI64AsBigInt(){let e=this.view.getBigInt64(this.pos);return this.pos+=8,e}readF32(){let e=this.view.getFloat32(this.pos);return this.pos+=4,e}readF64(){let e=this.view.getFloat64(this.pos);return this.pos+=8,e}};function _e(i,e){return new ge(e).decode(i)}var me=class{constructor(e){this.error=e}},er=i=>new Promise(e=>{setTimeout(e,i)}),tr=(i,e)=>{let t=e.randomize?Math.random()+1:1,r=Math.max(e.minTimeout,1)*Math.pow(e.factor,i-1);return Math.round(Math.min(t*r,e.maxTimeout))};async function ee(i,e={}){let t={retries:e.retries??10,minTimeout:e.minTimeout??1e3,maxTimeout:e.maxTimeout??1/0,factor:e.factor??2,randomize:e.randomize??!0},r=o=>{throw new me(o??new Error("Aborted"))},n;for(let o=1;o<=t.retries+1;o++)try{return await i(r,o)}catch(s){if(s instanceof me)throw s.error;if(n=s,o>t.retries)throw s;await e.onRetry?.(s,o),await er(tr(o,t))}throw n}var Be={};tt(Be,{default:()=>Le});var Ue=function(i,e){return Ue=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},Ue(i,e)};function dt(i,e){Ue(i,e);function t(){this.constructor=i}i.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function rr(i){var e=typeof Symbol=="function"&&i[Symbol.iterator],t=0;return e?e.call(i):{next:function(){return i&&t>=i.length&&(i=void 0),{value:i&&i[t++],done:!i}}}}function nr(i,e){var t=typeof Symbol=="function"&&i[Symbol.iterator];if(!t)return i;var r=t.call(i),n,o=[],s;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)o.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(s)throw s.error}}return o}function ir(){for(var i=[],e=0;e<arguments.length;e++)i=i.concat(nr(arguments[e]));return i}var ft=(function(){function i(e,t){this.target=t,this.type=e}return i})(),or=(function(i){dt(e,i);function e(t,r){var n=i.call(this,"error",r)||this;return n.message=t.message,n.error=t,n}return e})(ft),sr=(function(i){dt(e,i);function e(t,r,n){t===void 0&&(t=1e3),r===void 0&&(r="");var o=i.call(this,"close",n)||this;return o.wasClean=!0,o.code=t,o.reason=r,o}return e})(ft);var ar=function(){if(typeof WebSocket<"u")return WebSocket},cr=function(i){return typeof i<"u"&&!!i&&i.CLOSING===2},N={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},lr=(function(){function i(e,t,r){var n=this;r===void 0&&(r={}),this._listeners={error:[],message:[],open:[],close:[]},this._retryCount=-1,this._shouldReconnect=!0,this._connectLock=!1,this._binaryType="blob",this._closeCalled=!1,this._messageQueue=[],this.onclose=null,this.onerror=null,this.onmessage=null,this.onopen=null,this._handleOpen=function(o){n._debug("open event");var s=n._options.minUptime,a=s===void 0?N.minUptime:s;clearTimeout(n._connectTimeout),n._uptimeTimeout=setTimeout(function(){return n._acceptOpen()},a),n._ws.binaryType=n._binaryType,n._messageQueue.forEach(function(c){return n._ws.send(c)}),n._messageQueue=[],n.onopen&&n.onopen(o),n._listeners.open.forEach(function(c){return n._callEventListener(o,c)})},this._handleMessage=function(o){n._debug("message event"),n.onmessage&&n.onmessage(o),n._listeners.message.forEach(function(s){return n._callEventListener(o,s)})},this._handleError=function(o){n._debug("error event",o.message),n._disconnect(void 0,o.message==="TIMEOUT"?"timeout":void 0),n.onerror&&n.onerror(o),n._debug("exec error listeners"),n._listeners.error.forEach(function(s){return n._callEventListener(o,s)}),n._connect()},this._handleClose=function(o){n._debug("close event"),n._clearTimeouts(),n._shouldReconnect&&n._connect(),n.onclose&&n.onclose(o),n._listeners.close.forEach(function(s){return n._callEventListener(o,s)})},this._url=e,this._protocols=t,this._options=r,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(i,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(i,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(i,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(i,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CONNECTING",{get:function(){return i.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"OPEN",{get:function(){return i.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CLOSING",{get:function(){return i.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CLOSED",{get:function(){return i.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"binaryType",{get:function(){return this._ws?this._ws.binaryType:this._binaryType},set:function(e){this._binaryType=e,this._ws&&(this._ws.binaryType=e)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"bufferedAmount",{get:function(){var e=this._messageQueue.reduce(function(t,r){return typeof r=="string"?t+=r.length:r instanceof Blob?t+=r.size:t+=r.byteLength,t},0);return e+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?i.CLOSED:i.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),i.prototype.close=function(e,t){if(e===void 0&&(e=1e3),this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(e,t)},i.prototype.reconnect=function(e,t){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(e,t),this._connect())},i.prototype.send=function(e){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",e),this._ws.send(e);else{var t=this._options.maxEnqueuedMessages,r=t===void 0?N.maxEnqueuedMessages:t;this._messageQueue.length<r&&(this._debug("enqueue",e),this._messageQueue.push(e))}},i.prototype.addEventListener=function(e,t){this._listeners[e]&&this._listeners[e].push(t)},i.prototype.dispatchEvent=function(e){var t,r,n=this._listeners[e.type];if(n)try{for(var o=rr(n),s=o.next();!s.done;s=o.next()){var a=s.value;this._callEventListener(e,a)}}catch(c){t={error:c}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return!0},i.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter(function(r){return r!==t}))},i.prototype._debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._options.debug&&console.log.apply(console,ir(["RWS>"],e))},i.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,r=t===void 0?N.reconnectionDelayGrowFactor:t,n=e.minReconnectionDelay,o=n===void 0?N.minReconnectionDelay:n,s=e.maxReconnectionDelay,a=s===void 0?N.maxReconnectionDelay:s,c=0;return this._retryCount>0&&(c=o*Math.pow(r,this._retryCount-1),c>a&&(c=a)),this._debug("next delay",c),c},i.prototype._wait=function(){var e=this;return new Promise(function(t){setTimeout(t,e._getNextDelay())})},i.prototype._getNextUrl=function(e){if(typeof e=="string")return Promise.resolve(e);if(typeof e=="function"){var t=e();if(typeof t=="string")return Promise.resolve(t);if(t.then)return t}throw Error("Invalid URL")},i.prototype._connect=function(){var e=this;if(!(this._connectLock||!this._shouldReconnect)){this._connectLock=!0;var t=this._options,r=t.maxRetries,n=r===void 0?N.maxRetries:r,o=t.connectionTimeout,s=o===void 0?N.connectionTimeout:o,a=t.WebSocket,c=a===void 0?ar():a;if(this._retryCount>=n){this._debug("max retries reached",this._retryCount,">=",n);return}if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),!cr(c))throw Error("No valid WebSocket class provided");this._wait().then(function(){return e._getNextUrl(e._url)}).then(function(l){e._closeCalled||(e._debug("connect",{url:l,protocols:e._protocols}),e._ws=e._protocols?new c(l,e._protocols):new c(l),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout(function(){return e._handleTimeout()},s))})}},i.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new or(Error("TIMEOUT"),this))},i.prototype._disconnect=function(e,t){if(e===void 0&&(e=1e3),this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(e,t),this._handleClose(new sr(e,t,this))}catch{}}},i.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},i.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},i.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},i.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},i.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},i})(),Le=lr;var ur=i=>{if(typeof i=="number")return{0:"CONNECTING",1:"OPEN",2:"CLOSING",3:"CLOSED"}[i]??`STATE_${i}`},pr=i=>{try{let e=new URL(i);return`${e.origin}${e.pathname}`}catch{return i}},gt=i=>{if(i instanceof Error)return i.message?`${i.name}: ${i.message}`:i.name;if(typeof i=="string")return i;if(!i||typeof i!="object")return;let e=i,t=typeof e.message=="string"&&e.message?e.message:typeof e.reason=="string"&&e.reason?e.reason:void 0;if(!t)return;let r=typeof e.name=="string"&&e.name?e.name:void 0;return r?`${r}: ${t}`:t},be=i=>{if(i instanceof Error)return i.message?`${i.name}: ${i.message}`:i.name;if(typeof i=="string")return i;if(!i||typeof i!="object")return String(i);let e=i,t=[],r=gt(e);r&&t.push(r);let n=gt(e.error);n&&n!==r&&t.push(`error=${n}`),typeof e.type=="string"&&e.type&&t.push(`type=${e.type}`),typeof e.code=="number"&&t.push(`code=${e.code}`),typeof e.reason=="string"&&e.reason&&e.reason!==r&&t.push(`reason=${e.reason}`),typeof e.wasClean=="boolean"&&t.push(`wasClean=${e.wasClean}`);let o=e.target??e.currentTarget;if(o&&typeof o=="object"){typeof o.url=="string"&&o.url&&t.push(`url=${pr(o.url)}`);let s=ur(o.readyState);s&&t.push(`readyState=${s}`)}return t.length>0?t.join(" | "):"Unknown websocket event"};var U=null;typeof WebSocket<"u"?U=WebSocket:typeof MozWebSocket<"u"?U=MozWebSocket:typeof global<"u"?U=global.WebSocket||global.MozWebSocket:typeof window<"u"?U=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(U=self.WebSocket||self.MozWebSocket);var mt=U;var ve=class{constructor(){this.disposables=new Map}add(e,t){this.disposables.has(e)&&(console.warn(`Disposable with key "${e}" already exists. Disposing the old one.`),this.disposables.get(e)?.dispose()),typeof t=="function"&&(t=t()),this.disposables.set(e,t)}dispose(){this.disposables.forEach(e=>e.dispose()),this.disposables.clear()}};var hr=Le??Be;var Me=class extends Error{constructor(e="WebSocket connection timeout"){super(e),this.name="ConnectionTimeoutError"}},te=class extends Error{constructor(t,r){super(t);this.originalError=r;this.name="ConnectionFailedError"}},R=class extends Error{constructor(t,r){super(t);this.data=r;this.name="InvalidMessageError"}},A=class extends Error{constructor(e){super(e),this.name="InvalidConfigurationError"}},I,Oe,Fe,re=class{constructor(e,t,r={}){this.eventEmitter=t;this.options=r;B(this,I);this.clientId="";this.closed=!1;this.disposables=new ve;this.connectPromise=null;this.terminalError=null;this.pingIntervalStarted=!1;this.incomingMessageChain=Promise.resolve();this.validateConfiguration(r),this.url=new URL(e),this.PING_INTERVAL=r.pingInterval??3e4,this.CONNECT_WAIT_TIMEOUT=r.connectWaitTimeout??3e4;let n=r.startClosed!==!1;this.rws=new hr(this.url.toString(),[],{WebSocket:r.webSocket??globalThis.WebSocket??mt,connectionTimeout:r.connectionTimeout,maxReconnectionDelay:2e3,minReconnectionDelay:200,maxEnqueuedMessages:0,maxRetries:r.maxRetries??50,startClosed:n}),this.log("debug","Transport initialized",{url:this.url.toString(),options:r}),this.registerWatchers()}validateConfiguration(e){if(e.pingInterval!==void 0&&(e.pingInterval<1e3||e.pingInterval>3e5))throw new A("pingInterval must be between 1000ms and 300000ms");if(e.connectionTimeout!==void 0&&(e.connectionTimeout<100||e.connectionTimeout>3e4))throw new A("connectionTimeout must be between 100ms and 30000ms");if(e.connectWaitTimeout!==void 0&&(e.connectWaitTimeout<1e3||e.connectWaitTimeout>3e5))throw new A("connectWaitTimeout must be between 1000ms and 300000ms");if(e.maxRetries!==void 0&&(e.maxRetries<0||e.maxRetries>100))throw new A("maxRetries must be between 0 and 100")}log(e,t,r){if(this.options.debug){let n=new Date().toISOString(),o=r?JSON.stringify(r,null,2):"";console[e](`[Transport ${n}] ${t}${o?`
2
+ `+o:""}`)}}connect(){return this.terminalError?Promise.reject(this.terminalError):x(this,I,Oe).call(this)}id(){return this.clientId}async registerWatchers(){let e=t=>{this.incomingMessageChain=this.incomingMessageChain.catch(()=>{}).then(()=>this.processIncomingMessage(t)).catch(r=>{this.log("error","Failed to process queued WebSocket frame",{error:r instanceof Error?r.message:String(r)}),this.eventEmitter.emit("transport.error",{type:"message_handle_error",error:r,rawMessage:t.data,timestamp:Date.now()})})};this.rws.addEventListener("message",e),this.disposables.add("message",{dispose:()=>{this.rws.removeEventListener("message",e)}})}async processIncomingMessage(e){let t;try{t=await this.toArrayBuffer(e.data)}catch(n){this.log("error","Unexpected WebSocket message type",{error:n instanceof Error?n.message:String(n),messageType:typeof e.data}),this.eventEmitter.emit("transport.error",{type:"message_type_error",error:n,rawMessage:e.data,timestamp:Date.now()});return}if(t.byteLength===0){this.log("warn","Ignoring empty WebSocket frame");return}let r;try{r=_e(t)}catch(n){this.log("error","Failed to decode WebSocket frame",{error:n instanceof Error?n.message:String(n),byteLength:t.byteLength}),this.eventEmitter.emit("transport.error",{type:"message_decode_error",error:n,rawMessage:t,timestamp:Date.now()});return}try{await this.handleRawMessage(r)}catch(n){this.log("error","Failed to process WebSocket frame",{error:n instanceof Error?n.message:String(n),byteLength:t.byteLength}),this.eventEmitter.emit("transport.error",{type:"message_handle_error",error:n,rawMessage:t,timestamp:Date.now()})}}async toArrayBuffer(e){if(e instanceof Blob)return e.arrayBuffer();if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength).slice().buffer;throw new Error("Unexpected message type: "+typeof e)}async handleRawMessage(e){if(this.closed){this.log("debug","Ignoring message received after transport was closed");return}if(typeof e!="object"||e===null){this.log("debug","Received invalid message format",{ev:e});return}try{let{data:t,event:r,as:n}=e;if(!r||typeof r!="string")throw new R("Message missing event field",e);if(this.log("debug","Processing message",{event:r,hasData:!!t}),r==="App.Actions.GetClientId"){this.clientId=t.id,this.log("info","Client ID received",{clientId:this.clientId});return}if(r==="Events.BootError"){let o=t,s=new E(o?.message||"Notebook is no longer available",o||{});this.log("error","Boot error received",{data:t}),this.terminate(s,4e3,s.message);return}if(r==="response"){let{responseEvent:o,data:s}=t;if(!o)throw new R("Response message missing responseEvent",e);this.log("debug","Response message received",{responseEvent:o}),await this.handleMessage(o,s);return}if(r==="error"){let{errorEvent:o,data:s}=t;if(!o)throw new R("Error message missing errorEvent",e);this.log("debug","Error message received",{errorEvent:o,errorData:s}),await this.handleMessage(o,s);return}await this.handleMessage(r,t,n)}catch(t){t instanceof R?this.log("error","Invalid message format",{error:t.message,data:t.data}):this.log("error","Failed to parse message",{ev:e,error:t instanceof Error?t.message:String(t)}),this.eventEmitter.emit("transport.error",{type:"message_parse_error",error:t,rawMessage:e,timestamp:Date.now()})}}async handleMessage(e,t,r){if(e==="App.Actions.GetClientId"){this.clientId=t.id,this.eventEmitter.emit(e,this.clientId);return}e&&this.eventEmitter.emit(r||e,t)}listen(e,t,r){return this.eventEmitter.listen(e,t)}onDidBootError(e){return this.eventEmitter.listen("transport.boot_error",t=>{e(t.error)})}removeListener(e,t){this.eventEmitter.removeListener(e,t)}listenOnce(e,t,r){return this.eventEmitter.once(e,t,r)}emit(e,...t){this.eventEmitter.emit(e,...t)}get isConnected(){return this.status==="OPEN"}get isConnecting(){return this.status==="CONNECTING"}get isDisconnected(){return this.status==="CLOSED"}get isClosed(){return this.closed}getTerminalError(){return this.terminalError}get status(){return{0:"CONNECTING",1:"OPEN",2:"CLOSING",3:"CLOSED"}[this.rws.readyState]}async call(e,t={},r={}){if(this.terminalError)throw this.terminalError;let n=r.responseEvent||`${e}_${m()}_response`,o=`${n}_error`,s,a,c=()=>{s&&(this.rws.removeEventListener("close",s),this.rws.removeEventListener("error",s)),a&&(r.abortSignal?.removeEventListener("abort",a),a=void 0),this.eventEmitter.removeListener(n),this.eventEmitter.removeListener(o)},l=(g,p)=>{if(this.terminalError){p(this.terminalError);return}let f=new DOMException("Request aborted","AbortError");if(r.abortSignal?.aborted){p(f);return}if(r.abortSignal&&(a=()=>{p(f)},r.abortSignal.addEventListener("abort",a,{once:!0})),!this.isConnected||this.isClosed){p(new te(`Connection is not open while sending ${e}. Current status: ${this.status}`));return}this.listenOnce(n,h=>{this.log("debug","Message response received",{action:e}),g(h)}),this.listenOnce(o,h=>{this.log("error","Message error received",{action:e,error:h});let k=h;p(new y(k.code,k.message,k))}),s=h=>{if(h.code===1008&&(h.reason||"").includes("rate limit")){p(new M(h.reason||"Rate limit exceeded",h));return}let k=be(h);p(this.terminalError||new te(`Connection lost to the notebook during request: ${k}`,h))},this.rws.addEventListener("close",s),this.rws.addEventListener("error",s);try{this.rws.send(this.pack({action:e,data:t,errorEvent:o,responseEvent:n})),this.log("debug","Message sent",{action:e,data:t})}catch(h){this.log("error","Failed to send message",{action:e,error:h}),p(h)}},d=async()=>{if(r.abortSignal?.aborted)throw new DOMException("Request aborted","AbortError");if(await x(this,I,Oe).call(this),r.abortSignal?.aborted)throw new DOMException("Request aborted","AbortError");let g=new Promise(l).finally(c);return r.timeout?ce(g,r.timeout).catch(p=>{throw p instanceof D?O.fromPromiseTimeoutError(p):p}).finally(c):g},u=r.retries===!1?0:r.retries??0;return this.sendWithRetry(async()=>await d(),u)}send(e,t={}){if(this.terminalError)throw this.terminalError;if(!this.isConnected||this.isClosed)return this.log("debug","Connection not available, dropping one-way message",{action:e}),!1;try{return this.rws.send(this.pack({action:e,data:t})),this.log("debug","One-way message sent",{action:e,data:t}),!0}catch(r){return this.log("error","Failed to send one-way message",{action:e,error:r}),!1}}pack(e){return new Blob([Ce(e)])}sendWithRetry(e,t){return ee(async(r,n)=>{try{return await e()}catch(o){if(o instanceof y||o instanceof M||o instanceof A||o instanceof R||o instanceof E||o instanceof DOMException){this.log("debug","Non-retryable error, bailing",{error:o.message,attempt:n}),r(o);return}throw o instanceof O&&(this.reconnect(),this.log("warn","Send operation timed out, connection reset",{attempt:n,timeout:o.time})),this.log("debug","Retrying send operation",{attempt:n,error:o instanceof Error?o.message:String(o)}),o}},{retries:t,onRetry:(r,n)=>{this.log("warn","Send operation retry",{attempt:n,maxRetries:t,error:r instanceof Error?r.message:String(r)})},minTimeout:1e3,factor:2,maxTimeout:3e4,randomize:!0})}invoke(e,t={},r={}){return r.responseEvent||(r.responseEvent=`${e}_${m()}`),this.call("invoke",{action:e,data:t},r)}reconnect(){if(this.terminalError)throw this.terminalError;if(this.closed)throw new Error("Cannot reconnect a closed transport. The transport has been permanently closed.");this.log("info","Reconnecting transport"),this.connectPromise=null,this.rws.reconnect()}disconnect(){this.closed||this.close()}terminate(e,t=4e3,r=e.message){this.terminalError=e,e instanceof E&&this.eventEmitter.emit("transport.boot_error",{error:e,timestamp:Date.now()}),this.close(t,r)}close(e,t){if(!this.closed){this.log("info","Closing transport connection",{code:e,reason:t}),this.connectPromise=null,this.disposables.dispose();try{this.rws.close(e,t)}catch(r){this.log("error","Error closing WebSocket",{error:r instanceof Error?r.message:String(r)})}this.eventEmitter.emit("transport.closed",{code:e,reason:t,timestamp:Date.now()}),this.eventEmitter.removeListener("*"),this.closed=!0,this.log("info","Transport connection closed successfully")}}onDidConnect(e){this.rws.addEventListener("open",e);let t={dispose:()=>{this.rws.removeEventListener("open",e)}};return this.disposables.add(`connect_${m()}`,t),t}onDidClose(e){this.rws.addEventListener("close",e);let t={dispose:()=>{this.rws.removeEventListener("close",e)}};return this.disposables.add(`close_${m()}`,t),t}};I=new WeakSet,Oe=function(){return this.terminalError?Promise.reject(this.terminalError):this.isConnected?Promise.resolve():this.connectPromise?this.connectPromise:(this.connectPromise=new Promise((e,t)=>{if(this.isConnected){e(),x(this,I,Fe).call(this);return}let r,n=0,o=()=>{this.rws.removeEventListener("open",s),this.rws.removeEventListener("error",a),this.rws.removeEventListener("close",c),clearTimeout(r)},s=()=>{o(),this.connectPromise=null,e(),x(this,I,Fe).call(this)},a=l=>{n+=1,this.log("warn","WebSocket emitted an error while connecting; waiting for reconnect/open",{errorCount:n,error:be(l)})},c=l=>{let d=be(l);if(l.code===1008||l.code===4e3){o(),this.connectPromise=null,t(new te(`WebSocket connection failed: ${d}`,l));return}this.log("warn","WebSocket closed before opening; waiting for reconnect/open",{error:d})};this.rws.addEventListener("open",s),this.rws.addEventListener("error",a),this.rws.addEventListener("close",c),this.rws.readyState===3&&this.rws.reconnect(),r=setTimeout(()=>{o(),this.connectPromise=null,t(new Me(`WebSocket connection timeout after ${this.CONNECT_WAIT_TIMEOUT}ms`))},this.CONNECT_WAIT_TIMEOUT)}),this.connectPromise)},Fe=function(){this.pingIntervalStarted||this.closed||(this.pingIntervalStarted=!0,this.disposables.add("pingInterval",()=>{let e=setInterval(async()=>{try{this.log("debug","Sending periodic ping"),await this.invoke("ping"),this.log("debug","Ping successful")}catch(t){this.log("error","Ping failed",{error:t instanceof Error?t.message:String(t)})}},this.PING_INTERVAL);return{dispose:()=>{clearInterval(e),this.pingIntervalStarted=!1}}}))};var We={};tt(We,{default:()=>Ge});function Ge(i){return{all:i=i||new Map,on:function(e,t){var r=i.get(e);r?r.push(t):i.set(e,[t])},off:function(e,t){var r=i.get(e);r&&(t?r.splice(r.indexOf(t)>>>0,1):i.set(e,[]))},emit:function(e,t){var r=i.get(e);r&&r.slice().map(function(n){n(t)}),(r=i.get("*"))&&r.slice().map(function(n){n(e,t)})}}}var dr=Ge??We;function fr(i){let e=dr(i);return e.once=(t,r)=>{let n=o=>{e.off(t,n),r(o)};return e.on(t,n),{dispose:()=>{e.off(t,n)}}},e}var _=class i{constructor(){this.emitter=fr()}listen(e,t){let r=()=>{this.removeListener(e,t)};return this.emitter.on(e,t),{dispose:r}}emit(e,...t){this.emitter.emit(e,t.length>1?t:t[0])}once(e,t){return this.emitter.once(e,t)}static make(){return new i}static refresh(){return new i}removeListener(e,t){this.emitter.off(e,t)}static createInstance(){return new i}inspect(){return this.emitter.all}};var ne=class{constructor(e){this.okra=e}checkpoint(e,t,r="main",n=!1){return this.okra.invoke("git.checkpoint",{author:e,message:t,branch:r,allowEmpty:n})}checkout(e,t=!0){return this.okra.invoke("git.checkout",{branch:e,create:t})}sync(e,t,r="main",n,o="both",s=!1){return this.okra.invoke("git.sync",{url:e,author:t,ref:r,token:n,direction:o,force:s})}log(e="main"){return this.okra.invoke("git.log",{ref:e})}diff(e){return this.okra.invoke("git.diff",this.normalizeRemoteInput(e))}merge(e){return this.okra.invoke("git.merge",this.normalizeRemoteInput(e))}conflicts(){return this.okra.invoke("git.conflicts",{})}abortMerge(){return this.okra.invoke("git.resolve",{action:"abort"})}continueMerge(e,t){return this.okra.invoke("git.resolve",{action:"continue",author:e,message:t})}review(){return this.okra.invoke("git.review",{})}stage(e={all:!0}){return this.okra.invoke("git.stage",e)}unstage(e={all:!0}){return this.okra.invoke("git.unstage",e)}revert(e){return this.okra.invoke("git.revert",e)}credentials(){return this.okra.gitCredentials()}restore(e){return this.okra.invoke("git.restore",{ref:e})}status(){return this.okra.invoke("git.status",{})}normalizeRemoteInput(e){if(e.notebookId===void 0)return e;let t=e.notebookId.trim();if(!t)throw new Error("'notebookId' cannot be empty.");if(e.url?.trim())throw new Error("Pass either 'url' or 'notebookId', not both.");if(e.target?.trim())throw new Error("Pass either 'target' or 'notebookId', not both.");let{notebookId:r,...n}=e;return{...n,url:this.gitUrlForNotebook(t)}}gitUrlForNotebook(e){let t=new URL(this.okra.data.gitUrl);return t.username="",t.password="",t.pathname=`/${encodeURIComponent(e)}.git`,t.search="",t.hash="",t.toString()}};var ie=class{constructor(e,t,r){this.onEvent=e;this.onceEvent=t;this.beacon=r;this.urlHistory=[];this.currentIndex=0;this._canGoBack=!1;this._canGoForward=!1;this.beacon=r,this.setupUrlChangeListener(),this.urlHistory.push(r.iframe.src),this.updateNavigationState()}visit(e){if(!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.currentIndex<this.urlHistory.length-1&&(this.urlHistory=this.urlHistory.slice(0,this.currentIndex+1)),this.urlHistory.push(e),this.currentIndex=this.urlHistory.length-1,this.updateNavigationState(),this.emitHistoryChange(e,"push")}setupUrlChangeListener(){this.beacon.on("urlChange",e=>{this.addToHistory(e.newUrl)})}addToHistory(e){this.currentIndex<this.urlHistory.length-1&&(this.urlHistory=this.urlHistory.slice(0,this.currentIndex+1)),this.urlHistory.push(e),this.currentIndex=this.urlHistory.length-1,this.updateNavigationState()}updateNavigationState(){let e=this._canGoBack,t=this._canGoForward;this._canGoBack=this.currentIndex>0,this._canGoForward=this.currentIndex<this.urlHistory.length-1,(e!==this._canGoBack||t!==this._canGoForward)&&this.emitNavigationStateChange()}emitNavigationStateChange(){this.beacon&&this.beacon.emit&&this.beacon.emit("navigationStateChange",{canGoBack:this._canGoBack,canGoForward:this._canGoForward,currentIndex:this.currentIndex,historyLength:this.urlHistory.length,timestamp:Date.now()})}get canGoBack(){return this._canGoBack}get canGoForward(){return this._canGoForward}async goBack(){if(!this.canGoBack)return{success:!1,error:"Cannot go back - no previous history"};this.currentIndex--,this.updateNavigationState();let e=this.urlHistory[this.currentIndex];return this.beacon?(this.beacon.navigate(e),this.emitHistoryChange(e,"back"),{success:!0,url:e}):{success:!1,error:"Beacon reference not set"}}async goForward(){if(!this.canGoForward)return{success:!1,error:"Cannot go forward - no forward history"};this.currentIndex++,this.updateNavigationState();let e=this.urlHistory[this.currentIndex];return this.beacon?(this.beacon.navigate(e),this.emitHistoryChange(e,"forward"),{success:!0,url:e}):{success:!1,error:"Beacon reference not set"}}async reload(){if(this.currentIndex>=0&&this.currentIndex<this.urlHistory.length){let e=this.urlHistory[this.currentIndex];if(!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.emitHistoryChange(e,"reload")}}getCurrentUrl(){return this.currentIndex>=0&&this.currentIndex<this.urlHistory.length?new URL(this.urlHistory[this.currentIndex]):new URL("about:blank")}getHistory(){return[...this.urlHistory]}getCurrentIndex(){return this.currentIndex}canGoBackSync(){return this.currentIndex>0}canGoForwardSync(){return this.currentIndex<this.urlHistory.length-1}emitHistoryChange(e,t){this.beacon&&this.beacon.emit&&this.beacon.emit("historyChange",{url:e,state:null,direction:t,timestamp:Date.now()})}async pushState(e){this.visit(e)}async replaceState(e){if(this.currentIndex>=0&&this.currentIndex<this.urlHistory.length){if(this.urlHistory[this.currentIndex]=e,!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.emitHistoryChange(e,"replace")}else this.visit(e)}async getHistoryLength(){return this.urlHistory.length}async getHistoryState(){return null}async getHistoryInfo(){return{length:this.urlHistory.length,state:null,url:this.urlHistory[this.currentIndex]||"",canGoBack:this.canGoBack,canGoForward:this.canGoForward}}on(e,t){return this.onEvent(e,t)}once(e,t){this.onceEvent(e,t)}};function bt(){if(typeof window>"u")throw new Error("Beacon SDK can only be used in a browser environment")}var L=class extends Error{constructor(t,r){super(t);this.code=r;this.name="BeaconError"}},ye=class extends L{constructor(e,t){super(`Beacon operation '${e}' timed out after ${t}ms`),this.code="TIMEOUT"}},w=class extends L{constructor(e){super(`Beacon connection error: ${e}`),this.code="CONNECTION_ERROR"}},$e=class{constructor(e,t={}){this.messageHandlers=new Map;this.isBeaconReady=!1;this.readyPromise=null;this.isStarted=!1;this.disposables=[];this.messageChannel=null;this.port=null;this.channelEstablished=!1;bt(),this.iframe=e;let r={retries:3,minTimeout:1e3,maxTimeout:5e3,factor:2,randomize:!0};this.options={timeout:1e4,targetOrigin:"*",debug:!1,retry:{...r,...t.retry},...t},this.eventEmitter=_.make(),this.setupMessageChannel(),this.navigator=new ie(this.eventEmitter.listen.bind(this.eventEmitter),this.eventEmitter.once.bind(this.eventEmitter),this)}setupMessageChannel(){let e=t=>{try{if(t.source!==this.iframe.contentWindow)return;let r=t.data;if(!r||typeof r!="object"||!r.type)return;r.type==="beacon:ready-for-channel"&&this.establishChannel().catch(n=>{this.options.debug&&console.error("[Beacon SDK] Channel establishment failed:",n)}),r.type==="beacon:channel-established"&&(this.channelEstablished=!0,this.isBeaconReady=!0,this.emit("ready",r.payload),this.options.debug&&console.log("[Beacon SDK] Channel established and beacon ready"))}catch(r){this.options.debug&&console.error("[Beacon SDK] Message parsing error:",r)}};window.addEventListener("message",e),this.disposables.push({dispose:()=>window.removeEventListener("message",e)})}async establishChannel(){if(!this.iframe.contentWindow)throw new w("Iframe contentWindow not available");this.messageChannel=new MessageChannel,this.port=this.messageChannel.port1,this.port.onmessage=t=>{this.handleBeaconMessage(t.data)},this.port.onmessageerror=t=>{this.options.debug&&console.error("[Beacon SDK] Port message error:",t)},this.port.start();let e={type:"beacon:establish-channel",timestamp:Date.now(),id:this.generateId()};return this.iframe.contentWindow.postMessage(e,"*",[this.messageChannel.port2]),this.options.debug&&console.log("[Beacon SDK] Channel establishment message sent"),new Promise((t,r)=>{let n=setTimeout(()=>{r(new w("Channel establishment timeout"))},this.options.timeout),o=()=>{this.channelEstablished&&this.isBeaconReady?(clearTimeout(n),t()):setTimeout(o,100)};o()})}handleBeaconMessage(e){this.options.debug&&console.log("[Beacon SDK] Received message:",e.type,e.payload);let t=e.type.replace("beacon:","");this.emit(t,e.payload);let r=this.messageHandlers.get(e.type);r&&r.forEach(n=>{try{n(e.payload)}catch(o){this.options.debug&&console.error("[Beacon SDK] Message handler error:",o)}})}waitForBeaconReady(){return ee(async()=>new Promise((e,t)=>{if(this.isBeaconReady&&this.channelEstablished){e();return}let r=this.options.timeout,n=setTimeout(()=>{t(new ye("beacon ready",r))},r),o=this.on("ready",()=>{clearTimeout(n),o.dispose(),e()})}),{retries:this.options.retry?.retries??3,minTimeout:this.options.retry?.minTimeout??1e3,maxTimeout:this.options.retry?.maxTimeout??5e3,factor:this.options.retry?.factor??2,randomize:this.options.retry?.randomize??!0,onRetry:(e,t)=>{if(this.options.debug){let r=e instanceof Error?e.message:String(e);console.warn(`[Beacon SDK] Beacon ready retry attempt ${t}:`,r)}this.isBeaconReady=!1,this.channelEstablished=!1}})}sendMessage(e,t={}){if(!this.port)throw new w("MessagePort not available - channel not established");let r={type:`beacon:${e}`,payload:t,timestamp:Date.now(),source:"parent",id:this.generateId()};try{this.port.postMessage(r),this.options.debug&&console.log("[Beacon SDK] Sent message via port:",r.type,r.payload)}catch(n){throw new w(`Failed to send message via port: ${n instanceof Error?n.message:String(n)}`)}}async sendAndWaitFor(e,t,r={},n){return await this.ready(),ee(async o=>new Promise((s,a)=>{let c=n||this.options.timeout,l=setTimeout(()=>{d.dispose();let u=new ye(e,c);a(u)},c),d=this.eventEmitter.listen(t,u=>{clearTimeout(l),d.dispose(),s(u)});try{this.sendMessage(e,r)}catch(u){clearTimeout(l),d.dispose(),u instanceof w?a(u):o(u)}}),{retries:this.options.retry?.retries??3,minTimeout:this.options.retry?.minTimeout??1e3,maxTimeout:this.options.retry?.maxTimeout??5e3,factor:this.options.retry?.factor??2,randomize:this.options.retry?.randomize??!0,onRetry:(o,s)=>{if(this.options.debug){let a=o instanceof Error?o.message:String(o);console.warn(`[Beacon SDK] Retry attempt ${s} for ${e}:`,a)}}})}generateId(){return`sdk_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}emit(e,t){this.eventEmitter.emit(e,t)}start(){return this.isStarted?this.readyPromise||Promise.resolve():(this.isStarted=!0,this.readyPromise=this.waitForBeaconReady(),this.readyPromise)}async ready(){if(!this.isStarted)throw new L("Beacon has not been started. Call start() first.");if(!this.readyPromise)throw new L("Beacon ready promise is not available");return ce(this.readyPromise,this.options.timeout)}get isReady(){return this.isBeaconReady}on(e,t){return this.eventEmitter.listen(e,t)}once(e,t){return this.eventEmitter.once(e,t)}async ping(){try{return await this.sendAndWaitFor("ping","pong",{timestamp:Date.now()}),!0}catch(e){return this.options.debug&&console.warn("[Beacon SDK] Ping failed:",e),!1}}async getDebugInfo(){return this.sendAndWaitFor("getDebugInfo","debugInfo")}async getConsoleEvents(){return this.sendAndWaitFor("getConsoleEvents","consoleEvents")}async getErrorEvents(){return this.sendAndWaitFor("getErrorEvents","errorEvents")}async clearConsole(){await this.ready(),this.sendMessage("clearConsole")}async clearErrors(){await this.ready(),this.sendMessage("clearErrors")}async executeCode(e){return this.sendAndWaitFor("executeCode","codeExecutionResult",{code:e})}async inspectElement(e){return this.sendAndWaitFor("inspectElement","elementInspectionResult",{selector:e})}async fetch(e){return this.sendAndWaitFor("fetch","fetchResult",e)}async captureScreenshot(e={}){let t=e.mediaTimeoutMs??e.timeout??3e4,r=e.transportTimeoutMs??t+5e3;return this.sendAndWaitFor("captureScreenshot","screenshotResult",e,r)}async debug(e,t){let r=new URL(e.path,this.iframe.src||window.location.origin).href;this.iframe.src!==r&&(this.navigator.visit(r),await this.ready()),t&&await this.wait(t);let n=(e.options?.timeout||3e4)+5e3;return this.sendAndWaitFor("debug","debugResult",e,n)}async wait(e){return new Promise(t=>setTimeout(t,e*1e3))}navigate(e){if(!this.iframe)throw new w("Iframe not available");try{let t=new URL(e,this.iframe.src||window.location.origin);this.iframe.src=t.href,this.isBeaconReady=!1,this.channelEstablished=!1,this.port&&(this.port.close(),this.port=null),this.messageChannel&&(this.messageChannel=null),this.isStarted&&(this.readyPromise=this.waitForBeaconReady())}catch{throw new w(`Invalid URL: ${e}`)}}get url(){return this.iframe.src}get element(){return this.iframe}dispose(){this.port&&(this.port.close(),this.port=null),this.messageChannel&&(this.messageChannel=null),this.disposables.forEach(e=>e.dispose()),this.disposables=[],this.messageHandlers.clear(),this.isBeaconReady=!1,this.channelEstablished=!1,this.isStarted=!1,this.readyPromise=null}};function vt(i,e){return new $e(i,e)}function Yn(){try{return bt(),!0}catch{return!1}}function gr(i){return Array.isArray(i)?i:Object.entries(i).map(([e,t])=>({name:e,...typeof t=="string"?{value:t}:t}))}var He=class extends Error{constructor(t,r={}){super(t);this.message=t;this.data=r;this.name="NotebookInitError"}},Ke=class extends Error{constructor(t,r){super(`PHPSandbox API Error: ${t.status} ${t.statusText} - ${r}`);this.response=t;this.body=r;this.status=t.status}},ze=class{constructor(e){this.client=e;this.secrets=new Ve(e),this.preview=new je(e),this.mail=new Qe(e)}async create(e,t={},r=!0){let n=await this.client.post("/notebook",{template:e,...t}),o=new T(n.data,this.client);return r?this.init(o):o}async get(e){let t=await this.client.get(`/notebook/${e}`);return new T(t.data,this.client)}async update(e,t={}){let r=await this.client.put(`/notebook/${e}`,t);return new T(r.data,this.client)}async delete(e){await this.client.delete(`/notebook/${e}`)}async fork(e,t={}){let r=await this.client.post(`/notebook/${e}/fork`,t);return this.init(new T(r.data,this.client))}async gitCredentials(e){return(await this.client.post(`/notebook/${e}/git/credentials`)).data}async open(e){let t=await this.client.get(`/notebook/${e}`);return new T(t.data,this.client)}openFromData(e){return this.init(new T(e,this.client))}async init(e){return await e.ready(),e}};function mr(i){let e=new URL(i),t=e.pathname.replace(/\/+$/,"");return e.pathname=t===""||t==="/"?"/v1/":`${t}/`,e.search="",e.hash="",e.toString()}var qe=class{constructor(e,t="https://api.phpsandbox.io/v1",r={}){this.fetch=globalThis.fetch;this.notebook=new ze(this),this.options=Object.assign({startClosed:!0},r),this.baseUrl=mr(t),r.fetch&&(this.fetch=r.fetch),this.headers={Accept:"application/json",Authorization:`Bearer ${e}`,"Content-Type":"application/json"}}get(e){return this.makeRequest("GET",e)}post(e,t){return this.makeRequest("POST",e,{body:t===void 0?void 0:JSON.stringify(t)})}delete(e){return this.makeRequest("DELETE",e)}put(e,t){return this.makeRequest("PUT",e,{body:t===void 0?void 0:JSON.stringify(t)})}async makeRequest(e,t,r){let n=await this.fetch(new Request(new URL(t.replace(/^\//,""),this.baseUrl),{method:e,...r,headers:this.headers}));if(!n.ok)throw new Ke(n,await n.text());if(n.status===204)return{data:void 0};let o=await n.text();return{data:o===""?void 0:JSON.parse(o)}}},yt=class extends qe{},Ve=class{constructor(e){this.client=e}async list(e){return(await this.client.get(`/notebook/${e}/secrets`)).data}async set(e,t,r){let n=typeof r=="string"?{name:t,value:r}:{name:t,...r};return(await this.client.put(`/notebook/${e}/secrets`,n)).data}async setMany(e,t){return(await this.client.put(`/notebook/${e}/secrets`,{secrets:gr(t)})).data}async delete(e,t){await this.client.delete(`/notebook/${e}/secrets/${encodeURIComponent(t)}`)}},je=class{constructor(e){this.client=e}async get(e){return(await this.client.get(`/notebook/${e}/preview`)).data}async setPassword(e,t){return(await this.client.put(`/notebook/${e}/preview`,t)).data}async disable(e){await this.client.delete(`/notebook/${e}/preview`)}async createSession(e){return(await this.client.post(`/notebook/${e}/preview/session`)).data}async createHandoff(e,t){return(await this.client.post(`/notebook/${e}/preview/handoff`,t)).data}},Qe=class{constructor(e){this.client=e}async status(e){return(await this.client.get(`/notebook/${e}/mail`)).data}async enable(e){return(await this.client.put(`/notebook/${e}/mail`)).data}async disable(e){await this.client.delete(`/notebook/${e}/mail`)}async list(e,t={}){return(await this.client.get(`/notebook/${e}/mails${br(t)}`)).data}async get(e,t){return(await this.client.get(`/notebook/${e}/mails/${encodeURIComponent(t)}`)).data}async delete(e,t){await this.client.delete(`/notebook/${e}/mails/${encodeURIComponent(t)}`)}},P,oe,Xe,T=class{constructor(e,t){this.data=e;this.client=t;B(this,oe);this.initialized=!1;B(this,P);this.disposables=[];this.emitter=_.createInstance(),this.socket=new re(e.okraUrl,this.emitter,{debug:t.options.debug,startClosed:t.options.startClosed,webSocket:t.options.webSocket}),this.watchConnection(),xe(this,P,x(this,oe,Xe).call(this)),this.file=new ae(this),this.terminal=new F(this),this.auth=new W(this),this.lsp=new $(this),this.composer=new H(this),this.log=new K(this),this.repl=new q(this),this.container=new G(this),this.laravel=new z(this),this.shell=new V(this),this.git=new ne(this),this.services=new j(this),this.config=new Q(this),this.secrets=new Je(t,this.data.id),this.preview=new Ye(t,this.data.id),this.mail=new Ze(t,this.data.id)}async ready(){let e=this.socket.getTerminalError();if(e)throw e;return(async()=>(this.client.options.startClosed&&!this.socket.isConnected&&await this.socket.connect(),se(this,P)))()}fork(e={}){return this.client.notebook.fork(this.data.id,e)}gitCredentials(){return this.client.notebook.gitCredentials(this.data.id)}delete(){return this.client.notebook.delete(this.data.id).then(()=>{this.socket.terminate(new E("Notebook has been deleted.",{id:this.data.id}))})}stop(){return this.container.stop()}restart(){return this.container.start()}invoke(e,t={},r={}){return this.socket.invoke(e,t||{},r)}send(e,t={}){return this.socket.send(e,t||{})}ping(){return this.invoke("ping")}listen(e,t){let r=this.emitter.listen(e,t);return this.disposables.push(r),r}dispose(){this.disposables.forEach(e=>e.dispose()),!this.socket.isClosed&&this.socket.disconnect()}connected(){return this.waitForSocketConnection({rejectOnClose:!0})}whenConnected(){return this.waitForSocketConnection({rejectOnClose:!1})}waitForSocketConnection(e){let t=this.socket.getTerminalError();return t?Promise.reject(t):this.socket.isConnected?Promise.resolve(this):new Promise((r,n)=>{let o=[],s=!1,a=()=>{for(let l of o)l.dispose();o.length=0},c=l=>{s||(s=!0,a(),l())};try{o.push(this.socket.onDidConnect(()=>c(()=>r(this)))),e.rejectOnClose&&o.push(this.socket.onDidClose(()=>c(()=>n(new Error("Connection closed"))))),o.push(this.socket.onDidBootError(l=>c(()=>n(l))))}catch(l){c(()=>n(l))}})}watchConnection(){this.socket.onDidConnect(()=>{this.socket.emit("okra.connected"),this.client.options.telemetry&&this.container.enableTelemetry(this.client.options.telemetry)}),this.socket.onDidClose(()=>{this.socket.emit("okra.disconnected"),this.initialized=!1}),this.socket.onDidBootError(e=>{this.socket.emit("okra.boot_error",e),this.socket.emit("okra.disconnected"),this.initialized=!1})}onDidConnect(e){this.socket.removeListener("okra.connected",e);let t=this.socket.listen("okra.connected",e);return this.disposables.push(t),t}onDidDisconnect(e){let t=this.socket.listen("okra.disconnected",e);return this.disposables.push(t),t}onDidBootError(e){let t=this.socket.listen("okra.boot_error",e);return this.disposables.push(t),t}update(){return this.invoke("notebook.update")}onDidInitialize(e){return this.listen("notebook.initialized",e)}async reconnect(){let e=this.whenConnected();return this.socket.reconnect(),this.initialized=!1,await e,x(this,oe,Xe).call(this),this.ready().then(()=>this)}async beacon(e,t){let r=await this.ready();return e.src=r.data.previewUrl,vt(e,t)}};P=new WeakMap,oe=new WeakSet,Xe=function(){return xe(this,P,new Promise((e,t)=>{let r=this.onDidInitialize(o=>{if(n.dispose(),r.dispose(),this.initialized=o,o.type==="error"){t(new He(o.message,o.data));return}e(o)}),n=this.onDidBootError(o=>{r.dispose(),n.dispose(),t(o)})})),se(this,P).catch(()=>{}),se(this,P)};var Je=class{constructor(e,t){this.client=e;this.notebookId=t}list(){return this.client.notebook.secrets.list(this.notebookId)}set(e,t){return this.client.notebook.secrets.set(this.notebookId,e,t)}setMany(e){return this.client.notebook.secrets.setMany(this.notebookId,e)}delete(e){return this.client.notebook.secrets.delete(this.notebookId,e)}},Ye=class{constructor(e,t){this.client=e;this.notebookId=t}get(){return this.client.notebook.preview.get(this.notebookId)}setPassword(e){return this.client.notebook.preview.setPassword(this.notebookId,e)}disable(){return this.client.notebook.preview.disable(this.notebookId)}createSession(){return this.client.notebook.preview.createSession(this.notebookId)}createHandoff(e){return this.client.notebook.preview.createHandoff(this.notebookId,e)}},Ze=class{constructor(e,t){this.client=e;this.notebookId=t}status(){return this.client.notebook.mail.status(this.notebookId)}enable(){return this.client.notebook.mail.enable(this.notebookId)}disable(){return this.client.notebook.mail.disable(this.notebookId)}list(e={}){return this.client.notebook.mail.list(this.notebookId,e)}get(e){return this.client.notebook.mail.get(this.notebookId,e)}delete(e){return this.client.notebook.mail.delete(this.notebookId,e)}};function br(i){let e=new URLSearchParams;for(let[r,n]of Object.entries(i))(typeof n=="string"||typeof n=="number"||typeof n=="boolean")&&e.set(r,String(n));let t=e.toString();return t===""?"":`?${t}`}export{Ke as ApiError,$e as Beacon,w as BeaconConnectionError,L as BeaconError,ye as BeaconTimeoutError,qe as Client,Te as CommandError,y as ErrorEvent,Et as FileChangeFilter,St as FileChangeType,xt as FileType,ae as Filesystem,Ee as FilesystemError,It as FilesystemErrorType,Ie as LspConnection,ie as Navigator,ze as NotebookApi,He as NotebookInitError,T as NotebookInstance,Ze as NotebookMail,Qe as NotebookMailApi,Ye as NotebookPreview,je as NotebookPreviewApi,Ve as NotebookSecretApi,Je as NotebookSecrets,Dt as NotebookState,E as NotebookUnavailableError,yt as PHPSandbox,rt as PHPSandboxError,D as PromiseTimeoutError,M as RateLimitError,O as SendTimeoutError,re as Transport,vt as createBeacon,Yn as isBeaconSupported,Ct as notebookBuiltinServices,Hr as notebookKnownServices,le as once,ce as timeout};
3
3
  /*! Bundled license information:
4
4
 
5
5
  reconnecting-websocket/dist/reconnecting-websocket-mjs.js:
@@ -3882,10 +3882,10 @@ var PHPSandbox = (() => {
3882
3882
  return this.okra.invoke("git.log", { ref });
3883
3883
  }
3884
3884
  diff(input) {
3885
- return this.okra.invoke("git.diff", input);
3885
+ return this.okra.invoke("git.diff", this.normalizeRemoteInput(input));
3886
3886
  }
3887
3887
  merge(input) {
3888
- return this.okra.invoke("git.merge", input);
3888
+ return this.okra.invoke("git.merge", this.normalizeRemoteInput(input));
3889
3889
  }
3890
3890
  conflicts() {
3891
3891
  return this.okra.invoke("git.conflicts", {});
@@ -3917,6 +3917,35 @@ var PHPSandbox = (() => {
3917
3917
  status() {
3918
3918
  return this.okra.invoke("git.status", {});
3919
3919
  }
3920
+ normalizeRemoteInput(input) {
3921
+ if (input.notebookId === void 0) {
3922
+ return input;
3923
+ }
3924
+ const notebookId = input.notebookId.trim();
3925
+ if (!notebookId) {
3926
+ throw new Error("'notebookId' cannot be empty.");
3927
+ }
3928
+ if (input.url?.trim()) {
3929
+ throw new Error("Pass either 'url' or 'notebookId', not both.");
3930
+ }
3931
+ if (input.target?.trim()) {
3932
+ throw new Error("Pass either 'target' or 'notebookId', not both.");
3933
+ }
3934
+ const { notebookId: _notebookId, ...payload } = input;
3935
+ return {
3936
+ ...payload,
3937
+ url: this.gitUrlForNotebook(notebookId)
3938
+ };
3939
+ }
3940
+ gitUrlForNotebook(notebookId) {
3941
+ const url = new URL(this.okra.data.gitUrl);
3942
+ url.username = "";
3943
+ url.password = "";
3944
+ url.pathname = `/${encodeURIComponent(notebookId)}.git`;
3945
+ url.search = "";
3946
+ url.hash = "";
3947
+ return url.toString();
3948
+ }
3920
3949
  };
3921
3950
 
3922
3951
  // src/beacon/navigator.ts
@@ -1,5 +1,5 @@
1
- var PHPSandbox=(()=>{var Le=Object.defineProperty;var Dt=Object.getOwnPropertyDescriptor;var Ct=Object.getOwnPropertyNames;var Nt=Object.prototype.hasOwnProperty;var ot=i=>{throw TypeError(i)};var Be=(i,e)=>{for(var t in e)Le(i,t,{get:e[t],enumerable:!0})},Rt=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ct(e))!Nt.call(i,n)&&n!==t&&Le(i,n,{get:()=>e[n],enumerable:!(r=Dt(e,n))||r.enumerable});return i};var At=i=>Rt(Le({},"__esModule",{value:!0}),i);var Me=(i,e,t)=>e.has(i)||ot("Cannot "+t);var ue=(i,e,t)=>(Me(i,e,"read from private field"),t?t.call(i):e.get(i)),W=(i,e,t)=>e.has(i)?ot("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(i):e.set(i,t),Oe=(i,e,t,r)=>(Me(i,e,"write to private field"),r?r.call(i,t):e.set(i,t),t),S=(i,e,t)=>(Me(i,e,"access private method"),t);var Ir={};Be(Ir,{ApiError:()=>Ie,Beacon:()=>Ee,BeaconConnectionError:()=>w,BeaconError:()=>U,BeaconTimeoutError:()=>ce,Client:()=>Pe,CommandError:()=>de,ErrorEvent:()=>y,FileChangeFilter:()=>ct,FileChangeType:()=>lt,FileType:()=>at,Filesystem:()=>G,FilesystemError:()=>pe,FilesystemErrorType:()=>ut,LspConnection:()=>he,Navigator:()=>F,NotebookApi:()=>Te,NotebookInitError:()=>Se,NotebookInstance:()=>x,NotebookMail:()=>_e,NotebookMailApi:()=>Ne,NotebookPreview:()=>Ae,NotebookPreviewApi:()=>Ce,NotebookSecretApi:()=>De,NotebookSecrets:()=>Re,NotebookState:()=>pt,NotebookUnavailableError:()=>k,PHPSandbox:()=>nt,PHPSandboxError:()=>Fe,PromiseTimeoutError:()=>I,RateLimitError:()=>L,SendTimeoutError:()=>B,Transport:()=>O,createBeacon:()=>rt,isBeaconSupported:()=>kr,notebookBuiltinServices:()=>dt,notebookKnownServices:()=>Lt,once:()=>H,timeout:()=>$});var y=class extends Error{constructor(t,r,n={}){super(r);this.code=t;this.message=r;this.raw=n}},L=class extends y{constructor(e,t={}){super(429,e,t)}},Fe=class extends y{};var st="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var m=(i=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(i|=0));for(;i--;)e+=st[t[i]&63];return e};var at=(n=>(n[n.Unknown=0]="Unknown",n[n.File=1]="File",n[n.Directory=2]="Directory",n[n.SymbolicLink=64]="SymbolicLink",n))(at||{}),ct=(r=>(r[r.UPDATED=2]="UPDATED",r[r.ADDED=4]="ADDED",r[r.DELETED=8]="DELETED",r))(ct||{}),lt=(r=>(r[r.UPDATED=1]="UPDATED",r[r.ADDED=2]="ADDED",r[r.DELETED=3]="DELETED",r))(lt||{}),ut=(s=>(s.Unavailable="Unavailable",s.NoPermissions="NoPermissions",s.FileExists="FileExists",s.FileNotFound="FileNotFound",s.FileIsADirectory="FileIsADirectory",s.FileNotADirectory="FileNotADirectory",s))(ut||{}),pe=class extends y{constructor(t,r){super(t.code,t.message);this.name=r}},We=class{constructor(e,t){this.disposable=e;this.onDispose=t;this.disposed=!1}dispose(){this.disposed||(this.disposed=!0,this.disposable.dispose(),this.onDispose())}},G=class{constructor(e){this.okra=e;this.watches=new Map;this.watchOkraConnection()}watchOkraConnection(){this.okra.onDidConnect(()=>{for(let{path:e,options:t}of this.watches.values())this.okra.invoke("fs.watch",{path:e,options:t}).catch(()=>{})})}info(e){return this.okra.invoke("fs.info",{path:e})}write(e,t){return this.okra.invoke("fs.write",{path:e,contents:t})}find(e,t={useIgnoreFiles:!1,followSymlinks:!1,useGlobalIgnoreFiles:!1,useParentIgnoreFiles:!1}){return this.okra.invoke("fs.find",{query:e,options:{includes:[],excludes:["**/storage","**/vendor","**/node_modules","**/.git","**/.svn","**/.hg","**/CVS","**/.DS_Store","**/Thumbs.db","**/*.crswap"],useIgnoreFiles:!1,followSymlinks:!1,useGlobalIgnoreFiles:!1,useParentIgnoreFiles:!1,...t}})}search(e,t,r){e.id||(e.id=m());let n={maxResults:5,afterContext:2,beforeContext:2,includes:[],excludes:["**/.git","**/.svn","**/.hg","**/CVS","**/.DS_Store","**/Thumbs.db","**/*.crswap","**/node_modules","**/vendor","**/bower_components","**/*.code-search"],useIgnoreFiles:!0,followSymlinks:!0,useGlobalIgnoreFiles:!0,useParentIgnoreFiles:!0,encoding:"utf-8",previewOptions:{matchLines:5,charsPerLine:1e3}},o=e.id,s=async c=>{c===!1&&a.dispose(),r&&await Promise.resolve(r(c))===!1&&a.dispose()},a=this.okra.listen(`fs.text.search.${o}`,s);return this.okra.invoke("fs.textSearch",{query:e,options:{...n,...t}}).finally(()=>a.dispose())}mkdir(e){return this.okra.invoke("fs.mkdir",{path:e})}move(e,t){return this.okra.invoke("fs.move",{from:e,to:t})}remove(e,t){return this.okra.invoke("fs.remove",{path:e,type:t})}async readFile(e,t){try{let r=await this.okra.invoke("fs.readFile",{path:e,lineRange:t});return r instanceof Uint8Array?r:typeof r=="string"?new TextEncoder().encode(r):r}catch(r){this.handleError(r)}}tail(e,t=10){return this.okra.invoke("fs.tail",{path:e,lines:t}).catch(r=>this.handleError(r))}writeFile(e,t,r){return this.okra.invoke("fs.writeFile",{path:e,contents:t,options:r}).catch(n=>this.handleError(n))}stat(e){return this.okra.invoke("fs.stat",{path:e}).catch(t=>this.handleError(t))}rename(e,t,r){return this.okra.invoke("fs.rename",{from:e,to:t,options:r}).catch(n=>this.handleError(n))}delete(e,t){return this.okra.invoke("fs.delete",{path:e,options:t}).catch(r=>this.handleError(r))}copy(e,t,r){return this.okra.invoke("fs.copy",{source:e,destination:t,options:r}).catch(n=>this.handleError(n))}readDirectory(e,t=[],r=[]){return this.okra.invoke("fs.readDirectory",{path:e,include:t,exclude:r}).catch(n=>this.handleError(n))}createDirectory(e){return this.okra.invoke("fs.createDirectory",{path:e}).catch(t=>this.handleError(t))}watch(e,t,r){let n=this.okra.listen(`fs.watch.${e}`,r),o={dispose:()=>{n.dispose(),this.okra.invoke("fs.unwatch",{path:e}).catch(()=>{})}},s=new We(o,()=>{this.watches.get(e)?.onDidChange===r&&this.watches.delete(e)});return this.watches.set(e,{options:t,path:e,onDidChange:r}),this.okra.invoke("fs.watch",{path:e,options:t}).then(()=>s).catch(a=>{throw s.dispose(),a})}exists(e){return this.stat(e).then(()=>!0).catch(()=>!1)}async download(e,t,r){let n=m(),o=!!e,s=[],a=this.okra.listen(`fs.download.${n}`,o?e:c=>{s.push(c)});return this.okra.invoke("fs.download",{id:n,exclude:t,include:r}).then(()=>new Blob(s,{type:"application/octet-stream"})).finally(()=>a.dispose())}tree(e="/"){return this.okra.invoke("fs.tree",{path:e})}handleError(e){throw e instanceof y&&"name"in e.raw?new pe(e,e.raw.name):e}};var I=class extends Error{constructor(t,r){super(t);this.time=r}},B=class i extends I{static fromPromiseTimeoutError(e){return new i(e.message,e.time)}},k=class extends Error{constructor(t="Notebook is no longer available",r={}){super(t);this.raw=r;this.name="NotebookUnavailableError"}};var $=(i,e)=>{let t;return Promise.race([i,new Promise((r,n)=>t=setTimeout(n,e,new I("Timeout before promise can resolve",e)))]).finally(()=>clearTimeout(t))},H=i=>{let e=null;return()=>e||(e=i())};var _t=8,Ut=/[\x00-\x1f\x7f]/,K=class{constructor(e){this.okra=e}list(){return this.okra.invoke("terminal.list")}start(){return this.okra.invoke("terminal.start")}create(e){return this.okra.invoke("terminal.create",e)}onStarted(e){return this.okra.listen("terminal.started",e)}resize(e,t){return this.okra.invoke("terminal.resize",{id:e,width:t[0],height:t[1]})}onOutput(e,t){return this.okra.listen(`terminal.output.${e}`,t)}input(e,t){return Promise.resolve(this.okra.send("terminal.input",{id:e,input:t}))}listen(e,t){return this.okra.listen(e,t)}async attach(e,t){let r=this.processHandle(e,t?.abortSignal);try{let n=await this.okra.invoke("terminal.attach",{id:e,replayHistory:t?.replayHistory},{abortSignal:t?.abortSignal});return n?{...r.process,...n}:(r.dispose(),!1)}catch(n){throw r.dispose(),n}}async spawn(e,t,r){let n=r?.id||m(),o=this.processHandle(n,r?.abortSignal),{abortSignal:s,...a}=r??{};try{let c=await this.okra.invoke("terminal.spawn",{command:[e,...t],opts:{id:n,...a}},{abortSignal:s});return{...o.process,...c}}catch(c){throw o.dispose(),c}}processHandle(e,t){let r=new Set,n,o=()=>{n&&(t?.removeEventListener("abort",n),n=void 0);for(let v of r)v.dispose();r.clear()},s="",a,c=()=>{if(a&&(clearTimeout(a),a=void 0),s==="")return;let v=s;s="",this.input(e,v)},l=()=>{a||(a=setTimeout(c,_t))},d=v=>{if(s+=v,Ut.test(v)){c();return}l()},u=()=>{c(),o()},g=new WritableStream({write:d,close:u,abort:u}),p=null,f=new ReadableStream({start:v=>{p=v,r.add(this.listen(`terminal.output.${e}`,Ue=>{p?.enqueue(Ue.output)}))},cancel:()=>{p=null,u()}}),h=new Promise(v=>{r.add(this.listen(`terminal.close.${e}`,Ue=>{if(p)try{p.close()}catch{}u(),v(Ue.exitCode)}))}),E=H(()=>(u(),this.okra.invoke("terminal.close",{id:e}))),Pt=v=>{this.okra.invoke("terminal.resize",{id:e,width:v.cols,height:v.rows})};return t&&!t.aborted&&(n=()=>{E()},t.addEventListener("abort",n,{once:!0})),{process:{exit:h,input:g,output:f,kill:E,resize:Pt},dispose:u}}};var pt=(a=>(a.RUNNING="running",a.STOPPED="stopped",a.STARTING="starting",a.STOPPING="stopping",a.KILLED="killed",a.ERROR="error",a.PROVISIONING="provisioning",a))(pt||{}),z=class{constructor(e){this.okra=e}start(){return this.okra.invoke("container.start")}stop(){return this.okra.invoke("container.stop")}state(){return this.okra.invoke("container.state")}openedPorts(){return this.okra.invoke("container.opened-ports")}setPhp(e){return this.okra.invoke("container.set-php",{version:e})}enableTelemetry(e){return this.okra.invoke("container.stream-telemetry",{features:Array.from(e)})}stopTelemetry(){return this.okra.invoke("container.stop-telemetry")}listen(e,t){return this.okra.listen(e,t)}onPort(e){let t=[];return this.listen("container.ports",r=>{for(let n of r)t.some(o=>o.port===n.port)||e(n,"open");for(let n of t)r.some(o=>o.port===n.port)||e(n,"close");t=r})}};var q=class{constructor(e){this.okra=e}logout(){return this.okra.invoke("auth.logout")}login(e){return this.okra.invoke("auth.login",{newConnectionData:e})}};var V=class{constructor(e){this.okra=e}message(e,t){return this.okra.invoke("lsp.message",{id:e,message:t})}listen(e,t,r){return this.okra.listen(`${t}.${e}`,n=>r(n))}onClose(e,t){return this.listen(e,"lsp.closed",r=>t(r.code,r.reason))}onError(e,t){return this.listen(e,"lsp.error",r=>t(r.message))}onClientDisconnect(e){return this.okra.onDidDisconnect(()=>e(1e3,"OKRA DISCONNECTED"))}onResponse(e,t){return this.listen(e,"lsp.response",r=>t(JSON.stringify(r)))}close(e){return this.okra.invoke("lsp.close",{id:e})}start(e){return this.okra.invoke("lsp.start",{id:e})}connection(e){return he.create(e,this)}whenSocketConnected(){return this.okra.whenConnected()}},he=class i{constructor(e,t){this.id=e;this.lsp=t}send(e){return this.lsp.message(this.id,e)}onMessage(e){return this.lsp.onResponse(this.id,e)}onError(e){return this.lsp.onError(this.id,e)}onClose(e){return this.lsp.onClose(this.id,e)}dispose(){this.lsp.close(this.id)}start(){this.lsp.start(this.id)}onClientDisconnect(e){return this.lsp.onClientDisconnect(e)}whenSocketConnected(){return this.lsp.whenSocketConnected()}static create(e,t){return new i(e,t)}};var j=class{constructor(e){this.okra=e}invoke(e,t={},r={}){return this.okra.invoke("composer.invoke",{command:e,args:t,options:r})}dumpAutoload(){return this.okra.invoke("composer.dump-autoload")}install(e={}){return this.invoke("install",{},e)}update(e,t={}){return this.invoke("update",e,t)}require(e,t={}){return this.invoke("require",e,t)}remove(e,t={}){return this.invoke("remove",e,t)}stream(e){return this.okra.listen("composer.log",e)}packages(){return this.okra.invoke("composer.packages")}};var Q=class{constructor(e){this.okra=e}stream(e){return this.okra.listen("notebook.log",e)}listen(e,t){return this.okra.listen(e,t)}};var X=class{constructor(e){this.okra=e}maintenanceInfo(){return this.okra.invoke("laravel.maintenance.info",{})}toggleMaintenance(e){return this.okra.invoke("laravel.maintenance.toggle",e)}};var J=class{constructor(e){this.okra=e}eval(e,t="",r={prependWith:"",appendWith:""}){return this.okra.invoke("repl.eval",{code:e,args:t,repl:r})}write(e){return this.okra.invoke("repl.write",{input:e})}stop(){return this.okra.invoke("repl.stop")}start(){return this.okra.invoke("repl.start")}resize(e,t){return this.okra.invoke("repl.resize",{cols:e,rows:t})}listen(e,t){return this.okra.listen(e,t)}onOutput(e){return this.okra.listen("repl.output",e)}};function ht(i,e=[],t){let r=Array.isArray(e)?e:[],n=Array.isArray(e)?t:e;return{command:Array.isArray(i)?i:r.length>0?[i,...r]:i,opts:n}}var de=class extends Error{constructor(t,r){super(t);this.output=t;this.exitCode=r}},Ge=class{constructor(e,t){this.output=e;this.exitCode=t}throw(){if(this.exitCode!==0)throw new de(this.output,this.exitCode);return this}},Y=class{constructor(e){this.okra=e}onOutput(e,t){return this.okra.listen(`shell.output.${e}`,t)}listen(e,t){return this.okra.listen(e,t)}async exec(e,t=[],r){let n=ht(e,t,r),{abortSignal:o,...s}=n.opts??{},a=await this.okra.invoke("shell.exec",{command:n.command,opts:Object.keys(s).length>0?s:void 0},{abortSignal:o});return new Ge(a.output,a.exitCode)}execStream(e,t=[],r){let n=ht(e,t,r),o=n.opts?.id||m(),s=new Set,a=null,c=!1,l=()=>{for(let f of s)f.dispose();s.clear()},d=()=>{if(!c&&(c=!0,l(),a))try{a.close()}catch{}},u=f=>{c||(c=!0,l(),a&&a.error(f))},g=new ReadableStream({start:f=>{a=f,s.add(this.listen(`shell.output.${o}`,h=>{a?.enqueue(h.output)}))},cancel:()=>{c=!0,l()}}),p=this.exec(n.command,{...n.opts,id:o}).then(f=>(d(),f)).catch(f=>{throw u(f),f});return{output:g,result:p}}};var dt=["redis"],Lt=["start","nginx",...dt],Z=class{constructor(e){this.okra=e}list(){return this.okra.invoke("service.list")}run(e,t){return this.okra.invoke("service.run",{name:e,command:t})}stop(e){return this.okra.invoke("service.stop",{name:e})}onLog(e,t){return this.okra.listen(`service.log.${e}`,t)}listen(e,t){return this.okra.listen(e,t)}logs(e,t={}){return t.follow?this.followLogs(e,t):this.okra.invoke("service.logs",{name:e,tail:t.tail}).then(r=>{if(!("output"in r))throw new Error(`Unexpected service.logs response for ${e}`);return r.output})}followLogs(e,t){let r=t.id||m(),n=new Set,o=null,s=!1,a=()=>{for(let g of n)g.dispose();n.clear()},c=()=>{if(!s&&(s=!0,a(),o))try{o.close()}catch{}},l=g=>{s||(s=!0,a(),o&&o.error(g))},d=H(()=>(c(),this.okra.invoke("service.stop-logs",{id:r}))),u=new ReadableStream({start:g=>{o=g,n.add(this.onLog(r,p=>{o?.enqueue(p.output)})),this.okra.invoke("service.logs",{name:e,tail:t.tail,follow:!0,id:r}).catch(p=>{l(p)})},cancel:()=>{d()}});return{id:r,output:u,stop:d}}};var ee=class{constructor(e){this.okra=e}get(){return this.okra.invoke("config.get")}update(e){return this.okra.invoke("config.update",{config:e})}setPorts(e){return this.okra.invoke("config.set-ports",{ports:e})}};function ft(i){let e=i.length,t=0,r=0;for(;r<e;){let n=i.charCodeAt(r++);if((n&4294967168)===0){t++;continue}else if((n&4294965248)===0)t+=2;else{if(n>=55296&&n<=56319&&r<e){let o=i.charCodeAt(r);(o&64512)===56320&&(++r,n=((n&1023)<<10)+(o&1023)+65536)}(n&4294901760)===0?t+=3:t+=4}}return t}function Bt(i,e,t){let r=i.length,n=t,o=0;for(;o<r;){let s=i.charCodeAt(o++);if((s&4294967168)===0){e[n++]=s;continue}else if((s&4294965248)===0)e[n++]=s>>6&31|192;else{if(s>=55296&&s<=56319&&o<r){let a=i.charCodeAt(o);(a&64512)===56320&&(++o,s=((s&1023)<<10)+(a&1023)+65536)}(s&4294901760)===0?(e[n++]=s>>12&15|224,e[n++]=s>>6&63|128):(e[n++]=s>>18&7|240,e[n++]=s>>12&63|128,e[n++]=s>>6&63|128)}e[n++]=s&63|128}}var Mt=new TextEncoder,Ot=50;function Ft(i,e,t){Mt.encodeInto(i,e.subarray(t))}function gt(i,e,t){i.length>Ot?Ft(i,e,t):Bt(i,e,t)}var Wt=4096;function $e(i,e,t){let r=e,n=r+t,o=[],s="";for(;r<n;){let a=i[r++];if((a&128)===0)o.push(a);else if((a&224)===192){let c=i[r++]&63;o.push((a&31)<<6|c)}else if((a&240)===224){let c=i[r++]&63,l=i[r++]&63;o.push((a&31)<<12|c<<6|l)}else if((a&248)===240){let c=i[r++]&63,l=i[r++]&63,d=i[r++]&63,u=(a&7)<<18|c<<12|l<<6|d;u>65535&&(u-=65536,o.push(u>>>10&1023|55296),u=56320|u&1023),o.push(u)}else o.push(a);o.length>=Wt&&(s+=String.fromCharCode(...o),o.length=0)}return o.length>0&&(s+=String.fromCharCode(...o)),s}var Gt=new TextDecoder,$t=200;function Ht(i,e,t){let r=i.subarray(e,e+t);return Gt.decode(r)}function mt(i,e,t){return t>$t?Ht(i,e,t):$e(i,e,t)}var C=class{constructor(e,t){this.type=e,this.data=t}};var b=class i extends Error{constructor(e){super(e);let t=Object.create(i.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:i.name})}};function bt(i,e,t){let r=t/4294967296,n=t;i.setUint32(e,r),i.setUint32(e+4,n)}function fe(i,e,t){let r=Math.floor(t/4294967296),n=t;i.setUint32(e,r),i.setUint32(e+4,n)}function ge(i,e){let t=i.getInt32(e),r=i.getUint32(e+4);return t*4294967296+r}function vt(i,e){let t=i.getUint32(e),r=i.getUint32(e+4);return t*4294967296+r}var Kt=-1,zt=4294967296-1,qt=17179869184-1;function Vt({sec:i,nsec:e}){if(i>=0&&e>=0&&i<=qt)if(e===0&&i<=zt){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,i),t}else{let t=i/4294967296,r=i&4294967295,n=new Uint8Array(8),o=new DataView(n.buffer);return o.setUint32(0,e<<2|t&3),o.setUint32(4,r),n}else{let t=new Uint8Array(12),r=new DataView(t.buffer);return r.setUint32(0,e),fe(r,4,i),t}}function jt(i){let e=i.getTime(),t=Math.floor(e/1e3),r=(e-t*1e3)*1e6,n=Math.floor(r/1e9);return{sec:t+n,nsec:r-n*1e9}}function Qt(i){if(i instanceof Date){let e=jt(i);return Vt(e)}else return null}function Xt(i){let e=new DataView(i.buffer,i.byteOffset,i.byteLength);switch(i.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),r=e.getUint32(4),n=(t&3)*4294967296+r,o=t>>>2;return{sec:n,nsec:o}}case 12:{let t=ge(e,4),r=e.getUint32(0);return{sec:t,nsec:r}}default:throw new b(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${i.length}`)}}function Jt(i){let e=Xt(i);return new Date(e.sec*1e3+e.nsec/1e6)}var yt={type:Kt,encode:Qt,decode:Jt};var T=class{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(yt)}register({type:e,encode:t,decode:r}){if(e>=0)this.encoders[e]=t,this.decoders[e]=r;else{let n=-1-e;this.builtInEncoders[n]=t,this.builtInDecoders[n]=r}}tryToEncode(e,t){for(let r=0;r<this.builtInEncoders.length;r++){let n=this.builtInEncoders[r];if(n!=null){let o=n(e,t);if(o!=null){let s=-1-r;return new C(s,o)}}}for(let r=0;r<this.encoders.length;r++){let n=this.encoders[r];if(n!=null){let o=n(e,t);if(o!=null){let s=r;return new C(s,o)}}}return e instanceof C?e:null}decode(e,t,r){let n=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return n?n(e,t,r):new C(t,e)}};T.defaultCodec=new T;function Yt(i){return i instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&i instanceof SharedArrayBuffer}function te(i){return i instanceof Uint8Array?i:ArrayBuffer.isView(i)?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):Yt(i)?new Uint8Array(i):Uint8Array.from(i)}var Zt=100,er=2048,me=class i{constructor(e){this.entered=!1,this.extensionCodec=e?.extensionCodec??T.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??Zt,this.initialBufferSize=e?.initialBufferSize??er,this.sortKeys=e?.sortKeys??!1,this.forceFloat32=e?.forceFloat32??!1,this.ignoreUndefined=e?.ignoreUndefined??!1,this.forceIntegerToFloat=e?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new i({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef(e){if(this.entered)return this.clone().encodeSharedRef(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode(e){if(this.entered)return this.clone().encode(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode(e,t){if(t>this.maxDepth)throw new Error(`Too deep objects in depth ${t}`);e==null?this.encodeNil():typeof e=="boolean"?this.encodeBoolean(e):typeof e=="number"?this.forceIntegerToFloat?this.encodeNumberAsFloat(e):this.encodeNumber(e):typeof e=="string"?this.encodeString(e):this.useBigInt64&&typeof e=="bigint"?this.encodeBigInt64(e):this.encodeObject(e,t)}ensureBufferSizeToWrite(e){let t=this.pos+e;this.view.byteLength<t&&this.resizeBuffer(t*2)}resizeBuffer(e){let t=new ArrayBuffer(e),r=new Uint8Array(t),n=new DataView(t);r.set(this.bytes),this.view=n,this.bytes=r}encodeNil(){this.writeU8(192)}encodeBoolean(e){e===!1?this.writeU8(194):this.writeU8(195)}encodeNumber(e){!this.forceIntegerToFloat&&Number.isSafeInteger(e)?e>=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(211),this.writeI64(e)):this.encodeNumberAsFloat(e)}encodeNumberAsFloat(e){this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}encodeBigInt64(e){e>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(e)):(this.writeU8(211),this.writeBigInt64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else if(e<4294967296)this.writeU8(219),this.writeU32(e);else throw new Error(`Too long string: ${e} bytes in UTF-8`)}encodeString(e){let r=ft(e);this.ensureBufferSizeToWrite(5+r),this.writeStringHeader(r),gt(e,this.bytes,this.pos),this.pos+=r}encodeObject(e,t){let r=this.extensionCodec.tryToEncode(e,this.context);if(r!=null)this.encodeExtension(r);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else if(typeof e=="object")this.encodeMap(e,t);else throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(e)}`)}encodeBinary(e){let t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else if(t<4294967296)this.writeU8(198),this.writeU32(t);else throw new Error(`Too large binary: ${t}`);let r=te(e);this.writeU8a(r)}encodeArray(e,t){let r=e.length;if(r<16)this.writeU8(144+r);else if(r<65536)this.writeU8(220),this.writeU16(r);else if(r<4294967296)this.writeU8(221),this.writeU32(r);else throw new Error(`Too large array: ${r}`);for(let n of e)this.doEncode(n,t+1)}countWithoutUndefined(e,t){let r=0;for(let n of t)e[n]!==void 0&&r++;return r}encodeMap(e,t){let r=Object.keys(e);this.sortKeys&&r.sort();let n=this.ignoreUndefined?this.countWithoutUndefined(e,r):r.length;if(n<16)this.writeU8(128+n);else if(n<65536)this.writeU8(222),this.writeU16(n);else if(n<4294967296)this.writeU8(223),this.writeU32(n);else throw new Error(`Too large map object: ${n}`);for(let o of r){let s=e[o];this.ignoreUndefined&&s===void 0||(this.encodeString(o),this.doEncode(s,t+1))}}encodeExtension(e){if(typeof e.data=="function"){let r=e.data(this.pos+6),n=r.length;if(n>=4294967296)throw new Error(`Too large extension object: ${n}`);this.writeU8(201),this.writeU32(n),this.writeI8(e.type),this.writeU8a(r);return}let t=e.data.length;if(t===1)this.writeU8(212);else if(t===2)this.writeU8(213);else if(t===4)this.writeU8(214);else if(t===8)this.writeU8(215);else if(t===16)this.writeU8(216);else if(t<256)this.writeU8(199),this.writeU8(t);else if(t<65536)this.writeU8(200),this.writeU16(t);else if(t<4294967296)this.writeU8(201),this.writeU32(t);else throw new Error(`Too large extension object: ${t}`);this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){let t=e.length;this.ensureBufferSizeToWrite(t),this.bytes.set(e,this.pos),this.pos+=t}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),bt(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),fe(this.view,this.pos,e),this.pos+=8}writeBigUint64(e){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,e),this.pos+=8}writeBigInt64(e){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,e),this.pos+=8}};function He(i,e){return new me(e).encodeSharedRef(i)}function be(i){return`${i<0?"-":""}0x${Math.abs(i).toString(16).padStart(2,"0")}`}var tr=16,rr=16,ve=class{constructor(e=tr,t=rr){this.hit=0,this.miss=0,this.maxKeyLength=e,this.maxLengthPerKey=t,this.caches=[];for(let r=0;r<this.maxKeyLength;r++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,r){let n=this.caches[r-1];e:for(let o of n){let s=o.bytes;for(let a=0;a<r;a++)if(s[a]!==e[t+a])continue e;return o.str}return null}store(e,t){let r=this.caches[e.length-1],n={bytes:e,str:t};r.length>=this.maxLengthPerKey?r[Math.random()*r.length|0]=n:r.push(n)}decode(e,t,r){let n=this.find(e,t,r);if(n!=null)return this.hit++,n;this.miss++;let o=$e(e,t,r),s=Uint8Array.prototype.slice.call(e,t,t+r);return this.store(s,o),o}};var Ke="array",ie="map_key",kt="map_value",nr=i=>{if(typeof i=="string"||typeof i=="number")return i;throw new b("The type of key must be string or number but "+typeof i)},ze=class{constructor(){this.stack=[],this.stackHeadPosition=-1}get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){let t=this.getUninitializedStateFromPool();t.type=Ke,t.position=0,t.size=e,t.array=new Array(e)}pushMapState(e){let t=this.getUninitializedStateFromPool();t.type=ie,t.readCount=0,t.size=e,t.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){let e={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push(e)}return this.stack[this.stackHeadPosition]}release(e){if(this.stack[this.stackHeadPosition]!==e)throw new Error("Invalid stack state. Released state is not on top of the stack.");if(e.type===Ke){let r=e;r.size=0,r.array=void 0,r.position=0,r.type=void 0}if(e.type===ie||e.type===kt){let r=e;r.size=0,r.map=void 0,r.readCount=0,r.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}},ne=-1,qe=new DataView(new ArrayBuffer(0)),ir=new Uint8Array(qe.buffer);try{qe.getInt8(0)}catch(i){if(!(i instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}var wt=new RangeError("Insufficient data"),or=new ve,ye=class i{constructor(e){this.totalPos=0,this.pos=0,this.view=qe,this.bytes=ir,this.headByte=ne,this.stack=new ze,this.entered=!1,this.extensionCodec=e?.extensionCodec??T.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.rawStrings=e?.rawStrings??!1,this.maxStrLength=e?.maxStrLength??4294967295,this.maxBinLength=e?.maxBinLength??4294967295,this.maxArrayLength=e?.maxArrayLength??4294967295,this.maxMapLength=e?.maxMapLength??4294967295,this.maxExtLength=e?.maxExtLength??4294967295,this.keyDecoder=e?.keyDecoder!==void 0?e.keyDecoder:or,this.mapKeyConverter=e?.mapKeyConverter??nr}clone(){return new i({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=ne,this.stack.reset()}setBuffer(e){let t=te(e);this.bytes=t,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength),this.pos=0}appendBuffer(e){if(this.headByte===ne&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),r=te(e),n=new Uint8Array(t.length+r.length);n.set(t),n.set(r,t.length),this.setBuffer(n)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:r}=this;return new RangeError(`Extra ${t.byteLength-r} of ${t.byteLength} byte(s) found at buffer[${e}]`)}decode(e){if(this.entered)return this.clone().decode(e);try{this.entered=!0,this.reinitializeState(),this.setBuffer(e);let t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t}finally{this.entered=!1}}*decodeMulti(e){if(this.entered){yield*this.clone().decodeMulti(e);return}try{for(this.entered=!0,this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(e){if(this.entered)return this.clone().decodeAsync(e);try{this.entered=!0;let t=!1,r;for await(let a of e){if(t)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{r=this.doDecodeSync(),t=!0}catch(c){if(!(c instanceof RangeError))throw c}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return r}let{headByte:n,pos:o,totalPos:s}=this;throw new RangeError(`Insufficient data in parsing ${be(n)} at ${s} (${o} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,t){if(this.entered){yield*this.clone().decodeMultiAsync(e,t);return}try{this.entered=!0;let r=t,n=-1;for await(let o of e){if(t&&n===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(o),r&&(n=this.readArraySize(),r=!1,this.complete());try{for(;yield this.doDecodeSync(),--n!==0;);}catch(s){if(!(s instanceof RangeError))throw s}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){e:for(;;){let e=this.readHeadByte(),t;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){let n=e-128;if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e<160){let n=e-144;if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else{let n=e-160;t=this.decodeString(n,0)}else if(e===192)t=null;else if(e===194)t=!1;else if(e===195)t=!0;else if(e===202)t=this.readF32();else if(e===203)t=this.readF64();else if(e===204)t=this.readU8();else if(e===205)t=this.readU16();else if(e===206)t=this.readU32();else if(e===207)this.useBigInt64?t=this.readU64AsBigInt():t=this.readU64();else if(e===208)t=this.readI8();else if(e===209)t=this.readI16();else if(e===210)t=this.readI32();else if(e===211)this.useBigInt64?t=this.readI64AsBigInt():t=this.readI64();else if(e===217){let n=this.lookU8();t=this.decodeString(n,1)}else if(e===218){let n=this.lookU16();t=this.decodeString(n,2)}else if(e===219){let n=this.lookU32();t=this.decodeString(n,4)}else if(e===220){let n=this.readU16();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===221){let n=this.readU32();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===222){let n=this.readU16();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===223){let n=this.readU32();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===196){let n=this.lookU8();t=this.decodeBinary(n,1)}else if(e===197){let n=this.lookU16();t=this.decodeBinary(n,2)}else if(e===198){let n=this.lookU32();t=this.decodeBinary(n,4)}else if(e===212)t=this.decodeExtension(1,0);else if(e===213)t=this.decodeExtension(2,0);else if(e===214)t=this.decodeExtension(4,0);else if(e===215)t=this.decodeExtension(8,0);else if(e===216)t=this.decodeExtension(16,0);else if(e===199){let n=this.lookU8();t=this.decodeExtension(n,1)}else if(e===200){let n=this.lookU16();t=this.decodeExtension(n,2)}else if(e===201){let n=this.lookU32();t=this.decodeExtension(n,4)}else throw new b(`Unrecognized type byte: ${be(e)}`);this.complete();let r=this.stack;for(;r.length>0;){let n=r.top();if(n.type===Ke)if(n.array[n.position]=t,n.position++,n.position===n.size)t=n.array,r.release(n);else continue e;else if(n.type===ie){if(t==="__proto__")throw new b("The key __proto__ is not allowed");n.key=this.mapKeyConverter(t),n.type=kt;continue e}else if(n.map[n.key]=t,n.readCount++,n.readCount===n.size)t=n.map,r.release(n);else{n.key=null,n.type=ie;continue e}}return t}}readHeadByte(){return this.headByte===ne&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=ne}readArraySize(){let e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:{if(e<160)return e-144;throw new b(`Unrecognized array type byte: ${be(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new b(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new b(`Max length exceeded: array length (${e}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState(e)}decodeString(e,t){return!this.rawStrings||this.stateIsMapKey()?this.decodeUtf8String(e,t):this.decodeBinary(e,t)}decodeUtf8String(e,t){if(e>this.maxStrLength)throw new b(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw wt;let r=this.pos+t,n;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?n=this.keyDecoder.decode(this.bytes,r,e):n=mt(this.bytes,r,e),this.pos+=t+e,n}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===ie:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new b(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw wt;let r=this.pos+t,n=this.bytes.subarray(r,r+e);return this.pos+=t+e,n}decodeExtension(e,t){if(e>this.maxExtLength)throw new b(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let r=this.view.getInt8(this.pos+t),n=this.decodeBinary(e,t+1);return this.extensionCodec.decode(n,r,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){let e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){let e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){let e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){let e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){let e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){let e=vt(this.view,this.pos);return this.pos+=8,e}readI64(){let e=ge(this.view,this.pos);return this.pos+=8,e}readU64AsBigInt(){let e=this.view.getBigUint64(this.pos);return this.pos+=8,e}readI64AsBigInt(){let e=this.view.getBigInt64(this.pos);return this.pos+=8,e}readF32(){let e=this.view.getFloat32(this.pos);return this.pos+=4,e}readF64(){let e=this.view.getFloat64(this.pos);return this.pos+=8,e}};function Ve(i,e){return new ye(e).decode(i)}var we=class{constructor(e){this.error=e}},sr=i=>new Promise(e=>{setTimeout(e,i)}),ar=(i,e)=>{let t=e.randomize?Math.random()+1:1,r=Math.max(e.minTimeout,1)*Math.pow(e.factor,i-1);return Math.round(Math.min(t*r,e.maxTimeout))};async function oe(i,e={}){let t={retries:e.retries??10,minTimeout:e.minTimeout??1e3,maxTimeout:e.maxTimeout??1/0,factor:e.factor??2,randomize:e.randomize??!0},r=o=>{throw new we(o??new Error("Aborted"))},n;for(let o=1;o<=t.retries+1;o++)try{return await i(r,o)}catch(s){if(s instanceof we)throw s.error;if(n=s,o>t.retries)throw s;await e.onRetry?.(s,o),await sr(ar(o,t))}throw n}var Xe={};Be(Xe,{default:()=>Qe});var je=function(i,e){return je=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},je(i,e)};function xt(i,e){je(i,e);function t(){this.constructor=i}i.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function cr(i){var e=typeof Symbol=="function"&&i[Symbol.iterator],t=0;return e?e.call(i):{next:function(){return i&&t>=i.length&&(i=void 0),{value:i&&i[t++],done:!i}}}}function lr(i,e){var t=typeof Symbol=="function"&&i[Symbol.iterator];if(!t)return i;var r=t.call(i),n,o=[],s;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)o.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(s)throw s.error}}return o}function ur(){for(var i=[],e=0;e<arguments.length;e++)i=i.concat(lr(arguments[e]));return i}var Et=(function(){function i(e,t){this.target=t,this.type=e}return i})(),pr=(function(i){xt(e,i);function e(t,r){var n=i.call(this,"error",r)||this;return n.message=t.message,n.error=t,n}return e})(Et),hr=(function(i){xt(e,i);function e(t,r,n){t===void 0&&(t=1e3),r===void 0&&(r="");var o=i.call(this,"close",n)||this;return o.wasClean=!0,o.code=t,o.reason=r,o}return e})(Et);var dr=function(){if(typeof WebSocket<"u")return WebSocket},fr=function(i){return typeof i<"u"&&!!i&&i.CLOSING===2},N={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},gr=(function(){function i(e,t,r){var n=this;r===void 0&&(r={}),this._listeners={error:[],message:[],open:[],close:[]},this._retryCount=-1,this._shouldReconnect=!0,this._connectLock=!1,this._binaryType="blob",this._closeCalled=!1,this._messageQueue=[],this.onclose=null,this.onerror=null,this.onmessage=null,this.onopen=null,this._handleOpen=function(o){n._debug("open event");var s=n._options.minUptime,a=s===void 0?N.minUptime:s;clearTimeout(n._connectTimeout),n._uptimeTimeout=setTimeout(function(){return n._acceptOpen()},a),n._ws.binaryType=n._binaryType,n._messageQueue.forEach(function(c){return n._ws.send(c)}),n._messageQueue=[],n.onopen&&n.onopen(o),n._listeners.open.forEach(function(c){return n._callEventListener(o,c)})},this._handleMessage=function(o){n._debug("message event"),n.onmessage&&n.onmessage(o),n._listeners.message.forEach(function(s){return n._callEventListener(o,s)})},this._handleError=function(o){n._debug("error event",o.message),n._disconnect(void 0,o.message==="TIMEOUT"?"timeout":void 0),n.onerror&&n.onerror(o),n._debug("exec error listeners"),n._listeners.error.forEach(function(s){return n._callEventListener(o,s)}),n._connect()},this._handleClose=function(o){n._debug("close event"),n._clearTimeouts(),n._shouldReconnect&&n._connect(),n.onclose&&n.onclose(o),n._listeners.close.forEach(function(s){return n._callEventListener(o,s)})},this._url=e,this._protocols=t,this._options=r,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(i,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(i,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(i,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(i,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CONNECTING",{get:function(){return i.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"OPEN",{get:function(){return i.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CLOSING",{get:function(){return i.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CLOSED",{get:function(){return i.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"binaryType",{get:function(){return this._ws?this._ws.binaryType:this._binaryType},set:function(e){this._binaryType=e,this._ws&&(this._ws.binaryType=e)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"bufferedAmount",{get:function(){var e=this._messageQueue.reduce(function(t,r){return typeof r=="string"?t+=r.length:r instanceof Blob?t+=r.size:t+=r.byteLength,t},0);return e+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?i.CLOSED:i.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),i.prototype.close=function(e,t){if(e===void 0&&(e=1e3),this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(e,t)},i.prototype.reconnect=function(e,t){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(e,t),this._connect())},i.prototype.send=function(e){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",e),this._ws.send(e);else{var t=this._options.maxEnqueuedMessages,r=t===void 0?N.maxEnqueuedMessages:t;this._messageQueue.length<r&&(this._debug("enqueue",e),this._messageQueue.push(e))}},i.prototype.addEventListener=function(e,t){this._listeners[e]&&this._listeners[e].push(t)},i.prototype.dispatchEvent=function(e){var t,r,n=this._listeners[e.type];if(n)try{for(var o=cr(n),s=o.next();!s.done;s=o.next()){var a=s.value;this._callEventListener(e,a)}}catch(c){t={error:c}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return!0},i.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter(function(r){return r!==t}))},i.prototype._debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._options.debug&&console.log.apply(console,ur(["RWS>"],e))},i.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,r=t===void 0?N.reconnectionDelayGrowFactor:t,n=e.minReconnectionDelay,o=n===void 0?N.minReconnectionDelay:n,s=e.maxReconnectionDelay,a=s===void 0?N.maxReconnectionDelay:s,c=0;return this._retryCount>0&&(c=o*Math.pow(r,this._retryCount-1),c>a&&(c=a)),this._debug("next delay",c),c},i.prototype._wait=function(){var e=this;return new Promise(function(t){setTimeout(t,e._getNextDelay())})},i.prototype._getNextUrl=function(e){if(typeof e=="string")return Promise.resolve(e);if(typeof e=="function"){var t=e();if(typeof t=="string")return Promise.resolve(t);if(t.then)return t}throw Error("Invalid URL")},i.prototype._connect=function(){var e=this;if(!(this._connectLock||!this._shouldReconnect)){this._connectLock=!0;var t=this._options,r=t.maxRetries,n=r===void 0?N.maxRetries:r,o=t.connectionTimeout,s=o===void 0?N.connectionTimeout:o,a=t.WebSocket,c=a===void 0?dr():a;if(this._retryCount>=n){this._debug("max retries reached",this._retryCount,">=",n);return}if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),!fr(c))throw Error("No valid WebSocket class provided");this._wait().then(function(){return e._getNextUrl(e._url)}).then(function(l){e._closeCalled||(e._debug("connect",{url:l,protocols:e._protocols}),e._ws=e._protocols?new c(l,e._protocols):new c(l),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout(function(){return e._handleTimeout()},s))})}},i.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new pr(Error("TIMEOUT"),this))},i.prototype._disconnect=function(e,t){if(e===void 0&&(e=1e3),this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(e,t),this._handleClose(new hr(e,t,this))}catch{}}},i.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},i.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},i.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},i.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},i.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},i})(),Qe=gr;var mr=i=>{if(typeof i=="number")return{0:"CONNECTING",1:"OPEN",2:"CLOSING",3:"CLOSED"}[i]??`STATE_${i}`},br=i=>{try{let e=new URL(i);return`${e.origin}${e.pathname}`}catch{return i}},St=i=>{if(i instanceof Error)return i.message?`${i.name}: ${i.message}`:i.name;if(typeof i=="string")return i;if(!i||typeof i!="object")return;let e=i,t=typeof e.message=="string"&&e.message?e.message:typeof e.reason=="string"&&e.reason?e.reason:void 0;if(!t)return;let r=typeof e.name=="string"&&e.name?e.name:void 0;return r?`${r}: ${t}`:t},ke=i=>{if(i instanceof Error)return i.message?`${i.name}: ${i.message}`:i.name;if(typeof i=="string")return i;if(!i||typeof i!="object")return String(i);let e=i,t=[],r=St(e);r&&t.push(r);let n=St(e.error);n&&n!==r&&t.push(`error=${n}`),typeof e.type=="string"&&e.type&&t.push(`type=${e.type}`),typeof e.code=="number"&&t.push(`code=${e.code}`),typeof e.reason=="string"&&e.reason&&e.reason!==r&&t.push(`reason=${e.reason}`),typeof e.wasClean=="boolean"&&t.push(`wasClean=${e.wasClean}`);let o=e.target??e.currentTarget;if(o&&typeof o=="object"){typeof o.url=="string"&&o.url&&t.push(`url=${br(o.url)}`);let s=mr(o.readyState);s&&t.push(`readyState=${s}`)}return t.length>0?t.join(" | "):"Unknown websocket event"};var M=null;typeof WebSocket<"u"?M=WebSocket:typeof MozWebSocket<"u"?M=MozWebSocket:typeof global<"u"?M=global.WebSocket||global.MozWebSocket:typeof window<"u"?M=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(M=self.WebSocket||self.MozWebSocket);var It=M;var xe=class{constructor(){this.disposables=new Map}add(e,t){this.disposables.has(e)&&(console.warn(`Disposable with key "${e}" already exists. Disposing the old one.`),this.disposables.get(e)?.dispose()),typeof t=="function"&&(t=t()),this.disposables.set(e,t)}dispose(){this.disposables.forEach(e=>e.dispose()),this.disposables.clear()}};var vr=Qe??Xe;var Je=class extends Error{constructor(e="WebSocket connection timeout"){super(e),this.name="ConnectionTimeoutError"}},se=class extends Error{constructor(t,r){super(t);this.originalError=r;this.name="ConnectionFailedError"}},R=class extends Error{constructor(t,r){super(t);this.data=r;this.name="InvalidMessageError"}},A=class extends Error{constructor(e){super(e),this.name="InvalidConfigurationError"}},P,Ye,Ze,O=class{constructor(e,t,r={}){this.eventEmitter=t;this.options=r;W(this,P);this.clientId="";this.closed=!1;this.disposables=new xe;this.connectPromise=null;this.terminalError=null;this.pingIntervalStarted=!1;this.incomingMessageChain=Promise.resolve();this.validateConfiguration(r),this.url=new URL(e),this.PING_INTERVAL=r.pingInterval??3e4,this.CONNECT_WAIT_TIMEOUT=r.connectWaitTimeout??3e4;let n=r.startClosed!==!1;this.rws=new vr(this.url.toString(),[],{WebSocket:r.webSocket??globalThis.WebSocket??It,connectionTimeout:r.connectionTimeout,maxReconnectionDelay:2e3,minReconnectionDelay:200,maxEnqueuedMessages:0,maxRetries:r.maxRetries??50,startClosed:n}),this.log("debug","Transport initialized",{url:this.url.toString(),options:r}),this.registerWatchers()}validateConfiguration(e){if(e.pingInterval!==void 0&&(e.pingInterval<1e3||e.pingInterval>3e5))throw new A("pingInterval must be between 1000ms and 300000ms");if(e.connectionTimeout!==void 0&&(e.connectionTimeout<100||e.connectionTimeout>3e4))throw new A("connectionTimeout must be between 100ms and 30000ms");if(e.connectWaitTimeout!==void 0&&(e.connectWaitTimeout<1e3||e.connectWaitTimeout>3e5))throw new A("connectWaitTimeout must be between 1000ms and 300000ms");if(e.maxRetries!==void 0&&(e.maxRetries<0||e.maxRetries>100))throw new A("maxRetries must be between 0 and 100")}log(e,t,r){if(this.options.debug){let n=new Date().toISOString(),o=r?JSON.stringify(r,null,2):"";console[e](`[Transport ${n}] ${t}${o?`
2
- `+o:""}`)}}connect(){return this.terminalError?Promise.reject(this.terminalError):S(this,P,Ye).call(this)}id(){return this.clientId}async registerWatchers(){let e=t=>{this.incomingMessageChain=this.incomingMessageChain.catch(()=>{}).then(()=>this.processIncomingMessage(t)).catch(r=>{this.log("error","Failed to process queued WebSocket frame",{error:r instanceof Error?r.message:String(r)}),this.eventEmitter.emit("transport.error",{type:"message_handle_error",error:r,rawMessage:t.data,timestamp:Date.now()})})};this.rws.addEventListener("message",e),this.disposables.add("message",{dispose:()=>{this.rws.removeEventListener("message",e)}})}async processIncomingMessage(e){let t;try{t=await this.toArrayBuffer(e.data)}catch(n){this.log("error","Unexpected WebSocket message type",{error:n instanceof Error?n.message:String(n),messageType:typeof e.data}),this.eventEmitter.emit("transport.error",{type:"message_type_error",error:n,rawMessage:e.data,timestamp:Date.now()});return}if(t.byteLength===0){this.log("warn","Ignoring empty WebSocket frame");return}let r;try{r=Ve(t)}catch(n){this.log("error","Failed to decode WebSocket frame",{error:n instanceof Error?n.message:String(n),byteLength:t.byteLength}),this.eventEmitter.emit("transport.error",{type:"message_decode_error",error:n,rawMessage:t,timestamp:Date.now()});return}try{await this.handleRawMessage(r)}catch(n){this.log("error","Failed to process WebSocket frame",{error:n instanceof Error?n.message:String(n),byteLength:t.byteLength}),this.eventEmitter.emit("transport.error",{type:"message_handle_error",error:n,rawMessage:t,timestamp:Date.now()})}}async toArrayBuffer(e){if(e instanceof Blob)return e.arrayBuffer();if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength).slice().buffer;throw new Error("Unexpected message type: "+typeof e)}async handleRawMessage(e){if(this.closed){this.log("debug","Ignoring message received after transport was closed");return}if(typeof e!="object"||e===null){this.log("debug","Received invalid message format",{ev:e});return}try{let{data:t,event:r,as:n}=e;if(!r||typeof r!="string")throw new R("Message missing event field",e);if(this.log("debug","Processing message",{event:r,hasData:!!t}),r==="App.Actions.GetClientId"){this.clientId=t.id,this.log("info","Client ID received",{clientId:this.clientId});return}if(r==="Events.BootError"){let o=t,s=new k(o?.message||"Notebook is no longer available",o||{});this.log("error","Boot error received",{data:t}),this.terminate(s,4e3,s.message);return}if(r==="response"){let{responseEvent:o,data:s}=t;if(!o)throw new R("Response message missing responseEvent",e);this.log("debug","Response message received",{responseEvent:o}),await this.handleMessage(o,s);return}if(r==="error"){let{errorEvent:o,data:s}=t;if(!o)throw new R("Error message missing errorEvent",e);this.log("debug","Error message received",{errorEvent:o,errorData:s}),await this.handleMessage(o,s);return}await this.handleMessage(r,t,n)}catch(t){t instanceof R?this.log("error","Invalid message format",{error:t.message,data:t.data}):this.log("error","Failed to parse message",{ev:e,error:t instanceof Error?t.message:String(t)}),this.eventEmitter.emit("transport.error",{type:"message_parse_error",error:t,rawMessage:e,timestamp:Date.now()})}}async handleMessage(e,t,r){if(e==="App.Actions.GetClientId"){this.clientId=t.id,this.eventEmitter.emit(e,this.clientId);return}e&&this.eventEmitter.emit(r||e,t)}listen(e,t,r){return this.eventEmitter.listen(e,t)}onDidBootError(e){return this.eventEmitter.listen("transport.boot_error",t=>{e(t.error)})}removeListener(e,t){this.eventEmitter.removeListener(e,t)}listenOnce(e,t,r){return this.eventEmitter.once(e,t,r)}emit(e,...t){this.eventEmitter.emit(e,...t)}get isConnected(){return this.status==="OPEN"}get isConnecting(){return this.status==="CONNECTING"}get isDisconnected(){return this.status==="CLOSED"}get isClosed(){return this.closed}getTerminalError(){return this.terminalError}get status(){return{0:"CONNECTING",1:"OPEN",2:"CLOSING",3:"CLOSED"}[this.rws.readyState]}async call(e,t={},r={}){if(this.terminalError)throw this.terminalError;let n=r.responseEvent||`${e}_${m()}_response`,o=`${n}_error`,s,a,c=()=>{s&&(this.rws.removeEventListener("close",s),this.rws.removeEventListener("error",s)),a&&(r.abortSignal?.removeEventListener("abort",a),a=void 0),this.eventEmitter.removeListener(n),this.eventEmitter.removeListener(o)},l=(g,p)=>{if(this.terminalError){p(this.terminalError);return}let f=new DOMException("Request aborted","AbortError");if(r.abortSignal?.aborted){p(f);return}if(r.abortSignal&&(a=()=>{p(f)},r.abortSignal.addEventListener("abort",a,{once:!0})),!this.isConnected||this.isClosed){p(new se(`Connection is not open while sending ${e}. Current status: ${this.status}`));return}this.listenOnce(n,h=>{this.log("debug","Message response received",{action:e}),g(h)}),this.listenOnce(o,h=>{this.log("error","Message error received",{action:e,error:h});let E=h;p(new y(E.code,E.message,E))}),s=h=>{if(h.code===1008&&(h.reason||"").includes("rate limit")){p(new L(h.reason||"Rate limit exceeded",h));return}let E=ke(h);p(this.terminalError||new se(`Connection lost to the notebook during request: ${E}`,h))},this.rws.addEventListener("close",s),this.rws.addEventListener("error",s);try{this.rws.send(this.pack({action:e,data:t,errorEvent:o,responseEvent:n})),this.log("debug","Message sent",{action:e,data:t})}catch(h){this.log("error","Failed to send message",{action:e,error:h}),p(h)}},d=async()=>{if(r.abortSignal?.aborted)throw new DOMException("Request aborted","AbortError");if(await S(this,P,Ye).call(this),r.abortSignal?.aborted)throw new DOMException("Request aborted","AbortError");let g=new Promise(l).finally(c);return r.timeout?$(g,r.timeout).catch(p=>{throw p instanceof I?B.fromPromiseTimeoutError(p):p}).finally(c):g},u=r.retries===!1?0:r.retries??0;return this.sendWithRetry(async()=>await d(),u)}send(e,t={}){if(this.terminalError)throw this.terminalError;if(!this.isConnected||this.isClosed)return this.log("debug","Connection not available, dropping one-way message",{action:e}),!1;try{return this.rws.send(this.pack({action:e,data:t})),this.log("debug","One-way message sent",{action:e,data:t}),!0}catch(r){return this.log("error","Failed to send one-way message",{action:e,error:r}),!1}}pack(e){return new Blob([He(e)])}sendWithRetry(e,t){return oe(async(r,n)=>{try{return await e()}catch(o){if(o instanceof y||o instanceof L||o instanceof A||o instanceof R||o instanceof k||o instanceof DOMException){this.log("debug","Non-retryable error, bailing",{error:o.message,attempt:n}),r(o);return}throw o instanceof B&&(this.reconnect(),this.log("warn","Send operation timed out, connection reset",{attempt:n,timeout:o.time})),this.log("debug","Retrying send operation",{attempt:n,error:o instanceof Error?o.message:String(o)}),o}},{retries:t,onRetry:(r,n)=>{this.log("warn","Send operation retry",{attempt:n,maxRetries:t,error:r instanceof Error?r.message:String(r)})},minTimeout:1e3,factor:2,maxTimeout:3e4,randomize:!0})}invoke(e,t={},r={}){return r.responseEvent||(r.responseEvent=`${e}_${m()}`),this.call("invoke",{action:e,data:t},r)}reconnect(){if(this.terminalError)throw this.terminalError;if(this.closed)throw new Error("Cannot reconnect a closed transport. The transport has been permanently closed.");this.log("info","Reconnecting transport"),this.connectPromise=null,this.rws.reconnect()}disconnect(){this.closed||this.close()}terminate(e,t=4e3,r=e.message){this.terminalError=e,e instanceof k&&this.eventEmitter.emit("transport.boot_error",{error:e,timestamp:Date.now()}),this.close(t,r)}close(e,t){if(!this.closed){this.log("info","Closing transport connection",{code:e,reason:t}),this.connectPromise=null,this.disposables.dispose();try{this.rws.close(e,t)}catch(r){this.log("error","Error closing WebSocket",{error:r instanceof Error?r.message:String(r)})}this.eventEmitter.emit("transport.closed",{code:e,reason:t,timestamp:Date.now()}),this.eventEmitter.removeListener("*"),this.closed=!0,this.log("info","Transport connection closed successfully")}}onDidConnect(e){this.rws.addEventListener("open",e);let t={dispose:()=>{this.rws.removeEventListener("open",e)}};return this.disposables.add(`connect_${m()}`,t),t}onDidClose(e){this.rws.addEventListener("close",e);let t={dispose:()=>{this.rws.removeEventListener("close",e)}};return this.disposables.add(`close_${m()}`,t),t}};P=new WeakSet,Ye=function(){return this.terminalError?Promise.reject(this.terminalError):this.isConnected?Promise.resolve():this.connectPromise?this.connectPromise:(this.connectPromise=new Promise((e,t)=>{if(this.isConnected){e(),S(this,P,Ze).call(this);return}let r,n=0,o=()=>{this.rws.removeEventListener("open",s),this.rws.removeEventListener("error",a),this.rws.removeEventListener("close",c),clearTimeout(r)},s=()=>{o(),this.connectPromise=null,e(),S(this,P,Ze).call(this)},a=l=>{n+=1,this.log("warn","WebSocket emitted an error while connecting; waiting for reconnect/open",{errorCount:n,error:ke(l)})},c=l=>{let d=ke(l);if(l.code===1008||l.code===4e3){o(),this.connectPromise=null,t(new se(`WebSocket connection failed: ${d}`,l));return}this.log("warn","WebSocket closed before opening; waiting for reconnect/open",{error:d})};this.rws.addEventListener("open",s),this.rws.addEventListener("error",a),this.rws.addEventListener("close",c),this.rws.readyState===3&&this.rws.reconnect(),r=setTimeout(()=>{o(),this.connectPromise=null,t(new Je(`WebSocket connection timeout after ${this.CONNECT_WAIT_TIMEOUT}ms`))},this.CONNECT_WAIT_TIMEOUT)}),this.connectPromise)},Ze=function(){this.pingIntervalStarted||this.closed||(this.pingIntervalStarted=!0,this.disposables.add("pingInterval",()=>{let e=setInterval(async()=>{try{this.log("debug","Sending periodic ping"),await this.invoke("ping"),this.log("debug","Ping successful")}catch(t){this.log("error","Ping failed",{error:t instanceof Error?t.message:String(t)})}},this.PING_INTERVAL);return{dispose:()=>{clearInterval(e),this.pingIntervalStarted=!1}}}))};var tt={};Be(tt,{default:()=>et});function et(i){return{all:i=i||new Map,on:function(e,t){var r=i.get(e);r?r.push(t):i.set(e,[t])},off:function(e,t){var r=i.get(e);r&&(t?r.splice(r.indexOf(t)>>>0,1):i.set(e,[]))},emit:function(e,t){var r=i.get(e);r&&r.slice().map(function(n){n(t)}),(r=i.get("*"))&&r.slice().map(function(n){n(e,t)})}}}var yr=et??tt;function wr(i){let e=yr(i);return e.once=(t,r)=>{let n=o=>{e.off(t,n),r(o)};return e.on(t,n),{dispose:()=>{e.off(t,n)}}},e}var _=class i{constructor(){this.emitter=wr()}listen(e,t){let r=()=>{this.removeListener(e,t)};return this.emitter.on(e,t),{dispose:r}}emit(e,...t){this.emitter.emit(e,t.length>1?t:t[0])}once(e,t){return this.emitter.once(e,t)}static make(){return new i}static refresh(){return new i}removeListener(e,t){this.emitter.off(e,t)}static createInstance(){return new i}inspect(){return this.emitter.all}};var ae=class{constructor(e){this.okra=e}checkpoint(e,t,r="main",n=!1){return this.okra.invoke("git.checkpoint",{author:e,message:t,branch:r,allowEmpty:n})}checkout(e,t=!0){return this.okra.invoke("git.checkout",{branch:e,create:t})}sync(e,t,r="main",n,o="both",s=!1){return this.okra.invoke("git.sync",{url:e,author:t,ref:r,token:n,direction:o,force:s})}log(e="main"){return this.okra.invoke("git.log",{ref:e})}diff(e){return this.okra.invoke("git.diff",e)}merge(e){return this.okra.invoke("git.merge",e)}conflicts(){return this.okra.invoke("git.conflicts",{})}abortMerge(){return this.okra.invoke("git.resolve",{action:"abort"})}continueMerge(e,t){return this.okra.invoke("git.resolve",{action:"continue",author:e,message:t})}review(){return this.okra.invoke("git.review",{})}stage(e={all:!0}){return this.okra.invoke("git.stage",e)}unstage(e={all:!0}){return this.okra.invoke("git.unstage",e)}revert(e){return this.okra.invoke("git.revert",e)}credentials(){return this.okra.gitCredentials()}restore(e){return this.okra.invoke("git.restore",{ref:e})}status(){return this.okra.invoke("git.status",{})}};var F=class{constructor(e,t,r){this.onEvent=e;this.onceEvent=t;this.beacon=r;this.urlHistory=[];this.currentIndex=0;this._canGoBack=!1;this._canGoForward=!1;this.beacon=r,this.setupUrlChangeListener(),this.urlHistory.push(r.iframe.src),this.updateNavigationState()}visit(e){if(!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.currentIndex<this.urlHistory.length-1&&(this.urlHistory=this.urlHistory.slice(0,this.currentIndex+1)),this.urlHistory.push(e),this.currentIndex=this.urlHistory.length-1,this.updateNavigationState(),this.emitHistoryChange(e,"push")}setupUrlChangeListener(){this.beacon.on("urlChange",e=>{this.addToHistory(e.newUrl)})}addToHistory(e){this.currentIndex<this.urlHistory.length-1&&(this.urlHistory=this.urlHistory.slice(0,this.currentIndex+1)),this.urlHistory.push(e),this.currentIndex=this.urlHistory.length-1,this.updateNavigationState()}updateNavigationState(){let e=this._canGoBack,t=this._canGoForward;this._canGoBack=this.currentIndex>0,this._canGoForward=this.currentIndex<this.urlHistory.length-1,(e!==this._canGoBack||t!==this._canGoForward)&&this.emitNavigationStateChange()}emitNavigationStateChange(){this.beacon&&this.beacon.emit&&this.beacon.emit("navigationStateChange",{canGoBack:this._canGoBack,canGoForward:this._canGoForward,currentIndex:this.currentIndex,historyLength:this.urlHistory.length,timestamp:Date.now()})}get canGoBack(){return this._canGoBack}get canGoForward(){return this._canGoForward}async goBack(){if(!this.canGoBack)return{success:!1,error:"Cannot go back - no previous history"};this.currentIndex--,this.updateNavigationState();let e=this.urlHistory[this.currentIndex];return this.beacon?(this.beacon.navigate(e),this.emitHistoryChange(e,"back"),{success:!0,url:e}):{success:!1,error:"Beacon reference not set"}}async goForward(){if(!this.canGoForward)return{success:!1,error:"Cannot go forward - no forward history"};this.currentIndex++,this.updateNavigationState();let e=this.urlHistory[this.currentIndex];return this.beacon?(this.beacon.navigate(e),this.emitHistoryChange(e,"forward"),{success:!0,url:e}):{success:!1,error:"Beacon reference not set"}}async reload(){if(this.currentIndex>=0&&this.currentIndex<this.urlHistory.length){let e=this.urlHistory[this.currentIndex];if(!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.emitHistoryChange(e,"reload")}}getCurrentUrl(){return this.currentIndex>=0&&this.currentIndex<this.urlHistory.length?new URL(this.urlHistory[this.currentIndex]):new URL("about:blank")}getHistory(){return[...this.urlHistory]}getCurrentIndex(){return this.currentIndex}canGoBackSync(){return this.currentIndex>0}canGoForwardSync(){return this.currentIndex<this.urlHistory.length-1}emitHistoryChange(e,t){this.beacon&&this.beacon.emit&&this.beacon.emit("historyChange",{url:e,state:null,direction:t,timestamp:Date.now()})}async pushState(e){this.visit(e)}async replaceState(e){if(this.currentIndex>=0&&this.currentIndex<this.urlHistory.length){if(this.urlHistory[this.currentIndex]=e,!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.emitHistoryChange(e,"replace")}else this.visit(e)}async getHistoryLength(){return this.urlHistory.length}async getHistoryState(){return null}async getHistoryInfo(){return{length:this.urlHistory.length,state:null,url:this.urlHistory[this.currentIndex]||"",canGoBack:this.canGoBack,canGoForward:this.canGoForward}}on(e,t){return this.onEvent(e,t)}once(e,t){this.onceEvent(e,t)}};function Tt(){if(typeof window>"u")throw new Error("Beacon SDK can only be used in a browser environment")}var U=class extends Error{constructor(t,r){super(t);this.code=r;this.name="BeaconError"}},ce=class extends U{constructor(e,t){super(`Beacon operation '${e}' timed out after ${t}ms`),this.code="TIMEOUT"}},w=class extends U{constructor(e){super(`Beacon connection error: ${e}`),this.code="CONNECTION_ERROR"}},Ee=class{constructor(e,t={}){this.messageHandlers=new Map;this.isBeaconReady=!1;this.readyPromise=null;this.isStarted=!1;this.disposables=[];this.messageChannel=null;this.port=null;this.channelEstablished=!1;Tt(),this.iframe=e;let r={retries:3,minTimeout:1e3,maxTimeout:5e3,factor:2,randomize:!0};this.options={timeout:1e4,targetOrigin:"*",debug:!1,retry:{...r,...t.retry},...t},this.eventEmitter=_.make(),this.setupMessageChannel(),this.navigator=new F(this.eventEmitter.listen.bind(this.eventEmitter),this.eventEmitter.once.bind(this.eventEmitter),this)}setupMessageChannel(){let e=t=>{try{if(t.source!==this.iframe.contentWindow)return;let r=t.data;if(!r||typeof r!="object"||!r.type)return;r.type==="beacon:ready-for-channel"&&this.establishChannel().catch(n=>{this.options.debug&&console.error("[Beacon SDK] Channel establishment failed:",n)}),r.type==="beacon:channel-established"&&(this.channelEstablished=!0,this.isBeaconReady=!0,this.emit("ready",r.payload),this.options.debug&&console.log("[Beacon SDK] Channel established and beacon ready"))}catch(r){this.options.debug&&console.error("[Beacon SDK] Message parsing error:",r)}};window.addEventListener("message",e),this.disposables.push({dispose:()=>window.removeEventListener("message",e)})}async establishChannel(){if(!this.iframe.contentWindow)throw new w("Iframe contentWindow not available");this.messageChannel=new MessageChannel,this.port=this.messageChannel.port1,this.port.onmessage=t=>{this.handleBeaconMessage(t.data)},this.port.onmessageerror=t=>{this.options.debug&&console.error("[Beacon SDK] Port message error:",t)},this.port.start();let e={type:"beacon:establish-channel",timestamp:Date.now(),id:this.generateId()};return this.iframe.contentWindow.postMessage(e,"*",[this.messageChannel.port2]),this.options.debug&&console.log("[Beacon SDK] Channel establishment message sent"),new Promise((t,r)=>{let n=setTimeout(()=>{r(new w("Channel establishment timeout"))},this.options.timeout),o=()=>{this.channelEstablished&&this.isBeaconReady?(clearTimeout(n),t()):setTimeout(o,100)};o()})}handleBeaconMessage(e){this.options.debug&&console.log("[Beacon SDK] Received message:",e.type,e.payload);let t=e.type.replace("beacon:","");this.emit(t,e.payload);let r=this.messageHandlers.get(e.type);r&&r.forEach(n=>{try{n(e.payload)}catch(o){this.options.debug&&console.error("[Beacon SDK] Message handler error:",o)}})}waitForBeaconReady(){return oe(async()=>new Promise((e,t)=>{if(this.isBeaconReady&&this.channelEstablished){e();return}let r=this.options.timeout,n=setTimeout(()=>{t(new ce("beacon ready",r))},r),o=this.on("ready",()=>{clearTimeout(n),o.dispose(),e()})}),{retries:this.options.retry?.retries??3,minTimeout:this.options.retry?.minTimeout??1e3,maxTimeout:this.options.retry?.maxTimeout??5e3,factor:this.options.retry?.factor??2,randomize:this.options.retry?.randomize??!0,onRetry:(e,t)=>{if(this.options.debug){let r=e instanceof Error?e.message:String(e);console.warn(`[Beacon SDK] Beacon ready retry attempt ${t}:`,r)}this.isBeaconReady=!1,this.channelEstablished=!1}})}sendMessage(e,t={}){if(!this.port)throw new w("MessagePort not available - channel not established");let r={type:`beacon:${e}`,payload:t,timestamp:Date.now(),source:"parent",id:this.generateId()};try{this.port.postMessage(r),this.options.debug&&console.log("[Beacon SDK] Sent message via port:",r.type,r.payload)}catch(n){throw new w(`Failed to send message via port: ${n instanceof Error?n.message:String(n)}`)}}async sendAndWaitFor(e,t,r={},n){return await this.ready(),oe(async o=>new Promise((s,a)=>{let c=n||this.options.timeout,l=setTimeout(()=>{d.dispose();let u=new ce(e,c);a(u)},c),d=this.eventEmitter.listen(t,u=>{clearTimeout(l),d.dispose(),s(u)});try{this.sendMessage(e,r)}catch(u){clearTimeout(l),d.dispose(),u instanceof w?a(u):o(u)}}),{retries:this.options.retry?.retries??3,minTimeout:this.options.retry?.minTimeout??1e3,maxTimeout:this.options.retry?.maxTimeout??5e3,factor:this.options.retry?.factor??2,randomize:this.options.retry?.randomize??!0,onRetry:(o,s)=>{if(this.options.debug){let a=o instanceof Error?o.message:String(o);console.warn(`[Beacon SDK] Retry attempt ${s} for ${e}:`,a)}}})}generateId(){return`sdk_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}emit(e,t){this.eventEmitter.emit(e,t)}start(){return this.isStarted?this.readyPromise||Promise.resolve():(this.isStarted=!0,this.readyPromise=this.waitForBeaconReady(),this.readyPromise)}async ready(){if(!this.isStarted)throw new U("Beacon has not been started. Call start() first.");if(!this.readyPromise)throw new U("Beacon ready promise is not available");return $(this.readyPromise,this.options.timeout)}get isReady(){return this.isBeaconReady}on(e,t){return this.eventEmitter.listen(e,t)}once(e,t){return this.eventEmitter.once(e,t)}async ping(){try{return await this.sendAndWaitFor("ping","pong",{timestamp:Date.now()}),!0}catch(e){return this.options.debug&&console.warn("[Beacon SDK] Ping failed:",e),!1}}async getDebugInfo(){return this.sendAndWaitFor("getDebugInfo","debugInfo")}async getConsoleEvents(){return this.sendAndWaitFor("getConsoleEvents","consoleEvents")}async getErrorEvents(){return this.sendAndWaitFor("getErrorEvents","errorEvents")}async clearConsole(){await this.ready(),this.sendMessage("clearConsole")}async clearErrors(){await this.ready(),this.sendMessage("clearErrors")}async executeCode(e){return this.sendAndWaitFor("executeCode","codeExecutionResult",{code:e})}async inspectElement(e){return this.sendAndWaitFor("inspectElement","elementInspectionResult",{selector:e})}async fetch(e){return this.sendAndWaitFor("fetch","fetchResult",e)}async captureScreenshot(e={}){let t=e.mediaTimeoutMs??e.timeout??3e4,r=e.transportTimeoutMs??t+5e3;return this.sendAndWaitFor("captureScreenshot","screenshotResult",e,r)}async debug(e,t){let r=new URL(e.path,this.iframe.src||window.location.origin).href;this.iframe.src!==r&&(this.navigator.visit(r),await this.ready()),t&&await this.wait(t);let n=(e.options?.timeout||3e4)+5e3;return this.sendAndWaitFor("debug","debugResult",e,n)}async wait(e){return new Promise(t=>setTimeout(t,e*1e3))}navigate(e){if(!this.iframe)throw new w("Iframe not available");try{let t=new URL(e,this.iframe.src||window.location.origin);this.iframe.src=t.href,this.isBeaconReady=!1,this.channelEstablished=!1,this.port&&(this.port.close(),this.port=null),this.messageChannel&&(this.messageChannel=null),this.isStarted&&(this.readyPromise=this.waitForBeaconReady())}catch{throw new w(`Invalid URL: ${e}`)}}get url(){return this.iframe.src}get element(){return this.iframe}dispose(){this.port&&(this.port.close(),this.port=null),this.messageChannel&&(this.messageChannel=null),this.disposables.forEach(e=>e.dispose()),this.disposables=[],this.messageHandlers.clear(),this.isBeaconReady=!1,this.channelEstablished=!1,this.isStarted=!1,this.readyPromise=null}};function rt(i,e){return new Ee(i,e)}function kr(){try{return Tt(),!0}catch{return!1}}function xr(i){return Array.isArray(i)?i:Object.entries(i).map(([e,t])=>({name:e,...typeof t=="string"?{value:t}:t}))}var Se=class extends Error{constructor(t,r={}){super(t);this.message=t;this.data=r;this.name="NotebookInitError"}},Ie=class extends Error{constructor(t,r){super(`PHPSandbox API Error: ${t.status} ${t.statusText} - ${r}`);this.response=t;this.body=r;this.status=t.status}},Te=class{constructor(e){this.client=e;this.secrets=new De(e),this.preview=new Ce(e),this.mail=new Ne(e)}async create(e,t={},r=!0){let n=await this.client.post("/notebook",{template:e,...t}),o=new x(n.data,this.client);return r?this.init(o):o}async get(e){let t=await this.client.get(`/notebook/${e}`);return new x(t.data,this.client)}async update(e,t={}){let r=await this.client.put(`/notebook/${e}`,t);return new x(r.data,this.client)}async delete(e){await this.client.delete(`/notebook/${e}`)}async fork(e,t={}){let r=await this.client.post(`/notebook/${e}/fork`,t);return this.init(new x(r.data,this.client))}async gitCredentials(e){return(await this.client.post(`/notebook/${e}/git/credentials`)).data}async open(e){let t=await this.client.get(`/notebook/${e}`);return new x(t.data,this.client)}openFromData(e){return this.init(new x(e,this.client))}async init(e){return await e.ready(),e}};function Er(i){let e=new URL(i),t=e.pathname.replace(/\/+$/,"");return e.pathname=t===""||t==="/"?"/v1/":`${t}/`,e.search="",e.hash="",e.toString()}var Pe=class{constructor(e,t="https://api.phpsandbox.io/v1",r={}){this.fetch=globalThis.fetch;this.notebook=new Te(this),this.options=Object.assign({startClosed:!0},r),this.baseUrl=Er(t),r.fetch&&(this.fetch=r.fetch),this.headers={Accept:"application/json",Authorization:`Bearer ${e}`,"Content-Type":"application/json"}}get(e){return this.makeRequest("GET",e)}post(e,t){return this.makeRequest("POST",e,{body:t===void 0?void 0:JSON.stringify(t)})}delete(e){return this.makeRequest("DELETE",e)}put(e,t){return this.makeRequest("PUT",e,{body:t===void 0?void 0:JSON.stringify(t)})}async makeRequest(e,t,r){let n=await this.fetch(new Request(new URL(t.replace(/^\//,""),this.baseUrl),{method:e,...r,headers:this.headers}));if(!n.ok)throw new Ie(n,await n.text());if(n.status===204)return{data:void 0};let o=await n.text();return{data:o===""?void 0:JSON.parse(o)}}},nt=class extends Pe{},De=class{constructor(e){this.client=e}async list(e){return(await this.client.get(`/notebook/${e}/secrets`)).data}async set(e,t,r){let n=typeof r=="string"?{name:t,value:r}:{name:t,...r};return(await this.client.put(`/notebook/${e}/secrets`,n)).data}async setMany(e,t){return(await this.client.put(`/notebook/${e}/secrets`,{secrets:xr(t)})).data}async delete(e,t){await this.client.delete(`/notebook/${e}/secrets/${encodeURIComponent(t)}`)}},Ce=class{constructor(e){this.client=e}async get(e){return(await this.client.get(`/notebook/${e}/preview`)).data}async setPassword(e,t){return(await this.client.put(`/notebook/${e}/preview`,t)).data}async disable(e){await this.client.delete(`/notebook/${e}/preview`)}async createSession(e){return(await this.client.post(`/notebook/${e}/preview/session`)).data}async createHandoff(e,t){return(await this.client.post(`/notebook/${e}/preview/handoff`,t)).data}},Ne=class{constructor(e){this.client=e}async status(e){return(await this.client.get(`/notebook/${e}/mail`)).data}async enable(e){return(await this.client.put(`/notebook/${e}/mail`)).data}async disable(e){await this.client.delete(`/notebook/${e}/mail`)}async list(e,t={}){return(await this.client.get(`/notebook/${e}/mails${Sr(t)}`)).data}async get(e,t){return(await this.client.get(`/notebook/${e}/mails/${encodeURIComponent(t)}`)).data}async delete(e,t){await this.client.delete(`/notebook/${e}/mails/${encodeURIComponent(t)}`)}},D,le,it,x=class{constructor(e,t){this.data=e;this.client=t;W(this,le);this.initialized=!1;W(this,D);this.disposables=[];this.emitter=_.createInstance(),this.socket=new O(e.okraUrl,this.emitter,{debug:t.options.debug,startClosed:t.options.startClosed,webSocket:t.options.webSocket}),this.watchConnection(),Oe(this,D,S(this,le,it).call(this)),this.file=new G(this),this.terminal=new K(this),this.auth=new q(this),this.lsp=new V(this),this.composer=new j(this),this.log=new Q(this),this.repl=new J(this),this.container=new z(this),this.laravel=new X(this),this.shell=new Y(this),this.git=new ae(this),this.services=new Z(this),this.config=new ee(this),this.secrets=new Re(t,this.data.id),this.preview=new Ae(t,this.data.id),this.mail=new _e(t,this.data.id)}async ready(){let e=this.socket.getTerminalError();if(e)throw e;return(async()=>(this.client.options.startClosed&&!this.socket.isConnected&&await this.socket.connect(),ue(this,D)))()}fork(e={}){return this.client.notebook.fork(this.data.id,e)}gitCredentials(){return this.client.notebook.gitCredentials(this.data.id)}delete(){return this.client.notebook.delete(this.data.id).then(()=>{this.socket.terminate(new k("Notebook has been deleted.",{id:this.data.id}))})}stop(){return this.container.stop()}restart(){return this.container.start()}invoke(e,t={},r={}){return this.socket.invoke(e,t||{},r)}send(e,t={}){return this.socket.send(e,t||{})}ping(){return this.invoke("ping")}listen(e,t){let r=this.emitter.listen(e,t);return this.disposables.push(r),r}dispose(){this.disposables.forEach(e=>e.dispose()),!this.socket.isClosed&&this.socket.disconnect()}connected(){return this.waitForSocketConnection({rejectOnClose:!0})}whenConnected(){return this.waitForSocketConnection({rejectOnClose:!1})}waitForSocketConnection(e){let t=this.socket.getTerminalError();return t?Promise.reject(t):this.socket.isConnected?Promise.resolve(this):new Promise((r,n)=>{let o=[],s=!1,a=()=>{for(let l of o)l.dispose();o.length=0},c=l=>{s||(s=!0,a(),l())};try{o.push(this.socket.onDidConnect(()=>c(()=>r(this)))),e.rejectOnClose&&o.push(this.socket.onDidClose(()=>c(()=>n(new Error("Connection closed"))))),o.push(this.socket.onDidBootError(l=>c(()=>n(l))))}catch(l){c(()=>n(l))}})}watchConnection(){this.socket.onDidConnect(()=>{this.socket.emit("okra.connected"),this.client.options.telemetry&&this.container.enableTelemetry(this.client.options.telemetry)}),this.socket.onDidClose(()=>{this.socket.emit("okra.disconnected"),this.initialized=!1}),this.socket.onDidBootError(e=>{this.socket.emit("okra.boot_error",e),this.socket.emit("okra.disconnected"),this.initialized=!1})}onDidConnect(e){this.socket.removeListener("okra.connected",e);let t=this.socket.listen("okra.connected",e);return this.disposables.push(t),t}onDidDisconnect(e){let t=this.socket.listen("okra.disconnected",e);return this.disposables.push(t),t}onDidBootError(e){let t=this.socket.listen("okra.boot_error",e);return this.disposables.push(t),t}update(){return this.invoke("notebook.update")}onDidInitialize(e){return this.listen("notebook.initialized",e)}async reconnect(){let e=this.whenConnected();return this.socket.reconnect(),this.initialized=!1,await e,S(this,le,it).call(this),this.ready().then(()=>this)}async beacon(e,t){let r=await this.ready();return e.src=r.data.previewUrl,rt(e,t)}};D=new WeakMap,le=new WeakSet,it=function(){return Oe(this,D,new Promise((e,t)=>{let r=this.onDidInitialize(o=>{if(n.dispose(),r.dispose(),this.initialized=o,o.type==="error"){t(new Se(o.message,o.data));return}e(o)}),n=this.onDidBootError(o=>{r.dispose(),n.dispose(),t(o)})})),ue(this,D).catch(()=>{}),ue(this,D)};var Re=class{constructor(e,t){this.client=e;this.notebookId=t}list(){return this.client.notebook.secrets.list(this.notebookId)}set(e,t){return this.client.notebook.secrets.set(this.notebookId,e,t)}setMany(e){return this.client.notebook.secrets.setMany(this.notebookId,e)}delete(e){return this.client.notebook.secrets.delete(this.notebookId,e)}},Ae=class{constructor(e,t){this.client=e;this.notebookId=t}get(){return this.client.notebook.preview.get(this.notebookId)}setPassword(e){return this.client.notebook.preview.setPassword(this.notebookId,e)}disable(){return this.client.notebook.preview.disable(this.notebookId)}createSession(){return this.client.notebook.preview.createSession(this.notebookId)}createHandoff(e){return this.client.notebook.preview.createHandoff(this.notebookId,e)}},_e=class{constructor(e,t){this.client=e;this.notebookId=t}status(){return this.client.notebook.mail.status(this.notebookId)}enable(){return this.client.notebook.mail.enable(this.notebookId)}disable(){return this.client.notebook.mail.disable(this.notebookId)}list(e={}){return this.client.notebook.mail.list(this.notebookId,e)}get(e){return this.client.notebook.mail.get(this.notebookId,e)}delete(e){return this.client.notebook.mail.delete(this.notebookId,e)}};function Sr(i){let e=new URLSearchParams;for(let[r,n]of Object.entries(i))(typeof n=="string"||typeof n=="number"||typeof n=="boolean")&&e.set(r,String(n));let t=e.toString();return t===""?"":`?${t}`}return At(Ir);})();
1
+ var PHPSandbox=(()=>{var Le=Object.defineProperty;var Dt=Object.getOwnPropertyDescriptor;var Ct=Object.getOwnPropertyNames;var Nt=Object.prototype.hasOwnProperty;var ot=i=>{throw TypeError(i)};var Be=(i,e)=>{for(var t in e)Le(i,t,{get:e[t],enumerable:!0})},Rt=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ct(e))!Nt.call(i,n)&&n!==t&&Le(i,n,{get:()=>e[n],enumerable:!(r=Dt(e,n))||r.enumerable});return i};var At=i=>Rt(Le({},"__esModule",{value:!0}),i);var Me=(i,e,t)=>e.has(i)||ot("Cannot "+t);var ue=(i,e,t)=>(Me(i,e,"read from private field"),t?t.call(i):e.get(i)),G=(i,e,t)=>e.has(i)?ot("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(i):e.set(i,t),Oe=(i,e,t,r)=>(Me(i,e,"write to private field"),r?r.call(i,t):e.set(i,t),t),S=(i,e,t)=>(Me(i,e,"access private method"),t);var Ir={};Be(Ir,{ApiError:()=>Ie,Beacon:()=>Ee,BeaconConnectionError:()=>w,BeaconError:()=>U,BeaconTimeoutError:()=>ce,Client:()=>Pe,CommandError:()=>de,ErrorEvent:()=>y,FileChangeFilter:()=>ct,FileChangeType:()=>lt,FileType:()=>at,Filesystem:()=>W,FilesystemError:()=>pe,FilesystemErrorType:()=>ut,LspConnection:()=>he,Navigator:()=>F,NotebookApi:()=>Te,NotebookInitError:()=>Se,NotebookInstance:()=>x,NotebookMail:()=>_e,NotebookMailApi:()=>Ne,NotebookPreview:()=>Ae,NotebookPreviewApi:()=>Ce,NotebookSecretApi:()=>De,NotebookSecrets:()=>Re,NotebookState:()=>pt,NotebookUnavailableError:()=>k,PHPSandbox:()=>nt,PHPSandboxError:()=>Fe,PromiseTimeoutError:()=>I,RateLimitError:()=>L,SendTimeoutError:()=>B,Transport:()=>O,createBeacon:()=>rt,isBeaconSupported:()=>kr,notebookBuiltinServices:()=>dt,notebookKnownServices:()=>Lt,once:()=>H,timeout:()=>$});var y=class extends Error{constructor(t,r,n={}){super(r);this.code=t;this.message=r;this.raw=n}},L=class extends y{constructor(e,t={}){super(429,e,t)}},Fe=class extends y{};var st="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var m=(i=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(i|=0));for(;i--;)e+=st[t[i]&63];return e};var at=(n=>(n[n.Unknown=0]="Unknown",n[n.File=1]="File",n[n.Directory=2]="Directory",n[n.SymbolicLink=64]="SymbolicLink",n))(at||{}),ct=(r=>(r[r.UPDATED=2]="UPDATED",r[r.ADDED=4]="ADDED",r[r.DELETED=8]="DELETED",r))(ct||{}),lt=(r=>(r[r.UPDATED=1]="UPDATED",r[r.ADDED=2]="ADDED",r[r.DELETED=3]="DELETED",r))(lt||{}),ut=(s=>(s.Unavailable="Unavailable",s.NoPermissions="NoPermissions",s.FileExists="FileExists",s.FileNotFound="FileNotFound",s.FileIsADirectory="FileIsADirectory",s.FileNotADirectory="FileNotADirectory",s))(ut||{}),pe=class extends y{constructor(t,r){super(t.code,t.message);this.name=r}},Ge=class{constructor(e,t){this.disposable=e;this.onDispose=t;this.disposed=!1}dispose(){this.disposed||(this.disposed=!0,this.disposable.dispose(),this.onDispose())}},W=class{constructor(e){this.okra=e;this.watches=new Map;this.watchOkraConnection()}watchOkraConnection(){this.okra.onDidConnect(()=>{for(let{path:e,options:t}of this.watches.values())this.okra.invoke("fs.watch",{path:e,options:t}).catch(()=>{})})}info(e){return this.okra.invoke("fs.info",{path:e})}write(e,t){return this.okra.invoke("fs.write",{path:e,contents:t})}find(e,t={useIgnoreFiles:!1,followSymlinks:!1,useGlobalIgnoreFiles:!1,useParentIgnoreFiles:!1}){return this.okra.invoke("fs.find",{query:e,options:{includes:[],excludes:["**/storage","**/vendor","**/node_modules","**/.git","**/.svn","**/.hg","**/CVS","**/.DS_Store","**/Thumbs.db","**/*.crswap"],useIgnoreFiles:!1,followSymlinks:!1,useGlobalIgnoreFiles:!1,useParentIgnoreFiles:!1,...t}})}search(e,t,r){e.id||(e.id=m());let n={maxResults:5,afterContext:2,beforeContext:2,includes:[],excludes:["**/.git","**/.svn","**/.hg","**/CVS","**/.DS_Store","**/Thumbs.db","**/*.crswap","**/node_modules","**/vendor","**/bower_components","**/*.code-search"],useIgnoreFiles:!0,followSymlinks:!0,useGlobalIgnoreFiles:!0,useParentIgnoreFiles:!0,encoding:"utf-8",previewOptions:{matchLines:5,charsPerLine:1e3}},o=e.id,s=async c=>{c===!1&&a.dispose(),r&&await Promise.resolve(r(c))===!1&&a.dispose()},a=this.okra.listen(`fs.text.search.${o}`,s);return this.okra.invoke("fs.textSearch",{query:e,options:{...n,...t}}).finally(()=>a.dispose())}mkdir(e){return this.okra.invoke("fs.mkdir",{path:e})}move(e,t){return this.okra.invoke("fs.move",{from:e,to:t})}remove(e,t){return this.okra.invoke("fs.remove",{path:e,type:t})}async readFile(e,t){try{let r=await this.okra.invoke("fs.readFile",{path:e,lineRange:t});return r instanceof Uint8Array?r:typeof r=="string"?new TextEncoder().encode(r):r}catch(r){this.handleError(r)}}tail(e,t=10){return this.okra.invoke("fs.tail",{path:e,lines:t}).catch(r=>this.handleError(r))}writeFile(e,t,r){return this.okra.invoke("fs.writeFile",{path:e,contents:t,options:r}).catch(n=>this.handleError(n))}stat(e){return this.okra.invoke("fs.stat",{path:e}).catch(t=>this.handleError(t))}rename(e,t,r){return this.okra.invoke("fs.rename",{from:e,to:t,options:r}).catch(n=>this.handleError(n))}delete(e,t){return this.okra.invoke("fs.delete",{path:e,options:t}).catch(r=>this.handleError(r))}copy(e,t,r){return this.okra.invoke("fs.copy",{source:e,destination:t,options:r}).catch(n=>this.handleError(n))}readDirectory(e,t=[],r=[]){return this.okra.invoke("fs.readDirectory",{path:e,include:t,exclude:r}).catch(n=>this.handleError(n))}createDirectory(e){return this.okra.invoke("fs.createDirectory",{path:e}).catch(t=>this.handleError(t))}watch(e,t,r){let n=this.okra.listen(`fs.watch.${e}`,r),o={dispose:()=>{n.dispose(),this.okra.invoke("fs.unwatch",{path:e}).catch(()=>{})}},s=new Ge(o,()=>{this.watches.get(e)?.onDidChange===r&&this.watches.delete(e)});return this.watches.set(e,{options:t,path:e,onDidChange:r}),this.okra.invoke("fs.watch",{path:e,options:t}).then(()=>s).catch(a=>{throw s.dispose(),a})}exists(e){return this.stat(e).then(()=>!0).catch(()=>!1)}async download(e,t,r){let n=m(),o=!!e,s=[],a=this.okra.listen(`fs.download.${n}`,o?e:c=>{s.push(c)});return this.okra.invoke("fs.download",{id:n,exclude:t,include:r}).then(()=>new Blob(s,{type:"application/octet-stream"})).finally(()=>a.dispose())}tree(e="/"){return this.okra.invoke("fs.tree",{path:e})}handleError(e){throw e instanceof y&&"name"in e.raw?new pe(e,e.raw.name):e}};var I=class extends Error{constructor(t,r){super(t);this.time=r}},B=class i extends I{static fromPromiseTimeoutError(e){return new i(e.message,e.time)}},k=class extends Error{constructor(t="Notebook is no longer available",r={}){super(t);this.raw=r;this.name="NotebookUnavailableError"}};var $=(i,e)=>{let t;return Promise.race([i,new Promise((r,n)=>t=setTimeout(n,e,new I("Timeout before promise can resolve",e)))]).finally(()=>clearTimeout(t))},H=i=>{let e=null;return()=>e||(e=i())};var _t=8,Ut=/[\x00-\x1f\x7f]/,K=class{constructor(e){this.okra=e}list(){return this.okra.invoke("terminal.list")}start(){return this.okra.invoke("terminal.start")}create(e){return this.okra.invoke("terminal.create",e)}onStarted(e){return this.okra.listen("terminal.started",e)}resize(e,t){return this.okra.invoke("terminal.resize",{id:e,width:t[0],height:t[1]})}onOutput(e,t){return this.okra.listen(`terminal.output.${e}`,t)}input(e,t){return Promise.resolve(this.okra.send("terminal.input",{id:e,input:t}))}listen(e,t){return this.okra.listen(e,t)}async attach(e,t){let r=this.processHandle(e,t?.abortSignal);try{let n=await this.okra.invoke("terminal.attach",{id:e,replayHistory:t?.replayHistory},{abortSignal:t?.abortSignal});return n?{...r.process,...n}:(r.dispose(),!1)}catch(n){throw r.dispose(),n}}async spawn(e,t,r){let n=r?.id||m(),o=this.processHandle(n,r?.abortSignal),{abortSignal:s,...a}=r??{};try{let c=await this.okra.invoke("terminal.spawn",{command:[e,...t],opts:{id:n,...a}},{abortSignal:s});return{...o.process,...c}}catch(c){throw o.dispose(),c}}processHandle(e,t){let r=new Set,n,o=()=>{n&&(t?.removeEventListener("abort",n),n=void 0);for(let v of r)v.dispose();r.clear()},s="",a,c=()=>{if(a&&(clearTimeout(a),a=void 0),s==="")return;let v=s;s="",this.input(e,v)},l=()=>{a||(a=setTimeout(c,_t))},d=v=>{if(s+=v,Ut.test(v)){c();return}l()},u=()=>{c(),o()},g=new WritableStream({write:d,close:u,abort:u}),p=null,f=new ReadableStream({start:v=>{p=v,r.add(this.listen(`terminal.output.${e}`,Ue=>{p?.enqueue(Ue.output)}))},cancel:()=>{p=null,u()}}),h=new Promise(v=>{r.add(this.listen(`terminal.close.${e}`,Ue=>{if(p)try{p.close()}catch{}u(),v(Ue.exitCode)}))}),E=H(()=>(u(),this.okra.invoke("terminal.close",{id:e}))),Pt=v=>{this.okra.invoke("terminal.resize",{id:e,width:v.cols,height:v.rows})};return t&&!t.aborted&&(n=()=>{E()},t.addEventListener("abort",n,{once:!0})),{process:{exit:h,input:g,output:f,kill:E,resize:Pt},dispose:u}}};var pt=(a=>(a.RUNNING="running",a.STOPPED="stopped",a.STARTING="starting",a.STOPPING="stopping",a.KILLED="killed",a.ERROR="error",a.PROVISIONING="provisioning",a))(pt||{}),z=class{constructor(e){this.okra=e}start(){return this.okra.invoke("container.start")}stop(){return this.okra.invoke("container.stop")}state(){return this.okra.invoke("container.state")}openedPorts(){return this.okra.invoke("container.opened-ports")}setPhp(e){return this.okra.invoke("container.set-php",{version:e})}enableTelemetry(e){return this.okra.invoke("container.stream-telemetry",{features:Array.from(e)})}stopTelemetry(){return this.okra.invoke("container.stop-telemetry")}listen(e,t){return this.okra.listen(e,t)}onPort(e){let t=[];return this.listen("container.ports",r=>{for(let n of r)t.some(o=>o.port===n.port)||e(n,"open");for(let n of t)r.some(o=>o.port===n.port)||e(n,"close");t=r})}};var q=class{constructor(e){this.okra=e}logout(){return this.okra.invoke("auth.logout")}login(e){return this.okra.invoke("auth.login",{newConnectionData:e})}};var V=class{constructor(e){this.okra=e}message(e,t){return this.okra.invoke("lsp.message",{id:e,message:t})}listen(e,t,r){return this.okra.listen(`${t}.${e}`,n=>r(n))}onClose(e,t){return this.listen(e,"lsp.closed",r=>t(r.code,r.reason))}onError(e,t){return this.listen(e,"lsp.error",r=>t(r.message))}onClientDisconnect(e){return this.okra.onDidDisconnect(()=>e(1e3,"OKRA DISCONNECTED"))}onResponse(e,t){return this.listen(e,"lsp.response",r=>t(JSON.stringify(r)))}close(e){return this.okra.invoke("lsp.close",{id:e})}start(e){return this.okra.invoke("lsp.start",{id:e})}connection(e){return he.create(e,this)}whenSocketConnected(){return this.okra.whenConnected()}},he=class i{constructor(e,t){this.id=e;this.lsp=t}send(e){return this.lsp.message(this.id,e)}onMessage(e){return this.lsp.onResponse(this.id,e)}onError(e){return this.lsp.onError(this.id,e)}onClose(e){return this.lsp.onClose(this.id,e)}dispose(){this.lsp.close(this.id)}start(){this.lsp.start(this.id)}onClientDisconnect(e){return this.lsp.onClientDisconnect(e)}whenSocketConnected(){return this.lsp.whenSocketConnected()}static create(e,t){return new i(e,t)}};var j=class{constructor(e){this.okra=e}invoke(e,t={},r={}){return this.okra.invoke("composer.invoke",{command:e,args:t,options:r})}dumpAutoload(){return this.okra.invoke("composer.dump-autoload")}install(e={}){return this.invoke("install",{},e)}update(e,t={}){return this.invoke("update",e,t)}require(e,t={}){return this.invoke("require",e,t)}remove(e,t={}){return this.invoke("remove",e,t)}stream(e){return this.okra.listen("composer.log",e)}packages(){return this.okra.invoke("composer.packages")}};var Q=class{constructor(e){this.okra=e}stream(e){return this.okra.listen("notebook.log",e)}listen(e,t){return this.okra.listen(e,t)}};var X=class{constructor(e){this.okra=e}maintenanceInfo(){return this.okra.invoke("laravel.maintenance.info",{})}toggleMaintenance(e){return this.okra.invoke("laravel.maintenance.toggle",e)}};var J=class{constructor(e){this.okra=e}eval(e,t="",r={prependWith:"",appendWith:""}){return this.okra.invoke("repl.eval",{code:e,args:t,repl:r})}write(e){return this.okra.invoke("repl.write",{input:e})}stop(){return this.okra.invoke("repl.stop")}start(){return this.okra.invoke("repl.start")}resize(e,t){return this.okra.invoke("repl.resize",{cols:e,rows:t})}listen(e,t){return this.okra.listen(e,t)}onOutput(e){return this.okra.listen("repl.output",e)}};function ht(i,e=[],t){let r=Array.isArray(e)?e:[],n=Array.isArray(e)?t:e;return{command:Array.isArray(i)?i:r.length>0?[i,...r]:i,opts:n}}var de=class extends Error{constructor(t,r){super(t);this.output=t;this.exitCode=r}},We=class{constructor(e,t){this.output=e;this.exitCode=t}throw(){if(this.exitCode!==0)throw new de(this.output,this.exitCode);return this}},Y=class{constructor(e){this.okra=e}onOutput(e,t){return this.okra.listen(`shell.output.${e}`,t)}listen(e,t){return this.okra.listen(e,t)}async exec(e,t=[],r){let n=ht(e,t,r),{abortSignal:o,...s}=n.opts??{},a=await this.okra.invoke("shell.exec",{command:n.command,opts:Object.keys(s).length>0?s:void 0},{abortSignal:o});return new We(a.output,a.exitCode)}execStream(e,t=[],r){let n=ht(e,t,r),o=n.opts?.id||m(),s=new Set,a=null,c=!1,l=()=>{for(let f of s)f.dispose();s.clear()},d=()=>{if(!c&&(c=!0,l(),a))try{a.close()}catch{}},u=f=>{c||(c=!0,l(),a&&a.error(f))},g=new ReadableStream({start:f=>{a=f,s.add(this.listen(`shell.output.${o}`,h=>{a?.enqueue(h.output)}))},cancel:()=>{c=!0,l()}}),p=this.exec(n.command,{...n.opts,id:o}).then(f=>(d(),f)).catch(f=>{throw u(f),f});return{output:g,result:p}}};var dt=["redis"],Lt=["start","nginx",...dt],Z=class{constructor(e){this.okra=e}list(){return this.okra.invoke("service.list")}run(e,t){return this.okra.invoke("service.run",{name:e,command:t})}stop(e){return this.okra.invoke("service.stop",{name:e})}onLog(e,t){return this.okra.listen(`service.log.${e}`,t)}listen(e,t){return this.okra.listen(e,t)}logs(e,t={}){return t.follow?this.followLogs(e,t):this.okra.invoke("service.logs",{name:e,tail:t.tail}).then(r=>{if(!("output"in r))throw new Error(`Unexpected service.logs response for ${e}`);return r.output})}followLogs(e,t){let r=t.id||m(),n=new Set,o=null,s=!1,a=()=>{for(let g of n)g.dispose();n.clear()},c=()=>{if(!s&&(s=!0,a(),o))try{o.close()}catch{}},l=g=>{s||(s=!0,a(),o&&o.error(g))},d=H(()=>(c(),this.okra.invoke("service.stop-logs",{id:r}))),u=new ReadableStream({start:g=>{o=g,n.add(this.onLog(r,p=>{o?.enqueue(p.output)})),this.okra.invoke("service.logs",{name:e,tail:t.tail,follow:!0,id:r}).catch(p=>{l(p)})},cancel:()=>{d()}});return{id:r,output:u,stop:d}}};var ee=class{constructor(e){this.okra=e}get(){return this.okra.invoke("config.get")}update(e){return this.okra.invoke("config.update",{config:e})}setPorts(e){return this.okra.invoke("config.set-ports",{ports:e})}};function ft(i){let e=i.length,t=0,r=0;for(;r<e;){let n=i.charCodeAt(r++);if((n&4294967168)===0){t++;continue}else if((n&4294965248)===0)t+=2;else{if(n>=55296&&n<=56319&&r<e){let o=i.charCodeAt(r);(o&64512)===56320&&(++r,n=((n&1023)<<10)+(o&1023)+65536)}(n&4294901760)===0?t+=3:t+=4}}return t}function Bt(i,e,t){let r=i.length,n=t,o=0;for(;o<r;){let s=i.charCodeAt(o++);if((s&4294967168)===0){e[n++]=s;continue}else if((s&4294965248)===0)e[n++]=s>>6&31|192;else{if(s>=55296&&s<=56319&&o<r){let a=i.charCodeAt(o);(a&64512)===56320&&(++o,s=((s&1023)<<10)+(a&1023)+65536)}(s&4294901760)===0?(e[n++]=s>>12&15|224,e[n++]=s>>6&63|128):(e[n++]=s>>18&7|240,e[n++]=s>>12&63|128,e[n++]=s>>6&63|128)}e[n++]=s&63|128}}var Mt=new TextEncoder,Ot=50;function Ft(i,e,t){Mt.encodeInto(i,e.subarray(t))}function gt(i,e,t){i.length>Ot?Ft(i,e,t):Bt(i,e,t)}var Gt=4096;function $e(i,e,t){let r=e,n=r+t,o=[],s="";for(;r<n;){let a=i[r++];if((a&128)===0)o.push(a);else if((a&224)===192){let c=i[r++]&63;o.push((a&31)<<6|c)}else if((a&240)===224){let c=i[r++]&63,l=i[r++]&63;o.push((a&31)<<12|c<<6|l)}else if((a&248)===240){let c=i[r++]&63,l=i[r++]&63,d=i[r++]&63,u=(a&7)<<18|c<<12|l<<6|d;u>65535&&(u-=65536,o.push(u>>>10&1023|55296),u=56320|u&1023),o.push(u)}else o.push(a);o.length>=Gt&&(s+=String.fromCharCode(...o),o.length=0)}return o.length>0&&(s+=String.fromCharCode(...o)),s}var Wt=new TextDecoder,$t=200;function Ht(i,e,t){let r=i.subarray(e,e+t);return Wt.decode(r)}function mt(i,e,t){return t>$t?Ht(i,e,t):$e(i,e,t)}var C=class{constructor(e,t){this.type=e,this.data=t}};var b=class i extends Error{constructor(e){super(e);let t=Object.create(i.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:i.name})}};function bt(i,e,t){let r=t/4294967296,n=t;i.setUint32(e,r),i.setUint32(e+4,n)}function fe(i,e,t){let r=Math.floor(t/4294967296),n=t;i.setUint32(e,r),i.setUint32(e+4,n)}function ge(i,e){let t=i.getInt32(e),r=i.getUint32(e+4);return t*4294967296+r}function vt(i,e){let t=i.getUint32(e),r=i.getUint32(e+4);return t*4294967296+r}var Kt=-1,zt=4294967296-1,qt=17179869184-1;function Vt({sec:i,nsec:e}){if(i>=0&&e>=0&&i<=qt)if(e===0&&i<=zt){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,i),t}else{let t=i/4294967296,r=i&4294967295,n=new Uint8Array(8),o=new DataView(n.buffer);return o.setUint32(0,e<<2|t&3),o.setUint32(4,r),n}else{let t=new Uint8Array(12),r=new DataView(t.buffer);return r.setUint32(0,e),fe(r,4,i),t}}function jt(i){let e=i.getTime(),t=Math.floor(e/1e3),r=(e-t*1e3)*1e6,n=Math.floor(r/1e9);return{sec:t+n,nsec:r-n*1e9}}function Qt(i){if(i instanceof Date){let e=jt(i);return Vt(e)}else return null}function Xt(i){let e=new DataView(i.buffer,i.byteOffset,i.byteLength);switch(i.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),r=e.getUint32(4),n=(t&3)*4294967296+r,o=t>>>2;return{sec:n,nsec:o}}case 12:{let t=ge(e,4),r=e.getUint32(0);return{sec:t,nsec:r}}default:throw new b(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${i.length}`)}}function Jt(i){let e=Xt(i);return new Date(e.sec*1e3+e.nsec/1e6)}var yt={type:Kt,encode:Qt,decode:Jt};var T=class{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(yt)}register({type:e,encode:t,decode:r}){if(e>=0)this.encoders[e]=t,this.decoders[e]=r;else{let n=-1-e;this.builtInEncoders[n]=t,this.builtInDecoders[n]=r}}tryToEncode(e,t){for(let r=0;r<this.builtInEncoders.length;r++){let n=this.builtInEncoders[r];if(n!=null){let o=n(e,t);if(o!=null){let s=-1-r;return new C(s,o)}}}for(let r=0;r<this.encoders.length;r++){let n=this.encoders[r];if(n!=null){let o=n(e,t);if(o!=null){let s=r;return new C(s,o)}}}return e instanceof C?e:null}decode(e,t,r){let n=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return n?n(e,t,r):new C(t,e)}};T.defaultCodec=new T;function Yt(i){return i instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&i instanceof SharedArrayBuffer}function te(i){return i instanceof Uint8Array?i:ArrayBuffer.isView(i)?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):Yt(i)?new Uint8Array(i):Uint8Array.from(i)}var Zt=100,er=2048,me=class i{constructor(e){this.entered=!1,this.extensionCodec=e?.extensionCodec??T.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??Zt,this.initialBufferSize=e?.initialBufferSize??er,this.sortKeys=e?.sortKeys??!1,this.forceFloat32=e?.forceFloat32??!1,this.ignoreUndefined=e?.ignoreUndefined??!1,this.forceIntegerToFloat=e?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new i({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef(e){if(this.entered)return this.clone().encodeSharedRef(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode(e){if(this.entered)return this.clone().encode(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode(e,t){if(t>this.maxDepth)throw new Error(`Too deep objects in depth ${t}`);e==null?this.encodeNil():typeof e=="boolean"?this.encodeBoolean(e):typeof e=="number"?this.forceIntegerToFloat?this.encodeNumberAsFloat(e):this.encodeNumber(e):typeof e=="string"?this.encodeString(e):this.useBigInt64&&typeof e=="bigint"?this.encodeBigInt64(e):this.encodeObject(e,t)}ensureBufferSizeToWrite(e){let t=this.pos+e;this.view.byteLength<t&&this.resizeBuffer(t*2)}resizeBuffer(e){let t=new ArrayBuffer(e),r=new Uint8Array(t),n=new DataView(t);r.set(this.bytes),this.view=n,this.bytes=r}encodeNil(){this.writeU8(192)}encodeBoolean(e){e===!1?this.writeU8(194):this.writeU8(195)}encodeNumber(e){!this.forceIntegerToFloat&&Number.isSafeInteger(e)?e>=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(211),this.writeI64(e)):this.encodeNumberAsFloat(e)}encodeNumberAsFloat(e){this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}encodeBigInt64(e){e>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(e)):(this.writeU8(211),this.writeBigInt64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else if(e<4294967296)this.writeU8(219),this.writeU32(e);else throw new Error(`Too long string: ${e} bytes in UTF-8`)}encodeString(e){let r=ft(e);this.ensureBufferSizeToWrite(5+r),this.writeStringHeader(r),gt(e,this.bytes,this.pos),this.pos+=r}encodeObject(e,t){let r=this.extensionCodec.tryToEncode(e,this.context);if(r!=null)this.encodeExtension(r);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else if(typeof e=="object")this.encodeMap(e,t);else throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(e)}`)}encodeBinary(e){let t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else if(t<4294967296)this.writeU8(198),this.writeU32(t);else throw new Error(`Too large binary: ${t}`);let r=te(e);this.writeU8a(r)}encodeArray(e,t){let r=e.length;if(r<16)this.writeU8(144+r);else if(r<65536)this.writeU8(220),this.writeU16(r);else if(r<4294967296)this.writeU8(221),this.writeU32(r);else throw new Error(`Too large array: ${r}`);for(let n of e)this.doEncode(n,t+1)}countWithoutUndefined(e,t){let r=0;for(let n of t)e[n]!==void 0&&r++;return r}encodeMap(e,t){let r=Object.keys(e);this.sortKeys&&r.sort();let n=this.ignoreUndefined?this.countWithoutUndefined(e,r):r.length;if(n<16)this.writeU8(128+n);else if(n<65536)this.writeU8(222),this.writeU16(n);else if(n<4294967296)this.writeU8(223),this.writeU32(n);else throw new Error(`Too large map object: ${n}`);for(let o of r){let s=e[o];this.ignoreUndefined&&s===void 0||(this.encodeString(o),this.doEncode(s,t+1))}}encodeExtension(e){if(typeof e.data=="function"){let r=e.data(this.pos+6),n=r.length;if(n>=4294967296)throw new Error(`Too large extension object: ${n}`);this.writeU8(201),this.writeU32(n),this.writeI8(e.type),this.writeU8a(r);return}let t=e.data.length;if(t===1)this.writeU8(212);else if(t===2)this.writeU8(213);else if(t===4)this.writeU8(214);else if(t===8)this.writeU8(215);else if(t===16)this.writeU8(216);else if(t<256)this.writeU8(199),this.writeU8(t);else if(t<65536)this.writeU8(200),this.writeU16(t);else if(t<4294967296)this.writeU8(201),this.writeU32(t);else throw new Error(`Too large extension object: ${t}`);this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){let t=e.length;this.ensureBufferSizeToWrite(t),this.bytes.set(e,this.pos),this.pos+=t}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),bt(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),fe(this.view,this.pos,e),this.pos+=8}writeBigUint64(e){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,e),this.pos+=8}writeBigInt64(e){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,e),this.pos+=8}};function He(i,e){return new me(e).encodeSharedRef(i)}function be(i){return`${i<0?"-":""}0x${Math.abs(i).toString(16).padStart(2,"0")}`}var tr=16,rr=16,ve=class{constructor(e=tr,t=rr){this.hit=0,this.miss=0,this.maxKeyLength=e,this.maxLengthPerKey=t,this.caches=[];for(let r=0;r<this.maxKeyLength;r++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,r){let n=this.caches[r-1];e:for(let o of n){let s=o.bytes;for(let a=0;a<r;a++)if(s[a]!==e[t+a])continue e;return o.str}return null}store(e,t){let r=this.caches[e.length-1],n={bytes:e,str:t};r.length>=this.maxLengthPerKey?r[Math.random()*r.length|0]=n:r.push(n)}decode(e,t,r){let n=this.find(e,t,r);if(n!=null)return this.hit++,n;this.miss++;let o=$e(e,t,r),s=Uint8Array.prototype.slice.call(e,t,t+r);return this.store(s,o),o}};var Ke="array",ie="map_key",kt="map_value",nr=i=>{if(typeof i=="string"||typeof i=="number")return i;throw new b("The type of key must be string or number but "+typeof i)},ze=class{constructor(){this.stack=[],this.stackHeadPosition=-1}get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){let t=this.getUninitializedStateFromPool();t.type=Ke,t.position=0,t.size=e,t.array=new Array(e)}pushMapState(e){let t=this.getUninitializedStateFromPool();t.type=ie,t.readCount=0,t.size=e,t.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){let e={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push(e)}return this.stack[this.stackHeadPosition]}release(e){if(this.stack[this.stackHeadPosition]!==e)throw new Error("Invalid stack state. Released state is not on top of the stack.");if(e.type===Ke){let r=e;r.size=0,r.array=void 0,r.position=0,r.type=void 0}if(e.type===ie||e.type===kt){let r=e;r.size=0,r.map=void 0,r.readCount=0,r.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}},ne=-1,qe=new DataView(new ArrayBuffer(0)),ir=new Uint8Array(qe.buffer);try{qe.getInt8(0)}catch(i){if(!(i instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}var wt=new RangeError("Insufficient data"),or=new ve,ye=class i{constructor(e){this.totalPos=0,this.pos=0,this.view=qe,this.bytes=ir,this.headByte=ne,this.stack=new ze,this.entered=!1,this.extensionCodec=e?.extensionCodec??T.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.rawStrings=e?.rawStrings??!1,this.maxStrLength=e?.maxStrLength??4294967295,this.maxBinLength=e?.maxBinLength??4294967295,this.maxArrayLength=e?.maxArrayLength??4294967295,this.maxMapLength=e?.maxMapLength??4294967295,this.maxExtLength=e?.maxExtLength??4294967295,this.keyDecoder=e?.keyDecoder!==void 0?e.keyDecoder:or,this.mapKeyConverter=e?.mapKeyConverter??nr}clone(){return new i({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=ne,this.stack.reset()}setBuffer(e){let t=te(e);this.bytes=t,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength),this.pos=0}appendBuffer(e){if(this.headByte===ne&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),r=te(e),n=new Uint8Array(t.length+r.length);n.set(t),n.set(r,t.length),this.setBuffer(n)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:r}=this;return new RangeError(`Extra ${t.byteLength-r} of ${t.byteLength} byte(s) found at buffer[${e}]`)}decode(e){if(this.entered)return this.clone().decode(e);try{this.entered=!0,this.reinitializeState(),this.setBuffer(e);let t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t}finally{this.entered=!1}}*decodeMulti(e){if(this.entered){yield*this.clone().decodeMulti(e);return}try{for(this.entered=!0,this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(e){if(this.entered)return this.clone().decodeAsync(e);try{this.entered=!0;let t=!1,r;for await(let a of e){if(t)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{r=this.doDecodeSync(),t=!0}catch(c){if(!(c instanceof RangeError))throw c}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return r}let{headByte:n,pos:o,totalPos:s}=this;throw new RangeError(`Insufficient data in parsing ${be(n)} at ${s} (${o} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,t){if(this.entered){yield*this.clone().decodeMultiAsync(e,t);return}try{this.entered=!0;let r=t,n=-1;for await(let o of e){if(t&&n===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(o),r&&(n=this.readArraySize(),r=!1,this.complete());try{for(;yield this.doDecodeSync(),--n!==0;);}catch(s){if(!(s instanceof RangeError))throw s}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){e:for(;;){let e=this.readHeadByte(),t;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){let n=e-128;if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e<160){let n=e-144;if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else{let n=e-160;t=this.decodeString(n,0)}else if(e===192)t=null;else if(e===194)t=!1;else if(e===195)t=!0;else if(e===202)t=this.readF32();else if(e===203)t=this.readF64();else if(e===204)t=this.readU8();else if(e===205)t=this.readU16();else if(e===206)t=this.readU32();else if(e===207)this.useBigInt64?t=this.readU64AsBigInt():t=this.readU64();else if(e===208)t=this.readI8();else if(e===209)t=this.readI16();else if(e===210)t=this.readI32();else if(e===211)this.useBigInt64?t=this.readI64AsBigInt():t=this.readI64();else if(e===217){let n=this.lookU8();t=this.decodeString(n,1)}else if(e===218){let n=this.lookU16();t=this.decodeString(n,2)}else if(e===219){let n=this.lookU32();t=this.decodeString(n,4)}else if(e===220){let n=this.readU16();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===221){let n=this.readU32();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===222){let n=this.readU16();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===223){let n=this.readU32();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===196){let n=this.lookU8();t=this.decodeBinary(n,1)}else if(e===197){let n=this.lookU16();t=this.decodeBinary(n,2)}else if(e===198){let n=this.lookU32();t=this.decodeBinary(n,4)}else if(e===212)t=this.decodeExtension(1,0);else if(e===213)t=this.decodeExtension(2,0);else if(e===214)t=this.decodeExtension(4,0);else if(e===215)t=this.decodeExtension(8,0);else if(e===216)t=this.decodeExtension(16,0);else if(e===199){let n=this.lookU8();t=this.decodeExtension(n,1)}else if(e===200){let n=this.lookU16();t=this.decodeExtension(n,2)}else if(e===201){let n=this.lookU32();t=this.decodeExtension(n,4)}else throw new b(`Unrecognized type byte: ${be(e)}`);this.complete();let r=this.stack;for(;r.length>0;){let n=r.top();if(n.type===Ke)if(n.array[n.position]=t,n.position++,n.position===n.size)t=n.array,r.release(n);else continue e;else if(n.type===ie){if(t==="__proto__")throw new b("The key __proto__ is not allowed");n.key=this.mapKeyConverter(t),n.type=kt;continue e}else if(n.map[n.key]=t,n.readCount++,n.readCount===n.size)t=n.map,r.release(n);else{n.key=null,n.type=ie;continue e}}return t}}readHeadByte(){return this.headByte===ne&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=ne}readArraySize(){let e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:{if(e<160)return e-144;throw new b(`Unrecognized array type byte: ${be(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new b(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new b(`Max length exceeded: array length (${e}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState(e)}decodeString(e,t){return!this.rawStrings||this.stateIsMapKey()?this.decodeUtf8String(e,t):this.decodeBinary(e,t)}decodeUtf8String(e,t){if(e>this.maxStrLength)throw new b(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw wt;let r=this.pos+t,n;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?n=this.keyDecoder.decode(this.bytes,r,e):n=mt(this.bytes,r,e),this.pos+=t+e,n}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===ie:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new b(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw wt;let r=this.pos+t,n=this.bytes.subarray(r,r+e);return this.pos+=t+e,n}decodeExtension(e,t){if(e>this.maxExtLength)throw new b(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let r=this.view.getInt8(this.pos+t),n=this.decodeBinary(e,t+1);return this.extensionCodec.decode(n,r,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){let e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){let e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){let e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){let e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){let e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){let e=vt(this.view,this.pos);return this.pos+=8,e}readI64(){let e=ge(this.view,this.pos);return this.pos+=8,e}readU64AsBigInt(){let e=this.view.getBigUint64(this.pos);return this.pos+=8,e}readI64AsBigInt(){let e=this.view.getBigInt64(this.pos);return this.pos+=8,e}readF32(){let e=this.view.getFloat32(this.pos);return this.pos+=4,e}readF64(){let e=this.view.getFloat64(this.pos);return this.pos+=8,e}};function Ve(i,e){return new ye(e).decode(i)}var we=class{constructor(e){this.error=e}},sr=i=>new Promise(e=>{setTimeout(e,i)}),ar=(i,e)=>{let t=e.randomize?Math.random()+1:1,r=Math.max(e.minTimeout,1)*Math.pow(e.factor,i-1);return Math.round(Math.min(t*r,e.maxTimeout))};async function oe(i,e={}){let t={retries:e.retries??10,minTimeout:e.minTimeout??1e3,maxTimeout:e.maxTimeout??1/0,factor:e.factor??2,randomize:e.randomize??!0},r=o=>{throw new we(o??new Error("Aborted"))},n;for(let o=1;o<=t.retries+1;o++)try{return await i(r,o)}catch(s){if(s instanceof we)throw s.error;if(n=s,o>t.retries)throw s;await e.onRetry?.(s,o),await sr(ar(o,t))}throw n}var Xe={};Be(Xe,{default:()=>Qe});var je=function(i,e){return je=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var n in r)r.hasOwnProperty(n)&&(t[n]=r[n])},je(i,e)};function xt(i,e){je(i,e);function t(){this.constructor=i}i.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function cr(i){var e=typeof Symbol=="function"&&i[Symbol.iterator],t=0;return e?e.call(i):{next:function(){return i&&t>=i.length&&(i=void 0),{value:i&&i[t++],done:!i}}}}function lr(i,e){var t=typeof Symbol=="function"&&i[Symbol.iterator];if(!t)return i;var r=t.call(i),n,o=[],s;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)o.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(s)throw s.error}}return o}function ur(){for(var i=[],e=0;e<arguments.length;e++)i=i.concat(lr(arguments[e]));return i}var Et=(function(){function i(e,t){this.target=t,this.type=e}return i})(),pr=(function(i){xt(e,i);function e(t,r){var n=i.call(this,"error",r)||this;return n.message=t.message,n.error=t,n}return e})(Et),hr=(function(i){xt(e,i);function e(t,r,n){t===void 0&&(t=1e3),r===void 0&&(r="");var o=i.call(this,"close",n)||this;return o.wasClean=!0,o.code=t,o.reason=r,o}return e})(Et);var dr=function(){if(typeof WebSocket<"u")return WebSocket},fr=function(i){return typeof i<"u"&&!!i&&i.CLOSING===2},N={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},gr=(function(){function i(e,t,r){var n=this;r===void 0&&(r={}),this._listeners={error:[],message:[],open:[],close:[]},this._retryCount=-1,this._shouldReconnect=!0,this._connectLock=!1,this._binaryType="blob",this._closeCalled=!1,this._messageQueue=[],this.onclose=null,this.onerror=null,this.onmessage=null,this.onopen=null,this._handleOpen=function(o){n._debug("open event");var s=n._options.minUptime,a=s===void 0?N.minUptime:s;clearTimeout(n._connectTimeout),n._uptimeTimeout=setTimeout(function(){return n._acceptOpen()},a),n._ws.binaryType=n._binaryType,n._messageQueue.forEach(function(c){return n._ws.send(c)}),n._messageQueue=[],n.onopen&&n.onopen(o),n._listeners.open.forEach(function(c){return n._callEventListener(o,c)})},this._handleMessage=function(o){n._debug("message event"),n.onmessage&&n.onmessage(o),n._listeners.message.forEach(function(s){return n._callEventListener(o,s)})},this._handleError=function(o){n._debug("error event",o.message),n._disconnect(void 0,o.message==="TIMEOUT"?"timeout":void 0),n.onerror&&n.onerror(o),n._debug("exec error listeners"),n._listeners.error.forEach(function(s){return n._callEventListener(o,s)}),n._connect()},this._handleClose=function(o){n._debug("close event"),n._clearTimeouts(),n._shouldReconnect&&n._connect(),n.onclose&&n.onclose(o),n._listeners.close.forEach(function(s){return n._callEventListener(o,s)})},this._url=e,this._protocols=t,this._options=r,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(i,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(i,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(i,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(i,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CONNECTING",{get:function(){return i.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"OPEN",{get:function(){return i.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CLOSING",{get:function(){return i.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"CLOSED",{get:function(){return i.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"binaryType",{get:function(){return this._ws?this._ws.binaryType:this._binaryType},set:function(e){this._binaryType=e,this._ws&&(this._ws.binaryType=e)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"bufferedAmount",{get:function(){var e=this._messageQueue.reduce(function(t,r){return typeof r=="string"?t+=r.length:r instanceof Blob?t+=r.size:t+=r.byteLength,t},0);return e+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?i.CLOSED:i.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),i.prototype.close=function(e,t){if(e===void 0&&(e=1e3),this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(e,t)},i.prototype.reconnect=function(e,t){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(e,t),this._connect())},i.prototype.send=function(e){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",e),this._ws.send(e);else{var t=this._options.maxEnqueuedMessages,r=t===void 0?N.maxEnqueuedMessages:t;this._messageQueue.length<r&&(this._debug("enqueue",e),this._messageQueue.push(e))}},i.prototype.addEventListener=function(e,t){this._listeners[e]&&this._listeners[e].push(t)},i.prototype.dispatchEvent=function(e){var t,r,n=this._listeners[e.type];if(n)try{for(var o=cr(n),s=o.next();!s.done;s=o.next()){var a=s.value;this._callEventListener(e,a)}}catch(c){t={error:c}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return!0},i.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter(function(r){return r!==t}))},i.prototype._debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._options.debug&&console.log.apply(console,ur(["RWS>"],e))},i.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,r=t===void 0?N.reconnectionDelayGrowFactor:t,n=e.minReconnectionDelay,o=n===void 0?N.minReconnectionDelay:n,s=e.maxReconnectionDelay,a=s===void 0?N.maxReconnectionDelay:s,c=0;return this._retryCount>0&&(c=o*Math.pow(r,this._retryCount-1),c>a&&(c=a)),this._debug("next delay",c),c},i.prototype._wait=function(){var e=this;return new Promise(function(t){setTimeout(t,e._getNextDelay())})},i.prototype._getNextUrl=function(e){if(typeof e=="string")return Promise.resolve(e);if(typeof e=="function"){var t=e();if(typeof t=="string")return Promise.resolve(t);if(t.then)return t}throw Error("Invalid URL")},i.prototype._connect=function(){var e=this;if(!(this._connectLock||!this._shouldReconnect)){this._connectLock=!0;var t=this._options,r=t.maxRetries,n=r===void 0?N.maxRetries:r,o=t.connectionTimeout,s=o===void 0?N.connectionTimeout:o,a=t.WebSocket,c=a===void 0?dr():a;if(this._retryCount>=n){this._debug("max retries reached",this._retryCount,">=",n);return}if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),!fr(c))throw Error("No valid WebSocket class provided");this._wait().then(function(){return e._getNextUrl(e._url)}).then(function(l){e._closeCalled||(e._debug("connect",{url:l,protocols:e._protocols}),e._ws=e._protocols?new c(l,e._protocols):new c(l),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout(function(){return e._handleTimeout()},s))})}},i.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new pr(Error("TIMEOUT"),this))},i.prototype._disconnect=function(e,t){if(e===void 0&&(e=1e3),this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(e,t),this._handleClose(new hr(e,t,this))}catch{}}},i.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},i.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},i.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},i.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},i.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},i})(),Qe=gr;var mr=i=>{if(typeof i=="number")return{0:"CONNECTING",1:"OPEN",2:"CLOSING",3:"CLOSED"}[i]??`STATE_${i}`},br=i=>{try{let e=new URL(i);return`${e.origin}${e.pathname}`}catch{return i}},St=i=>{if(i instanceof Error)return i.message?`${i.name}: ${i.message}`:i.name;if(typeof i=="string")return i;if(!i||typeof i!="object")return;let e=i,t=typeof e.message=="string"&&e.message?e.message:typeof e.reason=="string"&&e.reason?e.reason:void 0;if(!t)return;let r=typeof e.name=="string"&&e.name?e.name:void 0;return r?`${r}: ${t}`:t},ke=i=>{if(i instanceof Error)return i.message?`${i.name}: ${i.message}`:i.name;if(typeof i=="string")return i;if(!i||typeof i!="object")return String(i);let e=i,t=[],r=St(e);r&&t.push(r);let n=St(e.error);n&&n!==r&&t.push(`error=${n}`),typeof e.type=="string"&&e.type&&t.push(`type=${e.type}`),typeof e.code=="number"&&t.push(`code=${e.code}`),typeof e.reason=="string"&&e.reason&&e.reason!==r&&t.push(`reason=${e.reason}`),typeof e.wasClean=="boolean"&&t.push(`wasClean=${e.wasClean}`);let o=e.target??e.currentTarget;if(o&&typeof o=="object"){typeof o.url=="string"&&o.url&&t.push(`url=${br(o.url)}`);let s=mr(o.readyState);s&&t.push(`readyState=${s}`)}return t.length>0?t.join(" | "):"Unknown websocket event"};var M=null;typeof WebSocket<"u"?M=WebSocket:typeof MozWebSocket<"u"?M=MozWebSocket:typeof global<"u"?M=global.WebSocket||global.MozWebSocket:typeof window<"u"?M=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(M=self.WebSocket||self.MozWebSocket);var It=M;var xe=class{constructor(){this.disposables=new Map}add(e,t){this.disposables.has(e)&&(console.warn(`Disposable with key "${e}" already exists. Disposing the old one.`),this.disposables.get(e)?.dispose()),typeof t=="function"&&(t=t()),this.disposables.set(e,t)}dispose(){this.disposables.forEach(e=>e.dispose()),this.disposables.clear()}};var vr=Qe??Xe;var Je=class extends Error{constructor(e="WebSocket connection timeout"){super(e),this.name="ConnectionTimeoutError"}},se=class extends Error{constructor(t,r){super(t);this.originalError=r;this.name="ConnectionFailedError"}},R=class extends Error{constructor(t,r){super(t);this.data=r;this.name="InvalidMessageError"}},A=class extends Error{constructor(e){super(e),this.name="InvalidConfigurationError"}},P,Ye,Ze,O=class{constructor(e,t,r={}){this.eventEmitter=t;this.options=r;G(this,P);this.clientId="";this.closed=!1;this.disposables=new xe;this.connectPromise=null;this.terminalError=null;this.pingIntervalStarted=!1;this.incomingMessageChain=Promise.resolve();this.validateConfiguration(r),this.url=new URL(e),this.PING_INTERVAL=r.pingInterval??3e4,this.CONNECT_WAIT_TIMEOUT=r.connectWaitTimeout??3e4;let n=r.startClosed!==!1;this.rws=new vr(this.url.toString(),[],{WebSocket:r.webSocket??globalThis.WebSocket??It,connectionTimeout:r.connectionTimeout,maxReconnectionDelay:2e3,minReconnectionDelay:200,maxEnqueuedMessages:0,maxRetries:r.maxRetries??50,startClosed:n}),this.log("debug","Transport initialized",{url:this.url.toString(),options:r}),this.registerWatchers()}validateConfiguration(e){if(e.pingInterval!==void 0&&(e.pingInterval<1e3||e.pingInterval>3e5))throw new A("pingInterval must be between 1000ms and 300000ms");if(e.connectionTimeout!==void 0&&(e.connectionTimeout<100||e.connectionTimeout>3e4))throw new A("connectionTimeout must be between 100ms and 30000ms");if(e.connectWaitTimeout!==void 0&&(e.connectWaitTimeout<1e3||e.connectWaitTimeout>3e5))throw new A("connectWaitTimeout must be between 1000ms and 300000ms");if(e.maxRetries!==void 0&&(e.maxRetries<0||e.maxRetries>100))throw new A("maxRetries must be between 0 and 100")}log(e,t,r){if(this.options.debug){let n=new Date().toISOString(),o=r?JSON.stringify(r,null,2):"";console[e](`[Transport ${n}] ${t}${o?`
2
+ `+o:""}`)}}connect(){return this.terminalError?Promise.reject(this.terminalError):S(this,P,Ye).call(this)}id(){return this.clientId}async registerWatchers(){let e=t=>{this.incomingMessageChain=this.incomingMessageChain.catch(()=>{}).then(()=>this.processIncomingMessage(t)).catch(r=>{this.log("error","Failed to process queued WebSocket frame",{error:r instanceof Error?r.message:String(r)}),this.eventEmitter.emit("transport.error",{type:"message_handle_error",error:r,rawMessage:t.data,timestamp:Date.now()})})};this.rws.addEventListener("message",e),this.disposables.add("message",{dispose:()=>{this.rws.removeEventListener("message",e)}})}async processIncomingMessage(e){let t;try{t=await this.toArrayBuffer(e.data)}catch(n){this.log("error","Unexpected WebSocket message type",{error:n instanceof Error?n.message:String(n),messageType:typeof e.data}),this.eventEmitter.emit("transport.error",{type:"message_type_error",error:n,rawMessage:e.data,timestamp:Date.now()});return}if(t.byteLength===0){this.log("warn","Ignoring empty WebSocket frame");return}let r;try{r=Ve(t)}catch(n){this.log("error","Failed to decode WebSocket frame",{error:n instanceof Error?n.message:String(n),byteLength:t.byteLength}),this.eventEmitter.emit("transport.error",{type:"message_decode_error",error:n,rawMessage:t,timestamp:Date.now()});return}try{await this.handleRawMessage(r)}catch(n){this.log("error","Failed to process WebSocket frame",{error:n instanceof Error?n.message:String(n),byteLength:t.byteLength}),this.eventEmitter.emit("transport.error",{type:"message_handle_error",error:n,rawMessage:t,timestamp:Date.now()})}}async toArrayBuffer(e){if(e instanceof Blob)return e.arrayBuffer();if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength).slice().buffer;throw new Error("Unexpected message type: "+typeof e)}async handleRawMessage(e){if(this.closed){this.log("debug","Ignoring message received after transport was closed");return}if(typeof e!="object"||e===null){this.log("debug","Received invalid message format",{ev:e});return}try{let{data:t,event:r,as:n}=e;if(!r||typeof r!="string")throw new R("Message missing event field",e);if(this.log("debug","Processing message",{event:r,hasData:!!t}),r==="App.Actions.GetClientId"){this.clientId=t.id,this.log("info","Client ID received",{clientId:this.clientId});return}if(r==="Events.BootError"){let o=t,s=new k(o?.message||"Notebook is no longer available",o||{});this.log("error","Boot error received",{data:t}),this.terminate(s,4e3,s.message);return}if(r==="response"){let{responseEvent:o,data:s}=t;if(!o)throw new R("Response message missing responseEvent",e);this.log("debug","Response message received",{responseEvent:o}),await this.handleMessage(o,s);return}if(r==="error"){let{errorEvent:o,data:s}=t;if(!o)throw new R("Error message missing errorEvent",e);this.log("debug","Error message received",{errorEvent:o,errorData:s}),await this.handleMessage(o,s);return}await this.handleMessage(r,t,n)}catch(t){t instanceof R?this.log("error","Invalid message format",{error:t.message,data:t.data}):this.log("error","Failed to parse message",{ev:e,error:t instanceof Error?t.message:String(t)}),this.eventEmitter.emit("transport.error",{type:"message_parse_error",error:t,rawMessage:e,timestamp:Date.now()})}}async handleMessage(e,t,r){if(e==="App.Actions.GetClientId"){this.clientId=t.id,this.eventEmitter.emit(e,this.clientId);return}e&&this.eventEmitter.emit(r||e,t)}listen(e,t,r){return this.eventEmitter.listen(e,t)}onDidBootError(e){return this.eventEmitter.listen("transport.boot_error",t=>{e(t.error)})}removeListener(e,t){this.eventEmitter.removeListener(e,t)}listenOnce(e,t,r){return this.eventEmitter.once(e,t,r)}emit(e,...t){this.eventEmitter.emit(e,...t)}get isConnected(){return this.status==="OPEN"}get isConnecting(){return this.status==="CONNECTING"}get isDisconnected(){return this.status==="CLOSED"}get isClosed(){return this.closed}getTerminalError(){return this.terminalError}get status(){return{0:"CONNECTING",1:"OPEN",2:"CLOSING",3:"CLOSED"}[this.rws.readyState]}async call(e,t={},r={}){if(this.terminalError)throw this.terminalError;let n=r.responseEvent||`${e}_${m()}_response`,o=`${n}_error`,s,a,c=()=>{s&&(this.rws.removeEventListener("close",s),this.rws.removeEventListener("error",s)),a&&(r.abortSignal?.removeEventListener("abort",a),a=void 0),this.eventEmitter.removeListener(n),this.eventEmitter.removeListener(o)},l=(g,p)=>{if(this.terminalError){p(this.terminalError);return}let f=new DOMException("Request aborted","AbortError");if(r.abortSignal?.aborted){p(f);return}if(r.abortSignal&&(a=()=>{p(f)},r.abortSignal.addEventListener("abort",a,{once:!0})),!this.isConnected||this.isClosed){p(new se(`Connection is not open while sending ${e}. Current status: ${this.status}`));return}this.listenOnce(n,h=>{this.log("debug","Message response received",{action:e}),g(h)}),this.listenOnce(o,h=>{this.log("error","Message error received",{action:e,error:h});let E=h;p(new y(E.code,E.message,E))}),s=h=>{if(h.code===1008&&(h.reason||"").includes("rate limit")){p(new L(h.reason||"Rate limit exceeded",h));return}let E=ke(h);p(this.terminalError||new se(`Connection lost to the notebook during request: ${E}`,h))},this.rws.addEventListener("close",s),this.rws.addEventListener("error",s);try{this.rws.send(this.pack({action:e,data:t,errorEvent:o,responseEvent:n})),this.log("debug","Message sent",{action:e,data:t})}catch(h){this.log("error","Failed to send message",{action:e,error:h}),p(h)}},d=async()=>{if(r.abortSignal?.aborted)throw new DOMException("Request aborted","AbortError");if(await S(this,P,Ye).call(this),r.abortSignal?.aborted)throw new DOMException("Request aborted","AbortError");let g=new Promise(l).finally(c);return r.timeout?$(g,r.timeout).catch(p=>{throw p instanceof I?B.fromPromiseTimeoutError(p):p}).finally(c):g},u=r.retries===!1?0:r.retries??0;return this.sendWithRetry(async()=>await d(),u)}send(e,t={}){if(this.terminalError)throw this.terminalError;if(!this.isConnected||this.isClosed)return this.log("debug","Connection not available, dropping one-way message",{action:e}),!1;try{return this.rws.send(this.pack({action:e,data:t})),this.log("debug","One-way message sent",{action:e,data:t}),!0}catch(r){return this.log("error","Failed to send one-way message",{action:e,error:r}),!1}}pack(e){return new Blob([He(e)])}sendWithRetry(e,t){return oe(async(r,n)=>{try{return await e()}catch(o){if(o instanceof y||o instanceof L||o instanceof A||o instanceof R||o instanceof k||o instanceof DOMException){this.log("debug","Non-retryable error, bailing",{error:o.message,attempt:n}),r(o);return}throw o instanceof B&&(this.reconnect(),this.log("warn","Send operation timed out, connection reset",{attempt:n,timeout:o.time})),this.log("debug","Retrying send operation",{attempt:n,error:o instanceof Error?o.message:String(o)}),o}},{retries:t,onRetry:(r,n)=>{this.log("warn","Send operation retry",{attempt:n,maxRetries:t,error:r instanceof Error?r.message:String(r)})},minTimeout:1e3,factor:2,maxTimeout:3e4,randomize:!0})}invoke(e,t={},r={}){return r.responseEvent||(r.responseEvent=`${e}_${m()}`),this.call("invoke",{action:e,data:t},r)}reconnect(){if(this.terminalError)throw this.terminalError;if(this.closed)throw new Error("Cannot reconnect a closed transport. The transport has been permanently closed.");this.log("info","Reconnecting transport"),this.connectPromise=null,this.rws.reconnect()}disconnect(){this.closed||this.close()}terminate(e,t=4e3,r=e.message){this.terminalError=e,e instanceof k&&this.eventEmitter.emit("transport.boot_error",{error:e,timestamp:Date.now()}),this.close(t,r)}close(e,t){if(!this.closed){this.log("info","Closing transport connection",{code:e,reason:t}),this.connectPromise=null,this.disposables.dispose();try{this.rws.close(e,t)}catch(r){this.log("error","Error closing WebSocket",{error:r instanceof Error?r.message:String(r)})}this.eventEmitter.emit("transport.closed",{code:e,reason:t,timestamp:Date.now()}),this.eventEmitter.removeListener("*"),this.closed=!0,this.log("info","Transport connection closed successfully")}}onDidConnect(e){this.rws.addEventListener("open",e);let t={dispose:()=>{this.rws.removeEventListener("open",e)}};return this.disposables.add(`connect_${m()}`,t),t}onDidClose(e){this.rws.addEventListener("close",e);let t={dispose:()=>{this.rws.removeEventListener("close",e)}};return this.disposables.add(`close_${m()}`,t),t}};P=new WeakSet,Ye=function(){return this.terminalError?Promise.reject(this.terminalError):this.isConnected?Promise.resolve():this.connectPromise?this.connectPromise:(this.connectPromise=new Promise((e,t)=>{if(this.isConnected){e(),S(this,P,Ze).call(this);return}let r,n=0,o=()=>{this.rws.removeEventListener("open",s),this.rws.removeEventListener("error",a),this.rws.removeEventListener("close",c),clearTimeout(r)},s=()=>{o(),this.connectPromise=null,e(),S(this,P,Ze).call(this)},a=l=>{n+=1,this.log("warn","WebSocket emitted an error while connecting; waiting for reconnect/open",{errorCount:n,error:ke(l)})},c=l=>{let d=ke(l);if(l.code===1008||l.code===4e3){o(),this.connectPromise=null,t(new se(`WebSocket connection failed: ${d}`,l));return}this.log("warn","WebSocket closed before opening; waiting for reconnect/open",{error:d})};this.rws.addEventListener("open",s),this.rws.addEventListener("error",a),this.rws.addEventListener("close",c),this.rws.readyState===3&&this.rws.reconnect(),r=setTimeout(()=>{o(),this.connectPromise=null,t(new Je(`WebSocket connection timeout after ${this.CONNECT_WAIT_TIMEOUT}ms`))},this.CONNECT_WAIT_TIMEOUT)}),this.connectPromise)},Ze=function(){this.pingIntervalStarted||this.closed||(this.pingIntervalStarted=!0,this.disposables.add("pingInterval",()=>{let e=setInterval(async()=>{try{this.log("debug","Sending periodic ping"),await this.invoke("ping"),this.log("debug","Ping successful")}catch(t){this.log("error","Ping failed",{error:t instanceof Error?t.message:String(t)})}},this.PING_INTERVAL);return{dispose:()=>{clearInterval(e),this.pingIntervalStarted=!1}}}))};var tt={};Be(tt,{default:()=>et});function et(i){return{all:i=i||new Map,on:function(e,t){var r=i.get(e);r?r.push(t):i.set(e,[t])},off:function(e,t){var r=i.get(e);r&&(t?r.splice(r.indexOf(t)>>>0,1):i.set(e,[]))},emit:function(e,t){var r=i.get(e);r&&r.slice().map(function(n){n(t)}),(r=i.get("*"))&&r.slice().map(function(n){n(e,t)})}}}var yr=et??tt;function wr(i){let e=yr(i);return e.once=(t,r)=>{let n=o=>{e.off(t,n),r(o)};return e.on(t,n),{dispose:()=>{e.off(t,n)}}},e}var _=class i{constructor(){this.emitter=wr()}listen(e,t){let r=()=>{this.removeListener(e,t)};return this.emitter.on(e,t),{dispose:r}}emit(e,...t){this.emitter.emit(e,t.length>1?t:t[0])}once(e,t){return this.emitter.once(e,t)}static make(){return new i}static refresh(){return new i}removeListener(e,t){this.emitter.off(e,t)}static createInstance(){return new i}inspect(){return this.emitter.all}};var ae=class{constructor(e){this.okra=e}checkpoint(e,t,r="main",n=!1){return this.okra.invoke("git.checkpoint",{author:e,message:t,branch:r,allowEmpty:n})}checkout(e,t=!0){return this.okra.invoke("git.checkout",{branch:e,create:t})}sync(e,t,r="main",n,o="both",s=!1){return this.okra.invoke("git.sync",{url:e,author:t,ref:r,token:n,direction:o,force:s})}log(e="main"){return this.okra.invoke("git.log",{ref:e})}diff(e){return this.okra.invoke("git.diff",this.normalizeRemoteInput(e))}merge(e){return this.okra.invoke("git.merge",this.normalizeRemoteInput(e))}conflicts(){return this.okra.invoke("git.conflicts",{})}abortMerge(){return this.okra.invoke("git.resolve",{action:"abort"})}continueMerge(e,t){return this.okra.invoke("git.resolve",{action:"continue",author:e,message:t})}review(){return this.okra.invoke("git.review",{})}stage(e={all:!0}){return this.okra.invoke("git.stage",e)}unstage(e={all:!0}){return this.okra.invoke("git.unstage",e)}revert(e){return this.okra.invoke("git.revert",e)}credentials(){return this.okra.gitCredentials()}restore(e){return this.okra.invoke("git.restore",{ref:e})}status(){return this.okra.invoke("git.status",{})}normalizeRemoteInput(e){if(e.notebookId===void 0)return e;let t=e.notebookId.trim();if(!t)throw new Error("'notebookId' cannot be empty.");if(e.url?.trim())throw new Error("Pass either 'url' or 'notebookId', not both.");if(e.target?.trim())throw new Error("Pass either 'target' or 'notebookId', not both.");let{notebookId:r,...n}=e;return{...n,url:this.gitUrlForNotebook(t)}}gitUrlForNotebook(e){let t=new URL(this.okra.data.gitUrl);return t.username="",t.password="",t.pathname=`/${encodeURIComponent(e)}.git`,t.search="",t.hash="",t.toString()}};var F=class{constructor(e,t,r){this.onEvent=e;this.onceEvent=t;this.beacon=r;this.urlHistory=[];this.currentIndex=0;this._canGoBack=!1;this._canGoForward=!1;this.beacon=r,this.setupUrlChangeListener(),this.urlHistory.push(r.iframe.src),this.updateNavigationState()}visit(e){if(!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.currentIndex<this.urlHistory.length-1&&(this.urlHistory=this.urlHistory.slice(0,this.currentIndex+1)),this.urlHistory.push(e),this.currentIndex=this.urlHistory.length-1,this.updateNavigationState(),this.emitHistoryChange(e,"push")}setupUrlChangeListener(){this.beacon.on("urlChange",e=>{this.addToHistory(e.newUrl)})}addToHistory(e){this.currentIndex<this.urlHistory.length-1&&(this.urlHistory=this.urlHistory.slice(0,this.currentIndex+1)),this.urlHistory.push(e),this.currentIndex=this.urlHistory.length-1,this.updateNavigationState()}updateNavigationState(){let e=this._canGoBack,t=this._canGoForward;this._canGoBack=this.currentIndex>0,this._canGoForward=this.currentIndex<this.urlHistory.length-1,(e!==this._canGoBack||t!==this._canGoForward)&&this.emitNavigationStateChange()}emitNavigationStateChange(){this.beacon&&this.beacon.emit&&this.beacon.emit("navigationStateChange",{canGoBack:this._canGoBack,canGoForward:this._canGoForward,currentIndex:this.currentIndex,historyLength:this.urlHistory.length,timestamp:Date.now()})}get canGoBack(){return this._canGoBack}get canGoForward(){return this._canGoForward}async goBack(){if(!this.canGoBack)return{success:!1,error:"Cannot go back - no previous history"};this.currentIndex--,this.updateNavigationState();let e=this.urlHistory[this.currentIndex];return this.beacon?(this.beacon.navigate(e),this.emitHistoryChange(e,"back"),{success:!0,url:e}):{success:!1,error:"Beacon reference not set"}}async goForward(){if(!this.canGoForward)return{success:!1,error:"Cannot go forward - no forward history"};this.currentIndex++,this.updateNavigationState();let e=this.urlHistory[this.currentIndex];return this.beacon?(this.beacon.navigate(e),this.emitHistoryChange(e,"forward"),{success:!0,url:e}):{success:!1,error:"Beacon reference not set"}}async reload(){if(this.currentIndex>=0&&this.currentIndex<this.urlHistory.length){let e=this.urlHistory[this.currentIndex];if(!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.emitHistoryChange(e,"reload")}}getCurrentUrl(){return this.currentIndex>=0&&this.currentIndex<this.urlHistory.length?new URL(this.urlHistory[this.currentIndex]):new URL("about:blank")}getHistory(){return[...this.urlHistory]}getCurrentIndex(){return this.currentIndex}canGoBackSync(){return this.currentIndex>0}canGoForwardSync(){return this.currentIndex<this.urlHistory.length-1}emitHistoryChange(e,t){this.beacon&&this.beacon.emit&&this.beacon.emit("historyChange",{url:e,state:null,direction:t,timestamp:Date.now()})}async pushState(e){this.visit(e)}async replaceState(e){if(this.currentIndex>=0&&this.currentIndex<this.urlHistory.length){if(this.urlHistory[this.currentIndex]=e,!this.beacon)throw new Error("Beacon reference not set");this.beacon.navigate(e),this.emitHistoryChange(e,"replace")}else this.visit(e)}async getHistoryLength(){return this.urlHistory.length}async getHistoryState(){return null}async getHistoryInfo(){return{length:this.urlHistory.length,state:null,url:this.urlHistory[this.currentIndex]||"",canGoBack:this.canGoBack,canGoForward:this.canGoForward}}on(e,t){return this.onEvent(e,t)}once(e,t){this.onceEvent(e,t)}};function Tt(){if(typeof window>"u")throw new Error("Beacon SDK can only be used in a browser environment")}var U=class extends Error{constructor(t,r){super(t);this.code=r;this.name="BeaconError"}},ce=class extends U{constructor(e,t){super(`Beacon operation '${e}' timed out after ${t}ms`),this.code="TIMEOUT"}},w=class extends U{constructor(e){super(`Beacon connection error: ${e}`),this.code="CONNECTION_ERROR"}},Ee=class{constructor(e,t={}){this.messageHandlers=new Map;this.isBeaconReady=!1;this.readyPromise=null;this.isStarted=!1;this.disposables=[];this.messageChannel=null;this.port=null;this.channelEstablished=!1;Tt(),this.iframe=e;let r={retries:3,minTimeout:1e3,maxTimeout:5e3,factor:2,randomize:!0};this.options={timeout:1e4,targetOrigin:"*",debug:!1,retry:{...r,...t.retry},...t},this.eventEmitter=_.make(),this.setupMessageChannel(),this.navigator=new F(this.eventEmitter.listen.bind(this.eventEmitter),this.eventEmitter.once.bind(this.eventEmitter),this)}setupMessageChannel(){let e=t=>{try{if(t.source!==this.iframe.contentWindow)return;let r=t.data;if(!r||typeof r!="object"||!r.type)return;r.type==="beacon:ready-for-channel"&&this.establishChannel().catch(n=>{this.options.debug&&console.error("[Beacon SDK] Channel establishment failed:",n)}),r.type==="beacon:channel-established"&&(this.channelEstablished=!0,this.isBeaconReady=!0,this.emit("ready",r.payload),this.options.debug&&console.log("[Beacon SDK] Channel established and beacon ready"))}catch(r){this.options.debug&&console.error("[Beacon SDK] Message parsing error:",r)}};window.addEventListener("message",e),this.disposables.push({dispose:()=>window.removeEventListener("message",e)})}async establishChannel(){if(!this.iframe.contentWindow)throw new w("Iframe contentWindow not available");this.messageChannel=new MessageChannel,this.port=this.messageChannel.port1,this.port.onmessage=t=>{this.handleBeaconMessage(t.data)},this.port.onmessageerror=t=>{this.options.debug&&console.error("[Beacon SDK] Port message error:",t)},this.port.start();let e={type:"beacon:establish-channel",timestamp:Date.now(),id:this.generateId()};return this.iframe.contentWindow.postMessage(e,"*",[this.messageChannel.port2]),this.options.debug&&console.log("[Beacon SDK] Channel establishment message sent"),new Promise((t,r)=>{let n=setTimeout(()=>{r(new w("Channel establishment timeout"))},this.options.timeout),o=()=>{this.channelEstablished&&this.isBeaconReady?(clearTimeout(n),t()):setTimeout(o,100)};o()})}handleBeaconMessage(e){this.options.debug&&console.log("[Beacon SDK] Received message:",e.type,e.payload);let t=e.type.replace("beacon:","");this.emit(t,e.payload);let r=this.messageHandlers.get(e.type);r&&r.forEach(n=>{try{n(e.payload)}catch(o){this.options.debug&&console.error("[Beacon SDK] Message handler error:",o)}})}waitForBeaconReady(){return oe(async()=>new Promise((e,t)=>{if(this.isBeaconReady&&this.channelEstablished){e();return}let r=this.options.timeout,n=setTimeout(()=>{t(new ce("beacon ready",r))},r),o=this.on("ready",()=>{clearTimeout(n),o.dispose(),e()})}),{retries:this.options.retry?.retries??3,minTimeout:this.options.retry?.minTimeout??1e3,maxTimeout:this.options.retry?.maxTimeout??5e3,factor:this.options.retry?.factor??2,randomize:this.options.retry?.randomize??!0,onRetry:(e,t)=>{if(this.options.debug){let r=e instanceof Error?e.message:String(e);console.warn(`[Beacon SDK] Beacon ready retry attempt ${t}:`,r)}this.isBeaconReady=!1,this.channelEstablished=!1}})}sendMessage(e,t={}){if(!this.port)throw new w("MessagePort not available - channel not established");let r={type:`beacon:${e}`,payload:t,timestamp:Date.now(),source:"parent",id:this.generateId()};try{this.port.postMessage(r),this.options.debug&&console.log("[Beacon SDK] Sent message via port:",r.type,r.payload)}catch(n){throw new w(`Failed to send message via port: ${n instanceof Error?n.message:String(n)}`)}}async sendAndWaitFor(e,t,r={},n){return await this.ready(),oe(async o=>new Promise((s,a)=>{let c=n||this.options.timeout,l=setTimeout(()=>{d.dispose();let u=new ce(e,c);a(u)},c),d=this.eventEmitter.listen(t,u=>{clearTimeout(l),d.dispose(),s(u)});try{this.sendMessage(e,r)}catch(u){clearTimeout(l),d.dispose(),u instanceof w?a(u):o(u)}}),{retries:this.options.retry?.retries??3,minTimeout:this.options.retry?.minTimeout??1e3,maxTimeout:this.options.retry?.maxTimeout??5e3,factor:this.options.retry?.factor??2,randomize:this.options.retry?.randomize??!0,onRetry:(o,s)=>{if(this.options.debug){let a=o instanceof Error?o.message:String(o);console.warn(`[Beacon SDK] Retry attempt ${s} for ${e}:`,a)}}})}generateId(){return`sdk_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}emit(e,t){this.eventEmitter.emit(e,t)}start(){return this.isStarted?this.readyPromise||Promise.resolve():(this.isStarted=!0,this.readyPromise=this.waitForBeaconReady(),this.readyPromise)}async ready(){if(!this.isStarted)throw new U("Beacon has not been started. Call start() first.");if(!this.readyPromise)throw new U("Beacon ready promise is not available");return $(this.readyPromise,this.options.timeout)}get isReady(){return this.isBeaconReady}on(e,t){return this.eventEmitter.listen(e,t)}once(e,t){return this.eventEmitter.once(e,t)}async ping(){try{return await this.sendAndWaitFor("ping","pong",{timestamp:Date.now()}),!0}catch(e){return this.options.debug&&console.warn("[Beacon SDK] Ping failed:",e),!1}}async getDebugInfo(){return this.sendAndWaitFor("getDebugInfo","debugInfo")}async getConsoleEvents(){return this.sendAndWaitFor("getConsoleEvents","consoleEvents")}async getErrorEvents(){return this.sendAndWaitFor("getErrorEvents","errorEvents")}async clearConsole(){await this.ready(),this.sendMessage("clearConsole")}async clearErrors(){await this.ready(),this.sendMessage("clearErrors")}async executeCode(e){return this.sendAndWaitFor("executeCode","codeExecutionResult",{code:e})}async inspectElement(e){return this.sendAndWaitFor("inspectElement","elementInspectionResult",{selector:e})}async fetch(e){return this.sendAndWaitFor("fetch","fetchResult",e)}async captureScreenshot(e={}){let t=e.mediaTimeoutMs??e.timeout??3e4,r=e.transportTimeoutMs??t+5e3;return this.sendAndWaitFor("captureScreenshot","screenshotResult",e,r)}async debug(e,t){let r=new URL(e.path,this.iframe.src||window.location.origin).href;this.iframe.src!==r&&(this.navigator.visit(r),await this.ready()),t&&await this.wait(t);let n=(e.options?.timeout||3e4)+5e3;return this.sendAndWaitFor("debug","debugResult",e,n)}async wait(e){return new Promise(t=>setTimeout(t,e*1e3))}navigate(e){if(!this.iframe)throw new w("Iframe not available");try{let t=new URL(e,this.iframe.src||window.location.origin);this.iframe.src=t.href,this.isBeaconReady=!1,this.channelEstablished=!1,this.port&&(this.port.close(),this.port=null),this.messageChannel&&(this.messageChannel=null),this.isStarted&&(this.readyPromise=this.waitForBeaconReady())}catch{throw new w(`Invalid URL: ${e}`)}}get url(){return this.iframe.src}get element(){return this.iframe}dispose(){this.port&&(this.port.close(),this.port=null),this.messageChannel&&(this.messageChannel=null),this.disposables.forEach(e=>e.dispose()),this.disposables=[],this.messageHandlers.clear(),this.isBeaconReady=!1,this.channelEstablished=!1,this.isStarted=!1,this.readyPromise=null}};function rt(i,e){return new Ee(i,e)}function kr(){try{return Tt(),!0}catch{return!1}}function xr(i){return Array.isArray(i)?i:Object.entries(i).map(([e,t])=>({name:e,...typeof t=="string"?{value:t}:t}))}var Se=class extends Error{constructor(t,r={}){super(t);this.message=t;this.data=r;this.name="NotebookInitError"}},Ie=class extends Error{constructor(t,r){super(`PHPSandbox API Error: ${t.status} ${t.statusText} - ${r}`);this.response=t;this.body=r;this.status=t.status}},Te=class{constructor(e){this.client=e;this.secrets=new De(e),this.preview=new Ce(e),this.mail=new Ne(e)}async create(e,t={},r=!0){let n=await this.client.post("/notebook",{template:e,...t}),o=new x(n.data,this.client);return r?this.init(o):o}async get(e){let t=await this.client.get(`/notebook/${e}`);return new x(t.data,this.client)}async update(e,t={}){let r=await this.client.put(`/notebook/${e}`,t);return new x(r.data,this.client)}async delete(e){await this.client.delete(`/notebook/${e}`)}async fork(e,t={}){let r=await this.client.post(`/notebook/${e}/fork`,t);return this.init(new x(r.data,this.client))}async gitCredentials(e){return(await this.client.post(`/notebook/${e}/git/credentials`)).data}async open(e){let t=await this.client.get(`/notebook/${e}`);return new x(t.data,this.client)}openFromData(e){return this.init(new x(e,this.client))}async init(e){return await e.ready(),e}};function Er(i){let e=new URL(i),t=e.pathname.replace(/\/+$/,"");return e.pathname=t===""||t==="/"?"/v1/":`${t}/`,e.search="",e.hash="",e.toString()}var Pe=class{constructor(e,t="https://api.phpsandbox.io/v1",r={}){this.fetch=globalThis.fetch;this.notebook=new Te(this),this.options=Object.assign({startClosed:!0},r),this.baseUrl=Er(t),r.fetch&&(this.fetch=r.fetch),this.headers={Accept:"application/json",Authorization:`Bearer ${e}`,"Content-Type":"application/json"}}get(e){return this.makeRequest("GET",e)}post(e,t){return this.makeRequest("POST",e,{body:t===void 0?void 0:JSON.stringify(t)})}delete(e){return this.makeRequest("DELETE",e)}put(e,t){return this.makeRequest("PUT",e,{body:t===void 0?void 0:JSON.stringify(t)})}async makeRequest(e,t,r){let n=await this.fetch(new Request(new URL(t.replace(/^\//,""),this.baseUrl),{method:e,...r,headers:this.headers}));if(!n.ok)throw new Ie(n,await n.text());if(n.status===204)return{data:void 0};let o=await n.text();return{data:o===""?void 0:JSON.parse(o)}}},nt=class extends Pe{},De=class{constructor(e){this.client=e}async list(e){return(await this.client.get(`/notebook/${e}/secrets`)).data}async set(e,t,r){let n=typeof r=="string"?{name:t,value:r}:{name:t,...r};return(await this.client.put(`/notebook/${e}/secrets`,n)).data}async setMany(e,t){return(await this.client.put(`/notebook/${e}/secrets`,{secrets:xr(t)})).data}async delete(e,t){await this.client.delete(`/notebook/${e}/secrets/${encodeURIComponent(t)}`)}},Ce=class{constructor(e){this.client=e}async get(e){return(await this.client.get(`/notebook/${e}/preview`)).data}async setPassword(e,t){return(await this.client.put(`/notebook/${e}/preview`,t)).data}async disable(e){await this.client.delete(`/notebook/${e}/preview`)}async createSession(e){return(await this.client.post(`/notebook/${e}/preview/session`)).data}async createHandoff(e,t){return(await this.client.post(`/notebook/${e}/preview/handoff`,t)).data}},Ne=class{constructor(e){this.client=e}async status(e){return(await this.client.get(`/notebook/${e}/mail`)).data}async enable(e){return(await this.client.put(`/notebook/${e}/mail`)).data}async disable(e){await this.client.delete(`/notebook/${e}/mail`)}async list(e,t={}){return(await this.client.get(`/notebook/${e}/mails${Sr(t)}`)).data}async get(e,t){return(await this.client.get(`/notebook/${e}/mails/${encodeURIComponent(t)}`)).data}async delete(e,t){await this.client.delete(`/notebook/${e}/mails/${encodeURIComponent(t)}`)}},D,le,it,x=class{constructor(e,t){this.data=e;this.client=t;G(this,le);this.initialized=!1;G(this,D);this.disposables=[];this.emitter=_.createInstance(),this.socket=new O(e.okraUrl,this.emitter,{debug:t.options.debug,startClosed:t.options.startClosed,webSocket:t.options.webSocket}),this.watchConnection(),Oe(this,D,S(this,le,it).call(this)),this.file=new W(this),this.terminal=new K(this),this.auth=new q(this),this.lsp=new V(this),this.composer=new j(this),this.log=new Q(this),this.repl=new J(this),this.container=new z(this),this.laravel=new X(this),this.shell=new Y(this),this.git=new ae(this),this.services=new Z(this),this.config=new ee(this),this.secrets=new Re(t,this.data.id),this.preview=new Ae(t,this.data.id),this.mail=new _e(t,this.data.id)}async ready(){let e=this.socket.getTerminalError();if(e)throw e;return(async()=>(this.client.options.startClosed&&!this.socket.isConnected&&await this.socket.connect(),ue(this,D)))()}fork(e={}){return this.client.notebook.fork(this.data.id,e)}gitCredentials(){return this.client.notebook.gitCredentials(this.data.id)}delete(){return this.client.notebook.delete(this.data.id).then(()=>{this.socket.terminate(new k("Notebook has been deleted.",{id:this.data.id}))})}stop(){return this.container.stop()}restart(){return this.container.start()}invoke(e,t={},r={}){return this.socket.invoke(e,t||{},r)}send(e,t={}){return this.socket.send(e,t||{})}ping(){return this.invoke("ping")}listen(e,t){let r=this.emitter.listen(e,t);return this.disposables.push(r),r}dispose(){this.disposables.forEach(e=>e.dispose()),!this.socket.isClosed&&this.socket.disconnect()}connected(){return this.waitForSocketConnection({rejectOnClose:!0})}whenConnected(){return this.waitForSocketConnection({rejectOnClose:!1})}waitForSocketConnection(e){let t=this.socket.getTerminalError();return t?Promise.reject(t):this.socket.isConnected?Promise.resolve(this):new Promise((r,n)=>{let o=[],s=!1,a=()=>{for(let l of o)l.dispose();o.length=0},c=l=>{s||(s=!0,a(),l())};try{o.push(this.socket.onDidConnect(()=>c(()=>r(this)))),e.rejectOnClose&&o.push(this.socket.onDidClose(()=>c(()=>n(new Error("Connection closed"))))),o.push(this.socket.onDidBootError(l=>c(()=>n(l))))}catch(l){c(()=>n(l))}})}watchConnection(){this.socket.onDidConnect(()=>{this.socket.emit("okra.connected"),this.client.options.telemetry&&this.container.enableTelemetry(this.client.options.telemetry)}),this.socket.onDidClose(()=>{this.socket.emit("okra.disconnected"),this.initialized=!1}),this.socket.onDidBootError(e=>{this.socket.emit("okra.boot_error",e),this.socket.emit("okra.disconnected"),this.initialized=!1})}onDidConnect(e){this.socket.removeListener("okra.connected",e);let t=this.socket.listen("okra.connected",e);return this.disposables.push(t),t}onDidDisconnect(e){let t=this.socket.listen("okra.disconnected",e);return this.disposables.push(t),t}onDidBootError(e){let t=this.socket.listen("okra.boot_error",e);return this.disposables.push(t),t}update(){return this.invoke("notebook.update")}onDidInitialize(e){return this.listen("notebook.initialized",e)}async reconnect(){let e=this.whenConnected();return this.socket.reconnect(),this.initialized=!1,await e,S(this,le,it).call(this),this.ready().then(()=>this)}async beacon(e,t){let r=await this.ready();return e.src=r.data.previewUrl,rt(e,t)}};D=new WeakMap,le=new WeakSet,it=function(){return Oe(this,D,new Promise((e,t)=>{let r=this.onDidInitialize(o=>{if(n.dispose(),r.dispose(),this.initialized=o,o.type==="error"){t(new Se(o.message,o.data));return}e(o)}),n=this.onDidBootError(o=>{r.dispose(),n.dispose(),t(o)})})),ue(this,D).catch(()=>{}),ue(this,D)};var Re=class{constructor(e,t){this.client=e;this.notebookId=t}list(){return this.client.notebook.secrets.list(this.notebookId)}set(e,t){return this.client.notebook.secrets.set(this.notebookId,e,t)}setMany(e){return this.client.notebook.secrets.setMany(this.notebookId,e)}delete(e){return this.client.notebook.secrets.delete(this.notebookId,e)}},Ae=class{constructor(e,t){this.client=e;this.notebookId=t}get(){return this.client.notebook.preview.get(this.notebookId)}setPassword(e){return this.client.notebook.preview.setPassword(this.notebookId,e)}disable(){return this.client.notebook.preview.disable(this.notebookId)}createSession(){return this.client.notebook.preview.createSession(this.notebookId)}createHandoff(e){return this.client.notebook.preview.createHandoff(this.notebookId,e)}},_e=class{constructor(e,t){this.client=e;this.notebookId=t}status(){return this.client.notebook.mail.status(this.notebookId)}enable(){return this.client.notebook.mail.enable(this.notebookId)}disable(){return this.client.notebook.mail.disable(this.notebookId)}list(e={}){return this.client.notebook.mail.list(this.notebookId,e)}get(e){return this.client.notebook.mail.get(this.notebookId,e)}delete(e){return this.client.notebook.mail.delete(this.notebookId,e)}};function Sr(i){let e=new URLSearchParams;for(let[r,n]of Object.entries(i))(typeof n=="string"||typeof n=="number"||typeof n=="boolean")&&e.set(r,String(n));let t=e.toString();return t===""?"":`?${t}`}return At(Ir);})();
3
3
  /*! Bundled license information:
4
4
 
5
5
  reconnecting-websocket/dist/reconnecting-websocket-mjs.js:
package/dist/git.d.ts CHANGED
@@ -63,13 +63,24 @@ export interface GitConflict {
63
63
  status: string;
64
64
  markers?: number;
65
65
  }
66
- export interface GitDiffInput {
67
- url?: string;
66
+ type GitRemoteSource = {
67
+ url: string;
68
+ notebookId?: never;
69
+ target?: never;
70
+ } | {
71
+ notebookId: string;
72
+ url?: never;
73
+ target?: never;
74
+ } | {
75
+ target: string;
76
+ url?: never;
77
+ notebookId?: never;
78
+ };
79
+ export type GitDiffInput = GitRemoteSource & {
68
80
  token?: string;
69
81
  ref?: string;
70
82
  base?: string;
71
- target?: string;
72
- }
83
+ };
73
84
  export interface GitDiffPreview {
74
85
  status: 'ready' | 'unrelated';
75
86
  message?: string;
@@ -82,15 +93,13 @@ export interface GitDiffPreview {
82
93
  ahead: number;
83
94
  behind: number;
84
95
  }
85
- export interface GitMergeInput {
86
- url?: string;
96
+ export type GitMergeInput = GitRemoteSource & {
87
97
  token?: string;
88
98
  ref?: string;
89
- target?: string;
90
99
  expectedBaseRef?: string;
91
100
  author?: string;
92
101
  message?: string;
93
- }
102
+ };
94
103
  export type GitMergeResult = {
95
104
  status: 'merged';
96
105
  message: string;
@@ -188,4 +197,7 @@ export default class Git {
188
197
  credentials(): Promise<GitCredentials>;
189
198
  restore(ref: string): Promise<GitRef>;
190
199
  status(): Promise<GitStatus>;
200
+ private normalizeRemoteInput;
201
+ private gitUrlForNotebook;
191
202
  }
203
+ export {};
package/dist/git.js CHANGED
@@ -15,10 +15,10 @@ export default class Git {
15
15
  return this.okra.invoke('git.log', { ref });
16
16
  }
17
17
  diff(input) {
18
- return this.okra.invoke('git.diff', input);
18
+ return this.okra.invoke('git.diff', this.normalizeRemoteInput(input));
19
19
  }
20
20
  merge(input) {
21
- return this.okra.invoke('git.merge', input);
21
+ return this.okra.invoke('git.merge', this.normalizeRemoteInput(input));
22
22
  }
23
23
  conflicts() {
24
24
  return this.okra.invoke('git.conflicts', {});
@@ -50,4 +50,33 @@ export default class Git {
50
50
  status() {
51
51
  return this.okra.invoke('git.status', {});
52
52
  }
53
+ normalizeRemoteInput(input) {
54
+ if (input.notebookId === undefined) {
55
+ return input;
56
+ }
57
+ const notebookId = input.notebookId.trim();
58
+ if (!notebookId) {
59
+ throw new Error("'notebookId' cannot be empty.");
60
+ }
61
+ if (input.url?.trim()) {
62
+ throw new Error("Pass either 'url' or 'notebookId', not both.");
63
+ }
64
+ if (input.target?.trim()) {
65
+ throw new Error("Pass either 'target' or 'notebookId', not both.");
66
+ }
67
+ const { notebookId: _notebookId, ...payload } = input;
68
+ return {
69
+ ...payload,
70
+ url: this.gitUrlForNotebook(notebookId),
71
+ };
72
+ }
73
+ gitUrlForNotebook(notebookId) {
74
+ const url = new URL(this.okra.data.gitUrl);
75
+ url.username = '';
76
+ url.password = '';
77
+ url.pathname = `/${encodeURIComponent(notebookId)}.git`;
78
+ url.search = '';
79
+ url.hash = '';
80
+ return url.toString();
81
+ }
53
82
  }
@@ -49,27 +49,27 @@ async function main(): Promise<void> {
49
49
 
50
50
  fork = await base.fork();
51
51
  shouldDeleteFork = options.deleteFork;
52
- console.log(`Fork notebook: ${fork.data.id}`);
52
+ const forkNotebookId = fork.data.id;
53
+ console.log(`Fork notebook: ${forkNotebookId}`);
53
54
 
54
55
  await fork.ready();
55
- const editContent = buildEditContent(base.data.id, fork.data.id, options);
56
+ const editContent = buildEditContent(base.data.id, forkNotebookId, options);
56
57
  const written = await fork.file.write(options.editPath, editContent);
57
58
  if (!written) {
58
59
  throw new Error(`fs.write returned false for ${options.editPath}.`);
59
60
  }
60
61
  console.log(`Edited fork file: ${options.editPath}`);
61
62
 
62
- const forkCheckpoint = await fork.git.checkpoint(options.author, `Smoke edit in fork ${fork.data.id}`, options.ref, false);
63
+ const forkCheckpoint = await fork.git.checkpoint(options.author, `Smoke edit in fork ${forkNotebookId}`, options.ref, false);
63
64
  console.log(`Fork checkpoint: ${forkCheckpoint.ref}`);
64
65
 
65
- const forkCredentials = await fork.git.credentials();
66
- console.log(`Diff source: ${redactUrl(forkCredentials.url)}`);
66
+ console.log(`Diff source notebook: ${forkNotebookId}`);
67
67
 
68
68
  const preview = await retry(
69
69
  () =>
70
70
  base!.git.diff({
71
- url: forkCredentials.url,
72
- token: forkCredentials.token,
71
+ notebookId: forkNotebookId,
72
+ token: options.token,
73
73
  ref: options.ref,
74
74
  }),
75
75
  5,
@@ -83,8 +83,8 @@ async function main(): Promise<void> {
83
83
  }
84
84
 
85
85
  const merge = await base.git.merge({
86
- url: forkCredentials.url,
87
- token: forkCredentials.token,
86
+ notebookId: forkNotebookId,
87
+ token: options.token,
88
88
  ref: options.ref,
89
89
  expectedBaseRef: preview.baseRef,
90
90
  author: options.author,
@@ -373,22 +373,6 @@ function formatError(error: unknown): string {
373
373
  return error instanceof Error ? error.message : String(error);
374
374
  }
375
375
 
376
- function redactUrl(value: string): string {
377
- try {
378
- const url = new URL(value);
379
- if (url.username || url.password) {
380
- url.username = 'redacted';
381
- url.password = 'redacted';
382
- }
383
- if (url.search) {
384
- url.search = '?redacted=1';
385
- }
386
- return url.toString();
387
- } catch {
388
- return '<invalid-url>';
389
- }
390
- }
391
-
392
376
  function printHelp(): void {
393
377
  console.log(`
394
378
  Usage:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phpsandbox/sdk",
3
- "version": "0.0.52",
3
+ "version": "0.0.53",
4
4
  "description": "A comprehensive TypeScript SDK for interacting with cloud-based PHP development environments",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",