@dxos/messaging 0.6.12-main.ed7cda7 → 0.6.12-staging.0b4bb48
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/index.mjs +16 -16
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +16 -16
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/types/src/messenger.blueprint-test.d.ts.map +1 -1
- package/dist/types/src/messenger.d.ts.map +1 -1
- package/dist/types/src/messenger.test.d.ts +2 -0
- package/dist/types/src/messenger.test.d.ts.map +1 -0
- package/dist/types/src/signal-client/signal-client.test.d.ts +2 -0
- package/dist/types/src/signal-client/signal-client.test.d.ts.map +1 -0
- package/dist/types/src/signal-client/signal-rpc-client.test.d.ts +2 -0
- package/dist/types/src/signal-client/signal-rpc-client.test.d.ts.map +1 -0
- package/dist/types/src/signal-manager/edge-signal-manager.d.ts.map +1 -1
- package/dist/types/src/signal-manager/edge-signal-manager.test.d.ts +2 -0
- package/dist/types/src/signal-manager/edge-signal-manager.test.d.ts.map +1 -0
- package/dist/types/src/signal-manager/websocket-signal-manager.test.d.ts +2 -0
- package/dist/types/src/signal-manager/websocket-signal-manager.test.d.ts.map +1 -0
- package/package.json +20 -18
- package/src/messenger.blueprint-test.ts +28 -23
- package/src/{messenger.node.test.ts → messenger.test.ts} +4 -6
- package/src/messenger.ts +1 -1
- package/src/signal-client/{signal-client.node.test.ts → signal-client.test.ts} +8 -9
- package/src/signal-client/{signal-rpc-client.node.test.ts → signal-rpc-client.test.ts} +13 -8
- package/src/signal-manager/{edge-signal-manager.node.test.ts → edge-signal-manager.test.ts} +4 -7
- package/src/signal-manager/edge-signal-manager.ts +6 -5
- package/src/signal-manager/{websocket-signal-manager.node.test.ts → websocket-signal-manager.test.ts} +30 -12
- package/src/testing/test-peer.ts +1 -1
- package/dist/lib/node-esm/index.mjs +0 -2292
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/types/src/messenger.node.test.d.ts +0 -2
- package/dist/types/src/messenger.node.test.d.ts.map +0 -1
- package/dist/types/src/signal-client/signal-client.node.test.d.ts +0 -2
- package/dist/types/src/signal-client/signal-client.node.test.d.ts.map +0 -1
- package/dist/types/src/signal-client/signal-rpc-client.node.test.d.ts +0 -2
- package/dist/types/src/signal-client/signal-rpc-client.node.test.d.ts.map +0 -1
- package/dist/types/src/signal-manager/edge-signal-manager.node.test.d.ts +0 -2
- package/dist/types/src/signal-manager/edge-signal-manager.node.test.d.ts.map +0 -1
- package/dist/types/src/signal-manager/websocket-signal-manager.node.test.d.ts +0 -2
- package/dist/types/src/signal-manager/websocket-signal-manager.node.test.d.ts.map +0 -1
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { AnySchema } from '@bufbuild/protobuf/wkt';
|
|
6
|
+
|
|
5
7
|
import { Event } from '@dxos/async';
|
|
6
8
|
import { Resource } from '@dxos/context';
|
|
7
9
|
import { type EdgeConnection, protocol } from '@dxos/edge-client';
|
|
@@ -9,7 +11,6 @@ import { invariant } from '@dxos/invariant';
|
|
|
9
11
|
import { PublicKey } from '@dxos/keys';
|
|
10
12
|
import { log } from '@dxos/log';
|
|
11
13
|
import { EdgeService } from '@dxos/protocols';
|
|
12
|
-
import { bufWkt } from '@dxos/protocols/buf';
|
|
13
14
|
import {
|
|
14
15
|
SwarmRequestSchema,
|
|
15
16
|
SwarmRequest_Action as SwarmRequestAction,
|
|
@@ -87,7 +88,7 @@ export class EdgeSignalManager extends Resource implements SignalManager {
|
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
await this._edgeConnection.send(
|
|
90
|
-
protocol.createMessage(
|
|
91
|
+
protocol.createMessage(AnySchema, {
|
|
91
92
|
serviceId: EdgeService.SIGNAL_SERVICE_ID,
|
|
92
93
|
source: message.author,
|
|
93
94
|
target: [message.recipient],
|
|
@@ -125,7 +126,7 @@ export class EdgeSignalManager extends Resource implements SignalManager {
|
|
|
125
126
|
return;
|
|
126
127
|
}
|
|
127
128
|
const oldPeers = this._swarmPeers.get(topic)!;
|
|
128
|
-
const timestamp =
|
|
129
|
+
const timestamp = new Date(Date.parse(message.timestamp));
|
|
129
130
|
const newPeers = new ComplexSet<PeerInfo>(PeerInfoHash, payload.peers);
|
|
130
131
|
|
|
131
132
|
// Emit new available peers in the swarm.
|
|
@@ -154,8 +155,8 @@ export class EdgeSignalManager extends Resource implements SignalManager {
|
|
|
154
155
|
}
|
|
155
156
|
|
|
156
157
|
private _processMessage(message: EdgeMessage) {
|
|
157
|
-
invariant(protocol.getPayloadType(message) ===
|
|
158
|
-
const payload = protocol.getPayload(message,
|
|
158
|
+
invariant(protocol.getPayloadType(message) === AnySchema.typeName, 'Wrong payload type');
|
|
159
|
+
const payload = protocol.getPayload(message, AnySchema);
|
|
159
160
|
invariant(message.source, 'source is missing');
|
|
160
161
|
invariant(message.target, 'target is missing');
|
|
161
162
|
invariant(message.target.length === 1, 'target should have exactly one item');
|
|
@@ -2,31 +2,37 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { afterAll, beforeAll, describe, test } from 'vitest';
|
|
6
|
-
|
|
7
5
|
import { asyncTimeout, sleep } from '@dxos/async';
|
|
8
6
|
import { PublicKey } from '@dxos/keys';
|
|
9
7
|
import { runTestSignalServer, type SignalServerRunner } from '@dxos/signal';
|
|
10
|
-
import { openAndClose } from '@dxos/test
|
|
8
|
+
import { afterAll, beforeAll, describe, test, openAndClose } from '@dxos/test';
|
|
11
9
|
|
|
12
10
|
import { WebsocketSignalManager } from './websocket-signal-manager';
|
|
13
11
|
import { createMessage, expectPeerAvailable, expectReceivedMessage } from '../testing';
|
|
14
12
|
|
|
15
|
-
describe
|
|
13
|
+
describe('WebSocketSignalManager', () => {
|
|
16
14
|
let broker1: SignalServerRunner;
|
|
17
15
|
let broker2: SignalServerRunner;
|
|
18
16
|
|
|
19
17
|
beforeAll(async () => {
|
|
18
|
+
if (!mochaExecutor.tags.includes('e2e')) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
20
22
|
broker1 = await runTestSignalServer({ port: 5001 });
|
|
21
23
|
broker2 = await runTestSignalServer({ port: 5002 });
|
|
22
24
|
});
|
|
23
25
|
|
|
24
26
|
afterAll(() => {
|
|
27
|
+
if (!mochaExecutor.tags.includes('e2e')) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
25
31
|
void broker1.stop();
|
|
26
32
|
void broker2.stop();
|
|
27
33
|
});
|
|
28
34
|
|
|
29
|
-
test('join swarm with two brokers',
|
|
35
|
+
test('join swarm with two brokers', async () => {
|
|
30
36
|
const client1 = new WebsocketSignalManager([{ server: broker1.url() }, { server: broker2.url() }]);
|
|
31
37
|
const client2 = new WebsocketSignalManager([{ server: broker1.url() }]);
|
|
32
38
|
const client3 = new WebsocketSignalManager([{ server: broker2.url() }]);
|
|
@@ -44,9 +50,12 @@ describe.skip('WebSocketSignalManager', () => {
|
|
|
44
50
|
await client3.join({ topic, peer: { peerKey: peer3.toHex() } });
|
|
45
51
|
|
|
46
52
|
await Promise.all([joined12, joined13, joined21, joined31]);
|
|
47
|
-
})
|
|
53
|
+
})
|
|
54
|
+
.timeout(1_000)
|
|
55
|
+
.retries(2)
|
|
56
|
+
.tag('e2e');
|
|
48
57
|
|
|
49
|
-
test('join single swarm with doubled brokers',
|
|
58
|
+
test('join single swarm with doubled brokers', async () => {
|
|
50
59
|
const client1 = new WebsocketSignalManager([{ server: broker1.url() }, { server: broker2.url() }]);
|
|
51
60
|
const client2 = new WebsocketSignalManager([{ server: broker1.url() }, { server: broker2.url() }]);
|
|
52
61
|
await openAndClose(client1, client2);
|
|
@@ -69,9 +78,12 @@ describe.skip('WebSocketSignalManager', () => {
|
|
|
69
78
|
await client1.sendMessage(message);
|
|
70
79
|
|
|
71
80
|
await asyncTimeout(received, 1_000);
|
|
72
|
-
})
|
|
81
|
+
})
|
|
82
|
+
.timeout(1_000)
|
|
83
|
+
.retries(2)
|
|
84
|
+
.tag('e2e');
|
|
73
85
|
|
|
74
|
-
test('works with one broken server',
|
|
86
|
+
test('works with one broken server', async () => {
|
|
75
87
|
const client1 = new WebsocketSignalManager([{ server: 'ws://broken.server/signal' }, { server: broker1.url() }]);
|
|
76
88
|
const client2 = new WebsocketSignalManager([{ server: 'ws://broken.server/signal' }, { server: broker1.url() }]);
|
|
77
89
|
await openAndClose(client1, client2);
|
|
@@ -85,9 +97,12 @@ describe.skip('WebSocketSignalManager', () => {
|
|
|
85
97
|
await client2.join({ topic, peer: { peerKey: peer2.toHex() } });
|
|
86
98
|
|
|
87
99
|
await Promise.all([joined12, joined21]);
|
|
88
|
-
})
|
|
100
|
+
})
|
|
101
|
+
.timeout(1_000)
|
|
102
|
+
.retries(2)
|
|
103
|
+
.tag('e2e');
|
|
89
104
|
|
|
90
|
-
test('join two swarms with a broken signal server',
|
|
105
|
+
test('join two swarms with a broken signal server', async () => {
|
|
91
106
|
const client1 = new WebsocketSignalManager([{ server: 'ws://broken.server/signal' }, { server: broker1.url() }]);
|
|
92
107
|
const client2 = new WebsocketSignalManager([{ server: 'ws://broken.server/signal' }, { server: broker1.url() }]);
|
|
93
108
|
await openAndClose(client1, client2);
|
|
@@ -107,5 +122,8 @@ describe.skip('WebSocketSignalManager', () => {
|
|
|
107
122
|
await client1.join({ topic: topic2, peer: { peerKey: peer1.toHex() } });
|
|
108
123
|
await client2.join({ topic: topic2, peer: { peerKey: peer2.toHex() } });
|
|
109
124
|
await Promise.all([joined212, joined221]);
|
|
110
|
-
})
|
|
125
|
+
})
|
|
126
|
+
.timeout(1_000)
|
|
127
|
+
.retries(2)
|
|
128
|
+
.tag('e2e');
|
|
111
129
|
});
|
package/src/testing/test-peer.ts
CHANGED
|
@@ -45,7 +45,7 @@ export class TestPeer extends Resource {
|
|
|
45
45
|
|
|
46
46
|
protected override async _open() {
|
|
47
47
|
this.signalManager = await this.testBuilder.createSignalManager(this.identityKey, this.peerId);
|
|
48
|
-
this.messenger = new Messenger({ signalManager: this.signalManager
|
|
48
|
+
this.messenger = new Messenger({ signalManager: this.signalManager });
|
|
49
49
|
|
|
50
50
|
await this.signalManager.open();
|
|
51
51
|
this.messenger.open();
|