@dxos/messaging 0.6.12 → 0.6.13-main.041e8aa

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 (58) hide show
  1. package/dist/lib/browser/chunk-BN7UMWB4.mjs +2299 -0
  2. package/dist/lib/browser/chunk-BN7UMWB4.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +9 -2286
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs +147 -0
  7. package/dist/lib/browser/testing/index.mjs.map +7 -0
  8. package/dist/lib/node/chunk-DBUGAS7J.cjs +2276 -0
  9. package/dist/lib/node/chunk-DBUGAS7J.cjs.map +7 -0
  10. package/dist/lib/node/index.cjs +9 -2242
  11. package/dist/lib/node/index.cjs.map +4 -4
  12. package/dist/lib/node/meta.json +1 -1
  13. package/dist/lib/node/testing/index.cjs +162 -0
  14. package/dist/lib/node/testing/index.cjs.map +7 -0
  15. package/dist/lib/node-esm/chunk-5LCDIQ7T.mjs +2291 -0
  16. package/dist/lib/node-esm/chunk-5LCDIQ7T.mjs.map +7 -0
  17. package/dist/lib/node-esm/index.mjs +22 -0
  18. package/dist/lib/node-esm/index.mjs.map +7 -0
  19. package/dist/lib/node-esm/meta.json +1 -0
  20. package/dist/lib/node-esm/testing/index.mjs +146 -0
  21. package/dist/lib/node-esm/testing/index.mjs.map +7 -0
  22. package/dist/types/src/messenger.blueprint-test.d.ts +2 -3
  23. package/dist/types/src/messenger.blueprint-test.d.ts.map +1 -1
  24. package/dist/types/src/messenger.d.ts.map +1 -1
  25. package/dist/types/src/messenger.node.test.d.ts +2 -0
  26. package/dist/types/src/messenger.node.test.d.ts.map +1 -0
  27. package/dist/types/src/signal-client/signal-client.node.test.d.ts +2 -0
  28. package/dist/types/src/signal-client/signal-client.node.test.d.ts.map +1 -0
  29. package/dist/types/src/signal-client/signal-rpc-client.node.test.d.ts +2 -0
  30. package/dist/types/src/signal-client/signal-rpc-client.node.test.d.ts.map +1 -0
  31. package/dist/types/src/signal-manager/edge-signal-manager.d.ts.map +1 -1
  32. package/dist/types/src/signal-manager/websocket-signal-manager.node.test.d.ts +2 -0
  33. package/dist/types/src/signal-manager/websocket-signal-manager.node.test.d.ts.map +1 -0
  34. package/dist/types/src/testing/test-builder.d.ts +3 -4
  35. package/dist/types/src/testing/test-builder.d.ts.map +1 -1
  36. package/dist/types/src/testing/test-peer.d.ts +0 -1
  37. package/dist/types/src/testing/test-peer.d.ts.map +1 -1
  38. package/package.json +32 -21
  39. package/src/messenger.blueprint-test.ts +25 -33
  40. package/src/{messenger.test.ts → messenger.node.test.ts} +6 -19
  41. package/src/messenger.ts +1 -1
  42. package/src/signal-client/{signal-client.test.ts → signal-client.node.test.ts} +9 -8
  43. package/src/signal-client/{signal-rpc-client.test.ts → signal-rpc-client.node.test.ts} +8 -13
  44. package/src/signal-manager/edge-signal-manager.ts +5 -6
  45. package/src/signal-manager/{websocket-signal-manager.test.ts → websocket-signal-manager.node.test.ts} +12 -30
  46. package/src/testing/test-builder.ts +3 -6
  47. package/src/testing/test-peer.ts +5 -7
  48. package/dist/types/src/messenger.test.d.ts +0 -2
  49. package/dist/types/src/messenger.test.d.ts.map +0 -1
  50. package/dist/types/src/signal-client/signal-client.test.d.ts +0 -2
  51. package/dist/types/src/signal-client/signal-client.test.d.ts.map +0 -1
  52. package/dist/types/src/signal-client/signal-rpc-client.test.d.ts +0 -2
  53. package/dist/types/src/signal-client/signal-rpc-client.test.d.ts.map +0 -1
  54. package/dist/types/src/signal-manager/edge-signal-manager.test.d.ts +0 -2
  55. package/dist/types/src/signal-manager/edge-signal-manager.test.d.ts.map +0 -1
  56. package/dist/types/src/signal-manager/websocket-signal-manager.test.d.ts +0 -2
  57. package/dist/types/src/signal-manager/websocket-signal-manager.test.d.ts.map +0 -1
  58. package/src/signal-manager/edge-signal-manager.test.ts +0 -67
@@ -2,14 +2,12 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { type PublicKey } from '@dxos/keys';
6
-
7
5
  import { TestPeer } from './test-peer';
8
6
  import { type SignalManager, MemorySignalManager, MemorySignalManagerContext } from '../signal-manager';
9
7
  import { type Message } from '../signal-methods';
10
8
 
11
9
  export type TestBuilderOptions = {
12
- signalManagerFactory?: (identityKey: PublicKey, deviceKey: PublicKey) => Promise<SignalManager>;
10
+ signalManagerFactory?: (peer: TestPeer) => Promise<SignalManager>;
13
11
  messageDisruption?: (msg: Message) => Message[];
14
12
  };
15
13
 
@@ -19,10 +17,9 @@ export class TestBuilder {
19
17
 
20
18
  constructor(public options: TestBuilderOptions) {}
21
19
 
22
- async createSignalManager(identityKey: PublicKey, deviceKey: PublicKey) {
20
+ async createSignalManager(peer: TestPeer): Promise<SignalManager> {
23
21
  const signalManager =
24
- (await this.options.signalManagerFactory?.(identityKey, deviceKey)) ??
25
- new MemorySignalManager(this._signalContext);
22
+ (await this.options.signalManagerFactory?.(peer)) ?? new MemorySignalManager(this._signalContext);
26
23
 
27
24
  if (this.options.messageDisruption) {
28
25
  // Imitates signal network disruptions (e. g. message doubling, ).
@@ -4,8 +4,10 @@
4
4
 
5
5
  import { Event } from '@dxos/async';
6
6
  import { Resource } from '@dxos/context';
7
+ import { PeerSchema } from '@dxos/edge-client';
7
8
  import { PublicKey } from '@dxos/keys';
8
9
  import { log } from '@dxos/log';
10
+ import { buf } from '@dxos/protocols/buf';
9
11
 
10
12
  import { type TestBuilder } from './test-builder';
11
13
  import { expectPeerAvailable, expectPeerLeft, expectReceivedMessage } from './utils';
@@ -15,7 +17,6 @@ import { type Message, type PeerInfo } from '../signal-methods';
15
17
 
16
18
  export class TestPeer extends Resource {
17
19
  public peerId = PublicKey.random();
18
- public identityKey = PublicKey.random();
19
20
  public signalManager!: SignalManager;
20
21
  public messenger!: Messenger;
21
22
  public defaultReceived = new Event<Message>();
@@ -25,10 +26,7 @@ export class TestPeer extends Resource {
25
26
  }
26
27
 
27
28
  get peerInfo(): PeerInfo {
28
- return {
29
- peerKey: this.peerId.toHex(),
30
- identityKey: this.identityKey.toHex(),
31
- };
29
+ return buf.create(PeerSchema, { peerKey: this.peerId.toHex(), identityKey: this.peerId.toHex() });
32
30
  }
33
31
 
34
32
  async waitTillReceive(message: Message) {
@@ -44,8 +42,8 @@ export class TestPeer extends Resource {
44
42
  }
45
43
 
46
44
  protected override async _open() {
47
- this.signalManager = await this.testBuilder.createSignalManager(this.identityKey, this.peerId);
48
- this.messenger = new Messenger({ signalManager: this.signalManager });
45
+ this.signalManager = await this.testBuilder.createSignalManager(this);
46
+ this.messenger = new Messenger({ signalManager: this.signalManager, retryDelay: 300 });
49
47
 
50
48
  await this.signalManager.open();
51
49
  this.messenger.open();
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=messenger.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messenger.test.d.ts","sourceRoot":"","sources":["../../../src/messenger.test.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=signal-client.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signal-client.test.d.ts","sourceRoot":"","sources":["../../../../src/signal-client/signal-client.test.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=signal-rpc-client.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signal-rpc-client.test.d.ts","sourceRoot":"","sources":["../../../../src/signal-client/signal-rpc-client.test.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=edge-signal-manager.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edge-signal-manager.test.d.ts","sourceRoot":"","sources":["../../../../src/signal-manager/edge-signal-manager.test.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=websocket-signal-manager.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket-signal-manager.test.d.ts","sourceRoot":"","sources":["../../../../src/signal-manager/websocket-signal-manager.test.ts"],"names":[],"mappings":""}
@@ -1,67 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
- import { EdgeClient } from '@dxos/edge-client';
5
- import { PublicKey } from '@dxos/keys';
6
- import { afterTest, describe, openAndClose, test } from '@dxos/test';
7
-
8
- import { EdgeSignalManager } from './edge-signal-manager';
9
- import { createMessage, expectReceivedMessage, TestBuilder, type TestBuilderOptions } from '../testing';
10
-
11
- // TODO(mykola): Expects wrangler dev in edge repo to run. Skip to pass CI.
12
- describe.skip('EdgeSignalManager', () => {
13
- const edgeSignalFactory: TestBuilderOptions['signalManagerFactory'] = async (identityKey, deviceKey) => {
14
- const client = new EdgeClient(identityKey.toHex(), deviceKey.toHex(), { socketEndpoint: 'ws://localhost:8787' });
15
- await openAndClose(client);
16
-
17
- return new EdgeSignalManager({ edgeConnection: client });
18
- };
19
-
20
- test('two peers discover each other', async () => {
21
- const builder = new TestBuilder({ signalManagerFactory: edgeSignalFactory });
22
- afterTest(() => builder.close());
23
- const [peer1, peer2] = await builder.createPeers(2);
24
-
25
- const topic = PublicKey.random();
26
-
27
- const discover12 = peer1.waitForPeerAvailable(topic, peer2.peerInfo);
28
- const discover21 = peer2.waitForPeerAvailable(topic, peer1.peerInfo);
29
-
30
- await peer1.signalManager.join({ topic, peer: peer1.peerInfo });
31
- await peer2.signalManager.join({ topic, peer: peer2.peerInfo });
32
-
33
- await discover12;
34
- await discover21;
35
- });
36
-
37
- test('join and leave swarm', async () => {
38
- const builder = new TestBuilder({ signalManagerFactory: edgeSignalFactory });
39
- afterTest(() => builder.close());
40
- const [peer1, peer2] = await builder.createPeers(2);
41
-
42
- const topic = PublicKey.random();
43
-
44
- const discover12 = peer1.waitForPeerAvailable(topic, peer2.peerInfo);
45
- const left12 = peer1.waitForPeerLeft(topic, peer2.peerInfo);
46
-
47
- await peer2.signalManager.join({ topic, peer: peer2.peerInfo });
48
- await peer1.signalManager.join({ topic, peer: peer1.peerInfo });
49
- await discover12;
50
-
51
- await peer2.signalManager.leave({ topic, peer: peer2.peerInfo });
52
- await left12;
53
- });
54
-
55
- test('message between peers', async () => {
56
- const builder = new TestBuilder({ signalManagerFactory: edgeSignalFactory });
57
- afterTest(() => builder.close());
58
- const [peer1, peer2] = await builder.createPeers(2);
59
- const message = createMessage(peer1.peerInfo, peer2.peerInfo);
60
-
61
- const receivedMessage = expectReceivedMessage(peer2.signalManager.onMessage, message);
62
- await peer2.signalManager.subscribeMessages(peer2.peerInfo);
63
- await peer1.signalManager.sendMessage(message);
64
-
65
- await receivedMessage;
66
- });
67
- });