@thatopen/services 0.3.7 → 0.3.9

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.
@@ -4,6 +4,7 @@ import { EngineServicesClient, Item, ItemFolder, ItemVersion, PlatformClient } f
4
4
  * Auto-generated by platform_builtin-components/scripts/distribute-types.mjs
5
5
  */
6
6
  import type * as OBC from '@thatopen/components';
7
+ import type * as THREE from 'three';
7
8
  export interface CDEContext {
8
9
  client: PlatformClient;
9
10
  projectId: string;
@@ -322,7 +323,7 @@ declare class _CDEManager extends OBC.Component implements OBC.Transitionable<CD
322
323
  readonly onSelectedGroupChanged: OBC.Event<string | null>;
323
324
  readonly onMachineStateChanged: OBC.Event<CDEMachineState>;
324
325
  readonly onMetadataViewsChanged: OBC.Event<CDEMetadataView[]>;
325
- readonly onGroupsViewModeChanged: OBC.Event<"metadata" | "groups">;
326
+ readonly onGroupsViewModeChanged: OBC.Event<"groups" | "metadata">;
326
327
  readonly onMetadataGroupChanged: OBC.Event<Record<string, string> | null>;
327
328
  readonly onDownloadReady: OBC.Event<{
328
329
  blob: Blob;
@@ -521,6 +522,207 @@ export type CDEManager = InstanceType<typeof _CDEManager>;
521
522
  export declare const CDEManager: typeof _CDEManager & {
522
523
  uuid: "a3f82c1d-5b74-4e9a-bc30-d7e12f894a61";
523
524
  };
525
+ export type ClashStatus = "new" | "active" | "resolved" | "acknowledged";
526
+ export type ClashType = "hard" | "clearance";
527
+ export interface ClashElement {
528
+ guid: string;
529
+ name: string;
530
+ localId: number;
531
+ modelId: string;
532
+ }
533
+ export interface ClashQueryFilter {
534
+ categories?: string[];
535
+ attributes?: {
536
+ aggregation?: 'exclusive' | 'inclusive';
537
+ queries: Array<{
538
+ name: string;
539
+ value?: string | string[] | number | boolean;
540
+ type?: string;
541
+ negate?: boolean;
542
+ }>;
543
+ };
544
+ relation?: {
545
+ name: string;
546
+ query?: ClashQueryFilter;
547
+ };
548
+ }
549
+ export interface ClashQuery {
550
+ id: string;
551
+ name: string;
552
+ modelFileIds: string[];
553
+ /** Filter conditions. Omit or leave empty to match all elements with geometry. */
554
+ query?: ClashQueryFilter;
555
+ }
556
+ export interface ClashMatrix {
557
+ id: string;
558
+ name: string;
559
+ /** Ordered list of query IDs — index order = priority (0 = most constrained). */
560
+ queryIds: string[];
561
+ /** Active cell job IDs (subset of upper-triangle pairs). */
562
+ jobIds: string[];
563
+ /** Active upper-triangle pair keys in the form "queryAId:queryBId". */
564
+ activePairs: string[];
565
+ /** Clash type applied to all jobs generated by this matrix. Defaults to 'hard'. */
566
+ jobType?: ClashType;
567
+ /** Clearance tolerance in metres. Only used when jobType is 'clearance'. */
568
+ tolerance?: number;
569
+ }
570
+ export interface ClashJob {
571
+ id: string;
572
+ name: string;
573
+ type: ClashType;
574
+ queryAId: string;
575
+ queryBId: string;
576
+ matrixId?: string;
577
+ /** Clearance tolerance in metres. Only present when type is 'clearance'. */
578
+ tolerance?: number;
579
+ }
580
+ export interface ClashRun {
581
+ id: string;
582
+ jobId: string;
583
+ date: string;
584
+ clashCount: number;
585
+ }
586
+ interface ClashBase {
587
+ /** Deterministic FNV-1a hash of the normalized pair (elementA.guid, elementB.guid). Stable across runs. */
588
+ id: string;
589
+ jobId: string;
590
+ firstSeenRunId: string;
591
+ lastSeenRunId: string;
592
+ elementA: ClashElement;
593
+ elementB: ClashElement;
594
+ point: [number, number, number];
595
+ status: ClashStatus;
596
+ comments?: string;
597
+ }
598
+ export interface HardClash extends ClashBase {
599
+ type: "hard";
600
+ volume?: number;
601
+ }
602
+ export interface ClearanceClash extends ClashBase {
603
+ type: "clearance";
604
+ distance: number;
605
+ }
606
+ export type Clash = HardClash | ClearanceClash;
607
+ export interface MarkerGroup {
608
+ id?: string;
609
+ point: [number, number, number];
610
+ count: number;
611
+ status?: ClashStatus;
612
+ }
613
+ declare class _ClashesManager extends OBC.Component {
614
+ static readonly uuid: "2c9f4e8d-3a1b-4c5e-9d7f-0a2b6c8e1d3f";
615
+ enabled: boolean;
616
+ readonly onQueriesChanged: OBC.Event<ClashQuery[]>;
617
+ readonly onMatricesChanged: OBC.Event<ClashMatrix[]>;
618
+ readonly onJobsChanged: OBC.Event<ClashJob[]>;
619
+ readonly onRunsChanged: OBC.Event<ClashRun[]>;
620
+ readonly onClashesChanged: OBC.Event<Clash[]>;
621
+ readonly onClashStatusChanged: OBC.Event<Clash[]>;
622
+ /** Dispara cuando empieza el debounce de guardado (pendiente de persistir). */
623
+ readonly onSaveStart: OBC.Event<void>;
624
+ /** Dispara al terminar el guardado. true = éxito, false = error. */
625
+ readonly onSaveComplete: OBC.Event<boolean>;
626
+ world?: OBC.World;
627
+ /** Suprimir auto-save durante carga de datos (usar loadingData = true antes, false después). */
628
+ loadingData: boolean;
629
+ /** Registrar desde la app host para recargar datos desde el storage al terminar una ejecución. */
630
+ reload?: () => Promise<void>;
631
+ /** Registrar desde la app host para consultar qué jobIds tienen ejecución activa en storage. */
632
+ checkExecutions?: () => Promise<Set<string>>;
633
+ /** Registrar desde la app host para persistir queries y matrices al storage del proyecto. */
634
+ save?: () => Promise<void>;
635
+ /** Jobs con una ejecución cloud activa. Poblado por la app host al arrancar. */
636
+ readonly runningJobIds: Set<string>;
637
+ /** Mapa jobId → executionId para reconectar al WebSocket. Poblado por la app host al arrancar. */
638
+ readonly activeExecutions: Map<string, string>;
639
+ readonly onRunningJobsChanged: OBC.Event<Set<string>>;
640
+ readonly onRunProgress: OBC.Event<{
641
+ message: string;
642
+ progress: number;
643
+ }>;
644
+ readonly onRunComplete: OBC.Event<{
645
+ runId: string;
646
+ clashCount: number;
647
+ }>;
648
+ readonly onRunError: OBC.Event<{
649
+ code?: string;
650
+ message: string;
651
+ }>;
652
+ readonly onReloadingChanged: OBC.Event<boolean>;
653
+ isReloading: boolean;
654
+ /** True once init(client) has been called — safe to call run(). */
655
+ get ready(): boolean;
656
+ private _client?;
657
+ private _projectId?;
658
+ private _reconnectingJobIds;
659
+ private _queries;
660
+ private _matrices;
661
+ private _saveTimer?;
662
+ private _savePromise?;
663
+ private _jobs;
664
+ private _runs;
665
+ private _clashes;
666
+ private _markers;
667
+ private static _geo;
668
+ get queries(): ClashQuery[];
669
+ set queries(value: ClashQuery[]);
670
+ get matrices(): ClashMatrix[];
671
+ set matrices(value: ClashMatrix[]);
672
+ private _scheduleSave;
673
+ private _doSave;
674
+ /** Cancela el debounce pendiente y ejecuta el save inmediatamente. Espera a que complete. */
675
+ flush(): Promise<void>;
676
+ get jobs(): ClashJob[];
677
+ set jobs(value: ClashJob[]);
678
+ get runs(): ClashRun[];
679
+ set runs(value: ClashRun[]);
680
+ get clashes(): Clash[];
681
+ set clashes(value: Clash[]);
682
+ queryById(id: string): ClashQuery | undefined;
683
+ private _clashStylesRegistered;
684
+ private readonly STYLE_A;
685
+ private readonly STYLE_B;
686
+ private _clashStyle;
687
+ highlightAllClashes(clashes: Clash[]): void;
688
+ ghostClashes(clashes: Clash[]): Promise<void>;
689
+ ghostClash(clash: Clash): Promise<void>;
690
+ clearGhostClash(): Promise<void>;
691
+ highlightClash(clash: Clash): void;
692
+ clearClashHighlight(): void;
693
+ showMarkers(groups: MarkerGroup[]): void;
694
+ hideMarkers(): void;
695
+ toViewerPoint(point: [number, number, number]): THREE.Vector3;
696
+ private _toViewer;
697
+ private _renderMarkers;
698
+ private _clearMarkers;
699
+ cluster(clashes: Clash[], threshold: number): Clash[][];
700
+ private _setHighlighterEnabled;
701
+ private _isolatedMaterials;
702
+ runsForJob(jobId: string): ClashRun[];
703
+ clashesForRun(runId: string): Clash[];
704
+ updateClash(id: string, changes: {
705
+ status?: ClashStatus;
706
+ comments?: string;
707
+ }): void;
708
+ /**
709
+ * Initializes the manager from cloud storage: loads clash data, wires save/reload,
710
+ * reads in-flight executions, and resolves the viewer world (non-blocking).
711
+ * Consumer apps call this once instead of wiring all the pieces manually.
712
+ */
713
+ init(client: PlatformClient): Promise<void>;
714
+ /** Launches clash detection in a Web Worker. Fires onRunProgress/onRunComplete/onRunError. */
715
+ run(jobId: string): void;
716
+ private _handleWorkerComplete;
717
+ /** Reconnects to an in-flight execution when the user opens a job that was running before page load. */
718
+ reconnectIfRunning(jobId: string): void;
719
+ private _listenToExecution;
720
+ private _firstWorld;
721
+ }
722
+ export type ClashesManager = InstanceType<typeof _ClashesManager>;
723
+ export declare const ClashesManager: typeof _ClashesManager & {
724
+ uuid: "2c9f4e8d-3a1b-4c5e-9d7f-0a2b6c8e1d3f";
725
+ };
524
726
  /**
525
727
  * Which action buttons to expose per file row. All default to `true`.
526
728
  */
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use strict";var Me=Object.defineProperty;var we=n=>{throw TypeError(n)};var Ve=(n,e,t)=>e in n?Me(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var _=(n,e,t)=>Ve(n,typeof e!="symbol"?e+"":e,t),J=(n,e,t)=>e.has(n)||we("Cannot "+t);var Y=(n,e,t)=>(J(n,e,"read from private field"),t?t.call(n):e.get(n)),K=(n,e,t)=>e.has(n)?we("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),_e=(n,e,t,s)=>(J(n,e,"write to private field"),s?s.call(n,t):e.set(n,t),t),c=(n,e,t)=>(J(n,e,"access private method"),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=Object.create(null);k.open="0";k.close="1";k.ping="2";k.pong="3";k.message="4";k.upgrade="5";k.noop="6";const q=Object.create(null);Object.keys(k).forEach(n=>{q[k[n]]=n});const te={type:"error",data:"parser error"},Ae=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",Se=typeof ArrayBuffer=="function",Oe=n=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(n):n&&n.buffer instanceof ArrayBuffer,le=({type:n,data:e},t,s)=>Ae&&e instanceof Blob?t?s(e):Ee(e,s):Se&&(e instanceof ArrayBuffer||Oe(e))?t?s(e):Ee(new Blob([e]),s):s(k[n]+(e||"")),Ee=(n,e)=>{const t=new FileReader;return t.onload=function(){const s=t.result.split(",")[1];e("b"+(s||""))},t.readAsDataURL(n)};function be(n){return n instanceof Uint8Array?n:n instanceof ArrayBuffer?new Uint8Array(n):new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}let W;function He(n,e){if(Ae&&n.data instanceof Blob)return n.data.arrayBuffer().then(be).then(e);if(Se&&(n.data instanceof ArrayBuffer||Oe(n.data)))return e(be(n.data));le(n,!1,t=>{W||(W=new TextEncoder),e(W.encode(t))})}const Te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",N=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let n=0;n<Te.length;n++)N[Te.charCodeAt(n)]=n;const Ge=n=>{let e=n.length*.75,t=n.length,s,r=0,i,o,h,l;n[n.length-1]==="="&&(e--,n[n.length-2]==="="&&e--);const y=new ArrayBuffer(e),d=new Uint8Array(y);for(s=0;s<t;s+=4)i=N[n.charCodeAt(s)],o=N[n.charCodeAt(s+1)],h=N[n.charCodeAt(s+2)],l=N[n.charCodeAt(s+3)],d[r++]=i<<2|o>>4,d[r++]=(o&15)<<4|h>>2,d[r++]=(h&3)<<6|l&63;return y},je=typeof ArrayBuffer=="function",fe=(n,e)=>{if(typeof n!="string")return{type:"message",data:Ce(n,e)};const t=n.charAt(0);return t==="b"?{type:"message",data:Je(n.substring(1),e)}:q[t]?n.length>1?{type:q[t],data:n.substring(1)}:{type:q[t]}:te},Je=(n,e)=>{if(je){const t=Ge(n);return Ce(t,e)}else return{base64:!0,data:n}},Ce=(n,e)=>{switch(e){case"blob":return n instanceof Blob?n:new Blob([n]);case"arraybuffer":default:return n instanceof ArrayBuffer?n:n.buffer}},$e="",Ye=(n,e)=>{const t=n.length,s=new Array(t);let r=0;n.forEach((i,o)=>{le(i,!1,h=>{s[o]=h,++r===t&&e(s.join($e))})})},Ke=(n,e)=>{const t=n.split($e),s=[];for(let r=0;r<t.length;r++){const i=fe(t[r],e);if(s.push(i),i.type==="error")break}return s};function We(){return new TransformStream({transform(n,e){He(n,t=>{const s=t.length;let r;if(s<126)r=new Uint8Array(1),new DataView(r.buffer).setUint8(0,s);else if(s<65536){r=new Uint8Array(3);const i=new DataView(r.buffer);i.setUint8(0,126),i.setUint16(1,s)}else{r=new Uint8Array(9);const i=new DataView(r.buffer);i.setUint8(0,127),i.setBigUint64(1,BigInt(s))}n.data&&typeof n.data!="string"&&(r[0]|=128),e.enqueue(r),e.enqueue(t)})}})}let z;function P(n){return n.reduce((e,t)=>e+t.length,0)}function L(n,e){if(n[0].length===e)return n.shift();const t=new Uint8Array(e);let s=0;for(let r=0;r<e;r++)t[r]=n[0][s++],s===n[0].length&&(n.shift(),s=0);return n.length&&s<n[0].length&&(n[0]=n[0].slice(s)),t}function ze(n,e){z||(z=new TextDecoder);const t=[];let s=0,r=-1,i=!1;return new TransformStream({transform(o,h){for(t.push(o);;){if(s===0){if(P(t)<1)break;const l=L(t,1);i=(l[0]&128)===128,r=l[0]&127,r<126?s=3:r===126?s=1:s=2}else if(s===1){if(P(t)<2)break;const l=L(t,2);r=new DataView(l.buffer,l.byteOffset,l.length).getUint16(0),s=3}else if(s===2){if(P(t)<8)break;const l=L(t,8),y=new DataView(l.buffer,l.byteOffset,l.length),d=y.getUint32(0);if(d>Math.pow(2,21)-1){h.enqueue(te);break}r=d*Math.pow(2,32)+y.getUint32(4),s=3}else{if(P(t)<r)break;const l=L(t,r);h.enqueue(fe(i?l:z.decode(l),e)),s=0}if(r===0||r>n){h.enqueue(te);break}}}})}const Re=4;function g(n){if(n)return Xe(n)}function Xe(n){for(var e in g.prototype)n[e]=g.prototype[e];return n}g.prototype.on=g.prototype.addEventListener=function(n,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+n]=this._callbacks["$"+n]||[]).push(e),this};g.prototype.once=function(n,e){function t(){this.off(n,t),e.apply(this,arguments)}return t.fn=e,this.on(n,t),this};g.prototype.off=g.prototype.removeListener=g.prototype.removeAllListeners=g.prototype.removeEventListener=function(n,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks["$"+n];if(!t)return this;if(arguments.length==1)return delete this._callbacks["$"+n],this;for(var s,r=0;r<t.length;r++)if(s=t[r],s===e||s.fn===e){t.splice(r,1);break}return t.length===0&&delete this._callbacks["$"+n],this};g.prototype.emit=function(n){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),t=this._callbacks["$"+n],s=1;s<arguments.length;s++)e[s-1]=arguments[s];if(t){t=t.slice(0);for(var s=0,r=t.length;s<r;++s)t[s].apply(this,e)}return this};g.prototype.emitReserved=g.prototype.emit;g.prototype.listeners=function(n){return this._callbacks=this._callbacks||{},this._callbacks["$"+n]||[]};g.prototype.hasListeners=function(n){return!!this.listeners(n).length};const G=typeof Promise=="function"&&typeof Promise.resolve=="function"?e=>Promise.resolve().then(e):(e,t)=>t(e,0),E=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),Qe="arraybuffer";function Be(n,...e){return e.reduce((t,s)=>(n.hasOwnProperty(s)&&(t[s]=n[s]),t),{})}const Ze=E.setTimeout,et=E.clearTimeout;function j(n,e){e.useNativeTimers?(n.setTimeoutFn=Ze.bind(E),n.clearTimeoutFn=et.bind(E)):(n.setTimeoutFn=E.setTimeout.bind(E),n.clearTimeoutFn=E.clearTimeout.bind(E))}const tt=1.33;function st(n){return typeof n=="string"?nt(n):Math.ceil((n.byteLength||n.size)*tt)}function nt(n){let e=0,t=0;for(let s=0,r=n.length;s<r;s++)e=n.charCodeAt(s),e<128?t+=1:e<2048?t+=2:e<55296||e>=57344?t+=3:(s++,t+=4);return t}function xe(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function rt(n){let e="";for(let t in n)n.hasOwnProperty(t)&&(e.length&&(e+="&"),e+=encodeURIComponent(t)+"="+encodeURIComponent(n[t]));return e}function it(n){let e={},t=n.split("&");for(let s=0,r=t.length;s<r;s++){let i=t[s].split("=");e[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return e}class ot extends Error{constructor(e,t,s){super(e),this.description=t,this.context=s,this.type="TransportError"}}class pe extends g{constructor(e){super(),this.writable=!1,j(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,t,s){return super.emitReserved("error",new ot(e,t,s)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(e){this.readyState==="open"&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=fe(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return e.indexOf(":")===-1?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(this.opts.port)!==443||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(e){const t=rt(e);return t.length?"?"+t:""}}class at extends pe{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this._polling||!this.writable){let s=0;this._polling&&(s++,this.once("pollComplete",function(){--s||t()})),this.writable||(s++,this.once("drain",function(){--s||t()}))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){const t=s=>{if(this.readyState==="opening"&&s.type==="open"&&this.onOpen(),s.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(s)};Ke(e,this.socket.binaryType).forEach(t),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const e=()=>{this.write([{type:"close"}])};this.readyState==="open"?e():this.once("open",e)}write(e){this.writable=!1,Ye(e,t=>{this.doWrite(t,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return this.opts.timestampRequests!==!1&&(t[this.opts.timestampParam]=xe()),!this.supportsBinary&&!t.sid&&(t.b64=1),this.createUri(e,t)}}let Ne=!1;try{Ne=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const ct=Ne;function ht(){}class ut extends at{constructor(e){if(super(e),typeof location<"u"){const t=location.protocol==="https:";let s=location.port;s||(s=t?"443":"80"),this.xd=typeof location<"u"&&e.hostname!==location.hostname||s!==e.port}}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",(r,i)=>{this.onError("xhr post error",r,i)})}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(t,s)=>{this.onError("xhr poll error",t,s)}),this.pollXhr=e}}class v extends g{constructor(e,t,s){super(),this.createRequest=e,j(this,s),this._opts=s,this._method=s.method||"GET",this._uri=t,this._data=s.data!==void 0?s.data:null,this._create()}_create(){var e;const t=Be(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this._opts.xd;const s=this._xhr=this.createRequest(t);try{s.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){s.setDisableHeaderCheck&&s.setDisableHeaderCheck(!0);for(let r in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(r)&&s.setRequestHeader(r,this._opts.extraHeaders[r])}}catch{}if(this._method==="POST")try{s.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{s.setRequestHeader("Accept","*/*")}catch{}(e=this._opts.cookieJar)===null||e===void 0||e.addCookies(s),"withCredentials"in s&&(s.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(s.timeout=this._opts.requestTimeout),s.onreadystatechange=()=>{var r;s.readyState===3&&((r=this._opts.cookieJar)===null||r===void 0||r.parseCookies(s.getResponseHeader("set-cookie"))),s.readyState===4&&(s.status===200||s.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof s.status=="number"?s.status:0)},0))},s.send(this._data)}catch(r){this.setTimeoutFn(()=>{this._onError(r)},0);return}typeof document<"u"&&(this._index=v.requestsCount++,v.requests[this._index]=this)}_onError(e){this.emitReserved("error",e,this._xhr),this._cleanup(!0)}_cleanup(e){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=ht,e)try{this._xhr.abort()}catch{}typeof document<"u"&&delete v.requests[this._index],this._xhr=null}}_onLoad(){const e=this._xhr.responseText;e!==null&&(this.emitReserved("data",e),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}v.requestsCount=0;v.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",ve);else if(typeof addEventListener=="function"){const n="onpagehide"in E?"pagehide":"unload";addEventListener(n,ve,!1)}}function ve(){for(let n in v.requests)v.requests.hasOwnProperty(n)&&v.requests[n].abort()}const lt=function(){const n=Pe({xdomain:!1});return n&&n.responseType!==null}();class ft extends ut{constructor(e){super(e);const t=e&&e.forceBase64;this.supportsBinary=lt&&!t}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new v(Pe,this.uri(),e)}}function Pe(n){const e=n.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!e||ct))return new XMLHttpRequest}catch{}if(!e)try{return new E[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const Le=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class pt extends pe{get name(){return"websocket"}doOpen(){const e=this.uri(),t=this.opts.protocols,s=Le?{}:Be(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,t,s)}catch(r){return this.emitReserved("error",r)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],r=t===e.length-1;le(s,this.supportsBinary,i=>{try{this.doWrite(s,i)}catch{}r&&G(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=xe()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}}const X=E.WebSocket||E.MozWebSocket;class dt extends pt{createSocket(e,t,s){return Le?new X(e,t,s):t?new X(e,t):new X(e)}doWrite(e,t){this.ws.send(t)}}class yt extends pe{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved("error",e)}this._transport.closed.then(()=>{this.onClose()}).catch(e=>{this.onError("webtransport error",e)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(e=>{const t=ze(Number.MAX_SAFE_INTEGER,this.socket.binaryType),s=e.readable.pipeThrough(t).getReader(),r=We();r.readable.pipeTo(e.writable),this._writer=r.writable.getWriter();const i=()=>{s.read().then(({done:h,value:l})=>{h||(this.onPacket(l),i())}).catch(h=>{})};i();const o={type:"open"};this.query.sid&&(o.data=`{"sid":"${this.query.sid}"}`),this._writer.write(o).then(()=>this.onOpen())})})}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],r=t===e.length-1;this._writer.write(s).then(()=>{r&&G(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var e;(e=this._transport)===null||e===void 0||e.close()}}const mt={websocket:dt,webtransport:yt,polling:ft},gt=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,wt=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function se(n){if(n.length>8e3)throw"URI too long";const e=n,t=n.indexOf("["),s=n.indexOf("]");t!=-1&&s!=-1&&(n=n.substring(0,t)+n.substring(t,s).replace(/:/g,";")+n.substring(s,n.length));let r=gt.exec(n||""),i={},o=14;for(;o--;)i[wt[o]]=r[o]||"";return t!=-1&&s!=-1&&(i.source=e,i.host=i.host.substring(1,i.host.length-1).replace(/;/g,":"),i.authority=i.authority.replace("[","").replace("]","").replace(/;/g,":"),i.ipv6uri=!0),i.pathNames=_t(i,i.path),i.queryKey=Et(i,i.query),i}function _t(n,e){const t=/\/{2,9}/g,s=e.replace(t,"/").split("/");return(e.slice(0,1)=="/"||e.length===0)&&s.splice(0,1),e.slice(-1)=="/"&&s.splice(s.length-1,1),s}function Et(n,e){const t={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(s,r,i){r&&(t[r]=i)}),t}const ne=typeof addEventListener=="function"&&typeof removeEventListener=="function",U=[];ne&&addEventListener("offline",()=>{U.forEach(n=>n())},!1);class $ extends g{constructor(e,t){if(super(),this.binaryType=Qe,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&typeof e=="object"&&(t=e,e=null),e){const s=se(e);t.hostname=s.host,t.secure=s.protocol==="https"||s.protocol==="wss",t.port=s.port,s.query&&(t.query=s.query)}else t.host&&(t.hostname=se(t.host).host);j(this,t),this.secure=t.secure!=null?t.secure:typeof location<"u"&&location.protocol==="https:",t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=t.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},t.transports.forEach(s=>{const r=s.prototype.name;this.transports.push(r),this._transportsByName[r]=s}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=it(this.opts.query)),ne&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},U.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=Re,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](s)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const e=this.opts.rememberUpgrade&&$.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const t=this.createTransport(e);t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",t=>this._onClose("transport close",t))}onOpen(){this.readyState="open",$.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(e){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const t=new Error("server error");t.code=e.data,this._onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data);break}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let s=0;s<this.writeBuffer.length;s++){const r=this.writeBuffer[s].data;if(r&&(t+=st(r)),s>0&&t>this._maxPayload)return this.writeBuffer.slice(0,s);t+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,G(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),e}write(e,t,s){return this._sendPacket("message",e,t,s),this}send(e,t,s){return this._sendPacket("message",e,t,s),this}_sendPacket(e,t,s,r){if(typeof t=="function"&&(r=t,t=void 0),typeof s=="function"&&(r=s,s=null),this.readyState==="closing"||this.readyState==="closed")return;s=s||{},s.compress=s.compress!==!1;const i={type:e,data:t,options:s};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}close(){const e=()=>{this._onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?s():e()}):this.upgrading?s():e()),this}_onError(e){if($.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",e),this._onClose("transport error",e)}_onClose(e,t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),ne&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const s=U.indexOf(this._offlineEventListener);s!==-1&&U.splice(s,1)}this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this._prevBufferLen=0}}}$.protocol=Re;class bt extends ${constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let t=this.createTransport(e),s=!1;$.priorWebsocketSuccess=!1;const r=()=>{s||(t.send([{type:"ping",data:"probe"}]),t.once("packet",m=>{if(!s)if(m.type==="pong"&&m.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;$.priorWebsocketSuccess=t.name==="websocket",this.transport.pause(()=>{s||this.readyState!=="closed"&&(d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())})}else{const w=new Error("probe error");w.transport=t.name,this.emitReserved("upgradeError",w)}}))};function i(){s||(s=!0,d(),t.close(),t=null)}const o=m=>{const w=new Error("probe error: "+m);w.transport=t.name,i(),this.emitReserved("upgradeError",w)};function h(){o("transport closed")}function l(){o("socket closed")}function y(m){t&&m.name!==t.name&&i()}const d=()=>{t.removeListener("open",r),t.removeListener("error",o),t.removeListener("close",h),this.off("close",l),this.off("upgrading",y)};t.once("open",r),t.once("error",o),t.once("close",h),this.once("close",l),this.once("upgrading",y),this._upgrades.indexOf("webtransport")!==-1&&e!=="webtransport"?this.setTimeoutFn(()=>{s||t.open()},200):t.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){const t=[];for(let s=0;s<e.length;s++)~this.transports.indexOf(e[s])&&t.push(e[s]);return t}}let Tt=class extends bt{constructor(e,t={}){const s=typeof e=="object"?e:t;(!s.transports||s.transports&&typeof s.transports[0]=="string")&&(s.transports=(s.transports||["polling","websocket","webtransport"]).map(r=>mt[r]).filter(r=>!!r)),super(e,s)}};function vt(n,e="",t){let s=n;t=t||typeof location<"u"&&location,n==null&&(n=t.protocol+"//"+t.host),typeof n=="string"&&(n.charAt(0)==="/"&&(n.charAt(1)==="/"?n=t.protocol+n:n=t.host+n),/^(https?|wss?):\/\//.test(n)||(typeof t<"u"?n=t.protocol+"//"+n:n="https://"+n),s=se(n)),s.port||(/^(http|ws)$/.test(s.protocol)?s.port="80":/^(http|ws)s$/.test(s.protocol)&&(s.port="443")),s.path=s.path||"/";const i=s.host.indexOf(":")!==-1?"["+s.host+"]":s.host;return s.id=s.protocol+"://"+i+":"+s.port+e,s.href=s.protocol+"://"+i+(t&&t.port===s.port?"":":"+s.port),s}const kt=typeof ArrayBuffer=="function",At=n=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(n):n.buffer instanceof ArrayBuffer,Ie=Object.prototype.toString,St=typeof Blob=="function"||typeof Blob<"u"&&Ie.call(Blob)==="[object BlobConstructor]",Ot=typeof File=="function"||typeof File<"u"&&Ie.call(File)==="[object FileConstructor]";function de(n){return kt&&(n instanceof ArrayBuffer||At(n))||St&&n instanceof Blob||Ot&&n instanceof File}function D(n,e){if(!n||typeof n!="object")return!1;if(Array.isArray(n)){for(let t=0,s=n.length;t<s;t++)if(D(n[t]))return!0;return!1}if(de(n))return!0;if(n.toJSON&&typeof n.toJSON=="function"&&arguments.length===1)return D(n.toJSON(),!0);for(const t in n)if(Object.prototype.hasOwnProperty.call(n,t)&&D(n[t]))return!0;return!1}function Ct(n){const e=[],t=n.data,s=n;return s.data=re(t,e),s.attachments=e.length,{packet:s,buffers:e}}function re(n,e){if(!n)return n;if(de(n)){const t={_placeholder:!0,num:e.length};return e.push(n),t}else if(Array.isArray(n)){const t=new Array(n.length);for(let s=0;s<n.length;s++)t[s]=re(n[s],e);return t}else if(typeof n=="object"&&!(n instanceof Date)){const t={};for(const s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t[s]=re(n[s],e));return t}return n}function $t(n,e){return n.data=ie(n.data,e),delete n.attachments,n}function ie(n,e){if(!n)return n;if(n&&n._placeholder===!0){if(typeof n.num=="number"&&n.num>=0&&n.num<e.length)return e[n.num];throw new Error("illegal attachments")}else if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t]=ie(n[t],e);else if(typeof n=="object")for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=ie(n[t],e));return n}const Rt=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var p;(function(n){n[n.CONNECT=0]="CONNECT",n[n.DISCONNECT=1]="DISCONNECT",n[n.EVENT=2]="EVENT",n[n.ACK=3]="ACK",n[n.CONNECT_ERROR=4]="CONNECT_ERROR",n[n.BINARY_EVENT=5]="BINARY_EVENT",n[n.BINARY_ACK=6]="BINARY_ACK"})(p||(p={}));class Bt{constructor(e){this.replacer=e}encode(e){return(e.type===p.EVENT||e.type===p.ACK)&&D(e)?this.encodeAsBinary({type:e.type===p.EVENT?p.BINARY_EVENT:p.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id}):[this.encodeAsString(e)]}encodeAsString(e){let t=""+e.type;return(e.type===p.BINARY_EVENT||e.type===p.BINARY_ACK)&&(t+=e.attachments+"-"),e.nsp&&e.nsp!=="/"&&(t+=e.nsp+","),e.id!=null&&(t+=e.id),e.data!=null&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Ct(e),s=this.encodeAsString(t.packet),r=t.buffers;return r.unshift(s),r}}class ye extends g{constructor(e){super(),this.reviver=e}add(e){let t;if(typeof e=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const s=t.type===p.BINARY_EVENT;s||t.type===p.BINARY_ACK?(t.type=s?p.EVENT:p.ACK,this.reconstructor=new xt(t),t.attachments===0&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else if(de(e)||e.base64)if(this.reconstructor)t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+e)}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(p[s.type]===void 0)throw new Error("unknown packet type "+s.type);if(s.type===p.BINARY_EVENT||s.type===p.BINARY_ACK){const i=t+1;for(;e.charAt(++t)!=="-"&&t!=e.length;);const o=e.substring(i,t);if(o!=Number(o)||e.charAt(t)!=="-")throw new Error("Illegal attachments");s.attachments=Number(o)}if(e.charAt(t+1)==="/"){const i=t+1;for(;++t&&!(e.charAt(t)===","||t===e.length););s.nsp=e.substring(i,t)}else s.nsp="/";const r=e.charAt(t+1);if(r!==""&&Number(r)==r){const i=t+1;for(;++t;){const o=e.charAt(t);if(o==null||Number(o)!=o){--t;break}if(t===e.length)break}s.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=this.tryParse(e.substr(t));if(ye.isPayloadValid(s.type,i))s.data=i;else throw new Error("invalid payload")}return s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch{return!1}}static isPayloadValid(e,t){switch(e){case p.CONNECT:return ke(t);case p.DISCONNECT:return t===void 0;case p.CONNECT_ERROR:return typeof t=="string"||ke(t);case p.EVENT:case p.BINARY_EVENT:return Array.isArray(t)&&(typeof t[0]=="number"||typeof t[0]=="string"&&Rt.indexOf(t[0])===-1);case p.ACK:case p.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class xt{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const t=$t(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}function ke(n){return Object.prototype.toString.call(n)==="[object Object]"}const Nt=Object.freeze(Object.defineProperty({__proto__:null,Decoder:ye,Encoder:Bt,get PacketType(){return p}},Symbol.toStringTag,{value:"Module"}));function b(n,e,t){return n.on(e,t),function(){n.off(e,t)}}const Pt=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class qe extends g{constructor(e,t,s){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,s&&s.auth&&(this.auth=s.auth),this._opts=Object.assign({},s),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[b(e,"open",this.onopen.bind(this)),b(e,"packet",this.onpacket.bind(this)),b(e,"error",this.onerror.bind(this)),b(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){var s,r,i;if(Pt.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const o={type:p.EVENT,data:t};if(o.options={},o.options.compress=this.flags.compress!==!1,typeof t[t.length-1]=="function"){const d=this.ids++,m=t.pop();this._registerAckCallback(d,m),o.id=d}const h=(r=(s=this.io.engine)===null||s===void 0?void 0:s.transport)===null||r===void 0?void 0:r.writable,l=this.connected&&!(!((i=this.io.engine)===null||i===void 0)&&i._hasPingExpired());return this.flags.volatile&&!h||(l?(this.notifyOutgoingListeners(o),this.packet(o)):this.sendBuffer.push(o)),this.flags={},this}_registerAckCallback(e,t){var s;const r=(s=this.flags.timeout)!==null&&s!==void 0?s:this._opts.ackTimeout;if(r===void 0){this.acks[e]=t;return}const i=this.io.setTimeoutFn(()=>{delete this.acks[e];for(let h=0;h<this.sendBuffer.length;h++)this.sendBuffer[h].id===e&&this.sendBuffer.splice(h,1);t.call(this,new Error("operation has timed out"))},r),o=(...h)=>{this.io.clearTimeoutFn(i),t.apply(this,h)};o.withError=!0,this.acks[e]=o}emitWithAck(e,...t){return new Promise((s,r)=>{const i=(o,h)=>o?r(o):s(h);i.withError=!0,t.push(i),this.emit(e,...t)})}_addToQueue(e){let t;typeof e[e.length-1]=="function"&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push((r,...i)=>(this._queue[0],r!==null?s.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(r)):(this._queue.shift(),t&&t(null,...i)),s.pending=!1,this._drainQueue())),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||this._queue.length===0)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){typeof this.auth=="function"?this.auth(e=>{this._sendConnectPacket(e)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:p.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(e=>{if(!this.sendBuffer.some(s=>String(s.id)===e)){const s=this.acks[e];delete this.acks[e],s.withError&&s.call(this,new Error("socket has been disconnected"))}})}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case p.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case p.EVENT:case p.BINARY_EVENT:this.onevent(e);break;case p.ACK:case p.BINARY_ACK:this.onack(e);break;case p.DISCONNECT:this.ondisconnect();break;case p.CONNECT_ERROR:this.destroy();const s=new Error(e.data.message);s.data=e.data.data,this.emitReserved("connect_error",s);break}}onevent(e){const t=e.data||[];e.id!=null&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const s of t)s.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&typeof e[e.length-1]=="string"&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...r){s||(s=!0,t.packet({type:p.ACK,id:e,data:r}))}}onack(e){const t=this.acks[e.id];typeof t=="function"&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(e=>this.emitEvent(e)),this.receiveBuffer=[],this.sendBuffer.forEach(e=>{this.notifyOutgoingListeners(e),this.packet(e)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(e=>e()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:p.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const s of t)s.apply(this,e.data)}}}function B(n){n=n||{},this.ms=n.min||100,this.max=n.max||1e4,this.factor=n.factor||2,this.jitter=n.jitter>0&&n.jitter<=1?n.jitter:0,this.attempts=0}B.prototype.duration=function(){var n=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),t=Math.floor(e*this.jitter*n);n=Math.floor(e*10)&1?n+t:n-t}return Math.min(n,this.max)|0};B.prototype.reset=function(){this.attempts=0};B.prototype.setMin=function(n){this.ms=n};B.prototype.setMax=function(n){this.max=n};B.prototype.setJitter=function(n){this.jitter=n};class oe extends g{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&typeof e=="object"&&(t=e,e=void 0),t=t||{},t.path=t.path||"/socket.io",this.opts=t,j(this,t),this.reconnection(t.reconnection!==!1),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor((s=t.randomizationFactor)!==null&&s!==void 0?s:.5),this.backoff=new B({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(t.timeout==null?2e4:t.timeout),this._readyState="closed",this.uri=e;const r=t.parser||Nt;this.encoder=new r.Encoder,this.decoder=new r.Decoder,this._autoConnect=t.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return e===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return e===void 0?this._reconnectionDelay:(this._reconnectionDelay=e,(t=this.backoff)===null||t===void 0||t.setMin(e),this)}randomizationFactor(e){var t;return e===void 0?this._randomizationFactor:(this._randomizationFactor=e,(t=this.backoff)===null||t===void 0||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return e===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,(t=this.backoff)===null||t===void 0||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Tt(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const r=b(t,"open",function(){s.onopen(),e&&e()}),i=h=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",h),e?e(h):this.maybeReconnectOnOpen()},o=b(t,"error",i);if(this._timeout!==!1){const h=this._timeout,l=this.setTimeoutFn(()=>{r(),i(new Error("timeout")),t.close()},h);this.opts.autoUnref&&l.unref(),this.subs.push(()=>{this.clearTimeoutFn(l)})}return this.subs.push(r),this.subs.push(o),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(b(e,"ping",this.onping.bind(this)),b(e,"data",this.ondata.bind(this)),b(e,"error",this.onerror.bind(this)),b(e,"close",this.onclose.bind(this)),b(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(t){this.onclose("parse error",t)}}ondecoded(e){G(()=>{this.emitReserved("packet",e)},this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new qe(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const s of t)if(this.nsps[s].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let s=0;s<t.length;s++)this.engine.write(t[s],e.options)}cleanup(){this.subs.forEach(e=>e()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(e,t){var s;this.cleanup(),(s=this.engine)===null||s===void 0||s.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const s=this.setTimeoutFn(()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),!e.skipReconnect&&e.open(r=>{r?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",r)):e.onreconnect()}))},t);this.opts.autoUnref&&s.unref(),this.subs.push(()=>{this.clearTimeoutFn(s)})}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const x={};function F(n,e){typeof n=="object"&&(e=n,n=void 0),e=e||{};const t=vt(n,e.path||"/socket.io"),s=t.source,r=t.id,i=t.path,o=x[r]&&i in x[r].nsps,h=e.forceNew||e["force new connection"]||e.multiplex===!1||o;let l;return h?l=new oe(s,e):(x[r]||(x[r]=new oe(s,e)),l=x[r]),t.query&&!e.query&&(e.query=t.queryKey),l.socket(t.path,e)}Object.assign(F,{Manager:oe,Socket:qe,io:F,connect:F});function Lt(n){try{const e=JSON.parse(n);if(e&&typeof e=="object"){const t=e;return{message:typeof t.message=="string"?t.message:void 0,code:typeof t.code=="string"?t.code:void 0,details:t.details}}}catch{}return{}}class Ue extends Error{constructor(t,s,r){const i=Lt(r);super(i.message??`${s||"Request failed"} (${t})`);_(this,"status");_(this,"code");_(this,"details");_(this,"body");this.name="RequestError",this.status=t,this.code=i.code,this.details=i.details,this.body=r}}const T="item/folder",f="item",S="processor",It="npm-registry",O="hidden",Q="FILE",Z="TOOL",ee="APP";var a,ae,u,C,M,V,ce,he,De;const me=class me{constructor(e,t,s){K(this,a);_(this,"apiUrl");_(this,"accessToken");_(this,"wsUrl");_(this,"retries");_(this,"useBearer");_(this,"builtInGlobals",null);_(this,"localServerUrl",null);_(this,"context");const{retries:r=0,useBearer:i=!1,localServerUrl:o}=s||{};let h=t;if(h.charAt(h.length-1)==="/"&&(h=h.slice(0,-1)),this.apiUrl=`${h}/api`,this.accessToken=e,this.wsUrl=`${h}?accessToken=${e}`,this.retries=r,this.useBearer=i,this.context={appId:"",projectId:"",accessToken:e,apiUrl:t},o){let l=o;l.charAt(l.length-1)==="/"&&(l=l.slice(0,-1)),this.localServerUrl=l}}static fromPlatformContext(e){const t=(typeof window<"u"?window.__THATOPEN_CONTEXT__:null)||{appId:"",projectId:"",accessToken:"",apiUrl:""},s=new me(t.accessToken,t.apiUrl,{...e,useBearer:!0});return s.context=t,s}setRetries(e){this.retries=e}setBuiltInGlobals(e){this.builtInGlobals=e}async resolveAccessToken(){return this.accessToken}async request(e,t,s){return c(this,a,u).call(this,e,t,s)}async listFiles(e){const{folderId:t,archived:s,projectId:r}=e||{};return t?await c(this,a,u).call(this,"GET",`${T}/${t}/items`,{query:{itemType:Q,archived:s}}):await c(this,a,u).call(this,"GET",`${f}`,{query:{itemType:Q,archived:s,...r&&{projectId:r}}})}async getFile(e,t){return await c(this,a,he).call(this,e,t)}async createFile(e){return await c(this,a,V).call(this,e,Q)}async updateFile(e,t){return await c(this,a,ce).call(this,e,t)}async archiveFile(e){return await c(this,a,u).call(this,"DELETE",`${f}/${e}`)}async recoverFile(e){return await c(this,a,u).call(this,"PUT",`${f}/${e}/recover`)}async downloadFile(e,t){return await c(this,a,M).call(this,e,t)}async getFileVersionMetadata(e,t,s){const{withDraft:r}=s||{};return await c(this,a,u).call(this,"GET",`${f}/${encodeURIComponent(e)}/version/${encodeURIComponent(t)}/metadata`,{query:{...r&&{withDraft:"true"}}})}async updateFileVersionMetadata(e,t,s){return await c(this,a,u).call(this,"PUT",`${f}/${encodeURIComponent(e)}/version/${encodeURIComponent(t)}/metadata`,{body:JSON.stringify({metadata:s}),contentType:"application/json"})}async deleteFileVersionMetadata(e,t){return await c(this,a,u).call(this,"DELETE",`${f}/${encodeURIComponent(e)}/version/${encodeURIComponent(t)}/metadata`)}async listFolders(e){const{archived:t,parentFolderId:s,projectId:r}=e||{};return await c(this,a,u).call(this,"GET",T,{query:{parentFolderId:s,archived:t,...r&&{projectId:r}}})}async getFolder(e){return await c(this,a,u).call(this,"GET",`${T}/${e}`)}async createFolder(e,t,s){return await c(this,a,u).call(this,"POST",T,{body:JSON.stringify({name:e,...t&&{parentId:t},...s&&{projectId:s}}),contentType:"application/json"})}async updateFolder(e,t){const{name:s}=t;return await c(this,a,u).call(this,"PUT",`${T}/${e}`,{body:JSON.stringify({name:s}),contentType:"application/json"})}async archiveFolder(e){return await c(this,a,u).call(this,"DELETE",`${T}/${e}`)}async recoverFolder(e){return await c(this,a,u).call(this,"PUT",`${T}/${e}/recover`)}async downloadFolder(e){return await c(this,a,C).call(this,`${T}/${e}/download`)}async listComponents(e){const{folderId:t,ShowVersions:s,projectId:r}=e||{};return t?await c(this,a,u).call(this,"GET",`${T}/${t}/items`,{query:{itemType:Z,...s&&{ShowVersions:s}}}):await c(this,a,u).call(this,"GET",`${f}`,{query:{itemType:Z,...s&&{ShowVersions:s},...r&&{projectId:r}}})}async getComponent(e,t){return await c(this,a,he).call(this,e,t)}async createComponent(e){const{componentProps:t}=e;return await c(this,a,V).call(this,e,Z,t)}async updateComponent(e,t){const{componentProps:s}=t;return await c(this,a,ce).call(this,e,t,s)}async downloadComponent(e,t){return await c(this,a,M).call(this,e,t)}async downloadComponentBundle(e,t){const{versionTag:s,withDraft:r}=t||{};return await c(this,a,C).call(this,`${f}/${e}/download/bundle`,{query:{...s&&{versionTag:s},...r&&{withDraft:r}}})}async archiveComponent(e){return await c(this,a,u).call(this,"DELETE",`${f}/${e}`)}async recoverComponent(e){return await c(this,a,u).call(this,"PUT",`${f}/${e}/recover`)}async getBuiltInComponent(e){return await(await c(this,a,C).call(this,`built-in/${e}/bundle`)).text()}async initBuiltInComponent(e,t,s){const r=await this.getBuiltInComponent(e.uuid),i=s??this.builtInGlobals??(typeof window<"u"?window.ThatOpenCompany:{})??{},o=Object.keys(i),h=o.map(m=>i[m]),y=new Function(...o,`${r}
2
- return main;`)(...h),d=(y==null?void 0:y.componentDefinition)??y;t.get(d)}async initBuiltInComponents(e,...t){await Promise.all(t.map(s=>this.initBuiltInComponent(s,e)))}async setup(e,...t){var o,h;const s=e.OBC,r=e.BUI;if(!(s!=null&&s.Components))throw new Error("globals.OBC must include Components");if(!(r!=null&&r.Manager))throw new Error("globals.BUI must include Manager");const i=new s.Components;return r.Manager.init(),this.setBuiltInGlobals(e),await this.initBuiltInComponents(i,...t),i.init(),(h=(o=this.context.appEventOrchestrator)==null?void 0:o.appLoaded)==null||h.call(o),{components:i}}throwError(e,t){var s,r;(r=(s=this.context.appEventOrchestrator)==null?void 0:s.appError)==null||r.call(s,e,t)}async listApps(e){const{folderId:t,ShowVersions:s,projectId:r}=e||{};return t?await c(this,a,u).call(this,"GET",`${T}/${t}/items`,{query:{itemType:ee,...s&&{ShowVersions:s}}}):await c(this,a,u).call(this,"GET",`${f}`,{query:{itemType:ee,...s&&{ShowVersions:s},...r&&{projectId:r}}})}async createApp(e){const{appProps:t}=e;return await c(this,a,V).call(this,e,ee,t)}async downloadApp(e,t){return await c(this,a,M).call(this,e,t)}async downloadAppBundle(e,t){const{versionTag:s,withDraft:r}=t||{};return await c(this,a,C).call(this,`${f}/${e}/download/bundle`,{query:{...s&&{versionTag:s},...r&&{withDraft:r}}})}async archiveApp(e){return await c(this,a,u).call(this,"DELETE",`${f}/${e}`)}async getNpmCredentials(){return await c(this,a,u).call(this,"GET",`${It}/credentials`)}async executeComponent(e,t,s){if(this.localServerUrl){const r=`${this.localServerUrl}/api/${S}/${e}/execute`,i=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const o=await i.text().catch(()=>"");throw new Error(`Local server request failed: ${i.status} - ${o}`)}return await i.json()}return await c(this,a,u).call(this,"POST",`${S}/${e}/execute`,{body:JSON.stringify(t),query:{...s&&{versionTag:s}},contentType:"application/json"})}async abortExecution(e){if(this.localServerUrl){const t=`${this.localServerUrl}/api/${S}/progress/${e}/abort`,s=await fetch(t,{method:"POST"});if(!s.ok){const r=await s.text().catch(()=>"");throw new Error(`Local server request failed: ${s.status} - ${r}`)}return await s.json()}return await c(this,a,u).call(this,"POST",`${S}/progress/${e}/abort`)}async listExecutions(e,t){if(this.localServerUrl){const s=t?`?projectId=${encodeURIComponent(t)}`:"",r=`${this.localServerUrl}/api/${S}/${e}/progress${s}`,i=await fetch(r);if(!i.ok){const o=await i.text().catch(()=>"");throw new Error(`Local server request failed: ${i.status} - ${o}`)}return await i.json()}return await c(this,a,u).call(this,"GET",`${S}/${e}/progress`,{query:{...t&&{projectId:t}}})}async getExecution(e){if(this.localServerUrl){const t=`${this.localServerUrl}/api/${S}/progress/${e}`,s=await fetch(t);if(!s.ok){const r=await s.text().catch(()=>"");throw new Error(`Local server request failed: ${s.status} - ${r}`)}return await s.json()}return await c(this,a,u).call(this,"GET",`${S}/progress/${e}`)}async onExecutionProgress(e,t){const s=this.localServerUrl?`${this.localServerUrl}?accessToken=${this.accessToken}`:this.wsUrl,r=await F(s,{...this.localServerUrl&&{transports:["websocket"]}});r.on("connect",function(){r.emit("executionSubscription",JSON.stringify({executionId:e})),r.on("execution",i=>{t(i)})}),r.on("connect_error",function(i){console.log(i)})}async createHiddenFile(e,t){const s=new FormData;return s.append("file",e),s.append("parentItemId",t),await c(this,a,u).call(this,"POST",`${f}/${O}`,{body:s})}async createHiddenFilesBatch(e,t){const s=new FormData;for(const r of e)s.append("files",r);return s.append("parentItemId",t),await c(this,a,u).call(this,"POST",`${f}/${O}/batch`,{body:s})}async deleteHiddenFile(e){return await c(this,a,u).call(this,"DELETE",`${f}/${O}/${e}`)}async getHiddenFile(e){return await c(this,a,u).call(this,"GET",`${f}/${O}/${e}`)}async downloadHiddenFile(e){return await c(this,a,C).call(this,`${f}/${O}/${e}/download`)}async getHiddenFileSignedUrl(e,t){return await c(this,a,u).call(this,"GET",`${f}/${O}/${e}/signed-url`,{...t!=null&&{query:{expiresIn:t}}})}async getHiddenFilesByParent(e){return await c(this,a,u).call(this,"GET",`${f}/${e}/${O}`)}async deleteHiddenFilesByParent(e){return await c(this,a,u).call(this,"DELETE",`${f}/${e}/${O}`)}async uploadItemIcon(e,t){const s=new FormData;return s.append("icon",t),await c(this,a,u).call(this,"PUT",`${f}/${e}/icon`,{body:s})}async getItemIcon(e){return await c(this,a,C).call(this,`${f}/${e}/icon`)}async removeItemIcon(e){return await c(this,a,u).call(this,"DELETE",`${f}/${e}/icon`)}async updateItem(e,t){return await c(this,a,u).call(this,"PUT",`${f}/${e}`,{body:JSON.stringify(t),contentType:"application/json"})}async createVersion(e,t,s,r,i){const o=new FormData;return o.append("file",t),o.append("versionTag",s),r&&o.append("extraProps",JSON.stringify(r)),i&&o.append("metadata",JSON.stringify(i)),await c(this,a,u).call(this,"POST",`${f}/${e}/version`,{body:o})}async listVersions(e,t={}){return await c(this,a,u).call(this,"GET",`${f}/${encodeURIComponent(e)}/versions`,{query:t})}async archiveVersion(e,t){return await c(this,a,u).call(this,"PUT",`${f}/${encodeURIComponent(e)}/version/${encodeURIComponent(t)}/archive`)}async recoverVersion(e,t){return await c(this,a,u).call(this,"PUT",`${f}/${encodeURIComponent(e)}/version/${encodeURIComponent(t)}/recover`)}async deleteVersion(e,t){return await c(this,a,u).call(this,"DELETE",`${f}/${encodeURIComponent(e)}/version/${encodeURIComponent(t)}`)}};a=new WeakSet,ae=function(e){return`${this.apiUrl}/${e}`},u=async function(e,t,s){const{body:r,query:i,contentType:o,retries:h}=s||{},l=c(this,a,ae).call(this,t),y=c(this,a,De).call(this,i),d=await this.resolveAccessToken(),m={...y,...this.useBearer?{}:{accessToken:d}};try{const w=await fetch(l+"?"+new URLSearchParams(m).toString(),{method:e,headers:{Accept:"application/json",...o&&{"Content-Type":o},...this.useBearer&&{Authorization:`Bearer ${d}`}},...r&&{body:r}});if(!w.ok){const A=await w.text().then(Fe=>Fe).catch(()=>"");throw new Ue(w.status,w.statusText,A)}return w.json().then(A=>A).catch(()=>{})}catch(w){let A=h??this.retries;if(A)return A=A-1,await c(this,a,u).call(this,e,t,{...s,retries:A});throw w}},C=async function(e,t){const{query:s}=t||{},r=c(this,a,ae).call(this,e),i=await this.resolveAccessToken(),o={...s,...this.useBearer?{}:{accessToken:i}};return await fetch(r+"?"+new URLSearchParams(o).toString(),{method:"GET",...this.useBearer&&{headers:{Authorization:`Bearer ${i}`}}})},M=async function(e,t){const{versionTag:s,withDraft:r}=t||{};return await c(this,a,C).call(this,`${f}/${e}/download`,{query:{...s&&{versionTag:s},...r&&{withDraft:r}}})},V=async function(e,t,s){const{name:r,versionTag:i,parentFolderId:o,projectId:h,file:l,metadata:y}=e,d=new FormData;return d.append("file",l),d.append("name",r),d.append("versionTag",i),d.append("itemType",t),o&&d.append("folderId",o),h&&d.append("projectId",h),s&&d.append("extraProps",JSON.stringify(s)),y&&d.append("metadata",JSON.stringify(y)),await c(this,a,u).call(this,"POST",f,{body:d})},ce=async function(e,t,s){const{name:r,versionTag:i,parentFolderId:o,file:h,metadata:l}=t;let y,d;if(h){const m=new FormData;m.append("file",h),i&&m.append("versionTag",i),s&&m.append("extraProps",JSON.stringify(s)),l&&m.append("metadata",JSON.stringify(l)),d=await c(this,a,u).call(this,"POST",`${f}/${e}/version`,{body:m})}if(r||o){const m={...r&&{name:r},...o&&{folderId:o}},w=JSON.stringify(m);y=await c(this,a,u).call(this,"PUT",`${f}/${e}`,{body:w,contentType:"application/json"})}return{item:y,version:d}},he=async function(e,t){const{showVersions:s=!1}=t||{};return await c(this,a,u).call(this,"GET",`${f}/${e}`,{query:{showVersions:s}})},De=function(e){return e&&Object.entries(e).filter(([,t])=>t!==void 0).reduce((t,[s,r])=>(t[s]=r,t),{})};let H=me;const I="project";var R;const ge=class ge extends H{constructor(t,s,r){super(typeof t=="string"?t:"",s,{...r,useBearer:!0});K(this,R);typeof t=="function"&&_e(this,R,t)}async resolveAccessToken(){return Y(this,R)?await Y(this,R).call(this):super.resolveAccessToken()}static fromPlatformContext(t){const s=(typeof window<"u"?window.__THATOPEN_CONTEXT__:null)||{appId:"",projectId:"",accessToken:"",apiUrl:""},r=new ge(s.accessToken,s.apiUrl,t);return r.context=s,r}async getProject(t){return await this.request("GET",`${I}/${t}`)}async getProjectData(t){return await this.request("GET",`${I}/${t}/data`)}async checkPermission(t){return await this.request("GET",`${I}/permissions/check`,{query:t})}async checkPermissionBatch(t){return(await this.request("POST",`${I}/permissions/check/batch`,{body:JSON.stringify({checks:t}),contentType:"application/json"})).results}};R=new WeakMap;let ue=ge;const qt={MAX_FIELDS:200,MAX_KEY_LENGTH:50,MAX_VALUE_LENGTH:50},Ut={uuid:"a3f82c1d-5b74-4e9a-bc30-d7e12f894a61"},Dt={uuid:"b0b5e2a2-0b3a-4a6b-8b1c-0b1c4a6b8b1c"},Ft={uuid:"2c4ae432-fc24-43e9-9783-0c960c674e96"},Mt={uuid:"234f1416-528d-452a-9cc9-a16c5239b2eb"};exports.CDEManager=Ut;exports.EngineServicesClient=H;exports.FileList=Dt;exports.HelloWorld=Ft;exports.METADATA_LIMITS=qt;exports.PlatformClient=ue;exports.RequestError=Ue;exports.UIManager=Mt;
2
+ return main;`)(...h),d=(y==null?void 0:y.componentDefinition)??y;t.get(d)}async initBuiltInComponents(e,...t){await Promise.all(t.map(s=>this.initBuiltInComponent(s,e)))}async setup(e,...t){var o,h;const s=e.OBC,r=e.BUI;if(!(s!=null&&s.Components))throw new Error("globals.OBC must include Components");if(!(r!=null&&r.Manager))throw new Error("globals.BUI must include Manager");const i=new s.Components;return r.Manager.init(),this.setBuiltInGlobals(e),await this.initBuiltInComponents(i,...t),i.init(),(h=(o=this.context.appEventOrchestrator)==null?void 0:o.appLoaded)==null||h.call(o),{components:i}}throwError(e,t){var s,r;(r=(s=this.context.appEventOrchestrator)==null?void 0:s.appError)==null||r.call(s,e,t)}async listApps(e){const{folderId:t,ShowVersions:s,projectId:r}=e||{};return t?await c(this,a,u).call(this,"GET",`${T}/${t}/items`,{query:{itemType:ee,...s&&{ShowVersions:s}}}):await c(this,a,u).call(this,"GET",`${f}`,{query:{itemType:ee,...s&&{ShowVersions:s},...r&&{projectId:r}}})}async createApp(e){const{appProps:t}=e;return await c(this,a,V).call(this,e,ee,t)}async downloadApp(e,t){return await c(this,a,M).call(this,e,t)}async downloadAppBundle(e,t){const{versionTag:s,withDraft:r}=t||{};return await c(this,a,C).call(this,`${f}/${e}/download/bundle`,{query:{...s&&{versionTag:s},...r&&{withDraft:r}}})}async archiveApp(e){return await c(this,a,u).call(this,"DELETE",`${f}/${e}`)}async getNpmCredentials(){return await c(this,a,u).call(this,"GET",`${It}/credentials`)}async executeComponent(e,t,s){if(this.localServerUrl){const r=`${this.localServerUrl}/api/${S}/${e}/execute`,i=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok){const o=await i.text().catch(()=>"");throw new Error(`Local server request failed: ${i.status} - ${o}`)}return await i.json()}return await c(this,a,u).call(this,"POST",`${S}/${e}/execute`,{body:JSON.stringify(t),query:{...s&&{versionTag:s}},contentType:"application/json"})}async abortExecution(e){if(this.localServerUrl){const t=`${this.localServerUrl}/api/${S}/progress/${e}/abort`,s=await fetch(t,{method:"POST"});if(!s.ok){const r=await s.text().catch(()=>"");throw new Error(`Local server request failed: ${s.status} - ${r}`)}return await s.json()}return await c(this,a,u).call(this,"POST",`${S}/progress/${e}/abort`)}async listExecutions(e,t){if(this.localServerUrl){const s=t?`?projectId=${encodeURIComponent(t)}`:"",r=`${this.localServerUrl}/api/${S}/${e}/progress${s}`,i=await fetch(r);if(!i.ok){const o=await i.text().catch(()=>"");throw new Error(`Local server request failed: ${i.status} - ${o}`)}return await i.json()}return await c(this,a,u).call(this,"GET",`${S}/${e}/progress`,{query:{...t&&{projectId:t}}})}async getExecution(e){if(this.localServerUrl){const t=`${this.localServerUrl}/api/${S}/progress/${e}`,s=await fetch(t);if(!s.ok){const r=await s.text().catch(()=>"");throw new Error(`Local server request failed: ${s.status} - ${r}`)}return await s.json()}return await c(this,a,u).call(this,"GET",`${S}/progress/${e}`)}async onExecutionProgress(e,t){const s=this.localServerUrl?`${this.localServerUrl}?accessToken=${this.accessToken}`:this.wsUrl,r=await F(s,{...this.localServerUrl&&{transports:["websocket"]}});r.on("connect",function(){r.emit("executionSubscription",JSON.stringify({executionId:e})),r.on("execution",i=>{t(i)})}),r.on("connect_error",function(i){console.log(i)})}async createHiddenFile(e,t){const s=new FormData;return s.append("file",e),s.append("parentItemId",t),await c(this,a,u).call(this,"POST",`${f}/${O}`,{body:s})}async createHiddenFilesBatch(e,t){const s=new FormData;for(const r of e)s.append("files",r);return s.append("parentItemId",t),await c(this,a,u).call(this,"POST",`${f}/${O}/batch`,{body:s})}async deleteHiddenFile(e){return await c(this,a,u).call(this,"DELETE",`${f}/${O}/${e}`)}async getHiddenFile(e){return await c(this,a,u).call(this,"GET",`${f}/${O}/${e}`)}async downloadHiddenFile(e){return await c(this,a,C).call(this,`${f}/${O}/${e}/download`)}async getHiddenFileSignedUrl(e,t){return await c(this,a,u).call(this,"GET",`${f}/${O}/${e}/signed-url`,{...t!=null&&{query:{expiresIn:t}}})}async getHiddenFilesByParent(e){return await c(this,a,u).call(this,"GET",`${f}/${e}/${O}`)}async deleteHiddenFilesByParent(e){return await c(this,a,u).call(this,"DELETE",`${f}/${e}/${O}`)}async uploadItemIcon(e,t){const s=new FormData;return s.append("icon",t),await c(this,a,u).call(this,"PUT",`${f}/${e}/icon`,{body:s})}async getItemIcon(e){return await c(this,a,C).call(this,`${f}/${e}/icon`)}async removeItemIcon(e){return await c(this,a,u).call(this,"DELETE",`${f}/${e}/icon`)}async updateItem(e,t){return await c(this,a,u).call(this,"PUT",`${f}/${e}`,{body:JSON.stringify(t),contentType:"application/json"})}async createVersion(e,t,s,r,i){const o=new FormData;return o.append("file",t),o.append("versionTag",s),r&&o.append("extraProps",JSON.stringify(r)),i&&o.append("metadata",JSON.stringify(i)),await c(this,a,u).call(this,"POST",`${f}/${e}/version`,{body:o})}async listVersions(e,t={}){return await c(this,a,u).call(this,"GET",`${f}/${encodeURIComponent(e)}/versions`,{query:t})}async archiveVersion(e,t){return await c(this,a,u).call(this,"PUT",`${f}/${encodeURIComponent(e)}/version/${encodeURIComponent(t)}/archive`)}async recoverVersion(e,t){return await c(this,a,u).call(this,"PUT",`${f}/${encodeURIComponent(e)}/version/${encodeURIComponent(t)}/recover`)}async deleteVersion(e,t){return await c(this,a,u).call(this,"DELETE",`${f}/${encodeURIComponent(e)}/version/${encodeURIComponent(t)}`)}};a=new WeakSet,ae=function(e){return`${this.apiUrl}/${e}`},u=async function(e,t,s){const{body:r,query:i,contentType:o,retries:h}=s||{},l=c(this,a,ae).call(this,t),y=c(this,a,De).call(this,i),d=await this.resolveAccessToken(),m={...y,...this.useBearer?{}:{accessToken:d}};try{const w=await fetch(l+"?"+new URLSearchParams(m).toString(),{method:e,headers:{Accept:"application/json",...o&&{"Content-Type":o},...this.useBearer&&{Authorization:`Bearer ${d}`}},...r&&{body:r}});if(!w.ok){const A=await w.text().then(Fe=>Fe).catch(()=>"");throw new Ue(w.status,w.statusText,A)}return w.json().then(A=>A).catch(()=>{})}catch(w){let A=h??this.retries;if(A)return A=A-1,await c(this,a,u).call(this,e,t,{...s,retries:A});throw w}},C=async function(e,t){const{query:s}=t||{},r=c(this,a,ae).call(this,e),i=await this.resolveAccessToken(),o={...s,...this.useBearer?{}:{accessToken:i}};return await fetch(r+"?"+new URLSearchParams(o).toString(),{method:"GET",...this.useBearer&&{headers:{Authorization:`Bearer ${i}`}}})},M=async function(e,t){const{versionTag:s,withDraft:r}=t||{};return await c(this,a,C).call(this,`${f}/${e}/download`,{query:{...s&&{versionTag:s},...r&&{withDraft:r}}})},V=async function(e,t,s){const{name:r,versionTag:i,parentFolderId:o,projectId:h,file:l,metadata:y}=e,d=new FormData;return d.append("file",l),d.append("name",r),d.append("versionTag",i),d.append("itemType",t),o&&d.append("folderId",o),h&&d.append("projectId",h),s&&d.append("extraProps",JSON.stringify(s)),y&&d.append("metadata",JSON.stringify(y)),await c(this,a,u).call(this,"POST",f,{body:d})},ce=async function(e,t,s){const{name:r,versionTag:i,parentFolderId:o,file:h,metadata:l}=t;let y,d;if(h){const m=new FormData;m.append("file",h),i&&m.append("versionTag",i),s&&m.append("extraProps",JSON.stringify(s)),l&&m.append("metadata",JSON.stringify(l)),d=await c(this,a,u).call(this,"POST",`${f}/${e}/version`,{body:m})}if(r||o){const m={...r&&{name:r},...o&&{folderId:o}},w=JSON.stringify(m);y=await c(this,a,u).call(this,"PUT",`${f}/${e}`,{body:w,contentType:"application/json"})}return{item:y,version:d}},he=async function(e,t){const{showVersions:s=!1}=t||{};return await c(this,a,u).call(this,"GET",`${f}/${e}`,{query:{showVersions:s}})},De=function(e){return e&&Object.entries(e).filter(([,t])=>t!==void 0).reduce((t,[s,r])=>(t[s]=r,t),{})};let H=me;const I="project";var R;const ge=class ge extends H{constructor(t,s,r){super(typeof t=="string"?t:"",s,{...r,useBearer:!0});K(this,R);typeof t=="function"&&_e(this,R,t)}async resolveAccessToken(){return Y(this,R)?await Y(this,R).call(this):super.resolveAccessToken()}static fromPlatformContext(t){const s=(typeof window<"u"?window.__THATOPEN_CONTEXT__:null)||{appId:"",projectId:"",accessToken:"",apiUrl:""},r=new ge(s.accessToken,s.apiUrl,t);return r.context=s,r}async getProject(t){return await this.request("GET",`${I}/${t}`)}async getProjectData(t){return await this.request("GET",`${I}/${t}/data`)}async checkPermission(t){return await this.request("GET",`${I}/permissions/check`,{query:t})}async checkPermissionBatch(t){return(await this.request("POST",`${I}/permissions/check/batch`,{body:JSON.stringify({checks:t}),contentType:"application/json"})).results}};R=new WeakMap;let ue=ge;const qt={MAX_FIELDS:200,MAX_KEY_LENGTH:50,MAX_VALUE_LENGTH:50},Ut={uuid:"a3f82c1d-5b74-4e9a-bc30-d7e12f894a61"},Dt={uuid:"2c9f4e8d-3a1b-4c5e-9d7f-0a2b6c8e1d3f"},Ft={uuid:"b0b5e2a2-0b3a-4a6b-8b1c-0b1c4a6b8b1c"},Mt={uuid:"2c4ae432-fc24-43e9-9783-0c960c674e96"},Vt={uuid:"234f1416-528d-452a-9cc9-a16c5239b2eb"};exports.CDEManager=Ut;exports.ClashesManager=Dt;exports.EngineServicesClient=H;exports.FileList=Ft;exports.HelloWorld=Mt;exports.METADATA_LIMITS=qt;exports.PlatformClient=ue;exports.RequestError=Ue;exports.UIManager=Vt;