cojson 0.13.16 → 0.13.18
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +16 -0
- package/dist/PeerState.d.ts +3 -0
- package/dist/PeerState.d.ts.map +1 -1
- package/dist/PeerState.js +9 -0
- package/dist/PeerState.js.map +1 -1
- package/dist/SyncStateManager.d.ts.map +1 -1
- package/dist/SyncStateManager.js +2 -3
- package/dist/SyncStateManager.js.map +1 -1
- package/dist/coValue.d.ts +6 -4
- package/dist/coValue.d.ts.map +1 -1
- package/dist/coValue.js +5 -4
- package/dist/coValue.js.map +1 -1
- package/dist/coValueCore/coValueCore.d.ts +143 -0
- package/dist/coValueCore/coValueCore.d.ts.map +1 -0
- package/dist/{coValueCore.js → coValueCore/coValueCore.js} +314 -246
- package/dist/coValueCore/coValueCore.js.map +1 -0
- package/dist/coValueCore/verifiedState.d.ts +65 -0
- package/dist/coValueCore/verifiedState.d.ts.map +1 -0
- package/dist/coValueCore/verifiedState.js +210 -0
- package/dist/coValueCore/verifiedState.js.map +1 -0
- package/dist/coValues/account.d.ts +8 -10
- package/dist/coValues/account.d.ts.map +1 -1
- package/dist/coValues/account.js +12 -13
- package/dist/coValues/account.js.map +1 -1
- package/dist/coValues/coList.d.ts +10 -6
- package/dist/coValues/coList.d.ts.map +1 -1
- package/dist/coValues/coList.js +41 -15
- package/dist/coValues/coList.js.map +1 -1
- package/dist/coValues/coMap.d.ts +4 -3
- package/dist/coValues/coMap.d.ts.map +1 -1
- package/dist/coValues/coMap.js +5 -3
- package/dist/coValues/coMap.js.map +1 -1
- package/dist/coValues/coPlainText.d.ts +2 -2
- package/dist/coValues/coPlainText.d.ts.map +1 -1
- package/dist/coValues/coPlainText.js +5 -5
- package/dist/coValues/coPlainText.js.map +1 -1
- package/dist/coValues/coStream.d.ts +5 -4
- package/dist/coValues/coStream.d.ts.map +1 -1
- package/dist/coValues/coStream.js +5 -3
- package/dist/coValues/coStream.js.map +1 -1
- package/dist/coValues/group.d.ts +7 -2
- package/dist/coValues/group.d.ts.map +1 -1
- package/dist/coValues/group.js +29 -26
- package/dist/coValues/group.js.map +1 -1
- package/dist/coreToCoValue.d.ts +4 -3
- package/dist/coreToCoValue.d.ts.map +1 -1
- package/dist/coreToCoValue.js +10 -14
- package/dist/coreToCoValue.js.map +1 -1
- package/dist/exports.d.ts +6 -5
- package/dist/exports.d.ts.map +1 -1
- package/dist/exports.js +3 -4
- package/dist/exports.js.map +1 -1
- package/dist/localNode.d.ts +30 -24
- package/dist/localNode.d.ts.map +1 -1
- package/dist/localNode.js +153 -177
- package/dist/localNode.js.map +1 -1
- package/dist/permissions.d.ts +2 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +15 -11
- package/dist/permissions.js.map +1 -1
- package/dist/priority.d.ts +1 -1
- package/dist/priority.d.ts.map +1 -1
- package/dist/sync.d.ts +2 -2
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +86 -55
- package/dist/sync.js.map +1 -1
- package/dist/tests/coList.test.js +133 -13
- package/dist/tests/coList.test.js.map +1 -1
- package/dist/tests/coMap.test.js +43 -14
- package/dist/tests/coMap.test.js.map +1 -1
- package/dist/tests/coPlainText.test.js +9 -10
- package/dist/tests/coPlainText.test.js.map +1 -1
- package/dist/tests/coStream.test.js +49 -18
- package/dist/tests/coStream.test.js.map +1 -1
- package/dist/tests/coValueCore.test.js +22 -28
- package/dist/tests/coValueCore.test.js.map +1 -1
- package/dist/tests/coValueCoreLoadingState.test.d.ts +2 -0
- package/dist/tests/coValueCoreLoadingState.test.d.ts.map +1 -0
- package/dist/tests/coValueCoreLoadingState.test.js +227 -0
- package/dist/tests/coValueCoreLoadingState.test.js.map +1 -0
- package/dist/tests/group.test.js +42 -43
- package/dist/tests/group.test.js.map +1 -1
- package/dist/tests/messagesTestUtils.d.ts +2 -2
- package/dist/tests/messagesTestUtils.d.ts.map +1 -1
- package/dist/tests/messagesTestUtils.js +1 -1
- package/dist/tests/messagesTestUtils.js.map +1 -1
- package/dist/tests/permissions.test.js +224 -292
- package/dist/tests/permissions.test.js.map +1 -1
- package/dist/tests/priority.test.js +13 -14
- package/dist/tests/priority.test.js.map +1 -1
- package/dist/tests/sync.auth.test.d.ts +2 -0
- package/dist/tests/sync.auth.test.d.ts.map +1 -0
- package/dist/tests/sync.auth.test.js +141 -0
- package/dist/tests/sync.auth.test.js.map +1 -0
- package/dist/tests/sync.load.test.js +60 -2
- package/dist/tests/sync.load.test.js.map +1 -1
- package/dist/tests/sync.mesh.test.js +70 -10
- package/dist/tests/sync.mesh.test.js.map +1 -1
- package/dist/tests/sync.peerReconciliation.test.js +19 -19
- package/dist/tests/sync.peerReconciliation.test.js.map +1 -1
- package/dist/tests/sync.storage.test.js +20 -13
- package/dist/tests/sync.storage.test.js.map +1 -1
- package/dist/tests/sync.test.js +32 -39
- package/dist/tests/sync.test.js.map +1 -1
- package/dist/tests/sync.upload.test.js +126 -37
- package/dist/tests/sync.upload.test.js.map +1 -1
- package/dist/tests/testUtils.d.ts +24 -15
- package/dist/tests/testUtils.d.ts.map +1 -1
- package/dist/tests/testUtils.js +88 -61
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/typeUtils/expectGroup.js +1 -1
- package/dist/typeUtils/expectGroup.js.map +1 -1
- package/package.json +1 -1
- package/src/PeerState.ts +11 -0
- package/src/SyncStateManager.ts +2 -3
- package/src/coValue.ts +14 -8
- package/src/{coValueCore.ts → coValueCore/coValueCore.ts} +470 -413
- package/src/coValueCore/verifiedState.ts +376 -0
- package/src/coValues/account.ts +20 -25
- package/src/coValues/coList.ts +63 -29
- package/src/coValues/coMap.ts +13 -6
- package/src/coValues/coPlainText.ts +10 -8
- package/src/coValues/coStream.ts +12 -7
- package/src/coValues/group.ts +50 -28
- package/src/coreToCoValue.ts +14 -15
- package/src/exports.ts +9 -7
- package/src/localNode.ts +248 -283
- package/src/permissions.ts +18 -12
- package/src/priority.ts +1 -1
- package/src/sync.ts +96 -63
- package/src/tests/coList.test.ts +200 -12
- package/src/tests/coMap.test.ts +65 -14
- package/src/tests/coPlainText.test.ts +12 -9
- package/src/tests/coStream.test.ts +80 -17
- package/src/tests/coValueCore.test.ts +30 -27
- package/src/tests/coValueCoreLoadingState.test.ts +337 -0
- package/src/tests/group.test.ts +44 -68
- package/src/tests/messagesTestUtils.ts +3 -8
- package/src/tests/permissions.test.ts +283 -449
- package/src/tests/priority.test.ts +17 -13
- package/src/tests/sync.auth.test.ts +188 -0
- package/src/tests/sync.load.test.ts +79 -2
- package/src/tests/sync.mesh.test.ts +89 -9
- package/src/tests/sync.peerReconciliation.test.ts +25 -25
- package/src/tests/sync.storage.test.ts +20 -13
- package/src/tests/sync.test.ts +43 -43
- package/src/tests/sync.upload.test.ts +157 -37
- package/src/tests/testUtils.ts +120 -74
- package/src/typeUtils/expectGroup.ts +1 -1
- package/dist/CoValuesStore.d.ts +0 -14
- package/dist/CoValuesStore.d.ts.map +0 -1
- package/dist/CoValuesStore.js +0 -32
- package/dist/CoValuesStore.js.map +0 -1
- package/dist/coValueCore.d.ts +0 -141
- package/dist/coValueCore.d.ts.map +0 -1
- package/dist/coValueCore.js.map +0 -1
- package/dist/coValueState.d.ts +0 -34
- package/dist/coValueState.d.ts.map +0 -1
- package/dist/coValueState.js +0 -228
- package/dist/coValueState.js.map +0 -1
- package/dist/tests/coValueState.test.d.ts +0 -2
- package/dist/tests/coValueState.test.d.ts.map +0 -1
- package/dist/tests/coValueState.test.js +0 -344
- package/dist/tests/coValueState.test.js.map +0 -1
- package/src/CoValuesStore.ts +0 -41
- package/src/coValueState.ts +0 -300
- package/src/tests/coValueState.test.ts +0 -525
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, test } from "vitest";
|
|
2
|
-
import { expectMap } from "../coValue";
|
|
2
|
+
import { expectList, expectMap } from "../coValue";
|
|
3
|
+
import { WasmCrypto } from "../crypto/WasmCrypto";
|
|
3
4
|
import { SyncMessagesLog, loadCoValueOrFail, setupTestNode, waitFor, } from "./testUtils";
|
|
5
|
+
const Crypto = await WasmCrypto.create();
|
|
4
6
|
let jazzCloud = setupTestNode({ isSyncServer: true });
|
|
5
7
|
beforeEach(async () => {
|
|
6
8
|
SyncMessagesLog.clear();
|
|
@@ -57,6 +59,35 @@ describe("client to server upload", () => {
|
|
|
57
59
|
]
|
|
58
60
|
`);
|
|
59
61
|
});
|
|
62
|
+
test("coValue uploading with a missing dependency", async () => {
|
|
63
|
+
const client = setupTestNode({
|
|
64
|
+
connected: true,
|
|
65
|
+
});
|
|
66
|
+
const group = client.node.createGroup();
|
|
67
|
+
const map = group.createMap();
|
|
68
|
+
map.set("hello", "world", "trusting");
|
|
69
|
+
await group.core.waitForSync();
|
|
70
|
+
await map.core.waitForSync();
|
|
71
|
+
map.set("hello", "new world", "trusting");
|
|
72
|
+
// Testing that with a missing group the sync will not fail
|
|
73
|
+
client.node.internalDeleteCoValue(group.id);
|
|
74
|
+
await map.core.waitForSync();
|
|
75
|
+
const mapOnServer = await loadCoValueOrFail(jazzCloud.node, map.id);
|
|
76
|
+
expect(mapOnServer.get("hello")).toEqual("new world");
|
|
77
|
+
expect(SyncMessagesLog.getMessages({
|
|
78
|
+
Group: group.core,
|
|
79
|
+
Map: map.core,
|
|
80
|
+
})).toMatchInlineSnapshot(`
|
|
81
|
+
[
|
|
82
|
+
"client -> server | CONTENT Group header: true new: After: 0 New: 3",
|
|
83
|
+
"server -> client | KNOWN Group sessions: header/3",
|
|
84
|
+
"client -> server | CONTENT Map header: true new: After: 0 New: 1",
|
|
85
|
+
"server -> client | KNOWN Map sessions: header/1",
|
|
86
|
+
"client -> server | CONTENT Map header: false new: After: 1 New: 1",
|
|
87
|
+
"server -> client | KNOWN Map sessions: header/2",
|
|
88
|
+
]
|
|
89
|
+
`);
|
|
90
|
+
});
|
|
60
91
|
test("wrong optimistic known state should be corrected", async () => {
|
|
61
92
|
const client = setupTestNode({
|
|
62
93
|
connected: true,
|
|
@@ -70,7 +101,7 @@ describe("client to server upload", () => {
|
|
|
70
101
|
// Load the coValue on the client
|
|
71
102
|
await map.core.waitForSync();
|
|
72
103
|
// Forcefully delete the coValue from the client (simulating some data loss)
|
|
73
|
-
jazzCloud.node.
|
|
104
|
+
jazzCloud.node.internalDeleteCoValue(map.id);
|
|
74
105
|
map.set("fromClient", "updated", "trusting");
|
|
75
106
|
await waitFor(() => {
|
|
76
107
|
const coValue = expectMap(jazzCloud.node.expectCoValueLoaded(map.id).getCurrentContent());
|
|
@@ -92,11 +123,68 @@ describe("client to server upload", () => {
|
|
|
92
123
|
]
|
|
93
124
|
`);
|
|
94
125
|
});
|
|
126
|
+
test("syncing changes between two clients with a sync server in the middle", async () => {
|
|
127
|
+
const client = setupTestNode({
|
|
128
|
+
connected: true,
|
|
129
|
+
});
|
|
130
|
+
const otherClient = setupTestNode({});
|
|
131
|
+
const otherClientConnection = otherClient.connectToSyncServer({
|
|
132
|
+
ourName: "otherClient",
|
|
133
|
+
});
|
|
134
|
+
const coValue = client.node.createCoValue({
|
|
135
|
+
type: "colist",
|
|
136
|
+
ruleset: { type: "unsafeAllowAll" },
|
|
137
|
+
meta: null,
|
|
138
|
+
...Crypto.createdNowUnique(),
|
|
139
|
+
});
|
|
140
|
+
const list = expectList(coValue.getCurrentContent());
|
|
141
|
+
list.append(1, undefined, "trusting");
|
|
142
|
+
const listOnOtherClient = await loadCoValueOrFail(otherClient.node, list.id);
|
|
143
|
+
otherClientConnection.peerState.gracefulShutdown();
|
|
144
|
+
listOnOtherClient.append(1, undefined, "trusting");
|
|
145
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
146
|
+
list.append(1, undefined, "trusting");
|
|
147
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
148
|
+
listOnOtherClient.append(1, undefined, "trusting");
|
|
149
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
150
|
+
list.append(1, undefined, "trusting");
|
|
151
|
+
otherClient.connectToSyncServer({
|
|
152
|
+
ourName: "otherClient",
|
|
153
|
+
});
|
|
154
|
+
await waitFor(() => {
|
|
155
|
+
expect(list.toJSON()).toEqual([1, 1, 1, 1, 1]);
|
|
156
|
+
});
|
|
157
|
+
expect(SyncMessagesLog.getMessages({
|
|
158
|
+
Colist: coValue,
|
|
159
|
+
})).toMatchInlineSnapshot(`
|
|
160
|
+
[
|
|
161
|
+
"otherClient -> server | LOAD Colist sessions: empty",
|
|
162
|
+
"client -> server | CONTENT Colist header: true new: After: 0 New: 1",
|
|
163
|
+
"server -> otherClient | KNOWN Colist sessions: empty",
|
|
164
|
+
"server -> client | KNOWN Colist sessions: header/1",
|
|
165
|
+
"server -> otherClient | CONTENT Colist header: true new: After: 0 New: 1",
|
|
166
|
+
"otherClient -> server | KNOWN Colist sessions: header/1",
|
|
167
|
+
"client -> server | CONTENT Colist header: false new: After: 1 New: 1",
|
|
168
|
+
"server -> client | KNOWN Colist sessions: header/2",
|
|
169
|
+
"otherClient -> server | LOAD Colist sessions: header/3",
|
|
170
|
+
"client -> server | CONTENT Colist header: false new: After: 2 New: 1",
|
|
171
|
+
"server -> otherClient | CONTENT Colist header: false new: After: 1 New: 1",
|
|
172
|
+
"server -> client | KNOWN Colist sessions: header/3",
|
|
173
|
+
"otherClient -> server | KNOWN Colist sessions: header/4",
|
|
174
|
+
"server -> otherClient | CONTENT Colist header: false new: After: 2 New: 1",
|
|
175
|
+
"otherClient -> server | CONTENT Colist header: false new: After: 0 New: 2",
|
|
176
|
+
"server -> otherClient | KNOWN Colist sessions: header/5",
|
|
177
|
+
"server -> client | CONTENT Colist header: false new: After: 0 New: 2",
|
|
178
|
+
"otherClient -> server | KNOWN Colist sessions: header/5",
|
|
179
|
+
"client -> server | KNOWN Colist sessions: header/5",
|
|
180
|
+
]
|
|
181
|
+
`);
|
|
182
|
+
});
|
|
95
183
|
test("large coValue upload streaming", async () => {
|
|
96
184
|
const client = setupTestNode({
|
|
97
185
|
connected: true,
|
|
98
186
|
});
|
|
99
|
-
const group =
|
|
187
|
+
const group = jazzCloud.node.createGroup();
|
|
100
188
|
group.addMember("everyone", "writer");
|
|
101
189
|
const largeMap = group.createMap();
|
|
102
190
|
// Generate a large amount of data (about 100MB)
|
|
@@ -115,40 +203,41 @@ describe("client to server upload", () => {
|
|
|
115
203
|
Map: largeMap.core,
|
|
116
204
|
})).toMatchInlineSnapshot(`
|
|
117
205
|
[
|
|
118
|
-
"client -> server |
|
|
119
|
-
"server -> client |
|
|
120
|
-
"client -> server |
|
|
121
|
-
"server -> client |
|
|
122
|
-
"client -> server |
|
|
123
|
-
"server -> client |
|
|
124
|
-
"client -> server |
|
|
125
|
-
"server -> client |
|
|
126
|
-
"client -> server |
|
|
127
|
-
"server -> client |
|
|
128
|
-
"client -> server |
|
|
129
|
-
"server -> client |
|
|
130
|
-
"client -> server |
|
|
131
|
-
"server -> client |
|
|
132
|
-
"client -> server |
|
|
133
|
-
"server -> client |
|
|
134
|
-
"client -> server |
|
|
135
|
-
"server -> client |
|
|
136
|
-
"client -> server |
|
|
137
|
-
"server -> client |
|
|
138
|
-
"client -> server |
|
|
139
|
-
"server -> client |
|
|
140
|
-
"client -> server |
|
|
141
|
-
"server -> client |
|
|
142
|
-
"client -> server |
|
|
143
|
-
"server -> client |
|
|
144
|
-
"client -> server |
|
|
145
|
-
"server -> client |
|
|
146
|
-
"client -> server |
|
|
147
|
-
"server -> client |
|
|
148
|
-
"client -> server |
|
|
149
|
-
"server -> client |
|
|
150
|
-
"client -> server |
|
|
151
|
-
"server -> client |
|
|
206
|
+
"client -> server | LOAD Map sessions: empty",
|
|
207
|
+
"server -> client | CONTENT Group header: true new: After: 0 New: 5",
|
|
208
|
+
"client -> server | KNOWN Group sessions: header/5",
|
|
209
|
+
"server -> client | CONTENT Map header: true new: ",
|
|
210
|
+
"client -> server | KNOWN Map sessions: header/0",
|
|
211
|
+
"server -> client | CONTENT Map header: false new: After: 0 New: 73",
|
|
212
|
+
"client -> server | KNOWN Map sessions: header/73",
|
|
213
|
+
"server -> client | CONTENT Map header: false new: After: 73 New: 73",
|
|
214
|
+
"client -> server | KNOWN Map sessions: header/146",
|
|
215
|
+
"server -> client | CONTENT Map header: false new: After: 146 New: 73",
|
|
216
|
+
"client -> server | KNOWN Map sessions: header/219",
|
|
217
|
+
"server -> client | CONTENT Map header: false new: After: 219 New: 73",
|
|
218
|
+
"client -> server | KNOWN Map sessions: header/292",
|
|
219
|
+
"server -> client | CONTENT Map header: false new: After: 292 New: 73",
|
|
220
|
+
"client -> server | KNOWN Map sessions: header/365",
|
|
221
|
+
"server -> client | CONTENT Map header: false new: After: 365 New: 73",
|
|
222
|
+
"client -> server | KNOWN Map sessions: header/438",
|
|
223
|
+
"server -> client | CONTENT Map header: false new: After: 438 New: 73",
|
|
224
|
+
"client -> server | KNOWN Map sessions: header/511",
|
|
225
|
+
"server -> client | CONTENT Map header: false new: After: 511 New: 73",
|
|
226
|
+
"client -> server | KNOWN Map sessions: header/584",
|
|
227
|
+
"server -> client | CONTENT Map header: false new: After: 584 New: 73",
|
|
228
|
+
"client -> server | KNOWN Map sessions: header/657",
|
|
229
|
+
"server -> client | CONTENT Map header: false new: After: 657 New: 73",
|
|
230
|
+
"client -> server | KNOWN Map sessions: header/730",
|
|
231
|
+
"server -> client | CONTENT Map header: false new: After: 730 New: 73",
|
|
232
|
+
"client -> server | KNOWN Map sessions: header/803",
|
|
233
|
+
"server -> client | CONTENT Map header: false new: After: 803 New: 73",
|
|
234
|
+
"client -> server | KNOWN Map sessions: header/876",
|
|
235
|
+
"server -> client | CONTENT Map header: false new: After: 876 New: 73",
|
|
236
|
+
"client -> server | KNOWN Map sessions: header/949",
|
|
237
|
+
"server -> client | CONTENT Map header: false new: After: 949 New: 73",
|
|
238
|
+
"client -> server | KNOWN Map sessions: header/1022",
|
|
239
|
+
"server -> client | CONTENT Map header: false new: After: 1022 New: 2",
|
|
240
|
+
"client -> server | KNOWN Map sessions: header/1024",
|
|
152
241
|
]
|
|
153
242
|
`);
|
|
154
243
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.upload.test.js","sourceRoot":"","sources":["../../src/tests/sync.upload.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.upload.test.js","sourceRoot":"","sources":["../../src/tests/sync.upload.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
import { MetricReader } from "@opentelemetry/sdk-metrics";
|
|
2
|
-
import { ControlledAgent } from "../coValues/account.js";
|
|
3
|
-
import type { CoID, CoValueCore, RawCoValue } from "../exports.js";
|
|
2
|
+
import { ControlledAccount, ControlledAgent } from "../coValues/account.js";
|
|
3
|
+
import type { AgentSecret, CoID, CoValueCore, RawCoValue } from "../exports.js";
|
|
4
4
|
import type { SessionID } from "../ids.js";
|
|
5
5
|
import { LocalNode } from "../localNode.js";
|
|
6
6
|
import type { Peer, SyncMessage } from "../sync.js";
|
|
7
|
-
export declare function
|
|
8
|
-
|
|
9
|
-
SessionID
|
|
10
|
-
];
|
|
7
|
+
export declare function randomAgentAndSessionID(): [ControlledAgent, SessionID];
|
|
8
|
+
export declare function nodeWithRandomAgentAndSessionID(): LocalNode;
|
|
11
9
|
export declare function createTestNode(): LocalNode;
|
|
12
10
|
export declare function createTwoConnectedNodes(node1Role: Peer["role"], node2Role: Peer["role"]): Promise<{
|
|
13
11
|
node1: {
|
|
14
12
|
node: LocalNode;
|
|
15
13
|
accountID: import("../exports.js").RawAccountID;
|
|
16
|
-
accountSecret:
|
|
14
|
+
accountSecret: AgentSecret;
|
|
17
15
|
sessionID: SessionID;
|
|
18
16
|
};
|
|
19
17
|
node2: {
|
|
20
18
|
node: LocalNode;
|
|
21
19
|
accountID: import("../exports.js").RawAccountID;
|
|
22
|
-
accountSecret:
|
|
20
|
+
accountSecret: AgentSecret;
|
|
23
21
|
sessionID: SessionID;
|
|
24
22
|
};
|
|
25
23
|
node1ToNode2Peer: Peer;
|
|
@@ -29,19 +27,19 @@ export declare function createThreeConnectedNodes(node1Role: Peer["role"], node2
|
|
|
29
27
|
node1: {
|
|
30
28
|
node: LocalNode;
|
|
31
29
|
accountID: import("../exports.js").RawAccountID;
|
|
32
|
-
accountSecret:
|
|
30
|
+
accountSecret: AgentSecret;
|
|
33
31
|
sessionID: SessionID;
|
|
34
32
|
};
|
|
35
33
|
node2: {
|
|
36
34
|
node: LocalNode;
|
|
37
35
|
accountID: import("../exports.js").RawAccountID;
|
|
38
|
-
accountSecret:
|
|
36
|
+
accountSecret: AgentSecret;
|
|
39
37
|
sessionID: SessionID;
|
|
40
38
|
};
|
|
41
39
|
node3: {
|
|
42
40
|
node: LocalNode;
|
|
43
41
|
accountID: import("../exports.js").RawAccountID;
|
|
44
|
-
accountSecret:
|
|
42
|
+
accountSecret: AgentSecret;
|
|
45
43
|
sessionID: SessionID;
|
|
46
44
|
};
|
|
47
45
|
node1ToNode2Peer: Peer;
|
|
@@ -54,14 +52,14 @@ export declare function createThreeConnectedNodes(node1Role: Peer["role"], node2
|
|
|
54
52
|
export declare function connectTwoPeers(a: LocalNode, b: LocalNode, aRole: "client" | "server", bRole: "client" | "server"): void;
|
|
55
53
|
export declare function newGroup(): {
|
|
56
54
|
node: LocalNode;
|
|
57
|
-
groupCore:
|
|
55
|
+
groupCore: import("../coValueCore/coValueCore.js").AvailableCoValueCore;
|
|
58
56
|
admin: ControlledAgent;
|
|
59
57
|
};
|
|
60
58
|
export declare function groupWithTwoAdmins(): {
|
|
61
59
|
group: import("../exports.js").RawGroup<import("../jsonValue.js").JsonObject | null>;
|
|
62
|
-
groupCore:
|
|
60
|
+
groupCore: import("../coValueCore/coValueCore.js").AvailableCoValueCore;
|
|
63
61
|
admin: ControlledAgent;
|
|
64
|
-
otherAdmin:
|
|
62
|
+
otherAdmin: ControlledAccount;
|
|
65
63
|
node: LocalNode;
|
|
66
64
|
};
|
|
67
65
|
export declare function newGroupHighLevel(): {
|
|
@@ -73,7 +71,7 @@ export declare function groupWithTwoAdminsHighLevel(): {
|
|
|
73
71
|
admin: ControlledAgent;
|
|
74
72
|
node: LocalNode;
|
|
75
73
|
group: import("../exports.js").RawGroup<import("../jsonValue.js").JsonObject | null>;
|
|
76
|
-
otherAdmin:
|
|
74
|
+
otherAdmin: ControlledAccount;
|
|
77
75
|
};
|
|
78
76
|
export declare function shouldNotResolve<T>(promise: Promise<T>, ops: {
|
|
79
77
|
timeout: number;
|
|
@@ -115,6 +113,16 @@ export declare class SyncMessagesLog {
|
|
|
115
113
|
[key: string]: CoValueCore;
|
|
116
114
|
}): void;
|
|
117
115
|
}
|
|
116
|
+
export declare function getSyncServerConnectedPeer(opts: {
|
|
117
|
+
syncServerName?: string;
|
|
118
|
+
ourName?: string;
|
|
119
|
+
syncServer?: LocalNode;
|
|
120
|
+
peerId: string;
|
|
121
|
+
}): {
|
|
122
|
+
peer: Peer;
|
|
123
|
+
peerStateOnServer: import("../PeerState.js").PeerState;
|
|
124
|
+
peerOnServer: Peer;
|
|
125
|
+
};
|
|
118
126
|
export declare function setupTestNode(opts?: {
|
|
119
127
|
isSyncServer?: boolean;
|
|
120
128
|
connected?: boolean;
|
|
@@ -182,5 +190,6 @@ export declare function connectedPeersWithMessagesTracking(opts: {
|
|
|
182
190
|
peer1: Peer;
|
|
183
191
|
peer2: Peer;
|
|
184
192
|
};
|
|
193
|
+
export declare function createAccountInNode(node: LocalNode): ControlledAccount;
|
|
185
194
|
export {};
|
|
186
195
|
//# sourceMappingURL=testUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,YAAY,EACb,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"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"}
|
package/dist/tests/testUtils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { metrics } from "@opentelemetry/api";
|
|
2
2
|
import { AggregationTemporality, InMemoryMetricExporter, MeterProvider, MetricReader, } from "@opentelemetry/sdk-metrics";
|
|
3
3
|
import { expect, onTestFinished, vi } from "vitest";
|
|
4
|
-
import { ControlledAgent } from "../coValues/account.js";
|
|
4
|
+
import { ControlledAccount, ControlledAgent } from "../coValues/account.js";
|
|
5
5
|
import { WasmCrypto } from "../crypto/WasmCrypto.js";
|
|
6
6
|
import { LocalNode } from "../localNode.js";
|
|
7
7
|
import { connectedPeers } from "../streamUtils.js";
|
|
@@ -11,14 +11,18 @@ const Crypto = await WasmCrypto.create();
|
|
|
11
11
|
const syncServer = {
|
|
12
12
|
current: undefined,
|
|
13
13
|
};
|
|
14
|
-
export function
|
|
14
|
+
export function randomAgentAndSessionID() {
|
|
15
15
|
const agentSecret = Crypto.newRandomAgentSecret();
|
|
16
16
|
const sessionID = Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret));
|
|
17
17
|
return [new ControlledAgent(agentSecret, Crypto), sessionID];
|
|
18
18
|
}
|
|
19
|
+
export function nodeWithRandomAgentAndSessionID() {
|
|
20
|
+
const [agent, session] = randomAgentAndSessionID();
|
|
21
|
+
return new LocalNode(agent.agentSecret, session, Crypto);
|
|
22
|
+
}
|
|
19
23
|
export function createTestNode() {
|
|
20
|
-
const [admin, session] =
|
|
21
|
-
return new LocalNode(admin, session, Crypto);
|
|
24
|
+
const [admin, session] = randomAgentAndSessionID();
|
|
25
|
+
return new LocalNode(admin.agentSecret, session, Crypto);
|
|
22
26
|
}
|
|
23
27
|
export async function createTwoConnectedNodes(node1Role, node2Role) {
|
|
24
28
|
// Connect nodes initially
|
|
@@ -84,7 +88,7 @@ export async function createThreeConnectedNodes(node1Role, node2Role, node3Role)
|
|
|
84
88
|
};
|
|
85
89
|
}
|
|
86
90
|
export function connectTwoPeers(a, b, aRole, bRole) {
|
|
87
|
-
const [aAsPeer, bAsPeer] = connectedPeers("peer:" + a.
|
|
91
|
+
const [aAsPeer, bAsPeer] = connectedPeers("peer:" + a.getCurrentAgent().id, "peer:" + b.getCurrentAgent().id, {
|
|
88
92
|
peer1role: aRole,
|
|
89
93
|
peer2role: bRole,
|
|
90
94
|
});
|
|
@@ -92,22 +96,22 @@ export function connectTwoPeers(a, b, aRole, bRole) {
|
|
|
92
96
|
b.syncManager.addPeer(aAsPeer);
|
|
93
97
|
}
|
|
94
98
|
export function newGroup() {
|
|
95
|
-
const [admin, sessionID] =
|
|
96
|
-
const node = new LocalNode(admin, sessionID, Crypto);
|
|
99
|
+
const [admin, sessionID] = randomAgentAndSessionID();
|
|
100
|
+
const node = new LocalNode(admin.agentSecret, sessionID, Crypto);
|
|
97
101
|
const groupCore = node.createCoValue({
|
|
98
102
|
type: "comap",
|
|
99
|
-
ruleset: { type: "group", initialAdmin:
|
|
103
|
+
ruleset: { type: "group", initialAdmin: node.getCurrentAgent().id },
|
|
100
104
|
meta: null,
|
|
101
105
|
...Crypto.createdNowUnique(),
|
|
102
106
|
});
|
|
103
107
|
const group = expectGroup(groupCore.getCurrentContent());
|
|
104
|
-
group.set(
|
|
105
|
-
expect(group.get(
|
|
108
|
+
group.set(node.getCurrentAgent().id, "admin", "trusting");
|
|
109
|
+
expect(group.get(node.getCurrentAgent().id)).toEqual("admin");
|
|
106
110
|
return { node, groupCore, admin };
|
|
107
111
|
}
|
|
108
112
|
export function groupWithTwoAdmins() {
|
|
109
113
|
const { groupCore, admin, node } = newGroup();
|
|
110
|
-
const otherAdmin = node
|
|
114
|
+
const otherAdmin = createAccountInNode(node);
|
|
111
115
|
const group = expectGroup(groupCore.getCurrentContent());
|
|
112
116
|
group.set(otherAdmin.id, "admin", "trusting");
|
|
113
117
|
expect(group.get(otherAdmin.id)).toEqual("admin");
|
|
@@ -118,8 +122,8 @@ export function groupWithTwoAdmins() {
|
|
|
118
122
|
return { group, groupCore, admin, otherAdmin, node };
|
|
119
123
|
}
|
|
120
124
|
export function newGroupHighLevel() {
|
|
121
|
-
const [admin, sessionID] =
|
|
122
|
-
const node = new LocalNode(admin, sessionID, Crypto);
|
|
125
|
+
const [admin, sessionID] = randomAgentAndSessionID();
|
|
126
|
+
const node = new LocalNode(admin.agentSecret, sessionID, Crypto);
|
|
123
127
|
const group = node.createGroup();
|
|
124
128
|
onTestFinished(() => {
|
|
125
129
|
node.gracefulShutdown();
|
|
@@ -128,7 +132,7 @@ export function newGroupHighLevel() {
|
|
|
128
132
|
}
|
|
129
133
|
export function groupWithTwoAdminsHighLevel() {
|
|
130
134
|
const { admin, node, group } = newGroupHighLevel();
|
|
131
|
-
const otherAdmin = node
|
|
135
|
+
const otherAdmin = createAccountInNode(node);
|
|
132
136
|
group.addMember(otherAdmin, "admin");
|
|
133
137
|
return { admin, node, group, otherAdmin };
|
|
134
138
|
}
|
|
@@ -267,42 +271,63 @@ export class SyncMessagesLog {
|
|
|
267
271
|
}
|
|
268
272
|
}
|
|
269
273
|
SyncMessagesLog.messages = [];
|
|
274
|
+
export function getSyncServerConnectedPeer(opts) {
|
|
275
|
+
const currentSyncServer = opts?.syncServer ?? syncServer.current;
|
|
276
|
+
if (!currentSyncServer) {
|
|
277
|
+
throw new Error("Sync server not initialized");
|
|
278
|
+
}
|
|
279
|
+
if (currentSyncServer.getCurrentAgent().id === opts.peerId) {
|
|
280
|
+
throw new Error("Cannot connect to self");
|
|
281
|
+
}
|
|
282
|
+
const { peer1, peer2 } = connectedPeersWithMessagesTracking({
|
|
283
|
+
peer1: {
|
|
284
|
+
id: currentSyncServer.getCurrentAgent().id,
|
|
285
|
+
role: "server",
|
|
286
|
+
name: opts.syncServerName,
|
|
287
|
+
},
|
|
288
|
+
peer2: {
|
|
289
|
+
id: opts.peerId,
|
|
290
|
+
role: "client",
|
|
291
|
+
name: opts.ourName,
|
|
292
|
+
},
|
|
293
|
+
});
|
|
294
|
+
currentSyncServer.syncManager.addPeer(peer2);
|
|
295
|
+
return {
|
|
296
|
+
peer: peer1,
|
|
297
|
+
peerStateOnServer: currentSyncServer.syncManager.peers[peer2.id],
|
|
298
|
+
peerOnServer: peer2,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
270
301
|
export function setupTestNode(opts = {}) {
|
|
271
|
-
const [admin, session] =
|
|
272
|
-
let node = new LocalNode(admin, session, Crypto);
|
|
302
|
+
const [admin, session] = randomAgentAndSessionID();
|
|
303
|
+
let node = new LocalNode(admin.agentSecret, session, Crypto);
|
|
273
304
|
if (opts.isSyncServer) {
|
|
274
305
|
syncServer.current = node;
|
|
275
306
|
}
|
|
276
307
|
function connectToSyncServer(opts) {
|
|
277
|
-
const
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
throw new Error("Cannot connect to self");
|
|
283
|
-
}
|
|
284
|
-
const { peer1, peer2 } = connectedPeersWithMessagesTracking({
|
|
285
|
-
peer1: {
|
|
286
|
-
id: currentSyncServer.account.id,
|
|
287
|
-
role: "server",
|
|
288
|
-
name: opts?.syncServerName,
|
|
289
|
-
},
|
|
290
|
-
peer2: { id: node.account.id, role: "client", name: opts?.ourName },
|
|
308
|
+
const { peer, peerStateOnServer, peerOnServer } = getSyncServerConnectedPeer({
|
|
309
|
+
peerId: node.getCurrentAgent().id,
|
|
310
|
+
syncServerName: opts?.syncServerName,
|
|
311
|
+
ourName: opts?.ourName,
|
|
312
|
+
syncServer: opts?.syncServer,
|
|
291
313
|
});
|
|
292
|
-
node.syncManager.addPeer(
|
|
293
|
-
currentSyncServer.syncManager.addPeer(peer2);
|
|
314
|
+
node.syncManager.addPeer(peer);
|
|
294
315
|
return {
|
|
295
|
-
peerState: node.syncManager.peers[
|
|
296
|
-
peer:
|
|
297
|
-
peerStateOnServer:
|
|
298
|
-
peerOnServer:
|
|
316
|
+
peerState: node.syncManager.peers[peer.id],
|
|
317
|
+
peer: peer,
|
|
318
|
+
peerStateOnServer: peerStateOnServer,
|
|
319
|
+
peerOnServer: peerOnServer,
|
|
299
320
|
};
|
|
300
321
|
}
|
|
301
322
|
function addStoragePeer(opts = {}) {
|
|
302
323
|
const storage = createTestNode();
|
|
303
324
|
const { peer1, peer2 } = connectedPeersWithMessagesTracking({
|
|
304
|
-
peer1: { id: storage.
|
|
305
|
-
peer2: {
|
|
325
|
+
peer1: { id: storage.getCurrentAgent().id, role: "storage" },
|
|
326
|
+
peer2: {
|
|
327
|
+
id: node.getCurrentAgent().id,
|
|
328
|
+
role: "client",
|
|
329
|
+
name: opts.ourName,
|
|
330
|
+
},
|
|
306
331
|
});
|
|
307
332
|
peer1.priority = 100;
|
|
308
333
|
node.syncManager.addPeer(peer1);
|
|
@@ -321,7 +346,7 @@ export function setupTestNode(opts = {}) {
|
|
|
321
346
|
addStoragePeer,
|
|
322
347
|
restart: () => {
|
|
323
348
|
node.gracefulShutdown();
|
|
324
|
-
ctx.node = node = new LocalNode(admin, session, Crypto);
|
|
349
|
+
ctx.node = node = new LocalNode(admin.agentSecret, session, Crypto);
|
|
325
350
|
if (opts.isSyncServer) {
|
|
326
351
|
syncServer.current = node;
|
|
327
352
|
}
|
|
@@ -340,39 +365,33 @@ export async function setupTestAccount(opts = {}) {
|
|
|
340
365
|
syncServer.current = ctx.node;
|
|
341
366
|
}
|
|
342
367
|
function connectToSyncServer(opts) {
|
|
343
|
-
const
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
throw new Error("Cannot connect to self");
|
|
349
|
-
}
|
|
350
|
-
const { peer1, peer2 } = connectedPeersWithMessagesTracking({
|
|
351
|
-
peer1: {
|
|
352
|
-
id: currentSyncServer.account.id,
|
|
353
|
-
role: "server",
|
|
354
|
-
name: opts?.syncServerName,
|
|
355
|
-
},
|
|
356
|
-
peer2: { id: ctx.node.account.id, role: "client", name: opts?.ourName },
|
|
368
|
+
const { peer, peerStateOnServer, peerOnServer } = getSyncServerConnectedPeer({
|
|
369
|
+
peerId: ctx.node.getCurrentAgent().id,
|
|
370
|
+
syncServerName: opts?.syncServerName,
|
|
371
|
+
ourName: opts?.ourName,
|
|
372
|
+
syncServer: opts?.syncServer,
|
|
357
373
|
});
|
|
358
|
-
ctx.node.syncManager.addPeer(
|
|
359
|
-
currentSyncServer.syncManager.addPeer(peer2);
|
|
374
|
+
ctx.node.syncManager.addPeer(peer);
|
|
360
375
|
function getCurrentPeerState() {
|
|
361
|
-
return ctx.node.syncManager.peers[
|
|
376
|
+
return ctx.node.syncManager.peers[peer.id];
|
|
362
377
|
}
|
|
363
378
|
return {
|
|
364
379
|
peerState: getCurrentPeerState(),
|
|
365
|
-
peer
|
|
366
|
-
peerStateOnServer:
|
|
367
|
-
peerOnServer:
|
|
380
|
+
peer,
|
|
381
|
+
peerStateOnServer: peerStateOnServer,
|
|
382
|
+
peerOnServer: peerOnServer,
|
|
368
383
|
getCurrentPeerState,
|
|
369
384
|
};
|
|
370
385
|
}
|
|
371
386
|
function addStoragePeer(opts = {}) {
|
|
372
387
|
const storage = createTestNode();
|
|
373
388
|
const { peer1, peer2 } = connectedPeersWithMessagesTracking({
|
|
374
|
-
peer1: { id: storage.
|
|
375
|
-
peer2: {
|
|
389
|
+
peer1: { id: storage.getCurrentAgent().id, role: "storage" },
|
|
390
|
+
peer2: {
|
|
391
|
+
id: ctx.node.getCurrentAgent().id,
|
|
392
|
+
role: "client",
|
|
393
|
+
name: opts.ourName,
|
|
394
|
+
},
|
|
376
395
|
});
|
|
377
396
|
peer1.priority = 100;
|
|
378
397
|
ctx.node.syncManager.addPeer(peer1);
|
|
@@ -420,4 +439,12 @@ export function connectedPeersWithMessagesTracking(opts) {
|
|
|
420
439
|
peer2,
|
|
421
440
|
};
|
|
422
441
|
}
|
|
442
|
+
export function createAccountInNode(node) {
|
|
443
|
+
const accountOnTempNode = LocalNode.internalCreateAccount({
|
|
444
|
+
crypto: node.crypto,
|
|
445
|
+
});
|
|
446
|
+
const accountCoreEntry = node.getCoValue(accountOnTempNode.id);
|
|
447
|
+
accountCoreEntry.internalMarkMagicallyAvailable(accountOnTempNode.core.verified);
|
|
448
|
+
return new ControlledAccount(accountCoreEntry.getCurrentContent(), accountOnTempNode.core.node.agentSecret);
|
|
449
|
+
}
|
|
423
450
|
//# sourceMappingURL=testUtils.js.map
|