@dxos/messaging 0.6.11 → 0.6.12-main.5cc132e

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 (32) hide show
  1. package/dist/lib/browser/meta.json +1 -1
  2. package/dist/lib/node-esm/index.mjs +2290 -0
  3. package/dist/lib/node-esm/index.mjs.map +7 -0
  4. package/dist/lib/node-esm/meta.json +1 -0
  5. package/dist/types/src/messenger.blueprint-test.d.ts.map +1 -1
  6. package/dist/types/src/messenger.node.test.d.ts +2 -0
  7. package/dist/types/src/messenger.node.test.d.ts.map +1 -0
  8. package/dist/types/src/signal-client/signal-client.node.test.d.ts +2 -0
  9. package/dist/types/src/signal-client/signal-client.node.test.d.ts.map +1 -0
  10. package/dist/types/src/signal-client/signal-rpc-client.node.test.d.ts +2 -0
  11. package/dist/types/src/signal-client/signal-rpc-client.node.test.d.ts.map +1 -0
  12. package/dist/types/src/signal-manager/edge-signal-manager.node.test.d.ts +2 -0
  13. package/dist/types/src/signal-manager/edge-signal-manager.node.test.d.ts.map +1 -0
  14. package/dist/types/src/signal-manager/websocket-signal-manager.node.test.d.ts +2 -0
  15. package/dist/types/src/signal-manager/websocket-signal-manager.node.test.d.ts.map +1 -0
  16. package/package.json +18 -19
  17. package/src/messenger.blueprint-test.ts +23 -28
  18. package/src/{messenger.test.ts → messenger.node.test.ts} +6 -4
  19. package/src/signal-client/{signal-client.test.ts → signal-client.node.test.ts} +9 -8
  20. package/src/signal-client/{signal-rpc-client.test.ts → signal-rpc-client.node.test.ts} +8 -13
  21. package/src/signal-manager/{edge-signal-manager.test.ts → edge-signal-manager.node.test.ts} +7 -4
  22. package/src/signal-manager/{websocket-signal-manager.test.ts → websocket-signal-manager.node.test.ts} +12 -30
  23. package/dist/types/src/messenger.test.d.ts +0 -2
  24. package/dist/types/src/messenger.test.d.ts.map +0 -1
  25. package/dist/types/src/signal-client/signal-client.test.d.ts +0 -2
  26. package/dist/types/src/signal-client/signal-client.test.d.ts.map +0 -1
  27. package/dist/types/src/signal-client/signal-rpc-client.test.d.ts +0 -2
  28. package/dist/types/src/signal-client/signal-rpc-client.test.d.ts.map +0 -1
  29. package/dist/types/src/signal-manager/edge-signal-manager.test.d.ts +0 -2
  30. package/dist/types/src/signal-manager/edge-signal-manager.test.d.ts.map +0 -1
  31. package/dist/types/src/signal-manager/websocket-signal-manager.test.d.ts +0 -2
  32. package/dist/types/src/signal-manager/websocket-signal-manager.test.d.ts.map +0 -1
@@ -2,11 +2,13 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
+ import { afterAll, onTestFinished, beforeAll, test, describe } from 'vitest';
6
+
5
7
  import { asyncTimeout } from '@dxos/async';
6
8
  import { EdgeClient } from '@dxos/edge-client';
7
9
  import { type PublicKey } from '@dxos/keys';
8
10
  import { runTestSignalServer, type SignalServerRunner } from '@dxos/signal';
9
- import { afterAll, afterTest, beforeAll, openAndClose, test, describe } from '@dxos/test';
11
+ import { openAndClose } from '@dxos/test-utils';
10
12
 
11
13
  import { messengerTests } from './messenger.blueprint-test';
12
14
  import { EdgeSignalManager, WebsocketSignalManager } from './signal-manager';
@@ -26,12 +28,12 @@ describe('Messenger with WebsocketSignalManager', () => {
26
28
 
27
29
  messengerTests(async () => new WebsocketSignalManager([{ server: broker.url() }]));
28
30
 
29
- test('Message with broken signal server', async () => {
31
+ test('Message with broken signal server', { timeout: 1000 }, async () => {
30
32
  const builder = new TestBuilder({
31
33
  signalManagerFactory: async () =>
32
34
  new WebsocketSignalManager([{ server: 'ws://broken.kube.' }, { server: broker.url() }]),
33
35
  });
34
- afterTest(() => builder.close());
36
+ onTestFinished(() => builder.close());
35
37
  const peer1 = await builder.createPeer();
36
38
  const peer2 = await builder.createPeer();
37
39
 
@@ -46,7 +48,7 @@ describe('Messenger with WebsocketSignalManager', () => {
46
48
  await peer1.messenger.sendMessage(message);
47
49
  await asyncTimeout(receivePromise, 1_000);
48
50
  }
49
- }).timeout(1_000);
51
+ });
50
52
  });
51
53
 
52
54
  // TODO(mykola): Expects wrangler dev in edge repo to run. Skip to pass CI.
@@ -2,15 +2,14 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- // eslint-disable-next-line @typescript-eslint/no-var-requires
6
- import { expect } from 'earljs';
5
+ import { afterAll, beforeAll, describe, expect, test, onTestFinished } from 'vitest';
7
6
 
8
7
  import { asyncTimeout, waitForCondition } from '@dxos/async';
9
8
  import { type Any, type TaggedType } from '@dxos/codec-protobuf';
10
9
  import { PublicKey } from '@dxos/keys';
10
+ import { log } from '@dxos/log';
11
11
  import { type TYPES } from '@dxos/protocols/proto';
12
12
  import { runTestSignalServer, type SignalServerRunner } from '@dxos/signal';
13
- import { afterAll, beforeAll, describe, test, afterTest } from '@dxos/test';
14
13
  import { ComplexSet, range } from '@dxos/util';
15
14
 
16
15
  import { SignalClient } from './signal-client';
@@ -30,7 +29,9 @@ describe('SignalClient', () => {
30
29
  });
31
30
 
32
31
  afterAll(async () => {
32
+ log.info('begin stop');
33
33
  await broker1.stop();
34
+ log.info('end stop');
34
35
  });
35
36
 
36
37
  test('message between 2 clients', async () => {
@@ -79,7 +80,7 @@ describe('SignalClient', () => {
79
80
  const message = createMessage(peer2, peer1);
80
81
 
81
82
  {
82
- const receivedMessage = peer1.waitForNextMessage();
83
+ const receivedMessage = peer1.waitForNextMessage({ timeout: 1_000 });
83
84
  await peer2.client.sendMessage(message);
84
85
  expect(await receivedMessage).toEqual(message);
85
86
  }
@@ -90,7 +91,7 @@ describe('SignalClient', () => {
90
91
  {
91
92
  const receivedMessage = peer1.waitForNextMessage({ timeout: 200 });
92
93
  await peer2.client.sendMessage(message);
93
- await expect(receivedMessage).toBeRejected();
94
+ await expect(receivedMessage).rejects.toBeDefined();
94
95
  }
95
96
  });
96
97
 
@@ -138,7 +139,7 @@ describe('SignalClient', () => {
138
139
  });
139
140
 
140
141
  void client.open();
141
- afterTest(async () => {
142
+ onTestFinished(async () => {
142
143
  await client.close();
143
144
  });
144
145
  return {
@@ -146,10 +147,10 @@ describe('SignalClient', () => {
146
147
  identityKey,
147
148
  client,
148
149
  peerInfo: { peerKey: peerKey.toHex(), identityKey: identityKey.toHex() },
149
- waitForNextMessage: async () => {
150
+ waitForNextMessage: async ({ timeout = 5_000 } = {}) => {
150
151
  return asyncTimeout(
151
152
  client.onMessage.waitFor(() => true),
152
- 5000,
153
+ timeout,
153
154
  );
154
155
  },
155
156
  waitForPeer: (peerId: PublicKey) => waitForCondition({ condition: () => peers.has(peerId) }),
@@ -2,7 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { expect } from 'earljs';
5
+ import { afterAll, beforeAll, describe, expect, onTestFinished, test } from 'vitest';
6
6
 
7
7
  import { type Any } from '@dxos/codec-protobuf';
8
8
  import { PublicKey } from '@dxos/keys';
@@ -10,7 +10,6 @@ import { log } from '@dxos/log';
10
10
  import { schema } from '@dxos/protocols/proto';
11
11
  import { type Message as SignalMessage, type SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';
12
12
  import { runTestSignalServer, type SignalServerRunner } from '@dxos/signal';
13
- import { afterAll, afterTest, beforeAll, describe, test } from '@dxos/test';
14
13
 
15
14
  import { SignalRPCClient } from './signal-rpc-client';
16
15
 
@@ -28,11 +27,11 @@ describe('SignalRPCClient', () => {
28
27
  // TODO(burdon): Convert to TestBuilder pattern.
29
28
  const setupClient = async () => {
30
29
  const client = new SignalRPCClient({ url: broker.url() });
31
- afterTest(async () => await client.close());
30
+ onTestFinished(async () => await client.close());
32
31
  return client;
33
32
  };
34
33
 
35
- test('signal between 2 peers', async () => {
34
+ test('signal between 2 peers', { timeout: 2_000 }, async () => {
36
35
  const client1 = await setupClient();
37
36
  const client2 = await setupClient();
38
37
 
@@ -65,14 +64,12 @@ describe('SignalRPCClient', () => {
65
64
  payload,
66
65
  });
67
66
 
68
- expect((await received).author).toEqual(peerId2.asUint8Array());
69
- expect((await received).payload).toBeAnObjectWith(payload);
67
+ expect((await received).author).toEqual(peerId2.asBuffer());
68
+ expect((await received).payload).toEqual(expect.objectContaining(payload));
70
69
  void stream1.close();
71
- })
72
- .timeout(2_000)
73
- .retries(2);
70
+ });
74
71
 
75
- test('join', async () => {
72
+ test('join', { timeout: 2_000 }, async () => {
76
73
  const client1 = await setupClient();
77
74
  const client2 = await setupClient();
78
75
 
@@ -101,7 +98,5 @@ describe('SignalRPCClient', () => {
101
98
  expect((await promise).peerAvailable?.peer).toEqual(peerId2.asBuffer());
102
99
  void stream1.close();
103
100
  void stream2.close();
104
- })
105
- .timeout(2_000)
106
- .retries(2);
101
+ });
107
102
  });
@@ -1,9 +1,12 @@
1
1
  //
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
+
5
+ import { onTestFinished, describe, test } from 'vitest';
6
+
4
7
  import { EdgeClient } from '@dxos/edge-client';
5
8
  import { PublicKey } from '@dxos/keys';
6
- import { afterTest, describe, openAndClose, test } from '@dxos/test';
9
+ import { openAndClose } from '@dxos/test-utils';
7
10
 
8
11
  import { EdgeSignalManager } from './edge-signal-manager';
9
12
  import { createMessage, expectReceivedMessage, TestBuilder, type TestBuilderOptions } from '../testing';
@@ -19,7 +22,7 @@ describe.skip('EdgeSignalManager', () => {
19
22
 
20
23
  test('two peers discover each other', async () => {
21
24
  const builder = new TestBuilder({ signalManagerFactory: edgeSignalFactory });
22
- afterTest(() => builder.close());
25
+ onTestFinished(() => builder.close());
23
26
  const [peer1, peer2] = await builder.createPeers(2);
24
27
 
25
28
  const topic = PublicKey.random();
@@ -36,7 +39,7 @@ describe.skip('EdgeSignalManager', () => {
36
39
 
37
40
  test('join and leave swarm', async () => {
38
41
  const builder = new TestBuilder({ signalManagerFactory: edgeSignalFactory });
39
- afterTest(() => builder.close());
42
+ onTestFinished(() => builder.close());
40
43
  const [peer1, peer2] = await builder.createPeers(2);
41
44
 
42
45
  const topic = PublicKey.random();
@@ -54,7 +57,7 @@ describe.skip('EdgeSignalManager', () => {
54
57
 
55
58
  test('message between peers', async () => {
56
59
  const builder = new TestBuilder({ signalManagerFactory: edgeSignalFactory });
57
- afterTest(() => builder.close());
60
+ onTestFinished(() => builder.close());
58
61
  const [peer1, peer2] = await builder.createPeers(2);
59
62
  const message = createMessage(peer1.peerInfo, peer2.peerInfo);
60
63
 
@@ -2,37 +2,31 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { afterAll, beforeAll, describe, test } from 'vitest';
6
+
5
7
  import { asyncTimeout, sleep } from '@dxos/async';
6
8
  import { PublicKey } from '@dxos/keys';
7
9
  import { runTestSignalServer, type SignalServerRunner } from '@dxos/signal';
8
- import { afterAll, beforeAll, describe, test, openAndClose } from '@dxos/test';
10
+ import { openAndClose } from '@dxos/test-utils';
9
11
 
10
12
  import { WebsocketSignalManager } from './websocket-signal-manager';
11
13
  import { createMessage, expectPeerAvailable, expectReceivedMessage } from '../testing';
12
14
 
13
- describe('WebSocketSignalManager', () => {
15
+ describe.skip('WebSocketSignalManager', () => {
14
16
  let broker1: SignalServerRunner;
15
17
  let broker2: SignalServerRunner;
16
18
 
17
19
  beforeAll(async () => {
18
- if (!mochaExecutor.tags.includes('e2e')) {
19
- return;
20
- }
21
-
22
20
  broker1 = await runTestSignalServer({ port: 5001 });
23
21
  broker2 = await runTestSignalServer({ port: 5002 });
24
22
  });
25
23
 
26
24
  afterAll(() => {
27
- if (!mochaExecutor.tags.includes('e2e')) {
28
- return;
29
- }
30
-
31
25
  void broker1.stop();
32
26
  void broker2.stop();
33
27
  });
34
28
 
35
- test('join swarm with two brokers', async () => {
29
+ test('join swarm with two brokers', { timeout: 1_000 }, async () => {
36
30
  const client1 = new WebsocketSignalManager([{ server: broker1.url() }, { server: broker2.url() }]);
37
31
  const client2 = new WebsocketSignalManager([{ server: broker1.url() }]);
38
32
  const client3 = new WebsocketSignalManager([{ server: broker2.url() }]);
@@ -50,12 +44,9 @@ describe('WebSocketSignalManager', () => {
50
44
  await client3.join({ topic, peer: { peerKey: peer3.toHex() } });
51
45
 
52
46
  await Promise.all([joined12, joined13, joined21, joined31]);
53
- })
54
- .timeout(1_000)
55
- .retries(2)
56
- .tag('e2e');
47
+ });
57
48
 
58
- test('join single swarm with doubled brokers', async () => {
49
+ test('join single swarm with doubled brokers', { timeout: 1_000 }, async () => {
59
50
  const client1 = new WebsocketSignalManager([{ server: broker1.url() }, { server: broker2.url() }]);
60
51
  const client2 = new WebsocketSignalManager([{ server: broker1.url() }, { server: broker2.url() }]);
61
52
  await openAndClose(client1, client2);
@@ -78,12 +69,9 @@ describe('WebSocketSignalManager', () => {
78
69
  await client1.sendMessage(message);
79
70
 
80
71
  await asyncTimeout(received, 1_000);
81
- })
82
- .timeout(1_000)
83
- .retries(2)
84
- .tag('e2e');
72
+ });
85
73
 
86
- test('works with one broken server', async () => {
74
+ test('works with one broken server', { timeout: 1_000 }, async () => {
87
75
  const client1 = new WebsocketSignalManager([{ server: 'ws://broken.server/signal' }, { server: broker1.url() }]);
88
76
  const client2 = new WebsocketSignalManager([{ server: 'ws://broken.server/signal' }, { server: broker1.url() }]);
89
77
  await openAndClose(client1, client2);
@@ -97,12 +85,9 @@ describe('WebSocketSignalManager', () => {
97
85
  await client2.join({ topic, peer: { peerKey: peer2.toHex() } });
98
86
 
99
87
  await Promise.all([joined12, joined21]);
100
- })
101
- .timeout(1_000)
102
- .retries(2)
103
- .tag('e2e');
88
+ });
104
89
 
105
- test('join two swarms with a broken signal server', async () => {
90
+ test('join two swarms with a broken signal server', { timeout: 1_000 }, async () => {
106
91
  const client1 = new WebsocketSignalManager([{ server: 'ws://broken.server/signal' }, { server: broker1.url() }]);
107
92
  const client2 = new WebsocketSignalManager([{ server: 'ws://broken.server/signal' }, { server: broker1.url() }]);
108
93
  await openAndClose(client1, client2);
@@ -122,8 +107,5 @@ describe('WebSocketSignalManager', () => {
122
107
  await client1.join({ topic: topic2, peer: { peerKey: peer1.toHex() } });
123
108
  await client2.join({ topic: topic2, peer: { peerKey: peer2.toHex() } });
124
109
  await Promise.all([joined212, joined221]);
125
- })
126
- .timeout(1_000)
127
- .retries(2)
128
- .tag('e2e');
110
+ });
129
111
  });
@@ -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":""}