@phpsandbox/sdk 0.0.2 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/phpsandbox-sdk.esm.js +23 -7
- package/dist/browser/phpsandbox-sdk.esm.js.map +2 -2
- package/dist/browser/phpsandbox-sdk.esm.min.js +2 -2
- package/dist/browser/phpsandbox-sdk.esm.min.js.map +3 -3
- package/dist/browser/phpsandbox-sdk.iife.js +23 -7
- package/dist/browser/phpsandbox-sdk.iife.js.map +2 -2
- package/dist/browser/phpsandbox-sdk.iife.min.js +2 -2
- package/dist/browser/phpsandbox-sdk.iife.min.js.map +3 -3
- package/dist/filesystem.d.ts +1 -1
- package/dist/filesystem.d.ts.map +1 -1
- package/dist/filesystem.js +9 -0
- package/dist/filesystem.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -5
- package/dist/index.js.map +1 -1
- package/dist/socket/index.d.ts +6 -0
- package/dist/socket/index.d.ts.map +1 -1
- package/dist/socket/index.js +17 -0
- package/dist/socket/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var PHPSandbox=(()=>{var yt=Object.create;var ie=Object.defineProperty;var xt=Object.getOwnPropertyDescriptor;var wt=Object.getOwnPropertyNames;var Et=Object.getPrototypeOf,kt=Object.prototype.hasOwnProperty;var He=s=>{throw TypeError(s)};var ne=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),Tt=(s,e)=>{for(var t in e)ie(s,t,{get:e[t],enumerable:!0})},ze=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of wt(e))!kt.call(s,n)&&n!==t&&ie(s,n,{get:()=>e[n],enumerable:!(i=xt(e,n))||i.enumerable});return s};var We=(s,e,t)=>(t=s!=null?yt(Et(s)):{},ze(e||!s||!s.__esModule?ie(t,"default",{value:s,enumerable:!0}):t,s)),St=s=>ze(ie({},"__esModule",{value:!0}),s);var Ee=(s,e,t)=>e.has(s)||He("Cannot "+t);var Ke=(s,e,t)=>(Ee(s,e,"read from private field"),t?t.call(s):e.get(s)),N=(s,e,t)=>e.has(s)?He("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),Ge=(s,e,t,i)=>(Ee(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),R=(s,e,t)=>(Ee(s,e,"access private method"),t);var rt=ne((ln,st)=>{function g(s,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(s)),this._timeouts=s,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}st.exports=g;g.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};g.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};g.prototype.retry=function(s){if(this._timeout&&clearTimeout(this._timeout),!s)return!1;var e=new Date().getTime();if(s&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(s),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(s);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),t=this._cachedTimeouts.slice(-1);else return!1;var i=this;return this._timer=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},t),this._options.unref&&this._timer.unref(),!0};g.prototype.attempt=function(s,e){this._fn=s,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};g.prototype.try=function(s){console.log("Using RetryOperation.try() is deprecated"),this.attempt(s)};g.prototype.start=function(s){console.log("Using RetryOperation.start() is deprecated"),this.attempt(s)};g.prototype.start=g.prototype.try;g.prototype.errors=function(){return this._errors};g.prototype.attempts=function(){return this._attempts};g.prototype.mainError=function(){if(this._errors.length===0)return null;for(var s={},e=null,t=0,i=0;i<this._errors.length;i++){var n=this._errors[i],r=n.message,o=(s[r]||0)+1;s[r]=o,o>=t&&(e=n,t=o)}return e}});var ot=ne(S=>{var Jt=rt();S.operation=function(s){var e=S.timeouts(s);return new Jt(e,{forever:s&&(s.forever||s.retries===1/0),unref:s&&s.unref,maxRetryTime:s&&s.maxRetryTime})};S.timeouts=function(s){if(s instanceof Array)return[].concat(s);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in s)e[t]=s[t];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var i=[],n=0;n<e.retries;n++)i.push(this.createTimeout(n,e));return s&&s.forever&&!i.length&&i.push(this.createTimeout(n,e)),i.sort(function(r,o){return r-o}),i};S.createTimeout=function(s,e){var t=e.randomize?Math.random()+1:1,i=Math.round(t*Math.max(e.minTimeout,1)*Math.pow(e.factor,s));return i=Math.min(i,e.maxTimeout),i};S.wrap=function(s,e,t){if(e instanceof Array&&(t=e,e=null),!t){t=[];for(var i in s)typeof s[i]=="function"&&t.push(i)}for(var n=0;n<t.length;n++){var r=t[n],o=s[r];s[r]=function(c){var h=S.operation(e),u=Array.prototype.slice.call(arguments,1),l=u.pop();u.push(function(f){h.retry(f)||(f&&(arguments[0]=h.mainError()),l.apply(this,arguments))}),h.attempt(function(){c.apply(s,u)})}.bind(s,o),s[r].options=e}}});var ct=ne((hn,at)=>{at.exports=ot()});var Pe=ne((dn,lt)=>{var Yt=ct();function Zt(s,e){function t(i,n){var r=e||{},o;"randomize"in r||(r.randomize=!0),o=Yt.operation(r);function a(u){n(u||new Error("Aborted"))}function c(u,l){if(u.bail){a(u);return}o.retry(u)?r.onRetry&&r.onRetry(u,l):n(o.mainError())}function h(u){var l;try{l=s(a,u)}catch(f){c(f,u);return}Promise.resolve(l).then(i).catch(function(M){c(M,u)})}o.attempt(h)}return new Promise(t)}lt.exports=Zt});var ci={};Tt(ci,{ApiError:()=>be,Beacon:()=>fe,BeaconConnectionError:()=>v,BeaconError:()=>D,BeaconTimeoutError:()=>ee,Client:()=>ye,CommandError:()=>oe,ErrorEvent:()=>b,FileChangeType:()=>Qe,FileType:()=>qe,Filesystem:()=>O,FilesystemError:()=>se,FilesystemErrorType:()=>Ve,LspConnection:()=>re,Navigator:()=>B,NotebookApi:()=>ve,NotebookInitError:()=>ge,NotebookInstance:()=>E,NotebookState:()=>Xe,PHPSandbox:()=>Oe,PHPSandboxError:()=>ke,PromiseTimeoutError:()=>pe,RateLimitError:()=>k,Transport:()=>L,createBeacon:()=>Ne,isBeaconSupported:()=>ai,timeout:()=>Z});var b=class extends Error{constructor(t,i,n={}){super(i);this.code=t;this.message=i;this.raw=n}},k=class extends b{constructor(e,t={}){super(429,e,t)}},ke=class extends b{};var $e="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var y=(s=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(s|=0));for(;s--;)e+=$e[t[s]&63];return e};var qe=(n=>(n[n.Unknown=0]="Unknown",n[n.File=1]="File",n[n.Directory=2]="Directory",n[n.SymbolicLink=64]="SymbolicLink",n))(qe||{}),Qe=(i=>(i[i.UPDATED=1]="UPDATED",i[i.ADDED=2]="ADDED",i[i.DELETED=3]="DELETED",i))(Qe||{}),Ve=(o=>(o.Unavailable="Unavailable",o.NoPermissions="NoPermissions",o.FileExists="FileExists",o.FileNotFound="FileNotFound",o.FileIsADirectory="FileIsADirectory",o.FileNotADirectory="FileNotADirectory",o))(Ve||{}),se=class extends b{constructor(t,i){super(t.code,t.message);this.name=i}},Te=class{constructor(e,t,i){this.path=e;this.okra=t;this.disposable=i}dispose(){this.okra.invoke("fs.unwatch",{path:this.path}),this.disposable.dispose()}},O=class{constructor(e){this.okra=e;this.watches=new Map;this.watchOkraConnection()}watchOkraConnection(){this.okra.onDidConnect(()=>{for(let{path:e,options:t,onDidChange:i}of this.watches.values())this.watch(e,t,i)})}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:Object.assign(t,{includes:[],excludes:["**/storage","**/vendor","**/node_modules","**/.git","**/.svn","**/.hg","**/CVS","**/.DS_Store","**/Thumbs.db","**/*.crswap"],useIgnoreFiles:!1,followSymlinks:!1,useGlobalIgnoreFiles:!1,useParentIgnoreFiles:!1})})}search(e,t,i){e.id||(e.id=y());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}},r=e.id,o=async c=>{c===!1&&a.dispose(),i&&await Promise.resolve(i(c))===!1&&a.dispose()},a=this.okra.listen(`fs.text.search.${r}`,o);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 i=await this.okra.invoke("fs.readFile",{path:e,lineRange:t});return i instanceof Uint8Array?i:typeof i=="string"?new TextEncoder().encode(i):i}catch(i){this.handleError(i)}}tail(e,t=10){return this.okra.invoke("fs.tail",{path:e,lines:t}).catch(i=>this.handleError(i))}writeFile(e,t,i){return this.okra.invoke("fs.writeFile",{path:e,contents:t,options:i}).catch(n=>this.handleError(n))}stat(e){return this.okra.invoke("fs.stat",{path:e}).catch(t=>this.handleError(t))}rename(e,t,i){return this.okra.invoke("fs.rename",{from:e,to:t,options:i}).catch(n=>this.handleError(n))}delete(e,t){return this.okra.invoke("fs.delete",{path:e,options:t}).catch(i=>this.handleError(i))}copy(e,t,i){return this.okra.invoke("fs.copy",{source:e,destination:t,options:i}).catch(n=>this.handleError(n))}readDirectory(e,t=[],i=[]){return this.okra.invoke("fs.readDirectory",{path:e,include:t,exclude:i}).catch(n=>this.handleError(n))}createDirectory(e){return this.okra.invoke("fs.createDirectory",{path:e}).catch(t=>this.handleError(t))}watch(e,t,i){let n=this.okra.listen(`fs.watch.${e}`,i),r={dispose:()=>{n.dispose(),this.okra.invoke("fs.unwatch",{path:e})}},o=new Te(e,this.okra,r);return this.watches.set(e,{options:t,path:e,onDidChange:i}),this.okra.invoke("fs.watch",{path:e,options:t}),o}exists(e){return this.stat(e).then(()=>!0).catch(()=>!1)}async download(e,t,i){let n=y(),r=!!e,o=[];return this.okra.listen(`fs.download.${n}`,r?e:a=>{o.push(a)}),this.okra.invoke("fs.download",{id:n,exclude:t,include:i}).then(()=>new Blob(o,{type:"application/octet-stream"}))}tree(e="/"){return this.okra.invoke("fs.tree",{path:e})}handleError(e){throw e instanceof b&&"name"in e.raw?new se(e,e.raw.name):e}};var 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){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){this.okra.listen(`terminal.output.${e}`,t)}input(e,t){return this.okra.invoke("terminal.input",{id:e,input:t})}listen(e,t){return this.okra.listen(e,t)}async spawn(e,t,i){let n=i?.id||y(),r=new Set,o=()=>{for(let m of r)m.dispose();r.clear()},a=new WritableStream({write:m=>{this.input(n,m)},close:o}),c=new ReadableStream({start:m=>{r.add(this.listen(`terminal.output.${n}`,we=>{m.enqueue(we.output)}))},cancel:o}),h=new Promise(m=>{r.add(this.listen(`terminal.close.${n}`,we=>{o(),m(we.exitCode)}))}),u=()=>(o(),this.okra.invoke("terminal.close",{id:n})),l=m=>{this.okra.invoke("terminal.resize",{id:n,width:m.cols,height:m.rows})},{abortSignal:f,...M}=i??{};f&&f.addEventListener("abort",u);let d=await this.okra.invoke("terminal.spawn",{command:[e,...t],opts:{id:n,...M}},{abortSignal:f});return{exit:h,input:a,output:c,kill:u,resize:l,...d}}};var Xe=(a=>(a.RUNNING="running",a.STOPPED="stopped",a.STARTING="starting",a.STOPPING="stopping",a.KILLED="killed",a.ERROR="error",a.PROVISIONING="provisioning",a))(Xe||{}),H=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",i=>{for(let n of i)t.some(r=>r.port===n.port)||e(n,"open");for(let n of t)i.some(r=>r.port===n.port)||e(n,"close");t=i})}};var z=class{constructor(e){this.okra=e}logout(){return this.okra.invoke("auth.logout")}login(e){return this.okra.invoke("auth.login",{newConnectionData:e})}};var W=class{constructor(e){this.okra=e}message(e,t){return this.okra.invoke("lsp.message",{id:e,message:t})}listen(e,t,i){this.okra.listen(`${t}.${e}`,n=>i(n))}onClose(e,t){this.listen(e,"lsp.closed",i=>t(i.code,i.reason))}onError(e,t){this.listen(e,"lsp.error",i=>t(i.message))}onClientDisconnect(e){this.okra.onDidDisconnect(()=>e(1e3,"OKRA DISCONNECTED"))}onResponse(e,t){this.listen(e,"lsp.response",i=>t(JSON.stringify(i)))}close(e){return this.okra.invoke("lsp.close",{id:e})}start(e){return this.okra.invoke("lsp.start",{id:e})}connection(e){return re.create(e,this)}whenSocketConnected(){return this.okra.whenConnected()}},re=class s{constructor(e,t){this.id=e;this.lsp=t}send(e){return this.lsp.message(this.id,e)}onMessage(e){this.lsp.onResponse(this.id,e)}onError(e){this.lsp.onError(this.id,e)}onClose(e){this.lsp.onClose(this.id,e)}dispose(){this.lsp.close(this.id)}start(){this.lsp.start(this.id)}onClientDisconnect(e){this.lsp.onClientDisconnect(e)}whenSocketConnected(){return this.lsp.whenSocketConnected()}static create(e,t){return new s(e,t)}};var K=class{constructor(e){this.okra=e}invoke(e,t={},i={}){return this.okra.invoke("composer.invoke",{command:e,args:t,options:i})}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 G=class{constructor(e){this.okra=e}stream(e){return this.okra.listen("notebook.log",e)}listen(e,t){this.okra.listen(e,t)}};var $=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="",i={prependWith:"",appendWith:""}){return this.okra.invoke("repl.eval",{code:e,args:t,repl:i})}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){this.okra.listen(e,t)}onOutput(e){this.okra.listen("repl.output",e)}};var oe=class extends Error{constructor(t,i){super(t);this.output=t;this.exitCode=i}},Se=class{constructor(e,t){this.output=e;this.exitCode=t}throw(){if(this.exitCode!==0)throw new oe(this.output,this.exitCode);return this}},Q=class{constructor(e){this.okra=e}async exec(e){let t=await this.okra.invoke("shell.exec",{command:e});return new Se(t.output,t.exitCode)}};function Je(s){let e=s.length,t=0,i=0;for(;i<e;){let n=s.charCodeAt(i++);if((n&4294967168)===0){t++;continue}else if((n&4294965248)===0)t+=2;else{if(n>=55296&&n<=56319&&i<e){let r=s.charCodeAt(i);(r&64512)===56320&&(++i,n=((n&1023)<<10)+(r&1023)+65536)}(n&4294901760)===0?t+=3:t+=4}}return t}function Ct(s,e,t){let i=s.length,n=t,r=0;for(;r<i;){let o=s.charCodeAt(r++);if((o&4294967168)===0){e[n++]=o;continue}else if((o&4294965248)===0)e[n++]=o>>6&31|192;else{if(o>=55296&&o<=56319&&r<i){let a=s.charCodeAt(r);(a&64512)===56320&&(++r,o=((o&1023)<<10)+(a&1023)+65536)}(o&4294901760)===0?(e[n++]=o>>12&15|224,e[n++]=o>>6&63|128):(e[n++]=o>>18&7|240,e[n++]=o>>12&63|128,e[n++]=o>>6&63|128)}e[n++]=o&63|128}}var _t=new TextEncoder,It=50;function At(s,e,t){_t.encodeInto(s,e.subarray(t))}function Ye(s,e,t){s.length>It?At(s,e,t):Ct(s,e,t)}var Dt=4096;function Ce(s,e,t){let i=e,n=i+t,r=[],o="";for(;i<n;){let a=s[i++];if((a&128)===0)r.push(a);else if((a&224)===192){let c=s[i++]&63;r.push((a&31)<<6|c)}else if((a&240)===224){let c=s[i++]&63,h=s[i++]&63;r.push((a&31)<<12|c<<6|h)}else if((a&248)===240){let c=s[i++]&63,h=s[i++]&63,u=s[i++]&63,l=(a&7)<<18|c<<12|h<<6|u;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(a);r.length>=Dt&&(o+=String.fromCharCode(...r),r.length=0)}return r.length>0&&(o+=String.fromCharCode(...r)),o}var Rt=new TextDecoder,Pt=200;function Ut(s,e,t){let i=s.subarray(e,e+t);return Rt.decode(i)}function Ze(s,e,t){return t>Pt?Ut(s,e,t):Ce(s,e,t)}var T=class{constructor(e,t){this.type=e,this.data=t}};var p=class s extends Error{constructor(e){super(e);let t=Object.create(s.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:s.name})}};function je(s,e,t){let i=t/4294967296,n=t;s.setUint32(e,i),s.setUint32(e+4,n)}function ae(s,e,t){let i=Math.floor(t/4294967296),n=t;s.setUint32(e,i),s.setUint32(e+4,n)}function ce(s,e){let t=s.getInt32(e),i=s.getUint32(e+4);return t*4294967296+i}function et(s,e){let t=s.getUint32(e),i=s.getUint32(e+4);return t*4294967296+i}var Lt=-1,Bt=4294967296-1,Mt=17179869184-1;function Nt({sec:s,nsec:e}){if(s>=0&&e>=0&&s<=Mt)if(e===0&&s<=Bt){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,s),t}else{let t=s/4294967296,i=s&4294967295,n=new Uint8Array(8),r=new DataView(n.buffer);return r.setUint32(0,e<<2|t&3),r.setUint32(4,i),n}else{let t=new Uint8Array(12),i=new DataView(t.buffer);return i.setUint32(0,e),ae(i,4,s),t}}function Ot(s){let e=s.getTime(),t=Math.floor(e/1e3),i=(e-t*1e3)*1e6,n=Math.floor(i/1e9);return{sec:t+n,nsec:i-n*1e9}}function Ft(s){if(s instanceof Date){let e=Ot(s);return Nt(e)}else return null}function Ht(s){let e=new DataView(s.buffer,s.byteOffset,s.byteLength);switch(s.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),i=e.getUint32(4),n=(t&3)*4294967296+i,r=t>>>2;return{sec:n,nsec:r}}case 12:{let t=ce(e,4),i=e.getUint32(0);return{sec:t,nsec:i}}default:throw new p(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${s.length}`)}}function zt(s){let e=Ht(s);return new Date(e.sec*1e3+e.nsec/1e6)}var tt={type:Lt,encode:Ft,decode:zt};var x=class{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(tt)}register({type:e,encode:t,decode:i}){if(e>=0)this.encoders[e]=t,this.decoders[e]=i;else{let n=-1-e;this.builtInEncoders[n]=t,this.builtInDecoders[n]=i}}tryToEncode(e,t){for(let i=0;i<this.builtInEncoders.length;i++){let n=this.builtInEncoders[i];if(n!=null){let r=n(e,t);if(r!=null){let o=-1-i;return new T(o,r)}}}for(let i=0;i<this.encoders.length;i++){let n=this.encoders[i];if(n!=null){let r=n(e,t);if(r!=null){let o=i;return new T(o,r)}}}return e instanceof T?e:null}decode(e,t,i){let n=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return n?n(e,t,i):new T(t,e)}};x.defaultCodec=new x;function Wt(s){return s instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&s instanceof SharedArrayBuffer}function V(s){return s instanceof Uint8Array?s:ArrayBuffer.isView(s)?new Uint8Array(s.buffer,s.byteOffset,s.byteLength):Wt(s)?new Uint8Array(s):Uint8Array.from(s)}var Kt=100,Gt=2048,le=class s{constructor(e){this.entered=!1,this.extensionCodec=e?.extensionCodec??x.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??Kt,this.initialBufferSize=e?.initialBufferSize??Gt,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 s({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),i=new Uint8Array(t),n=new DataView(t);i.set(this.bytes),this.view=n,this.bytes=i}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 i=Je(e);this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),Ye(e,this.bytes,this.pos),this.pos+=i}encodeObject(e,t){let i=this.extensionCodec.tryToEncode(e,this.context);if(i!=null)this.encodeExtension(i);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 i=V(e);this.writeU8a(i)}encodeArray(e,t){let i=e.length;if(i<16)this.writeU8(144+i);else if(i<65536)this.writeU8(220),this.writeU16(i);else if(i<4294967296)this.writeU8(221),this.writeU32(i);else throw new Error(`Too large array: ${i}`);for(let n of e)this.doEncode(n,t+1)}countWithoutUndefined(e,t){let i=0;for(let n of t)e[n]!==void 0&&i++;return i}encodeMap(e,t){let i=Object.keys(e);this.sortKeys&&i.sort();let n=this.ignoreUndefined?this.countWithoutUndefined(e,i):i.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 r of i){let o=e[r];this.ignoreUndefined&&o===void 0||(this.encodeString(r),this.doEncode(o,t+1))}}encodeExtension(e){if(typeof e.data=="function"){let i=e.data(this.pos+6),n=i.length;if(n>=4294967296)throw new Error(`Too large extension object: ${n}`);this.writeU8(201),this.writeU32(n),this.writeI8(e.type),this.writeU8a(i);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),je(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),ae(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 _e(s,e){return new le(e).encodeSharedRef(s)}function ue(s){return`${s<0?"-":""}0x${Math.abs(s).toString(16).padStart(2,"0")}`}var $t=16,qt=16,he=class{constructor(e=$t,t=qt){this.hit=0,this.miss=0,this.maxKeyLength=e,this.maxLengthPerKey=t,this.caches=[];for(let i=0;i<this.maxKeyLength;i++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,i){let n=this.caches[i-1];e:for(let r of n){let o=r.bytes;for(let a=0;a<i;a++)if(o[a]!==e[t+a])continue e;return r.str}return null}store(e,t){let i=this.caches[e.length-1],n={bytes:e,str:t};i.length>=this.maxLengthPerKey?i[Math.random()*i.length|0]=n:i.push(n)}decode(e,t,i){let n=this.find(e,t,i);if(n!=null)return this.hit++,n;this.miss++;let r=Ce(e,t,i),o=Uint8Array.prototype.slice.call(e,t,t+i);return this.store(o,r),r}};var Ie="array",Y="map_key",nt="map_value",Qt=s=>{if(typeof s=="string"||typeof s=="number")return s;throw new p("The type of key must be string or number but "+typeof s)},Ae=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=Ie,t.position=0,t.size=e,t.array=new Array(e)}pushMapState(e){let t=this.getUninitializedStateFromPool();t.type=Y,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===Ie){let i=e;i.size=0,i.array=void 0,i.position=0,i.type=void 0}if(e.type===Y||e.type===nt){let i=e;i.size=0,i.map=void 0,i.readCount=0,i.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}},J=-1,De=new DataView(new ArrayBuffer(0)),Vt=new Uint8Array(De.buffer);try{De.getInt8(0)}catch(s){if(!(s 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 it=new RangeError("Insufficient data"),Xt=new he,de=class s{constructor(e){this.totalPos=0,this.pos=0,this.view=De,this.bytes=Vt,this.headByte=J,this.stack=new Ae,this.entered=!1,this.extensionCodec=e?.extensionCodec??x.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:Xt,this.mapKeyConverter=e?.mapKeyConverter??Qt}clone(){return new s({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=J,this.stack.reset()}setBuffer(e){let t=V(e);this.bytes=t,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength),this.pos=0}appendBuffer(e){if(this.headByte===J&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),i=V(e),n=new Uint8Array(t.length+i.length);n.set(t),n.set(i,t.length),this.setBuffer(n)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:i}=this;return new RangeError(`Extra ${t.byteLength-i} 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,i;for await(let a of e){if(t)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{i=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 i}let{headByte:n,pos:r,totalPos:o}=this;throw new RangeError(`Insufficient data in parsing ${ue(n)} at ${o} (${r} 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 i=t,n=-1;for await(let r of e){if(t&&n===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(r),i&&(n=this.readArraySize(),i=!1,this.complete());try{for(;yield this.doDecodeSync(),--n!==0;);}catch(o){if(!(o instanceof RangeError))throw o}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 p(`Unrecognized type byte: ${ue(e)}`);this.complete();let i=this.stack;for(;i.length>0;){let n=i.top();if(n.type===Ie)if(n.array[n.position]=t,n.position++,n.position===n.size)t=n.array,i.release(n);else continue e;else if(n.type===Y){if(t==="__proto__")throw new p("The key __proto__ is not allowed");n.key=this.mapKeyConverter(t),n.type=nt;continue e}else if(n.map[n.key]=t,n.readCount++,n.readCount===n.size)t=n.map,i.release(n);else{n.key=null,n.type=Y;continue e}}return t}}readHeadByte(){return this.headByte===J&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=J}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 p(`Unrecognized array type byte: ${ue(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new p(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new p(`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 p(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw it;let i=this.pos+t,n;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?n=this.keyDecoder.decode(this.bytes,i,e):n=Ze(this.bytes,i,e),this.pos+=t+e,n}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===Y:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new p(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw it;let i=this.pos+t,n=this.bytes.subarray(i,i+e);return this.pos+=t+e,n}decodeExtension(e,t){if(e>this.maxExtLength)throw new p(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let i=this.view.getInt8(this.pos+t),n=this.decodeBinary(e,t+1);return this.extensionCodec.decode(n,i,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=et(this.view,this.pos);return this.pos+=8,e}readI64(){let e=ce(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 Re(s,e){return new de(e).decode(s)}var mt=We(Pe(),1);var Ue=function(s,e){return Ue=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var n in i)i.hasOwnProperty(n)&&(t[n]=i[n])},Ue(s,e)};function ut(s,e){Ue(s,e);function t(){this.constructor=s}s.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function jt(s){var e=typeof Symbol=="function"&&s[Symbol.iterator],t=0;return e?e.call(s):{next:function(){return s&&t>=s.length&&(s=void 0),{value:s&&s[t++],done:!s}}}}function ei(s,e){var t=typeof Symbol=="function"&&s[Symbol.iterator];if(!t)return s;var i=t.call(s),n,r=[],o;try{for(;(e===void 0||e-- >0)&&!(n=i.next()).done;)r.push(n.value)}catch(a){o={error:a}}finally{try{n&&!n.done&&(t=i.return)&&t.call(i)}finally{if(o)throw o.error}}return r}function ti(){for(var s=[],e=0;e<arguments.length;e++)s=s.concat(ei(arguments[e]));return s}var ht=(function(){function s(e,t){this.target=t,this.type=e}return s})(),ii=(function(s){ut(e,s);function e(t,i){var n=s.call(this,"error",i)||this;return n.message=t.message,n.error=t,n}return e})(ht),ni=(function(s){ut(e,s);function e(t,i,n){t===void 0&&(t=1e3),i===void 0&&(i="");var r=s.call(this,"close",n)||this;return r.wasClean=!0,r.code=t,r.reason=i,r}return e})(ht);var si=function(){if(typeof WebSocket<"u")return WebSocket},ri=function(s){return typeof s<"u"&&!!s&&s.CLOSING===2},C={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},oi=(function(){function s(e,t,i){var n=this;i===void 0&&(i={}),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(r){n._debug("open event");var o=n._options.minUptime,a=o===void 0?C.minUptime:o;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(r),n._listeners.open.forEach(function(c){return n._callEventListener(r,c)})},this._handleMessage=function(r){n._debug("message event"),n.onmessage&&n.onmessage(r),n._listeners.message.forEach(function(o){return n._callEventListener(r,o)})},this._handleError=function(r){n._debug("error event",r.message),n._disconnect(void 0,r.message==="TIMEOUT"?"timeout":void 0),n.onerror&&n.onerror(r),n._debug("exec error listeners"),n._listeners.error.forEach(function(o){return n._callEventListener(r,o)}),n._connect()},this._handleClose=function(r){n._debug("close event"),n._clearTimeouts(),n._shouldReconnect&&n._connect(),n.onclose&&n.onclose(r),n._listeners.close.forEach(function(o){return n._callEventListener(r,o)})},this._url=e,this._protocols=t,this._options=i,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(s,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(s,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(s,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(s,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"CONNECTING",{get:function(){return s.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"OPEN",{get:function(){return s.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"CLOSING",{get:function(){return s.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"CLOSED",{get:function(){return s.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(s.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(s.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"bufferedAmount",{get:function(){var e=this._messageQueue.reduce(function(t,i){return typeof i=="string"?t+=i.length:i instanceof Blob?t+=i.size:t+=i.byteLength,t},0);return e+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?s.CLOSED:s.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),s.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)},s.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())},s.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,i=t===void 0?C.maxEnqueuedMessages:t;this._messageQueue.length<i&&(this._debug("enqueue",e),this._messageQueue.push(e))}},s.prototype.addEventListener=function(e,t){this._listeners[e]&&this._listeners[e].push(t)},s.prototype.dispatchEvent=function(e){var t,i,n=this._listeners[e.type];if(n)try{for(var r=jt(n),o=r.next();!o.done;o=r.next()){var a=o.value;this._callEventListener(e,a)}}catch(c){t={error:c}}finally{try{o&&!o.done&&(i=r.return)&&i.call(r)}finally{if(t)throw t.error}}return!0},s.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter(function(i){return i!==t}))},s.prototype._debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._options.debug&&console.log.apply(console,ti(["RWS>"],e))},s.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,i=t===void 0?C.reconnectionDelayGrowFactor:t,n=e.minReconnectionDelay,r=n===void 0?C.minReconnectionDelay:n,o=e.maxReconnectionDelay,a=o===void 0?C.maxReconnectionDelay:o,c=0;return this._retryCount>0&&(c=r*Math.pow(i,this._retryCount-1),c>a&&(c=a)),this._debug("next delay",c),c},s.prototype._wait=function(){var e=this;return new Promise(function(t){setTimeout(t,e._getNextDelay())})},s.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")},s.prototype._connect=function(){var e=this;if(!(this._connectLock||!this._shouldReconnect)){this._connectLock=!0;var t=this._options,i=t.maxRetries,n=i===void 0?C.maxRetries:i,r=t.connectionTimeout,o=r===void 0?C.connectionTimeout:r,a=t.WebSocket,c=a===void 0?si():a;if(this._retryCount>=n){this._debug("max retries reached",this._retryCount,">=",n);return}if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),!ri(c))throw Error("No valid WebSocket class provided");this._wait().then(function(){return e._getNextUrl(e._url)}).then(function(h){e._closeCalled||(e._debug("connect",{url:h,protocols:e._protocols}),e._ws=e._protocols?new c(h,e._protocols):new c(h),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout(function(){return e._handleTimeout()},o))})}},s.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new ii(Error("TIMEOUT"),this))},s.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 ni(e,t,this))}catch{}}},s.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},s.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},s.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))},s.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))},s.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},s})(),dt=oi;var pe=class extends Error{constructor(t,i){super(t);this.time=i}},Z=(s,e)=>{let t;return Promise.race([s,new Promise((i,n)=>t=setTimeout(n,e,new pe("Timeout before promise can resolve",e)))]).finally(()=>clearTimeout(t))};var P=null;typeof WebSocket<"u"?P=WebSocket:typeof MozWebSocket<"u"?P=MozWebSocket:typeof global<"u"?P=global.WebSocket||global.MozWebSocket:typeof window<"u"?P=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(P=self.WebSocket||self.MozWebSocket);var pt=P;var me=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 _=class extends Error{constructor(t,i){super(t);this.data=i;this.name="InvalidMessageError"}},U=class extends Error{constructor(e){super(e),this.name="InvalidConfigurationError"}},I,ft,Le,L=class{constructor(e,t,i={}){this.eventEmitter=t;this.options=i;N(this,I);this.clientId="";this.closed=!1;this.disposables=new me;this.connectPromise=null;this.connectionStats={connectTime:0,reconnectCount:0,lastPingTime:0,lastPongTime:0,avgResponseTime:0,totalMessages:0,totalErrors:0,connectionStartTime:0};this.messageQueue=[];this.MAX_QUEUE_SIZE=100;this.QUEUE_TIMEOUT=3e4;this.rateLimiter={requests:[],maxRequests:50,windowMs:1e3};this.validateConfiguration(i),this.url=new URL(e),this.url.searchParams.set("sdk_version","0.0.1"),this.PING_INTERVAL=i.pingInterval??3e4,this.connectionStats.connectionStartTime=Date.now();let n=i.startClosed!==!1;this.rws=new dt(this.url.toString(),[],{WebSocket:globalThis.WebSocket??pt,connectionTimeout:i.connectionTimeout??1e3,maxReconnectionDelay:2e3,minReconnectionDelay:200,maxEnqueuedMessages:0,maxRetries:i.maxRetries??50,startClosed:n}),this.log("debug","Transport initialized",{url:this.url.toString(),options:i}),this.registerWatchers(),this.setupConnectionHealthMonitoring(),this.startPeriodicMaintenance()}validateConfiguration(e){if(e.pingInterval!==void 0&&(e.pingInterval<1e3||e.pingInterval>3e5))throw new U("pingInterval must be between 1000ms and 300000ms");if(e.connectionTimeout!==void 0&&(e.connectionTimeout<100||e.connectionTimeout>3e4))throw new U("connectionTimeout must be between 100ms and 30000ms");if(e.maxRetries!==void 0&&(e.maxRetries<0||e.maxRetries>100))throw new U("maxRetries must be between 0 and 100")}log(e,t,i){if(this.options.debug){let n=new Date().toISOString(),r=i?JSON.stringify(i,null,2):"";console[e](`[Transport ${n}] ${t}${r?`
|
|
2
|
-
`+r:""}`)}}id(){return this.clientId}async registerWatchers(){let e=t=>{if(!(t.data instanceof Blob))throw new Error("Unexpected message type: "+typeof t.data);t.data.arrayBuffer().then(i=>{this.handleRawMessage(Re(i))})};this.rws.addEventListener("message",e),this.disposables.add("message",{dispose:()=>{this.rws.removeEventListener("message",e)}})}async handleRawMessage(e){if(typeof e!="object"||e===null){this.log("debug","Received invalid message format",{ev:e});return}try{let{data:t,event:i,as:n}=e;if(!i||typeof i!="string")throw new _("Message missing event field",e);if(this.log("debug","Processing message",{event:i,hasData:!!t}),i==="App.Actions.GetClientId"){this.clientId=t.id,this.log("info","Client ID received",{clientId:this.clientId});return}if(i==="Events.BootError"){this.log("error","Boot error received",{data:t});return}if(i==="response"){let{responseEvent:r,data:o}=t;if(!r)throw new _("Response message missing responseEvent",e);this.log("debug","Response message received",{responseEvent:r}),await this.handleMessage(r,o);return}if(i==="error"){let{errorEvent:r,data:o}=t;if(!r)throw new _("Error message missing errorEvent",e);this.log("debug","Error message received",{errorEvent:r,errorData:o}),await this.handleMessage(r,o);return}await this.handleMessage(i,t,n)}catch(t){this.connectionStats.totalErrors++,t instanceof _?this.log("error","Invalid message format",{error:t.message,data:t.data,totalErrors:this.connectionStats.totalErrors}):this.log("error","Failed to parse message",{ev:e,error:t instanceof Error?t.message:String(t),totalErrors:this.connectionStats.totalErrors}),this.eventEmitter.emit("transport.error",{type:"message_parse_error",error:t,rawMessage:e,timestamp:Date.now()})}}async handleMessage(e,t,i){if(e==="App.Actions.GetClientId"){this.clientId=t.id,this.eventEmitter.emit(e,t.id);return}e&&this.eventEmitter.emit(i||e,t)}listen(e,t,i){return this.eventEmitter.listen(e,t)}removeListener(e,t){this.eventEmitter.removeListener(e,t)}listenOnce(e,t,i){this.eventEmitter.once(e,t,i)}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}get status(){return{0:"CONNECTING",1:"OPEN",2:"CLOSING",3:"CLOSED"}[this.rws.readyState]}async call(e,t={},i={}){if(this.isRateLimited())throw new k("Rate limit exceeded - too many requests");this.clearOldQueuedMessages();let n=i.responseEvent||`${e}_${y()}_response`,r=`${n}_error`,o,a=()=>{o&&(this.rws.removeEventListener("close",o),this.rws.removeEventListener("error",o)),this.eventEmitter.removeListener(n),this.eventEmitter.removeListener(r)},c=async(u,l)=>{let f=new DOMException("Request aborted","AbortError");if(i.abortSignal?.aborted&&l(f),i.abortSignal&&i.abortSignal.addEventListener("abort",()=>{l(f)}),!this.isConnected&&!this.isClosed){if(this.log("debug","Connection not available, queuing message",{action:e}),this.messageQueue.length>=this.MAX_QUEUE_SIZE){let d=this.messageQueue.shift();d&&d.reject(new Error("Message queue full, oldest message dropped"))}this.messageQueue.push({action:e,data:t,options:i,resolve:u,reject:l,timestamp:Date.now()});return}let M=Date.now();this.listenOnce(n,d=>{let m=Date.now()-M;this.connectionStats.avgResponseTime=(this.connectionStats.avgResponseTime+m)/2,this.connectionStats.totalMessages++,this.log("debug","Message response received",{action:e,responseTime:m,avgResponseTime:this.connectionStats.avgResponseTime}),u(d)}),this.listenOnce(r,d=>{this.connectionStats.totalErrors++,this.log("error","Message error received",{action:e,error:d}),l(new b(d.code,d.message,d))}),o=d=>{if(d.code===1008&&(d.reason||"").includes("rate limit")){l(new k(d.reason||"Rate limit exceeded",d));return}l(new Error(`Connection lost to the notebook during request: ${d.reason||"Unknown reason"}`))},this.rws.addEventListener("close",o),this.rws.addEventListener("error",o);try{this.rws.send(this.pack({action:e,data:t,errorEvent:r,responseEvent:n})),this.log("debug","Message sent",{action:e,data:t})}catch(d){throw this.log("error","Failed to send message",{action:e,error:d}),d}},h=async()=>{await R(this,I,ft).call(this);let u=new Promise(c).finally(a);return i.timeout?Z(u,i.timeout).finally(a):u};return this.sendWithRetry(async()=>await h(),i.retries||10)}pack(e){return new Blob([_e(e)])}sendWithRetry(e,t=10){return(0,mt.default)(async(i,n)=>{try{return await e()}catch(r){if(r instanceof b||r instanceof k||r instanceof U||r instanceof _||r instanceof DOMException){this.log("debug","Non-retryable error, bailing",{error:r.message,attempt:n}),i(r);return}throw this.log("debug","Retrying send operation",{attempt:n,error:r instanceof Error?r.message:String(r),nextDelay:this.getBackoffDelay(n-1)}),r}},{retries:t,onRetry:(i,n)=>{this.log("warn","Send operation retry",{attempt:n,maxRetries:t,error:i instanceof Error?i.message:String(i)})},minTimeout:1e3,factor:2,maxTimeout:3e4,randomize:!0})}invoke(e,t={},i={}){return i.responseEvent||(i.responseEvent=`${e}_${y()}`),this.call("invoke",{action:e,data:t},i)}disconnect(){if(this.closed){console.trace("Transport is already closed, cannot disconnect again");return}this.close()}close(e,t){if(this.closed)return;this.log("info","Closing transport connection",{code:e,reason:t}),this.connectPromise=null;let i=this.messageQueue.length;this.messageQueue.forEach(n=>{console.log("Rejecting queued message due to connection close"),n.reject(new Error("Connection closed while message was queued"))}),this.messageQueue=[],i>0&&this.log("debug",`Rejected ${i} queued messages due to connection close`),this.rateLimiter.requests=[],this.disposables.dispose();try{this.rws.close(e,t)}catch(n){this.log("error","Error closing WebSocket",{error:n instanceof Error?n.message:String(n)})}this.eventEmitter.emit("transport.closed",{code:e,reason:t,metrics:this.getConnectionMetrics(),timestamp:Date.now()}),this.eventEmitter.removeListener("*"),this.closed=!0,this.log("info","Transport connection closed successfully")}onDidConnect(e){this.rws.addEventListener("open",e),this.disposables.add("connect",{dispose:()=>{this.rws.removeEventListener("open",e)}})}onDidClose(e){this.rws.addEventListener("close",e),this.disposables.add("close",{dispose:()=>{this.rws.removeEventListener("close",e)}})}setupConnectionHealthMonitoring(){this.rws.addEventListener("open",()=>{this.connectionStats.connectTime=Date.now(),this.connectionStats.reconnectCount++,this.log("info","Connection established",{reconnectCount:this.connectionStats.reconnectCount,timeSinceStart:Date.now()-this.connectionStats.connectionStartTime}),this.processMessageQueue()}),this.rws.addEventListener("close",e=>{this.log("warn","Connection closed",{code:e.code,reason:e.reason,wasClean:e.wasClean}),this.handleConnectionClose(e.code)}),this.rws.addEventListener("error",e=>{this.connectionStats.totalErrors++,this.log("error","Connection error",{error:e,totalErrors:this.connectionStats.totalErrors})})}handleConnectionClose(e){switch(e){case 1e3:return this.log("info","Normal connection closure"),"stop";case 1001:return this.log("info","Connection going away, will reconnect"),"reconnect";case 1006:return this.log("warn","Abnormal connection closure, will retry"),"retry";case 1008:return this.log("error","Connection closed due to policy violation"),this.clearOldQueuedMessages(),"stop";default:return this.log("warn",`Unknown close code: ${e}, will reconnect`),"reconnect"}}processMessageQueue(){if(this.messageQueue.length===0)return;this.log("debug",`Processing ${this.messageQueue.length} queued messages`);let e=[...this.messageQueue];this.messageQueue=[];for(let t of e){if(Date.now()-t.timestamp>this.QUEUE_TIMEOUT){t.reject(new Error("Queued message timed out"));continue}this.call(t.action,t.data,t.options).then(t.resolve).catch(t.reject)}}clearOldQueuedMessages(){let e=Date.now(),t=this.messageQueue.length;this.messageQueue=this.messageQueue.filter(i=>{let n=e-i.timestamp>this.QUEUE_TIMEOUT;return n&&i.reject(new Error("Queued message expired")),!n}),t!==this.messageQueue.length&&this.log("debug",`Cleared ${t-this.messageQueue.length} expired messages`)}isRateLimited(){let e=Date.now();return this.rateLimiter.requests=this.rateLimiter.requests.filter(t=>e-t<this.rateLimiter.windowMs),this.rateLimiter.requests.length>=this.rateLimiter.maxRequests?!0:(this.rateLimiter.requests.push(e),!1)}getBackoffDelay(e){return Math.min(1e3*Math.pow(2,e),3e4)+Math.random()*1e3}getConnectionMetrics(){let e=Date.now(),t=this.connectionStats.connectTime>0?e-this.connectionStats.connectTime:0;return{status:this.status,clientId:this.clientId,isConnected:this.isConnected,isConnecting:this.isConnecting,connectionStats:{...this.connectionStats,connectionDuration:t,uptime:e-this.connectionStats.connectionStartTime,messagesPerSecond:t>0?(this.connectionStats.totalMessages/(t/1e3)).toFixed(2):"0",errorRate:this.connectionStats.totalMessages>0?(this.connectionStats.totalErrors/this.connectionStats.totalMessages*100).toFixed(2)+"%":"0%",timeSinceLastPing:this.connectionStats.lastPingTime>0?e-this.connectionStats.lastPingTime:0,timeSinceLastPong:this.connectionStats.lastPongTime>0?e-this.connectionStats.lastPongTime:0},messageQueue:{length:this.messageQueue.length,maxSize:this.MAX_QUEUE_SIZE,oldestMessageAge:this.messageQueue.length>0?e-Math.min(...this.messageQueue.map(i=>i.timestamp)):0},rateLimiter:{currentRequests:this.rateLimiter.requests.length,maxRequests:this.rateLimiter.maxRequests,windowMs:this.rateLimiter.windowMs,isLimited:this.isRateLimited()},config:{pingInterval:this.PING_INTERVAL,queueTimeout:this.QUEUE_TIMEOUT,url:this.url.toString()}}}getHealthStatus(){let t=this.getConnectionMetrics().connectionStats;return!this.isConnected||t.timeSinceLastPong>this.PING_INTERVAL*2||Number.parseFloat(t.errorRate)>50?"unhealthy":t.avgResponseTime>5e3||Number.parseFloat(t.errorRate)>10||t.timeSinceLastPong>this.PING_INTERVAL*1.5?"degraded":"healthy"}resetStats(){this.connectionStats={connectTime:Date.now(),reconnectCount:0,lastPingTime:0,lastPongTime:0,avgResponseTime:0,totalMessages:0,totalErrors:0,connectionStartTime:Date.now()},this.log("debug","Connection statistics reset")}async runDiagnostics(){let e=this.getConnectionMetrics(),t=this.getHealthStatus(),i=[],n=[];return this.isConnected||(i.push("Connection is not established"),n.push("Check network connectivity and server availability")),e.connectionStats.timeSinceLastPong>this.PING_INTERVAL*2&&(i.push("No pong received recently - connection may be stale"),n.push("Consider forcing a reconnection")),Number.parseFloat(e.connectionStats.errorRate)>10&&(i.push(`High error rate: ${e.connectionStats.errorRate}`),n.push("Check server logs and network stability")),e.messageQueue.length>this.MAX_QUEUE_SIZE*.8&&(i.push("Message queue is nearly full"),n.push("Check connection stability and consider reducing message frequency")),e.connectionStats.avgResponseTime>5e3&&(i.push("High average response time"),n.push("Check network latency and server performance")),e.rateLimiter.isLimited&&(i.push("Rate limiting is active"),n.push("Reduce request frequency or increase rate limit")),this.log("info","Connection diagnostics completed",{status:t,issueCount:i.length,recommendationCount:n.length}),{status:t,metrics:e,issues:i,recommendations:n}}startPeriodicMaintenance(){this.disposables.add("maintenance",()=>{let e=setInterval(()=>{this.clearOldQueuedMessages();let t=Date.now();if(this.rateLimiter.requests=this.rateLimiter.requests.filter(i=>t-i<this.rateLimiter.windowMs),this.options.debug){let i=this.getHealthStatus(),n=this.getConnectionMetrics();this.log("debug","Periodic health check",{health:i,messageCount:n.connectionStats.totalMessages,errorCount:n.connectionStats.totalErrors,queueLength:n.messageQueue.length})}},3e5);return{dispose:()=>{clearInterval(e)}}})}};I=new WeakSet,ft=function(){return this.isConnected?Promise.resolve():this.connectPromise?this.connectPromise:(this.connectPromise=new Promise((e,t)=>{if(this.isConnected){e(),R(this,I,Le).call(this);return}this.rws.readyState===3&&this.rws.reconnect();let i,n=()=>{this.rws.removeEventListener("open",n),this.rws.removeEventListener("error",r),clearTimeout(i),this.connectPromise=null,e(),R(this,I,Le).call(this)},r=o=>{this.rws.removeEventListener("open",n),this.rws.removeEventListener("error",r),clearTimeout(i),this.connectPromise=null,t(new Error(`WebSocket connection failed: ${o}`))};i=setTimeout(()=>{this.rws.removeEventListener("open",n),this.rws.removeEventListener("error",r),this.connectPromise=null,t(new Error("WebSocket connection timeout"))},1e4),this.rws.addEventListener("open",n),this.rws.addEventListener("error",r)}),this.connectPromise)},Le=function(){this.disposables.add("pingInterval",()=>{let e=setInterval(async()=>{try{this.connectionStats.lastPingTime=Date.now(),this.log("debug","Sending periodic ping");let t=Date.now();await this.invoke("ping"),this.connectionStats.lastPongTime=Date.now();let i=this.connectionStats.lastPongTime-t;this.log("debug","Ping successful",{pingTime:i})}catch(t){this.log("error","Ping failed",{error:t instanceof Error?t.message:String(t)}),Date.now()-this.connectionStats.lastPongTime>this.PING_INTERVAL*3&&(this.log("warn","Connection appears dead, forcing reconnection"),this.rws.reconnect())}},this.PING_INTERVAL);return{dispose:()=>{clearInterval(e)}}})};function gt(s){return{all:s=s||new Map,on:function(e,t){var i=s.get(e);i?i.push(t):s.set(e,[t])},off:function(e,t){var i=s.get(e);i&&(t?i.splice(i.indexOf(t)>>>0,1):s.set(e,[]))},emit:function(e,t){var i=s.get(e);i&&i.slice().map(function(n){n(t)}),(i=s.get("*"))&&i.slice().map(function(n){n(e,t)})}}}function Be(s){let e=gt(s);return e.once=(t,i)=>{e.on(t,i),e.on(t,e.off.bind(e,t,i))},e}var w=Be(),A=class s{listen(e,t){let i=()=>{this.removeListener(e,t)};return w.on(e,t),{dispose:i}}emit(e,t){w.emit(e,t)}once(e,t){w.once(e,t)}static make(){return s.instance||(s.instance=new s)}static refresh(){return w.all.clear(),w=Be(),s.instance=new s}removeListener(e,t){w.off(e,t)}static createInstance(){return w=Be(),s.instance=new s,s.instance}inspect(){return w.all}};var j=class{constructor(e){this.okra=e}checkpoint(e,t,i="main"){return this.okra.invoke("git.checkpoint",{author:e,message:t,branch:i})}sync(e,t,i="main",n,r="both",o=!1){return this.okra.invoke("git.sync",{url:e,author:t,ref:i,token:n,direction:r,force:o})}log(e="main"){return this.okra.invoke("git.log",{ref:e})}restore(e){return this.okra.invoke("git.restore",{ref:e})}};var Me=We(Pe(),1);var B=class{constructor(e,t,i){this.onEvent=e;this.onceEvent=t;this.beacon=i;this.urlHistory=[];this.currentIndex=0;this._canGoBack=!1;this._canGoForward=!1;this.beacon=i,this.setupUrlChangeListener(),this.urlHistory.push(i.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 D=class extends Error{constructor(t,i){super(t);this.code=i;this.name="BeaconError"}},ee=class extends D{constructor(e,t){super(`Beacon operation '${e}' timed out after ${t}ms`),this.code="TIMEOUT"}},v=class extends D{constructor(e){super(`Beacon connection error: ${e}`),this.code="CONNECTION_ERROR"}},fe=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 i={retries:3,minTimeout:1e3,maxTimeout:5e3,factor:2,randomize:!0};this.options={timeout:1e4,targetOrigin:"*",debug:!1,retry:{...i,...t.retry},...t},this.eventEmitter=A.make(),this.setupMessageChannel(),this.navigator=new B(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 i=t.data;if(!i||typeof i!="object"||!i.type)return;i.type==="beacon:ready-for-channel"&&this.establishChannel().catch(n=>{this.options.debug&&console.error("[Beacon SDK] Channel establishment failed:",n)}),i.type==="beacon:channel-established"&&(this.channelEstablished=!0,this.isBeaconReady=!0,this.emit("ready",i.payload),this.options.debug&&console.log("[Beacon SDK] Channel established and beacon ready"))}catch(i){this.options.debug&&console.error("[Beacon SDK] Message parsing error:",i)}};window.addEventListener("message",e),this.disposables.push({dispose:()=>window.removeEventListener("message",e)})}async establishChannel(){if(!this.iframe.contentWindow)throw new v("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,i)=>{let n=setTimeout(()=>{i(new v("Channel establishment timeout"))},this.options.timeout),r=()=>{this.channelEstablished&&this.isBeaconReady?(clearTimeout(n),t()):setTimeout(r,100)};r()})}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 i=this.messageHandlers.get(e.type);i&&i.forEach(n=>{try{n(e.payload)}catch(r){this.options.debug&&console.error("[Beacon SDK] Message handler error:",r)}})}waitForBeaconReady(){return(0,Me.default)(async()=>new Promise((e,t)=>{if(this.isBeaconReady&&this.channelEstablished){e();return}let i=this.options.timeout,n=setTimeout(()=>{t(new ee("beacon ready",i))},i),r=this.on("ready",()=>{clearTimeout(n),r.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 i=e instanceof Error?e.message:String(e);console.warn(`[Beacon SDK] Beacon ready retry attempt ${t}:`,i)}this.isBeaconReady=!1,this.channelEstablished=!1}})}sendMessage(e,t={}){if(!this.port)throw new v("MessagePort not available - channel not established");let i={type:`beacon:${e}`,payload:t,timestamp:Date.now(),source:"parent",id:this.generateId()};try{this.port.postMessage(i),this.options.debug&&console.log("[Beacon SDK] Sent message via port:",i.type,i.payload)}catch(n){throw new v(`Failed to send message via port: ${n instanceof Error?n.message:String(n)}`)}}async sendAndWaitFor(e,t,i={},n){return await this.ready(),(0,Me.default)(async r=>new Promise((o,a)=>{let c=n||this.options.timeout,h=setTimeout(()=>{u.dispose();let l=new ee(e,c);a(l)},c),u=this.eventEmitter.listen(t,l=>{clearTimeout(h),u.dispose(),o(l)});try{this.sendMessage(e,i)}catch(l){clearTimeout(h),u.dispose(),l instanceof v?a(l):r(l)}}),{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:(r,o)=>{if(this.options.debug){let a=r instanceof Error?r.message:String(r);console.warn(`[Beacon SDK] Retry attempt ${o} 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 D("Beacon has not been started. Call start() first.");if(!this.readyPromise)throw new D("Beacon ready promise is not available");return Z(this.readyPromise,this.options.timeout)}get isReady(){return this.isBeaconReady}on(e,t){return this.eventEmitter.listen(e,t)}once(e,t){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 debug(e,t){let i=new URL(e.path,this.iframe.src||window.location.origin).href;this.iframe.src!==i&&(this.navigator.visit(i),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 v("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 v(`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 Ne(s,e){return new fe(s,e)}function ai(){try{return bt(),!0}catch{return!1}}var ge=class extends Error{constructor(t){super(t);this.message=t}},be=class extends Error{constructor(t,i){super(`PHPSandbox API Error: ${t.status} ${t.statusText} - ${i}`);this.response=t;this.body=i;this.status=t.status}},ve=class{constructor(e){this.client=e}async create(e,t={},i=!0){let n=await this.client.post("/notebook",{template:e,...t}),r=new E(n.data,this.client);return i?this.init(r):r}async get(e){let t=await this.client.get(`/notebook/${e}`);return new E(t.data,this.client)}async fork(e){let t=await this.client.post(`/notebook/${e}/fork`);return this.init(new E(t.data,this.client))}async open(e){let t=await this.client.get(`/notebook/${e}`);return new E(t.data,this.client)}openFromData(e){return this.init(new E(e,this.client))}async init(e){return await e.ready(),e}},ye=class{constructor(e,t="https://api.phpsandbox.io/v1",i={}){this.fetch=globalThis.fetch;this.notebook=new ve(this),this.options=Object.assign({startClosed:!0},i),this.baseUrl=t,i.fetch&&(this.fetch=i.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?JSON.stringify(t):void 0})}async makeRequest(e,t,i){let n=await this.fetch(new Request(new URL(`v1/${t.replace(/^\//,"")}`,this.baseUrl),{method:e,...i,headers:this.headers}));if(!n.ok)throw new be(n,await n.text());return{data:await n.json()}}},Oe=class extends ye{},te,xe,vt,Fe=class Fe{constructor(e,t){this.data=e;this.client=t;N(this,xe);this.initialized=!1;N(this,te);this.disposables=[];this.emitter=A.createInstance(),this.socket=new L(e.okraUrl,this.emitter,{debug:t.options.debug,startClosed:t.options.startClosed}),this.watchConnection(),Ge(this,te,R(this,xe,vt).call(this)),this.file=new O(this),this.terminal=new F(this),this.auth=new z(this),this.lsp=new W(this),this.composer=new K(this),this.log=new G(this),this.repl=new q(this),this.container=new H(this),this.laravel=new $(this),this.shell=new Q(this),this.git=new j(this)}async ready(){return(async()=>(this.client.options.startClosed&&!this.socket.isConnected&&await this.socket.invoke("ping"),Ke(this,te)))()}fork(){return this.client.notebook.fork(this.data.id)}stop(){return this.container.stop()}restart(){return this.container.start()}invoke(e,t={},i={}){return this.socket.invoke(e,t||{},i)}ping(){return this.invoke("ping")}listen(e,t){return this.emitter.listen(e,t)}dispose(){this.disposables.forEach(e=>e.dispose()),!this.socket.isClosed&&this.socket.disconnect()}connected(){return this.socket.isConnected?Promise.resolve(this):new Promise((e,t)=>{try{this.socket.onDidConnect(()=>e(this)),this.socket.onDidClose(()=>t(new Error("Connection closed")))}catch(i){t(i)}})}whenConnected(){return this.socket.isConnected?Promise.resolve(this):new Promise((e,t)=>{try{this.socket.onDidConnect(()=>e(this))}catch(i){t(i)}})}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})}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}update(){return this.invoke("notebook.update")}onDidInitialize(e){let t=this.listen("notebook.initialized",e);return this.disposables.push(t),t}reconnect(){return this.dispose(),new Fe(this.data,this.client)}async beacon(e,t){let i=await this.ready();return e.src=i.data.previewUrl,Ne(e,t)}};te=new WeakMap,xe=new WeakSet,vt=function(){return new Promise((e,t)=>{this.onDidInitialize(i=>{this.initialized=i,i.type==="error"&&t(new ge(i.message)),e(i)})})};var E=Fe;return St(ci);})();
|
|
1
|
+
var PHPSandbox=(()=>{var vt=Object.create;var ne=Object.defineProperty;var yt=Object.getOwnPropertyDescriptor;var xt=Object.getOwnPropertyNames;var wt=Object.getPrototypeOf,Et=Object.prototype.hasOwnProperty;var We=s=>{throw TypeError(s)};var se=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),kt=(s,e)=>{for(var t in e)ne(s,t,{get:e[t],enumerable:!0})},Ke=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of xt(e))!Et.call(s,n)&&n!==t&&ne(s,n,{get:()=>e[n],enumerable:!(i=yt(e,n))||i.enumerable});return s};var Ge=(s,e,t)=>(t=s!=null?vt(wt(s)):{},Ke(e||!s||!s.__esModule?ne(t,"default",{value:s,enumerable:!0}):t,s)),Tt=s=>Ke(ne({},"__esModule",{value:!0}),s);var Ee=(s,e,t)=>e.has(s)||We("Cannot "+t);var ke=(s,e,t)=>(Ee(s,e,"read from private field"),t?t.call(s):e.get(s)),O=(s,e,t)=>e.has(s)?We("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),Te=(s,e,t,i)=>(Ee(s,e,"write to private field"),i?i.call(s,t):e.set(s,t),t),k=(s,e,t)=>(Ee(s,e,"access private method"),t);var rt=se((cn,st)=>{function g(s,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(s)),this._timeouts=s,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}st.exports=g;g.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};g.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};g.prototype.retry=function(s){if(this._timeout&&clearTimeout(this._timeout),!s)return!1;var e=new Date().getTime();if(s&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(s),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(s);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),t=this._cachedTimeouts.slice(-1);else return!1;var i=this;return this._timer=setTimeout(function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout(function(){i._operationTimeoutCb(i._attempts)},i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)},t),this._options.unref&&this._timer.unref(),!0};g.prototype.attempt=function(s,e){this._fn=s,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};g.prototype.try=function(s){console.log("Using RetryOperation.try() is deprecated"),this.attempt(s)};g.prototype.start=function(s){console.log("Using RetryOperation.start() is deprecated"),this.attempt(s)};g.prototype.start=g.prototype.try;g.prototype.errors=function(){return this._errors};g.prototype.attempts=function(){return this._attempts};g.prototype.mainError=function(){if(this._errors.length===0)return null;for(var s={},e=null,t=0,i=0;i<this._errors.length;i++){var n=this._errors[i],r=n.message,o=(s[r]||0)+1;s[r]=o,o>=t&&(e=n,t=o)}return e}});var ot=se(C=>{var Xt=rt();C.operation=function(s){var e=C.timeouts(s);return new Xt(e,{forever:s&&(s.forever||s.retries===1/0),unref:s&&s.unref,maxRetryTime:s&&s.maxRetryTime})};C.timeouts=function(s){if(s instanceof Array)return[].concat(s);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in s)e[t]=s[t];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var i=[],n=0;n<e.retries;n++)i.push(this.createTimeout(n,e));return s&&s.forever&&!i.length&&i.push(this.createTimeout(n,e)),i.sort(function(r,o){return r-o}),i};C.createTimeout=function(s,e){var t=e.randomize?Math.random()+1:1,i=Math.round(t*Math.max(e.minTimeout,1)*Math.pow(e.factor,s));return i=Math.min(i,e.maxTimeout),i};C.wrap=function(s,e,t){if(e instanceof Array&&(t=e,e=null),!t){t=[];for(var i in s)typeof s[i]=="function"&&t.push(i)}for(var n=0;n<t.length;n++){var r=t[n],o=s[r];s[r]=function(c){var h=C.operation(e),u=Array.prototype.slice.call(arguments,1),l=u.pop();u.push(function(f){h.retry(f)||(f&&(arguments[0]=h.mainError()),l.apply(this,arguments))}),h.attempt(function(){c.apply(s,u)})}.bind(s,o),s[r].options=e}}});var ct=se((un,at)=>{at.exports=ot()});var Le=se((hn,lt)=>{var Jt=ct();function Yt(s,e){function t(i,n){var r=e||{},o;"randomize"in r||(r.randomize=!0),o=Jt.operation(r);function a(u){n(u||new Error("Aborted"))}function c(u,l){if(u.bail){a(u);return}o.retry(u)?r.onRetry&&r.onRetry(u,l):n(o.mainError())}function h(u){var l;try{l=s(a,u)}catch(f){c(f,u);return}Promise.resolve(l).then(i).catch(function(N){c(N,u)})}o.attempt(h)}return new Promise(t)}lt.exports=Yt});var ai={};kt(ai,{ApiError:()=>ve,Beacon:()=>ge,BeaconConnectionError:()=>v,BeaconError:()=>R,BeaconTimeoutError:()=>te,Client:()=>xe,CommandError:()=>ae,ErrorEvent:()=>b,FileChangeType:()=>Qe,FileType:()=>qe,Filesystem:()=>F,FilesystemError:()=>re,FilesystemErrorType:()=>Ve,LspConnection:()=>oe,Navigator:()=>M,NotebookApi:()=>ye,NotebookInitError:()=>be,NotebookInstance:()=>E,NotebookState:()=>Xe,PHPSandbox:()=>He,PHPSandboxError:()=>Se,PromiseTimeoutError:()=>me,RateLimitError:()=>T,Transport:()=>B,createBeacon:()=>Fe,isBeaconSupported:()=>oi,timeout:()=>j});var b=class extends Error{constructor(t,i,n={}){super(i);this.code=t;this.message=i;this.raw=n}},T=class extends b{constructor(e,t={}){super(429,e,t)}},Se=class extends b{};var $e="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var y=(s=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(s|=0));for(;s--;)e+=$e[t[s]&63];return e};var qe=(n=>(n[n.Unknown=0]="Unknown",n[n.File=1]="File",n[n.Directory=2]="Directory",n[n.SymbolicLink=64]="SymbolicLink",n))(qe||{}),Qe=(i=>(i[i.UPDATED=1]="UPDATED",i[i.ADDED=2]="ADDED",i[i.DELETED=3]="DELETED",i))(Qe||{}),Ve=(o=>(o.Unavailable="Unavailable",o.NoPermissions="NoPermissions",o.FileExists="FileExists",o.FileNotFound="FileNotFound",o.FileIsADirectory="FileIsADirectory",o.FileNotADirectory="FileNotADirectory",o))(Ve||{}),re=class extends b{constructor(t,i){super(t.code,t.message);this.name=i}},Ce=class{constructor(e,t,i){this.path=e;this.okra=t;this.disposable=i}dispose(){this.okra.invoke("fs.unwatch",{path:this.path}),this.disposable.dispose()}},F=class{constructor(e){this.okra=e;this.watches=new Map;this.watchOkraConnection()}watchOkraConnection(){this.okra.onDidConnect(()=>{for(let{path:e,options:t,onDidChange:i}of this.watches.values())this.watch(e,t,i)})}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:Object.assign(t,{includes:[],excludes:["**/storage","**/vendor","**/node_modules","**/.git","**/.svn","**/.hg","**/CVS","**/.DS_Store","**/Thumbs.db","**/*.crswap"],useIgnoreFiles:!1,followSymlinks:!1,useGlobalIgnoreFiles:!1,useParentIgnoreFiles:!1})})}search(e,t,i){e.id||(e.id=y());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}},r=e.id,o=async c=>{c===!1&&a.dispose(),i&&await Promise.resolve(i(c))===!1&&a.dispose()},a=this.okra.listen(`fs.text.search.${r}`,o);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 i=await this.okra.invoke("fs.readFile",{path:e,lineRange:t});return i instanceof Uint8Array?i:typeof i=="string"?new TextEncoder().encode(i):i}catch(i){this.handleError(i)}}tail(e,t=10){return this.okra.invoke("fs.tail",{path:e,lines:t}).catch(i=>this.handleError(i))}writeFile(e,t,i){return this.okra.invoke("fs.writeFile",{path:e,contents:t,options:i}).catch(n=>this.handleError(n))}stat(e){return this.okra.invoke("fs.stat",{path:e}).catch(t=>this.handleError(t))}rename(e,t,i){return this.okra.invoke("fs.rename",{from:e,to:t,options:i}).catch(n=>this.handleError(n))}delete(e,t){return this.okra.invoke("fs.delete",{path:e,options:t}).catch(i=>this.handleError(i))}copy(e,t,i){return this.okra.invoke("fs.copy",{source:e,destination:t,options:i}).catch(n=>this.handleError(n))}readDirectory(e,t=[],i=[]){return this.okra.invoke("fs.readDirectory",{path:e,include:t,exclude:i}).catch(n=>this.handleError(n))}createDirectory(e){return this.okra.invoke("fs.createDirectory",{path:e}).catch(t=>this.handleError(t))}watch(e,t,i){let n=this.okra.listen(`fs.watch.${e}`,i),r={dispose:()=>{n.dispose(),this.okra.invoke("fs.unwatch",{path:e})}},o=new Ce(e,this.okra,r);return this.watches.set(e,{options:t,path:e,onDidChange:i}),this.okra.invoke("fs.watch",{path:e,options:t}),o}exists(e){return this.stat(e).then(()=>!0).catch(()=>!1)}async download(e,t,i){let n=y(),r=!!e,o=[];return this.okra.listen(`fs.download.${n}`,r?e:a=>{o.push(a)}),this.okra.invoke("fs.download",{id:n,exclude:t,include:i}).then(()=>new Blob(o,{type:"application/octet-stream"}))}tree(e="/"){return this.okra.invoke("fs.tree",{path:e})}handleError(e){throw e instanceof b&&"name"in e.raw?new re(e,e.raw.name):e}};var H=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){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){this.okra.listen(`terminal.output.${e}`,t)}input(e,t){return this.okra.invoke("terminal.input",{id:e,input:t})}listen(e,t){return this.okra.listen(e,t)}async spawn(e,t,i){let n=i?.id||y(),r=new Set,o=()=>{for(let m of r)m.dispose();r.clear()},a=new WritableStream({write:m=>{this.input(n,m)},close:o}),c=new ReadableStream({start:m=>{r.add(this.listen(`terminal.output.${n}`,we=>{m.enqueue(we.output)}))},cancel:o}),h=new Promise(m=>{r.add(this.listen(`terminal.close.${n}`,we=>{o(),m(we.exitCode)}))}),u=()=>(o(),this.okra.invoke("terminal.close",{id:n})),l=m=>{this.okra.invoke("terminal.resize",{id:n,width:m.cols,height:m.rows})},{abortSignal:f,...N}=i??{};f&&f.addEventListener("abort",u);let d=await this.okra.invoke("terminal.spawn",{command:[e,...t],opts:{id:n,...N}},{abortSignal:f});return{exit:h,input:a,output:c,kill:u,resize:l,...d}}};var Xe=(a=>(a.RUNNING="running",a.STOPPED="stopped",a.STARTING="starting",a.STOPPING="stopping",a.KILLED="killed",a.ERROR="error",a.PROVISIONING="provisioning",a))(Xe||{}),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",i=>{for(let n of i)t.some(r=>r.port===n.port)||e(n,"open");for(let n of t)i.some(r=>r.port===n.port)||e(n,"close");t=i})}};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 K=class{constructor(e){this.okra=e}message(e,t){return this.okra.invoke("lsp.message",{id:e,message:t})}listen(e,t,i){this.okra.listen(`${t}.${e}`,n=>i(n))}onClose(e,t){this.listen(e,"lsp.closed",i=>t(i.code,i.reason))}onError(e,t){this.listen(e,"lsp.error",i=>t(i.message))}onClientDisconnect(e){this.okra.onDidDisconnect(()=>e(1e3,"OKRA DISCONNECTED"))}onResponse(e,t){this.listen(e,"lsp.response",i=>t(JSON.stringify(i)))}close(e){return this.okra.invoke("lsp.close",{id:e})}start(e){return this.okra.invoke("lsp.start",{id:e})}connection(e){return oe.create(e,this)}whenSocketConnected(){return this.okra.whenConnected()}},oe=class s{constructor(e,t){this.id=e;this.lsp=t}send(e){return this.lsp.message(this.id,e)}onMessage(e){this.lsp.onResponse(this.id,e)}onError(e){this.lsp.onError(this.id,e)}onClose(e){this.lsp.onClose(this.id,e)}dispose(){this.lsp.close(this.id)}start(){this.lsp.start(this.id)}onClientDisconnect(e){this.lsp.onClientDisconnect(e)}whenSocketConnected(){return this.lsp.whenSocketConnected()}static create(e,t){return new s(e,t)}};var G=class{constructor(e){this.okra=e}invoke(e,t={},i={}){return this.okra.invoke("composer.invoke",{command:e,args:t,options:i})}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 $=class{constructor(e){this.okra=e}stream(e){return this.okra.listen("notebook.log",e)}listen(e,t){this.okra.listen(e,t)}};var q=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="",i={prependWith:"",appendWith:""}){return this.okra.invoke("repl.eval",{code:e,args:t,repl:i})}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){this.okra.listen(e,t)}onOutput(e){this.okra.listen("repl.output",e)}};var ae=class extends Error{constructor(t,i){super(t);this.output=t;this.exitCode=i}},_e=class{constructor(e,t){this.output=e;this.exitCode=t}throw(){if(this.exitCode!==0)throw new ae(this.output,this.exitCode);return this}},V=class{constructor(e){this.okra=e}async exec(e){let t=await this.okra.invoke("shell.exec",{command:e});return new _e(t.output,t.exitCode)}};function Je(s){let e=s.length,t=0,i=0;for(;i<e;){let n=s.charCodeAt(i++);if((n&4294967168)===0){t++;continue}else if((n&4294965248)===0)t+=2;else{if(n>=55296&&n<=56319&&i<e){let r=s.charCodeAt(i);(r&64512)===56320&&(++i,n=((n&1023)<<10)+(r&1023)+65536)}(n&4294901760)===0?t+=3:t+=4}}return t}function St(s,e,t){let i=s.length,n=t,r=0;for(;r<i;){let o=s.charCodeAt(r++);if((o&4294967168)===0){e[n++]=o;continue}else if((o&4294965248)===0)e[n++]=o>>6&31|192;else{if(o>=55296&&o<=56319&&r<i){let a=s.charCodeAt(r);(a&64512)===56320&&(++r,o=((o&1023)<<10)+(a&1023)+65536)}(o&4294901760)===0?(e[n++]=o>>12&15|224,e[n++]=o>>6&63|128):(e[n++]=o>>18&7|240,e[n++]=o>>12&63|128,e[n++]=o>>6&63|128)}e[n++]=o&63|128}}var Ct=new TextEncoder,_t=50;function It(s,e,t){Ct.encodeInto(s,e.subarray(t))}function Ye(s,e,t){s.length>_t?It(s,e,t):St(s,e,t)}var At=4096;function Ie(s,e,t){let i=e,n=i+t,r=[],o="";for(;i<n;){let a=s[i++];if((a&128)===0)r.push(a);else if((a&224)===192){let c=s[i++]&63;r.push((a&31)<<6|c)}else if((a&240)===224){let c=s[i++]&63,h=s[i++]&63;r.push((a&31)<<12|c<<6|h)}else if((a&248)===240){let c=s[i++]&63,h=s[i++]&63,u=s[i++]&63,l=(a&7)<<18|c<<12|h<<6|u;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(a);r.length>=At&&(o+=String.fromCharCode(...r),r.length=0)}return r.length>0&&(o+=String.fromCharCode(...r)),o}var Pt=new TextDecoder,Rt=200;function Dt(s,e,t){let i=s.subarray(e,e+t);return Pt.decode(i)}function Ze(s,e,t){return t>Rt?Dt(s,e,t):Ie(s,e,t)}var S=class{constructor(e,t){this.type=e,this.data=t}};var p=class s extends Error{constructor(e){super(e);let t=Object.create(s.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:s.name})}};function je(s,e,t){let i=t/4294967296,n=t;s.setUint32(e,i),s.setUint32(e+4,n)}function ce(s,e,t){let i=Math.floor(t/4294967296),n=t;s.setUint32(e,i),s.setUint32(e+4,n)}function le(s,e){let t=s.getInt32(e),i=s.getUint32(e+4);return t*4294967296+i}function et(s,e){let t=s.getUint32(e),i=s.getUint32(e+4);return t*4294967296+i}var Ut=-1,Lt=4294967296-1,Bt=17179869184-1;function Mt({sec:s,nsec:e}){if(s>=0&&e>=0&&s<=Bt)if(e===0&&s<=Lt){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,s),t}else{let t=s/4294967296,i=s&4294967295,n=new Uint8Array(8),r=new DataView(n.buffer);return r.setUint32(0,e<<2|t&3),r.setUint32(4,i),n}else{let t=new Uint8Array(12),i=new DataView(t.buffer);return i.setUint32(0,e),ce(i,4,s),t}}function Nt(s){let e=s.getTime(),t=Math.floor(e/1e3),i=(e-t*1e3)*1e6,n=Math.floor(i/1e9);return{sec:t+n,nsec:i-n*1e9}}function Ot(s){if(s instanceof Date){let e=Nt(s);return Mt(e)}else return null}function Ft(s){let e=new DataView(s.buffer,s.byteOffset,s.byteLength);switch(s.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),i=e.getUint32(4),n=(t&3)*4294967296+i,r=t>>>2;return{sec:n,nsec:r}}case 12:{let t=le(e,4),i=e.getUint32(0);return{sec:t,nsec:i}}default:throw new p(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${s.length}`)}}function Ht(s){let e=Ft(s);return new Date(e.sec*1e3+e.nsec/1e6)}var tt={type:Ut,encode:Ot,decode:Ht};var x=class{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(tt)}register({type:e,encode:t,decode:i}){if(e>=0)this.encoders[e]=t,this.decoders[e]=i;else{let n=-1-e;this.builtInEncoders[n]=t,this.builtInDecoders[n]=i}}tryToEncode(e,t){for(let i=0;i<this.builtInEncoders.length;i++){let n=this.builtInEncoders[i];if(n!=null){let r=n(e,t);if(r!=null){let o=-1-i;return new S(o,r)}}}for(let i=0;i<this.encoders.length;i++){let n=this.encoders[i];if(n!=null){let r=n(e,t);if(r!=null){let o=i;return new S(o,r)}}}return e instanceof S?e:null}decode(e,t,i){let n=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return n?n(e,t,i):new S(t,e)}};x.defaultCodec=new x;function zt(s){return s instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&s instanceof SharedArrayBuffer}function X(s){return s instanceof Uint8Array?s:ArrayBuffer.isView(s)?new Uint8Array(s.buffer,s.byteOffset,s.byteLength):zt(s)?new Uint8Array(s):Uint8Array.from(s)}var Wt=100,Kt=2048,ue=class s{constructor(e){this.entered=!1,this.extensionCodec=e?.extensionCodec??x.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??Wt,this.initialBufferSize=e?.initialBufferSize??Kt,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 s({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),i=new Uint8Array(t),n=new DataView(t);i.set(this.bytes),this.view=n,this.bytes=i}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 i=Je(e);this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),Ye(e,this.bytes,this.pos),this.pos+=i}encodeObject(e,t){let i=this.extensionCodec.tryToEncode(e,this.context);if(i!=null)this.encodeExtension(i);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 i=X(e);this.writeU8a(i)}encodeArray(e,t){let i=e.length;if(i<16)this.writeU8(144+i);else if(i<65536)this.writeU8(220),this.writeU16(i);else if(i<4294967296)this.writeU8(221),this.writeU32(i);else throw new Error(`Too large array: ${i}`);for(let n of e)this.doEncode(n,t+1)}countWithoutUndefined(e,t){let i=0;for(let n of t)e[n]!==void 0&&i++;return i}encodeMap(e,t){let i=Object.keys(e);this.sortKeys&&i.sort();let n=this.ignoreUndefined?this.countWithoutUndefined(e,i):i.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 r of i){let o=e[r];this.ignoreUndefined&&o===void 0||(this.encodeString(r),this.doEncode(o,t+1))}}encodeExtension(e){if(typeof e.data=="function"){let i=e.data(this.pos+6),n=i.length;if(n>=4294967296)throw new Error(`Too large extension object: ${n}`);this.writeU8(201),this.writeU32(n),this.writeI8(e.type),this.writeU8a(i);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),je(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),ce(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 Ae(s,e){return new ue(e).encodeSharedRef(s)}function he(s){return`${s<0?"-":""}0x${Math.abs(s).toString(16).padStart(2,"0")}`}var Gt=16,$t=16,de=class{constructor(e=Gt,t=$t){this.hit=0,this.miss=0,this.maxKeyLength=e,this.maxLengthPerKey=t,this.caches=[];for(let i=0;i<this.maxKeyLength;i++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,i){let n=this.caches[i-1];e:for(let r of n){let o=r.bytes;for(let a=0;a<i;a++)if(o[a]!==e[t+a])continue e;return r.str}return null}store(e,t){let i=this.caches[e.length-1],n={bytes:e,str:t};i.length>=this.maxLengthPerKey?i[Math.random()*i.length|0]=n:i.push(n)}decode(e,t,i){let n=this.find(e,t,i);if(n!=null)return this.hit++,n;this.miss++;let r=Ie(e,t,i),o=Uint8Array.prototype.slice.call(e,t,t+i);return this.store(o,r),r}};var Pe="array",Z="map_key",nt="map_value",qt=s=>{if(typeof s=="string"||typeof s=="number")return s;throw new p("The type of key must be string or number but "+typeof s)},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=Pe,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===Pe){let i=e;i.size=0,i.array=void 0,i.position=0,i.type=void 0}if(e.type===Z||e.type===nt){let i=e;i.size=0,i.map=void 0,i.readCount=0,i.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}},Y=-1,De=new DataView(new ArrayBuffer(0)),Qt=new Uint8Array(De.buffer);try{De.getInt8(0)}catch(s){if(!(s 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 it=new RangeError("Insufficient data"),Vt=new de,pe=class s{constructor(e){this.totalPos=0,this.pos=0,this.view=De,this.bytes=Qt,this.headByte=Y,this.stack=new Re,this.entered=!1,this.extensionCodec=e?.extensionCodec??x.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:Vt,this.mapKeyConverter=e?.mapKeyConverter??qt}clone(){return new s({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),i=X(e),n=new Uint8Array(t.length+i.length);n.set(t),n.set(i,t.length),this.setBuffer(n)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:i}=this;return new RangeError(`Extra ${t.byteLength-i} 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,i;for await(let a of e){if(t)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{i=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 i}let{headByte:n,pos:r,totalPos:o}=this;throw new RangeError(`Insufficient data in parsing ${he(n)} at ${o} (${r} 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 i=t,n=-1;for await(let r of e){if(t&&n===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(r),i&&(n=this.readArraySize(),i=!1,this.complete());try{for(;yield this.doDecodeSync(),--n!==0;);}catch(o){if(!(o instanceof RangeError))throw o}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 p(`Unrecognized type byte: ${he(e)}`);this.complete();let i=this.stack;for(;i.length>0;){let n=i.top();if(n.type===Pe)if(n.array[n.position]=t,n.position++,n.position===n.size)t=n.array,i.release(n);else continue e;else if(n.type===Z){if(t==="__proto__")throw new p("The key __proto__ is not allowed");n.key=this.mapKeyConverter(t),n.type=nt;continue e}else if(n.map[n.key]=t,n.readCount++,n.readCount===n.size)t=n.map,i.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 p(`Unrecognized array type byte: ${he(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new p(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new p(`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 p(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw it;let i=this.pos+t,n;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?n=this.keyDecoder.decode(this.bytes,i,e):n=Ze(this.bytes,i,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 p(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw it;let i=this.pos+t,n=this.bytes.subarray(i,i+e);return this.pos+=t+e,n}decodeExtension(e,t){if(e>this.maxExtLength)throw new p(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let i=this.view.getInt8(this.pos+t),n=this.decodeBinary(e,t+1);return this.extensionCodec.decode(n,i,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=et(this.view,this.pos);return this.pos+=8,e}readI64(){let e=le(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 Ue(s,e){return new pe(e).decode(s)}var mt=Ge(Le(),1);var Be=function(s,e){return Be=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var n in i)i.hasOwnProperty(n)&&(t[n]=i[n])},Be(s,e)};function ut(s,e){Be(s,e);function t(){this.constructor=s}s.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function Zt(s){var e=typeof Symbol=="function"&&s[Symbol.iterator],t=0;return e?e.call(s):{next:function(){return s&&t>=s.length&&(s=void 0),{value:s&&s[t++],done:!s}}}}function jt(s,e){var t=typeof Symbol=="function"&&s[Symbol.iterator];if(!t)return s;var i=t.call(s),n,r=[],o;try{for(;(e===void 0||e-- >0)&&!(n=i.next()).done;)r.push(n.value)}catch(a){o={error:a}}finally{try{n&&!n.done&&(t=i.return)&&t.call(i)}finally{if(o)throw o.error}}return r}function ei(){for(var s=[],e=0;e<arguments.length;e++)s=s.concat(jt(arguments[e]));return s}var ht=(function(){function s(e,t){this.target=t,this.type=e}return s})(),ti=(function(s){ut(e,s);function e(t,i){var n=s.call(this,"error",i)||this;return n.message=t.message,n.error=t,n}return e})(ht),ii=(function(s){ut(e,s);function e(t,i,n){t===void 0&&(t=1e3),i===void 0&&(i="");var r=s.call(this,"close",n)||this;return r.wasClean=!0,r.code=t,r.reason=i,r}return e})(ht);var ni=function(){if(typeof WebSocket<"u")return WebSocket},si=function(s){return typeof s<"u"&&!!s&&s.CLOSING===2},_={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},ri=(function(){function s(e,t,i){var n=this;i===void 0&&(i={}),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(r){n._debug("open event");var o=n._options.minUptime,a=o===void 0?_.minUptime:o;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(r),n._listeners.open.forEach(function(c){return n._callEventListener(r,c)})},this._handleMessage=function(r){n._debug("message event"),n.onmessage&&n.onmessage(r),n._listeners.message.forEach(function(o){return n._callEventListener(r,o)})},this._handleError=function(r){n._debug("error event",r.message),n._disconnect(void 0,r.message==="TIMEOUT"?"timeout":void 0),n.onerror&&n.onerror(r),n._debug("exec error listeners"),n._listeners.error.forEach(function(o){return n._callEventListener(r,o)}),n._connect()},this._handleClose=function(r){n._debug("close event"),n._clearTimeouts(),n._shouldReconnect&&n._connect(),n.onclose&&n.onclose(r),n._listeners.close.forEach(function(o){return n._callEventListener(r,o)})},this._url=e,this._protocols=t,this._options=i,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(s,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(s,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(s,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(s,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"CONNECTING",{get:function(){return s.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"OPEN",{get:function(){return s.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"CLOSING",{get:function(){return s.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"CLOSED",{get:function(){return s.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(s.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(s.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"bufferedAmount",{get:function(){var e=this._messageQueue.reduce(function(t,i){return typeof i=="string"?t+=i.length:i instanceof Blob?t+=i.size:t+=i.byteLength,t},0);return e+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?s.CLOSED:s.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),s.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)},s.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())},s.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,i=t===void 0?_.maxEnqueuedMessages:t;this._messageQueue.length<i&&(this._debug("enqueue",e),this._messageQueue.push(e))}},s.prototype.addEventListener=function(e,t){this._listeners[e]&&this._listeners[e].push(t)},s.prototype.dispatchEvent=function(e){var t,i,n=this._listeners[e.type];if(n)try{for(var r=Zt(n),o=r.next();!o.done;o=r.next()){var a=o.value;this._callEventListener(e,a)}}catch(c){t={error:c}}finally{try{o&&!o.done&&(i=r.return)&&i.call(r)}finally{if(t)throw t.error}}return!0},s.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter(function(i){return i!==t}))},s.prototype._debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._options.debug&&console.log.apply(console,ei(["RWS>"],e))},s.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,i=t===void 0?_.reconnectionDelayGrowFactor:t,n=e.minReconnectionDelay,r=n===void 0?_.minReconnectionDelay:n,o=e.maxReconnectionDelay,a=o===void 0?_.maxReconnectionDelay:o,c=0;return this._retryCount>0&&(c=r*Math.pow(i,this._retryCount-1),c>a&&(c=a)),this._debug("next delay",c),c},s.prototype._wait=function(){var e=this;return new Promise(function(t){setTimeout(t,e._getNextDelay())})},s.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")},s.prototype._connect=function(){var e=this;if(!(this._connectLock||!this._shouldReconnect)){this._connectLock=!0;var t=this._options,i=t.maxRetries,n=i===void 0?_.maxRetries:i,r=t.connectionTimeout,o=r===void 0?_.connectionTimeout:r,a=t.WebSocket,c=a===void 0?ni():a;if(this._retryCount>=n){this._debug("max retries reached",this._retryCount,">=",n);return}if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),!si(c))throw Error("No valid WebSocket class provided");this._wait().then(function(){return e._getNextUrl(e._url)}).then(function(h){e._closeCalled||(e._debug("connect",{url:h,protocols:e._protocols}),e._ws=e._protocols?new c(h,e._protocols):new c(h),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout(function(){return e._handleTimeout()},o))})}},s.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new ti(Error("TIMEOUT"),this))},s.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 ii(e,t,this))}catch{}}},s.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},s.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},s.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))},s.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))},s.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},s})(),dt=ri;var me=class extends Error{constructor(t,i){super(t);this.time=i}},j=(s,e)=>{let t;return Promise.race([s,new Promise((i,n)=>t=setTimeout(n,e,new me("Timeout before promise can resolve",e)))]).finally(()=>clearTimeout(t))};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 pt=U;var fe=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 I=class extends Error{constructor(t,i){super(t);this.data=i;this.name="InvalidMessageError"}},L=class extends Error{constructor(e){super(e),this.name="InvalidConfigurationError"}},A,ft,Me,B=class{constructor(e,t,i={}){this.eventEmitter=t;this.options=i;O(this,A);this.clientId="";this.closed=!1;this.disposables=new fe;this.connectPromise=null;this.connectionStats={connectTime:0,reconnectCount:0,lastPingTime:0,lastPongTime:0,avgResponseTime:0,totalMessages:0,totalErrors:0,connectionStartTime:0};this.messageQueue=[];this.MAX_QUEUE_SIZE=100;this.QUEUE_TIMEOUT=3e4;this.rateLimiter={requests:[],maxRequests:50,windowMs:1e3};this.validateConfiguration(i),this.url=new URL(e),this.url.searchParams.set("sdk_version","0.0.1"),this.PING_INTERVAL=i.pingInterval??3e4,this.connectionStats.connectionStartTime=Date.now();let n=i.startClosed!==!1;this.rws=new dt(this.url.toString(),[],{WebSocket:globalThis.WebSocket??pt,connectionTimeout:i.connectionTimeout??1e3,maxReconnectionDelay:2e3,minReconnectionDelay:200,maxEnqueuedMessages:0,maxRetries:i.maxRetries??50,startClosed:n}),this.log("debug","Transport initialized",{url:this.url.toString(),options:i}),this.registerWatchers(),this.setupConnectionHealthMonitoring(),this.startPeriodicMaintenance()}validateConfiguration(e){if(e.pingInterval!==void 0&&(e.pingInterval<1e3||e.pingInterval>3e5))throw new L("pingInterval must be between 1000ms and 300000ms");if(e.connectionTimeout!==void 0&&(e.connectionTimeout<100||e.connectionTimeout>3e4))throw new L("connectionTimeout must be between 100ms and 30000ms");if(e.maxRetries!==void 0&&(e.maxRetries<0||e.maxRetries>100))throw new L("maxRetries must be between 0 and 100")}log(e,t,i){if(this.options.debug){let n=new Date().toISOString(),r=i?JSON.stringify(i,null,2):"";console[e](`[Transport ${n}] ${t}${r?`
|
|
2
|
+
`+r:""}`)}}id(){return this.clientId}async registerWatchers(){let e=t=>{if(!(t.data instanceof Blob))throw new Error("Unexpected message type: "+typeof t.data);t.data.arrayBuffer().then(i=>{this.handleRawMessage(Ue(i))})};this.rws.addEventListener("message",e),this.disposables.add("message",{dispose:()=>{this.rws.removeEventListener("message",e)}})}async handleRawMessage(e){if(typeof e!="object"||e===null){this.log("debug","Received invalid message format",{ev:e});return}try{let{data:t,event:i,as:n}=e;if(!i||typeof i!="string")throw new I("Message missing event field",e);if(this.log("debug","Processing message",{event:i,hasData:!!t}),i==="App.Actions.GetClientId"){this.clientId=t.id,this.log("info","Client ID received",{clientId:this.clientId});return}if(i==="Events.BootError"){this.log("error","Boot error received",{data:t});return}if(i==="response"){let{responseEvent:r,data:o}=t;if(!r)throw new I("Response message missing responseEvent",e);this.log("debug","Response message received",{responseEvent:r}),await this.handleMessage(r,o);return}if(i==="error"){let{errorEvent:r,data:o}=t;if(!r)throw new I("Error message missing errorEvent",e);this.log("debug","Error message received",{errorEvent:r,errorData:o}),await this.handleMessage(r,o);return}await this.handleMessage(i,t,n)}catch(t){this.connectionStats.totalErrors++,t instanceof I?this.log("error","Invalid message format",{error:t.message,data:t.data,totalErrors:this.connectionStats.totalErrors}):this.log("error","Failed to parse message",{ev:e,error:t instanceof Error?t.message:String(t),totalErrors:this.connectionStats.totalErrors}),this.eventEmitter.emit("transport.error",{type:"message_parse_error",error:t,rawMessage:e,timestamp:Date.now()})}}async handleMessage(e,t,i){if(e==="App.Actions.GetClientId"){this.clientId=t.id,this.eventEmitter.emit(e,t.id);return}e&&this.eventEmitter.emit(i||e,t)}listen(e,t,i){return this.eventEmitter.listen(e,t)}removeListener(e,t){this.eventEmitter.removeListener(e,t)}listenOnce(e,t,i){this.eventEmitter.once(e,t,i)}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}get status(){return{0:"CONNECTING",1:"OPEN",2:"CLOSING",3:"CLOSED"}[this.rws.readyState]}async call(e,t={},i={}){if(this.isRateLimited())throw new T("Rate limit exceeded - too many requests");this.clearOldQueuedMessages();let n=i.responseEvent||`${e}_${y()}_response`,r=`${n}_error`,o,a=()=>{o&&(this.rws.removeEventListener("close",o),this.rws.removeEventListener("error",o)),this.eventEmitter.removeListener(n),this.eventEmitter.removeListener(r)},c=async(u,l)=>{let f=new DOMException("Request aborted","AbortError");if(i.abortSignal?.aborted&&l(f),i.abortSignal&&i.abortSignal.addEventListener("abort",()=>{l(f)}),!this.isConnected&&!this.isClosed){if(this.log("debug","Connection not available, queuing message",{action:e}),this.messageQueue.length>=this.MAX_QUEUE_SIZE){let d=this.messageQueue.shift();d&&d.reject(new Error("Message queue full, oldest message dropped"))}this.messageQueue.push({action:e,data:t,options:i,resolve:u,reject:l,timestamp:Date.now()});return}let N=Date.now();this.listenOnce(n,d=>{let m=Date.now()-N;this.connectionStats.avgResponseTime=(this.connectionStats.avgResponseTime+m)/2,this.connectionStats.totalMessages++,this.log("debug","Message response received",{action:e,responseTime:m,avgResponseTime:this.connectionStats.avgResponseTime}),u(d)}),this.listenOnce(r,d=>{this.connectionStats.totalErrors++,this.log("error","Message error received",{action:e,error:d}),l(new b(d.code,d.message,d))}),o=d=>{if(d.code===1008&&(d.reason||"").includes("rate limit")){l(new T(d.reason||"Rate limit exceeded",d));return}l(new Error(`Connection lost to the notebook during request: ${d.reason||"Unknown reason"}`))},this.rws.addEventListener("close",o),this.rws.addEventListener("error",o);try{this.rws.send(this.pack({action:e,data:t,errorEvent:r,responseEvent:n})),this.log("debug","Message sent",{action:e,data:t})}catch(d){throw this.log("error","Failed to send message",{action:e,error:d}),d}},h=async()=>{await k(this,A,ft).call(this);let u=new Promise(c).finally(a);return i.timeout?j(u,i.timeout).finally(a):u};return this.sendWithRetry(async()=>await h(),i.retries||10)}pack(e){return new Blob([Ae(e)])}sendWithRetry(e,t=10){return(0,mt.default)(async(i,n)=>{try{return await e()}catch(r){if(r instanceof b||r instanceof T||r instanceof L||r instanceof I||r instanceof DOMException){this.log("debug","Non-retryable error, bailing",{error:r.message,attempt:n}),i(r);return}throw this.log("debug","Retrying send operation",{attempt:n,error:r instanceof Error?r.message:String(r),nextDelay:this.getBackoffDelay(n-1)}),r}},{retries:t,onRetry:(i,n)=>{this.log("warn","Send operation retry",{attempt:n,maxRetries:t,error:i instanceof Error?i.message:String(i)})},minTimeout:1e3,factor:2,maxTimeout:3e4,randomize:!0})}invoke(e,t={},i={}){return i.responseEvent||(i.responseEvent=`${e}_${y()}`),this.call("invoke",{action:e,data:t},i)}reconnect(){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(){if(this.closed){console.trace("Transport is already closed, cannot disconnect again");return}this.close()}close(e,t){if(this.closed)return;this.log("info","Closing transport connection",{code:e,reason:t}),this.connectPromise=null;let i=this.messageQueue.length;this.messageQueue.forEach(n=>{console.log("Rejecting queued message due to connection close"),n.reject(new Error("Connection closed while message was queued"))}),this.messageQueue=[],i>0&&this.log("debug",`Rejected ${i} queued messages due to connection close`),this.rateLimiter.requests=[],this.disposables.dispose();try{this.rws.close(e,t)}catch(n){this.log("error","Error closing WebSocket",{error:n instanceof Error?n.message:String(n)})}this.eventEmitter.emit("transport.closed",{code:e,reason:t,metrics:this.getConnectionMetrics(),timestamp:Date.now()}),this.eventEmitter.removeListener("*"),this.closed=!0,this.log("info","Transport connection closed successfully")}onDidConnect(e){this.rws.addEventListener("open",e),this.disposables.add("connect",{dispose:()=>{this.rws.removeEventListener("open",e)}})}onDidClose(e){this.rws.addEventListener("close",e),this.disposables.add("close",{dispose:()=>{this.rws.removeEventListener("close",e)}})}setupConnectionHealthMonitoring(){this.rws.addEventListener("open",()=>{this.connectionStats.connectTime=Date.now(),this.connectionStats.reconnectCount++,this.log("info","Connection established",{reconnectCount:this.connectionStats.reconnectCount,timeSinceStart:Date.now()-this.connectionStats.connectionStartTime}),this.processMessageQueue()}),this.rws.addEventListener("close",e=>{this.log("warn","Connection closed",{code:e.code,reason:e.reason,wasClean:e.wasClean}),this.handleConnectionClose(e.code)}),this.rws.addEventListener("error",e=>{this.connectionStats.totalErrors++,this.log("error","Connection error",{error:e,totalErrors:this.connectionStats.totalErrors})})}handleConnectionClose(e){switch(e){case 1e3:return this.log("info","Normal connection closure"),"stop";case 1001:return this.log("info","Connection going away, will reconnect"),"reconnect";case 1006:return this.log("warn","Abnormal connection closure, will retry"),"retry";case 1008:return this.log("error","Connection closed due to policy violation"),this.clearOldQueuedMessages(),"stop";default:return this.log("warn",`Unknown close code: ${e}, will reconnect`),"reconnect"}}processMessageQueue(){if(this.messageQueue.length===0)return;this.log("debug",`Processing ${this.messageQueue.length} queued messages`);let e=[...this.messageQueue];this.messageQueue=[];for(let t of e){if(Date.now()-t.timestamp>this.QUEUE_TIMEOUT){t.reject(new Error("Queued message timed out"));continue}this.call(t.action,t.data,t.options).then(t.resolve).catch(t.reject)}}clearOldQueuedMessages(){let e=Date.now(),t=this.messageQueue.length;this.messageQueue=this.messageQueue.filter(i=>{let n=e-i.timestamp>this.QUEUE_TIMEOUT;return n&&i.reject(new Error("Queued message expired")),!n}),t!==this.messageQueue.length&&this.log("debug",`Cleared ${t-this.messageQueue.length} expired messages`)}isRateLimited(){let e=Date.now();return this.rateLimiter.requests=this.rateLimiter.requests.filter(t=>e-t<this.rateLimiter.windowMs),this.rateLimiter.requests.length>=this.rateLimiter.maxRequests?!0:(this.rateLimiter.requests.push(e),!1)}getBackoffDelay(e){return Math.min(1e3*Math.pow(2,e),3e4)+Math.random()*1e3}getConnectionMetrics(){let e=Date.now(),t=this.connectionStats.connectTime>0?e-this.connectionStats.connectTime:0;return{status:this.status,clientId:this.clientId,isConnected:this.isConnected,isConnecting:this.isConnecting,connectionStats:{...this.connectionStats,connectionDuration:t,uptime:e-this.connectionStats.connectionStartTime,messagesPerSecond:t>0?(this.connectionStats.totalMessages/(t/1e3)).toFixed(2):"0",errorRate:this.connectionStats.totalMessages>0?(this.connectionStats.totalErrors/this.connectionStats.totalMessages*100).toFixed(2)+"%":"0%",timeSinceLastPing:this.connectionStats.lastPingTime>0?e-this.connectionStats.lastPingTime:0,timeSinceLastPong:this.connectionStats.lastPongTime>0?e-this.connectionStats.lastPongTime:0},messageQueue:{length:this.messageQueue.length,maxSize:this.MAX_QUEUE_SIZE,oldestMessageAge:this.messageQueue.length>0?e-Math.min(...this.messageQueue.map(i=>i.timestamp)):0},rateLimiter:{currentRequests:this.rateLimiter.requests.length,maxRequests:this.rateLimiter.maxRequests,windowMs:this.rateLimiter.windowMs,isLimited:this.isRateLimited()},config:{pingInterval:this.PING_INTERVAL,queueTimeout:this.QUEUE_TIMEOUT,url:this.url.toString()}}}getHealthStatus(){let t=this.getConnectionMetrics().connectionStats;return!this.isConnected||t.timeSinceLastPong>this.PING_INTERVAL*2||Number.parseFloat(t.errorRate)>50?"unhealthy":t.avgResponseTime>5e3||Number.parseFloat(t.errorRate)>10||t.timeSinceLastPong>this.PING_INTERVAL*1.5?"degraded":"healthy"}resetStats(){this.connectionStats={connectTime:Date.now(),reconnectCount:0,lastPingTime:0,lastPongTime:0,avgResponseTime:0,totalMessages:0,totalErrors:0,connectionStartTime:Date.now()},this.log("debug","Connection statistics reset")}async runDiagnostics(){let e=this.getConnectionMetrics(),t=this.getHealthStatus(),i=[],n=[];return this.isConnected||(i.push("Connection is not established"),n.push("Check network connectivity and server availability")),e.connectionStats.timeSinceLastPong>this.PING_INTERVAL*2&&(i.push("No pong received recently - connection may be stale"),n.push("Consider forcing a reconnection")),Number.parseFloat(e.connectionStats.errorRate)>10&&(i.push(`High error rate: ${e.connectionStats.errorRate}`),n.push("Check server logs and network stability")),e.messageQueue.length>this.MAX_QUEUE_SIZE*.8&&(i.push("Message queue is nearly full"),n.push("Check connection stability and consider reducing message frequency")),e.connectionStats.avgResponseTime>5e3&&(i.push("High average response time"),n.push("Check network latency and server performance")),e.rateLimiter.isLimited&&(i.push("Rate limiting is active"),n.push("Reduce request frequency or increase rate limit")),this.log("info","Connection diagnostics completed",{status:t,issueCount:i.length,recommendationCount:n.length}),{status:t,metrics:e,issues:i,recommendations:n}}startPeriodicMaintenance(){this.disposables.add("maintenance",()=>{let e=setInterval(()=>{this.clearOldQueuedMessages();let t=Date.now();if(this.rateLimiter.requests=this.rateLimiter.requests.filter(i=>t-i<this.rateLimiter.windowMs),this.options.debug){let i=this.getHealthStatus(),n=this.getConnectionMetrics();this.log("debug","Periodic health check",{health:i,messageCount:n.connectionStats.totalMessages,errorCount:n.connectionStats.totalErrors,queueLength:n.messageQueue.length})}},3e5);return{dispose:()=>{clearInterval(e)}}})}};A=new WeakSet,ft=function(){return this.isConnected?Promise.resolve():this.connectPromise?this.connectPromise:(this.connectPromise=new Promise((e,t)=>{if(this.isConnected){e(),k(this,A,Me).call(this);return}this.rws.readyState===3&&this.rws.reconnect();let i,n=()=>{this.rws.removeEventListener("open",n),this.rws.removeEventListener("error",r),clearTimeout(i),this.connectPromise=null,e(),k(this,A,Me).call(this)},r=o=>{this.rws.removeEventListener("open",n),this.rws.removeEventListener("error",r),clearTimeout(i),this.connectPromise=null,t(new Error(`WebSocket connection failed: ${o}`))};i=setTimeout(()=>{this.rws.removeEventListener("open",n),this.rws.removeEventListener("error",r),this.connectPromise=null,t(new Error("WebSocket connection timeout"))},1e4),this.rws.addEventListener("open",n),this.rws.addEventListener("error",r)}),this.connectPromise)},Me=function(){this.disposables.add("pingInterval",()=>{let e=setInterval(async()=>{try{this.connectionStats.lastPingTime=Date.now(),this.log("debug","Sending periodic ping");let t=Date.now();await this.invoke("ping"),this.connectionStats.lastPongTime=Date.now();let i=this.connectionStats.lastPongTime-t;this.log("debug","Ping successful",{pingTime:i})}catch(t){this.log("error","Ping failed",{error:t instanceof Error?t.message:String(t)}),Date.now()-this.connectionStats.lastPongTime>this.PING_INTERVAL*3&&(this.log("warn","Connection appears dead, forcing reconnection"),this.rws.reconnect())}},this.PING_INTERVAL);return{dispose:()=>{clearInterval(e)}}})};function gt(s){return{all:s=s||new Map,on:function(e,t){var i=s.get(e);i?i.push(t):s.set(e,[t])},off:function(e,t){var i=s.get(e);i&&(t?i.splice(i.indexOf(t)>>>0,1):s.set(e,[]))},emit:function(e,t){var i=s.get(e);i&&i.slice().map(function(n){n(t)}),(i=s.get("*"))&&i.slice().map(function(n){n(e,t)})}}}function Ne(s){let e=gt(s);return e.once=(t,i)=>{e.on(t,i),e.on(t,e.off.bind(e,t,i))},e}var w=Ne(),P=class s{listen(e,t){let i=()=>{this.removeListener(e,t)};return w.on(e,t),{dispose:i}}emit(e,t){w.emit(e,t)}once(e,t){w.once(e,t)}static make(){return s.instance||(s.instance=new s)}static refresh(){return w.all.clear(),w=Ne(),s.instance=new s}removeListener(e,t){w.off(e,t)}static createInstance(){return w=Ne(),s.instance=new s,s.instance}inspect(){return w.all}};var ee=class{constructor(e){this.okra=e}checkpoint(e,t,i="main"){return this.okra.invoke("git.checkpoint",{author:e,message:t,branch:i})}sync(e,t,i="main",n,r="both",o=!1){return this.okra.invoke("git.sync",{url:e,author:t,ref:i,token:n,direction:r,force:o})}log(e="main"){return this.okra.invoke("git.log",{ref:e})}restore(e){return this.okra.invoke("git.restore",{ref:e})}};var Oe=Ge(Le(),1);var M=class{constructor(e,t,i){this.onEvent=e;this.onceEvent=t;this.beacon=i;this.urlHistory=[];this.currentIndex=0;this._canGoBack=!1;this._canGoForward=!1;this.beacon=i,this.setupUrlChangeListener(),this.urlHistory.push(i.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 R=class extends Error{constructor(t,i){super(t);this.code=i;this.name="BeaconError"}},te=class extends R{constructor(e,t){super(`Beacon operation '${e}' timed out after ${t}ms`),this.code="TIMEOUT"}},v=class extends R{constructor(e){super(`Beacon connection error: ${e}`),this.code="CONNECTION_ERROR"}},ge=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 i={retries:3,minTimeout:1e3,maxTimeout:5e3,factor:2,randomize:!0};this.options={timeout:1e4,targetOrigin:"*",debug:!1,retry:{...i,...t.retry},...t},this.eventEmitter=P.make(),this.setupMessageChannel(),this.navigator=new M(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 i=t.data;if(!i||typeof i!="object"||!i.type)return;i.type==="beacon:ready-for-channel"&&this.establishChannel().catch(n=>{this.options.debug&&console.error("[Beacon SDK] Channel establishment failed:",n)}),i.type==="beacon:channel-established"&&(this.channelEstablished=!0,this.isBeaconReady=!0,this.emit("ready",i.payload),this.options.debug&&console.log("[Beacon SDK] Channel established and beacon ready"))}catch(i){this.options.debug&&console.error("[Beacon SDK] Message parsing error:",i)}};window.addEventListener("message",e),this.disposables.push({dispose:()=>window.removeEventListener("message",e)})}async establishChannel(){if(!this.iframe.contentWindow)throw new v("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,i)=>{let n=setTimeout(()=>{i(new v("Channel establishment timeout"))},this.options.timeout),r=()=>{this.channelEstablished&&this.isBeaconReady?(clearTimeout(n),t()):setTimeout(r,100)};r()})}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 i=this.messageHandlers.get(e.type);i&&i.forEach(n=>{try{n(e.payload)}catch(r){this.options.debug&&console.error("[Beacon SDK] Message handler error:",r)}})}waitForBeaconReady(){return(0,Oe.default)(async()=>new Promise((e,t)=>{if(this.isBeaconReady&&this.channelEstablished){e();return}let i=this.options.timeout,n=setTimeout(()=>{t(new te("beacon ready",i))},i),r=this.on("ready",()=>{clearTimeout(n),r.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 i=e instanceof Error?e.message:String(e);console.warn(`[Beacon SDK] Beacon ready retry attempt ${t}:`,i)}this.isBeaconReady=!1,this.channelEstablished=!1}})}sendMessage(e,t={}){if(!this.port)throw new v("MessagePort not available - channel not established");let i={type:`beacon:${e}`,payload:t,timestamp:Date.now(),source:"parent",id:this.generateId()};try{this.port.postMessage(i),this.options.debug&&console.log("[Beacon SDK] Sent message via port:",i.type,i.payload)}catch(n){throw new v(`Failed to send message via port: ${n instanceof Error?n.message:String(n)}`)}}async sendAndWaitFor(e,t,i={},n){return await this.ready(),(0,Oe.default)(async r=>new Promise((o,a)=>{let c=n||this.options.timeout,h=setTimeout(()=>{u.dispose();let l=new te(e,c);a(l)},c),u=this.eventEmitter.listen(t,l=>{clearTimeout(h),u.dispose(),o(l)});try{this.sendMessage(e,i)}catch(l){clearTimeout(h),u.dispose(),l instanceof v?a(l):r(l)}}),{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:(r,o)=>{if(this.options.debug){let a=r instanceof Error?r.message:String(r);console.warn(`[Beacon SDK] Retry attempt ${o} 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 R("Beacon has not been started. Call start() first.");if(!this.readyPromise)throw new R("Beacon ready promise is not available");return j(this.readyPromise,this.options.timeout)}get isReady(){return this.isBeaconReady}on(e,t){return this.eventEmitter.listen(e,t)}once(e,t){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 debug(e,t){let i=new URL(e.path,this.iframe.src||window.location.origin).href;this.iframe.src!==i&&(this.navigator.visit(i),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 v("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 v(`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 Fe(s,e){return new ge(s,e)}function oi(){try{return bt(),!0}catch{return!1}}var be=class extends Error{constructor(t){super(t);this.message=t}},ve=class extends Error{constructor(t,i){super(`PHPSandbox API Error: ${t.status} ${t.statusText} - ${i}`);this.response=t;this.body=i;this.status=t.status}},ye=class{constructor(e){this.client=e}async create(e,t={},i=!0){let n=await this.client.post("/notebook",{template:e,...t}),r=new E(n.data,this.client);return i?this.init(r):r}async get(e){let t=await this.client.get(`/notebook/${e}`);return new E(t.data,this.client)}async fork(e){let t=await this.client.post(`/notebook/${e}/fork`);return this.init(new E(t.data,this.client))}async open(e){let t=await this.client.get(`/notebook/${e}`);return new E(t.data,this.client)}openFromData(e){return this.init(new E(e,this.client))}async init(e){return await e.ready(),e}},xe=class{constructor(e,t="https://api.phpsandbox.io/v1",i={}){this.fetch=globalThis.fetch;this.notebook=new ye(this),this.options=Object.assign({startClosed:!0},i),this.baseUrl=t,i.fetch&&(this.fetch=i.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?JSON.stringify(t):void 0})}async makeRequest(e,t,i){let n=await this.fetch(new Request(new URL(`v1/${t.replace(/^\//,"")}`,this.baseUrl),{method:e,...i,headers:this.headers}));if(!n.ok)throw new ve(n,await n.text());return{data:await n.json()}}},He=class extends xe{},D,ie,ze,E=class{constructor(e,t){this.data=e;this.client=t;O(this,ie);this.initialized=!1;O(this,D);this.disposables=[];this.emitter=P.createInstance(),this.socket=new B(e.okraUrl,this.emitter,{debug:t.options.debug,startClosed:t.options.startClosed}),this.watchConnection(),Te(this,D,k(this,ie,ze).call(this)),this.file=new F(this),this.terminal=new H(this),this.auth=new W(this),this.lsp=new K(this),this.composer=new G(this),this.log=new $(this),this.repl=new Q(this),this.container=new z(this),this.laravel=new q(this),this.shell=new V(this),this.git=new ee(this)}async ready(){return(async()=>(this.client.options.startClosed&&!this.socket.isConnected&&await this.socket.invoke("ping"),ke(this,D)))()}fork(){return this.client.notebook.fork(this.data.id)}stop(){return this.container.stop()}restart(){return this.container.start()}invoke(e,t={},i={}){return this.socket.invoke(e,t||{},i)}ping(){return this.invoke("ping")}listen(e,t){return this.emitter.listen(e,t)}dispose(){this.disposables.forEach(e=>e.dispose()),!this.socket.isClosed&&this.socket.disconnect()}connected(){return this.socket.isConnected?Promise.resolve(this):new Promise((e,t)=>{try{this.socket.onDidConnect(()=>e(this)),this.socket.onDidClose(()=>t(new Error("Connection closed")))}catch(i){t(i)}})}whenConnected(){return this.socket.isConnected?Promise.resolve(this):new Promise((e,t)=>{try{this.socket.onDidConnect(()=>e(this))}catch(i){t(i)}})}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})}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}update(){return this.invoke("notebook.update")}onDidInitialize(e){let t=this.listen("notebook.initialized",e);return this.disposables.push(t),t}async reconnect(){return this.socket.reconnect(),this.initialized=!1,await this.whenConnected(),k(this,ie,ze).call(this),this.ready().then(()=>this)}async beacon(e,t){let i=await this.ready();return e.src=i.data.previewUrl,Fe(e,t)}};D=new WeakMap,ie=new WeakSet,ze=function(){return Te(this,D,new Promise((e,t)=>{this.onDidInitialize(i=>{this.initialized=i,i.type==="error"&&t(new be(i.message)),e(i)})})),ke(this,D)};return Tt(ai);})();
|
|
3
3
|
/*! Bundled license information:
|
|
4
4
|
|
|
5
5
|
reconnecting-websocket/dist/reconnecting-websocket-mjs.js:
|