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