@dxos/client-services 0.1.11 → 0.1.12

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.
@@ -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;IAIvB,KAAK,CAAC,OAAO,EAAE,GAAG;CAGzB"}
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;AAfD,8CAeC"}
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"}
@@ -17,7 +17,7 @@ export type WorkerSessionParams = {
17
17
  */
18
18
  export declare class WorkerSession {
19
19
  private readonly _clientRpc;
20
- private readonly _systemRpc;
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":"AAIA,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,EAAuB,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtE,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,CAAmB;IAC9C,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;IAiDhB,IAAI;IAkBJ,KAAK;CAaZ"}
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._systemRpc = (0, rpc_1.createProtoRpcPeer)({
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: 83, 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) });
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._systemRpc.rpc.BridgeService;
70
+ this.bridgeService = this._iframeRpc.rpc.BridgeService;
65
71
  }
66
72
  async open() {
67
- await Promise.all([this._clientRpc.open(), this._systemRpc.open()]);
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._systemRpc.rpc.IframeService.heartbeat();
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: 108, 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) });
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: 118, 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) });
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._systemRpc.close()]);
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":"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"}
1
+ {"version":3,"file":"worker-session.js","sourceRoot":"","sources":["../../../../src/packlets/vault/worker-session.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,oDAA4B;AAE5B,uCAAsC;AACtC,mCAAgC;AAEhC,mCAAsE;AACtE,qCAAsC;AAEtC,0CAAsF;AACtF,yCAA2F;AAY3F;;GAEG;AACH,MAAa,aAAa;IAaxB,YAAY,EACV,WAAW,EACX,UAAU,EACV,OAAO,EACP,OAAO,GAAG;QACR,iBAAiB,EAAE,IAAK;KACzB,EACmB;QAjBL,kBAAa,GAAG,IAAI,eAAO,EAAE,CAAC;QAK/B,YAAO,GAAG,IAAI,eAAQ,EAAuB,CAAC;QAa5D,IAAA,gBAAM,EAAC,OAAO,CAAC,CAAC;QAChB,IAAA,gBAAM,EAAC,WAAW,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAEhC,IAAI,CAAC,UAAU,GAAG,IAAA,wBAAkB,EAAC;YACnC,OAAO,EAAE,8BAAmB;YAC5B,QAAQ,EAAE;gBACR,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,sBAAsB;gBAC/F,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc;gBAC/E,uBAAuB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,uBAAuB;gBACjG,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa;gBAC7E,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY;gBAC3E,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW;gBACzE,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc;gBAC/E,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa;gBAC7E,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY;gBAC3E,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc;aAChF;YACD,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAA,wBAAkB,EAAC;YACnC,SAAS,EAAE,8BAAmB;YAC9B,OAAO,EAAE,8BAAmB;YAC5B,QAAQ,EAAE;gBACR,aAAa,EAAE;oBACb,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;wBACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;wBAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;oBAC5B,CAAC;oBAED,IAAI,EAAE,KAAK,IAAI,EAAE;wBACf,UAAU,CAAC,KAAK,IAAI,EAAE;4BACpB,IAAI;gCACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;6BACpB;4BAAC,OAAO,GAAQ,EAAE;gCACjB,SAAG,CAAC,KAAK,CAAC,GAAG,wUAAC,CAAC;6BAChB;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC;iBACF;aACF;YACD,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,GAAG;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAEpE,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAK,EAAE,CAAC,CAAC;QAElD,+BAA+B;QAC/B,0DAA0D;QAC1D,gDAAgD;QAChD,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YAC5C,IAAI;gBACF,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;aACrD;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI;oBACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;iBACpB;gBAAC,OAAO,GAAQ,EAAE;oBACjB,SAAG,CAAC,KAAK,CAAC,GAAG,yUAAC,CAAC;iBAChB;aACF;QACH,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI;YACF,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SAChC;QAAC,OAAO,GAAQ,EAAE;YACjB,SAAG,CAAC,KAAK,CAAC,GAAG,yUAAC,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;YACtC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACrC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;CACF;AAzGD,sCAyGC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/client-services",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
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.11",
28
- "@dxos/codec-protobuf": "0.1.11",
29
- "@dxos/config": "0.1.11",
30
- "@dxos/credentials": "0.1.11",
31
- "@dxos/crypto": "0.1.11",
32
- "@dxos/debug": "0.1.11",
33
- "@dxos/echo-db": "0.1.11",
34
- "@dxos/errors": "0.1.9",
35
- "@dxos/feed-store": "0.1.11",
36
- "@dxos/keyring": "0.1.11",
37
- "@dxos/keys": "0.1.11",
38
- "@dxos/log": "0.1.11",
39
- "@dxos/messaging": "0.1.11",
40
- "@dxos/model-factory": "0.1.11",
41
- "@dxos/network-manager": "0.1.11",
42
- "@dxos/object-model": "0.1.11",
43
- "@dxos/protocol-plugin-rpc": "0.1.11",
44
- "@dxos/protocols": "0.1.11",
45
- "@dxos/random-access-storage": "0.1.11",
46
- "@dxos/rpc": "0.1.11",
47
- "@dxos/text-model": "0.1.11",
48
- "@dxos/timeframe": "0.1.11",
49
- "@dxos/util": "0.1.11"
27
+ "@dxos/async": "0.1.12",
28
+ "@dxos/codec-protobuf": "0.1.12",
29
+ "@dxos/config": "0.1.12",
30
+ "@dxos/credentials": "0.1.12",
31
+ "@dxos/crypto": "0.1.12",
32
+ "@dxos/debug": "0.1.12",
33
+ "@dxos/echo-db": "0.1.12",
34
+ "@dxos/errors": "0.1.12",
35
+ "@dxos/feed-store": "0.1.12",
36
+ "@dxos/keyring": "0.1.12",
37
+ "@dxos/keys": "0.1.12",
38
+ "@dxos/log": "0.1.12",
39
+ "@dxos/messaging": "0.1.12",
40
+ "@dxos/model-factory": "0.1.12",
41
+ "@dxos/network-manager": "0.1.12",
42
+ "@dxos/object-model": "0.1.12",
43
+ "@dxos/protocol-plugin-rpc": "0.1.12",
44
+ "@dxos/protocols": "0.1.12",
45
+ "@dxos/random-access-storage": "0.1.12",
46
+ "@dxos/rpc": "0.1.12",
47
+ "@dxos/text-model": "0.1.12",
48
+ "@dxos/timeframe": "0.1.12",
49
+ "@dxos/util": "0.1.12"
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.11",
56
- "@dxos/testutils": "0.1.11"
55
+ "@dxos/signal": "0.1.12",
56
+ "@dxos/testutils": "0.1.12"
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
  }
@@ -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 _systemRpc: ProtoRpcPeer<IframeServiceBundle>;
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: 1000
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._systemRpc = createProtoRpcPeer({
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._systemRpc.rpc.BridgeService;
97
+ this.bridgeService = this._iframeRpc.rpc.BridgeService;
94
98
  }
95
99
 
96
100
  async open() {
97
- await Promise.all([this._clientRpc.open(), this._systemRpc.open()]);
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._systemRpc.rpc.IframeService.heartbeat();
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._systemRpc.close()]);
132
+ await Promise.all([this._clientRpc.close(), this._iframeRpc.close()]);
126
133
  }
127
134
  }