cojson-storage-sqlite 0.15.8 → 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.
@@ -1,4 +1,4 @@
1
1
 
2
- > cojson-storage-sqlite@0.15.8 build /home/runner/_work/jazz/jazz/packages/cojson-storage-sqlite
2
+ > cojson-storage-sqlite@0.15.9 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,13 @@
1
1
  # cojson-storage-sqlite
2
2
 
3
+ ## 0.15.9
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [27b4837]
8
+ - Updated dependencies [2776263]
9
+ - cojson@0.15.9
10
+
3
11
  ## 0.15.8
4
12
 
5
13
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1,2 +1,12 @@
1
- export { SQLiteNode, SQLiteNode as SQLiteStorage } from "./sqliteNode.js";
1
+ import type { SQLiteDatabaseDriver } from "cojson";
2
+ export declare class BetterSqliteDriver implements SQLiteDatabaseDriver {
3
+ private readonly db;
4
+ constructor(filename: string);
5
+ run(sql: string, params: unknown[]): void;
6
+ query<T>(sql: string, params: unknown[]): T[];
7
+ get<T>(sql: string, params: unknown[]): T | undefined;
8
+ transaction(callback: () => unknown): unknown;
9
+ closeDb(): void;
10
+ }
11
+ export declare function getBetterSqliteStorage(filename: string): import("cojson").StorageApiSync;
2
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAGnD,qBAAa,kBAAmB,YAAW,oBAAoB;IAC7D,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;gBAEnB,QAAQ,EAAE,MAAM;IAM5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAIlC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;IAI7C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,SAAS;IAIrD,WAAW,CAAC,QAAQ,EAAE,MAAM,OAAO;IAInC,OAAO;CAGR;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,mCAItD"}
package/dist/index.js CHANGED
@@ -1,2 +1,29 @@
1
- export { SQLiteNode, SQLiteNode as SQLiteStorage } from "./sqliteNode.js";
1
+ import Database from "better-sqlite3";
2
+ import { getSqliteStorage } from "cojson";
3
+ export class BetterSqliteDriver {
4
+ constructor(filename) {
5
+ const db = new Database(filename);
6
+ this.db = db;
7
+ db.pragma("journal_mode = WAL");
8
+ }
9
+ run(sql, params) {
10
+ this.db.prepare(sql).run(params);
11
+ }
12
+ query(sql, params) {
13
+ return this.db.prepare(sql).all(params);
14
+ }
15
+ get(sql, params) {
16
+ return this.db.prepare(sql).get(params);
17
+ }
18
+ transaction(callback) {
19
+ return this.db.transaction(callback)();
20
+ }
21
+ closeDb() {
22
+ this.db.close();
23
+ }
24
+ }
25
+ export function getBetterSqliteStorage(filename) {
26
+ const db = new BetterSqliteDriver(filename);
27
+ return getSqliteStorage(db);
28
+ }
2
29
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAwC,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,OAAO,kBAAkB;IAG7B,YAAY,QAAgB;QAC1B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,MAAiB;QAChC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAI,GAAW,EAAE,MAAiB;QACrC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAQ,CAAC;IACjD,CAAC;IAED,GAAG,CAAI,GAAW,EAAE,MAAiB;QACnC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAkB,CAAC;IAC3D,CAAC;IAED,WAAW,CAAC,QAAuB;QACjC,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,EAAE,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE5C,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC"}
@@ -2,16 +2,14 @@ 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 { LocalNode, cojsonInternals } from "cojson";
6
- import { SQLiteNodeBase, StorageManagerSync } from "cojson-storage";
5
+ import { LocalNode, StorageApiSync, cojsonInternals } from "cojson";
7
6
  import { WasmCrypto } from "cojson/crypto/WasmCrypto";
8
7
  import { expect, onTestFinished, test, vi } from "vitest";
9
- import { BetterSqliteDriver } from "../betterSqliteDriver.js";
10
- import { SQLiteNode } from "../index.js";
8
+ import { getBetterSqliteStorage } from "../index.js";
11
9
  import { toSimplifiedMessages } from "./messagesTestUtils.js";
12
10
  import { trackMessages, waitFor } from "./testUtils.js";
13
11
  const Crypto = await WasmCrypto.create();
14
- async function createSQLiteStorage(defaultDbPath) {
12
+ function createSQLiteStorage(defaultDbPath) {
15
13
  const dbPath = defaultDbPath ?? join(tmpdir(), `test-${randomUUID()}.db`);
16
14
  if (!defaultDbPath) {
17
15
  onTestFinished(() => {
@@ -19,25 +17,16 @@ async function createSQLiteStorage(defaultDbPath) {
19
17
  });
20
18
  }
21
19
  return {
22
- peer: await SQLiteNode.asPeer({
23
- filename: dbPath,
24
- }),
20
+ storage: getBetterSqliteStorage(dbPath),
25
21
  dbPath,
26
22
  };
27
23
  }
28
- test("Should be able to initialize and load from empty DB", async () => {
29
- const agentSecret = Crypto.newRandomAgentSecret();
30
- const node = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
31
- node.syncManager.addPeer((await createSQLiteStorage()).peer);
32
- await new Promise((resolve) => setTimeout(resolve, 200));
33
- expect(node.syncManager.peers.storage).toBeDefined();
34
- });
35
24
  test("should sync and load data from storage", async () => {
36
25
  const agentSecret = Crypto.newRandomAgentSecret();
37
26
  const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
38
- const node1Sync = trackMessages(node1);
39
- const { peer, dbPath } = await createSQLiteStorage();
40
- node1.syncManager.addPeer(peer);
27
+ const node1Sync = trackMessages();
28
+ const { storage, dbPath } = createSQLiteStorage();
29
+ node1.setStorage(storage);
41
30
  const group = node1.createGroup();
42
31
  const map = group.createMap();
43
32
  map.set("hello", "world");
@@ -48,16 +37,13 @@ test("should sync and load data from storage", async () => {
48
37
  }, node1Sync.messages)).toMatchInlineSnapshot(`
49
38
  [
50
39
  "client -> CONTENT Group header: true new: After: 0 New: 3",
51
- "storage -> KNOWN Group sessions: header/3",
52
40
  "client -> CONTENT Map header: true new: After: 0 New: 1",
53
- "storage -> KNOWN Map sessions: header/1",
54
41
  ]
55
42
  `);
56
43
  node1Sync.restore();
57
44
  const node2 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
58
- const node2Sync = trackMessages(node2);
59
- const { peer: peer2 } = await createSQLiteStorage(dbPath);
60
- node2.syncManager.addPeer(peer2);
45
+ const node2Sync = trackMessages();
46
+ node2.setStorage(createSQLiteStorage(dbPath).storage);
61
47
  const map2 = await node2.load(map.id);
62
48
  if (map2 === "unavailable") {
63
49
  throw new Error("Map is unavailable");
@@ -70,9 +56,7 @@ test("should sync and load data from storage", async () => {
70
56
  [
71
57
  "client -> LOAD Map sessions: empty",
72
58
  "storage -> CONTENT Group header: true new: After: 0 New: 3",
73
- "client -> KNOWN Group sessions: header/3",
74
59
  "storage -> CONTENT Map header: true new: After: 0 New: 1",
75
- "client -> KNOWN Map sessions: header/1",
76
60
  ]
77
61
  `);
78
62
  node2Sync.restore();
@@ -80,9 +64,9 @@ test("should sync and load data from storage", async () => {
80
64
  test("should send an empty content message if there is no content", async () => {
81
65
  const agentSecret = Crypto.newRandomAgentSecret();
82
66
  const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
83
- const node1Sync = trackMessages(node1);
84
- const { peer, dbPath } = await createSQLiteStorage();
85
- node1.syncManager.addPeer(peer);
67
+ const node1Sync = trackMessages();
68
+ const { storage, dbPath } = createSQLiteStorage();
69
+ node1.setStorage(storage);
86
70
  const group = node1.createGroup();
87
71
  const map = group.createMap();
88
72
  await new Promise((resolve) => setTimeout(resolve, 200));
@@ -92,16 +76,13 @@ test("should send an empty content message if there is no content", async () =>
92
76
  }, node1Sync.messages)).toMatchInlineSnapshot(`
93
77
  [
94
78
  "client -> CONTENT Group header: true new: After: 0 New: 3",
95
- "storage -> KNOWN Group sessions: header/3",
96
79
  "client -> CONTENT Map header: true new: ",
97
- "storage -> KNOWN Map sessions: header/0",
98
80
  ]
99
81
  `);
100
82
  node1Sync.restore();
101
83
  const node2 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
102
- const node2Sync = trackMessages(node2);
103
- const { peer: peer2 } = await createSQLiteStorage(dbPath);
104
- node2.syncManager.addPeer(peer2);
84
+ const node2Sync = trackMessages();
85
+ node2.setStorage(createSQLiteStorage(dbPath).storage);
105
86
  const map2 = await node2.load(map.id);
106
87
  if (map2 === "unavailable") {
107
88
  throw new Error("Map is unavailable");
@@ -113,9 +94,7 @@ test("should send an empty content message if there is no content", async () =>
113
94
  [
114
95
  "client -> LOAD Map sessions: empty",
115
96
  "storage -> CONTENT Group header: true new: After: 0 New: 3",
116
- "client -> KNOWN Group sessions: header/3",
117
97
  "storage -> CONTENT Map header: true new: ",
118
- "client -> KNOWN Map sessions: header/0",
119
98
  ]
120
99
  `);
121
100
  node2Sync.restore();
@@ -123,9 +102,9 @@ test("should send an empty content message if there is no content", async () =>
123
102
  test("should load dependencies correctly (group inheritance)", async () => {
124
103
  const agentSecret = Crypto.newRandomAgentSecret();
125
104
  const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
126
- const node1Sync = trackMessages(node1);
127
- const { peer, dbPath } = await createSQLiteStorage();
128
- node1.syncManager.addPeer(peer);
105
+ const node1Sync = trackMessages();
106
+ const { storage, dbPath } = createSQLiteStorage();
107
+ node1.setStorage(storage);
129
108
  const group = node1.createGroup();
130
109
  const parentGroup = node1.createGroup();
131
110
  group.extend(parentGroup);
@@ -138,19 +117,15 @@ test("should load dependencies correctly (group inheritance)", async () => {
138
117
  ParentGroup: parentGroup.core,
139
118
  }, node1Sync.messages)).toMatchInlineSnapshot(`
140
119
  [
141
- "client -> CONTENT ParentGroup header: true new: After: 0 New: 4",
142
- "storage -> KNOWN ParentGroup sessions: header/4",
143
120
  "client -> CONTENT Group header: true new: After: 0 New: 5",
144
- "storage -> KNOWN Group sessions: header/5",
121
+ "client -> CONTENT ParentGroup header: true new: After: 0 New: 4",
145
122
  "client -> CONTENT Map header: true new: After: 0 New: 1",
146
- "storage -> KNOWN Map sessions: header/1",
147
123
  ]
148
124
  `);
149
125
  node1Sync.restore();
150
126
  const node2 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
151
- const node2Sync = trackMessages(node2);
152
- const { peer: peer2 } = await createSQLiteStorage(dbPath);
153
- node2.syncManager.addPeer(peer2);
127
+ const node2Sync = trackMessages();
128
+ node2.setStorage(createSQLiteStorage(dbPath).storage);
154
129
  await node2.load(map.id);
155
130
  expect(node2.expectCoValueLoaded(map.id)).toBeTruthy();
156
131
  expect(node2.expectCoValueLoaded(group.id)).toBeTruthy();
@@ -163,20 +138,17 @@ test("should load dependencies correctly (group inheritance)", async () => {
163
138
  [
164
139
  "client -> LOAD Map sessions: empty",
165
140
  "storage -> CONTENT ParentGroup header: true new: After: 0 New: 4",
166
- "client -> KNOWN ParentGroup sessions: header/4",
167
141
  "storage -> CONTENT Group header: true new: After: 0 New: 5",
168
- "client -> KNOWN Group sessions: header/5",
169
142
  "storage -> CONTENT Map header: true new: After: 0 New: 1",
170
- "client -> KNOWN Map sessions: header/1",
171
143
  ]
172
144
  `);
173
145
  });
174
146
  test("should not send the same dependency value twice", async () => {
175
147
  const agentSecret = Crypto.newRandomAgentSecret();
176
148
  const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
177
- const node1Sync = trackMessages(node1);
178
- const { peer, dbPath } = await createSQLiteStorage();
179
- node1.syncManager.addPeer(peer);
149
+ const node1Sync = trackMessages();
150
+ const { storage, dbPath } = createSQLiteStorage();
151
+ node1.setStorage(storage);
180
152
  const group = node1.createGroup();
181
153
  const parentGroup = node1.createGroup();
182
154
  group.extend(parentGroup);
@@ -187,9 +159,8 @@ test("should not send the same dependency value twice", async () => {
187
159
  await new Promise((resolve) => setTimeout(resolve, 200));
188
160
  node1Sync.restore();
189
161
  const node2 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
190
- const node2Sync = trackMessages(node2);
191
- const { peer: peer2 } = await createSQLiteStorage(dbPath);
192
- node2.syncManager.addPeer(peer2);
162
+ const node2Sync = trackMessages();
163
+ node2.setStorage(createSQLiteStorage(dbPath).storage);
193
164
  await node2.load(map.id);
194
165
  await node2.load(mapFromParent.id);
195
166
  expect(node2.expectCoValueLoaded(map.id)).toBeTruthy();
@@ -205,30 +176,26 @@ test("should not send the same dependency value twice", async () => {
205
176
  [
206
177
  "client -> LOAD Map sessions: empty",
207
178
  "storage -> CONTENT ParentGroup header: true new: After: 0 New: 4",
208
- "client -> KNOWN ParentGroup sessions: header/4",
209
179
  "storage -> CONTENT Group header: true new: After: 0 New: 5",
210
- "client -> KNOWN Group sessions: header/5",
211
180
  "storage -> CONTENT Map header: true new: After: 0 New: 1",
212
- "client -> KNOWN Map sessions: header/1",
213
181
  "client -> LOAD MapFromParent sessions: empty",
214
182
  "storage -> CONTENT MapFromParent header: true new: After: 0 New: 1",
215
- "client -> KNOWN MapFromParent sessions: header/1",
216
183
  ]
217
184
  `);
218
185
  });
219
186
  test("should recover from data loss", async () => {
220
187
  const agentSecret = Crypto.newRandomAgentSecret();
221
188
  const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
222
- const node1Sync = trackMessages(node1);
223
- const { peer, dbPath } = await createSQLiteStorage();
224
- node1.syncManager.addPeer(peer);
189
+ const node1Sync = trackMessages();
190
+ const { storage, dbPath } = createSQLiteStorage();
191
+ node1.setStorage(storage);
225
192
  const group = node1.createGroup();
226
193
  const map = group.createMap();
227
194
  map.set("0", 0);
228
195
  await new Promise((resolve) => setTimeout(resolve, 200));
229
196
  const mock = vi
230
- .spyOn(StorageManagerSync.prototype, "handleSyncMessage")
231
- .mockImplementation(() => Promise.resolve());
197
+ .spyOn(StorageApiSync.prototype, "store")
198
+ .mockImplementation(() => false);
232
199
  map.set("1", 1);
233
200
  map.set("2", 2);
234
201
  await new Promise((resolve) => setTimeout(resolve, 200));
@@ -241,20 +208,14 @@ test("should recover from data loss", async () => {
241
208
  }, node1Sync.messages)).toMatchInlineSnapshot(`
242
209
  [
243
210
  "client -> CONTENT Group header: true new: After: 0 New: 3",
244
- "storage -> KNOWN Group sessions: header/3",
245
211
  "client -> CONTENT Map header: true new: After: 0 New: 1",
246
- "storage -> KNOWN Map sessions: header/1",
247
- "client -> CONTENT Map header: false new: After: 3 New: 1",
248
- "storage -> KNOWN CORRECTION Map sessions: header/1",
249
212
  "client -> CONTENT Map header: false new: After: 1 New: 3",
250
- "storage -> KNOWN Map sessions: header/4",
251
213
  ]
252
214
  `);
253
215
  node1Sync.restore();
254
216
  const node2 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
255
- const node2Sync = trackMessages(node2);
256
- const { peer: peer2 } = await createSQLiteStorage(dbPath);
257
- node2.syncManager.addPeer(peer2);
217
+ const node2Sync = trackMessages();
218
+ node2.setStorage(createSQLiteStorage(dbPath).storage);
258
219
  const map2 = await node2.load(map.id);
259
220
  if (map2 === "unavailable") {
260
221
  throw new Error("Map is unavailable");
@@ -272,9 +233,7 @@ test("should recover from data loss", async () => {
272
233
  [
273
234
  "client -> LOAD Map sessions: empty",
274
235
  "storage -> CONTENT Group header: true new: After: 0 New: 3",
275
- "client -> KNOWN Group sessions: header/3",
276
236
  "storage -> CONTENT Map header: true new: After: 0 New: 4",
277
- "client -> KNOWN Map sessions: header/4",
278
237
  ]
279
238
  `);
280
239
  });
@@ -291,18 +250,18 @@ test("should recover missing dependencies from storage", async () => {
291
250
  });
292
251
  node1.syncManager.addPeer(serverPeer);
293
252
  serverNode.syncManager.addPeer(clientPeer);
294
- const handleSyncMessage = StorageManagerSync.prototype.handleSyncMessage;
253
+ const store = StorageApiSync.prototype.store;
295
254
  const mock = vi
296
- .spyOn(StorageManagerSync.prototype, "handleSyncMessage")
297
- .mockImplementation(function (msg) {
298
- if (msg.action === "content" &&
299
- [group.core.id, account.core.id].includes(msg.id)) {
300
- return Promise.resolve();
255
+ .spyOn(StorageApiSync.prototype, "store")
256
+ .mockImplementation(function (data, correctionCallback) {
257
+ if (data[0]?.id &&
258
+ [group.core.id, account.core.id].includes(data[0].id)) {
259
+ return false;
301
260
  }
302
- return handleSyncMessage.call(this, msg);
261
+ return store.call(this, data, correctionCallback);
303
262
  });
304
- const { peer, dbPath } = await createSQLiteStorage();
305
- node1.syncManager.addPeer(peer);
263
+ const { storage, dbPath } = createSQLiteStorage();
264
+ node1.setStorage(storage);
306
265
  const group = node1.createGroup();
307
266
  group.addMember("everyone", "writer");
308
267
  const map = group.createMap();
@@ -316,8 +275,7 @@ test("should recover missing dependencies from storage", async () => {
316
275
  });
317
276
  node2.syncManager.addPeer(serverPeer2);
318
277
  serverNode.syncManager.addPeer(clientPeer2);
319
- const { peer: peer2 } = await createSQLiteStorage(dbPath);
320
- node2.syncManager.addPeer(peer2);
278
+ node2.setStorage(createSQLiteStorage(dbPath).storage);
321
279
  const map2 = await node2.load(map.id);
322
280
  if (map2 === "unavailable") {
323
281
  throw new Error("Map is unavailable");
@@ -329,15 +287,15 @@ test("should recover missing dependencies from storage", async () => {
329
287
  test("should sync multiple sessions in a single content message", async () => {
330
288
  const agentSecret = Crypto.newRandomAgentSecret();
331
289
  const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
332
- const { peer, dbPath } = await createSQLiteStorage();
333
- node1.syncManager.addPeer(peer);
290
+ const { storage, dbPath } = createSQLiteStorage();
291
+ node1.setStorage(storage);
334
292
  const group = node1.createGroup();
335
293
  const map = group.createMap();
336
294
  map.set("hello", "world");
337
295
  await new Promise((resolve) => setTimeout(resolve, 200));
338
296
  node1.gracefulShutdown();
339
297
  const node2 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
340
- node2.syncManager.addPeer((await createSQLiteStorage(dbPath)).peer);
298
+ node2.setStorage(createSQLiteStorage(dbPath).storage);
341
299
  const map2 = await node2.load(map.id);
342
300
  if (map2 === "unavailable") {
343
301
  throw new Error("Map is unavailable");
@@ -347,8 +305,8 @@ test("should sync multiple sessions in a single content message", async () => {
347
305
  await map2.core.waitForSync();
348
306
  node2.gracefulShutdown();
349
307
  const node3 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
350
- const node3Sync = trackMessages(node3);
351
- node3.syncManager.addPeer((await createSQLiteStorage(dbPath)).peer);
308
+ const node3Sync = trackMessages();
309
+ node3.setStorage(createSQLiteStorage(dbPath).storage);
352
310
  const map3 = await node3.load(map.id);
353
311
  if (map3 === "unavailable") {
354
312
  throw new Error("Map is unavailable");
@@ -361,9 +319,7 @@ test("should sync multiple sessions in a single content message", async () => {
361
319
  [
362
320
  "client -> LOAD Map sessions: empty",
363
321
  "storage -> CONTENT Group header: true new: After: 0 New: 3",
364
- "client -> KNOWN Group sessions: header/3",
365
322
  "storage -> CONTENT Map header: true new: After: 0 New: 1 | After: 0 New: 1",
366
- "client -> KNOWN Map sessions: header/2",
367
323
  ]
368
324
  `);
369
325
  node3Sync.restore();
@@ -371,8 +327,8 @@ test("should sync multiple sessions in a single content message", async () => {
371
327
  test("large coValue upload streaming", async () => {
372
328
  const agentSecret = Crypto.newRandomAgentSecret();
373
329
  const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
374
- const { peer, dbPath } = await createSQLiteStorage();
375
- node1.syncManager.addPeer(peer);
330
+ const { storage, dbPath } = createSQLiteStorage();
331
+ node1.setStorage(storage);
376
332
  const group = node1.createGroup();
377
333
  const largeMap = group.createMap();
378
334
  const dataSize = 1 * 1024 * 200;
@@ -386,9 +342,8 @@ test("large coValue upload streaming", async () => {
386
342
  await largeMap.core.waitForSync();
387
343
  node1.gracefulShutdown();
388
344
  const node2 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
389
- const node2Sync = trackMessages(node2);
390
- const { peer: peer2 } = await createSQLiteStorage(dbPath);
391
- node2.syncManager.addPeer(peer2);
345
+ const node2Sync = trackMessages();
346
+ node2.setStorage(createSQLiteStorage(dbPath).storage);
392
347
  const largeMapOnNode2 = await node2.load(largeMap.id);
393
348
  if (largeMapOnNode2 === "unavailable") {
394
349
  throw new Error("Map is unavailable");
@@ -403,35 +358,11 @@ test("large coValue upload streaming", async () => {
403
358
  }, node2Sync.messages)).toMatchInlineSnapshot(`
404
359
  [
405
360
  "client -> LOAD Map sessions: empty",
406
- "storage -> KNOWN Map sessions: header/200",
407
361
  "storage -> CONTENT Group header: true new: After: 0 New: 3",
408
- "client -> KNOWN Group sessions: header/3",
409
362
  "storage -> CONTENT Map header: true new: After: 0 New: 97",
410
- "client -> KNOWN Map sessions: header/97",
411
363
  "storage -> CONTENT Map header: true new: After: 97 New: 97",
412
- "client -> KNOWN Map sessions: header/194",
413
364
  "storage -> CONTENT Map header: true new: After: 194 New: 6",
414
- "client -> KNOWN Map sessions: header/200",
415
365
  ]
416
366
  `);
417
367
  });
418
- test("should close the db when the node is closed", async () => {
419
- const agentSecret = Crypto.newRandomAgentSecret();
420
- const node1 = new LocalNode(agentSecret, Crypto.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
421
- const dbPath = join(tmpdir(), `test-${randomUUID()}.db`);
422
- const db = new BetterSqliteDriver(dbPath);
423
- const peer = SQLiteNodeBase.create({
424
- db,
425
- localNodeName: "test",
426
- maxBlockingTime: 500,
427
- });
428
- const spy = vi.spyOn(db, "closeDb");
429
- node1.syncManager.addPeer(peer);
430
- await new Promise((resolve) => setTimeout(resolve, 10));
431
- expect(spy).not.toHaveBeenCalled();
432
- node1.gracefulShutdown();
433
- await new Promise((resolve) => setTimeout(resolve, 10));
434
- expect(spy).toHaveBeenCalled();
435
- unlinkSync(dbPath);
436
- });
437
368
  //# sourceMappingURL=storage.sqlite.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.sqlite.test.js","sourceRoot":"","sources":["../../src/tests/storage.sqlite.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.sqlite.test.js","sourceRoot":"","sources":["../../src/tests/storage.sqlite.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { LocalNode, SyncMessage } from "cojson";
2
- export declare function trackMessages(node: LocalNode): {
1
+ import type { SyncMessage } from "cojson";
2
+ export declare function trackMessages(): {
3
3
  messages: {
4
4
  from: "client" | "server" | "storage";
5
5
  msg: SyncMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAIrD,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS;;cAEnC,QAAQ,GAAG,QAAQ,GAAG,SAAS;aAChC,WAAW;;;EAoCnB;AACD,wBAAgB,OAAO,CACrB,QAAQ,EAAE,MAAM,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,iBA2BnE"}
1
+ {"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,WAAW,EAAE,MAAM,QAAQ,CAAC;AAI9D,wBAAgB,aAAa;;cAEnB,QAAQ,GAAG,QAAQ,GAAG,SAAS;aAChC,WAAW;;;EAgEnB;AACD,wBAAgB,OAAO,CACrB,QAAQ,EAAE,MAAM,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,iBA2BnE"}
@@ -1,26 +1,50 @@
1
- import { StorageManagerSync } from "cojson-storage";
1
+ import { StorageApiSync } from "cojson";
2
2
  import { onTestFinished } from "vitest";
3
- export function trackMessages(node) {
3
+ export function trackMessages() {
4
4
  const messages = [];
5
- const originalHandleSyncMessage = StorageManagerSync.prototype.handleSyncMessage;
6
- const originalNodeSyncMessage = node.syncManager.handleSyncMessage;
7
- StorageManagerSync.prototype.handleSyncMessage = async function (msg) {
5
+ const originalLoad = StorageApiSync.prototype.load;
6
+ const originalStore = StorageApiSync.prototype.store;
7
+ StorageApiSync.prototype.load = async function (id, callback, done) {
8
8
  messages.push({
9
9
  from: "client",
10
- msg,
10
+ msg: {
11
+ action: "load",
12
+ id: id,
13
+ header: false,
14
+ sessions: {},
15
+ },
11
16
  });
12
- return originalHandleSyncMessage.call(this, msg);
17
+ return originalLoad.call(this, id, (msg) => {
18
+ messages.push({
19
+ from: "storage",
20
+ msg,
21
+ });
22
+ callback(msg);
23
+ }, done);
13
24
  };
14
- node.syncManager.handleSyncMessage = async function (msg, peer) {
15
- messages.push({
16
- from: "storage",
17
- msg,
25
+ StorageApiSync.prototype.store = function (data, correctionCallback) {
26
+ for (const msg of data) {
27
+ messages.push({
28
+ from: "client",
29
+ msg,
30
+ });
31
+ }
32
+ return originalStore.call(this, data, (msg) => {
33
+ messages.push({
34
+ from: "storage",
35
+ msg: {
36
+ action: "known",
37
+ isCorrection: true,
38
+ ...msg,
39
+ },
40
+ });
41
+ correctionCallback(msg);
18
42
  });
19
- return originalNodeSyncMessage.call(this, msg, peer);
20
43
  };
21
44
  const restore = () => {
22
- StorageManagerSync.prototype.handleSyncMessage = originalHandleSyncMessage;
23
- node.syncManager.handleSyncMessage = originalNodeSyncMessage;
45
+ StorageApiSync.prototype.load = originalLoad;
46
+ StorageApiSync.prototype.store = originalStore;
47
+ messages.length = 0;
24
48
  };
25
49
  onTestFinished(() => {
26
50
  restore();
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,MAAM,QAAQ,GAGR,EAAE,CAAC;IAET,MAAM,yBAAyB,GAC7B,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,CAAC;IACjD,MAAM,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;IAEnE,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,GAAG,KAAK,WAAW,GAAG;QAClE,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,QAAQ;YACd,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,KAAK,WAAW,GAAG,EAAE,IAAI;QAC5D,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,SAAS;YACf,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,GAAG,yBAAyB,CAAC;QAC3E,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,uBAAuB,CAAC;IAC/D,CAAC,CAAC;IAEF,cAAc,CAAC,GAAG,EAAE;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ;QACR,OAAO;KACR,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,OAAO,CACrB,QAAkE;IAElE,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC;gBACH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC/C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YACtC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;YAE1C,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;gBACjB,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,CAAC;gBACnB,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"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"}