cojson-storage-sqlite 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.
@@ -1,4 +1,4 @@
1
1
 
2
- > cojson-storage-sqlite@0.13.16 build /home/runner/_work/jazz/jazz/packages/cojson-storage-sqlite
2
+ > cojson-storage-sqlite@0.13.18 build /home/runner/_work/jazz/jazz/packages/cojson-storage-sqlite
3
3
  > rm -rf ./dist && tsc --sourceMap --outDir dist
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # cojson-storage-sqlite
2
2
 
3
+ ## 0.13.18
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [9089252]
8
+ - Updated dependencies [b470f63]
9
+ - Updated dependencies [8b2df0e]
10
+ - Updated dependencies [66373ba]
11
+ - Updated dependencies [f24cad1]
12
+ - cojson@0.13.18
13
+ - cojson-storage@0.13.18
14
+
15
+ ## 0.13.17
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies [9fb98e2]
20
+ - Updated dependencies [0b89fad]
21
+ - cojson@0.13.17
22
+ - cojson-storage@0.13.17
23
+
3
24
  ## 0.13.16
4
25
 
5
26
  ### Patch Changes
@@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto";
2
2
  import { unlinkSync } from "node:fs";
3
3
  import { tmpdir } from "node:os";
4
4
  import { join } from "node:path";
5
- import { ControlledAgent, LocalNode } from "cojson";
5
+ import { LocalNode } from "cojson";
6
6
  import { SyncManager } from "cojson-storage";
7
7
  import { WasmCrypto } from "cojson/crypto/WasmCrypto";
8
8
  import { expect, onTestFinished, test, vi } from "vitest";
@@ -26,14 +26,14 @@ async function createSQLiteStorage(defaultDbPath) {
26
26
  }
27
27
  test("Should be able to initialize and load from empty DB", async () => {
28
28
  const agentSecret = Crypto.newRandomAgentSecret();
29
- const node = new LocalNode(new ControlledAgent(agentSecret, Crypto), Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
29
+ const node = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
30
30
  node.syncManager.addPeer((await createSQLiteStorage()).peer);
31
31
  await new Promise((resolve) => setTimeout(resolve, 200));
32
32
  expect(node.syncManager.peers.storage).toBeDefined();
33
33
  });
34
34
  test("should sync and load data from storage", async () => {
35
35
  const agentSecret = Crypto.newRandomAgentSecret();
36
- const node1 = new LocalNode(new ControlledAgent(agentSecret, Crypto), Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
36
+ const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
37
37
  const node1Sync = trackMessages(node1);
38
38
  const { peer, dbPath } = await createSQLiteStorage();
39
39
  node1.syncManager.addPeer(peer);
@@ -51,7 +51,7 @@ test("should sync and load data from storage", async () => {
51
51
  ]
52
52
  `);
53
53
  node1Sync.restore();
54
- const node2 = new LocalNode(new ControlledAgent(agentSecret, Crypto), Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
54
+ const node2 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
55
55
  const node2Sync = trackMessages(node2);
56
56
  const { peer: peer2 } = await createSQLiteStorage(dbPath);
57
57
  node2.syncManager.addPeer(peer2);
@@ -71,14 +71,13 @@ test("should sync and load data from storage", async () => {
71
71
  "storage -> KNOWN Map sessions: header/1",
72
72
  "storage -> CONTENT Map header: true new: After: 0 New: 1",
73
73
  "client -> KNOWN Group sessions: header/3",
74
- "client -> KNOWN Map sessions: header/1",
75
74
  ]
76
75
  `);
77
76
  node2Sync.restore();
78
77
  });
79
78
  test("should load dependencies correctly (group inheritance)", async () => {
80
79
  const agentSecret = Crypto.newRandomAgentSecret();
81
- const node1 = new LocalNode(new ControlledAgent(agentSecret, Crypto), Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
80
+ const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
82
81
  const node1Sync = trackMessages(node1);
83
82
  const { peer, dbPath } = await createSQLiteStorage();
84
83
  node1.syncManager.addPeer(peer);
@@ -100,18 +99,62 @@ test("should load dependencies correctly (group inheritance)", async () => {
100
99
  ]
101
100
  `);
102
101
  node1Sync.restore();
103
- const node2 = new LocalNode(new ControlledAgent(agentSecret, Crypto), Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
102
+ const node2 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
103
+ const node2Sync = trackMessages(node2);
104
+ const { peer: peer2 } = await createSQLiteStorage(dbPath);
105
+ node2.syncManager.addPeer(peer2);
106
+ await node2.load(map.id);
107
+ expect(node2.expectCoValueLoaded(map.id)).toBeTruthy();
108
+ expect(node2.expectCoValueLoaded(group.id)).toBeTruthy();
109
+ expect(node2.expectCoValueLoaded(parentGroup.id)).toBeTruthy();
110
+ expect(toSimplifiedMessages({
111
+ Map: map.core,
112
+ Group: group.core,
113
+ ParentGroup: parentGroup.core,
114
+ }, node2Sync.messages)).toMatchInlineSnapshot(`
115
+ [
116
+ "client -> LOAD Map sessions: empty",
117
+ "storage -> KNOWN ParentGroup sessions: header/4",
118
+ "storage -> CONTENT ParentGroup header: true new: After: 0 New: 4",
119
+ "storage -> KNOWN Group sessions: header/5",
120
+ "storage -> CONTENT Group header: true new: After: 0 New: 5",
121
+ "client -> KNOWN ParentGroup sessions: header/4",
122
+ "storage -> KNOWN Map sessions: header/1",
123
+ "storage -> CONTENT Map header: true new: After: 0 New: 1",
124
+ "client -> KNOWN Group sessions: header/5",
125
+ ]
126
+ `);
127
+ });
128
+ test("should not send the same dependency value twice", async () => {
129
+ const agentSecret = Crypto.newRandomAgentSecret();
130
+ const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
131
+ const node1Sync = trackMessages(node1);
132
+ const { peer, dbPath } = await createSQLiteStorage();
133
+ node1.syncManager.addPeer(peer);
134
+ const group = node1.createGroup();
135
+ const parentGroup = node1.createGroup();
136
+ group.extend(parentGroup);
137
+ const mapFromParent = parentGroup.createMap();
138
+ const map = group.createMap();
139
+ map.set("hello", "world");
140
+ mapFromParent.set("hello", "world");
141
+ await new Promise((resolve) => setTimeout(resolve, 200));
142
+ node1Sync.restore();
143
+ const node2 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
104
144
  const node2Sync = trackMessages(node2);
105
145
  const { peer: peer2 } = await createSQLiteStorage(dbPath);
106
146
  node2.syncManager.addPeer(peer2);
107
147
  await node2.load(map.id);
148
+ await node2.load(mapFromParent.id);
108
149
  expect(node2.expectCoValueLoaded(map.id)).toBeTruthy();
150
+ expect(node2.expectCoValueLoaded(mapFromParent.id)).toBeTruthy();
109
151
  expect(node2.expectCoValueLoaded(group.id)).toBeTruthy();
110
152
  expect(node2.expectCoValueLoaded(parentGroup.id)).toBeTruthy();
111
153
  expect(toSimplifiedMessages({
112
154
  Map: map.core,
113
155
  Group: group.core,
114
156
  ParentGroup: parentGroup.core,
157
+ MapFromParent: mapFromParent.core,
115
158
  }, node2Sync.messages)).toMatchInlineSnapshot(`
116
159
  [
117
160
  "client -> LOAD Map sessions: empty",
@@ -124,12 +167,16 @@ test("should load dependencies correctly (group inheritance)", async () => {
124
167
  "storage -> CONTENT Map header: true new: After: 0 New: 1",
125
168
  "client -> KNOWN Group sessions: header/5",
126
169
  "client -> KNOWN Map sessions: header/1",
170
+ "client -> LOAD MapFromParent sessions: empty",
171
+ "storage -> KNOWN MapFromParent sessions: header/1",
172
+ "storage -> CONTENT MapFromParent header: true new: After: 0 New: 1",
173
+ "client -> KNOWN MapFromParent sessions: header/1",
127
174
  ]
128
175
  `);
129
176
  });
130
177
  test("should recover from data loss", async () => {
131
178
  const agentSecret = Crypto.newRandomAgentSecret();
132
- const node1 = new LocalNode(new ControlledAgent(agentSecret, Crypto), Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
179
+ const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
133
180
  const node1Sync = trackMessages(node1);
134
181
  const { peer, dbPath } = await createSQLiteStorage();
135
182
  node1.syncManager.addPeer(peer);
@@ -159,7 +206,7 @@ test("should recover from data loss", async () => {
159
206
  ]
160
207
  `);
161
208
  node1Sync.restore();
162
- const node2 = new LocalNode(new ControlledAgent(agentSecret, Crypto), Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
209
+ const node2 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
163
210
  const node2Sync = trackMessages(node2);
164
211
  const { peer: peer2 } = await createSQLiteStorage(dbPath);
165
212
  node2.syncManager.addPeer(peer2);
@@ -184,7 +231,6 @@ test("should recover from data loss", async () => {
184
231
  "storage -> KNOWN Map sessions: header/4",
185
232
  "storage -> CONTENT Map header: true new: After: 0 New: 4",
186
233
  "client -> KNOWN Group sessions: header/3",
187
- "client -> KNOWN Map sessions: header/4",
188
234
  ]
189
235
  `);
190
236
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.test.js","sourceRoot":"","sources":["../../src/tests/sqlite.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.test.js","sourceRoot":"","sources":["../../src/tests/sqlite.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "cojson-storage-sqlite",
3
3
  "type": "module",
4
- "version": "0.13.16",
4
+ "version": "0.13.18",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "MIT",
8
8
  "dependencies": {
9
9
  "better-sqlite3": "^11.7.0",
10
- "cojson": "0.13.16",
11
- "cojson-storage": "0.13.16"
10
+ "cojson": "0.13.18",
11
+ "cojson-storage": "0.13.18"
12
12
  },
13
13
  "devDependencies": {
14
14
  "@types/better-sqlite3": "^7.6.12",
@@ -1,9 +1,8 @@
1
- import { assert } from "node:console";
2
1
  import { randomUUID } from "node:crypto";
3
2
  import { unlinkSync } from "node:fs";
4
3
  import { tmpdir } from "node:os";
5
4
  import { join } from "node:path";
6
- import { ControlledAgent, LocalNode } from "cojson";
5
+ import { LocalNode } from "cojson";
7
6
  import { SyncManager } from "cojson-storage";
8
7
  import { WasmCrypto } from "cojson/crypto/WasmCrypto";
9
8
  import { expect, onTestFinished, test, vi } from "vitest";
@@ -34,7 +33,7 @@ test("Should be able to initialize and load from empty DB", async () => {
34
33
  const agentSecret = Crypto.newRandomAgentSecret();
35
34
 
36
35
  const node = new LocalNode(
37
- new ControlledAgent(agentSecret, Crypto),
36
+ agentSecret,
38
37
  Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)),
39
38
  Crypto,
40
39
  );
@@ -50,7 +49,7 @@ test("should sync and load data from storage", async () => {
50
49
  const agentSecret = Crypto.newRandomAgentSecret();
51
50
 
52
51
  const node1 = new LocalNode(
53
- new ControlledAgent(agentSecret, Crypto),
52
+ agentSecret,
54
53
  Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)),
55
54
  Crypto,
56
55
  );
@@ -87,7 +86,7 @@ test("should sync and load data from storage", async () => {
87
86
  node1Sync.restore();
88
87
 
89
88
  const node2 = new LocalNode(
90
- new ControlledAgent(agentSecret, Crypto),
89
+ agentSecret,
91
90
  Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)),
92
91
  Crypto,
93
92
  );
@@ -121,7 +120,6 @@ test("should sync and load data from storage", async () => {
121
120
  "storage -> KNOWN Map sessions: header/1",
122
121
  "storage -> CONTENT Map header: true new: After: 0 New: 1",
123
122
  "client -> KNOWN Group sessions: header/3",
124
- "client -> KNOWN Map sessions: header/1",
125
123
  ]
126
124
  `);
127
125
 
@@ -132,7 +130,7 @@ test("should load dependencies correctly (group inheritance)", async () => {
132
130
  const agentSecret = Crypto.newRandomAgentSecret();
133
131
 
134
132
  const node1 = new LocalNode(
135
- new ControlledAgent(agentSecret, Crypto),
133
+ agentSecret,
136
134
  Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)),
137
135
  Crypto,
138
136
  );
@@ -174,7 +172,79 @@ test("should load dependencies correctly (group inheritance)", async () => {
174
172
  node1Sync.restore();
175
173
 
176
174
  const node2 = new LocalNode(
177
- new ControlledAgent(agentSecret, Crypto),
175
+ agentSecret,
176
+ Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)),
177
+ Crypto,
178
+ );
179
+
180
+ const node2Sync = trackMessages(node2);
181
+
182
+ const { peer: peer2 } = await createSQLiteStorage(dbPath);
183
+
184
+ node2.syncManager.addPeer(peer2);
185
+
186
+ await node2.load(map.id);
187
+
188
+ expect(node2.expectCoValueLoaded(map.id)).toBeTruthy();
189
+ expect(node2.expectCoValueLoaded(group.id)).toBeTruthy();
190
+ expect(node2.expectCoValueLoaded(parentGroup.id)).toBeTruthy();
191
+
192
+ expect(
193
+ toSimplifiedMessages(
194
+ {
195
+ Map: map.core,
196
+ Group: group.core,
197
+ ParentGroup: parentGroup.core,
198
+ },
199
+ node2Sync.messages,
200
+ ),
201
+ ).toMatchInlineSnapshot(`
202
+ [
203
+ "client -> LOAD Map sessions: empty",
204
+ "storage -> KNOWN ParentGroup sessions: header/4",
205
+ "storage -> CONTENT ParentGroup header: true new: After: 0 New: 4",
206
+ "storage -> KNOWN Group sessions: header/5",
207
+ "storage -> CONTENT Group header: true new: After: 0 New: 5",
208
+ "client -> KNOWN ParentGroup sessions: header/4",
209
+ "storage -> KNOWN Map sessions: header/1",
210
+ "storage -> CONTENT Map header: true new: After: 0 New: 1",
211
+ "client -> KNOWN Group sessions: header/5",
212
+ ]
213
+ `);
214
+ });
215
+
216
+ test("should not send the same dependency value twice", async () => {
217
+ const agentSecret = Crypto.newRandomAgentSecret();
218
+
219
+ const node1 = new LocalNode(
220
+ agentSecret,
221
+ Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)),
222
+ Crypto,
223
+ );
224
+
225
+ const node1Sync = trackMessages(node1);
226
+
227
+ const { peer, dbPath } = await createSQLiteStorage();
228
+
229
+ node1.syncManager.addPeer(peer);
230
+
231
+ const group = node1.createGroup();
232
+ const parentGroup = node1.createGroup();
233
+
234
+ group.extend(parentGroup);
235
+
236
+ const mapFromParent = parentGroup.createMap();
237
+ const map = group.createMap();
238
+
239
+ map.set("hello", "world");
240
+ mapFromParent.set("hello", "world");
241
+
242
+ await new Promise((resolve) => setTimeout(resolve, 200));
243
+
244
+ node1Sync.restore();
245
+
246
+ const node2 = new LocalNode(
247
+ agentSecret,
178
248
  Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)),
179
249
  Crypto,
180
250
  );
@@ -186,8 +256,10 @@ test("should load dependencies correctly (group inheritance)", async () => {
186
256
  node2.syncManager.addPeer(peer2);
187
257
 
188
258
  await node2.load(map.id);
259
+ await node2.load(mapFromParent.id);
189
260
 
190
261
  expect(node2.expectCoValueLoaded(map.id)).toBeTruthy();
262
+ expect(node2.expectCoValueLoaded(mapFromParent.id)).toBeTruthy();
191
263
  expect(node2.expectCoValueLoaded(group.id)).toBeTruthy();
192
264
  expect(node2.expectCoValueLoaded(parentGroup.id)).toBeTruthy();
193
265
 
@@ -197,6 +269,7 @@ test("should load dependencies correctly (group inheritance)", async () => {
197
269
  Map: map.core,
198
270
  Group: group.core,
199
271
  ParentGroup: parentGroup.core,
272
+ MapFromParent: mapFromParent.core,
200
273
  },
201
274
  node2Sync.messages,
202
275
  ),
@@ -212,6 +285,10 @@ test("should load dependencies correctly (group inheritance)", async () => {
212
285
  "storage -> CONTENT Map header: true new: After: 0 New: 1",
213
286
  "client -> KNOWN Group sessions: header/5",
214
287
  "client -> KNOWN Map sessions: header/1",
288
+ "client -> LOAD MapFromParent sessions: empty",
289
+ "storage -> KNOWN MapFromParent sessions: header/1",
290
+ "storage -> CONTENT MapFromParent header: true new: After: 0 New: 1",
291
+ "client -> KNOWN MapFromParent sessions: header/1",
215
292
  ]
216
293
  `);
217
294
  });
@@ -220,7 +297,7 @@ test("should recover from data loss", async () => {
220
297
  const agentSecret = Crypto.newRandomAgentSecret();
221
298
 
222
299
  const node1 = new LocalNode(
223
- new ControlledAgent(agentSecret, Crypto),
300
+ agentSecret,
224
301
  Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)),
225
302
  Crypto,
226
303
  );
@@ -275,7 +352,7 @@ test("should recover from data loss", async () => {
275
352
  node1Sync.restore();
276
353
 
277
354
  const node2 = new LocalNode(
278
- new ControlledAgent(agentSecret, Crypto),
355
+ agentSecret,
279
356
  Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)),
280
357
  Crypto,
281
358
  );
@@ -315,7 +392,6 @@ test("should recover from data loss", async () => {
315
392
  "storage -> KNOWN Map sessions: header/4",
316
393
  "storage -> CONTENT Map header: true new: After: 0 New: 4",
317
394
  "client -> KNOWN Group sessions: header/3",
318
- "client -> KNOWN Map sessions: header/4",
319
395
  ]
320
396
  `);
321
397
  });