@dxos/edge-client 0.6.12-main.78ddbdf → 0.6.12-main.89e9959

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.
@@ -1 +1 @@
1
- {"inputs":{"packages/core/mesh/edge-client/src/protocol.ts":{"bytes":10334,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/defs.ts":{"bytes":1607,"imports":[{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/errors.ts":{"bytes":1265,"imports":[],"format":"esm"},"packages/core/mesh/edge-client/src/persistent-lifecycle.ts":{"bytes":10868,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/edge-client.ts":{"bytes":27085,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"./defs"},{"path":"packages/core/mesh/edge-client/src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"packages/core/mesh/edge-client/src/persistent-lifecycle.ts","kind":"import-statement","original":"./persistent-lifecycle"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/index.ts":{"bytes":935,"imports":[{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/edge-client.ts","kind":"import-statement","original":"./edge-client"},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"./defs"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"},{"path":"packages/core/mesh/edge-client/src/errors.ts","kind":"import-statement","original":"./errors"}],"format":"esm"},"packages/core/mesh/edge-client/src/testing/test-utils.ts":{"bytes":12455,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"../defs"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"../protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/testing/index.ts":{"bytes":516,"imports":[{"path":"packages/core/mesh/edge-client/src/testing/test-utils.ts","kind":"import-statement","original":"./test-utils"}],"format":"esm"}},"outputs":{"packages/core/mesh/edge-client/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18217},"packages/core/mesh/edge-client/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/core/mesh/edge-client/dist/lib/browser/chunk-ZWJXA37R.mjs","kind":"import-statement"},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["EdgeClient","EdgeConnectionClosedError","EdgeIdentityChangedError","Protocol","getTypename","protocol","toUint8Array"],"entryPoint":"packages/core/mesh/edge-client/src/index.ts","inputs":{"packages/core/mesh/edge-client/src/index.ts":{"bytesInOutput":60},"packages/core/mesh/edge-client/src/edge-client.ts":{"bytesInOutput":6943},"packages/core/mesh/edge-client/src/errors.ts":{"bytesInOutput":232},"packages/core/mesh/edge-client/src/persistent-lifecycle.ts":{"bytesInOutput":3015}},"bytes":10784},"packages/core/mesh/edge-client/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6341},"packages/core/mesh/edge-client/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/core/mesh/edge-client/dist/lib/browser/chunk-ZWJXA37R.mjs","kind":"import-statement"},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true}],"exports":["DEFAULT_PORT","createTestEdgeWsServer"],"entryPoint":"packages/core/mesh/edge-client/src/testing/index.ts","inputs":{"packages/core/mesh/edge-client/src/testing/test-utils.ts":{"bytesInOutput":3276},"packages/core/mesh/edge-client/src/testing/index.ts":{"bytesInOutput":0}},"bytes":3493},"packages/core/mesh/edge-client/dist/lib/browser/chunk-ZWJXA37R.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5676},"packages/core/mesh/edge-client/dist/lib/browser/chunk-ZWJXA37R.mjs":{"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true}],"exports":["Protocol","getTypename","protocol","toUint8Array"],"inputs":{"packages/core/mesh/edge-client/src/protocol.ts":{"bytesInOutput":2600},"packages/core/mesh/edge-client/src/defs.ts":{"bytesInOutput":298}},"bytes":3106}}}
1
+ {"inputs":{"packages/core/mesh/edge-client/src/protocol.ts":{"bytes":10334,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/defs.ts":{"bytes":1607,"imports":[{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/errors.ts":{"bytes":1265,"imports":[],"format":"esm"},"packages/core/mesh/edge-client/src/persistent-lifecycle.ts":{"bytes":10868,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/edge-client.ts":{"bytes":32385,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"./defs"},{"path":"packages/core/mesh/edge-client/src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"packages/core/mesh/edge-client/src/persistent-lifecycle.ts","kind":"import-statement","original":"./persistent-lifecycle"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/auth.ts":{"bytes":11621,"imports":[{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/edge-http-client.ts":{"bytes":15155,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"format":"esm"},"packages/core/mesh/edge-client/src/index.ts":{"bytes":1127,"imports":[{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/edge-client.ts","kind":"import-statement","original":"./edge-client"},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"./defs"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"./protocol"},{"path":"packages/core/mesh/edge-client/src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"packages/core/mesh/edge-client/src/auth.ts","kind":"import-statement","original":"./auth"},{"path":"packages/core/mesh/edge-client/src/edge-http-client.ts","kind":"import-statement","original":"./edge-http-client"}],"format":"esm"},"packages/core/mesh/edge-client/src/testing/test-utils.ts":{"bytes":12455,"imports":[{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"packages/core/mesh/edge-client/src/defs.ts","kind":"import-statement","original":"../defs"},{"path":"packages/core/mesh/edge-client/src/protocol.ts","kind":"import-statement","original":"../protocol"}],"format":"esm"},"packages/core/mesh/edge-client/src/testing/index.ts":{"bytes":516,"imports":[{"path":"packages/core/mesh/edge-client/src/testing/test-utils.ts","kind":"import-statement","original":"./test-utils"}],"format":"esm"}},"outputs":{"packages/core/mesh/edge-client/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":34449},"packages/core/mesh/edge-client/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/core/mesh/edge-client/dist/lib/browser/chunk-ZWJXA37R.mjs","kind":"import-statement"},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/credentials","kind":"import-statement","external":true},{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"exports":["EdgeClient","EdgeConnectionClosedError","EdgeHttpClient","EdgeIdentityChangedError","Protocol","createChainEdgeIdentity","createDeviceEdgeIdentity","createEphemeralEdgeIdentity","createStubEdgeIdentity","createTestHaloEdgeIdentity","getTypename","protocol","toUint8Array"],"entryPoint":"packages/core/mesh/edge-client/src/index.ts","inputs":{"packages/core/mesh/edge-client/src/index.ts":{"bytesInOutput":60},"packages/core/mesh/edge-client/src/edge-client.ts":{"bytesInOutput":7977},"packages/core/mesh/edge-client/src/errors.ts":{"bytesInOutput":232},"packages/core/mesh/edge-client/src/persistent-lifecycle.ts":{"bytesInOutput":3015},"packages/core/mesh/edge-client/src/auth.ts":{"bytesInOutput":2681},"packages/core/mesh/edge-client/src/edge-http-client.ts":{"bytesInOutput":3649}},"bytes":18414},"packages/core/mesh/edge-client/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6341},"packages/core/mesh/edge-client/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/core/mesh/edge-client/dist/lib/browser/chunk-ZWJXA37R.mjs","kind":"import-statement"},{"path":"isomorphic-ws","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true}],"exports":["DEFAULT_PORT","createTestEdgeWsServer"],"entryPoint":"packages/core/mesh/edge-client/src/testing/index.ts","inputs":{"packages/core/mesh/edge-client/src/testing/test-utils.ts":{"bytesInOutput":3276},"packages/core/mesh/edge-client/src/testing/index.ts":{"bytesInOutput":0}},"bytes":3493},"packages/core/mesh/edge-client/dist/lib/browser/chunk-ZWJXA37R.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5676},"packages/core/mesh/edge-client/dist/lib/browser/chunk-ZWJXA37R.mjs":{"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf","kind":"import-statement","external":true},{"path":"@dxos/protocols/buf/dxos/edge/messenger_pb","kind":"import-statement","external":true}],"exports":["Protocol","getTypename","protocol","toUint8Array"],"inputs":{"packages/core/mesh/edge-client/src/protocol.ts":{"bytesInOutput":2600},"packages/core/mesh/edge-client/src/defs.ts":{"bytesInOutput":298}},"bytes":3106}}}
@@ -31,8 +31,14 @@ var node_exports = {};
31
31
  __export(node_exports, {
32
32
  EdgeClient: () => EdgeClient,
33
33
  EdgeConnectionClosedError: () => EdgeConnectionClosedError,
34
+ EdgeHttpClient: () => EdgeHttpClient,
34
35
  EdgeIdentityChangedError: () => EdgeIdentityChangedError,
35
36
  Protocol: () => import_chunk_ANV2HBEH.Protocol,
37
+ createChainEdgeIdentity: () => createChainEdgeIdentity,
38
+ createDeviceEdgeIdentity: () => createDeviceEdgeIdentity,
39
+ createEphemeralEdgeIdentity: () => createEphemeralEdgeIdentity,
40
+ createStubEdgeIdentity: () => createStubEdgeIdentity,
41
+ createTestHaloEdgeIdentity: () => createTestHaloEdgeIdentity,
36
42
  getTypename: () => import_chunk_ANV2HBEH.getTypename,
37
43
  protocol: () => import_chunk_ANV2HBEH.protocol,
38
44
  toUint8Array: () => import_chunk_ANV2HBEH.toUint8Array
@@ -43,13 +49,22 @@ __reExport(node_exports, require("@dxos/protocols/buf/dxos/edge/messenger_pb"),
43
49
  var import_isomorphic_ws = __toESM(require("isomorphic-ws"));
44
50
  var import_async = require("@dxos/async");
45
51
  var import_context = require("@dxos/context");
52
+ var import_crypto = require("@dxos/crypto");
46
53
  var import_log = require("@dxos/log");
47
54
  var import_buf = require("@dxos/protocols/buf");
48
55
  var import_messenger_pb = require("@dxos/protocols/buf/dxos/edge/messenger_pb");
56
+ var import_proto = require("@dxos/protocols/proto");
49
57
  var import_async2 = require("@dxos/async");
50
58
  var import_context2 = require("@dxos/context");
51
59
  var import_debug = require("@dxos/debug");
52
60
  var import_log2 = require("@dxos/log");
61
+ var import_credentials = require("@dxos/credentials");
62
+ var import_keyring = require("@dxos/keyring");
63
+ var import_keys = require("@dxos/keys");
64
+ var import_async3 = require("@dxos/async");
65
+ var import_context3 = require("@dxos/context");
66
+ var import_log3 = require("@dxos/log");
67
+ var import_protocols = require("@dxos/protocols");
53
68
  var EdgeConnectionClosedError = class extends Error {
54
69
  constructor() {
55
70
  super("Edge connection closed.");
@@ -150,11 +165,11 @@ _ts_decorate([
150
165
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/mesh/edge-client/src/edge-client.ts";
151
166
  var DEFAULT_TIMEOUT = 1e4;
152
167
  var SIGNAL_KEEPALIVE_INTERVAL = 5e3;
168
+ var DISABLE_AUTH = true;
153
169
  var EdgeClient = class extends import_context.Resource {
154
- constructor(_identityKey, _peerKey, _config) {
170
+ constructor(_identity, _config) {
155
171
  super();
156
- this._identityKey = _identityKey;
157
- this._peerKey = _peerKey;
172
+ this._identity = _identity;
158
173
  this._config = _config;
159
174
  this.reconnect = new import_async.Event();
160
175
  this.connected = new import_async.Event();
@@ -173,19 +188,21 @@ var EdgeClient = class extends import_context.Resource {
173
188
  get info() {
174
189
  return {
175
190
  open: this.isOpen,
176
- identity: this._identityKey,
177
- device: this._peerKey
191
+ identity: this._identity.identityKey,
192
+ device: this._identity.peerKey
178
193
  };
179
194
  }
195
+ get isConnected() {
196
+ return Boolean(this._ws) && this._ready.state === import_async.TriggerState.RESOLVED;
197
+ }
180
198
  get identityKey() {
181
- return this._identityKey;
199
+ return this._identity.identityKey;
182
200
  }
183
201
  get peerKey() {
184
- return this._peerKey;
202
+ return this._identity.peerKey;
185
203
  }
186
- setIdentity({ peerKey, identityKey }) {
187
- this._peerKey = peerKey;
188
- this._identityKey = identityKey;
204
+ setIdentity(identity) {
205
+ this._identity = identity;
189
206
  this._persistentLifecycle.scheduleRestart();
190
207
  }
191
208
  addListener(listener) {
@@ -200,7 +217,7 @@ var EdgeClient = class extends import_context.Resource {
200
217
  info: this.info
201
218
  }, {
202
219
  F: __dxlog_file2,
203
- L: 100,
220
+ L: 119,
204
221
  S: this,
205
222
  C: (f, a) => f(...a)
206
223
  });
@@ -209,7 +226,7 @@ var EdgeClient = class extends import_context.Resource {
209
226
  err
210
227
  }, {
211
228
  F: __dxlog_file2,
212
- L: 102,
229
+ L: 121,
213
230
  S: this,
214
231
  C: (f, a) => f(...a)
215
232
  });
@@ -220,22 +237,41 @@ var EdgeClient = class extends import_context.Resource {
220
237
  */
221
238
  async _close() {
222
239
  (0, import_log.log)("closing...", {
223
- peerKey: this._peerKey
240
+ peerKey: this._identity.peerKey
224
241
  }, {
225
242
  F: __dxlog_file2,
226
- L: 110,
243
+ L: 129,
227
244
  S: this,
228
245
  C: (f, a) => f(...a)
229
246
  });
230
247
  await this._persistentLifecycle.close();
231
248
  }
232
249
  async _openWebSocket() {
233
- const url = new URL(`/ws/${this._identityKey}/${this._peerKey}`, this._config.socketEndpoint);
234
- this._ws = new import_isomorphic_ws.default(url);
250
+ let protocolHeader;
251
+ if (!DISABLE_AUTH) {
252
+ const challenge = (0, import_crypto.randomBytes)(32);
253
+ const credential = await this._identity.presentCredentials({
254
+ challenge
255
+ });
256
+ protocolHeader = encodePresentationIntoAuthHeader(credential);
257
+ }
258
+ const url = new URL(`/ws/${this._identity.identityKey}/${this._identity.peerKey}`, this._config.socketEndpoint);
259
+ (0, import_log.log)("Opening websocket", {
260
+ url: url.toString(),
261
+ protocolHeader
262
+ }, {
263
+ F: __dxlog_file2,
264
+ L: 144,
265
+ S: this,
266
+ C: (f, a) => f(...a)
267
+ });
268
+ this._ws = new import_isomorphic_ws.default(url, protocolHeader ? [
269
+ protocolHeader
270
+ ] : []);
235
271
  this._ws.onopen = () => {
236
272
  (0, import_log.log)("opened", this.info, {
237
273
  F: __dxlog_file2,
238
- L: 119,
274
+ L: 148,
239
275
  S: this,
240
276
  C: (f, a) => f(...a)
241
277
  });
@@ -245,7 +281,7 @@ var EdgeClient = class extends import_context.Resource {
245
281
  this._ws.onclose = () => {
246
282
  (0, import_log.log)("closed", this.info, {
247
283
  F: __dxlog_file2,
248
- L: 124,
284
+ L: 153,
249
285
  S: this,
250
286
  C: (f, a) => f(...a)
251
287
  });
@@ -257,7 +293,7 @@ var EdgeClient = class extends import_context.Resource {
257
293
  info: event.message
258
294
  }, {
259
295
  F: __dxlog_file2,
260
- L: 128,
296
+ L: 157,
261
297
  S: this,
262
298
  C: (f, a) => f(...a)
263
299
  });
@@ -271,11 +307,11 @@ var EdgeClient = class extends import_context.Resource {
271
307
  const data = await (0, import_chunk_ANV2HBEH.toUint8Array)(event.data);
272
308
  const message = import_buf.buf.fromBinary(import_messenger_pb.MessageSchema, data);
273
309
  (0, import_log.log)("received", {
274
- peerKey: this._peerKey,
310
+ peerKey: this._identity.peerKey,
275
311
  payload: import_chunk_ANV2HBEH.protocol.getPayloadType(message)
276
312
  }, {
277
313
  F: __dxlog_file2,
278
- L: 141,
314
+ L: 170,
279
315
  S: this,
280
316
  C: (f, a) => f(...a)
281
317
  });
@@ -289,7 +325,7 @@ var EdgeClient = class extends import_context.Resource {
289
325
  payload: import_chunk_ANV2HBEH.protocol.getPayloadType(message)
290
326
  }, {
291
327
  F: __dxlog_file2,
292
- L: 147,
328
+ L: 176,
293
329
  S: this,
294
330
  C: (f, a) => f(...a)
295
331
  });
@@ -302,7 +338,7 @@ var EdgeClient = class extends import_context.Resource {
302
338
  });
303
339
  this._keepaliveCtx = new import_context.Context(void 0, {
304
340
  F: __dxlog_file2,
305
- L: 154
341
+ L: 186
306
342
  });
307
343
  (0, import_async.scheduleTaskInterval)(this._keepaliveCtx, async () => {
308
344
  this._ws?.send("__ping__");
@@ -337,7 +373,7 @@ var EdgeClient = class extends import_context.Resource {
337
373
  err
338
374
  }, {
339
375
  F: __dxlog_file2,
340
- L: 190,
376
+ L: 222,
341
377
  S: this,
342
378
  C: (f, a) => f(...a)
343
379
  });
@@ -351,7 +387,7 @@ var EdgeClient = class extends import_context.Resource {
351
387
  if (this._ready.state !== import_async.TriggerState.RESOLVED) {
352
388
  (0, import_log.log)("waiting for websocket to become ready", void 0, {
353
389
  F: __dxlog_file2,
354
- L: 200,
390
+ L: 232,
355
391
  S: this,
356
392
  C: (f, a) => f(...a)
357
393
  });
@@ -362,15 +398,15 @@ var EdgeClient = class extends import_context.Resource {
362
398
  if (!this._ws) {
363
399
  throw new EdgeConnectionClosedError();
364
400
  }
365
- if (message.source && (message.source.peerKey !== this._peerKey || message.source.identityKey !== this.identityKey)) {
401
+ if (message.source && (message.source.peerKey !== this._identity.peerKey || message.source.identityKey !== this.identityKey)) {
366
402
  throw new EdgeIdentityChangedError();
367
403
  }
368
404
  (0, import_log.log)("sending...", {
369
- peerKey: this._peerKey,
405
+ peerKey: this._identity.peerKey,
370
406
  payload: import_chunk_ANV2HBEH.protocol.getPayloadType(message)
371
407
  }, {
372
408
  F: __dxlog_file2,
373
- L: 213,
409
+ L: 245,
374
410
  S: this,
375
411
  C: (f, a) => f(...a)
376
412
  });
@@ -383,19 +419,247 @@ var EdgeClient = class extends import_context.Resource {
383
419
  void this._heartBeatContext?.dispose();
384
420
  this._heartBeatContext = new import_context.Context(void 0, {
385
421
  F: __dxlog_file2,
386
- L: 222
422
+ L: 254
387
423
  });
388
424
  (0, import_async.scheduleTask)(this._heartBeatContext, () => {
389
425
  this._persistentLifecycle.scheduleRestart();
390
426
  }, 2 * SIGNAL_KEEPALIVE_INTERVAL);
391
427
  }
392
428
  };
429
+ var encodePresentationIntoAuthHeader = (presentation) => {
430
+ const encoded = import_proto.schema.getCodecForType("dxos.halo.credentials.Presentation").encode(presentation);
431
+ const encodedToken = Buffer.from(encoded).toString("base64").replace(/=*$/, "").replaceAll("/", "|");
432
+ return `base64url.bearer.authorization.dxos.org.${encodedToken}`;
433
+ };
434
+ var createDeviceEdgeIdentity = async (signer, key) => {
435
+ return {
436
+ identityKey: key.toHex(),
437
+ peerKey: key.toHex(),
438
+ presentCredentials: async ({ challenge }) => {
439
+ return (0, import_credentials.signPresentation)({
440
+ presentation: {
441
+ credentials: [
442
+ // Verifier requires at least one credential in the presentation to establish the subject.
443
+ await (0, import_credentials.createCredential)({
444
+ assertion: {
445
+ "@type": "dxos.halo.credentials.Auth"
446
+ },
447
+ issuer: key,
448
+ subject: key,
449
+ signer
450
+ })
451
+ ]
452
+ },
453
+ signer,
454
+ signerKey: key,
455
+ nonce: challenge
456
+ });
457
+ }
458
+ };
459
+ };
460
+ var createChainEdgeIdentity = async (signer, identityKey, peerKey, chain, credentials) => {
461
+ const credentialsToSign = credentials.length > 0 ? credentials : [
462
+ await (0, import_credentials.createCredential)({
463
+ assertion: {
464
+ "@type": "dxos.halo.credentials.Auth"
465
+ },
466
+ issuer: identityKey,
467
+ subject: identityKey,
468
+ signer,
469
+ chain,
470
+ signingKey: peerKey
471
+ })
472
+ ];
473
+ return {
474
+ identityKey: identityKey.toHex(),
475
+ peerKey: peerKey.toHex(),
476
+ presentCredentials: async ({ challenge }) => {
477
+ return (0, import_credentials.signPresentation)({
478
+ presentation: {
479
+ credentials: credentialsToSign
480
+ },
481
+ signer,
482
+ nonce: challenge,
483
+ signerKey: peerKey,
484
+ chain
485
+ });
486
+ }
487
+ };
488
+ };
489
+ var createEphemeralEdgeIdentity = async () => {
490
+ const keyring = new import_keyring.Keyring();
491
+ const key = await keyring.createKey();
492
+ return createDeviceEdgeIdentity(keyring, key);
493
+ };
494
+ var createTestHaloEdgeIdentity = async (signer, identityKey, deviceKey) => {
495
+ const deviceAdmission = await (0, import_credentials.createCredential)({
496
+ assertion: {
497
+ "@type": "dxos.halo.credentials.AuthorizedDevice",
498
+ deviceKey,
499
+ identityKey
500
+ },
501
+ issuer: identityKey,
502
+ subject: deviceKey,
503
+ signer
504
+ });
505
+ return createChainEdgeIdentity(signer, identityKey, deviceKey, {
506
+ credential: deviceAdmission
507
+ }, [
508
+ await (0, import_credentials.createCredential)({
509
+ assertion: {
510
+ "@type": "dxos.halo.credentials.Auth"
511
+ },
512
+ issuer: identityKey,
513
+ subject: identityKey,
514
+ signer
515
+ })
516
+ ]);
517
+ };
518
+ var createStubEdgeIdentity = () => {
519
+ const identityKey = import_keys.PublicKey.random();
520
+ const deviceKey = import_keys.PublicKey.random();
521
+ return {
522
+ identityKey: identityKey.toHex(),
523
+ peerKey: deviceKey.toHex(),
524
+ presentCredentials: async () => {
525
+ throw new Error("Stub identity does not support authentication.");
526
+ }
527
+ };
528
+ };
529
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/mesh/edge-client/src/edge-http-client.ts";
530
+ var DEFAULT_RETRY_TIMEOUT = 1500;
531
+ var DEFAULT_RETRY_JITTER = 500;
532
+ var DEFAULT_MAX_RETRIES_COUNT = 3;
533
+ var EdgeHttpClient = class {
534
+ constructor(baseUrl) {
535
+ const url = new URL(baseUrl);
536
+ url.protocol = "https";
537
+ this._baseUrl = url.toString();
538
+ (0, import_log3.log)("created", {
539
+ url: this._baseUrl
540
+ }, {
541
+ F: __dxlog_file3,
542
+ L: 27,
543
+ S: this,
544
+ C: (f, a) => f(...a)
545
+ });
546
+ }
547
+ getCredentialsForNotarization(spaceId, args) {
548
+ return this._call(`/spaces/${spaceId}/notarization`, {
549
+ ...args,
550
+ method: "GET"
551
+ });
552
+ }
553
+ async notarizeCredentials(spaceId, body, args) {
554
+ await this._call(`/spaces/${spaceId}/notarization`, {
555
+ ...args,
556
+ body,
557
+ method: "POST"
558
+ });
559
+ }
560
+ async _call(path, args) {
561
+ const requestContext = args.context ?? new import_context3.Context(void 0, {
562
+ F: __dxlog_file3,
563
+ L: 43
564
+ });
565
+ const shouldRetry = createRetryHandler(args);
566
+ const request = createRequest(args);
567
+ const url = `${this._baseUrl}${path.startsWith("/") ? path.slice(1) : path}`;
568
+ import_log3.log.info("call", {
569
+ method: args.method,
570
+ path
571
+ }, {
572
+ F: __dxlog_file3,
573
+ L: 48,
574
+ S: this,
575
+ C: (f, a) => f(...a)
576
+ });
577
+ while (true) {
578
+ let processingError;
579
+ let retryAfterHeaderValue = Number.NaN;
580
+ try {
581
+ const response = await fetch(url, request);
582
+ retryAfterHeaderValue = Number(response.headers.get("Retry-After"));
583
+ if (response.ok) {
584
+ const body = await response.json();
585
+ if (body.success) {
586
+ return body.data;
587
+ }
588
+ const isNonRetryable = body.errorData != null;
589
+ if (isNonRetryable) {
590
+ throw new import_protocols.EdgeCallFailedError(body.reason, body.errorData);
591
+ }
592
+ processingError = new import_protocols.EdgeCallFailedError(body.reason);
593
+ } else {
594
+ processingError = import_protocols.EdgeCallFailedError.fromFailureResponse(response);
595
+ if (!isRetryable(response.status)) {
596
+ throw processingError;
597
+ }
598
+ }
599
+ } catch (error) {
600
+ processingError = import_protocols.EdgeCallFailedError.fromProcessingFailureCause(error);
601
+ }
602
+ if (await shouldRetry(requestContext, retryAfterHeaderValue)) {
603
+ import_log3.log.info("retrying edge request", {
604
+ path,
605
+ processingError
606
+ }, {
607
+ F: __dxlog_file3,
608
+ L: 81,
609
+ S: this,
610
+ C: (f, a) => f(...a)
611
+ });
612
+ } else {
613
+ throw processingError;
614
+ }
615
+ }
616
+ }
617
+ };
618
+ var createRequest = (args) => {
619
+ return {
620
+ method: args.method,
621
+ body: args.body && JSON.stringify(args.body)
622
+ };
623
+ };
624
+ var isRetryable = (status) => {
625
+ if (status === 501) {
626
+ return false;
627
+ }
628
+ return !(status >= 400 && status < 500);
629
+ };
630
+ var createRetryHandler = (args) => {
631
+ if (!args.retry || args.retry.count < 1) {
632
+ return async () => false;
633
+ }
634
+ let retries = 0;
635
+ const maxRetries = args.retry.count ?? DEFAULT_MAX_RETRIES_COUNT;
636
+ const baseTimeout = args.retry.timeout ?? DEFAULT_RETRY_TIMEOUT;
637
+ const jitter = args.retry.jitter ?? DEFAULT_RETRY_JITTER;
638
+ return async (ctx, retryAfter) => {
639
+ if (++retries > maxRetries || ctx.disposed) {
640
+ return false;
641
+ }
642
+ if (retryAfter) {
643
+ await (0, import_async3.sleep)(retryAfter);
644
+ } else {
645
+ const timeout = baseTimeout + Math.random() * jitter;
646
+ await (0, import_async3.sleep)(timeout);
647
+ }
648
+ return true;
649
+ };
650
+ };
393
651
  // Annotate the CommonJS export names for ESM import in node:
394
652
  0 && (module.exports = {
395
653
  EdgeClient,
396
654
  EdgeConnectionClosedError,
655
+ EdgeHttpClient,
397
656
  EdgeIdentityChangedError,
398
657
  Protocol,
658
+ createChainEdgeIdentity,
659
+ createDeviceEdgeIdentity,
660
+ createEphemeralEdgeIdentity,
661
+ createStubEdgeIdentity,
662
+ createTestHaloEdgeIdentity,
399
663
  getTypename,
400
664
  protocol,
401
665
  toUint8Array,