@dxos/messaging 0.8.4-main.dedc0f3 → 0.8.4-main.dfabb4ec29

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 (62) hide show
  1. package/dist/lib/neutral/chunk-EC4H56J5.mjs +497 -0
  2. package/dist/lib/neutral/chunk-EC4H56J5.mjs.map +7 -0
  3. package/dist/lib/neutral/index.mjs +1249 -0
  4. package/dist/lib/neutral/index.mjs.map +7 -0
  5. package/dist/lib/neutral/meta.json +1 -0
  6. package/dist/lib/{browser → neutral}/testing/index.mjs +18 -46
  7. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  8. package/dist/types/src/messenger-monitor.d.ts.map +1 -1
  9. package/dist/types/src/messenger.blueprint-test.d.ts +1 -1
  10. package/dist/types/src/messenger.blueprint-test.d.ts.map +1 -1
  11. package/dist/types/src/messenger.d.ts +3 -2
  12. package/dist/types/src/messenger.d.ts.map +1 -1
  13. package/dist/types/src/signal-client/signal-client-monitor.d.ts.map +1 -1
  14. package/dist/types/src/signal-client/signal-client.d.ts +5 -6
  15. package/dist/types/src/signal-client/signal-client.d.ts.map +1 -1
  16. package/dist/types/src/signal-client/signal-local-state.d.ts.map +1 -1
  17. package/dist/types/src/signal-client/signal-rpc-client-monitor.d.ts.map +1 -1
  18. package/dist/types/src/signal-client/signal-rpc-client.d.ts +3 -3
  19. package/dist/types/src/signal-client/signal-rpc-client.d.ts.map +1 -1
  20. package/dist/types/src/signal-manager/edge-signal-manager.d.ts +5 -5
  21. package/dist/types/src/signal-manager/edge-signal-manager.d.ts.map +1 -1
  22. package/dist/types/src/signal-manager/memory-signal-manager.d.ts +5 -4
  23. package/dist/types/src/signal-manager/memory-signal-manager.d.ts.map +1 -1
  24. package/dist/types/src/signal-manager/utils.d.ts.map +1 -1
  25. package/dist/types/src/signal-manager/websocket-signal-manager-monitor.d.ts.map +1 -1
  26. package/dist/types/src/signal-manager/websocket-signal-manager.d.ts +5 -6
  27. package/dist/types/src/signal-manager/websocket-signal-manager.d.ts.map +1 -1
  28. package/dist/types/src/signal-methods.d.ts +5 -5
  29. package/dist/types/src/signal-methods.d.ts.map +1 -1
  30. package/dist/types/src/testing/test-builder.d.ts.map +1 -1
  31. package/dist/types/src/testing/test-peer.d.ts.map +1 -1
  32. package/dist/types/src/testing/utils.d.ts.map +1 -1
  33. package/dist/types/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +24 -29
  35. package/src/messenger.blueprint-test.ts +13 -12
  36. package/src/messenger.node.test.ts +7 -38
  37. package/src/messenger.ts +37 -32
  38. package/src/signal-client/signal-client.node.test.ts +9 -9
  39. package/src/signal-client/signal-client.ts +6 -10
  40. package/src/signal-client/signal-local-state.ts +0 -1
  41. package/src/signal-client/signal-rpc-client.ts +4 -6
  42. package/src/signal-manager/edge-signal-manager.ts +27 -15
  43. package/src/signal-manager/memory-signal-manager.ts +17 -15
  44. package/src/signal-manager/websocket-signal-manager.node.test.ts +13 -13
  45. package/src/signal-manager/websocket-signal-manager.ts +9 -16
  46. package/src/signal-methods.ts +5 -5
  47. package/src/testing/test-builder.ts +4 -3
  48. package/src/testing/test-peer.ts +0 -1
  49. package/src/testing/utils.ts +0 -1
  50. package/dist/lib/browser/chunk-46VUJLOF.mjs +0 -2426
  51. package/dist/lib/browser/chunk-46VUJLOF.mjs.map +0 -7
  52. package/dist/lib/browser/index.mjs +0 -22
  53. package/dist/lib/browser/index.mjs.map +0 -7
  54. package/dist/lib/browser/meta.json +0 -1
  55. package/dist/lib/browser/testing/index.mjs.map +0 -7
  56. package/dist/lib/node-esm/chunk-4SVYY5G5.mjs +0 -2426
  57. package/dist/lib/node-esm/chunk-4SVYY5G5.mjs.map +0 -7
  58. package/dist/lib/node-esm/index.mjs +0 -22
  59. package/dist/lib/node-esm/index.mjs.map +0 -7
  60. package/dist/lib/node-esm/meta.json +0 -1
  61. package/dist/lib/node-esm/testing/index.mjs +0 -172
  62. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
package/package.json CHANGED
@@ -1,35 +1,30 @@
1
1
  {
2
2
  "name": "@dxos/messaging",
3
- "version": "0.8.4-main.dedc0f3",
3
+ "version": "0.8.4-main.dfabb4ec29",
4
4
  "description": "Messaging",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/dxos/dxos"
10
+ },
7
11
  "license": "MIT",
8
12
  "author": "DXOS.org",
9
- "sideEffects": true,
13
+ "sideEffects": false,
10
14
  "type": "module",
11
15
  "exports": {
12
16
  ".": {
13
17
  "source": "./src/index.ts",
14
18
  "types": "./dist/types/src/index.d.ts",
15
- "browser": "./dist/lib/browser/index.mjs",
16
- "node": "./dist/lib/node-esm/index.mjs"
19
+ "default": "./dist/lib/neutral/index.mjs"
17
20
  },
18
21
  "./testing": {
19
22
  "source": "./src/testing/index.ts",
20
23
  "types": "./dist/types/src/testing/index.d.ts",
21
- "browser": "./dist/lib/browser/testing/index.mjs",
22
- "node": "./dist/lib/node-esm/testing/index.mjs"
24
+ "default": "./dist/lib/neutral/testing/index.mjs"
23
25
  }
24
26
  },
25
27
  "types": "dist/types/src/index.d.ts",
26
- "typesVersions": {
27
- "*": {
28
- "testing": [
29
- "dist/types/src/testing/index.d.ts"
30
- ]
31
- }
32
- },
33
28
  "files": [
34
29
  "dist",
35
30
  "src",
@@ -37,24 +32,24 @@
37
32
  ],
38
33
  "dependencies": {
39
34
  "isomorphic-ws": "^5.0.0",
40
- "ws": "^8.14.2",
41
- "@dxos/async": "0.8.4-main.dedc0f3",
42
- "@dxos/codec-protobuf": "0.8.4-main.dedc0f3",
43
- "@dxos/context": "0.8.4-main.dedc0f3",
44
- "@dxos/edge-client": "0.8.4-main.dedc0f3",
45
- "@dxos/keys": "0.8.4-main.dedc0f3",
46
- "@dxos/invariant": "0.8.4-main.dedc0f3",
47
- "@dxos/log": "0.8.4-main.dedc0f3",
48
- "@dxos/protocols": "0.8.4-main.dedc0f3",
49
- "@dxos/rpc": "0.8.4-main.dedc0f3",
50
- "@dxos/tracing": "0.8.4-main.dedc0f3",
51
- "@dxos/node-std": "0.8.4-main.dedc0f3",
52
- "@dxos/util": "0.8.4-main.dedc0f3"
35
+ "ws": "^8.17.1",
36
+ "@dxos/async": "0.8.4-main.dfabb4ec29",
37
+ "@dxos/codec-protobuf": "0.8.4-main.dfabb4ec29",
38
+ "@dxos/context": "0.8.4-main.dfabb4ec29",
39
+ "@dxos/keys": "0.8.4-main.dfabb4ec29",
40
+ "@dxos/log": "0.8.4-main.dfabb4ec29",
41
+ "@dxos/node-std": "0.8.4-main.dfabb4ec29",
42
+ "@dxos/protocols": "0.8.4-main.dfabb4ec29",
43
+ "@dxos/edge-client": "0.8.4-main.dfabb4ec29",
44
+ "@dxos/rpc": "0.8.4-main.dfabb4ec29",
45
+ "@dxos/invariant": "0.8.4-main.dfabb4ec29",
46
+ "@dxos/tracing": "0.8.4-main.dfabb4ec29",
47
+ "@dxos/util": "0.8.4-main.dfabb4ec29"
53
48
  },
54
49
  "devDependencies": {
55
- "@dxos/signal": "0.8.4-main.dedc0f3",
56
- "@dxos/keyring": "0.8.4-main.dedc0f3",
57
- "@dxos/test-utils": "0.8.4-main.dedc0f3"
50
+ "@dxos/signal": "0.8.4-main.dfabb4ec29",
51
+ "@dxos/keyring": "0.8.4-main.dfabb4ec29",
52
+ "@dxos/test-utils": "0.8.4-main.dfabb4ec29"
58
53
  },
59
54
  "publishConfig": {
60
55
  "access": "public"
@@ -5,6 +5,7 @@
5
5
  import { describe, expect, onTestFinished, test } from 'vitest';
6
6
 
7
7
  import { asyncTimeout, latch, sleep } from '@dxos/async';
8
+ import { Context } from '@dxos/context';
8
9
  import { range } from '@dxos/util';
9
10
 
10
11
  import { WebsocketSignalManager } from './signal-manager';
@@ -30,7 +31,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
30
31
 
31
32
  const promise = peer2.waitTillReceive(message);
32
33
 
33
- await peer1.messenger.sendMessage(message);
34
+ await peer1.messenger.sendMessage(Context.default(), message);
34
35
 
35
36
  await promise;
36
37
  });
@@ -52,7 +53,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
52
53
  };
53
54
 
54
55
  const promise = peer2.waitTillReceive(message);
55
- await peer1.messenger.sendMessage(message);
56
+ await peer1.messenger.sendMessage(Context.default(), message);
56
57
  await asyncTimeout(promise, 1_000);
57
58
  }
58
59
 
@@ -64,7 +65,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
64
65
  };
65
66
 
66
67
  const promise = peer3.waitTillReceive(message);
67
- await peer1.messenger.sendMessage(message);
68
+ await peer1.messenger.sendMessage(Context.default(), message);
68
69
  await asyncTimeout(promise, 1_000);
69
70
  }
70
71
 
@@ -76,7 +77,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
76
77
  };
77
78
 
78
79
  const promise = peer1.waitTillReceive(message);
79
- await peer2.messenger.sendMessage(message);
80
+ await peer2.messenger.sendMessage(Context.default(), message);
80
81
  await asyncTimeout(promise, 1_000);
81
82
  }
82
83
  });
@@ -128,7 +129,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
128
129
  };
129
130
  const promise = peer2.waitTillReceive(message);
130
131
 
131
- await peer1.messenger.sendMessage(message);
132
+ await peer1.messenger.sendMessage(Context.default(), message);
132
133
 
133
134
  // 3 listeners (default one that was returned by setupPeer() and 2 that listen for type "1") should receive message.
134
135
  await asyncTimeout(promise, 1_000);
@@ -175,7 +176,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
175
176
  };
176
177
 
177
178
  const receivePromise = peer2.waitTillReceive(message);
178
- await peer1.messenger.sendMessage(message);
179
+ await peer1.messenger.sendMessage(Context.default(), message);
179
180
 
180
181
  // 2 subscribed listeners should receive message.
181
182
  await asyncTimeout(receivePromise, 1_000);
@@ -195,7 +196,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
195
196
  };
196
197
 
197
198
  const receivePromise = peer2.waitTillReceive(message);
198
- await peer1.messenger.sendMessage(message);
199
+ await peer1.messenger.sendMessage(Context.default(), message);
199
200
 
200
201
  // 1 listener that was not unsubscribed should receive message.
201
202
  await asyncTimeout(receivePromise, 1_000);
@@ -221,7 +222,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
221
222
 
222
223
  {
223
224
  const receivePromise = peer2.waitTillReceive(message);
224
- await peer1.messenger.sendMessage(message);
225
+ await peer1.messenger.sendMessage(Context.default(), message);
225
226
  await asyncTimeout(receivePromise, 1_000);
226
227
  }
227
228
 
@@ -236,7 +237,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
236
237
 
237
238
  {
238
239
  const receivePromise = peer2.waitTillReceive(message);
239
- await peer1.messenger.sendMessage(message);
240
+ await peer1.messenger.sendMessage(Context.default(), message);
240
241
  await asyncTimeout(receivePromise, 1_000);
241
242
  }
242
243
  });
@@ -275,7 +276,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
275
276
  Array(3)
276
277
  .fill(0)
277
278
  .forEach(async () => {
278
- await peer2.messenger.sendMessage(message);
279
+ await peer2.messenger.sendMessage(Context.default(), message);
279
280
  });
280
281
 
281
282
  // expect to receive 3 messages.
@@ -302,7 +303,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
302
303
  count = inc();
303
304
  });
304
305
  // sending message.
305
- await peer2.messenger.sendMessage({
306
+ await peer2.messenger.sendMessage(Context.default(), {
306
307
  author: peer2.peerInfo,
307
308
  recipient: peer1.peerInfo,
308
309
  payload: PAYLOAD_1,
@@ -322,7 +323,7 @@ export const messengerTests = (signalManagerFactory: TestBuilder['createSignalMa
322
323
  void range(100).map(async () => {
323
324
  const peer = await builder.createPeer();
324
325
 
325
- void peer.messenger.sendMessage({
326
+ void peer.messenger.sendMessage(Context.default(), {
326
327
  author: peer.peerInfo,
327
328
  recipient: peer.peerInfo,
328
329
  payload: {
@@ -2,48 +2,17 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { afterAll, beforeAll, describe, onTestFinished, test } from 'vitest';
6
-
7
- import { asyncTimeout } from '@dxos/async';
8
- import { type SignalServerRunner, runTestSignalServer } from '@dxos/signal';
5
+ import { beforeEach, describe } from 'vitest';
9
6
 
10
7
  import { messengerTests } from './messenger.blueprint-test';
11
- import { WebsocketSignalManager } from './signal-manager';
12
- import { type Message } from './signal-methods';
13
- import { PAYLOAD_1, TestBuilder } from './testing';
8
+ import { MemorySignalManager, MemorySignalManagerContext } from './signal-manager';
14
9
 
10
+ // TODO(mykola): Use EDGE signal server.
15
11
  describe('Messenger with WebsocketSignalManager', () => {
16
- let broker: SignalServerRunner;
17
-
18
- beforeAll(async () => {
19
- broker = await runTestSignalServer();
20
- });
21
-
22
- afterAll(() => {
23
- void broker.stop();
12
+ let context: MemorySignalManagerContext;
13
+ beforeEach(async () => {
14
+ context = new MemorySignalManagerContext();
24
15
  });
25
16
 
26
- messengerTests(async () => new WebsocketSignalManager([{ server: broker.url() }]));
27
-
28
- test('Message with broken signal server', { timeout: 1000 }, async () => {
29
- const builder = new TestBuilder({
30
- signalManagerFactory: async () =>
31
- new WebsocketSignalManager([{ server: 'ws://broken.kube.' }, { server: broker.url() }]),
32
- });
33
- onTestFinished(() => builder.close());
34
- const peer1 = await builder.createPeer();
35
- const peer2 = await builder.createPeer();
36
-
37
- const message: Message = {
38
- author: peer1.peerInfo,
39
- recipient: peer2.peerInfo,
40
- payload: PAYLOAD_1,
41
- };
42
-
43
- {
44
- const receivePromise = peer2.waitTillReceive(message);
45
- await peer1.messenger.sendMessage(message);
46
- await asyncTimeout(receivePromise, 1_000);
47
- }
48
- });
17
+ messengerTests(async () => new MemorySignalManager(context));
49
18
  });
package/src/messenger.ts CHANGED
@@ -8,7 +8,7 @@ import { Context } from '@dxos/context';
8
8
  import { invariant } from '@dxos/invariant';
9
9
  import { PublicKey } from '@dxos/keys';
10
10
  import { log } from '@dxos/log';
11
- import { TimeoutError as ProtocolTimeoutError, trace } from '@dxos/protocols';
11
+ import { TimeoutError as ProtocolTimeoutError } from '@dxos/protocols';
12
12
  import { schema } from '@dxos/protocols/proto';
13
13
  import { type ReliablePayload } from '@dxos/protocols/proto/dxos/mesh/messaging';
14
14
  import { ComplexMap, ComplexSet } from '@dxos/util';
@@ -68,8 +68,7 @@ export class Messenger {
68
68
  if (!this._closed) {
69
69
  return;
70
70
  }
71
- const traceId = PublicKey.random().toHex();
72
- log.trace('dxos.mesh.messenger.open', trace.begin({ id: traceId }));
71
+ log('opening messenger');
73
72
  this._ctx = new Context({
74
73
  onError: (err) => log.catch(err),
75
74
  });
@@ -90,7 +89,7 @@ export class Messenger {
90
89
  );
91
90
 
92
91
  this._closed = false;
93
- log.trace('dxos.mesh.messenger.open', trace.end({ id: traceId }));
92
+ log('opened messenger');
94
93
  }
95
94
 
96
95
  async close(): Promise<void> {
@@ -101,7 +100,7 @@ export class Messenger {
101
100
  await this._ctx.dispose();
102
101
  }
103
102
 
104
- async sendMessage({ author, recipient, payload }: Message): Promise<void> {
103
+ async sendMessage(ctx: Context, { author, recipient, payload }: Message): Promise<void> {
105
104
  invariant(!this._closed, 'Closed');
106
105
  const messageContext = this._ctx.derive();
107
106
 
@@ -127,7 +126,7 @@ export class Messenger {
127
126
  async () => {
128
127
  log('retrying message', { messageId: reliablePayload.messageId });
129
128
  sendAttempts++;
130
- await this._encodeAndSend({ author, recipient, reliablePayload }).catch((err) =>
129
+ await this._encodeAndSend(ctx, { author, recipient, reliablePayload }).catch((err) =>
131
130
  log('failed to send message', { err }),
132
131
  );
133
132
  },
@@ -140,10 +139,10 @@ export class Messenger {
140
139
  log('message not delivered', { messageId: reliablePayload.messageId });
141
140
  this._onAckCallbacks.delete(reliablePayload.messageId!);
142
141
  timeoutHit(
143
- new ProtocolTimeoutError(
144
- 'signaling message not delivered',
145
- new TimeoutError(MESSAGE_TIMEOUT, 'Message not delivered'),
146
- ),
142
+ new ProtocolTimeoutError({
143
+ message: 'signaling message not delivered',
144
+ cause: new TimeoutError(MESSAGE_TIMEOUT, 'Message not delivered'),
145
+ }),
147
146
  );
148
147
  void messageContext.dispose();
149
148
  this._monitor.recordReliableMessage({ sendAttempts, sent: false });
@@ -158,7 +157,7 @@ export class Messenger {
158
157
  this._monitor.recordReliableMessage({ sendAttempts, sent: true });
159
158
  });
160
159
 
161
- await this._encodeAndSend({ author, recipient, reliablePayload });
160
+ await this._encodeAndSend(ctx, { author, recipient, reliablePayload });
162
161
  return promise;
163
162
  }
164
163
 
@@ -204,16 +203,19 @@ export class Messenger {
204
203
  };
205
204
  }
206
205
 
207
- private async _encodeAndSend({
208
- author,
209
- recipient,
210
- reliablePayload,
211
- }: {
212
- author: PeerInfo;
213
- recipient: PeerInfo;
214
- reliablePayload: ReliablePayload;
215
- }): Promise<void> {
216
- await this._signalManager.sendMessage({
206
+ private async _encodeAndSend(
207
+ ctx: Context,
208
+ {
209
+ author,
210
+ recipient,
211
+ reliablePayload,
212
+ }: {
213
+ author: PeerInfo;
214
+ recipient: PeerInfo;
215
+ reliablePayload: ReliablePayload;
216
+ },
217
+ ): Promise<void> {
218
+ await this._signalManager.sendMessage(ctx, {
217
219
  author,
218
220
  recipient,
219
221
  payload: {
@@ -243,7 +245,7 @@ export class Messenger {
243
245
  log('handling message', { messageId: reliablePayload.messageId });
244
246
 
245
247
  try {
246
- await this._sendAcknowledgement({
248
+ await this._sendAcknowledgement(this._ctx, {
247
249
  author,
248
250
  recipient,
249
251
  messageId: reliablePayload.messageId,
@@ -272,18 +274,21 @@ export class Messenger {
272
274
  this._onAckCallbacks.get(Acknowledgement.decode(payload.value).messageId)?.();
273
275
  }
274
276
 
275
- private async _sendAcknowledgement({
276
- author,
277
- recipient,
278
- messageId,
279
- }: {
280
- author: PeerInfo;
281
- recipient: PeerInfo;
282
- messageId: PublicKey;
283
- }): Promise<void> {
277
+ private async _sendAcknowledgement(
278
+ ctx: Context,
279
+ {
280
+ author,
281
+ recipient,
282
+ messageId,
283
+ }: {
284
+ author: PeerInfo;
285
+ recipient: PeerInfo;
286
+ messageId: PublicKey;
287
+ },
288
+ ): Promise<void> {
284
289
  log('sending ACK', { messageId, from: recipient, to: author });
285
290
 
286
- await this._signalManager.sendMessage({
291
+ await this._signalManager.sendMessage(ctx, {
287
292
  author: recipient,
288
293
  recipient: author,
289
294
  payload: {
@@ -6,6 +6,7 @@ import { afterAll, beforeAll, describe, expect, onTestFinished, test } from 'vit
6
6
 
7
7
  import { asyncTimeout, waitForCondition } from '@dxos/async';
8
8
  import { type Any, type TaggedType } from '@dxos/codec-protobuf';
9
+ import { Context } from '@dxos/context';
9
10
  import { PublicKey } from '@dxos/keys';
10
11
  import { log } from '@dxos/log';
11
12
  import { type TYPES } from '@dxos/protocols/proto';
@@ -13,7 +14,6 @@ import { type SignalServerRunner, runTestSignalServer } from '@dxos/signal';
13
14
  import { ComplexSet, range } from '@dxos/util';
14
15
 
15
16
  import { type Message, type PeerInfo } from '../signal-methods';
16
-
17
17
  import { SignalClient } from './signal-client';
18
18
 
19
19
  const PAYLOAD: TaggedType<TYPES, 'google.protobuf.Any'> = {
@@ -43,7 +43,7 @@ describe('SignalClient', () => {
43
43
 
44
44
  const message = createMessage(peer2, peer1);
45
45
  const receivedMessage = peer1.waitForNextMessage();
46
- await peer2.client.sendMessage(message);
46
+ await peer2.client.sendMessage(Context.default(), message);
47
47
  expect(await receivedMessage).toEqual(message);
48
48
  });
49
49
 
@@ -51,8 +51,8 @@ describe('SignalClient', () => {
51
51
  const topic = PublicKey.random();
52
52
  const [peer1, peer2] = setupPeers({ peerCount: 2 });
53
53
 
54
- await peer1.client.join({ topic, peer: peer1.peerInfo });
55
- await peer2.client.join({ topic, peer: peer2.peerInfo });
54
+ await peer1.client.join(Context.default(), { topic, peer: peer1.peerInfo });
55
+ await peer2.client.join(Context.default(), { topic, peer: peer2.peerInfo });
56
56
 
57
57
  await peer1.waitForPeer(peer2.peerKey);
58
58
  await peer2.waitForPeer(peer1.peerKey);
@@ -67,7 +67,7 @@ describe('SignalClient', () => {
67
67
  const message = createMessage(peer2, peer1);
68
68
  const receivedMessage = peer1.waitForNextMessage();
69
69
 
70
- await peer1.client.sendMessage(message);
70
+ await peer1.client.sendMessage(Context.default(), message);
71
71
  expect(await receivedMessage).toEqual(message);
72
72
  });
73
73
 
@@ -82,7 +82,7 @@ describe('SignalClient', () => {
82
82
 
83
83
  {
84
84
  const receivedMessage = peer1.waitForNextMessage({ timeout: 1_000 });
85
- await peer2.client.sendMessage(message);
85
+ await peer2.client.sendMessage(Context.default(), message);
86
86
  expect(await receivedMessage).toEqual(message);
87
87
  }
88
88
 
@@ -91,7 +91,7 @@ describe('SignalClient', () => {
91
91
 
92
92
  {
93
93
  const receivedMessage = peer1.waitForNextMessage({ timeout: 200 });
94
- await peer2.client.sendMessage(message);
94
+ await peer2.client.sendMessage(Context.default(), message);
95
95
  await expect(receivedMessage).rejects.toBeDefined();
96
96
  }
97
97
  });
@@ -106,7 +106,7 @@ describe('SignalClient', () => {
106
106
 
107
107
  {
108
108
  const waitMessage = peer1.waitForNextMessage();
109
- await peer2.client.sendMessage(message);
109
+ await peer2.client.sendMessage(Context.default(), message);
110
110
  expect(await waitMessage).toEqual(message);
111
111
  }
112
112
 
@@ -120,7 +120,7 @@ describe('SignalClient', () => {
120
120
 
121
121
  {
122
122
  const waitMessage = peer1.waitForNextMessage();
123
- await peer2.client.sendMessage(message);
123
+ await peer2.client.sendMessage(Context.default(), message);
124
124
  expect(await waitMessage).toEqual(message);
125
125
  }
126
126
  });
@@ -7,7 +7,6 @@ import { type Context, Resource, cancelWithContext } from '@dxos/context';
7
7
  import { invariant } from '@dxos/invariant';
8
8
  import { PublicKey } from '@dxos/keys';
9
9
  import { log } from '@dxos/log';
10
- import { trace } from '@dxos/protocols';
11
10
  import { type SwarmResponse } from '@dxos/protocols/proto/dxos/edge/messenger';
12
11
  import { type JoinRequest, type LeaveRequest, type QueryRequest } from '@dxos/protocols/proto/dxos/edge/signal';
13
12
  import { SignalState } from '@dxos/protocols/proto/dxos/mesh/signal';
@@ -19,7 +18,6 @@ import {
19
18
  type SignalStatus,
20
19
  type SwarmEvent,
21
20
  } from '../signal-methods';
22
-
23
21
  import { SignalClientMonitor } from './signal-client-monitor';
24
22
  import { SignalLocalState } from './signal-local-state';
25
23
  import { SignalRPCClient } from './signal-rpc-client';
@@ -57,8 +55,6 @@ export class SignalClient extends Resource implements SignalClientMethods {
57
55
  */
58
56
  private _reconnectAfter = DEFAULT_RECONNECT_TIMEOUT;
59
57
 
60
- private readonly _instanceId = PublicKey.random().toHex();
61
-
62
58
  /**
63
59
  * @internal
64
60
  */
@@ -94,7 +90,7 @@ export class SignalClient extends Resource implements SignalClientMethods {
94
90
  }
95
91
 
96
92
  protected override async _open(): Promise<void> {
97
- log.trace('dxos.mesh.signal-client.open', trace.begin({ id: this._instanceId }));
93
+ log('opening signal client');
98
94
 
99
95
  if ([SignalState.CONNECTED, SignalState.CONNECTING].includes(this._state)) {
100
96
  return;
@@ -137,7 +133,7 @@ export class SignalClient extends Resource implements SignalClientMethods {
137
133
  });
138
134
 
139
135
  this._createClient();
140
- log.trace('dxos.mesh.signal-client.open', trace.end({ id: this._instanceId }));
136
+ log('opened signal client');
141
137
  }
142
138
 
143
139
  protected override async _catch(err: Error): Promise<void> {
@@ -173,24 +169,24 @@ export class SignalClient extends Resource implements SignalClientMethods {
173
169
  };
174
170
  }
175
171
 
176
- async join(args: JoinRequest): Promise<void> {
172
+ async join(_ctx: Context, args: JoinRequest): Promise<void> {
177
173
  log('joining', { topic: args.topic, peerId: args.peer.peerKey });
178
174
  this._monitor.recordJoin();
179
175
  this.localState.join({ topic: args.topic, peerId: PublicKey.from(args.peer.peerKey) });
180
176
  this._reconcileTask?.schedule();
181
177
  }
182
178
 
183
- async leave(args: LeaveRequest): Promise<void> {
179
+ async leave(_ctx: Context, args: LeaveRequest): Promise<void> {
184
180
  log('leaving', { topic: args.topic, peerId: args.peer.peerKey });
185
181
  this._monitor.recordLeave();
186
182
  this.localState.leave({ topic: args.topic, peerId: PublicKey.from(args.peer.peerKey) });
187
183
  }
188
184
 
189
- async query(params: QueryRequest): Promise<SwarmResponse> {
185
+ async query(_ctx: Context, params: QueryRequest): Promise<SwarmResponse> {
190
186
  throw new Error('Not implemented');
191
187
  }
192
188
 
193
- async sendMessage(msg: Message): Promise<void> {
189
+ async sendMessage(_ctx: Context, msg: Message): Promise<void> {
194
190
  return this._monitor.recordMessageSending(msg, async () => {
195
191
  await this._clientReady.wait();
196
192
  invariant(this._state === SignalState.CONNECTED, 'Not connected to Signal Server');
@@ -14,7 +14,6 @@ import {
14
14
  import { ComplexMap, ComplexSet, safeAwaitAll } from '@dxos/util';
15
15
 
16
16
  import type { Message, SwarmEvent } from '../signal-methods';
17
-
18
17
  import { type SignalRPCClient } from './signal-rpc-client';
19
18
 
20
19
  export class SignalLocalState {
@@ -10,7 +10,6 @@ import { Context } from '@dxos/context';
10
10
  import { invariant } from '@dxos/invariant';
11
11
  import { PublicKey } from '@dxos/keys';
12
12
  import { log } from '@dxos/log';
13
- import { trace } from '@dxos/protocols';
14
13
  import { schema } from '@dxos/protocols/proto';
15
14
  import { type Signal, type Message as SignalMessage } from '@dxos/protocols/proto/dxos/mesh/signal';
16
15
  import { type ProtoRpcPeer, createProtoRpcPeer } from '@dxos/rpc';
@@ -36,7 +35,7 @@ export type SignalCallbacks = {
36
35
  getMetadata?: () => any;
37
36
  };
38
37
 
39
- export type SignalRPCClientParams = {
38
+ export type SignalRPCClientProps = {
40
39
  url: string;
41
40
  callbacks?: SignalCallbacks;
42
41
  };
@@ -61,9 +60,8 @@ export class SignalRPCClient {
61
60
 
62
61
  private readonly _monitor = new SignalRpcClientMonitor();
63
62
 
64
- constructor({ url, callbacks = {} }: SignalRPCClientParams) {
65
- const traceId = PublicKey.random().toHex();
66
- log.trace('dxos.mesh.signal-rpc-client.constructor', trace.begin({ id: traceId }));
63
+ constructor({ url, callbacks = {} }: SignalRPCClientProps) {
64
+ log('creating signal rpc client', { url });
67
65
  this._url = url;
68
66
  this._callbacks = callbacks;
69
67
  this._socket = new WebSocket(this._url);
@@ -149,7 +147,7 @@ export class SignalRPCClient {
149
147
  log.warn(`Socket ${event.type ?? 'unknown'} error`, { message: event.message, url: this._url });
150
148
  };
151
149
 
152
- log.trace('dxos.mesh.signal-rpc-client.constructor', trace.end({ id: traceId }));
150
+ log('created signal rpc client', { url });
153
151
  }
154
152
 
155
153
  async close(): Promise<void> {