@dxos/client-services 0.8.3 → 0.8.4-main.1da679c

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.
Files changed (170) hide show
  1. package/dist/lib/browser/{chunk-LBG3C332.mjs → chunk-XT2YQZXS.mjs} +2792 -2227
  2. package/dist/lib/browser/chunk-XT2YQZXS.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +147 -103
  4. package/dist/lib/browser/index.mjs.map +3 -3
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +74 -45
  7. package/dist/lib/browser/testing/index.mjs.map +3 -3
  8. package/dist/lib/node-esm/{chunk-SKGQLRKS.mjs → chunk-MDSLKO5V.mjs} +2788 -2222
  9. package/dist/lib/node-esm/chunk-MDSLKO5V.mjs.map +7 -0
  10. package/dist/lib/node-esm/index.mjs +147 -103
  11. package/dist/lib/node-esm/index.mjs.map +3 -3
  12. package/dist/lib/node-esm/meta.json +1 -1
  13. package/dist/lib/node-esm/testing/index.mjs +74 -45
  14. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  15. package/dist/types/src/packlets/agents/edge-agent-service.d.ts +1 -1
  16. package/dist/types/src/packlets/agents/edge-agent-service.d.ts.map +1 -1
  17. package/dist/types/src/packlets/devices/devices-service.d.ts.map +1 -1
  18. package/dist/types/src/packlets/devtools/devtools.d.ts +18 -18
  19. package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
  20. package/dist/types/src/packlets/devtools/feeds.d.ts +1 -1
  21. package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
  22. package/dist/types/src/packlets/devtools/network.d.ts +1 -1
  23. package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
  24. package/dist/types/src/packlets/diagnostics/browser-diagnostics-broadcast.d.ts +1 -1
  25. package/dist/types/src/packlets/diagnostics/browser-diagnostics-broadcast.d.ts.map +1 -1
  26. package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts +1 -1
  27. package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts.map +1 -1
  28. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts +1 -1
  29. package/dist/types/src/packlets/diagnostics/diagnostics.d.ts.map +1 -1
  30. package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
  31. package/dist/types/src/packlets/identity/contacts-service.d.ts +1 -1
  32. package/dist/types/src/packlets/identity/contacts-service.d.ts.map +1 -1
  33. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts +1 -1
  34. package/dist/types/src/packlets/identity/default-space-state-machine.d.ts.map +1 -1
  35. package/dist/types/src/packlets/identity/identity-manager.d.ts +1 -1
  36. package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
  37. package/dist/types/src/packlets/identity/identity-service.d.ts +1 -1
  38. package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
  39. package/dist/types/src/packlets/identity/identity.d.ts +1 -1
  40. package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
  41. package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts +1 -1
  42. package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts.map +1 -1
  43. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts +1 -1
  44. package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts.map +1 -1
  45. package/dist/types/src/packlets/invitations/index.d.ts +1 -1
  46. package/dist/types/src/packlets/invitations/index.d.ts.map +1 -1
  47. package/dist/types/src/packlets/invitations/invitation-guest-extenstion.d.ts.map +1 -1
  48. package/dist/types/src/packlets/invitations/invitation-host-extension.d.ts.map +1 -1
  49. package/dist/types/src/packlets/invitations/invitation-protocol.d.ts +1 -1
  50. package/dist/types/src/packlets/invitations/invitation-protocol.d.ts.map +1 -1
  51. package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
  52. package/dist/types/src/packlets/invitations/invitations-manager.d.ts.map +1 -1
  53. package/dist/types/src/packlets/invitations/invitations-service.d.ts +1 -1
  54. package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
  55. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts +1 -1
  56. package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts.map +1 -1
  57. package/dist/types/src/packlets/invitations/utils.d.ts.map +1 -1
  58. package/dist/types/src/packlets/locks/index.d.ts +1 -1
  59. package/dist/types/src/packlets/locks/index.d.ts.map +1 -1
  60. package/dist/types/src/packlets/logging/logging-service.d.ts +1 -1
  61. package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
  62. package/dist/types/src/packlets/network/network-service.d.ts +2 -2
  63. package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
  64. package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +1 -1
  65. package/dist/types/src/packlets/services/service-context.d.ts +3 -3
  66. package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
  67. package/dist/types/src/packlets/services/service-host.d.ts +1 -1
  68. package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
  69. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts +1 -1
  70. package/dist/types/src/packlets/space-export/space-archive-writer.d.ts.map +1 -1
  71. package/dist/types/src/packlets/spaces/automerge-space-state.d.ts +1 -1
  72. package/dist/types/src/packlets/spaces/automerge-space-state.d.ts.map +1 -1
  73. package/dist/types/src/packlets/spaces/data-space-manager.d.ts +2 -2
  74. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  75. package/dist/types/src/packlets/spaces/data-space.d.ts +4 -4
  76. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  77. package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
  78. package/dist/types/src/packlets/spaces/spaces-service.d.ts +2 -2
  79. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  80. package/dist/types/src/packlets/storage/profile-archive.d.ts.map +1 -1
  81. package/dist/types/src/packlets/storage/storage.d.ts.map +1 -1
  82. package/dist/types/src/packlets/system/system-service.d.ts +1 -1
  83. package/dist/types/src/packlets/system/system-service.d.ts.map +1 -1
  84. package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -1
  85. package/dist/types/src/packlets/testing/test-builder.d.ts +2 -2
  86. package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
  87. package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -1
  88. package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -1
  89. package/dist/types/src/version.d.ts +1 -1
  90. package/dist/types/src/version.d.ts.map +1 -1
  91. package/dist/types/tsconfig.tsbuildinfo +1 -1
  92. package/package.json +41 -39
  93. package/src/packlets/agents/edge-agent-manager.ts +2 -2
  94. package/src/packlets/agents/edge-agent-service.ts +2 -2
  95. package/src/packlets/devices/devices-service.test.ts +4 -3
  96. package/src/packlets/devices/devices-service.ts +1 -1
  97. package/src/packlets/devtools/devtools.ts +28 -27
  98. package/src/packlets/devtools/feeds.ts +2 -2
  99. package/src/packlets/devtools/network.ts +1 -1
  100. package/src/packlets/diagnostics/browser-diagnostics-broadcast.ts +1 -1
  101. package/src/packlets/diagnostics/diagnostics-broadcast.ts +1 -1
  102. package/src/packlets/diagnostics/diagnostics-collector.ts +1 -1
  103. package/src/packlets/diagnostics/diagnostics.ts +1 -1
  104. package/src/packlets/identity/authenticator.node.test.ts +1 -1
  105. package/src/packlets/identity/authenticator.ts +1 -1
  106. package/src/packlets/identity/contacts-service.ts +3 -2
  107. package/src/packlets/identity/default-space-state-machine.ts +1 -1
  108. package/src/packlets/identity/identity-manager.test.ts +3 -3
  109. package/src/packlets/identity/identity-manager.ts +3 -3
  110. package/src/packlets/identity/identity-service.test.ts +3 -2
  111. package/src/packlets/identity/identity-service.ts +2 -1
  112. package/src/packlets/identity/identity.test.ts +5 -5
  113. package/src/packlets/identity/identity.ts +7 -6
  114. package/src/packlets/invitations/device-invitation-protocol.test.ts +4 -4
  115. package/src/packlets/invitations/device-invitation-protocol.ts +2 -1
  116. package/src/packlets/invitations/edge-invitation-handler.ts +1 -1
  117. package/src/packlets/invitations/index.ts +1 -1
  118. package/src/packlets/invitations/invitation-guest-extenstion.ts +1 -1
  119. package/src/packlets/invitations/invitation-host-extension.ts +2 -2
  120. package/src/packlets/invitations/invitation-protocol.ts +1 -1
  121. package/src/packlets/invitations/invitations-handler.test.ts +302 -292
  122. package/src/packlets/invitations/invitations-handler.ts +3 -3
  123. package/src/packlets/invitations/invitations-manager.ts +3 -3
  124. package/src/packlets/invitations/invitations-service.ts +1 -1
  125. package/src/packlets/invitations/space-invitation-protocol.test.ts +9 -9
  126. package/src/packlets/invitations/space-invitation-protocol.ts +3 -2
  127. package/src/packlets/invitations/utils.ts +1 -1
  128. package/src/packlets/locks/browser.ts +1 -1
  129. package/src/packlets/locks/index.ts +1 -1
  130. package/src/packlets/logging/logging-service.ts +3 -2
  131. package/src/packlets/logging/logging.test.ts +1 -1
  132. package/src/packlets/network/network-service.test.ts +4 -3
  133. package/src/packlets/network/network-service.ts +2 -2
  134. package/src/packlets/services/client-rpc-server.ts +1 -1
  135. package/src/packlets/services/service-context.test.ts +1 -1
  136. package/src/packlets/services/service-context.ts +9 -8
  137. package/src/packlets/services/service-host.test.ts +3 -2
  138. package/src/packlets/services/service-host.ts +17 -14
  139. package/src/packlets/services/service-registry.test.ts +2 -1
  140. package/src/packlets/space-export/space-archive-reader.ts +1 -1
  141. package/src/packlets/space-export/space-archive-writer.ts +4 -4
  142. package/src/packlets/space-export/tar.test.ts +1 -1
  143. package/src/packlets/spaces/automerge-space-state.ts +1 -1
  144. package/src/packlets/spaces/data-space-manager.ts +21 -16
  145. package/src/packlets/spaces/data-space.ts +9 -8
  146. package/src/packlets/spaces/edge-feed-replicator.test.ts +2 -2
  147. package/src/packlets/spaces/edge-feed-replicator.ts +1 -1
  148. package/src/packlets/spaces/notarization-plugin.test.ts +1 -1
  149. package/src/packlets/spaces/notarization-plugin.ts +3 -3
  150. package/src/packlets/spaces/spaces-service.test.ts +3 -2
  151. package/src/packlets/spaces/spaces-service.ts +17 -16
  152. package/src/packlets/storage/profile-archive.ts +1 -1
  153. package/src/packlets/storage/storage.ts +3 -4
  154. package/src/packlets/system/system-service.test.ts +1 -1
  155. package/src/packlets/system/system-service.ts +4 -4
  156. package/src/packlets/testing/invitation-utils.ts +1 -1
  157. package/src/packlets/testing/test-builder.ts +3 -3
  158. package/src/packlets/worker/worker-runtime.ts +2 -1
  159. package/src/packlets/worker/worker-session.ts +4 -4
  160. package/src/version.ts +1 -5
  161. package/README.yml +0 -5
  162. package/dist/lib/browser/chunk-LBG3C332.mjs.map +0 -7
  163. package/dist/lib/node/chunk-LMGLGOUU.cjs +0 -9311
  164. package/dist/lib/node/chunk-LMGLGOUU.cjs.map +0 -7
  165. package/dist/lib/node/index.cjs +0 -437
  166. package/dist/lib/node/index.cjs.map +0 -7
  167. package/dist/lib/node/meta.json +0 -1
  168. package/dist/lib/node/testing/index.cjs +0 -452
  169. package/dist/lib/node/testing/index.cjs.map +0 -7
  170. package/dist/lib/node-esm/chunk-SKGQLRKS.mjs.map +0 -7
@@ -43,9 +43,9 @@ import {
43
43
  subscribeToSignal,
44
44
  subscribeToSpaces,
45
45
  subscribeToSwarmInfo
46
- } from "./chunk-LBG3C332.mjs";
46
+ } from "./chunk-XT2YQZXS.mjs";
47
47
 
48
- // packages/sdk/client-services/src/packlets/worker/worker-runtime.ts
48
+ // src/packlets/worker/worker-runtime.ts
49
49
  import { Trigger as Trigger2 } from "@dxos/async";
50
50
  import { DEFAULT_WORKER_BROADCAST_CHANNEL } from "@dxos/client-protocol";
51
51
  import { Context } from "@dxos/context";
@@ -54,24 +54,115 @@ import { log as log2 } from "@dxos/log";
54
54
  import { MemorySignalManager, MemorySignalManagerContext, WebsocketSignalManager, setIdentityTags } from "@dxos/messaging";
55
55
  import { RtcTransportProxyFactory } from "@dxos/network-manager";
56
56
 
57
- // packages/sdk/client-services/src/packlets/worker/worker-session.ts
58
- import { asyncTimeout, Trigger } from "@dxos/async";
59
- import { iframeServiceBundle, PROXY_CONNECTION_TIMEOUT, workerServiceBundle } from "@dxos/client-protocol";
57
+ // src/packlets/worker/worker-session.ts
58
+ import { Trigger, asyncTimeout } from "@dxos/async";
59
+ import { PROXY_CONNECTION_TIMEOUT, iframeServiceBundle, workerServiceBundle } from "@dxos/client-protocol";
60
60
  import { invariant } from "@dxos/invariant";
61
61
  import { log, logInfo } from "@dxos/log";
62
62
  import { createProtoRpcPeer } from "@dxos/rpc";
63
63
  import { Callback } from "@dxos/util";
64
+ function _define_property(obj, key, value) {
65
+ if (key in obj) {
66
+ Object.defineProperty(obj, key, {
67
+ value,
68
+ enumerable: true,
69
+ configurable: true,
70
+ writable: true
71
+ });
72
+ } else {
73
+ obj[key] = value;
74
+ }
75
+ return obj;
76
+ }
64
77
  function _ts_decorate(decorators, target, key, desc) {
65
78
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
66
79
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
67
80
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
68
81
  return c > 3 && r && Object.defineProperty(target, key, r), r;
69
82
  }
70
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-session.ts";
83
+ var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-session.ts";
71
84
  var WorkerSession = class {
85
+ async open() {
86
+ log.info("opening...", void 0, {
87
+ F: __dxlog_file,
88
+ L: 122,
89
+ S: this,
90
+ C: (f, a) => f(...a)
91
+ });
92
+ await Promise.all([
93
+ this._clientRpc.open(),
94
+ this._iframeRpc.open(),
95
+ this._maybeOpenShell()
96
+ ]);
97
+ await this._startTrigger.wait({
98
+ timeout: PROXY_CONNECTION_TIMEOUT
99
+ });
100
+ if (this.lockKey) {
101
+ void this._afterLockReleases(this.lockKey, () => this.close());
102
+ }
103
+ log.info("opened", void 0, {
104
+ F: __dxlog_file,
105
+ L: 133,
106
+ S: this,
107
+ C: (f, a) => f(...a)
108
+ });
109
+ }
110
+ async close() {
111
+ log.info("closing...", void 0, {
112
+ F: __dxlog_file,
113
+ L: 137,
114
+ S: this,
115
+ C: (f, a) => f(...a)
116
+ });
117
+ try {
118
+ await this.onClose.callIfSet();
119
+ } catch (err) {
120
+ log.catch(err, void 0, {
121
+ F: __dxlog_file,
122
+ L: 141,
123
+ S: this,
124
+ C: (f, a) => f(...a)
125
+ });
126
+ }
127
+ await Promise.all([
128
+ this._clientRpc.close(),
129
+ this._iframeRpc.close()
130
+ ]);
131
+ log.info("closed", void 0, {
132
+ F: __dxlog_file,
133
+ L: 145,
134
+ S: this,
135
+ C: (f, a) => f(...a)
136
+ });
137
+ }
138
+ async _maybeOpenShell() {
139
+ try {
140
+ this._shellClientRpc && await asyncTimeout(this._shellClientRpc.open(), 1e3);
141
+ } catch {
142
+ log.info("No shell connected.", void 0, {
143
+ F: __dxlog_file,
144
+ L: 152,
145
+ S: this,
146
+ C: (f, a) => f(...a)
147
+ });
148
+ }
149
+ }
150
+ _afterLockReleases(lockKey, callback) {
151
+ return navigator.locks.request(lockKey, () => {
152
+ }).then(callback);
153
+ }
72
154
  constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }) {
73
- this._startTrigger = new Trigger();
74
- this.onClose = new Callback();
155
+ _define_property(this, "_clientRpc", void 0);
156
+ _define_property(this, "_shellClientRpc", void 0);
157
+ _define_property(this, "_iframeRpc", void 0);
158
+ _define_property(this, "_startTrigger", new Trigger());
159
+ _define_property(this, "_serviceHost", void 0);
160
+ _define_property(this, "onClose", new Callback());
161
+ _define_property(this, "origin", void 0);
162
+ _define_property(this, "observabilityGroup", void 0);
163
+ _define_property(this, "signalTelemetryEnabled", void 0);
164
+ _define_property(this, "lockKey", void 0);
165
+ _define_property(this, "bridgeService", void 0);
75
166
  invariant(serviceHost, void 0, {
76
167
  F: __dxlog_file,
77
168
  L: 54,
@@ -145,75 +236,6 @@ var WorkerSession = class {
145
236
  });
146
237
  this.bridgeService = this._iframeRpc.rpc.BridgeService;
147
238
  }
148
- async open() {
149
- log.info("opening...", void 0, {
150
- F: __dxlog_file,
151
- L: 122,
152
- S: this,
153
- C: (f, a) => f(...a)
154
- });
155
- await Promise.all([
156
- this._clientRpc.open(),
157
- this._iframeRpc.open(),
158
- this._maybeOpenShell()
159
- ]);
160
- await this._startTrigger.wait({
161
- timeout: PROXY_CONNECTION_TIMEOUT
162
- });
163
- if (this.lockKey) {
164
- void this._afterLockReleases(this.lockKey, () => this.close());
165
- }
166
- log.info("opened", void 0, {
167
- F: __dxlog_file,
168
- L: 133,
169
- S: this,
170
- C: (f, a) => f(...a)
171
- });
172
- }
173
- async close() {
174
- log.info("closing...", void 0, {
175
- F: __dxlog_file,
176
- L: 137,
177
- S: this,
178
- C: (f, a) => f(...a)
179
- });
180
- try {
181
- await this.onClose.callIfSet();
182
- } catch (err) {
183
- log.catch(err, void 0, {
184
- F: __dxlog_file,
185
- L: 141,
186
- S: this,
187
- C: (f, a) => f(...a)
188
- });
189
- }
190
- await Promise.all([
191
- this._clientRpc.close(),
192
- this._iframeRpc.close()
193
- ]);
194
- log.info("closed", void 0, {
195
- F: __dxlog_file,
196
- L: 145,
197
- S: this,
198
- C: (f, a) => f(...a)
199
- });
200
- }
201
- async _maybeOpenShell() {
202
- try {
203
- this._shellClientRpc && await asyncTimeout(this._shellClientRpc.open(), 1e3);
204
- } catch {
205
- log.info("No shell connected.", void 0, {
206
- F: __dxlog_file,
207
- L: 152,
208
- S: this,
209
- C: (f, a) => f(...a)
210
- });
211
- }
212
- }
213
- _afterLockReleases(lockKey, callback) {
214
- return navigator.locks.request(lockKey, () => {
215
- }).then(callback);
216
- }
217
239
  };
218
240
  _ts_decorate([
219
241
  logInfo
@@ -222,35 +244,29 @@ _ts_decorate([
222
244
  logInfo
223
245
  ], WorkerSession.prototype, "lockKey", void 0);
224
246
 
225
- // packages/sdk/client-services/src/packlets/worker/worker-runtime.ts
226
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
227
- var WorkerRuntime = class {
228
- constructor({ channel = DEFAULT_WORKER_BROADCAST_CHANNEL, configProvider, acquireLock, releaseLock, onStop }) {
229
- this._transportFactory = new RtcTransportProxyFactory();
230
- this._ready = new Trigger2();
231
- this._sessions = /* @__PURE__ */ new Set();
232
- this._signalMetadataTags = {
233
- runtime: "worker-runtime"
234
- };
235
- this._signalTelemetryEnabled = false;
236
- this._configProvider = configProvider;
237
- this._acquireLock = acquireLock;
238
- this._releaseLock = releaseLock;
239
- this._onStop = onStop;
240
- this._channel = channel;
241
- this._clientServices = new ClientServicesHost({
242
- callbacks: {
243
- onReset: async () => this.stop()
244
- }
247
+ // src/packlets/worker/worker-runtime.ts
248
+ function _define_property2(obj, key, value) {
249
+ if (key in obj) {
250
+ Object.defineProperty(obj, key, {
251
+ value,
252
+ enumerable: true,
253
+ configurable: true,
254
+ writable: true
245
255
  });
256
+ } else {
257
+ obj[key] = value;
246
258
  }
259
+ return obj;
260
+ }
261
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/worker/worker-runtime.ts";
262
+ var WorkerRuntime = class {
247
263
  get host() {
248
264
  return this._clientServices;
249
265
  }
250
266
  async start() {
251
267
  log2("starting...", void 0, {
252
268
  F: __dxlog_file2,
253
- L: 84,
269
+ L: 85,
254
270
  S: this,
255
271
  C: (f, a) => f(...a)
256
272
  });
@@ -274,12 +290,12 @@ var WorkerRuntime = class {
274
290
  });
275
291
  await this._clientServices.open(new Context(void 0, {
276
292
  F: __dxlog_file2,
277
- L: 107
293
+ L: 108
278
294
  }));
279
295
  this._ready.wake(void 0);
280
296
  log2("started", void 0, {
281
297
  F: __dxlog_file2,
282
- L: 109,
298
+ L: 110,
283
299
  S: this,
284
300
  C: (f, a) => f(...a)
285
301
  });
@@ -294,7 +310,7 @@ var WorkerRuntime = class {
294
310
  this._ready.wake(err);
295
311
  log2.error("starting", err, {
296
312
  F: __dxlog_file2,
297
- L: 119,
313
+ L: 120,
298
314
  S: this,
299
315
  C: (f, a) => f(...a)
300
316
  });
@@ -329,7 +345,7 @@ var WorkerRuntime = class {
329
345
  await session.open();
330
346
  invariant2(!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin, `worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`, {
331
347
  F: __dxlog_file2,
332
- L: 157,
348
+ L: 158,
333
349
  S: this,
334
350
  A: [
335
351
  "!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin",
@@ -350,7 +366,7 @@ var WorkerRuntime = class {
350
366
  _reconnectWebrtc() {
351
367
  log2("reconnecting webrtc...", void 0, {
352
368
  F: __dxlog_file2,
353
- L: 175,
369
+ L: 176,
354
370
  S: this,
355
371
  C: (f, a) => f(...a)
356
372
  });
@@ -369,6 +385,34 @@ var WorkerRuntime = class {
369
385
  }
370
386
  }
371
387
  }
388
+ constructor({ channel = DEFAULT_WORKER_BROADCAST_CHANNEL, configProvider, acquireLock, releaseLock, onStop }) {
389
+ _define_property2(this, "_configProvider", void 0);
390
+ _define_property2(this, "_acquireLock", void 0);
391
+ _define_property2(this, "_releaseLock", void 0);
392
+ _define_property2(this, "_onStop", void 0);
393
+ _define_property2(this, "_transportFactory", new RtcTransportProxyFactory());
394
+ _define_property2(this, "_ready", new Trigger2());
395
+ _define_property2(this, "_sessions", /* @__PURE__ */ new Set());
396
+ _define_property2(this, "_clientServices", void 0);
397
+ _define_property2(this, "_channel", void 0);
398
+ _define_property2(this, "_broadcastChannel", void 0);
399
+ _define_property2(this, "_sessionForNetworking", void 0);
400
+ _define_property2(this, "_config", void 0);
401
+ _define_property2(this, "_signalMetadataTags", {
402
+ runtime: "worker-runtime"
403
+ });
404
+ _define_property2(this, "_signalTelemetryEnabled", false);
405
+ this._configProvider = configProvider;
406
+ this._acquireLock = acquireLock;
407
+ this._releaseLock = releaseLock;
408
+ this._onStop = onStop;
409
+ this._channel = channel;
410
+ this._clientServices = new ClientServicesHost({
411
+ callbacks: {
412
+ onReset: async () => this.stop()
413
+ }
414
+ });
415
+ }
372
416
  };
373
417
  export {
374
418
  ClientRpcServer,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/packlets/worker/worker-runtime.ts", "../../../src/packlets/worker/worker-session.ts"],
4
- "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { DEFAULT_WORKER_BROADCAST_CHANNEL } from '@dxos/client-protocol';\nimport { type Config } from '@dxos/config';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport {\n MemorySignalManager,\n MemorySignalManagerContext,\n WebsocketSignalManager,\n setIdentityTags,\n} from '@dxos/messaging';\nimport { RtcTransportProxyFactory } from '@dxos/network-manager';\nimport { type RpcPort } from '@dxos/rpc';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { WorkerSession } from './worker-session';\nimport { ClientServicesHost } from '../services';\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\nexport type WorkerRuntimeOptions = {\n channel?: string;\n configProvider: () => MaybePromise<Config>;\n acquireLock: () => Promise<void>;\n releaseLock: () => void;\n onStop?: () => Promise<void>;\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 _configProvider: () => MaybePromise<Config>;\n private readonly _acquireLock: () => Promise<void>;\n private readonly _releaseLock: () => void;\n private readonly _onStop?: () => Promise<void>;\n private readonly _transportFactory = new RtcTransportProxyFactory();\n private readonly _ready = new Trigger<Error | undefined>();\n private readonly _sessions = new Set<WorkerSession>();\n private readonly _clientServices!: ClientServicesHost;\n private readonly _channel: string;\n private _broadcastChannel?: BroadcastChannel;\n private _sessionForNetworking?: WorkerSession; // TODO(burdon): Expose to client QueryStatusResponse.\n private _config!: Config;\n private _signalMetadataTags: any = { runtime: 'worker-runtime' };\n private _signalTelemetryEnabled: boolean = false;\n\n constructor({\n channel = DEFAULT_WORKER_BROADCAST_CHANNEL,\n configProvider,\n acquireLock,\n releaseLock,\n onStop,\n }: WorkerRuntimeOptions) {\n this._configProvider = configProvider;\n this._acquireLock = acquireLock;\n this._releaseLock = releaseLock;\n this._onStop = onStop;\n this._channel = channel;\n this._clientServices = new ClientServicesHost({\n callbacks: {\n onReset: async () => this.stop(),\n },\n });\n }\n\n get host() {\n return this._clientServices;\n }\n\n async start(): Promise<void> {\n log('starting...');\n try {\n this._broadcastChannel = new BroadcastChannel(this._channel);\n this._broadcastChannel.postMessage({ action: 'stop' });\n this._broadcastChannel.onmessage = async (event) => {\n if (event.data?.action === 'stop') {\n await this.stop();\n }\n };\n\n await this._acquireLock();\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: this._config.get('runtime.client.edgeFeatures')?.signaling\n ? undefined\n : signals\n ? new WebsocketSignalManager(signals, () => (this._signalTelemetryEnabled ? this._signalMetadataTags : {}))\n : new MemorySignalManager(new MemorySignalManagerContext()), // TODO(dmaretskyi): Inject this context.\n transportFactory: this._transportFactory,\n });\n\n await this._clientServices.open(new Context());\n this._ready.wake(undefined);\n log('started');\n setIdentityTags({\n identityService: this._clientServices.services.IdentityService!,\n devicesService: this._clientServices.services.DevicesService!,\n setTag: (k: string, v: string) => {\n this._signalMetadataTags[k] = v;\n },\n });\n } catch (err: any) {\n this._ready.wake(err);\n log.error('starting', err);\n }\n }\n\n async stop(): Promise<void> {\n // Release the lock to notify remote clients that the worker is terminating.\n this._releaseLock();\n this._broadcastChannel?.close();\n this._broadcastChannel = undefined;\n await this._clientServices.close();\n await this._onStop?.();\n }\n\n /**\n * Create a new session.\n */\n async createSession({ appPort, systemPort, shellPort }: CreateSessionParams): Promise<void> {\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 or client is destroyed.\n session.onClose.set(async () => {\n this._sessions.delete(session);\n if (this._sessions.size === 0) {\n // Terminate the worker when all sessions are closed.\n await this.stop();\n } else {\n this._reconnectWebrtc();\n }\n });\n\n await session.open();\n // A worker can only service one origin currently\n invariant(\n !this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin,\n `worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`,\n );\n if (session.observabilityGroup) {\n this._signalMetadataTags.group = session.observabilityGroup;\n }\n this._signalTelemetryEnabled = session.signalTelemetryEnabled ?? false;\n this._signalMetadataTags.origin = session.origin;\n this._sessions.add(session);\n\n this._reconnectWebrtc();\n }\n\n /**\n * Selects one of the existing session for WebRTC networking.\n */\n private _reconnectWebrtc(): void {\n log('reconnecting webrtc...');\n // Check if current session is already closed.\n if (this._sessionForNetworking) {\n if (!this._sessions.has(this._sessionForNetworking)) {\n this._sessionForNetworking = undefined;\n }\n }\n\n // Select existing session.\n if (!this._sessionForNetworking) {\n const selected = Array.from(this._sessions).find((session) => session.bridgeService);\n if (selected) {\n this._sessionForNetworking = selected;\n this._transportFactory.setBridgeService(selected.bridgeService);\n } else {\n this._transportFactory.setBridgeService(undefined);\n }\n }\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { asyncTimeout, Trigger } from '@dxos/async';\nimport {\n iframeServiceBundle,\n type IframeServiceBundle,\n PROXY_CONNECTION_TIMEOUT,\n workerServiceBundle,\n} from '@dxos/client-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { log, logInfo } from '@dxos/log';\nimport { type BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { createProtoRpcPeer, type ProtoRpcPeer, type RpcPort } from '@dxos/rpc';\nimport { Callback, type MaybePromise } from '@dxos/util';\n\nimport { type ClientServicesHost, ClientRpcServer, type ClientRpcServerParams } from '../services';\n\nexport type WorkerSessionParams = {\n serviceHost: ClientServicesHost;\n systemPort: RpcPort;\n appPort: RpcPort;\n // TODO(wittjosiah): Remove shellPort.\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 // TODO(nf): factor out?\n public observabilityGroup?: string;\n public signalTelemetryEnabled?: boolean;\n\n @logInfo\n public lockKey?: string;\n\n public bridgeService?: BridgeService;\n\n constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }: WorkerSessionParams) {\n invariant(serviceHost);\n this._serviceHost = serviceHost;\n\n const middleware: Pick<ClientRpcServerParams, 'handleCall' | 'handleStream'> = {\n handleCall: async (method, params, handler) => {\n const error = await readySignal.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n handleStream: async (method, params, handler) => {\n const error = await readySignal.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n };\n\n this._clientRpc = new ClientRpcServer({\n serviceRegistry: this._serviceHost.serviceRegistry,\n port: appPort,\n ...middleware,\n });\n\n this._shellClientRpc = shellPort\n ? new ClientRpcServer({\n serviceRegistry: this._serviceHost.serviceRegistry,\n port: shellPort,\n ...middleware,\n })\n : undefined;\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.observabilityGroup = request.observabilityGroup;\n this.signalTelemetryEnabled = request.signalTelemetryEnabled;\n this._startTrigger.wake();\n },\n\n stop: async () => {\n setTimeout(async () => {\n try {\n await this.close();\n } catch (err: any) {\n log.catch(err);\n }\n });\n },\n },\n },\n port: systemPort,\n timeout: 1_000, // With low timeout heartbeat may fail if the tab's thread is saturated.\n });\n\n this.bridgeService = this._iframeRpc.rpc.BridgeService;\n }\n\n async open(): Promise<void> {\n log.info('opening...');\n await Promise.all([this._clientRpc.open(), this._iframeRpc.open(), this._maybeOpenShell()]);\n\n // Wait until the worker's RPC service has started.\n await this._startTrigger.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n\n // TODO(burdon): Comment required.\n if (this.lockKey) {\n void this._afterLockReleases(this.lockKey, () => this.close());\n }\n\n log.info('opened');\n }\n\n async close(): Promise<void> {\n log.info('closing...');\n try {\n await this.onClose.callIfSet();\n } catch (err: any) {\n log.catch(err);\n }\n\n await Promise.all([this._clientRpc.close(), this._iframeRpc.close()]);\n log.info('closed');\n }\n\n private async _maybeOpenShell(): Promise<void> {\n try {\n this._shellClientRpc && (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", "DEFAULT_WORKER_BROADCAST_CHANNEL", "Context", "invariant", "log", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "setIdentityTags", "RtcTransportProxyFactory", "asyncTimeout", "Trigger", "iframeServiceBundle", "PROXY_CONNECTION_TIMEOUT", "workerServiceBundle", "invariant", "log", "logInfo", "createProtoRpcPeer", "Callback", "WorkerSession", "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", "undefined", "_iframeRpc", "createProtoRpcPeer", "requested", "iframeServiceBundle", "exposed", "workerServiceBundle", "handlers", "WorkerService", "start", "request", "origin", "lockKey", "observabilityGroup", "signalTelemetryEnabled", "wake", "stop", "setTimeout", "close", "err", "log", "catch", "bridgeService", "rpc", "BridgeService", "open", "info", "Promise", "all", "_maybeOpenShell", "_afterLockReleases", "callIfSet", "asyncTimeout", "callback", "navigator", "locks", "then", "WorkerRuntime", "channel", "DEFAULT_WORKER_BROADCAST_CHANNEL", "configProvider", "acquireLock", "releaseLock", "onStop", "_transportFactory", "RtcTransportProxyFactory", "_ready", "Trigger", "_sessions", "Set", "_signalMetadataTags", "runtime", "_signalTelemetryEnabled", "_configProvider", "_acquireLock", "_releaseLock", "_onStop", "_channel", "_clientServices", "ClientServicesHost", "callbacks", "onReset", "stop", "host", "start", "log", "_broadcastChannel", "BroadcastChannel", "postMessage", "action", "onmessage", "event", "data", "_config", "signals", "get", "initialize", "config", "signalManager", "signaling", "undefined", "WebsocketSignalManager", "MemorySignalManager", "MemorySignalManagerContext", "transportFactory", "open", "Context", "wake", "setIdentityTags", "identityService", "services", "IdentityService", "devicesService", "DevicesService", "setTag", "k", "v", "err", "error", "close", "createSession", "appPort", "systemPort", "shellPort", "session", "WorkerSession", "serviceHost", "readySignal", "onClose", "set", "delete", "size", "_reconnectWebrtc", "invariant", "origin", "observabilityGroup", "group", "signalTelemetryEnabled", "add", "_sessionForNetworking", "has", "selected", "Array", "from", "find", "bridgeService", "setBridgeService"]
4
+ "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { Trigger } from '@dxos/async';\nimport { DEFAULT_WORKER_BROADCAST_CHANNEL } from '@dxos/client-protocol';\nimport { type Config } from '@dxos/config';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport {\n MemorySignalManager,\n MemorySignalManagerContext,\n WebsocketSignalManager,\n setIdentityTags,\n} from '@dxos/messaging';\nimport { RtcTransportProxyFactory } from '@dxos/network-manager';\nimport { type RpcPort } from '@dxos/rpc';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { ClientServicesHost } from '../services';\n\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\nexport type WorkerRuntimeOptions = {\n channel?: string;\n configProvider: () => MaybePromise<Config>;\n acquireLock: () => Promise<void>;\n releaseLock: () => void;\n onStop?: () => Promise<void>;\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 _configProvider: () => MaybePromise<Config>;\n private readonly _acquireLock: () => Promise<void>;\n private readonly _releaseLock: () => void;\n private readonly _onStop?: () => Promise<void>;\n private readonly _transportFactory = new RtcTransportProxyFactory();\n private readonly _ready = new Trigger<Error | undefined>();\n private readonly _sessions = new Set<WorkerSession>();\n private readonly _clientServices!: ClientServicesHost;\n private readonly _channel: string;\n private _broadcastChannel?: BroadcastChannel;\n private _sessionForNetworking?: WorkerSession; // TODO(burdon): Expose to client QueryStatusResponse.\n private _config!: Config;\n private _signalMetadataTags: any = { runtime: 'worker-runtime' };\n private _signalTelemetryEnabled: boolean = false;\n\n constructor({\n channel = DEFAULT_WORKER_BROADCAST_CHANNEL,\n configProvider,\n acquireLock,\n releaseLock,\n onStop,\n }: WorkerRuntimeOptions) {\n this._configProvider = configProvider;\n this._acquireLock = acquireLock;\n this._releaseLock = releaseLock;\n this._onStop = onStop;\n this._channel = channel;\n this._clientServices = new ClientServicesHost({\n callbacks: {\n onReset: async () => this.stop(),\n },\n });\n }\n\n get host() {\n return this._clientServices;\n }\n\n async start(): Promise<void> {\n log('starting...');\n try {\n this._broadcastChannel = new BroadcastChannel(this._channel);\n this._broadcastChannel.postMessage({ action: 'stop' });\n this._broadcastChannel.onmessage = async (event) => {\n if (event.data?.action === 'stop') {\n await this.stop();\n }\n };\n\n await this._acquireLock();\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: this._config.get('runtime.client.edgeFeatures')?.signaling\n ? undefined\n : signals\n ? new WebsocketSignalManager(signals, () => (this._signalTelemetryEnabled ? this._signalMetadataTags : {}))\n : new MemorySignalManager(new MemorySignalManagerContext()), // TODO(dmaretskyi): Inject this context.\n transportFactory: this._transportFactory,\n });\n\n await this._clientServices.open(new Context());\n this._ready.wake(undefined);\n log('started');\n setIdentityTags({\n identityService: this._clientServices.services.IdentityService!,\n devicesService: this._clientServices.services.DevicesService!,\n setTag: (k: string, v: string) => {\n this._signalMetadataTags[k] = v;\n },\n });\n } catch (err: any) {\n this._ready.wake(err);\n log.error('starting', err);\n }\n }\n\n async stop(): Promise<void> {\n // Release the lock to notify remote clients that the worker is terminating.\n this._releaseLock();\n this._broadcastChannel?.close();\n this._broadcastChannel = undefined;\n await this._clientServices.close();\n await this._onStop?.();\n }\n\n /**\n * Create a new session.\n */\n async createSession({ appPort, systemPort, shellPort }: CreateSessionParams): Promise<void> {\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 or client is destroyed.\n session.onClose.set(async () => {\n this._sessions.delete(session);\n if (this._sessions.size === 0) {\n // Terminate the worker when all sessions are closed.\n await this.stop();\n } else {\n this._reconnectWebrtc();\n }\n });\n\n await session.open();\n // A worker can only service one origin currently\n invariant(\n !this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin,\n `worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`,\n );\n if (session.observabilityGroup) {\n this._signalMetadataTags.group = session.observabilityGroup;\n }\n this._signalTelemetryEnabled = session.signalTelemetryEnabled ?? false;\n this._signalMetadataTags.origin = session.origin;\n this._sessions.add(session);\n\n this._reconnectWebrtc();\n }\n\n /**\n * Selects one of the existing session for WebRTC networking.\n */\n private _reconnectWebrtc(): void {\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 { Trigger, asyncTimeout } from '@dxos/async';\nimport {\n type IframeServiceBundle,\n PROXY_CONNECTION_TIMEOUT,\n iframeServiceBundle,\n workerServiceBundle,\n} from '@dxos/client-protocol';\nimport { invariant } from '@dxos/invariant';\nimport { log, logInfo } from '@dxos/log';\nimport { type BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { type ProtoRpcPeer, type RpcPort, createProtoRpcPeer } from '@dxos/rpc';\nimport { Callback, type MaybePromise } from '@dxos/util';\n\nimport { ClientRpcServer, type ClientRpcServerParams, type ClientServicesHost } from '../services';\n\nexport type WorkerSessionParams = {\n serviceHost: ClientServicesHost;\n systemPort: RpcPort;\n appPort: RpcPort;\n // TODO(wittjosiah): Remove shellPort.\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 // TODO(nf): factor out?\n public observabilityGroup?: string;\n public signalTelemetryEnabled?: boolean;\n\n @logInfo\n public lockKey?: string;\n\n public bridgeService?: BridgeService;\n\n constructor({ serviceHost, systemPort, appPort, shellPort, readySignal }: WorkerSessionParams) {\n invariant(serviceHost);\n this._serviceHost = serviceHost;\n\n const middleware: Pick<ClientRpcServerParams, 'handleCall' | 'handleStream'> = {\n handleCall: async (method, params, handler) => {\n const error = await readySignal.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n handleStream: async (method, params, handler) => {\n const error = await readySignal.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n if (error) {\n throw error;\n }\n\n return handler(method, params);\n },\n };\n\n this._clientRpc = new ClientRpcServer({\n serviceRegistry: this._serviceHost.serviceRegistry,\n port: appPort,\n ...middleware,\n });\n\n this._shellClientRpc = shellPort\n ? new ClientRpcServer({\n serviceRegistry: this._serviceHost.serviceRegistry,\n port: shellPort,\n ...middleware,\n })\n : undefined;\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.observabilityGroup = request.observabilityGroup;\n this.signalTelemetryEnabled = request.signalTelemetryEnabled;\n this._startTrigger.wake();\n },\n\n stop: async () => {\n setTimeout(async () => {\n try {\n await this.close();\n } catch (err: any) {\n log.catch(err);\n }\n });\n },\n },\n },\n port: systemPort,\n timeout: 1_000, // With low timeout heartbeat may fail if the tab's thread is saturated.\n });\n\n this.bridgeService = this._iframeRpc.rpc.BridgeService;\n }\n\n async open(): Promise<void> {\n log.info('opening...');\n await Promise.all([this._clientRpc.open(), this._iframeRpc.open(), this._maybeOpenShell()]);\n\n // Wait until the worker's RPC service has started.\n await this._startTrigger.wait({ timeout: PROXY_CONNECTION_TIMEOUT });\n\n // TODO(burdon): Comment required.\n if (this.lockKey) {\n void this._afterLockReleases(this.lockKey, () => this.close());\n }\n\n log.info('opened');\n }\n\n async close(): Promise<void> {\n log.info('closing...');\n try {\n await this.onClose.callIfSet();\n } catch (err: any) {\n log.catch(err);\n }\n\n await Promise.all([this._clientRpc.close(), this._iframeRpc.close()]);\n log.info('closed');\n }\n\n private async _maybeOpenShell(): Promise<void> {\n try {\n this._shellClientRpc && (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", "DEFAULT_WORKER_BROADCAST_CHANNEL", "Context", "invariant", "log", "MemorySignalManager", "MemorySignalManagerContext", "WebsocketSignalManager", "setIdentityTags", "RtcTransportProxyFactory", "Trigger", "asyncTimeout", "PROXY_CONNECTION_TIMEOUT", "iframeServiceBundle", "workerServiceBundle", "invariant", "log", "logInfo", "createProtoRpcPeer", "Callback", "WorkerSession", "open", "log", "info", "Promise", "all", "_clientRpc", "_iframeRpc", "_maybeOpenShell", "_startTrigger", "wait", "timeout", "PROXY_CONNECTION_TIMEOUT", "lockKey", "_afterLockReleases", "close", "onClose", "callIfSet", "err", "catch", "_shellClientRpc", "asyncTimeout", "callback", "navigator", "locks", "request", "then", "serviceHost", "systemPort", "appPort", "shellPort", "readySignal", "Trigger", "_serviceHost", "Callback", "origin", "observabilityGroup", "signalTelemetryEnabled", "bridgeService", "invariant", "middleware", "handleCall", "method", "params", "handler", "error", "handleStream", "ClientRpcServer", "serviceRegistry", "port", "undefined", "createProtoRpcPeer", "requested", "iframeServiceBundle", "exposed", "workerServiceBundle", "handlers", "WorkerService", "start", "wake", "stop", "setTimeout", "rpc", "BridgeService", "WorkerRuntime", "host", "_clientServices", "start", "log", "_broadcastChannel", "BroadcastChannel", "_channel", "postMessage", "action", "onmessage", "event", "data", "stop", "_acquireLock", "_config", "_configProvider", "signals", "get", "initialize", "config", "signalManager", "signaling", "undefined", "WebsocketSignalManager", "_signalTelemetryEnabled", "_signalMetadataTags", "MemorySignalManager", "MemorySignalManagerContext", "transportFactory", "_transportFactory", "open", "Context", "_ready", "wake", "setIdentityTags", "identityService", "services", "IdentityService", "devicesService", "DevicesService", "setTag", "k", "v", "err", "error", "_releaseLock", "close", "_onStop", "createSession", "appPort", "systemPort", "shellPort", "session", "WorkerSession", "serviceHost", "readySignal", "onClose", "set", "_sessions", "delete", "size", "_reconnectWebrtc", "invariant", "origin", "observabilityGroup", "group", "signalTelemetryEnabled", "add", "_sessionForNetworking", "has", "selected", "Array", "from", "find", "bridgeService", "setBridgeService", "channel", "DEFAULT_WORKER_BROADCAST_CHANNEL", "configProvider", "acquireLock", "releaseLock", "onStop", "_define_property", "RtcTransportProxyFactory", "Trigger", "Set", "runtime", "ClientServicesHost", "callbacks", "onReset"]
7
7
  }