@dxos/client-services 0.1.11 → 0.1.13
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/src/packlets/deprecated/system.d.ts +3 -0
- package/dist/src/packlets/deprecated/system.d.ts.map +1 -1
- package/dist/src/packlets/deprecated/system.js +6 -0
- package/dist/src/packlets/deprecated/system.js.map +1 -1
- package/dist/src/packlets/services/service-proxy.d.ts.map +1 -1
- package/dist/src/packlets/services/service-proxy.js +1 -1
- package/dist/src/packlets/services/service-proxy.js.map +1 -1
- package/dist/src/packlets/vault/worker-session.d.ts +1 -1
- package/dist/src/packlets/vault/worker-session.d.ts.map +1 -1
- package/dist/src/packlets/vault/worker-session.js +17 -8
- package/dist/src/packlets/vault/worker-session.js.map +1 -1
- package/package.json +26 -26
- package/src/packlets/deprecated/system.ts +7 -0
- package/src/packlets/services/service-proxy.ts +1 -1
- package/src/packlets/vault/worker-session.ts +16 -9
|
@@ -10,6 +10,9 @@ export declare class SystemServiceImpl implements SystemService {
|
|
|
10
10
|
constructor(_config: Config, _serviceContext: ServiceContext);
|
|
11
11
|
initSession(): Promise<void>;
|
|
12
12
|
getConfig(request: void): Promise<import("@dxos/config").ConfigProto>;
|
|
13
|
+
getStatus(request: void): Promise<{
|
|
14
|
+
message: string;
|
|
15
|
+
}>;
|
|
13
16
|
reset(request: any): Promise<void>;
|
|
14
17
|
}
|
|
15
18
|
//# sourceMappingURL=system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/packlets/deprecated/system.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAjD,OAAO,EAAE,MAAM,EAAmB,eAAe,EAAE,cAAc;IAGxF,WAAW;IAIX,SAAS,CAAC,OAAO,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/packlets/deprecated/system.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAjD,OAAO,EAAE,MAAM,EAAmB,eAAe,EAAE,cAAc;IAGxF,WAAW;IAIX,SAAS,CAAC,OAAO,EAAE,IAAI;IAKvB,SAAS,CAAC,OAAO,EAAE,IAAI;;;IAMvB,KAAK,CAAC,OAAO,EAAE,GAAG;CAGzB"}
|
|
@@ -19,6 +19,12 @@ class SystemServiceImpl {
|
|
|
19
19
|
async getConfig(request) {
|
|
20
20
|
return this._config.values;
|
|
21
21
|
}
|
|
22
|
+
// TODO(burdon): Connect to iframe RPC heartbeat for network status?
|
|
23
|
+
async getStatus(request) {
|
|
24
|
+
return {
|
|
25
|
+
message: `ok: ${Date.now()}`
|
|
26
|
+
};
|
|
27
|
+
}
|
|
22
28
|
async reset(request) {
|
|
23
29
|
await this._serviceContext.reset();
|
|
24
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../../../src/packlets/deprecated/system.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAOF;;GAEG;AACH,MAAa,iBAAiB;IAC5B,YAA6B,OAAe,EAAmB,eAA+B;QAAjE,YAAO,GAAP,OAAO,CAAQ;QAAmB,oBAAe,GAAf,eAAe,CAAgB;IAAG,CAAC;IAElG,wBAAwB;IACxB,KAAK,CAAC,WAAW;QACf,MAAM;IACR,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAa;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAY;QACtB,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../../../src/packlets/deprecated/system.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAOF;;GAEG;AACH,MAAa,iBAAiB;IAC5B,YAA6B,OAAe,EAAmB,eAA+B;QAAjE,YAAO,GAAP,OAAO,CAAQ;QAAmB,oBAAe,GAAf,eAAe,CAAgB;IAAG,CAAC;IAElG,wBAAwB;IACxB,KAAK,CAAC,WAAW;QACf,MAAM;IACR,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAa;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,SAAS,CAAC,OAAa;QAC3B,OAAO;YACL,OAAO,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;SAC7B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAY;QACtB,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;CACF;AAtBD,8CAsBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-proxy.d.ts","sourceRoot":"","sources":["../../../../src/packlets/services/service-proxy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsB,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAuB,MAAM,uBAAuB,CAAC;AAEpG;;;GAGG;AAGH,qBAAa,mBAAoB,YAAW,sBAAsB;IAQ9D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;gBAIpD,IAAI,EAAE,OAAO,EAGI,QAAQ,
|
|
1
|
+
{"version":3,"file":"service-proxy.d.ts","sourceRoot":"","sources":["../../../../src/packlets/services/service-proxy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAsB,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAuB,MAAM,uBAAuB,CAAC;AAEpG;;;GAGG;AAGH,qBAAa,mBAAoB,YAAW,sBAAsB;IAQ9D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;gBAIpD,IAAI,EAAE,OAAO,EAGI,QAAQ,SAAS;IAUpC,IAAI,KAAK,iCAER;IAED,IAAI,WAAW,sDAEd;IAED,IAAI,QAAQ,mBAEX;IAEK,IAAI;IAIJ,KAAK;CAGZ"}
|
|
@@ -19,7 +19,7 @@ class ClientServicesProxy {
|
|
|
19
19
|
constructor(port,
|
|
20
20
|
// NOTE: With lower timeout the shared worker does not have enough time to start.
|
|
21
21
|
// TODO(dmaretskyi): Find better ways to detected when the worker has finished loading. It might take a while on slow connections.
|
|
22
|
-
_timeout =
|
|
22
|
+
_timeout = 30000) {
|
|
23
23
|
this._timeout = _timeout;
|
|
24
24
|
this._proxy = (0, rpc_1.createProtoRpcPeer)({
|
|
25
25
|
requested: service_definitions_1.clientServiceBundle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-proxy.js","sourceRoot":"","sources":["../../../../src/packlets/services/service-proxy.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,uCAA2C;AAC3C,yCAA8D;AAC9D,mCAAsE;AAEtE,+DAAoG;AAEpG;;;GAGG;AACH,6EAA6E;AAC7E,6GAA6G;AAC7G,MAAa,mBAAmB;IAG9B,kBAAkB;IAClB,YACE,IAAa;IACb,iFAAiF;IACjF,kIAAkI;IACjH,WAAW,
|
|
1
|
+
{"version":3,"file":"service-proxy.js","sourceRoot":"","sources":["../../../../src/packlets/services/service-proxy.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAEF,uCAA2C;AAC3C,yCAA8D;AAC9D,mCAAsE;AAEtE,+DAAoG;AAEpG;;;GAGG;AACH,6EAA6E;AAC7E,6GAA6G;AAC7G,MAAa,mBAAmB;IAG9B,kBAAkB;IAClB,YACE,IAAa;IACb,iFAAiF;IACjF,kIAAkI;IACjH,WAAW,KAAM;QAAjB,aAAQ,GAAR,QAAQ,CAAS;QAElC,IAAI,CAAC,MAAM,GAAG,IAAA,wBAAkB,EAAC;YAC/B,SAAS,EAAE,yCAAmB;YAC9B,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,EAAE;YACZ,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,yCAAmB,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,uCAA8B,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF;AArCD,kDAqCC"}
|
|
@@ -17,7 +17,7 @@ export type WorkerSessionParams = {
|
|
|
17
17
|
*/
|
|
18
18
|
export declare class WorkerSession {
|
|
19
19
|
private readonly _clientRpc;
|
|
20
|
-
private readonly
|
|
20
|
+
private readonly _iframeRpc;
|
|
21
21
|
private readonly _startTrigger;
|
|
22
22
|
private readonly _getServices;
|
|
23
23
|
private readonly _options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-session.d.ts","sourceRoot":"","sources":["../../../../src/packlets/vault/worker-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worker-session.d.ts","sourceRoot":"","sources":["../../../../src/packlets/vault/worker-session.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAoC,OAAO,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAuC,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/C,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE;QACR,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8C;IACvE,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC,SAAgB,OAAO,iBAAsB,QAAQ,IAAI,CAAC,EAAI;IAEvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,aAAa,CAAC;gBAEzB,EACV,WAAW,EACX,UAAU,EACV,OAAO,EACP,OAEC,EACF,EAAE,mBAAmB;IAmDhB,IAAI;IAqBJ,KAAK;CAaZ"}
|
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Copyright 2022 DXOS.org
|
|
4
4
|
//
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
5
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
9
|
exports.WorkerSession = void 0;
|
|
10
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
11
|
const async_1 = require("@dxos/async");
|
|
8
12
|
const log_1 = require("@dxos/log");
|
|
9
13
|
const rpc_1 = require("@dxos/rpc");
|
|
@@ -19,6 +23,8 @@ class WorkerSession {
|
|
|
19
23
|
} }) {
|
|
20
24
|
this._startTrigger = new async_1.Trigger();
|
|
21
25
|
this.onClose = new util_1.Callback();
|
|
26
|
+
(0, assert_1.default)(options);
|
|
27
|
+
(0, assert_1.default)(getServices);
|
|
22
28
|
this._options = options;
|
|
23
29
|
this._getServices = getServices;
|
|
24
30
|
this._clientRpc = (0, rpc_1.createProtoRpcPeer)({
|
|
@@ -37,7 +43,7 @@ class WorkerSession {
|
|
|
37
43
|
},
|
|
38
44
|
port: appPort
|
|
39
45
|
});
|
|
40
|
-
this.
|
|
46
|
+
this._iframeRpc = (0, rpc_1.createProtoRpcPeer)({
|
|
41
47
|
requested: services_2.iframeServiceBundle,
|
|
42
48
|
exposed: services_2.workerServiceBundle,
|
|
43
49
|
handlers: {
|
|
@@ -52,7 +58,7 @@ class WorkerSession {
|
|
|
52
58
|
await this.close();
|
|
53
59
|
}
|
|
54
60
|
catch (err) {
|
|
55
|
-
log_1.log.catch(err, {}, { file: "packages/sdk/client-services/src/packlets/vault/worker-session.ts", line:
|
|
61
|
+
log_1.log.catch(err, {}, { file: "packages/sdk/client-services/src/packlets/vault/worker-session.ts", line: 87, scope: this, bugcheck: "If you see this message then it means that the source code preprocessor for @dxos/log is broken. It probably has misinterpreted an unrelated call for a logger invocation.", callSite: (fn, args) => fn(...args) });
|
|
56
62
|
}
|
|
57
63
|
});
|
|
58
64
|
}
|
|
@@ -61,21 +67,24 @@ class WorkerSession {
|
|
|
61
67
|
port: systemPort,
|
|
62
68
|
timeout: 200
|
|
63
69
|
});
|
|
64
|
-
this.bridgeService = this.
|
|
70
|
+
this.bridgeService = this._iframeRpc.rpc.BridgeService;
|
|
65
71
|
}
|
|
66
72
|
async open() {
|
|
67
|
-
await Promise.all([this._clientRpc.open(), this.
|
|
73
|
+
await Promise.all([this._clientRpc.open(), this._iframeRpc.open()]);
|
|
68
74
|
await this._startTrigger.wait({ timeout: 3000 });
|
|
75
|
+
// Detect if bridge is present.
|
|
76
|
+
// TODO(burdon): Add heartbeat to client's System service.
|
|
77
|
+
// How do we detect if the client's tab closed?
|
|
69
78
|
this._heartbeatTimer = setInterval(async () => {
|
|
70
79
|
try {
|
|
71
|
-
await this.
|
|
80
|
+
await this._iframeRpc.rpc.IframeService.heartbeat();
|
|
72
81
|
}
|
|
73
82
|
catch (err) {
|
|
74
83
|
try {
|
|
75
84
|
await this.close();
|
|
76
85
|
}
|
|
77
86
|
catch (err) {
|
|
78
|
-
log_1.log.catch(err, {}, { file: "packages/sdk/client-services/src/packlets/vault/worker-session.ts", line:
|
|
87
|
+
log_1.log.catch(err, {}, { file: "packages/sdk/client-services/src/packlets/vault/worker-session.ts", line: 115, scope: this, bugcheck: "If you see this message then it means that the source code preprocessor for @dxos/log is broken. It probably has misinterpreted an unrelated call for a logger invocation.", callSite: (fn, args) => fn(...args) });
|
|
79
88
|
}
|
|
80
89
|
}
|
|
81
90
|
}, this._options.heartbeatInterval);
|
|
@@ -85,12 +94,12 @@ class WorkerSession {
|
|
|
85
94
|
await this.onClose.callIfSet();
|
|
86
95
|
}
|
|
87
96
|
catch (err) {
|
|
88
|
-
log_1.log.catch(err, {}, { file: "packages/sdk/client-services/src/packlets/vault/worker-session.ts", line:
|
|
97
|
+
log_1.log.catch(err, {}, { file: "packages/sdk/client-services/src/packlets/vault/worker-session.ts", line: 125, scope: this, bugcheck: "If you see this message then it means that the source code preprocessor for @dxos/log is broken. It probably has misinterpreted an unrelated call for a logger invocation.", callSite: (fn, args) => fn(...args) });
|
|
89
98
|
}
|
|
90
99
|
if (this._heartbeatTimer !== undefined) {
|
|
91
100
|
clearInterval(this._heartbeatTimer);
|
|
92
101
|
}
|
|
93
|
-
await Promise.all([this._clientRpc.close(), this.
|
|
102
|
+
await Promise.all([this._clientRpc.close(), this._iframeRpc.close()]);
|
|
94
103
|
}
|
|
95
104
|
}
|
|
96
105
|
exports.WorkerSession = WorkerSession;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-session.js","sourceRoot":"","sources":["../../../../src/packlets/vault/worker-session.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE
|
|
1
|
+
{"version":3,"file":"worker-session.js","sourceRoot":"","sources":["../../../../src/packlets/vault/worker-session.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/client-services",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.13",
|
|
4
4
|
"description": "DXOS client services implementation",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -24,36 +24,36 @@
|
|
|
24
24
|
"jsondown": "dxos/jsondown#main",
|
|
25
25
|
"level-js": "^5.0.2",
|
|
26
26
|
"memdown": "^5.1.0",
|
|
27
|
-
"@dxos/async": "0.1.
|
|
28
|
-
"@dxos/codec-protobuf": "0.1.
|
|
29
|
-
"@dxos/config": "0.1.
|
|
30
|
-
"@dxos/credentials": "0.1.
|
|
31
|
-
"@dxos/crypto": "0.1.
|
|
32
|
-
"@dxos/debug": "0.1.
|
|
33
|
-
"@dxos/echo-db": "0.1.
|
|
34
|
-
"@dxos/errors": "0.1.
|
|
35
|
-
"@dxos/feed-store": "0.1.
|
|
36
|
-
"@dxos/keyring": "0.1.
|
|
37
|
-
"@dxos/keys": "0.1.
|
|
38
|
-
"@dxos/log": "0.1.
|
|
39
|
-
"@dxos/messaging": "0.1.
|
|
40
|
-
"@dxos/model-factory": "0.1.
|
|
41
|
-
"@dxos/network-manager": "0.1.
|
|
42
|
-
"@dxos/object-model": "0.1.
|
|
43
|
-
"@dxos/protocol-plugin-rpc": "0.1.
|
|
44
|
-
"@dxos/protocols": "0.1.
|
|
45
|
-
"@dxos/random-access-storage": "0.1.
|
|
46
|
-
"@dxos/rpc": "0.1.
|
|
47
|
-
"@dxos/text-model": "0.1.
|
|
48
|
-
"@dxos/timeframe": "0.1.
|
|
49
|
-
"@dxos/util": "0.1.
|
|
27
|
+
"@dxos/async": "0.1.13",
|
|
28
|
+
"@dxos/codec-protobuf": "0.1.13",
|
|
29
|
+
"@dxos/config": "0.1.13",
|
|
30
|
+
"@dxos/credentials": "0.1.13",
|
|
31
|
+
"@dxos/crypto": "0.1.13",
|
|
32
|
+
"@dxos/debug": "0.1.13",
|
|
33
|
+
"@dxos/echo-db": "0.1.13",
|
|
34
|
+
"@dxos/errors": "0.1.13",
|
|
35
|
+
"@dxos/feed-store": "0.1.13",
|
|
36
|
+
"@dxos/keyring": "0.1.13",
|
|
37
|
+
"@dxos/keys": "0.1.13",
|
|
38
|
+
"@dxos/log": "0.1.13",
|
|
39
|
+
"@dxos/messaging": "0.1.13",
|
|
40
|
+
"@dxos/model-factory": "0.1.13",
|
|
41
|
+
"@dxos/network-manager": "0.1.13",
|
|
42
|
+
"@dxos/object-model": "0.1.13",
|
|
43
|
+
"@dxos/protocol-plugin-rpc": "0.1.13",
|
|
44
|
+
"@dxos/protocols": "0.1.13",
|
|
45
|
+
"@dxos/random-access-storage": "0.1.13",
|
|
46
|
+
"@dxos/rpc": "0.1.13",
|
|
47
|
+
"@dxos/text-model": "0.1.13",
|
|
48
|
+
"@dxos/timeframe": "0.1.13",
|
|
49
|
+
"@dxos/util": "0.1.13"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/level-js": "~4.0.1",
|
|
53
53
|
"@types/memdown": "^3.0.0",
|
|
54
54
|
"@types/readable-stream": "^2.3.9",
|
|
55
|
-
"@dxos/signal": "0.1.
|
|
56
|
-
"@dxos/testutils": "0.1.
|
|
55
|
+
"@dxos/signal": "0.1.13",
|
|
56
|
+
"@dxos/testutils": "0.1.13"
|
|
57
57
|
},
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
|
@@ -22,6 +22,13 @@ export class SystemServiceImpl implements SystemService {
|
|
|
22
22
|
return this._config.values;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
// TODO(burdon): Connect to iframe RPC heartbeat for network status?
|
|
26
|
+
async getStatus(request: void) {
|
|
27
|
+
return {
|
|
28
|
+
message: `ok: ${Date.now()}`
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
25
32
|
async reset(request: any) {
|
|
26
33
|
await this._serviceContext.reset();
|
|
27
34
|
}
|
|
@@ -22,7 +22,7 @@ export class ClientServicesProxy implements ClientServicesProvider {
|
|
|
22
22
|
port: RpcPort,
|
|
23
23
|
// NOTE: With lower timeout the shared worker does not have enough time to start.
|
|
24
24
|
// TODO(dmaretskyi): Find better ways to detected when the worker has finished loading. It might take a while on slow connections.
|
|
25
|
-
private readonly _timeout =
|
|
25
|
+
private readonly _timeout = 30_000
|
|
26
26
|
) {
|
|
27
27
|
this._proxy = createProtoRpcPeer({
|
|
28
28
|
requested: clientServiceBundle,
|
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import assert from 'assert';
|
|
6
|
+
|
|
5
7
|
import { Trigger } from '@dxos/async';
|
|
6
8
|
import { log } from '@dxos/log';
|
|
7
9
|
import { BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';
|
|
8
10
|
import { createProtoRpcPeer, ProtoRpcPeer, RpcPort } from '@dxos/rpc';
|
|
9
11
|
import { Callback } from '@dxos/util';
|
|
10
12
|
|
|
11
|
-
import { clientServiceBundle, ClientServicesHost } from '../services';
|
|
13
|
+
import { clientServiceBundle, ClientServices, ClientServicesHost } from '../services';
|
|
12
14
|
import { IframeServiceBundle, iframeServiceBundle, workerServiceBundle } from './services';
|
|
13
15
|
|
|
14
16
|
export type WorkerSessionParams = {
|
|
@@ -25,8 +27,8 @@ export type WorkerSessionParams = {
|
|
|
25
27
|
* Represents a tab connection within the worker.
|
|
26
28
|
*/
|
|
27
29
|
export class WorkerSession {
|
|
28
|
-
private readonly _clientRpc: ProtoRpcPeer<
|
|
29
|
-
private readonly
|
|
30
|
+
private readonly _clientRpc: ProtoRpcPeer<ClientServices>;
|
|
31
|
+
private readonly _iframeRpc: ProtoRpcPeer<IframeServiceBundle>;
|
|
30
32
|
private readonly _startTrigger = new Trigger();
|
|
31
33
|
private readonly _getServices: () => Promise<ClientServicesHost>;
|
|
32
34
|
private readonly _options: NonNullable<WorkerSessionParams['options']>;
|
|
@@ -42,9 +44,11 @@ export class WorkerSession {
|
|
|
42
44
|
systemPort,
|
|
43
45
|
appPort,
|
|
44
46
|
options = {
|
|
45
|
-
heartbeatInterval:
|
|
47
|
+
heartbeatInterval: 1_000
|
|
46
48
|
}
|
|
47
49
|
}: WorkerSessionParams) {
|
|
50
|
+
assert(options);
|
|
51
|
+
assert(getServices);
|
|
48
52
|
this._options = options;
|
|
49
53
|
this._getServices = getServices;
|
|
50
54
|
|
|
@@ -65,7 +69,7 @@ export class WorkerSession {
|
|
|
65
69
|
port: appPort
|
|
66
70
|
});
|
|
67
71
|
|
|
68
|
-
this.
|
|
72
|
+
this._iframeRpc = createProtoRpcPeer({
|
|
69
73
|
requested: iframeServiceBundle,
|
|
70
74
|
exposed: workerServiceBundle,
|
|
71
75
|
handlers: {
|
|
@@ -90,17 +94,20 @@ export class WorkerSession {
|
|
|
90
94
|
timeout: 200
|
|
91
95
|
});
|
|
92
96
|
|
|
93
|
-
this.bridgeService = this.
|
|
97
|
+
this.bridgeService = this._iframeRpc.rpc.BridgeService;
|
|
94
98
|
}
|
|
95
99
|
|
|
96
100
|
async open() {
|
|
97
|
-
await Promise.all([this._clientRpc.open(), this.
|
|
101
|
+
await Promise.all([this._clientRpc.open(), this._iframeRpc.open()]);
|
|
98
102
|
|
|
99
103
|
await this._startTrigger.wait({ timeout: 3_000 });
|
|
100
104
|
|
|
105
|
+
// Detect if bridge is present.
|
|
106
|
+
// TODO(burdon): Add heartbeat to client's System service.
|
|
107
|
+
// How do we detect if the client's tab closed?
|
|
101
108
|
this._heartbeatTimer = setInterval(async () => {
|
|
102
109
|
try {
|
|
103
|
-
await this.
|
|
110
|
+
await this._iframeRpc.rpc.IframeService.heartbeat();
|
|
104
111
|
} catch (err) {
|
|
105
112
|
try {
|
|
106
113
|
await this.close();
|
|
@@ -122,6 +129,6 @@ export class WorkerSession {
|
|
|
122
129
|
clearInterval(this._heartbeatTimer);
|
|
123
130
|
}
|
|
124
131
|
|
|
125
|
-
await Promise.all([this._clientRpc.close(), this.
|
|
132
|
+
await Promise.all([this._clientRpc.close(), this._iframeRpc.close()]);
|
|
126
133
|
}
|
|
127
134
|
}
|