@dxos/client-services 0.1.56-next.a63ce79 → 0.1.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{chunk-UR4OBOCI.mjs → chunk-SUKLFUNG.mjs} +68 -64
- package/dist/lib/browser/chunk-SUKLFUNG.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +7 -7
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/packlets/testing/index.mjs +2 -2
- package/dist/lib/node/index.cjs +73 -69
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/packlets/testing/index.cjs +68 -64
- package/dist/lib/node/packlets/testing/index.cjs.map +3 -3
- package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/services/diagnostics.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/package.json +34 -34
- package/src/packlets/invitations/invitations-handler.ts +2 -0
- package/src/packlets/services/diagnostics.ts +2 -1
- package/src/packlets/services/service-context.ts +4 -4
- package/src/packlets/services/service-host.test.ts +1 -1
- package/src/packlets/spaces/data-space-manager.test.ts +80 -22
- package/src/packlets/spaces/data-space-manager.ts +5 -1
- package/src/packlets/spaces/spaces-service.ts +1 -1
- package/src/packlets/vault/worker-runtime.ts +1 -1
- package/src/version.ts +5 -1
- package/dist/lib/browser/chunk-UR4OBOCI.mjs.map +0 -7
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
subscribeToSignal,
|
|
32
32
|
subscribeToSpaces,
|
|
33
33
|
subscribeToSwarmInfo
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-SUKLFUNG.mjs";
|
|
35
35
|
|
|
36
36
|
// packages/sdk/client-services/src/packlets/vault/iframe-host-runtime.ts
|
|
37
37
|
import { Trigger } from "@dxos/async";
|
|
@@ -48,7 +48,7 @@ import { appServiceBundle, shellServiceBundle } from "@dxos/client-protocol";
|
|
|
48
48
|
import { invariant } from "@dxos/invariant";
|
|
49
49
|
import { ShellLayout } from "@dxos/protocols/proto/dxos/iframe";
|
|
50
50
|
import { createProtoRpcPeer } from "@dxos/rpc";
|
|
51
|
-
var __dxlog_file = "/
|
|
51
|
+
var __dxlog_file = "/mnt/ramdisk/work/packages/sdk/client-services/src/packlets/vault/shell-runtime.ts";
|
|
52
52
|
var ShellRuntimeImpl = class {
|
|
53
53
|
constructor(_port) {
|
|
54
54
|
this._port = _port;
|
|
@@ -120,7 +120,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
120
120
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
121
121
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
122
122
|
}
|
|
123
|
-
var __dxlog_file2 = "/
|
|
123
|
+
var __dxlog_file2 = "/mnt/ramdisk/work/packages/sdk/client-services/src/packlets/vault/iframe-host-runtime.ts";
|
|
124
124
|
var LOCK_KEY = "DXOS_RESOURCE_LOCK";
|
|
125
125
|
var IFrameHostRuntime = class {
|
|
126
126
|
constructor({ config, origin, appPort, shellPort }) {
|
|
@@ -235,7 +235,7 @@ import { log as log2 } from "@dxos/log";
|
|
|
235
235
|
import { WebRTCTransportService } from "@dxos/network-manager";
|
|
236
236
|
import { createProtoRpcPeer as createProtoRpcPeer2 } from "@dxos/rpc";
|
|
237
237
|
import { getAsyncValue as getAsyncValue2 } from "@dxos/util";
|
|
238
|
-
var __dxlog_file3 = "/
|
|
238
|
+
var __dxlog_file3 = "/mnt/ramdisk/work/packages/sdk/client-services/src/packlets/vault/iframe-proxy-runtime.ts";
|
|
239
239
|
var IFrameProxyRuntime = class {
|
|
240
240
|
constructor({ config, systemPort, shellPort }) {
|
|
241
241
|
this._id = String(Math.floor(Math.random() * 1e6));
|
|
@@ -327,7 +327,7 @@ function _ts_decorate2(decorators, target, key, desc) {
|
|
|
327
327
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
328
328
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
329
329
|
}
|
|
330
|
-
var __dxlog_file4 = "/
|
|
330
|
+
var __dxlog_file4 = "/mnt/ramdisk/work/packages/sdk/client-services/src/packlets/vault/worker-session.ts";
|
|
331
331
|
var WorkerSession = class {
|
|
332
332
|
constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }) {
|
|
333
333
|
this._startTrigger = new Trigger3();
|
|
@@ -481,7 +481,7 @@ _ts_decorate2([
|
|
|
481
481
|
], WorkerSession.prototype, "lockKey", void 0);
|
|
482
482
|
|
|
483
483
|
// packages/sdk/client-services/src/packlets/vault/worker-runtime.ts
|
|
484
|
-
var __dxlog_file5 = "/
|
|
484
|
+
var __dxlog_file5 = "/mnt/ramdisk/work/packages/sdk/client-services/src/packlets/vault/worker-runtime.ts";
|
|
485
485
|
var WorkerRuntime = class {
|
|
486
486
|
// prettier-ignore
|
|
487
487
|
constructor(_configProvider) {
|
|
@@ -525,7 +525,7 @@ var WorkerRuntime = class {
|
|
|
525
525
|
});
|
|
526
526
|
} catch (err) {
|
|
527
527
|
this._ready.wake(err);
|
|
528
|
-
log4.
|
|
528
|
+
log4.error("starting", err, {
|
|
529
529
|
F: __dxlog_file5,
|
|
530
530
|
L: 66,
|
|
531
531
|
S: this,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/packlets/vault/iframe-host-runtime.ts", "../../../src/packlets/vault/shell-runtime.ts", "../../../src/packlets/vault/iframe-proxy-runtime.ts", "../../../src/packlets/vault/worker-runtime.ts", "../../../src/packlets/vault/worker-session.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { PROXY_CONNECTION_TIMEOUT, ShellRuntime } from '@dxos/client-protocol';\nimport { Config } from '@dxos/config';\nimport { Context } from '@dxos/context';\nimport { log, logInfo } from '@dxos/log';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { createWebRTCTransportFactory, TransportFactory } from '@dxos/network-manager';\nimport { RpcPort } from '@dxos/rpc';\nimport { getAsyncValue, MaybePromise, Provider } from '@dxos/util';\n\nimport { ClientServicesHost } from '../services';\nimport { ClientRpcServer, ClientRpcServerParams } from '../services/client-rpc-server';\nimport { ShellRuntimeImpl } from './shell-runtime';\n\nconst LOCK_KEY = 'DXOS_RESOURCE_LOCK';\n\nexport type IFrameHostRuntimeParams = {\n config: Config | Provider<MaybePromise<Config>>;\n origin: string;\n appPort: RpcPort;\n shellPort?: RpcPort;\n};\n\n/**\n * Runs the client services in the main thread.\n *\n * Holds a lock over the client services such that only one instance can run at a time.\n * This should only be used when SharedWorker is not available.\n */\nexport class IFrameHostRuntime {\n private readonly _configProvider: IFrameHostRuntimeParams['config'];\n private readonly _ready = new Trigger<Error | undefined>();\n\n private readonly _appPort: RpcPort;\n private readonly _shellPort?: RpcPort;\n private _config!: Config;\n private _transportFactory!: TransportFactory;\n\n // TODO(dmaretskyi): Replace with host and figure out how to return services provider here.\n private _clientServices!: ClientServicesHost;\n private _clientRpc!: ClientRpcServer;\n private _shellRuntime?: ShellRuntimeImpl;\n\n @logInfo\n public origin: string;\n\n constructor({ config, origin, appPort, shellPort }: IFrameHostRuntimeParams) {\n this._configProvider = config;\n this.origin = origin;\n this._appPort = appPort;\n this._shellPort = shellPort;\n\n if (this._shellPort) {\n this._shellRuntime = new ShellRuntimeImpl(this._shellPort);\n }\n }\n\n get services() {\n return this._clientServices;\n }\n\n get shell(): ShellRuntime | undefined {\n return this._shellRuntime;\n }\n\n async start() {\n log('starting...');\n try {\n this._config = await getAsyncValue(this._configProvider);\n this._transportFactory = createWebRTCTransportFactory({\n iceServers: this._config.get('runtime.services.ice'),\n });\n const signals = this._config.get('runtime.services.signaling');\n this._clientServices = new ClientServicesHost({\n lockKey: LOCK_KEY,\n config: this._config,\n signalManager: signals\n ? new WebsocketSignalManager(signals)\n : new MemorySignalManager(new MemorySignalManagerContext()), // TODO(dmaretskyi): Inject this context.\n transportFactory: this._transportFactory,\n });\n\n const middleware: Pick<ClientRpcServerParams, 'handleCall' | 'handleStream'> = {\n handleCall: async (method, params, handler) => {\n const error = await this._ready.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n handleStream: async (method, params, handler) => {\n const error = await this._ready.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n };\n\n this._clientRpc = new ClientRpcServer({\n serviceRegistry: this._clientServices.serviceRegistry,\n port: this._appPort,\n ...middleware,\n });\n\n await Promise.all([this._clientServices.open(new Context()), this._clientRpc.open(), this._shellRuntime?.open()]);\n this._ready.wake(undefined);\n log('started');\n } catch (err: any) {\n this._ready.wake(err);\n log.catch(err);\n }\n }\n\n async stop() {\n log('stopping...');\n await this._clientRpc.close();\n await this._clientServices.close();\n await this._shellRuntime?.close();\n log('stopped');\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Event } from '@dxos/async';\nimport { appServiceBundle, AppServiceBundle, ShellRuntime, shellServiceBundle } from '@dxos/client-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { AppContextRequest, LayoutRequest, ShellLayout } from '@dxos/protocols/proto/dxos/iframe';\nimport { createProtoRpcPeer, ProtoRpcPeer, RpcPort } from '@dxos/rpc';\n\n/**\n * Endpoint that handles shell services.\n */\nexport class ShellRuntimeImpl implements ShellRuntime {\n readonly layoutUpdate = new Event<LayoutRequest>();\n private _appRpc?: ProtoRpcPeer<AppServiceBundle>;\n private _layout = ShellLayout.DEFAULT;\n private _invitationCode?: string;\n private _spaceKey?: PublicKey;\n\n constructor(private readonly _port: RpcPort) {}\n\n get layout() {\n return this._layout;\n }\n\n get invitationCode() {\n return this._invitationCode;\n }\n\n get spaceKey() {\n return this._spaceKey;\n }\n\n setLayout(layout: ShellLayout, options: Omit<LayoutRequest, 'layout'> = {}) {\n this._layout = layout;\n this._invitationCode = options.invitationCode;\n this._spaceKey = options.spaceKey;\n this.layoutUpdate.emit({ layout, ...options });\n }\n\n async setAppContext(context: AppContextRequest) {\n invariant(this._appRpc, 'runtime not open');\n\n await this._appRpc.rpc.AppService.setContext(context);\n }\n\n async open() {\n this._appRpc = createProtoRpcPeer({\n requested: appServiceBundle,\n exposed: shellServiceBundle,\n handlers: {\n ShellService: {\n setLayout: async (request) => {\n this._layout = request.layout;\n this._invitationCode = request.invitationCode;\n this._spaceKey = request.spaceKey;\n this.layoutUpdate.emit(request);\n },\n },\n },\n port: this._port,\n });\n\n await this._appRpc.open();\n }\n\n async close() {\n await this._appRpc?.close();\n this._appRpc = undefined;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { iframeServiceBundle, ShellRuntime, workerServiceBundle, WorkerServiceBundle } from '@dxos/client-protocol';\nimport { Config } from '@dxos/config';\nimport { RemoteServiceConnectionError } from '@dxos/errors';\nimport { log } from '@dxos/log';\nimport { WebRTCTransportService } from '@dxos/network-manager';\nimport { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { createProtoRpcPeer, ProtoRpcPeer, RpcPort } from '@dxos/rpc';\nimport { getAsyncValue, MaybePromise, Provider } from '@dxos/util';\n\nimport { ShellRuntimeImpl } from './shell-runtime';\n\n// NOTE: Keep as RpcPorts to avoid dependency on @dxos/rpc-tunnel so we don't depend on browser-specific apis.\nexport type IFrameProxyRuntimeParams = {\n config: Config | Provider<MaybePromise<Config>>;\n systemPort: RpcPort;\n shellPort?: RpcPort;\n};\n\n/**\n * Manages the client connection to the shared worker.\n */\nexport class IFrameProxyRuntime {\n private readonly _id = String(Math.floor(Math.random() * 1000000));\n private readonly _configProvider: IFrameProxyRuntimeParams['config'];\n private readonly _systemPort: RpcPort;\n private readonly _shellPort?: RpcPort;\n private _release = new Trigger();\n private _config!: Config;\n private _transportService!: BridgeService;\n private _systemRpc!: ProtoRpcPeer<WorkerServiceBundle>;\n private _shellRuntime?: ShellRuntimeImpl;\n\n constructor({ config, systemPort, shellPort }: IFrameProxyRuntimeParams) {\n this._configProvider = config;\n this._systemPort = systemPort;\n this._shellPort = shellPort;\n\n if (this._shellPort) {\n this._shellRuntime = new ShellRuntimeImpl(this._shellPort);\n }\n }\n\n get shell(): ShellRuntime | undefined {\n return this._shellRuntime;\n }\n\n async open(origin: string) {\n this._config = await getAsyncValue(this._configProvider);\n\n this._transportService = new WebRTCTransportService({\n iceServers: this._config.get('runtime.services.ice'),\n });\n\n this._systemRpc = createProtoRpcPeer({\n requested: workerServiceBundle,\n exposed: iframeServiceBundle,\n handlers: {\n BridgeService: this._transportService,\n },\n port: this._systemPort,\n timeout: 200,\n });\n\n let lockKey: string | undefined;\n if (typeof navigator !== 'undefined') {\n lockKey = this._lockKey(origin);\n this._release = new Trigger();\n const ready = new Trigger();\n void navigator.locks.request(lockKey, async () => {\n ready.wake();\n await this._release.wait();\n });\n await ready.wait();\n }\n\n try {\n await this._systemRpc.open();\n await this._systemRpc.rpc.WorkerService.start({ origin, lockKey });\n } catch (err) {\n log.catch(err);\n throw new RemoteServiceConnectionError('Failed to connect to worker');\n }\n await this._shellRuntime?.open();\n }\n\n async close() {\n this._release.wake();\n await this._shellRuntime?.close();\n await this._systemRpc.rpc.WorkerService.stop();\n await this._systemRpc.close();\n }\n\n private _lockKey(origin: string) {\n return `${origin}-${this._id}`;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { Config } from '@dxos/config';\nimport { Context } from '@dxos/context';\nimport { log } from '@dxos/log';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { WebRTCTransportProxyFactory } from '@dxos/network-manager';\nimport { RpcPort } from '@dxos/rpc';\nimport { MaybePromise } from '@dxos/util';\n\nimport { ClientServicesHost } from '../services';\nimport { WorkerSession } from './worker-session';\n\n// NOTE: Keep as RpcPorts to avoid dependency on @dxos/rpc-tunnel so we don't depend on browser-specific apis.\nexport type CreateSessionParams = {\n appPort: RpcPort;\n systemPort: RpcPort;\n shellPort: RpcPort;\n};\n\n/**\n * Runtime for the shared worker.\n * Manages connections from proxies (in tabs).\n * Tabs make requests to the `ClientServicesHost`, and provide a WebRTC gateway.\n */\nexport class WorkerRuntime {\n private readonly _transportFactory = new WebRTCTransportProxyFactory();\n private readonly _ready = new Trigger<Error | undefined>();\n private readonly sessions = new Set<WorkerSession>();\n private _sessionForNetworking?: WorkerSession;\n private _clientServices!: ClientServicesHost;\n private _config!: Config;\n\n // prettier-ignore\n constructor(\n private readonly _configProvider: () => MaybePromise<Config>\n ) {\n this._clientServices = new ClientServicesHost({ callbacks: { onReset: async () => { self.close(); } } });\n }\n\n get host() {\n return this._clientServices;\n }\n\n async start() {\n log('starting...');\n try {\n this._config = await this._configProvider();\n const signals = this._config.get('runtime.services.signaling');\n this._clientServices.initialize({\n config: this._config,\n signalManager: signals\n ? new WebsocketSignalManager(signals)\n : new MemorySignalManager(new MemorySignalManagerContext()), // TODO(dmaretskyi): Inject this context.\n transportFactory: this._transportFactory,\n });\n\n await this._clientServices.open(new Context());\n this._ready.wake(undefined);\n log('started');\n } catch (err: any) {\n this._ready.wake(err);\n log.catch(err);\n }\n }\n\n async stop() {\n // TODO(dmaretskyi): Terminate active sessions.\n await this._clientServices.close();\n }\n\n /**\n * Create a new session.\n */\n async createSession({ appPort, systemPort, shellPort }: CreateSessionParams) {\n const session = new WorkerSession({\n serviceHost: this._clientServices,\n appPort,\n systemPort,\n shellPort,\n readySignal: this._ready,\n });\n\n // When tab is closed.\n session.onClose.set(async () => {\n this.sessions.delete(session);\n this._reconnectWebrtc();\n });\n\n await session.open();\n this.sessions.add(session);\n\n this._reconnectWebrtc();\n }\n\n /**\n * Selects one of the existing session fro WebRTC networking.\n */\n private _reconnectWebrtc() {\n log('reconnecting webrtc...');\n // Check if current session is already closed.\n if (this._sessionForNetworking) {\n if (!this.sessions.has(this._sessionForNetworking)) {\n this._sessionForNetworking = undefined;\n }\n }\n\n // Select existing session.\n if (!this._sessionForNetworking) {\n const selected = Array.from(this.sessions).find((session) => session.bridgeService);\n if (selected) {\n this._sessionForNetworking = selected;\n this._transportFactory.setBridgeService(selected.bridgeService);\n } else {\n this._transportFactory.setBridgeService(undefined);\n }\n }\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { asyncTimeout, Trigger } from '@dxos/async';\nimport {\n iframeServiceBundle,\n IframeServiceBundle,\n PROXY_CONNECTION_TIMEOUT,\n workerServiceBundle,\n} from '@dxos/client-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { log, logInfo } from '@dxos/log';\nimport { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { createProtoRpcPeer, ProtoRpcPeer, RpcPort } from '@dxos/rpc';\nimport { Callback, MaybePromise } from '@dxos/util';\n\nimport { ClientServicesHost, ClientRpcServer, ClientRpcServerParams } from '../services';\n\nexport type WorkerSessionParams = {\n serviceHost: ClientServicesHost;\n systemPort: RpcPort;\n appPort: RpcPort;\n shellPort: RpcPort;\n readySignal: Trigger<Error | undefined>;\n};\n\n/**\n * Represents a tab connection within the worker.\n */\nexport class WorkerSession {\n private readonly _clientRpc: ClientRpcServer;\n private readonly _shellClientRpc: ClientRpcServer;\n private readonly _iframeRpc: ProtoRpcPeer<IframeServiceBundle>;\n private readonly _startTrigger = new Trigger();\n private readonly _serviceHost: ClientServicesHost;\n\n public readonly onClose = new Callback<() => Promise<void>>();\n\n @logInfo\n public origin?: string;\n\n @logInfo\n public lockKey?: string;\n\n public bridgeService?: BridgeService;\n\n constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }: WorkerSessionParams) {\n invariant(serviceHost);\n this._serviceHost = serviceHost;\n\n const middleware: Pick<ClientRpcServerParams, 'handleCall' | 'handleStream'> = {\n handleCall: async (method, params, handler) => {\n const error = await readySignal.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n handleStream: async (method, params, handler) => {\n const error = await readySignal.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n };\n\n this._clientRpc = new ClientRpcServer({\n serviceRegistry: this._serviceHost.serviceRegistry,\n port: appPort,\n ...middleware,\n });\n\n this._shellClientRpc = new ClientRpcServer({\n serviceRegistry: this._serviceHost.serviceRegistry,\n port: shellPort,\n ...middleware,\n });\n\n this._iframeRpc = createProtoRpcPeer({\n requested: iframeServiceBundle,\n exposed: workerServiceBundle,\n handlers: {\n WorkerService: {\n start: async (request) => {\n this.origin = request.origin;\n this.lockKey = request.lockKey;\n this._startTrigger.wake();\n },\n\n stop: async () => {\n setTimeout(async () => {\n try {\n await this.close();\n } catch (err: any) {\n log.catch(err);\n }\n });\n },\n },\n },\n port: systemPort,\n timeout: 1_000, // With low timeout heartbeat may fail if the tab's thread is saturated.\n });\n\n this.bridgeService = this._iframeRpc.rpc.BridgeService;\n }\n\n async open() {\n log.info('opening...');\n await Promise.all([this._clientRpc.open(), this._iframeRpc.open(), this._maybeOpenShell()]);\n\n // Wait until the worker's RPC service has started.\n await this._startTrigger.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n\n // TODO(burdon): Comment required.\n if (this.lockKey) {\n void this._afterLockReleases(this.lockKey, () => this.close());\n }\n\n log.info('opened');\n }\n\n async close() {\n log.info('closing...');\n try {\n await this.onClose.callIfSet();\n } catch (err: any) {\n log.catch(err);\n }\n\n await Promise.all([this._clientRpc.close(), this._iframeRpc.close()]);\n log.info('closed');\n }\n\n private async _maybeOpenShell() {\n try {\n await asyncTimeout(this._shellClientRpc.open(), 1_000);\n } catch {\n log.info('No shell connected.');\n }\n }\n\n private _afterLockReleases(lockKey: string, callback: () => MaybePromise<void>): Promise<void> {\n return navigator.locks\n .request(lockKey, () => {\n // No-op.\n })\n .then(callback);\n }\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
6
|
-
"names": ["Trigger", "PROXY_CONNECTION_TIMEOUT", "Context", "log", "logInfo", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "createWebRTCTransportFactory", "getAsyncValue", "Event", "appServiceBundle", "shellServiceBundle", "invariant", "ShellLayout", "createProtoRpcPeer", "ShellRuntimeImpl", "constructor", "_port", "layoutUpdate", "_layout", "DEFAULT", "layout", "invitationCode", "_invitationCode", "spaceKey", "_spaceKey", "setLayout", "options", "emit", "setAppContext", "context", "_appRpc", "rpc", "AppService", "setContext", "open", "requested", "exposed", "handlers", "ShellService", "request", "port", "close", "undefined", "LOCK_KEY", "IFrameHostRuntime", "constructor", "config", "origin", "appPort", "shellPort", "_ready", "Trigger", "_configProvider", "_appPort", "_shellPort", "_shellRuntime", "ShellRuntimeImpl", "services", "_clientServices", "shell", "start", "log", "_config", "getAsyncValue", "_transportFactory", "createWebRTCTransportFactory", "iceServers", "get", "signals", "ClientServicesHost", "lockKey", "signalManager", "WebsocketSignalManager", "MemorySignalManager", "MemorySignalManagerContext", "transportFactory", "middleware", "handleCall", "method", "params", "handler", "error", "wait", "timeout", "PROXY_CONNECTION_TIMEOUT", "handleStream", "_clientRpc", "ClientRpcServer", "serviceRegistry", "port", "Promise", "all", "open", "Context", "wake", "undefined", "err", "catch", "stop", "close", "logInfo", "Trigger", "iframeServiceBundle", "workerServiceBundle", "RemoteServiceConnectionError", "log", "WebRTCTransportService", "createProtoRpcPeer", "getAsyncValue", "IFrameProxyRuntime", "constructor", "config", "systemPort", "shellPort", "_id", "String", "Math", "floor", "random", "_release", "Trigger", "_configProvider", "_systemPort", "_shellPort", "_shellRuntime", "ShellRuntimeImpl", "shell", "open", "origin", "_config", "getAsyncValue", "_transportService", "WebRTCTransportService", "iceServers", "get", "_systemRpc", "createProtoRpcPeer", "requested", "workerServiceBundle", "exposed", "iframeServiceBundle", "handlers", "BridgeService", "port", "timeout", "lockKey", "navigator", "_lockKey", "ready", "locks", "request", "wake", "wait", "rpc", "WorkerService", "start", "err", "log", "catch", "RemoteServiceConnectionError", "close", "stop", "Trigger", "Context", "log", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "WebRTCTransportProxyFactory", "asyncTimeout", "Trigger", "iframeServiceBundle", "PROXY_CONNECTION_TIMEOUT", "workerServiceBundle", "invariant", "log", "logInfo", "createProtoRpcPeer", "Callback", "WorkerSession", "constructor", "serviceHost", "systemPort", "appPort", "shellPort", "readySignal", "_startTrigger", "Trigger", "onClose", "Callback", "invariant", "_serviceHost", "middleware", "handleCall", "method", "params", "handler", "error", "wait", "timeout", "PROXY_CONNECTION_TIMEOUT", "handleStream", "_clientRpc", "ClientRpcServer", "serviceRegistry", "port", "_shellClientRpc", "_iframeRpc", "createProtoRpcPeer", "requested", "iframeServiceBundle", "exposed", "workerServiceBundle", "handlers", "WorkerService", "start", "request", "origin", "lockKey", "wake", "stop", "setTimeout", "close", "err", "log", "catch", "bridgeService", "rpc", "BridgeService", "open", "info", "Promise", "all", "_maybeOpenShell", "_afterLockReleases", "callIfSet", "asyncTimeout", "callback", "navigator", "locks", "then", "logInfo", "WorkerRuntime", "constructor", "_configProvider", "_transportFactory", "WebRTCTransportProxyFactory", "_ready", "Trigger", "sessions", "Set", "_clientServices", "ClientServicesHost", "callbacks", "onReset", "self", "close", "host", "start", "log", "_config", "signals", "get", "initialize", "config", "signalManager", "WebsocketSignalManager", "MemorySignalManager", "MemorySignalManagerContext", "transportFactory", "open", "Context", "wake", "undefined", "err", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { PROXY_CONNECTION_TIMEOUT, ShellRuntime } from '@dxos/client-protocol';\nimport { Config } from '@dxos/config';\nimport { Context } from '@dxos/context';\nimport { log, logInfo } from '@dxos/log';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { createWebRTCTransportFactory, TransportFactory } from '@dxos/network-manager';\nimport { RpcPort } from '@dxos/rpc';\nimport { getAsyncValue, MaybePromise, Provider } from '@dxos/util';\n\nimport { ClientServicesHost } from '../services';\nimport { ClientRpcServer, ClientRpcServerParams } from '../services/client-rpc-server';\nimport { ShellRuntimeImpl } from './shell-runtime';\n\nconst LOCK_KEY = 'DXOS_RESOURCE_LOCK';\n\nexport type IFrameHostRuntimeParams = {\n config: Config | Provider<MaybePromise<Config>>;\n origin: string;\n appPort: RpcPort;\n shellPort?: RpcPort;\n};\n\n/**\n * Runs the client services in the main thread.\n *\n * Holds a lock over the client services such that only one instance can run at a time.\n * This should only be used when SharedWorker is not available.\n */\nexport class IFrameHostRuntime {\n private readonly _configProvider: IFrameHostRuntimeParams['config'];\n private readonly _ready = new Trigger<Error | undefined>();\n\n private readonly _appPort: RpcPort;\n private readonly _shellPort?: RpcPort;\n private _config!: Config;\n private _transportFactory!: TransportFactory;\n\n // TODO(dmaretskyi): Replace with host and figure out how to return services provider here.\n private _clientServices!: ClientServicesHost;\n private _clientRpc!: ClientRpcServer;\n private _shellRuntime?: ShellRuntimeImpl;\n\n @logInfo\n public origin: string;\n\n constructor({ config, origin, appPort, shellPort }: IFrameHostRuntimeParams) {\n this._configProvider = config;\n this.origin = origin;\n this._appPort = appPort;\n this._shellPort = shellPort;\n\n if (this._shellPort) {\n this._shellRuntime = new ShellRuntimeImpl(this._shellPort);\n }\n }\n\n get services() {\n return this._clientServices;\n }\n\n get shell(): ShellRuntime | undefined {\n return this._shellRuntime;\n }\n\n async start() {\n log('starting...');\n try {\n this._config = await getAsyncValue(this._configProvider);\n this._transportFactory = createWebRTCTransportFactory({\n iceServers: this._config.get('runtime.services.ice'),\n });\n const signals = this._config.get('runtime.services.signaling');\n this._clientServices = new ClientServicesHost({\n lockKey: LOCK_KEY,\n config: this._config,\n signalManager: signals\n ? new WebsocketSignalManager(signals)\n : new MemorySignalManager(new MemorySignalManagerContext()), // TODO(dmaretskyi): Inject this context.\n transportFactory: this._transportFactory,\n });\n\n const middleware: Pick<ClientRpcServerParams, 'handleCall' | 'handleStream'> = {\n handleCall: async (method, params, handler) => {\n const error = await this._ready.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n handleStream: async (method, params, handler) => {\n const error = await this._ready.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n };\n\n this._clientRpc = new ClientRpcServer({\n serviceRegistry: this._clientServices.serviceRegistry,\n port: this._appPort,\n ...middleware,\n });\n\n await Promise.all([this._clientServices.open(new Context()), this._clientRpc.open(), this._shellRuntime?.open()]);\n this._ready.wake(undefined);\n log('started');\n } catch (err: any) {\n this._ready.wake(err);\n log.catch(err);\n }\n }\n\n async stop() {\n log('stopping...');\n await this._clientRpc.close();\n await this._clientServices.close();\n await this._shellRuntime?.close();\n log('stopped');\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Event } from '@dxos/async';\nimport { appServiceBundle, AppServiceBundle, ShellRuntime, shellServiceBundle } from '@dxos/client-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { AppContextRequest, LayoutRequest, ShellLayout } from '@dxos/protocols/proto/dxos/iframe';\nimport { createProtoRpcPeer, ProtoRpcPeer, RpcPort } from '@dxos/rpc';\n\n/**\n * Endpoint that handles shell services.\n */\nexport class ShellRuntimeImpl implements ShellRuntime {\n readonly layoutUpdate = new Event<LayoutRequest>();\n private _appRpc?: ProtoRpcPeer<AppServiceBundle>;\n private _layout = ShellLayout.DEFAULT;\n private _invitationCode?: string;\n private _spaceKey?: PublicKey;\n\n constructor(private readonly _port: RpcPort) {}\n\n get layout() {\n return this._layout;\n }\n\n get invitationCode() {\n return this._invitationCode;\n }\n\n get spaceKey() {\n return this._spaceKey;\n }\n\n setLayout(layout: ShellLayout, options: Omit<LayoutRequest, 'layout'> = {}) {\n this._layout = layout;\n this._invitationCode = options.invitationCode;\n this._spaceKey = options.spaceKey;\n this.layoutUpdate.emit({ layout, ...options });\n }\n\n async setAppContext(context: AppContextRequest) {\n invariant(this._appRpc, 'runtime not open');\n\n await this._appRpc.rpc.AppService.setContext(context);\n }\n\n async open() {\n this._appRpc = createProtoRpcPeer({\n requested: appServiceBundle,\n exposed: shellServiceBundle,\n handlers: {\n ShellService: {\n setLayout: async (request) => {\n this._layout = request.layout;\n this._invitationCode = request.invitationCode;\n this._spaceKey = request.spaceKey;\n this.layoutUpdate.emit(request);\n },\n },\n },\n port: this._port,\n });\n\n await this._appRpc.open();\n }\n\n async close() {\n await this._appRpc?.close();\n this._appRpc = undefined;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { iframeServiceBundle, ShellRuntime, workerServiceBundle, WorkerServiceBundle } from '@dxos/client-protocol';\nimport { Config } from '@dxos/config';\nimport { RemoteServiceConnectionError } from '@dxos/errors';\nimport { log } from '@dxos/log';\nimport { WebRTCTransportService } from '@dxos/network-manager';\nimport { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { createProtoRpcPeer, ProtoRpcPeer, RpcPort } from '@dxos/rpc';\nimport { getAsyncValue, MaybePromise, Provider } from '@dxos/util';\n\nimport { ShellRuntimeImpl } from './shell-runtime';\n\n// NOTE: Keep as RpcPorts to avoid dependency on @dxos/rpc-tunnel so we don't depend on browser-specific apis.\nexport type IFrameProxyRuntimeParams = {\n config: Config | Provider<MaybePromise<Config>>;\n systemPort: RpcPort;\n shellPort?: RpcPort;\n};\n\n/**\n * Manages the client connection to the shared worker.\n */\nexport class IFrameProxyRuntime {\n private readonly _id = String(Math.floor(Math.random() * 1000000));\n private readonly _configProvider: IFrameProxyRuntimeParams['config'];\n private readonly _systemPort: RpcPort;\n private readonly _shellPort?: RpcPort;\n private _release = new Trigger();\n private _config!: Config;\n private _transportService!: BridgeService;\n private _systemRpc!: ProtoRpcPeer<WorkerServiceBundle>;\n private _shellRuntime?: ShellRuntimeImpl;\n\n constructor({ config, systemPort, shellPort }: IFrameProxyRuntimeParams) {\n this._configProvider = config;\n this._systemPort = systemPort;\n this._shellPort = shellPort;\n\n if (this._shellPort) {\n this._shellRuntime = new ShellRuntimeImpl(this._shellPort);\n }\n }\n\n get shell(): ShellRuntime | undefined {\n return this._shellRuntime;\n }\n\n async open(origin: string) {\n this._config = await getAsyncValue(this._configProvider);\n\n this._transportService = new WebRTCTransportService({\n iceServers: this._config.get('runtime.services.ice'),\n });\n\n this._systemRpc = createProtoRpcPeer({\n requested: workerServiceBundle,\n exposed: iframeServiceBundle,\n handlers: {\n BridgeService: this._transportService,\n },\n port: this._systemPort,\n timeout: 200,\n });\n\n let lockKey: string | undefined;\n if (typeof navigator !== 'undefined') {\n lockKey = this._lockKey(origin);\n this._release = new Trigger();\n const ready = new Trigger();\n void navigator.locks.request(lockKey, async () => {\n ready.wake();\n await this._release.wait();\n });\n await ready.wait();\n }\n\n try {\n await this._systemRpc.open();\n await this._systemRpc.rpc.WorkerService.start({ origin, lockKey });\n } catch (err) {\n log.catch(err);\n throw new RemoteServiceConnectionError('Failed to connect to worker');\n }\n await this._shellRuntime?.open();\n }\n\n async close() {\n this._release.wake();\n await this._shellRuntime?.close();\n await this._systemRpc.rpc.WorkerService.stop();\n await this._systemRpc.close();\n }\n\n private _lockKey(origin: string) {\n return `${origin}-${this._id}`;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { Config } from '@dxos/config';\nimport { Context } from '@dxos/context';\nimport { log } from '@dxos/log';\nimport { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager } from '@dxos/messaging';\nimport { WebRTCTransportProxyFactory } from '@dxos/network-manager';\nimport { RpcPort } from '@dxos/rpc';\nimport { MaybePromise } from '@dxos/util';\n\nimport { ClientServicesHost } from '../services';\nimport { WorkerSession } from './worker-session';\n\n// NOTE: Keep as RpcPorts to avoid dependency on @dxos/rpc-tunnel so we don't depend on browser-specific apis.\nexport type CreateSessionParams = {\n appPort: RpcPort;\n systemPort: RpcPort;\n shellPort: RpcPort;\n};\n\n/**\n * Runtime for the shared worker.\n * Manages connections from proxies (in tabs).\n * Tabs make requests to the `ClientServicesHost`, and provide a WebRTC gateway.\n */\nexport class WorkerRuntime {\n private readonly _transportFactory = new WebRTCTransportProxyFactory();\n private readonly _ready = new Trigger<Error | undefined>();\n private readonly sessions = new Set<WorkerSession>();\n private _sessionForNetworking?: WorkerSession;\n private _clientServices!: ClientServicesHost;\n private _config!: Config;\n\n // prettier-ignore\n constructor(\n private readonly _configProvider: () => MaybePromise<Config>\n ) {\n this._clientServices = new ClientServicesHost({ callbacks: { onReset: async () => { self.close(); } } });\n }\n\n get host() {\n return this._clientServices;\n }\n\n async start() {\n log('starting...');\n try {\n this._config = await this._configProvider();\n const signals = this._config.get('runtime.services.signaling');\n this._clientServices.initialize({\n config: this._config,\n signalManager: signals\n ? new WebsocketSignalManager(signals)\n : new MemorySignalManager(new MemorySignalManagerContext()), // TODO(dmaretskyi): Inject this context.\n transportFactory: this._transportFactory,\n });\n\n await this._clientServices.open(new Context());\n this._ready.wake(undefined);\n log('started');\n } catch (err: any) {\n this._ready.wake(err);\n log.error('starting', err);\n }\n }\n\n async stop() {\n // TODO(dmaretskyi): Terminate active sessions.\n await this._clientServices.close();\n }\n\n /**\n * Create a new session.\n */\n async createSession({ appPort, systemPort, shellPort }: CreateSessionParams) {\n const session = new WorkerSession({\n serviceHost: this._clientServices,\n appPort,\n systemPort,\n shellPort,\n readySignal: this._ready,\n });\n\n // When tab is closed.\n session.onClose.set(async () => {\n this.sessions.delete(session);\n this._reconnectWebrtc();\n });\n\n await session.open();\n this.sessions.add(session);\n\n this._reconnectWebrtc();\n }\n\n /**\n * Selects one of the existing session fro WebRTC networking.\n */\n private _reconnectWebrtc() {\n log('reconnecting webrtc...');\n // Check if current session is already closed.\n if (this._sessionForNetworking) {\n if (!this.sessions.has(this._sessionForNetworking)) {\n this._sessionForNetworking = undefined;\n }\n }\n\n // Select existing session.\n if (!this._sessionForNetworking) {\n const selected = Array.from(this.sessions).find((session) => session.bridgeService);\n if (selected) {\n this._sessionForNetworking = selected;\n this._transportFactory.setBridgeService(selected.bridgeService);\n } else {\n this._transportFactory.setBridgeService(undefined);\n }\n }\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { asyncTimeout, Trigger } from '@dxos/async';\nimport {\n iframeServiceBundle,\n IframeServiceBundle,\n PROXY_CONNECTION_TIMEOUT,\n workerServiceBundle,\n} from '@dxos/client-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { log, logInfo } from '@dxos/log';\nimport { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { createProtoRpcPeer, ProtoRpcPeer, RpcPort } from '@dxos/rpc';\nimport { Callback, MaybePromise } from '@dxos/util';\n\nimport { ClientServicesHost, ClientRpcServer, ClientRpcServerParams } from '../services';\n\nexport type WorkerSessionParams = {\n serviceHost: ClientServicesHost;\n systemPort: RpcPort;\n appPort: RpcPort;\n shellPort: RpcPort;\n readySignal: Trigger<Error | undefined>;\n};\n\n/**\n * Represents a tab connection within the worker.\n */\nexport class WorkerSession {\n private readonly _clientRpc: ClientRpcServer;\n private readonly _shellClientRpc: ClientRpcServer;\n private readonly _iframeRpc: ProtoRpcPeer<IframeServiceBundle>;\n private readonly _startTrigger = new Trigger();\n private readonly _serviceHost: ClientServicesHost;\n\n public readonly onClose = new Callback<() => Promise<void>>();\n\n @logInfo\n public origin?: string;\n\n @logInfo\n public lockKey?: string;\n\n public bridgeService?: BridgeService;\n\n constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }: WorkerSessionParams) {\n invariant(serviceHost);\n this._serviceHost = serviceHost;\n\n const middleware: Pick<ClientRpcServerParams, 'handleCall' | 'handleStream'> = {\n handleCall: async (method, params, handler) => {\n const error = await readySignal.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n handleStream: async (method, params, handler) => {\n const error = await readySignal.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n };\n\n this._clientRpc = new ClientRpcServer({\n serviceRegistry: this._serviceHost.serviceRegistry,\n port: appPort,\n ...middleware,\n });\n\n this._shellClientRpc = new ClientRpcServer({\n serviceRegistry: this._serviceHost.serviceRegistry,\n port: shellPort,\n ...middleware,\n });\n\n this._iframeRpc = createProtoRpcPeer({\n requested: iframeServiceBundle,\n exposed: workerServiceBundle,\n handlers: {\n WorkerService: {\n start: async (request) => {\n this.origin = request.origin;\n this.lockKey = request.lockKey;\n this._startTrigger.wake();\n },\n\n stop: async () => {\n setTimeout(async () => {\n try {\n await this.close();\n } catch (err: any) {\n log.catch(err);\n }\n });\n },\n },\n },\n port: systemPort,\n timeout: 1_000, // With low timeout heartbeat may fail if the tab's thread is saturated.\n });\n\n this.bridgeService = this._iframeRpc.rpc.BridgeService;\n }\n\n async open() {\n log.info('opening...');\n await Promise.all([this._clientRpc.open(), this._iframeRpc.open(), this._maybeOpenShell()]);\n\n // Wait until the worker's RPC service has started.\n await this._startTrigger.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n\n // TODO(burdon): Comment required.\n if (this.lockKey) {\n void this._afterLockReleases(this.lockKey, () => this.close());\n }\n\n log.info('opened');\n }\n\n async close() {\n log.info('closing...');\n try {\n await this.onClose.callIfSet();\n } catch (err: any) {\n log.catch(err);\n }\n\n await Promise.all([this._clientRpc.close(), this._iframeRpc.close()]);\n log.info('closed');\n }\n\n private async _maybeOpenShell() {\n try {\n await asyncTimeout(this._shellClientRpc.open(), 1_000);\n } catch {\n log.info('No shell connected.');\n }\n }\n\n private _afterLockReleases(lockKey: string, callback: () => MaybePromise<void>): Promise<void> {\n return navigator.locks\n .request(lockKey, () => {\n // No-op.\n })\n .then(callback);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Trigger", "PROXY_CONNECTION_TIMEOUT", "Context", "log", "logInfo", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "createWebRTCTransportFactory", "getAsyncValue", "Event", "appServiceBundle", "shellServiceBundle", "invariant", "ShellLayout", "createProtoRpcPeer", "ShellRuntimeImpl", "constructor", "_port", "layoutUpdate", "_layout", "DEFAULT", "layout", "invitationCode", "_invitationCode", "spaceKey", "_spaceKey", "setLayout", "options", "emit", "setAppContext", "context", "_appRpc", "rpc", "AppService", "setContext", "open", "requested", "exposed", "handlers", "ShellService", "request", "port", "close", "undefined", "LOCK_KEY", "IFrameHostRuntime", "constructor", "config", "origin", "appPort", "shellPort", "_ready", "Trigger", "_configProvider", "_appPort", "_shellPort", "_shellRuntime", "ShellRuntimeImpl", "services", "_clientServices", "shell", "start", "log", "_config", "getAsyncValue", "_transportFactory", "createWebRTCTransportFactory", "iceServers", "get", "signals", "ClientServicesHost", "lockKey", "signalManager", "WebsocketSignalManager", "MemorySignalManager", "MemorySignalManagerContext", "transportFactory", "middleware", "handleCall", "method", "params", "handler", "error", "wait", "timeout", "PROXY_CONNECTION_TIMEOUT", "handleStream", "_clientRpc", "ClientRpcServer", "serviceRegistry", "port", "Promise", "all", "open", "Context", "wake", "undefined", "err", "catch", "stop", "close", "logInfo", "Trigger", "iframeServiceBundle", "workerServiceBundle", "RemoteServiceConnectionError", "log", "WebRTCTransportService", "createProtoRpcPeer", "getAsyncValue", "IFrameProxyRuntime", "constructor", "config", "systemPort", "shellPort", "_id", "String", "Math", "floor", "random", "_release", "Trigger", "_configProvider", "_systemPort", "_shellPort", "_shellRuntime", "ShellRuntimeImpl", "shell", "open", "origin", "_config", "getAsyncValue", "_transportService", "WebRTCTransportService", "iceServers", "get", "_systemRpc", "createProtoRpcPeer", "requested", "workerServiceBundle", "exposed", "iframeServiceBundle", "handlers", "BridgeService", "port", "timeout", "lockKey", "navigator", "_lockKey", "ready", "locks", "request", "wake", "wait", "rpc", "WorkerService", "start", "err", "log", "catch", "RemoteServiceConnectionError", "close", "stop", "Trigger", "Context", "log", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "WebRTCTransportProxyFactory", "asyncTimeout", "Trigger", "iframeServiceBundle", "PROXY_CONNECTION_TIMEOUT", "workerServiceBundle", "invariant", "log", "logInfo", "createProtoRpcPeer", "Callback", "WorkerSession", "constructor", "serviceHost", "systemPort", "appPort", "shellPort", "readySignal", "_startTrigger", "Trigger", "onClose", "Callback", "invariant", "_serviceHost", "middleware", "handleCall", "method", "params", "handler", "error", "wait", "timeout", "PROXY_CONNECTION_TIMEOUT", "handleStream", "_clientRpc", "ClientRpcServer", "serviceRegistry", "port", "_shellClientRpc", "_iframeRpc", "createProtoRpcPeer", "requested", "iframeServiceBundle", "exposed", "workerServiceBundle", "handlers", "WorkerService", "start", "request", "origin", "lockKey", "wake", "stop", "setTimeout", "close", "err", "log", "catch", "bridgeService", "rpc", "BridgeService", "open", "info", "Promise", "all", "_maybeOpenShell", "_afterLockReleases", "callIfSet", "asyncTimeout", "callback", "navigator", "locks", "then", "logInfo", "WorkerRuntime", "constructor", "_configProvider", "_transportFactory", "WebRTCTransportProxyFactory", "_ready", "Trigger", "sessions", "Set", "_clientServices", "ClientServicesHost", "callbacks", "onReset", "self", "close", "host", "start", "log", "_config", "signals", "get", "initialize", "config", "signalManager", "WebsocketSignalManager", "MemorySignalManager", "MemorySignalManagerContext", "transportFactory", "open", "Context", "wake", "undefined", "err", "error", "stop", "createSession", "appPort", "systemPort", "shellPort", "session", "WorkerSession", "serviceHost", "readySignal", "onClose", "set", "delete", "_reconnectWebrtc", "add", "_sessionForNetworking", "has", "selected", "Array", "from", "find", "bridgeService", "setBridgeService"]
|
|
7
7
|
}
|