UNPKG

@salutejs/jazz-sdk-electron

Version:

Jazz SDK Electron

2 lines (1 loc) 19.9 kB
"use strict";var e=require("@salutejs/jazz-sdk-web"),t=require("ditox"),s=require("nrgy"),r=require("immer"),n=require("nrgy/store"),o=require("nrgy/mvc"),a=require("rxjs"),i=require("nrgy/rxjs");function c(){const e=window.JAZZ_SDK_ELECTRON_BRIDGE;if(void 0===e)throw new Error("Failed connect to the preload layer. Please setup createJazzSdkElectronPreload from @salutejs/jazz-sdk-electron/preload to preload layer of electron");return e}const d=s.atom(void 0),p=t.token({key:"JAZZ_SDK_ELECTRON_CONTEXT_TOKEN"}),l={Transport:t.token({key:"JAZZ_SDK_ELECTRON_TOKENS_TRANSPORT_TOKEN"}),Meta:t.token({key:"JAZZ_SDK_ELECTRON_META_INFO_TOKEN"})},u=t.token({key:"JAZZ_SDK_ELECTRON_ENDPOINT_CONTEXT_TOKEN"}),b={Transport:t.token({key:"JAZZ_SDK_ELECTRON_ENDPOINT_TOKENS_TRANSPORT_TOKEN"})},f="jazz-sdk-multi-window-transport-channel",y="jazz-sdk-multi-window-transport-send-port-channel",_="jazz-sdk-multi-window-transport-context-bridge",g=t.token({key:"MULTI_WINDOW_TRANSPORT_SERVICE_TOKEN"});var m=Object.defineProperty,h=(e,t,s)=>((e,t,s)=>t in e?m(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const E=()=>{};class T{constructor(e){h(this,"isDestroyed",!1),h(this,"__subscribers",{}),h(this,"name"),h(this,"on",((e,t)=>{if(this.isDestroyed)return E;const s=this.__subscribers[e];return s?s.add(t):this.__subscribers[e]=new Set([t]),this.off.bind(this,e,t)})),h(this,"off",((e,t)=>{if(this.isDestroyed)return;const s=this.__subscribers[e];!s||!s.size||(s.delete(t),s.size||delete this.__subscribers[e])})),h(this,"send",((e,...t)=>{if(this.isDestroyed)return;const s=this.__subscribers[e];if(s&&s.size)for(const r of s)queueMicrotask((()=>{r(e,...t)}))})),h(this,"destroy",(()=>{this.isDestroyed||(this.isDestroyed=!0,setTimeout((()=>{for(const e in this.__subscribers)this.__subscribers[e].clear();this.__subscribers={}}),0))})),this.name=(null==e?void 0:e.name)??void 0}}class v{constructor(e){h(this,"name"),h(this,"__node"),h(this,"on",((e,t)=>this.__node.on(e,t))),h(this,"off",((e,t)=>this.__node.off(e,t))),this.name=e.name?`${e.name}__readonly_node`:void 0,this.__node=e}}class S{constructor(e){h(this,"__root"),h(this,"__isRoot",!1),h(this,"name"),h(this,"getTransports",(()=>({"":[this.__root]}))),h(this,"on",((e,t)=>this.__root.on(e,t))),h(this,"once",((e,t)=>this.__root.once(e,t))),h(this,"off",((e,t)=>this.__root.off(e,t))),this.__root=e,e.name&&(this.name=`${e.name}__readonly_node`)}get isDestroyed(){return this.__root.isDestroyed}get lifecycle(){return this.__root.lifecycle}}const w=new WeakMap;class z{constructor(e){h(this,"__subscribers",new Map),h(this,"__onceCallbackMap",new Map),h(this,"__isRoot",!0),h(this,"isDestroyed",!1),h(this,"lifecycle"),h(this,"name"),h(this,"sync",!1),h(this,"on",((e,t)=>{if(this.isDestroyed)return E;const s=this.off.bind(this,e,t),r=this.__subscribers.get(e);if(r){if(r.has(t))return s;r.add(t);const n=w.get(this);n&&n.send("subscribe",{event:e,mode:"on",subscriber:t,subscribersCount:r.size})}else{this.__subscribers.set(e,new Set([t]));const s=w.get(this);s&&s.send("subscribe",{event:e,mode:"on",subscriber:t,subscribersCount:1})}return s})),h(this,"once",((e,t)=>{var s;if(this.isDestroyed)return E;const r=this.off.bind(this,e,t);if(null!=(s=this.__onceCallbackMap.get(e))&&s.has(t))return r;const n=(...s)=>(this.off(e,t),t(...s)),o=this.__onceCallbackMap.get(e);if(o)o.set(t,n);else{const s=new WeakMap;s.set(t,n),this.__onceCallbackMap.set(e,s)}const a=this.__subscribers.get(e);if(a){a.add(n);const s=w.get(this);s&&s.send("subscribe",{event:e,mode:"once",subscriber:t,subscribersCount:a.size})}else{this.__subscribers.set(e,new Set([n]));const s=w.get(this);s&&s.send("subscribe",{event:e,mode:"once",subscriber:t,subscribersCount:1})}return r})),h(this,"off",((e,t)=>{var s;if(this.isDestroyed)return;const r=this.__subscribers.get(e);if(!r||!r.size)return;const n=null==(s=this.__onceCallbackMap.get(e))?void 0:s.has(t);if(n){const s=this.__onceCallbackMap.get(e);if(!s)return;const n=s.get(t);if(!n)return;s.delete(t),r.delete(n),r.size||(this.__subscribers.delete(e),this.__onceCallbackMap.delete(e))}else r.delete(t),r.size||this.__subscribers.delete(e);const o=w.get(this);o&&o.send("unsubscribe",{event:e,mode:n?"once":"on",subscriber:t,subscribersCount:r.size})})),h(this,"send",((...e)=>{if(this.isDestroyed)return;const t=this.__subscribers.get(e[0]),s=this.__subscribers.get("*");if(null!=t&&t.size||null!=s&&s.size)if(this.sync){if(null!=t&&t.size)for(const s of t)s(...e);if(null!=s&&s.size)for(const t of s)t(...e)}else{if(null!=t&&t.size)for(const s of t)queueMicrotask((()=>{s(...e)}));if(null!=s&&s.size)for(const t of s)queueMicrotask((()=>{t(...e)}))}})),h(this,"asReadonly",(()=>new S(this))),h(this,"destroy",(()=>{if(this.isDestroyed)return;this.isDestroyed=!0;const e=w.get(this);e&&(e.send("destroy",void 0),e.destroy()),w.delete(this),setTimeout((()=>{this.__onceCallbackMap.clear();for(const e of this.__subscribers)e[1].clear();this.__subscribers.clear()}),0)})),e&&(this.name=e.name,void 0!==e.sync&&(this.sync=e.sync));const t=(s={name:null!=e&&e.name?`${null==e?void 0:e.name}__lifecycle`:void 0},new T(s));var s;this.lifecycle=function(e){return new v(e)}(t),w.set(this,t)}}const k=new Map;function N(e){if(null!=e&&e.shared&&e.name){const t=function({name:e,sync:t}){return`${e}_${t?"s":"as"}`}(e),s=k.get(t);if(s)return s;const r=new z(e);return r.lifecycle.on("destroy",(()=>{k.delete(t)})),k.set(t,r),r}return new z(e)}const R=n.declareStateUpdates()({addSubscribeEvent:(e,t,s)=>r.produce((r=>{const n=r.remoteSubscribers.get(t);if(n){const t=n.get(s);t?t.add(e):n.set(s,new Set([e]))}else{const n=new Set([e]),o=new Map;o.set(s,n),r.remoteSubscribers.set(t,o)}})),deleteSubscribeEvent:(e,t,s)=>r.produce((r=>{const n=r.remoteSubscribers.get(t);if(!n)return;const o=n.get(s);o&&(o.delete(e),o.size||n.delete(s),n.size||r.remoteSubscribers.delete(t))})),deleteSubscribeTransport:(e,t)=>r.produce((s=>{const r=s.remoteSubscribers.get(t);r&&r.forEach((t=>{t.delete(e)}))})),deleteRemoteWindow:e=>r.produce((t=>{t.remoteSubscribers.forEach((t=>{t.forEach((t=>t.delete(e)))}))})),addTransportInfo:(e,t,s,n,o)=>r.produce((r=>{const a=r.transports.get(t);a?a.add(e):r.transports.set(t,new Set([e])),r.transportsInfo.set(e,{name:t,modify:s,to:n,unsubscribe:o,subscribers:new Map})})),addLocalTransportSubscribe:(e,t,s,n)=>r.produce((r=>{const o=r.transportsInfo.get(e);o&&o.subscribers.set(t,{unsubscribe:s,handler:n})})),deleteLocalTransportSubscribe:(e,t)=>r.produce((s=>{const r=s.transportsInfo.get(e);r&&r.subscribers.delete(t)})),deleteLocalTransport:(e,t)=>r.produce((s=>{s.transports.get(t)?.delete(e),s.transportsInfo.delete(e)})),reset:()=>r.produce((e=>{e.transports.forEach((e=>{e.clear()})),e.remoteSubscribers.forEach((e=>{e.clear()})),e.remoteSubscribers.clear(),e.transports.clear()}))}),O=n.declareStore({options:{name:"multiWindowTransportStore"},initialState:{transports:new Map,transportsInfo:new Map,remoteSubscribers:new Map},updates:R}),C="mainWindow";async function D(t){return e.createModule({name:"MultiWindowTransportPlugin",token:g,imports:{sdkContext:e.JAZZ_SDK_CONTEXT_TOKEN},factory:e=>{const r=t?.ipcRenderer?function(e){const{ipcRenderer:t}=e,r=s.createScope();let n;const o=new Set,a=new Set;function i(e){for(const t of a)t(e.data)}function c(e){n=e.ports[0],n.onmessage=i,n.start(),r.onDestroy((()=>{n&&(n.close(),n.onmessage=null),n=void 0}))}function d(e,t){for(const e of o)e(t)}return r.onDestroy((()=>{o.clear(),a.clear()})),t.once(y,c),t.on(f,d),r.onDestroy((()=>{t.off(f,d),t.off(y,c)})),{sendServiceEvent:function(e){t.invoke(f,e)},sendTransportEvent:function(e){n&&n.postMessage(e)},onServiceEvents:function(e){return o.add(e),()=>o.delete(e)},onTransportsEvents:function(e){return a.add(e),()=>a.delete(e)},destroy:()=>{r.destroy()}}}({ipcRenderer:t.ipcRenderer}):function(){const e=window[_];if(void 0===e)throw new Error("Failed connect to the preload layer. Please setup @salutejs/jazz-sdk-electron-plugins/preload/multiWindowTransportPlugin to preload layer of electron");return e}();return function(e){const{logger:t,bridge:r,name:n=C}=e,o=s.createScope();if(!n){const e="register name setting is empty";throw t.error(e),new Error(e)}t.info("register service",n),r.sendServiceEvent({type:"service:register",payload:{name:n}}),o.onDestroy((()=>{r.sendServiceEvent({type:"service:unregister",payload:{name:n}})})),o.onDestroy(r.onServiceEvents((function(e){switch(t.info("service event",e.type,e.payload),e.type){case"service:initialized":e.payload.window===n&&(a.set(!0),c.send("isReady"));break;case"service:unregister":i.updates.deleteRemoteWindow(e.payload.window),i().remoteSubscribers.forEach(((e,t)=>{e.forEach(((e,s)=>{e.size||p(t,s)}))}));break;case"transport:unregister":{i.updates.deleteSubscribeTransport(e.payload.window,e.payload.transport);const t=i().remoteSubscribers.get(e.payload.transport);if(!t)break;t.forEach(((t,s)=>{t.size||p(e.payload.transport,s)}));break}case"transport:event:subscribe":{const t=i(),s=t.remoteSubscribers.get(e.payload.transport);i.updates.addSubscribeEvent(e.payload.window,e.payload.transport,e.payload.event);const r=s?.get(e.payload.event);if(!s||!r||!r.size){const s=t.transports.get(e.payload.transport);s?.forEach((s=>{const r=t.transportsInfo.get(s);if(!r||!b(r.to,e.payload.window))return;const n=(e,t)=>l(s,e,t),o=s.on(e.payload.event,n);i.updates.addLocalTransportSubscribe(s,e.payload.event,o,n)}))}break}case"transport:event:unsubscribe":i.updates.deleteSubscribeEvent(e.payload.window,e.payload.transport,e.payload.event),p(e.payload.transport,e.payload.event)}c.send(e.type,e.payload)}))),o.onDestroy(r.onTransportsEvents((function(e){const t=e.transport;if(!t)return;const s=i(),r=s.transports.get(t);r&&r.forEach((async t=>{const r=s.transportsInfo.get(t)?.modify,n=r?await r.get(e.event,e.payload):e.payload,o=d.get(t);o?o.set(e.event,n):d.set(t,new Map([[e.event,n]])),t.send(e.event,n)}))})));const a=o.atom(!1),i=o.add(O()),c=o.add(N({name:"multiWindowsServiceTransport"})),d=new Map;function p(e,t){const s=i(),r=s.transports.get(e);if(!r||!r.size)return;const n=s.remoteSubscribers.get(e),o=n?.get(t),a=n?.size&&o?.size;r.forEach((e=>{const r=s.transportsInfo.get(e);if(!r)return;if(a&&b(r.to,o))return;const n=r.subscribers.get(t);n&&e.off(t,n.handler),i.updates.deleteLocalTransportSubscribe(e,t)}))}async function l(e,t,s,n){const o=i(),a=d.get(e);if(a&&a.has(t)&&a.get(t)===s)return void setTimeout((()=>{a.delete(t)}),0);const c=o.transportsInfo.get(e)?.name??e.name;if(!c)return;const p=o.transportsInfo.get(e)?.modify,l=p?await p.send(t,s):s;r.sendTransportEvent({transport:c,event:t,payload:l,to:n})}function u(e,s){t.debug("release transport",s),i().transportsInfo.get(e)?.subscribers?.forEach((({unsubscribe:e})=>{e()})),i.updates.deleteLocalTransport(e,s);const n=i();0===(n.transports.get(s)?.size??0)&&r.sendServiceEvent({type:"transport:unregister",payload:{transport:s}})}function b(e,t){return!e||"*"===e||(Array.isArray(e)?e.some((e=>"string"==typeof t?e===t:t.has(e))):"string"==typeof t?e===t:t.has(e))}return o.onDestroy((()=>{i().transportsInfo.forEach((e=>{e.subscribers.forEach((e=>e.unsubscribe())),e.unsubscribe()})),i.updates.reset()})),{register:function(e){const{transport:s,name:n,modify:o,to:a}=e,c=n??s.name??"";if(!c){const e="name field and transport.name is empty in register with multiWindowPlugin";throw t.error(e),new Error(e)}const d=i(),p=d.transportsInfo.get(s);if(p)return{unsubscribe:p.unsubscribe};t.debug("register transport",c),d.transports.get(c)?.size||r.sendServiceEvent({type:"transport:register",payload:{transport:c,to:a||"*"}}),new Set([...s.__subscribers.keys(),...s.__onceCallbackMap.keys()]).forEach((e=>{r.sendServiceEvent({type:"transport:event:subscribe",payload:{transport:c,event:e}})}));const f=new Set;function y(){setTimeout((()=>{f.forEach((e=>e())),f.clear(),u(s,c||"")}),10)}i.updates.addTransportInfo(s,c,o,a,y);const _=d.remoteSubscribers.get(c);_&&_.size&&_.forEach(((e,t)=>{if(e.size&&b(a,e)){const e=(e,t)=>l(s,e,t),r=s.on(t,e);i.updates.addLocalTransportSubscribe(s,t,r,e)}}));const g=s.lifecycle.on("subscribe",((e,{event:n,subscribersCount:o,subscriber:a})=>{const d=i().transportsInfo.get(s)?.subscribers.get(n)?.handler;(1===o&&d!==a||o>1)&&(t.debug("subscribe to event",c,n),r.sendServiceEvent({type:"transport:event:subscribe",payload:{transport:c,event:n}}))})),m=s.lifecycle.on("unsubscribe",((e,{event:n,subscribersCount:o})=>{t.debug("unsubscribe to event",c,n);const a=i().transportsInfo.get(s)?.subscribers.get(n)?.handler;(!o||1===o&&a)&&r.sendServiceEvent({type:"transport:event:unsubscribe",payload:{transport:c,event:n}})})),h=s.lifecycle.on("destroy",(()=>{t.debug("destroy transport",c),u(s,c)}));return f.add(g),f.add(m),f.add(h),{unsubscribe:y}},unregister:function(e){const t=i().transportsInfo.get(e);t?.unsubscribe()},getIsReady:a,on:c.on,once:c.once,off:c.off,destroy:o.destroy}}({name:t?.name,bridge:r,logger:e.deps.sdkContext.logger.getLogger("MultiWindowTransportPlugin")})}})}const M=o.declareController().params().apply((({scope:e,params:t})=>{const{mwt:s,powerProfileRoot:r,rootFlags:n,flags:o}=t,a=r.cpu.logger.getLogger("desktop");a.debug("init");const i=n.get(),c=o.get(),d=e.add(N({name:"powerProfilePluginDesktopEvents"}));function p(){d.send("stop")}e.add(s.register({transport:d})),r.cpu.stop(),e.onDestroy(r.cpu.start),window.addEventListener("beforeunload",p),e.onDestroy((()=>{window.removeEventListener("beforeunload",p)}));let l=[],u=!1;e.onDestroy(d.on("system-usage",((e,t)=>{r.cpu.transport.send("usage",t),l.length>=10&&l.shift();const s=t.app.cpu>=c.degradationApp||t.system&&t.system.cpu>=c.degradationSystem,n=t.app.cpu<=c.normalizeApp||t.system&&t.system.cpu<=c.normalizeSystem;s?l.push("degradation"):n?l.push("normalize"):l.push("middle");if(l.filter((e=>"degradation"===e)).length>=i.degradationCount)return l=[],u=!0,a.warn("cpu is degradation",t),void r.cpu.transport.send("degradation",t);if(l.filter((e=>"normalize"===e)).length>=i.normalizeCount){if(!u)return;return l=[],void r.cpu.transport.send("degradation",t)}}))),d.send("start",{interval:n.get().interval,enableSystemMetrics:c.enableSystemMetrics})})),I=e.declareConfigFlags({enableSystemMetrics:e.declareBooleanFlag({key:"sdk.powerprofile.cpu.desktop.system.enabled",defaultValue:!1}),degradationApp:e.declareNumberFlag({key:"sdk.powerprofile.cpu.desktop.app.degradation",defaultValue:60}),normalizeApp:e.declareNumberFlag({key:"sdk.powerprofile.cpu.desktop.app.normalize",defaultValue:40}),degradationSystem:e.declareNumberFlag({key:"sdk.powerprofile.cpu.desktop.system.degradation",defaultValue:80}),normalizeSystem:e.declareNumberFlag({key:"sdk.powerprofile.cpu.desktop.system.normalize",defaultValue:50})}),{module:P,flagsToken:A}=e.declareFlagsModule(I),Z=e.declareRuntimeModule({factory:t.injectable((({mwt:e,powerProfileRoot:t,rootFlags:s,flags:r})=>new M({mwt:e,powerProfileRoot:t,rootFlags:s,flags:r})),{mwt:g,powerProfileRoot:e.POWER_PROFILE_PLUGIN_INTERNAL_SERVICE_TOKEN,rootFlags:e.POWER_PROFILE_CPU_FLAGS_TOKEN,flags:A})});const K=o.declareController().params().apply((({params:t,scope:s})=>{const{jazzActivity:r,transport:n,event$:o,participants:i}=t;s.add(r.event$.pipe(e.filterByType("reaction","raiseHand","releaseHand"),a.tap((e=>{n.send(e)}))).subscribe()),s.add(o.pipe(e.filterByType("participantLeft","participantJoined","participantUpdate","participants","localParticipantChanged","participantUpdate","localParticipantId","disconnecting"),a.tap(n.send)).subscribe()),s.onDestroy(n.on("registerEndpoint",(({endpointName:e})=>{const t=i.localParticipantId();t&&n.send({type:"localParticipantId",payload:{participantId:t},to:e}),n.send({type:"participants",payload:{participants:[...i.participantIds()].map((e=>{const t=i.getParticipant(e);return{...t,name:t.name()}}))},to:e}),n.send({type:"handsRaised",payload:{handsRaised:[...r.handsRaised()]},to:e});const s=i.localParticipant();s&&n.send({type:"localParticipantChanged",payload:{participant:s},to:e})})))})),L=e.declareRuntimeModule({factory:t.injectable((({jazzActivity:e,jazzRoom:t,transport:s,participants:r,jazzRoomContext:n})=>new K({event$:t.event$,jazzActivity:e,participants:r,transport:s,jazzRoomContext:n})),{transport:l.Transport,jazzActivity:e.JAZZ_ACTIVITY_TOKEN,jazzRoom:e.JazzRoomTokens.Room,participants:e.JazzRoomTokens.Participants,jazzRoomContext:e.JAZZ_ROOM_CONTEXT_TOKEN})});const J=[async function(){return e.createModule({name:"TransportEndpointSenderPlugin",imports:{jazzSdkContext:e.JAZZ_SDK_CONTEXT_TOKEN},factory:e=>{const{deps:{jazzSdkContext:t}}=e;return t.moduleManager.registerModule("addRoom",L),{}}})}(),D(),async function(){return e.createModule({name:"PowerProfileDesktopPlugin",imports:{jazzSdkContext:e.JAZZ_SDK_CONTEXT_TOKEN,flags:P},factory:e=>{const{deps:{jazzSdkContext:t}}=e;return t.moduleManager.registerModule("addRoom",Z),{}}})}()];const j="JAZZ_SDK_ELECTRON_IPC_CHANNEL",x=o.declareController().params().apply((({scope:e,params:t})=>{const{ipcRenderer:s}=t,r=e.signal(),n=(e,t)=>{r(t)};s.on(j,n),e.onDestroy((()=>{s.off(j,n)}));const o=new Map,c=(e,t)=>{const s=o.get(e);if(!s)return;const r=s.get(t);r&&(r.unsubscribe(),s.delete(t),0===s.size&&o.delete(e))},d=(e,t,s)=>{const r=o.get(e);if(!r)return o.set(e,new Map([[t,s]])),()=>c(e,t);return r.get(t)||o.get(e)?.set(t,s),()=>c(e,t)};e.onDestroy((()=>{o.forEach((e=>{e.forEach((e=>{e.unsubscribe()})),e.clear()})),o.clear()}));const p=(e,t)=>{const s=i.observe(r).pipe(a.filter((t=>t.type===e))).subscribe((e=>{"payload"in e?t(e.payload):t()}));return d(e,t,s)},l={send:e=>{s.send(j,e)},once:(e,t)=>{const s=i.observe(r).pipe(a.filter((t=>t.type===e)),a.take(1)).subscribe((s=>{c(e,t),"payload"in s?t(s.payload):t()}));return d(e,t,s)},on:p,subscribe:p,addListener:(...e)=>{p(...e)},off:c,removeListener:c,__invoke:async e=>s.invoke(j,e).then((e=>e.payload)),withType:()=>l};return l}));exports.JAZZ_SDK_ELECTRON_CONTEXT_TOKEN=p,exports.JAZZ_SDK_ELECTRON_ENDPOINT_CONTEXT_TOKEN=u,exports.JAZZ_SDK_MULTI_WINDOW_CONTEXT_BRIDGE=_,exports.JAZZ_SDK_MULTI_WINDOW_TRANSPORT_CHANNEL=f,exports.JAZZ_SDK_MULTI_WINDOW_TRANSPORT_SEND_PORT_CHANNEL=y,exports.JazzSdkElectronEndpointTokens=b,exports.JazzSdkElectronTokens=l,exports.MULTI_WINDOW_TRANSPORT_SERVICE_TOKEN=g,exports.TransportController=x,exports.createJazzSdkElectron=async function(s={}){const r=d();if(r&&"JazzSdkElectron"!==r)throw new Error(`${r} created already`);d.set("JazzSdkElectron");const{container:n,plugins:o=[]}=s,a=n??t.createContainer();a.bindValue(e.JAZZ_SDK_PLATFORM_TOKEN,"desktop");const{transport:i}=c(),u={transport:i},b=await new Promise((e=>{i.once("electron:meta:out",e),i.send({type:"electron:meta:in",to:"main"})}));a.bindValue(p,u),a.bindValue(l.Transport,i),a.bindValue(l.Meta,b);const f=[...J,...o],y=await e.createJazzSdk({...s,plugins:f,container:a});return{container:y.container,event$:y.event$,on:y.on,off:y.off,once:y.once,destroy:()=>{y.destroy()}}},exports.createJazzSdkElectronEndpoint=async function(s){const r=d();if(r&&"JazzSdkElectronEndpoint"!==r)throw new Error(`${r} created already`);d.set("JazzSdkElectronEndpoint");const{container:n,endpointName:o,bridge:a,ipcRenderer:i}=s,p=n??t.createContainer();p.bindValue(e.JAZZ_SDK_PLATFORM_TOKEN,"desktop");const l=[...s.plugins??[],D({name:o,ipcRenderer:i})],{transport:f}=a?a():c(),y={transport:f};p.bindValue(u,y),p.bindValue(b.Transport,f);const _=await e.createJazzSdk({...s,plugins:l,container:p}),{logger:g}=_.container.resolve(e.JAZZ_SDK_CONTEXT_TOKEN);return g.log(`=== Started the JazzSdkElectronEndpoint:${o} ===`),f.send({type:"registerEndpoint",payload:{endpointName:o}}),{container:_.container,destroy:()=>{_.destroy()}}},exports.getJazzSdkMetaInfo=function(e){return e.container.resolve(l.Meta)},exports.getMultiWindowTransport=function(e){return e.container.resolve(g)},exports.multiWindowTransportPlugin=D;