@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.
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +2290 -0
- package/dist/lib/node-esm/index.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -0
- package/dist/types/src/messenger.blueprint-test.d.ts.map +1 -1
- package/dist/types/src/messenger.node.test.d.ts +2 -0
- package/dist/types/src/messenger.node.test.d.ts.map +1 -0
- package/dist/types/src/signal-client/signal-client.node.test.d.ts +2 -0
- package/dist/types/src/signal-client/signal-client.node.test.d.ts.map +1 -0
- package/dist/types/src/signal-client/signal-rpc-client.node.test.d.ts +2 -0
- package/dist/types/src/signal-client/signal-rpc-client.node.test.d.ts.map +1 -0
- package/dist/types/src/signal-manager/edge-signal-manager.node.test.d.ts +2 -0
- package/dist/types/src/signal-manager/edge-signal-manager.node.test.d.ts.map +1 -0
- package/dist/types/src/signal-manager/websocket-signal-manager.node.test.d.ts +2 -0
- package/dist/types/src/signal-manager/websocket-signal-manager.node.test.d.ts.map +1 -0
- package/package.json +18 -19
- package/src/messenger.blueprint-test.ts +23 -28
- package/src/{messenger.test.ts → messenger.node.test.ts} +6 -4
- package/src/signal-client/{signal-client.test.ts → signal-client.node.test.ts} +9 -8
- package/src/signal-client/{signal-rpc-client.test.ts → signal-rpc-client.node.test.ts} +8 -13
- package/src/signal-manager/{edge-signal-manager.test.ts → edge-signal-manager.node.test.ts} +7 -4
- package/src/signal-manager/{websocket-signal-manager.test.ts → websocket-signal-manager.node.test.ts} +12 -30
- package/dist/types/src/messenger.test.d.ts +0 -2
- package/dist/types/src/messenger.test.d.ts.map +0 -1
- package/dist/types/src/signal-client/signal-client.test.d.ts +0 -2
- package/dist/types/src/signal-client/signal-client.test.d.ts.map +0 -1
- package/dist/types/src/signal-client/signal-rpc-client.test.d.ts +0 -2
- package/dist/types/src/signal-client/signal-rpc-client.test.d.ts.map +0 -1
- package/dist/types/src/signal-manager/edge-signal-manager.test.d.ts +0 -2
- package/dist/types/src/signal-manager/edge-signal-manager.test.d.ts.map +0 -1
- package/dist/types/src/signal-manager/websocket-signal-manager.test.d.ts +0 -2
- 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 {
|
|
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
|
-
|
|
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
|
-
})
|
|
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
|
-
|
|
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).
|
|
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
|
-
|
|
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
|
-
|
|
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 '
|
|
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
|
-
|
|
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.
|
|
69
|
-
expect((await received).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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"messenger.test.d.ts","sourceRoot":"","sources":["../../../src/messenger.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signal-client.test.d.ts","sourceRoot":"","sources":["../../../../src/signal-client/signal-client.test.ts"],"names":[],"mappings":""}
|
|
@@ -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 +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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-signal-manager.test.d.ts","sourceRoot":"","sources":["../../../../src/signal-manager/websocket-signal-manager.test.ts"],"names":[],"mappings":""}
|