@dxos/client-services 0.1.52 → 0.1.53-main.01cbc6b
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-C3SPTMW3.mjs → chunk-EYXOVYW5.mjs} +817 -694
- package/dist/lib/browser/chunk-EYXOVYW5.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +101 -120
- 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 +24 -7
- package/dist/lib/browser/packlets/testing/index.mjs.map +3 -3
- package/dist/lib/node/index.cjs +884 -782
- 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 +801 -664
- package/dist/lib/node/packlets/testing/index.cjs.map +3 -3
- package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-host.d.ts +7 -1
- package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +11 -2
- package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +2 -1
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/spaces-service.d.ts +2 -2
- package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/test-builder.d.ts +7 -1
- package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/packlets/vault/iframe-host-runtime.d.ts +1 -1
- package/dist/types/src/packlets/vault/iframe-host-runtime.d.ts.map +1 -1
- package/dist/types/src/packlets/vault/iframe-proxy-runtime.d.ts +1 -1
- package/dist/types/src/packlets/vault/iframe-proxy-runtime.d.ts.map +1 -1
- package/dist/types/src/packlets/vault/shell-runtime.d.ts +1 -21
- package/dist/types/src/packlets/vault/shell-runtime.d.ts.map +1 -1
- package/package.json +33 -32
- package/src/packlets/devtools/devtools.ts +2 -2
- package/src/packlets/identity/identity-manager.test.ts +1 -1
- package/src/packlets/identity/identity-manager.ts +8 -8
- package/src/packlets/identity/identity-service.ts +2 -2
- package/src/packlets/identity/identity.test.ts +1 -1
- package/src/packlets/identity/identity.ts +22 -27
- package/src/packlets/invitations/device-invitation-protocol.ts +4 -4
- package/src/packlets/invitations/invitation-extension.ts +5 -5
- package/src/packlets/invitations/invitations-handler.ts +6 -6
- package/src/packlets/invitations/invitations-service.ts +3 -3
- package/src/packlets/invitations/space-invitation-protocol.ts +9 -9
- package/src/packlets/locks/node.ts +2 -2
- package/src/packlets/logging/logging-service.ts +4 -4
- package/src/packlets/services/service-context.test.ts +1 -1
- package/src/packlets/services/service-context.ts +12 -10
- package/src/packlets/services/service-host.test.ts +50 -2
- package/src/packlets/services/service-host.ts +28 -10
- package/src/packlets/spaces/data-space-manager.test.ts +72 -118
- package/src/packlets/spaces/data-space-manager.ts +18 -9
- package/src/packlets/spaces/data-space.ts +66 -20
- package/src/packlets/spaces/notarization-plugin.test.ts +1 -1
- package/src/packlets/spaces/notarization-plugin.ts +9 -5
- package/src/packlets/spaces/spaces-service.ts +46 -32
- package/src/packlets/testing/invitation-utils.ts +2 -2
- package/src/packlets/testing/test-builder.ts +36 -4
- package/src/packlets/vault/iframe-host-runtime.ts +2 -2
- package/src/packlets/vault/iframe-proxy-runtime.ts +2 -2
- package/src/packlets/vault/shell-runtime.ts +3 -49
- package/src/packlets/vault/worker-runtime.ts +1 -1
- package/src/packlets/vault/worker-session.ts +2 -2
- package/dist/lib/browser/chunk-C3SPTMW3.mjs.map +0 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "@dxos/node-std/globals"
|
|
1
|
+
import "@dxos/node-std/globals";
|
|
2
2
|
import {
|
|
3
3
|
ClientServicesHost,
|
|
4
4
|
DataSpace,
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
SpacesServiceImpl,
|
|
19
19
|
TrustedKeySetAuthVerifier,
|
|
20
20
|
createAuthProvider,
|
|
21
|
+
createDefaultModelFactory,
|
|
21
22
|
createStorageObjects,
|
|
22
23
|
getNetworkPeers,
|
|
23
24
|
isLocked,
|
|
@@ -28,7 +29,7 @@ import {
|
|
|
28
29
|
subscribeToSignal,
|
|
29
30
|
subscribeToSpaces,
|
|
30
31
|
subscribeToSwarmInfo
|
|
31
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-EYXOVYW5.mjs";
|
|
32
33
|
|
|
33
34
|
// packages/sdk/client-services/src/packlets/vault/iframe-host-runtime.ts
|
|
34
35
|
import { Trigger } from "@dxos/async";
|
|
@@ -92,7 +93,7 @@ var ClientRpcServer = class {
|
|
|
92
93
|
};
|
|
93
94
|
|
|
94
95
|
// packages/sdk/client-services/src/packlets/vault/shell-runtime.ts
|
|
95
|
-
import
|
|
96
|
+
import invariant from "tiny-invariant";
|
|
96
97
|
import { Event } from "@dxos/async";
|
|
97
98
|
import { appServiceBundle, shellServiceBundle } from "@dxos/client-protocol";
|
|
98
99
|
import { ShellLayout } from "@dxos/protocols/proto/dxos/iframe";
|
|
@@ -122,7 +123,7 @@ var ShellRuntimeImpl = class {
|
|
|
122
123
|
});
|
|
123
124
|
}
|
|
124
125
|
async setAppContext(context) {
|
|
125
|
-
|
|
126
|
+
invariant(this._appRpc, "runtime not open");
|
|
126
127
|
await this._appRpc.rpc.AppService.setContext(context);
|
|
127
128
|
}
|
|
128
129
|
async open() {
|
|
@@ -149,39 +150,9 @@ var ShellRuntimeImpl = class {
|
|
|
149
150
|
this._appRpc = void 0;
|
|
150
151
|
}
|
|
151
152
|
};
|
|
152
|
-
var MemoryShellRuntime = class {
|
|
153
|
-
constructor({ layout, invitationCode, spaceKey } = {}) {
|
|
154
|
-
this.layoutUpdate = new Event();
|
|
155
|
-
this.contextUpdate = new Event();
|
|
156
|
-
this._layout = layout != null ? layout : ShellLayout.DEFAULT;
|
|
157
|
-
this._invitationCode = invitationCode;
|
|
158
|
-
this._spaceKey = spaceKey;
|
|
159
|
-
}
|
|
160
|
-
get layout() {
|
|
161
|
-
return this._layout;
|
|
162
|
-
}
|
|
163
|
-
get invitationCode() {
|
|
164
|
-
return this._invitationCode;
|
|
165
|
-
}
|
|
166
|
-
get spaceKey() {
|
|
167
|
-
return this._spaceKey;
|
|
168
|
-
}
|
|
169
|
-
setLayout(layout, options = {}) {
|
|
170
|
-
this._layout = layout;
|
|
171
|
-
this._invitationCode = options.invitationCode;
|
|
172
|
-
this._spaceKey = options.spaceKey;
|
|
173
|
-
this.layoutUpdate.emit({
|
|
174
|
-
layout,
|
|
175
|
-
...options
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
async setAppContext(context) {
|
|
179
|
-
this.contextUpdate.emit(context);
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
153
|
|
|
183
154
|
// packages/sdk/client-services/src/packlets/vault/iframe-host-runtime.ts
|
|
184
|
-
|
|
155
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
185
156
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
186
157
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
187
158
|
r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -190,7 +161,8 @@ var __decorate = function(decorators, target, key, desc) {
|
|
|
190
161
|
if (d = decorators[i])
|
|
191
162
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
192
163
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
193
|
-
}
|
|
164
|
+
}
|
|
165
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/vault/iframe-host-runtime.ts";
|
|
194
166
|
var LOCK_KEY = "DXOS_RESOURCE_LOCK";
|
|
195
167
|
var IFrameHostRuntime = class {
|
|
196
168
|
constructor({ config, origin, appPort, shellPort }) {
|
|
@@ -211,11 +183,11 @@ var IFrameHostRuntime = class {
|
|
|
211
183
|
}
|
|
212
184
|
async start() {
|
|
213
185
|
var _a;
|
|
214
|
-
log("starting...",
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
186
|
+
log("starting...", void 0, {
|
|
187
|
+
F: __dxlog_file,
|
|
188
|
+
L: 70,
|
|
189
|
+
S: this,
|
|
190
|
+
C: (f, a) => f(...a)
|
|
219
191
|
});
|
|
220
192
|
try {
|
|
221
193
|
this._config = await getAsyncValue(this._configProvider);
|
|
@@ -260,42 +232,42 @@ var IFrameHostRuntime = class {
|
|
|
260
232
|
(_a = this._shellRuntime) == null ? void 0 : _a.open()
|
|
261
233
|
]);
|
|
262
234
|
this._ready.wake(void 0);
|
|
263
|
-
log("started",
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
235
|
+
log("started", void 0, {
|
|
236
|
+
F: __dxlog_file,
|
|
237
|
+
L: 113,
|
|
238
|
+
S: this,
|
|
239
|
+
C: (f, a) => f(...a)
|
|
268
240
|
});
|
|
269
241
|
} catch (err) {
|
|
270
242
|
this._ready.wake(err);
|
|
271
|
-
log.catch(err,
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
243
|
+
log.catch(err, void 0, {
|
|
244
|
+
F: __dxlog_file,
|
|
245
|
+
L: 116,
|
|
246
|
+
S: this,
|
|
247
|
+
C: (f, a) => f(...a)
|
|
276
248
|
});
|
|
277
249
|
}
|
|
278
250
|
}
|
|
279
251
|
async stop() {
|
|
280
252
|
var _a;
|
|
281
|
-
log("stopping...",
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
253
|
+
log("stopping...", void 0, {
|
|
254
|
+
F: __dxlog_file,
|
|
255
|
+
L: 121,
|
|
256
|
+
S: this,
|
|
257
|
+
C: (f, a) => f(...a)
|
|
286
258
|
});
|
|
287
259
|
await this._clientRpc.close();
|
|
288
260
|
await this._clientServices.close();
|
|
289
261
|
await ((_a = this._shellRuntime) == null ? void 0 : _a.close());
|
|
290
|
-
log("stopped",
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
262
|
+
log("stopped", void 0, {
|
|
263
|
+
F: __dxlog_file,
|
|
264
|
+
L: 125,
|
|
265
|
+
S: this,
|
|
266
|
+
C: (f, a) => f(...a)
|
|
295
267
|
});
|
|
296
268
|
}
|
|
297
269
|
};
|
|
298
|
-
|
|
270
|
+
_ts_decorate([
|
|
299
271
|
logInfo
|
|
300
272
|
], IFrameHostRuntime.prototype, "origin", void 0);
|
|
301
273
|
|
|
@@ -307,6 +279,7 @@ import { log as log2 } from "@dxos/log";
|
|
|
307
279
|
import { WebRTCTransportService } from "@dxos/network-manager";
|
|
308
280
|
import { createProtoRpcPeer as createProtoRpcPeer2 } from "@dxos/rpc";
|
|
309
281
|
import { getAsyncValue as getAsyncValue2 } from "@dxos/util";
|
|
282
|
+
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/vault/iframe-proxy-runtime.ts";
|
|
310
283
|
var IFrameProxyRuntime = class {
|
|
311
284
|
constructor({ config, systemPort, shellPort }) {
|
|
312
285
|
this._id = String(Math.floor(Math.random() * 1e6));
|
|
@@ -354,11 +327,11 @@ var IFrameProxyRuntime = class {
|
|
|
354
327
|
lockKey
|
|
355
328
|
});
|
|
356
329
|
} catch (err) {
|
|
357
|
-
log2.catch(err,
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
330
|
+
log2.catch(err, void 0, {
|
|
331
|
+
F: __dxlog_file2,
|
|
332
|
+
L: 85,
|
|
333
|
+
S: this,
|
|
334
|
+
C: (f, a) => f(...a)
|
|
362
335
|
});
|
|
363
336
|
throw new RemoteServiceConnectionError("Failed to connect to worker");
|
|
364
337
|
}
|
|
@@ -383,13 +356,13 @@ import { MemorySignalManager as MemorySignalManager2, MemorySignalManagerContext
|
|
|
383
356
|
import { WebRTCTransportProxyFactory } from "@dxos/network-manager";
|
|
384
357
|
|
|
385
358
|
// packages/sdk/client-services/src/packlets/vault/worker-session.ts
|
|
386
|
-
import
|
|
359
|
+
import invariant2 from "tiny-invariant";
|
|
387
360
|
import { asyncTimeout, Trigger as Trigger3 } from "@dxos/async";
|
|
388
361
|
import { iframeServiceBundle as iframeServiceBundle2, PROXY_CONNECTION_TIMEOUT as PROXY_CONNECTION_TIMEOUT2, workerServiceBundle as workerServiceBundle2 } from "@dxos/client-protocol";
|
|
389
362
|
import { log as log3, logInfo as logInfo2 } from "@dxos/log";
|
|
390
363
|
import { createProtoRpcPeer as createProtoRpcPeer3 } from "@dxos/rpc";
|
|
391
364
|
import { Callback } from "@dxos/util";
|
|
392
|
-
|
|
365
|
+
function _ts_decorate2(decorators, target, key, desc) {
|
|
393
366
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
394
367
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
395
368
|
r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -398,12 +371,13 @@ var __decorate2 = function(decorators, target, key, desc) {
|
|
|
398
371
|
if (d = decorators[i])
|
|
399
372
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
400
373
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
401
|
-
}
|
|
374
|
+
}
|
|
375
|
+
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/vault/worker-session.ts";
|
|
402
376
|
var WorkerSession = class {
|
|
403
377
|
constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }) {
|
|
404
378
|
this._startTrigger = new Trigger3();
|
|
405
379
|
this.onClose = new Callback();
|
|
406
|
-
|
|
380
|
+
invariant2(serviceHost);
|
|
407
381
|
this._serviceHost = serviceHost;
|
|
408
382
|
const middleware = {
|
|
409
383
|
handleCall: async (method, params, handler) => {
|
|
@@ -450,11 +424,11 @@ var WorkerSession = class {
|
|
|
450
424
|
try {
|
|
451
425
|
await this.close();
|
|
452
426
|
} catch (err) {
|
|
453
|
-
log3.catch(err,
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
427
|
+
log3.catch(err, void 0, {
|
|
428
|
+
F: __dxlog_file3,
|
|
429
|
+
L: 100,
|
|
430
|
+
S: this,
|
|
431
|
+
C: (f, a) => f(...a)
|
|
458
432
|
});
|
|
459
433
|
}
|
|
460
434
|
});
|
|
@@ -467,11 +441,11 @@ var WorkerSession = class {
|
|
|
467
441
|
this.bridgeService = this._iframeRpc.rpc.BridgeService;
|
|
468
442
|
}
|
|
469
443
|
async open() {
|
|
470
|
-
log3.info("opening..",
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
444
|
+
log3.info("opening..", void 0, {
|
|
445
|
+
F: __dxlog_file3,
|
|
446
|
+
L: 114,
|
|
447
|
+
S: this,
|
|
448
|
+
C: (f, a) => f(...a)
|
|
475
449
|
});
|
|
476
450
|
await Promise.all([
|
|
477
451
|
this._clientRpc.open(),
|
|
@@ -486,20 +460,20 @@ var WorkerSession = class {
|
|
|
486
460
|
}
|
|
487
461
|
}
|
|
488
462
|
async close() {
|
|
489
|
-
log3.info("closing..",
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
463
|
+
log3.info("closing..", void 0, {
|
|
464
|
+
F: __dxlog_file3,
|
|
465
|
+
L: 124,
|
|
466
|
+
S: this,
|
|
467
|
+
C: (f, a) => f(...a)
|
|
494
468
|
});
|
|
495
469
|
try {
|
|
496
470
|
await this.onClose.callIfSet();
|
|
497
471
|
} catch (err) {
|
|
498
|
-
log3.catch(err,
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
472
|
+
log3.catch(err, void 0, {
|
|
473
|
+
F: __dxlog_file3,
|
|
474
|
+
L: 128,
|
|
475
|
+
S: this,
|
|
476
|
+
C: (f, a) => f(...a)
|
|
503
477
|
});
|
|
504
478
|
}
|
|
505
479
|
await Promise.all([
|
|
@@ -511,11 +485,11 @@ var WorkerSession = class {
|
|
|
511
485
|
try {
|
|
512
486
|
await asyncTimeout(this._shellClientRpc.open(), 1e3);
|
|
513
487
|
} catch (e) {
|
|
514
|
-
log3.info("No shell connected.",
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
488
|
+
log3.info("No shell connected.", void 0, {
|
|
489
|
+
F: __dxlog_file3,
|
|
490
|
+
L: 138,
|
|
491
|
+
S: this,
|
|
492
|
+
C: (f, a) => f(...a)
|
|
519
493
|
});
|
|
520
494
|
}
|
|
521
495
|
}
|
|
@@ -524,14 +498,15 @@ var WorkerSession = class {
|
|
|
524
498
|
}).then(callback);
|
|
525
499
|
}
|
|
526
500
|
};
|
|
527
|
-
|
|
501
|
+
_ts_decorate2([
|
|
528
502
|
logInfo2
|
|
529
503
|
], WorkerSession.prototype, "origin", void 0);
|
|
530
|
-
|
|
504
|
+
_ts_decorate2([
|
|
531
505
|
logInfo2
|
|
532
506
|
], WorkerSession.prototype, "lockKey", void 0);
|
|
533
507
|
|
|
534
508
|
// packages/sdk/client-services/src/packlets/vault/worker-runtime.ts
|
|
509
|
+
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/vault/worker-runtime.ts";
|
|
535
510
|
var WorkerRuntime = class {
|
|
536
511
|
// prettier-ignore
|
|
537
512
|
constructor(_configProvider) {
|
|
@@ -539,17 +514,23 @@ var WorkerRuntime = class {
|
|
|
539
514
|
this._transportFactory = new WebRTCTransportProxyFactory();
|
|
540
515
|
this._ready = new Trigger4();
|
|
541
516
|
this.sessions = /* @__PURE__ */ new Set();
|
|
542
|
-
this._clientServices = new ClientServicesHost(
|
|
517
|
+
this._clientServices = new ClientServicesHost({
|
|
518
|
+
callbacks: {
|
|
519
|
+
onReset: async () => {
|
|
520
|
+
self.close();
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
});
|
|
543
524
|
}
|
|
544
525
|
get host() {
|
|
545
526
|
return this._clientServices;
|
|
546
527
|
}
|
|
547
528
|
async start() {
|
|
548
|
-
log4("starting...",
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
529
|
+
log4("starting...", void 0, {
|
|
530
|
+
F: __dxlog_file4,
|
|
531
|
+
L: 48,
|
|
532
|
+
S: this,
|
|
533
|
+
C: (f, a) => f(...a)
|
|
553
534
|
});
|
|
554
535
|
try {
|
|
555
536
|
this._config = await this._configProvider();
|
|
@@ -561,19 +542,19 @@ var WorkerRuntime = class {
|
|
|
561
542
|
});
|
|
562
543
|
await this._clientServices.open();
|
|
563
544
|
this._ready.wake(void 0);
|
|
564
|
-
log4("started",
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
545
|
+
log4("started", void 0, {
|
|
546
|
+
F: __dxlog_file4,
|
|
547
|
+
L: 62,
|
|
548
|
+
S: this,
|
|
549
|
+
C: (f, a) => f(...a)
|
|
569
550
|
});
|
|
570
551
|
} catch (err) {
|
|
571
552
|
this._ready.wake(err);
|
|
572
|
-
log4.catch(err,
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
553
|
+
log4.catch(err, void 0, {
|
|
554
|
+
F: __dxlog_file4,
|
|
555
|
+
L: 65,
|
|
556
|
+
S: this,
|
|
557
|
+
C: (f, a) => f(...a)
|
|
577
558
|
});
|
|
578
559
|
}
|
|
579
560
|
}
|
|
@@ -603,11 +584,11 @@ var WorkerRuntime = class {
|
|
|
603
584
|
* Selects one of the existing session fro WebRTC networking.
|
|
604
585
|
*/
|
|
605
586
|
_reconnectWebrtc() {
|
|
606
|
-
log4("reconnecting webrtc...",
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
587
|
+
log4("reconnecting webrtc...", void 0, {
|
|
588
|
+
F: __dxlog_file4,
|
|
589
|
+
L: 102,
|
|
590
|
+
S: this,
|
|
591
|
+
C: (f, a) => f(...a)
|
|
611
592
|
});
|
|
612
593
|
if (this._sessionForNetworking) {
|
|
613
594
|
if (!this.sessions.has(this._sessionForNetworking)) {
|
|
@@ -640,7 +621,6 @@ export {
|
|
|
640
621
|
InvitationsHandler,
|
|
641
622
|
InvitationsServiceImpl,
|
|
642
623
|
Lock,
|
|
643
|
-
MemoryShellRuntime,
|
|
644
624
|
ServiceContext,
|
|
645
625
|
ServiceRegistry,
|
|
646
626
|
ShellRuntimeImpl,
|
|
@@ -650,6 +630,7 @@ export {
|
|
|
650
630
|
WorkerRuntime,
|
|
651
631
|
WorkerSession,
|
|
652
632
|
createAuthProvider,
|
|
633
|
+
createDefaultModelFactory,
|
|
653
634
|
createStorageObjects,
|
|
654
635
|
getNetworkPeers,
|
|
655
636
|
isLocked,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/packlets/vault/iframe-host-runtime.ts", "../../../src/packlets/services/client-rpc-server.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 } from '@dxos/client-protocol';\nimport { Config } from '@dxos/config';\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 { ShellRuntime, 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(), 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 { ClientServices } from '@dxos/client-protocol';\nimport { Any, ServiceHandler, Stream } from '@dxos/codec-protobuf';\nimport { raise } from '@dxos/debug';\nimport { parseMethodName, RpcPeer, RpcPeerOptions } from '@dxos/rpc';\nimport { MaybePromise } from '@dxos/util';\n\nimport { ServiceRegistry } from './service-registry';\n\nexport type ClientRpcServerParams = {\n serviceRegistry: ServiceRegistry<ClientServices>;\n handleCall?: (\n method: string,\n params: Any,\n handler: (method: string, params: Any) => MaybePromise<Any>,\n ) => Promise<Any>;\n handleStream?: (\n method: string,\n params: Any,\n handler: (method: string, params: Any) => Stream<Any>,\n ) => MaybePromise<Stream<Any>>;\n} & Omit<RpcPeerOptions, 'callHandler' | 'streamHandler'>;\n\nexport class ClientRpcServer {\n private readonly _serviceRegistry: ServiceRegistry<ClientServices>;\n private readonly _rpcPeer: RpcPeer;\n private readonly _handlerCache = new Map<string, ServiceHandler<any>>();\n private readonly _handleCall: ClientRpcServerParams['handleCall'];\n private readonly _handleStream: ClientRpcServerParams['handleStream'];\n\n constructor(params: ClientRpcServerParams) {\n const { serviceRegistry, handleCall, handleStream, ...rpcOptions } = params;\n this._handleCall = handleCall;\n this._handleStream = handleStream;\n\n this._serviceRegistry = serviceRegistry;\n this._rpcPeer = new RpcPeer({\n ...rpcOptions,\n callHandler: (method, params) => {\n const [serviceName, methodName] = parseMethodName(method);\n const handler = (method: string, params: Any) => this._getServiceHandler(serviceName).call(method, params);\n\n if (this._handleCall) {\n return this._handleCall(methodName, params, handler);\n } else {\n return handler(methodName, params);\n }\n },\n streamHandler: (method, params) => {\n const [serviceName, methodName] = parseMethodName(method);\n const handler = (method: string, params: Any) =>\n this._getServiceHandler(serviceName).callStream(method, params);\n\n if (this._handleStream) {\n return Stream.unwrapPromise(this._handleStream(methodName, params, handler));\n } else {\n return handler(methodName, params);\n }\n },\n });\n }\n\n async open() {\n await this._rpcPeer.open();\n }\n\n async close() {\n await this._rpcPeer.close();\n }\n\n private _getServiceHandler(serviceName: string) {\n if (!this._handlerCache.has(serviceName)) {\n const [key, descriptor] =\n Object.entries(this._serviceRegistry.descriptors).find(\n ([key, descriptor]) => descriptor.name === serviceName,\n ) ?? raise(new Error(`Service not available: ${serviceName}`));\n\n const service = this._serviceRegistry.services[key as keyof ClientServices];\n if (!service) {\n throw new Error(`Service not available: ${serviceName}`);\n }\n\n this._handlerCache.set(serviceName, descriptor.createServer(service as any));\n }\n\n return this._handlerCache.get(serviceName)!;\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Event } from '@dxos/async';\nimport { appServiceBundle, AppServiceBundle, shellServiceBundle } from '@dxos/client-protocol';\nimport { PublicKey } from '@dxos/keys';\nimport { AppContextRequest, LayoutRequest, ShellLayout } from '@dxos/protocols/proto/dxos/iframe';\nimport { createProtoRpcPeer, ProtoRpcPeer, RpcPort } from '@dxos/rpc';\n\nexport interface ShellRuntime {\n layoutUpdate: Event<LayoutRequest>;\n layout: ShellLayout;\n invitationCode?: string;\n spaceKey?: PublicKey;\n setLayout: (layout: ShellLayout, options?: Omit<LayoutRequest, 'layout'>) => void;\n setAppContext: (context: AppContextRequest) => Promise<void>;\n}\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 assert(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\nexport class MemoryShellRuntime implements ShellRuntime {\n readonly layoutUpdate = new Event<LayoutRequest>();\n readonly contextUpdate = new Event<AppContextRequest>();\n private _layout: ShellLayout;\n private _invitationCode?: string;\n private _spaceKey?: PublicKey;\n\n constructor({ layout, invitationCode, spaceKey }: Partial<LayoutRequest> & Partial<AppContextRequest> = {}) {\n this._layout = layout ?? ShellLayout.DEFAULT;\n this._invitationCode = invitationCode;\n this._spaceKey = spaceKey;\n }\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 this.contextUpdate.emit(context);\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { iframeServiceBundle, 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 { ShellRuntime, 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 { 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();\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();\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 assert from 'node:assert';\n\nimport { asyncTimeout, Trigger } from '@dxos/async';\nimport {\n iframeServiceBundle,\n IframeServiceBundle,\n PROXY_CONNECTION_TIMEOUT,\n workerServiceBundle,\n} from '@dxos/client-protocol';\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 } from '../services';\nimport { ClientRpcServer, ClientRpcServerParams } from '../services/client-rpc-server';\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 assert(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 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: 1000, // 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 await this._startTrigger.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (this.lockKey) {\n void this._afterLockReleases(this.lockKey, () => this.close());\n }\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 }\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", "log", "logInfo", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "createWebRTCTransportFactory", "getAsyncValue", "Stream", "raise", "parseMethodName", "RpcPeer", "ClientRpcServer", "constructor", "params", "_handlerCache", "Map", "serviceRegistry", "handleCall", "handleStream", "rpcOptions", "_handleCall", "_handleStream", "_serviceRegistry", "_rpcPeer", "callHandler", "method", "serviceName", "methodName", "handler", "_getServiceHandler", "call", "streamHandler", "callStream", "unwrapPromise", "open", "close", "has", "key", "descriptor", "Object", "entries", "descriptors", "find", "name", "Error", "service", "services", "set", "createServer", "get", "
|
|
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 { 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(), 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 { ClientServices } from '@dxos/client-protocol';\nimport { Any, ServiceHandler, Stream } from '@dxos/codec-protobuf';\nimport { raise } from '@dxos/debug';\nimport { parseMethodName, RpcPeer, RpcPeerOptions } from '@dxos/rpc';\nimport { MaybePromise } from '@dxos/util';\n\nimport { ServiceRegistry } from './service-registry';\n\nexport type ClientRpcServerParams = {\n serviceRegistry: ServiceRegistry<ClientServices>;\n handleCall?: (\n method: string,\n params: Any,\n handler: (method: string, params: Any) => MaybePromise<Any>,\n ) => Promise<Any>;\n handleStream?: (\n method: string,\n params: Any,\n handler: (method: string, params: Any) => Stream<Any>,\n ) => MaybePromise<Stream<Any>>;\n} & Omit<RpcPeerOptions, 'callHandler' | 'streamHandler'>;\n\nexport class ClientRpcServer {\n private readonly _serviceRegistry: ServiceRegistry<ClientServices>;\n private readonly _rpcPeer: RpcPeer;\n private readonly _handlerCache = new Map<string, ServiceHandler<any>>();\n private readonly _handleCall: ClientRpcServerParams['handleCall'];\n private readonly _handleStream: ClientRpcServerParams['handleStream'];\n\n constructor(params: ClientRpcServerParams) {\n const { serviceRegistry, handleCall, handleStream, ...rpcOptions } = params;\n this._handleCall = handleCall;\n this._handleStream = handleStream;\n\n this._serviceRegistry = serviceRegistry;\n this._rpcPeer = new RpcPeer({\n ...rpcOptions,\n callHandler: (method, params) => {\n const [serviceName, methodName] = parseMethodName(method);\n const handler = (method: string, params: Any) => this._getServiceHandler(serviceName).call(method, params);\n\n if (this._handleCall) {\n return this._handleCall(methodName, params, handler);\n } else {\n return handler(methodName, params);\n }\n },\n streamHandler: (method, params) => {\n const [serviceName, methodName] = parseMethodName(method);\n const handler = (method: string, params: Any) =>\n this._getServiceHandler(serviceName).callStream(method, params);\n\n if (this._handleStream) {\n return Stream.unwrapPromise(this._handleStream(methodName, params, handler));\n } else {\n return handler(methodName, params);\n }\n },\n });\n }\n\n async open() {\n await this._rpcPeer.open();\n }\n\n async close() {\n await this._rpcPeer.close();\n }\n\n private _getServiceHandler(serviceName: string) {\n if (!this._handlerCache.has(serviceName)) {\n const [key, descriptor] =\n Object.entries(this._serviceRegistry.descriptors).find(\n ([key, descriptor]) => descriptor.name === serviceName,\n ) ?? raise(new Error(`Service not available: ${serviceName}`));\n\n const service = this._serviceRegistry.services[key as keyof ClientServices];\n if (!service) {\n throw new Error(`Service not available: ${serviceName}`);\n }\n\n this._handlerCache.set(serviceName, descriptor.createServer(service as any));\n }\n\n return this._handlerCache.get(serviceName)!;\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport invariant from 'tiny-invariant';\n\nimport { Event } from '@dxos/async';\nimport { appServiceBundle, AppServiceBundle, ShellRuntime, shellServiceBundle } from '@dxos/client-protocol';\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 { 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();\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 invariant from 'tiny-invariant';\n\nimport { asyncTimeout, Trigger } from '@dxos/async';\nimport {\n iframeServiceBundle,\n IframeServiceBundle,\n PROXY_CONNECTION_TIMEOUT,\n workerServiceBundle,\n} from '@dxos/client-protocol';\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 } from '../services';\nimport { ClientRpcServer, ClientRpcServerParams } from '../services/client-rpc-server';\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 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: 1000, // 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 await this._startTrigger.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (this.lockKey) {\n void this._afterLockReleases(this.lockKey, () => this.close());\n }\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 }\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", "log", "logInfo", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "createWebRTCTransportFactory", "getAsyncValue", "Stream", "raise", "parseMethodName", "RpcPeer", "ClientRpcServer", "constructor", "params", "_handlerCache", "Map", "serviceRegistry", "handleCall", "handleStream", "rpcOptions", "_handleCall", "_handleStream", "_serviceRegistry", "_rpcPeer", "RpcPeer", "callHandler", "method", "serviceName", "methodName", "parseMethodName", "handler", "_getServiceHandler", "call", "streamHandler", "callStream", "Stream", "unwrapPromise", "open", "close", "has", "key", "descriptor", "Object", "entries", "descriptors", "find", "name", "raise", "Error", "service", "services", "set", "createServer", "get", "invariant", "Event", "appServiceBundle", "shellServiceBundle", "ShellLayout", "createProtoRpcPeer", "ShellRuntimeImpl", "constructor", "_port", "layoutUpdate", "Event", "_layout", "ShellLayout", "DEFAULT", "layout", "invitationCode", "_invitationCode", "spaceKey", "_spaceKey", "setLayout", "options", "emit", "setAppContext", "context", "invariant", "_appRpc", "rpc", "AppService", "setContext", "open", "createProtoRpcPeer", "requested", "appServiceBundle", "exposed", "shellServiceBundle", "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", "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", "log", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "WebRTCTransportProxyFactory", "invariant", "asyncTimeout", "Trigger", "iframeServiceBundle", "PROXY_CONNECTION_TIMEOUT", "workerServiceBundle", "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", "wake", "undefined", "err", "catch", "stop", "createSession", "appPort", "systemPort", "shellPort", "session", "WorkerSession", "serviceHost", "readySignal", "onClose", "set", "delete", "_reconnectWebrtc", "add", "_sessionForNetworking", "has", "selected", "Array", "from", "find", "bridgeService", "setBridgeService"]
|
|
7
7
|
}
|