cojson 0.15.7 → 0.15.9
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 +12 -0
- package/dist/IncomingMessagesQueue.d.ts +27 -0
- package/dist/IncomingMessagesQueue.d.ts.map +1 -0
- package/dist/IncomingMessagesQueue.js +114 -0
- package/dist/IncomingMessagesQueue.js.map +1 -0
- package/dist/PeerState.d.ts +2 -10
- package/dist/PeerState.d.ts.map +1 -1
- package/dist/PeerState.js +9 -90
- package/dist/PeerState.js.map +1 -1
- package/dist/PriorityBasedMessageQueue.d.ts +2 -1
- package/dist/PriorityBasedMessageQueue.d.ts.map +1 -1
- package/dist/PriorityBasedMessageQueue.js +9 -6
- package/dist/PriorityBasedMessageQueue.js.map +1 -1
- package/dist/SyncStateManager.d.ts +1 -0
- package/dist/SyncStateManager.d.ts.map +1 -1
- package/dist/SyncStateManager.js +1 -1
- package/dist/SyncStateManager.js.map +1 -1
- package/dist/coValue.d.ts +1 -1
- package/dist/coValueCore/coValueCore.d.ts +9 -17
- package/dist/coValueCore/coValueCore.d.ts.map +1 -1
- package/dist/coValueCore/coValueCore.js +75 -50
- package/dist/coValueCore/coValueCore.js.map +1 -1
- package/dist/coValueCore/verifiedState.d.ts +10 -3
- package/dist/coValueCore/verifiedState.d.ts.map +1 -1
- package/dist/coValueCore/verifiedState.js +73 -14
- package/dist/coValueCore/verifiedState.js.map +1 -1
- package/dist/coValues/coMap.d.ts +3 -3
- package/dist/coValues/coStream.d.ts +2 -2
- package/dist/coValues/group.d.ts +1 -1
- package/dist/coValues/group.d.ts.map +1 -1
- package/dist/coValues/group.js +2 -4
- package/dist/coValues/group.js.map +1 -1
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +23 -0
- package/dist/config.js.map +1 -0
- package/dist/crypto/WasmCrypto.d.ts.map +1 -1
- package/dist/crypto/WasmCrypto.js +2 -1
- package/dist/crypto/WasmCrypto.js.map +1 -1
- package/dist/exports.d.ts +18 -7
- package/dist/exports.d.ts.map +1 -1
- package/dist/exports.js +11 -8
- package/dist/exports.js.map +1 -1
- package/dist/localNode.d.ts +8 -2
- package/dist/localNode.d.ts.map +1 -1
- package/dist/localNode.js +19 -12
- package/dist/localNode.js.map +1 -1
- package/dist/storage/StoreQueue.d.ts +15 -0
- package/dist/storage/StoreQueue.d.ts.map +1 -0
- package/dist/storage/StoreQueue.js +35 -0
- package/dist/storage/StoreQueue.js.map +1 -0
- package/dist/storage/index.d.ts +6 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +6 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/knownState.d.ts +18 -0
- package/dist/storage/knownState.d.ts.map +1 -0
- package/dist/storage/knownState.js +63 -0
- package/dist/storage/knownState.js.map +1 -0
- package/dist/storage/sqlite/client.d.ts +37 -0
- package/dist/storage/sqlite/client.d.ts.map +1 -0
- package/dist/storage/sqlite/client.js +89 -0
- package/dist/storage/sqlite/client.js.map +1 -0
- package/dist/storage/sqlite/index.d.ts +5 -0
- package/dist/storage/sqlite/index.d.ts.map +1 -0
- package/dist/storage/sqlite/index.js +13 -0
- package/dist/storage/sqlite/index.js.map +1 -0
- package/dist/storage/sqlite/sqliteMigrations.d.ts +3 -0
- package/dist/storage/sqlite/sqliteMigrations.d.ts.map +1 -0
- package/dist/storage/sqlite/sqliteMigrations.js +44 -0
- package/dist/storage/sqlite/sqliteMigrations.js.map +1 -0
- package/dist/storage/sqlite/types.d.ts +8 -0
- package/dist/storage/sqlite/types.d.ts.map +1 -0
- package/dist/storage/sqlite/types.js +2 -0
- package/dist/storage/sqlite/types.js.map +1 -0
- package/dist/storage/sqliteAsync/client.d.ts +37 -0
- package/dist/storage/sqliteAsync/client.d.ts.map +1 -0
- package/dist/storage/sqliteAsync/client.js +88 -0
- package/dist/storage/sqliteAsync/client.js.map +1 -0
- package/dist/storage/sqliteAsync/index.d.ts +6 -0
- package/dist/storage/sqliteAsync/index.d.ts.map +1 -0
- package/dist/storage/sqliteAsync/index.js +15 -0
- package/dist/storage/sqliteAsync/index.js.map +1 -0
- package/dist/storage/sqliteAsync/types.d.ts +9 -0
- package/dist/storage/sqliteAsync/types.d.ts.map +1 -0
- package/dist/storage/sqliteAsync/types.js +2 -0
- package/dist/storage/sqliteAsync/types.js.map +1 -0
- package/dist/storage/storageAsync.d.ts +22 -0
- package/dist/storage/storageAsync.d.ts.map +1 -0
- package/dist/storage/storageAsync.js +214 -0
- package/dist/storage/storageAsync.js.map +1 -0
- package/dist/storage/storageSync.d.ts +21 -0
- package/dist/storage/storageSync.d.ts.map +1 -0
- package/dist/storage/storageSync.js +206 -0
- package/dist/storage/storageSync.js.map +1 -0
- package/dist/storage/syncUtils.d.ts +13 -0
- package/dist/storage/syncUtils.d.ts.map +1 -0
- package/dist/storage/syncUtils.js +25 -0
- package/dist/storage/syncUtils.js.map +1 -0
- package/dist/storage/types.d.ts +82 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +2 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/streamUtils.d.ts +13 -9
- package/dist/streamUtils.d.ts.map +1 -1
- package/dist/streamUtils.js +46 -13
- package/dist/streamUtils.js.map +1 -1
- package/dist/sync.d.ts +22 -14
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +143 -125
- package/dist/sync.js.map +1 -1
- package/dist/tests/IncomingMessagesQueue.test.d.ts +2 -0
- package/dist/tests/IncomingMessagesQueue.test.d.ts.map +1 -0
- package/dist/tests/IncomingMessagesQueue.test.js +437 -0
- package/dist/tests/IncomingMessagesQueue.test.js.map +1 -0
- package/dist/tests/PeerState.test.js +6 -94
- package/dist/tests/PeerState.test.js.map +1 -1
- package/dist/tests/PriorityBasedMessageQueue.test.js +14 -14
- package/dist/tests/PriorityBasedMessageQueue.test.js.map +1 -1
- package/dist/tests/StoreQueue.test.d.ts +2 -0
- package/dist/tests/StoreQueue.test.d.ts.map +1 -0
- package/dist/tests/StoreQueue.test.js +208 -0
- package/dist/tests/StoreQueue.test.js.map +1 -0
- package/dist/tests/SyncStateManager.test.js +3 -1
- package/dist/tests/SyncStateManager.test.js.map +1 -1
- package/dist/tests/account.test.js +9 -9
- package/dist/tests/account.test.js.map +1 -1
- package/dist/tests/coStream.test.js +1 -1
- package/dist/tests/coStream.test.js.map +1 -1
- package/dist/tests/coValueCore.test.js +208 -1
- package/dist/tests/coValueCore.test.js.map +1 -1
- package/dist/tests/coValueCoreLoadingState.test.js +2 -2
- package/dist/tests/coValueCoreLoadingState.test.js.map +1 -1
- package/dist/tests/group.addMember.test.js.map +1 -1
- package/dist/tests/group.removeMember.test.js +1 -1
- package/dist/tests/group.removeMember.test.js.map +1 -1
- package/dist/tests/messagesTestUtils.js +1 -1
- package/dist/tests/messagesTestUtils.js.map +1 -1
- package/dist/tests/sync.auth.test.js +23 -15
- package/dist/tests/sync.auth.test.js.map +1 -1
- package/dist/tests/sync.invite.test.js +10 -16
- package/dist/tests/sync.invite.test.js.map +1 -1
- package/dist/tests/sync.load.test.js +52 -50
- package/dist/tests/sync.load.test.js.map +1 -1
- package/dist/tests/sync.mesh.test.js +173 -56
- package/dist/tests/sync.mesh.test.js.map +1 -1
- package/dist/tests/sync.peerReconciliation.test.js +42 -32
- package/dist/tests/sync.peerReconciliation.test.js.map +1 -1
- package/dist/tests/sync.storage.test.js +162 -62
- package/dist/tests/sync.storage.test.js.map +1 -1
- package/dist/tests/sync.storageAsync.test.d.ts +2 -0
- package/dist/tests/sync.storageAsync.test.d.ts.map +1 -0
- package/dist/tests/sync.storageAsync.test.js +361 -0
- package/dist/tests/sync.storageAsync.test.js.map +1 -0
- package/dist/tests/sync.test.js +16 -21
- package/dist/tests/sync.test.js.map +1 -1
- package/dist/tests/sync.upload.test.js +28 -25
- package/dist/tests/sync.upload.test.js.map +1 -1
- package/dist/tests/testStorage.d.ts +12 -0
- package/dist/tests/testStorage.d.ts.map +1 -0
- package/dist/tests/testStorage.js +151 -0
- package/dist/tests/testStorage.js.map +1 -0
- package/dist/tests/testUtils.d.ts +20 -15
- package/dist/tests/testUtils.d.ts.map +1 -1
- package/dist/tests/testUtils.js +79 -45
- package/dist/tests/testUtils.js.map +1 -1
- package/package.json +2 -2
- package/src/IncomingMessagesQueue.ts +142 -0
- package/src/PeerState.ts +11 -110
- package/src/PriorityBasedMessageQueue.ts +13 -5
- package/src/SyncStateManager.ts +1 -1
- package/src/coValueCore/coValueCore.ts +100 -66
- package/src/coValueCore/verifiedState.ts +91 -21
- package/src/coValues/group.ts +2 -4
- package/src/config.ts +26 -0
- package/src/crypto/WasmCrypto.ts +3 -1
- package/src/exports.ts +20 -27
- package/src/localNode.ts +27 -12
- package/src/storage/StoreQueue.ts +56 -0
- package/src/storage/index.ts +5 -0
- package/src/storage/knownState.ts +88 -0
- package/src/storage/sqlite/client.ts +180 -0
- package/src/storage/sqlite/index.ts +19 -0
- package/src/storage/sqlite/sqliteMigrations.ts +44 -0
- package/src/storage/sqlite/types.ts +7 -0
- package/src/storage/sqliteAsync/client.ts +179 -0
- package/src/storage/sqliteAsync/index.ts +25 -0
- package/src/storage/sqliteAsync/types.ts +8 -0
- package/src/storage/storageAsync.ts +367 -0
- package/src/storage/storageSync.ts +343 -0
- package/src/storage/syncUtils.ts +50 -0
- package/src/storage/types.ts +162 -0
- package/src/streamUtils.ts +61 -19
- package/src/sync.ts +191 -160
- package/src/tests/IncomingMessagesQueue.test.ts +626 -0
- package/src/tests/PeerState.test.ts +6 -118
- package/src/tests/PriorityBasedMessageQueue.test.ts +18 -14
- package/src/tests/StoreQueue.test.ts +283 -0
- package/src/tests/SyncStateManager.test.ts +4 -1
- package/src/tests/account.test.ts +11 -12
- package/src/tests/coStream.test.ts +1 -3
- package/src/tests/coValueCore.test.ts +270 -1
- package/src/tests/coValueCoreLoadingState.test.ts +2 -2
- package/src/tests/group.addMember.test.ts +1 -0
- package/src/tests/group.removeMember.test.ts +2 -8
- package/src/tests/messagesTestUtils.ts +2 -2
- package/src/tests/sync.auth.test.ts +24 -14
- package/src/tests/sync.invite.test.ts +11 -17
- package/src/tests/sync.load.test.ts +53 -49
- package/src/tests/sync.mesh.test.ts +198 -56
- package/src/tests/sync.peerReconciliation.test.ts +44 -34
- package/src/tests/sync.storage.test.ts +231 -64
- package/src/tests/sync.storageAsync.test.ts +486 -0
- package/src/tests/sync.test.ts +17 -23
- package/src/tests/sync.upload.test.ts +29 -24
- package/src/tests/testStorage.ts +216 -0
- package/src/tests/testUtils.ts +89 -54
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, test } from "vitest";
|
|
2
2
|
import { expectList, expectMap } from "../coValue";
|
|
3
3
|
import { WasmCrypto } from "../crypto/WasmCrypto";
|
|
4
|
-
import { SyncMessagesLog, loadCoValueOrFail, setupTestNode, waitFor, } from "./testUtils";
|
|
4
|
+
import { SyncMessagesLog, TEST_NODE_CONFIG, loadCoValueOrFail, setupTestNode, waitFor, } from "./testUtils";
|
|
5
|
+
// We want to simulate a real world communication that happens asynchronously
|
|
6
|
+
TEST_NODE_CONFIG.withAsyncPeers = true;
|
|
5
7
|
const Crypto = await WasmCrypto.create();
|
|
6
|
-
let jazzCloud
|
|
8
|
+
let jazzCloud;
|
|
7
9
|
beforeEach(async () => {
|
|
8
10
|
SyncMessagesLog.clear();
|
|
9
11
|
jazzCloud = setupTestNode({ isSyncServer: true });
|
|
@@ -25,8 +27,8 @@ describe("client to server upload", () => {
|
|
|
25
27
|
})).toMatchInlineSnapshot(`
|
|
26
28
|
[
|
|
27
29
|
"client -> server | CONTENT Group header: true new: After: 0 New: 3",
|
|
28
|
-
"server -> client | KNOWN Group sessions: header/3",
|
|
29
30
|
"client -> server | CONTENT Map header: true new: After: 0 New: 1",
|
|
31
|
+
"server -> client | KNOWN Group sessions: header/3",
|
|
30
32
|
"server -> client | KNOWN Map sessions: header/1",
|
|
31
33
|
]
|
|
32
34
|
`);
|
|
@@ -51,10 +53,10 @@ describe("client to server upload", () => {
|
|
|
51
53
|
})).toMatchInlineSnapshot(`
|
|
52
54
|
[
|
|
53
55
|
"client -> server | CONTENT ParentGroup header: true new: After: 0 New: 6",
|
|
54
|
-
"server -> client | KNOWN ParentGroup sessions: header/6",
|
|
55
56
|
"client -> server | CONTENT Group header: true new: After: 0 New: 5",
|
|
56
|
-
"server -> client | KNOWN Group sessions: header/5",
|
|
57
57
|
"client -> server | CONTENT Map header: true new: After: 0 New: 1",
|
|
58
|
+
"server -> client | KNOWN ParentGroup sessions: header/6",
|
|
59
|
+
"server -> client | KNOWN Group sessions: header/5",
|
|
58
60
|
"server -> client | KNOWN Map sessions: header/1",
|
|
59
61
|
]
|
|
60
62
|
`);
|
|
@@ -80,8 +82,8 @@ describe("client to server upload", () => {
|
|
|
80
82
|
})).toMatchInlineSnapshot(`
|
|
81
83
|
[
|
|
82
84
|
"client -> server | CONTENT Group header: true new: After: 0 New: 3",
|
|
83
|
-
"server -> client | KNOWN Group sessions: header/3",
|
|
84
85
|
"client -> server | CONTENT Map header: true new: After: 0 New: 1",
|
|
86
|
+
"server -> client | KNOWN Group sessions: header/3",
|
|
85
87
|
"server -> client | KNOWN Map sessions: header/1",
|
|
86
88
|
"client -> server | CONTENT Map header: false new: After: 1 New: 1",
|
|
87
89
|
"server -> client | KNOWN Map sessions: header/2",
|
|
@@ -113,8 +115,8 @@ describe("client to server upload", () => {
|
|
|
113
115
|
})).toMatchInlineSnapshot(`
|
|
114
116
|
[
|
|
115
117
|
"client -> server | CONTENT Group header: true new: After: 0 New: 5",
|
|
116
|
-
"server -> client | KNOWN Group sessions: header/5",
|
|
117
118
|
"client -> server | CONTENT Map header: true new: After: 0 New: 1",
|
|
119
|
+
"server -> client | KNOWN Group sessions: header/5",
|
|
118
120
|
"server -> client | KNOWN Map sessions: header/1",
|
|
119
121
|
"client -> server | CONTENT Map header: false new: After: 1 New: 1",
|
|
120
122
|
"server -> client | KNOWN CORRECTION Map sessions: empty",
|
|
@@ -166,16 +168,17 @@ describe("client to server upload", () => {
|
|
|
166
168
|
"otherClient -> server | KNOWN Colist sessions: header/1",
|
|
167
169
|
"client -> server | CONTENT Colist header: false new: After: 1 New: 1",
|
|
168
170
|
"server -> client | KNOWN Colist sessions: header/2",
|
|
171
|
+
"server -> otherClient | CONTENT Colist header: false new: After: 1 New: 1",
|
|
169
172
|
"otherClient -> server | LOAD Colist sessions: header/3",
|
|
170
173
|
"client -> server | CONTENT Colist header: false new: After: 2 New: 1",
|
|
171
174
|
"server -> otherClient | CONTENT Colist header: false new: After: 1 New: 1",
|
|
172
175
|
"server -> client | KNOWN Colist sessions: header/3",
|
|
173
|
-
"otherClient -> server | KNOWN Colist sessions: header/4",
|
|
174
176
|
"server -> otherClient | CONTENT Colist header: false new: After: 2 New: 1",
|
|
177
|
+
"otherClient -> server | KNOWN Colist sessions: header/4",
|
|
175
178
|
"otherClient -> server | CONTENT Colist header: false new: After: 0 New: 2",
|
|
179
|
+
"otherClient -> server | KNOWN Colist sessions: header/5",
|
|
176
180
|
"server -> otherClient | KNOWN Colist sessions: header/5",
|
|
177
181
|
"server -> client | CONTENT Colist header: false new: After: 0 New: 2",
|
|
178
|
-
"otherClient -> server | KNOWN Colist sessions: header/5",
|
|
179
182
|
"client -> server | KNOWN Colist sessions: header/5",
|
|
180
183
|
]
|
|
181
184
|
`);
|
|
@@ -205,38 +208,38 @@ describe("client to server upload", () => {
|
|
|
205
208
|
[
|
|
206
209
|
"client -> server | LOAD Map sessions: empty",
|
|
207
210
|
"server -> client | CONTENT Group header: true new: After: 0 New: 5",
|
|
211
|
+
"server -> client | CONTENT Map header: true new: expectContentUntil: header/1024",
|
|
212
|
+
"server -> client | CONTENT Map header: false new: After: 0 New: 73",
|
|
213
|
+
"server -> client | CONTENT Map header: false new: After: 73 New: 73",
|
|
214
|
+
"server -> client | CONTENT Map header: false new: After: 146 New: 73",
|
|
215
|
+
"server -> client | CONTENT Map header: false new: After: 219 New: 73",
|
|
216
|
+
"server -> client | CONTENT Map header: false new: After: 292 New: 73",
|
|
217
|
+
"server -> client | CONTENT Map header: false new: After: 365 New: 73",
|
|
218
|
+
"server -> client | CONTENT Map header: false new: After: 438 New: 73",
|
|
219
|
+
"server -> client | CONTENT Map header: false new: After: 511 New: 73",
|
|
220
|
+
"server -> client | CONTENT Map header: false new: After: 584 New: 73",
|
|
221
|
+
"server -> client | CONTENT Map header: false new: After: 657 New: 73",
|
|
222
|
+
"server -> client | CONTENT Map header: false new: After: 730 New: 73",
|
|
223
|
+
"server -> client | CONTENT Map header: false new: After: 803 New: 73",
|
|
224
|
+
"server -> client | CONTENT Map header: false new: After: 876 New: 73",
|
|
225
|
+
"server -> client | CONTENT Map header: false new: After: 949 New: 73",
|
|
226
|
+
"server -> client | CONTENT Map header: false new: After: 1022 New: 2",
|
|
208
227
|
"client -> server | KNOWN Group sessions: header/5",
|
|
209
|
-
"server -> client | CONTENT Map header: true new: ",
|
|
210
228
|
"client -> server | KNOWN Map sessions: header/0",
|
|
211
|
-
"server -> client | CONTENT Map header: false new: After: 0 New: 73",
|
|
212
229
|
"client -> server | KNOWN Map sessions: header/73",
|
|
213
|
-
"server -> client | CONTENT Map header: false new: After: 73 New: 73",
|
|
214
230
|
"client -> server | KNOWN Map sessions: header/146",
|
|
215
|
-
"server -> client | CONTENT Map header: false new: After: 146 New: 73",
|
|
216
231
|
"client -> server | KNOWN Map sessions: header/219",
|
|
217
|
-
"server -> client | CONTENT Map header: false new: After: 219 New: 73",
|
|
218
232
|
"client -> server | KNOWN Map sessions: header/292",
|
|
219
|
-
"server -> client | CONTENT Map header: false new: After: 292 New: 73",
|
|
220
233
|
"client -> server | KNOWN Map sessions: header/365",
|
|
221
|
-
"server -> client | CONTENT Map header: false new: After: 365 New: 73",
|
|
222
234
|
"client -> server | KNOWN Map sessions: header/438",
|
|
223
|
-
"server -> client | CONTENT Map header: false new: After: 438 New: 73",
|
|
224
235
|
"client -> server | KNOWN Map sessions: header/511",
|
|
225
|
-
"server -> client | CONTENT Map header: false new: After: 511 New: 73",
|
|
226
236
|
"client -> server | KNOWN Map sessions: header/584",
|
|
227
|
-
"server -> client | CONTENT Map header: false new: After: 584 New: 73",
|
|
228
237
|
"client -> server | KNOWN Map sessions: header/657",
|
|
229
|
-
"server -> client | CONTENT Map header: false new: After: 657 New: 73",
|
|
230
238
|
"client -> server | KNOWN Map sessions: header/730",
|
|
231
|
-
"server -> client | CONTENT Map header: false new: After: 730 New: 73",
|
|
232
239
|
"client -> server | KNOWN Map sessions: header/803",
|
|
233
|
-
"server -> client | CONTENT Map header: false new: After: 803 New: 73",
|
|
234
240
|
"client -> server | KNOWN Map sessions: header/876",
|
|
235
|
-
"server -> client | CONTENT Map header: false new: After: 876 New: 73",
|
|
236
241
|
"client -> server | KNOWN Map sessions: header/949",
|
|
237
|
-
"server -> client | CONTENT Map header: false new: After: 949 New: 73",
|
|
238
242
|
"client -> server | KNOWN Map sessions: header/1022",
|
|
239
|
-
"server -> client | CONTENT Map header: false new: After: 1022 New: 2",
|
|
240
243
|
"client -> server | KNOWN Map sessions: header/1024",
|
|
241
244
|
]
|
|
242
245
|
`);
|
|
@@ -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,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,OAAO,GACR,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;AACzC,IAAI,
|
|
1
|
+
{"version":3,"file":"sync.upload.test.js","sourceRoot":"","sources":["../../src/tests/sync.upload.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { StorageApiAsync, StorageApiSync } from "../storage";
|
|
2
|
+
export declare function createAsyncStorage({ filename, nodeName, storageName, }: {
|
|
3
|
+
filename?: string;
|
|
4
|
+
nodeName: string;
|
|
5
|
+
storageName: string;
|
|
6
|
+
}): Promise<StorageApiAsync>;
|
|
7
|
+
export declare function createSyncStorage({ filename, nodeName, storageName, }: {
|
|
8
|
+
filename?: string;
|
|
9
|
+
nodeName: string;
|
|
10
|
+
storageName: string;
|
|
11
|
+
}): StorageApiSync;
|
|
12
|
+
//# sourceMappingURL=testStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testStorage.d.ts","sourceRoot":"","sources":["../../src/tests/testStorage.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,eAAe,EACf,cAAc,EACf,MAAM,YAAY,CAAC;AAsFpB,wBAAsB,kBAAkB,CAAC,EACvC,QAAQ,EACR,QAAmB,EACnB,WAAuB,GACxB,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,4BAY9D;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,QAAmB,EACnB,WAAuB,GACxB,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,kBAQ9D"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { unlinkSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import Database from "libsql";
|
|
6
|
+
import { onTestFinished } from "vitest";
|
|
7
|
+
import { getSqliteStorage } from "../storage/sqlite";
|
|
8
|
+
import { getSqliteStorageAsync, } from "../storage/sqliteAsync";
|
|
9
|
+
import { SyncMessagesLog } from "./testUtils";
|
|
10
|
+
class LibSQLSqliteAsyncDriver {
|
|
11
|
+
constructor(filename) {
|
|
12
|
+
this.db = new Database(filename, {});
|
|
13
|
+
}
|
|
14
|
+
async initialize() {
|
|
15
|
+
await this.db.pragma("journal_mode = WAL");
|
|
16
|
+
}
|
|
17
|
+
async run(sql, params) {
|
|
18
|
+
this.db.prepare(sql).run(params);
|
|
19
|
+
}
|
|
20
|
+
async query(sql, params) {
|
|
21
|
+
return this.db.prepare(sql).all(params);
|
|
22
|
+
}
|
|
23
|
+
async get(sql, params) {
|
|
24
|
+
return this.db.prepare(sql).get(params);
|
|
25
|
+
}
|
|
26
|
+
async transaction(callback) {
|
|
27
|
+
await this.run("BEGIN TRANSACTION", []);
|
|
28
|
+
try {
|
|
29
|
+
await callback();
|
|
30
|
+
await this.run("COMMIT", []);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
await this.run("ROLLBACK", []);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async closeDb() {
|
|
37
|
+
this.db.close();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
class LibSQLSqliteSyncDriver {
|
|
41
|
+
constructor(filename) {
|
|
42
|
+
this.db = new Database(filename, {});
|
|
43
|
+
}
|
|
44
|
+
initialize() {
|
|
45
|
+
this.db.pragma("journal_mode = WAL");
|
|
46
|
+
}
|
|
47
|
+
run(sql, params) {
|
|
48
|
+
this.db.prepare(sql).run(params);
|
|
49
|
+
}
|
|
50
|
+
query(sql, params) {
|
|
51
|
+
return this.db.prepare(sql).all(params);
|
|
52
|
+
}
|
|
53
|
+
get(sql, params) {
|
|
54
|
+
return this.db.prepare(sql).get(params);
|
|
55
|
+
}
|
|
56
|
+
transaction(callback) {
|
|
57
|
+
this.run("BEGIN TRANSACTION", []);
|
|
58
|
+
try {
|
|
59
|
+
callback();
|
|
60
|
+
this.run("COMMIT", []);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
this.run("ROLLBACK", []);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
closeDb() {
|
|
67
|
+
this.db.close();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export async function createAsyncStorage({ filename, nodeName = "client", storageName = "storage", }) {
|
|
71
|
+
const storage = await getSqliteStorageAsync(new LibSQLSqliteAsyncDriver(getDbPath(filename)));
|
|
72
|
+
onTestFinished(() => {
|
|
73
|
+
storage.close();
|
|
74
|
+
});
|
|
75
|
+
trackStorageMessages(storage, nodeName, storageName);
|
|
76
|
+
return storage;
|
|
77
|
+
}
|
|
78
|
+
export function createSyncStorage({ filename, nodeName = "client", storageName = "storage", }) {
|
|
79
|
+
const storage = getSqliteStorage(new LibSQLSqliteSyncDriver(getDbPath(filename)));
|
|
80
|
+
trackStorageMessages(storage, nodeName, storageName);
|
|
81
|
+
return storage;
|
|
82
|
+
}
|
|
83
|
+
function getDbPath(defaultDbPath) {
|
|
84
|
+
const dbPath = defaultDbPath ?? join(tmpdir(), `test-${randomUUID()}.db`);
|
|
85
|
+
if (!defaultDbPath) {
|
|
86
|
+
onTestFinished(() => {
|
|
87
|
+
unlinkSync(dbPath);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return dbPath;
|
|
91
|
+
}
|
|
92
|
+
function trackStorageMessages(storage, nodeName, storageName) {
|
|
93
|
+
const originalStore = storage.store;
|
|
94
|
+
const originalLoad = storage.load;
|
|
95
|
+
storage.store = function (data, correctionCallback) {
|
|
96
|
+
for (const msg of data ?? []) {
|
|
97
|
+
SyncMessagesLog.add({
|
|
98
|
+
from: nodeName,
|
|
99
|
+
to: storageName,
|
|
100
|
+
msg,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return originalStore.call(storage, data, (correction) => {
|
|
104
|
+
SyncMessagesLog.add({
|
|
105
|
+
from: storageName,
|
|
106
|
+
to: nodeName,
|
|
107
|
+
msg: {
|
|
108
|
+
action: "known",
|
|
109
|
+
isCorrection: true,
|
|
110
|
+
...correction,
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
return correctionCallback(correction);
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
storage.load = function (id, callback, done) {
|
|
117
|
+
SyncMessagesLog.add({
|
|
118
|
+
from: nodeName,
|
|
119
|
+
to: storageName,
|
|
120
|
+
msg: {
|
|
121
|
+
action: "load",
|
|
122
|
+
id: id,
|
|
123
|
+
sessions: {},
|
|
124
|
+
header: false,
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
return originalLoad.call(storage, id, (msg) => {
|
|
128
|
+
SyncMessagesLog.add({
|
|
129
|
+
from: storageName,
|
|
130
|
+
to: nodeName,
|
|
131
|
+
msg,
|
|
132
|
+
});
|
|
133
|
+
return callback(msg);
|
|
134
|
+
}, (found) => {
|
|
135
|
+
if (!found) {
|
|
136
|
+
SyncMessagesLog.add({
|
|
137
|
+
from: storageName,
|
|
138
|
+
to: nodeName,
|
|
139
|
+
msg: {
|
|
140
|
+
action: "known",
|
|
141
|
+
id: id,
|
|
142
|
+
sessions: {},
|
|
143
|
+
header: false,
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
return done?.(found);
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=testStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testStorage.js","sourceRoot":"","sources":["../../src/tests/testStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MetricReader } from "@opentelemetry/sdk-metrics";
|
|
2
2
|
import { ControlledAccount, ControlledAgent } from "../coValues/account.js";
|
|
3
|
-
import { type AgentSecret, type CoID, type CoValueCore, type RawCoValue } from "../exports.js";
|
|
3
|
+
import { type AgentSecret, type CoID, type CoValueCore, type RawCoValue, StorageAPI } 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";
|
|
@@ -126,12 +126,8 @@ export declare function getSyncServerConnectedPeer(opts: {
|
|
|
126
126
|
peerStateOnServer: import("../PeerState.js").PeerState;
|
|
127
127
|
peerOnServer: Peer;
|
|
128
128
|
};
|
|
129
|
-
export declare
|
|
130
|
-
|
|
131
|
-
peerId: string;
|
|
132
|
-
}): {
|
|
133
|
-
storage: LocalNode;
|
|
134
|
-
peer: Peer;
|
|
129
|
+
export declare const TEST_NODE_CONFIG: {
|
|
130
|
+
withAsyncPeers: boolean;
|
|
135
131
|
};
|
|
136
132
|
export declare function setupTestNode(opts?: {
|
|
137
133
|
isSyncServer?: boolean;
|
|
@@ -148,18 +144,23 @@ export declare function setupTestNode(opts?: {
|
|
|
148
144
|
peerStateOnServer: import("../PeerState.js").PeerState;
|
|
149
145
|
peerOnServer: Peer;
|
|
150
146
|
};
|
|
151
|
-
|
|
147
|
+
addStorage: (opts?: {
|
|
152
148
|
ourName?: string;
|
|
149
|
+
storage?: StorageAPI;
|
|
153
150
|
}) => {
|
|
154
|
-
|
|
155
|
-
peerState: import("../PeerState.js").PeerState;
|
|
156
|
-
storage: LocalNode;
|
|
151
|
+
storage: StorageAPI;
|
|
157
152
|
};
|
|
153
|
+
addAsyncStorage: (opts?: {
|
|
154
|
+
ourName?: string;
|
|
155
|
+
}) => Promise<{
|
|
156
|
+
storage: import("../exports.js").StorageApiAsync;
|
|
157
|
+
}>;
|
|
158
158
|
restart: () => LocalNode;
|
|
159
159
|
};
|
|
160
160
|
export declare function setupTestAccount(opts?: {
|
|
161
161
|
isSyncServer?: boolean;
|
|
162
162
|
connected?: boolean;
|
|
163
|
+
storage?: StorageAPI;
|
|
163
164
|
}): Promise<{
|
|
164
165
|
node: LocalNode;
|
|
165
166
|
accountID: import("../exports.js").RawAccountID;
|
|
@@ -174,13 +175,17 @@ export declare function setupTestAccount(opts?: {
|
|
|
174
175
|
peerOnServer: Peer;
|
|
175
176
|
getCurrentPeerState: () => import("../PeerState.js").PeerState;
|
|
176
177
|
};
|
|
177
|
-
|
|
178
|
+
addStorage: (opts?: {
|
|
178
179
|
ourName?: string;
|
|
180
|
+
storage?: StorageAPI;
|
|
179
181
|
}) => {
|
|
180
|
-
|
|
181
|
-
peerState: import("../PeerState.js").PeerState;
|
|
182
|
-
storage: LocalNode;
|
|
182
|
+
storage: StorageAPI;
|
|
183
183
|
};
|
|
184
|
+
addAsyncStorage: (opts?: {
|
|
185
|
+
ourName?: string;
|
|
186
|
+
}) => Promise<{
|
|
187
|
+
storage: import("../exports.js").StorageApiAsync;
|
|
188
|
+
}>;
|
|
184
189
|
}>;
|
|
185
190
|
export type SyncTestMessage = {
|
|
186
191
|
from: string;
|
|
@@ -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,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,IAAI,EACT,KAAK,WAAW,EAEhB,KAAK,UAAU,
|
|
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
|
@@ -7,6 +7,7 @@ import { LocalNode } from "../localNode.js";
|
|
|
7
7
|
import { connectedPeers } from "../streamUtils.js";
|
|
8
8
|
import { expectGroup } from "../typeUtils/expectGroup.js";
|
|
9
9
|
import { toSimplifiedMessages } from "./messagesTestUtils.js";
|
|
10
|
+
import { createAsyncStorage, createSyncStorage } from "./testStorage.js";
|
|
10
11
|
const Crypto = await WasmCrypto.create();
|
|
11
12
|
const syncServer = {
|
|
12
13
|
current: undefined,
|
|
@@ -181,7 +182,8 @@ export function blockMessageTypeOnOutgoingPeer(peer, messageType, opts) {
|
|
|
181
182
|
const blockedMessages = [];
|
|
182
183
|
const blockedIds = new Set();
|
|
183
184
|
pushSpy.mockImplementation(async (msg) => {
|
|
184
|
-
if (msg
|
|
185
|
+
if (typeof msg === "object" &&
|
|
186
|
+
msg.action === messageType &&
|
|
185
187
|
(!opts.id || msg.id === opts.id) &&
|
|
186
188
|
(!opts.once || !blockedIds.has(msg.id))) {
|
|
187
189
|
blockedMessages.push(msg);
|
|
@@ -302,24 +304,9 @@ export function getSyncServerConnectedPeer(opts) {
|
|
|
302
304
|
peerOnServer: peer2,
|
|
303
305
|
};
|
|
304
306
|
}
|
|
305
|
-
export
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
peer1: { id: storage.getCurrentAgent().id, role: "storage" },
|
|
309
|
-
peer2: {
|
|
310
|
-
id: opts.peerId,
|
|
311
|
-
role: "client",
|
|
312
|
-
name: opts.ourName,
|
|
313
|
-
},
|
|
314
|
-
});
|
|
315
|
-
peer1.role = "storage";
|
|
316
|
-
peer1.priority = 100;
|
|
317
|
-
storage.syncManager.addPeer(peer2);
|
|
318
|
-
return {
|
|
319
|
-
storage,
|
|
320
|
-
peer: peer1,
|
|
321
|
-
};
|
|
322
|
-
}
|
|
307
|
+
export const TEST_NODE_CONFIG = {
|
|
308
|
+
withAsyncPeers: false,
|
|
309
|
+
};
|
|
323
310
|
export function setupTestNode(opts = {}) {
|
|
324
311
|
const [admin, session] = randomAgentAndSessionID();
|
|
325
312
|
let node = new LocalNode(admin.agentSecret, session, Crypto);
|
|
@@ -341,21 +328,34 @@ export function setupTestNode(opts = {}) {
|
|
|
341
328
|
peerOnServer: peerOnServer,
|
|
342
329
|
};
|
|
343
330
|
}
|
|
344
|
-
function
|
|
345
|
-
const
|
|
346
|
-
|
|
347
|
-
|
|
331
|
+
function addStorage(opts = {}) {
|
|
332
|
+
const storage = opts.storage ??
|
|
333
|
+
createSyncStorage({
|
|
334
|
+
nodeName: opts.ourName ?? "client",
|
|
335
|
+
storageName: "storage",
|
|
336
|
+
});
|
|
337
|
+
node.setStorage(storage);
|
|
338
|
+
return { storage };
|
|
339
|
+
}
|
|
340
|
+
async function addAsyncStorage(opts = {}) {
|
|
341
|
+
const storage = await createAsyncStorage({
|
|
342
|
+
nodeName: opts.ourName ?? "client",
|
|
343
|
+
storageName: "storage",
|
|
348
344
|
});
|
|
349
|
-
node.
|
|
350
|
-
return {
|
|
345
|
+
node.setStorage(storage);
|
|
346
|
+
return { storage };
|
|
351
347
|
}
|
|
352
348
|
if (opts.connected) {
|
|
353
349
|
connectToSyncServer();
|
|
354
350
|
}
|
|
351
|
+
onTestFinished(() => {
|
|
352
|
+
node.gracefulShutdown();
|
|
353
|
+
});
|
|
355
354
|
const ctx = {
|
|
356
355
|
node,
|
|
357
356
|
connectToSyncServer,
|
|
358
|
-
|
|
357
|
+
addStorage,
|
|
358
|
+
addAsyncStorage,
|
|
359
359
|
restart: () => {
|
|
360
360
|
node.gracefulShutdown();
|
|
361
361
|
ctx.node = node = new LocalNode(admin.agentSecret, session, Crypto);
|
|
@@ -372,6 +372,7 @@ export async function setupTestAccount(opts = {}) {
|
|
|
372
372
|
peersToLoadFrom: [],
|
|
373
373
|
crypto: Crypto,
|
|
374
374
|
creationProps: { name: "Client" },
|
|
375
|
+
storage: opts.storage,
|
|
375
376
|
});
|
|
376
377
|
if (opts.isSyncServer) {
|
|
377
378
|
syncServer.current = ctx.node;
|
|
@@ -395,22 +396,35 @@ export async function setupTestAccount(opts = {}) {
|
|
|
395
396
|
getCurrentPeerState,
|
|
396
397
|
};
|
|
397
398
|
}
|
|
398
|
-
function
|
|
399
|
-
const
|
|
400
|
-
|
|
401
|
-
|
|
399
|
+
function addStorage(opts = {}) {
|
|
400
|
+
const storage = opts.storage ??
|
|
401
|
+
createSyncStorage({
|
|
402
|
+
nodeName: opts.ourName ?? "client",
|
|
403
|
+
storageName: "storage",
|
|
404
|
+
});
|
|
405
|
+
ctx.node.setStorage(storage);
|
|
406
|
+
return { storage };
|
|
407
|
+
}
|
|
408
|
+
async function addAsyncStorage(opts = {}) {
|
|
409
|
+
const storage = await createAsyncStorage({
|
|
410
|
+
nodeName: opts.ourName ?? "client",
|
|
411
|
+
storageName: "storage",
|
|
402
412
|
});
|
|
403
|
-
ctx.node.
|
|
404
|
-
return {
|
|
413
|
+
ctx.node.setStorage(storage);
|
|
414
|
+
return { storage };
|
|
405
415
|
}
|
|
406
416
|
if (opts.connected) {
|
|
407
417
|
connectToSyncServer();
|
|
408
418
|
}
|
|
419
|
+
onTestFinished(() => {
|
|
420
|
+
ctx.node.gracefulShutdown();
|
|
421
|
+
});
|
|
409
422
|
return {
|
|
410
423
|
node: ctx.node,
|
|
411
424
|
accountID: ctx.accountID,
|
|
412
425
|
connectToSyncServer,
|
|
413
|
-
|
|
426
|
+
addStorage,
|
|
427
|
+
addAsyncStorage,
|
|
414
428
|
};
|
|
415
429
|
}
|
|
416
430
|
export function connectedPeersWithMessagesTracking(opts) {
|
|
@@ -420,21 +434,41 @@ export function connectedPeersWithMessagesTracking(opts) {
|
|
|
420
434
|
});
|
|
421
435
|
const peer1Push = peer1.outgoing.push;
|
|
422
436
|
peer1.outgoing.push = (msg) => {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
437
|
+
if (typeof msg !== "string") {
|
|
438
|
+
SyncMessagesLog.add({
|
|
439
|
+
from: opts.peer2.name ?? opts.peer2.role,
|
|
440
|
+
to: opts.peer1.name ?? opts.peer1.role,
|
|
441
|
+
msg,
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
if (!TEST_NODE_CONFIG.withAsyncPeers) {
|
|
445
|
+
peer1Push.call(peer1.outgoing, msg);
|
|
446
|
+
}
|
|
447
|
+
else {
|
|
448
|
+
// Simulate the async nature of the real push
|
|
449
|
+
setTimeout(() => {
|
|
450
|
+
peer1Push.call(peer1.outgoing, msg);
|
|
451
|
+
}, 0);
|
|
452
|
+
}
|
|
429
453
|
};
|
|
430
454
|
const peer2Push = peer2.outgoing.push;
|
|
431
455
|
peer2.outgoing.push = (msg) => {
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
456
|
+
if (typeof msg !== "string") {
|
|
457
|
+
SyncMessagesLog.add({
|
|
458
|
+
from: opts.peer1.name ?? opts.peer1.role,
|
|
459
|
+
to: opts.peer2.name ?? opts.peer2.role,
|
|
460
|
+
msg,
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
if (!TEST_NODE_CONFIG.withAsyncPeers) {
|
|
464
|
+
peer2Push.call(peer2.outgoing, msg);
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
// Simulate the async nature of the real push
|
|
468
|
+
setTimeout(() => {
|
|
469
|
+
peer2Push.call(peer2.outgoing, msg);
|
|
470
|
+
}, 0);
|
|
471
|
+
}
|
|
438
472
|
};
|
|
439
473
|
return {
|
|
440
474
|
peer1,
|