cojson-storage-do-sqlite 0.18.28

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.
Files changed (39) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/CHANGELOG.md +9 -0
  3. package/LICENSE.txt +19 -0
  4. package/README.md +4 -0
  5. package/dist/index.d.ts +15 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +37 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/tests/dosqlite.d.ts +89 -0
  10. package/dist/tests/dosqlite.d.ts.map +1 -0
  11. package/dist/tests/dosqlite.js +489 -0
  12. package/dist/tests/dosqlite.js.map +1 -0
  13. package/dist/tests/dosqlite.test.d.ts +2 -0
  14. package/dist/tests/dosqlite.test.d.ts.map +1 -0
  15. package/dist/tests/dosqlite.test.js +284 -0
  16. package/dist/tests/dosqlite.test.js.map +1 -0
  17. package/dist/tests/messagesTestUtils.d.ts +10 -0
  18. package/dist/tests/messagesTestUtils.d.ts.map +1 -0
  19. package/dist/tests/messagesTestUtils.js +42 -0
  20. package/dist/tests/messagesTestUtils.js.map +1 -0
  21. package/dist/tests/testUtils.d.ts +10 -0
  22. package/dist/tests/testUtils.d.ts.map +1 -0
  23. package/dist/tests/testUtils.js +88 -0
  24. package/dist/tests/testUtils.js.map +1 -0
  25. package/dist/tests/vitest.config.d.ts +3 -0
  26. package/dist/tests/vitest.config.d.ts.map +1 -0
  27. package/dist/tests/vitest.config.js +8 -0
  28. package/dist/tests/vitest.config.js.map +1 -0
  29. package/package.json +28 -0
  30. package/src/index.ts +60 -0
  31. package/src/tests/dosqlite.test.ts +338 -0
  32. package/src/tests/dosqlite.ts +771 -0
  33. package/src/tests/messagesTestUtils.ts +72 -0
  34. package/src/tests/testUtils.ts +112 -0
  35. package/src/tests/tsconfig.json +43 -0
  36. package/src/tests/vitest.config.ts +8 -0
  37. package/src/tests/worker-configuration.d.ts +9681 -0
  38. package/src/tests/wrangler.jsonc +20 -0
  39. package/tsconfig.json +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dosqlite.js","sourceRoot":"","sources":["../../src/tests/dosqlite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dosqlite.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dosqlite.test.d.ts","sourceRoot":"","sources":["../../src/tests/dosqlite.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,284 @@
1
+ import { dirname, join } from "path";
2
+ import { randomUUID } from "node:crypto";
3
+ import { fileURLToPath } from "url";
4
+ import { execa } from "execa";
5
+ import { afterAll, beforeAll, describe, expect, test } from "vitest";
6
+ // @ts-ignore
7
+ const currentDir = dirname(fileURLToPath(import.meta.url));
8
+ const packageRoot = join(currentDir, "../..");
9
+ const projectRoot = join(packageRoot, "../..");
10
+ describe("Cloudflare DurableObject SQL storage", () => {
11
+ let server;
12
+ let url;
13
+ beforeAll(async () => {
14
+ server = execa(join(projectRoot, "node_modules/.bin/wrangler"), ["dev"], {
15
+ cwd: currentDir,
16
+ });
17
+ // Wait for server to be ready
18
+ url = await new Promise((resolve, reject) => {
19
+ server.stdout?.on("data", (data) => {
20
+ console.log("stdout server:", data.toString());
21
+ if (data.toString().includes("Ready on http://localhost:")) {
22
+ resolve(new URL(data.toString().split("Ready on ")[1].trim()));
23
+ }
24
+ });
25
+ server.stderr?.on("data", (data) => {
26
+ console.log("stderr server:", data.toString());
27
+ });
28
+ // Reject if server fails to start within 10 seconds
29
+ setTimeout(() => {
30
+ reject(new Error("Server failed to start within timeout"));
31
+ }, 10000);
32
+ });
33
+ });
34
+ afterAll(async () => {
35
+ server.kill();
36
+ });
37
+ test("should sync and load data from storage", async () => {
38
+ const doId = randomUUID();
39
+ const res = await fetch(`${url}sync-and-load`, {
40
+ method: "POST",
41
+ headers: {
42
+ "Content-Type": "application/json",
43
+ },
44
+ body: JSON.stringify({ doId }),
45
+ });
46
+ const json = (await res.json());
47
+ if (!(typeof json === "object" &&
48
+ json !== null &&
49
+ "messageRes1" in json &&
50
+ "messageRes2" in json &&
51
+ "map2Hello" in json)) {
52
+ throw new Error("Invalid response");
53
+ }
54
+ expect(json.messageRes1).toMatchInlineSnapshot(`
55
+ [
56
+ "client -> CONTENT Group header: true new: After: 0 New: 3",
57
+ "client -> CONTENT Map header: true new: After: 0 New: 1",
58
+ ]
59
+ `);
60
+ expect(json.map2Hello).toEqual("world");
61
+ expect(json.messageRes2).toMatchInlineSnapshot(`
62
+ [
63
+ "client -> LOAD Map sessions: empty",
64
+ "storage -> CONTENT Group header: true new: After: 0 New: 3",
65
+ "storage -> CONTENT Map header: true new: After: 0 New: 1",
66
+ ]
67
+ `);
68
+ });
69
+ test("should send an empty content message if there is no content", async () => {
70
+ const doId = randomUUID();
71
+ const res = await fetch(`${url}sync-and-load-empty`, {
72
+ method: "POST",
73
+ headers: {
74
+ "Content-Type": "application/json",
75
+ },
76
+ body: JSON.stringify({ doId }),
77
+ });
78
+ const json = (await res.json());
79
+ if (!(typeof json === "object" &&
80
+ json !== null &&
81
+ "messageRes1" in json &&
82
+ "messageRes2" in json)) {
83
+ throw new Error("Invalid response");
84
+ }
85
+ expect(json.messageRes1).toMatchInlineSnapshot(`
86
+ [
87
+ "client -> CONTENT Group header: true new: After: 0 New: 3",
88
+ "client -> CONTENT Map header: true new: ",
89
+ ]
90
+ `);
91
+ expect(json.messageRes2).toMatchInlineSnapshot(`
92
+ [
93
+ "client -> LOAD Map sessions: empty",
94
+ "storage -> CONTENT Group header: true new: After: 0 New: 3",
95
+ "storage -> CONTENT Map header: true new: ",
96
+ ]
97
+ `);
98
+ });
99
+ test("should load dependencies correctly (group inheritance)", async () => {
100
+ const doId = randomUUID();
101
+ const res = await fetch(`${url}group-load`, {
102
+ method: "POST",
103
+ headers: {
104
+ "Content-Type": "application/json",
105
+ },
106
+ body: JSON.stringify({ doId }),
107
+ });
108
+ const json = (await res.json());
109
+ if (!(typeof json === "object" &&
110
+ json !== null &&
111
+ "messageRes1" in json &&
112
+ "messageRes2" in json &&
113
+ "mapLoaded" in json &&
114
+ "groupLoaded" in json &&
115
+ "parentGroupLoaded" in json)) {
116
+ throw new Error("Invalid response");
117
+ }
118
+ expect(json.messageRes1).toMatchInlineSnapshot(`
119
+ [
120
+ "client -> CONTENT Group header: true new: After: 0 New: 3",
121
+ "client -> CONTENT ParentGroup header: true new: After: 0 New: 3",
122
+ "client -> CONTENT Group header: false new: After: 3 New: 2",
123
+ "client -> CONTENT Map header: true new: After: 0 New: 1",
124
+ ]
125
+ `);
126
+ expect(json.mapLoaded).toBeTruthy();
127
+ expect(json.groupLoaded).toBeTruthy();
128
+ expect(json.parentGroupLoaded).toBeTruthy();
129
+ expect(json.messageRes2).toMatchInlineSnapshot(`
130
+ [
131
+ "client -> LOAD Map sessions: empty",
132
+ "storage -> CONTENT ParentGroup header: true new: After: 0 New: 3",
133
+ "storage -> CONTENT Group header: true new: After: 0 New: 5",
134
+ "storage -> CONTENT Map header: true new: After: 0 New: 1",
135
+ ]
136
+ `);
137
+ });
138
+ test("should not send the same dependency value twice", async () => {
139
+ const doId = randomUUID();
140
+ const res = await fetch(`${url}group-load-duplicate`, {
141
+ method: "POST",
142
+ headers: {
143
+ "Content-Type": "application/json",
144
+ },
145
+ body: JSON.stringify({ doId }),
146
+ });
147
+ const json = (await res.json());
148
+ if (!(typeof json === "object" &&
149
+ json !== null &&
150
+ "messageRes1" in json &&
151
+ "mapLoaded" in json &&
152
+ "mapFromParentLoaded" in json &&
153
+ "groupLoaded" in json &&
154
+ "parentGroupLoaded" in json)) {
155
+ console.log(json);
156
+ throw new Error("Invalid response");
157
+ }
158
+ expect(json.mapLoaded).toBeTruthy();
159
+ expect(json.mapFromParentLoaded).toBeTruthy();
160
+ expect(json.groupLoaded).toBeTruthy();
161
+ expect(json.parentGroupLoaded).toBeTruthy();
162
+ expect(json.messageRes1).toMatchInlineSnapshot(`
163
+ [
164
+ "client -> LOAD Map sessions: empty",
165
+ "storage -> CONTENT ParentGroup header: true new: After: 0 New: 3",
166
+ "storage -> CONTENT Group header: true new: After: 0 New: 5",
167
+ "storage -> CONTENT Map header: true new: After: 0 New: 1",
168
+ "client -> LOAD MapFromParent sessions: empty",
169
+ "storage -> CONTENT MapFromParent header: true new: After: 0 New: 1",
170
+ ]
171
+ `);
172
+ });
173
+ test("should recover from data loss", async () => {
174
+ const doId = randomUUID();
175
+ const res = await fetch(`${url}data-loss-recovery`, {
176
+ method: "POST",
177
+ headers: {
178
+ "Content-Type": "application/json",
179
+ },
180
+ body: JSON.stringify({ doId }),
181
+ });
182
+ const json = (await res.json());
183
+ if (!(typeof json === "object" &&
184
+ json !== null &&
185
+ "messageRes1" in json &&
186
+ "messageRes2" in json &&
187
+ "mapContent" in json)) {
188
+ console.log(json);
189
+ throw new Error("Invalid response");
190
+ }
191
+ expect(json.messageRes1).toMatchInlineSnapshot(`
192
+ [
193
+ "client -> CONTENT Group header: true new: After: 0 New: 3",
194
+ "client -> CONTENT Map header: true new: After: 0 New: 1",
195
+ "client -> CONTENT Map header: false new: After: 3 New: 1",
196
+ "storage -> KNOWN CORRECTION Map sessions: header/4",
197
+ "client -> CONTENT Map header: false new: After: 1 New: 3",
198
+ ]
199
+ `);
200
+ expect(json.mapContent).toEqual({
201
+ "0": 0,
202
+ "1": 1,
203
+ "2": 2,
204
+ "3": 3,
205
+ });
206
+ expect(json.messageRes2).toMatchInlineSnapshot(`
207
+ [
208
+ "client -> LOAD Map sessions: empty",
209
+ "storage -> CONTENT Group header: true new: After: 0 New: 3",
210
+ "storage -> CONTENT Map header: true new: After: 0 New: 4",
211
+ ]
212
+ `);
213
+ });
214
+ test("should recover missing dependencies from storage", async () => {
215
+ const doId = randomUUID();
216
+ const res = await fetch(`${url}missing-dependency-recovery`, {
217
+ method: "POST",
218
+ headers: {
219
+ "Content-Type": "application/json",
220
+ },
221
+ body: JSON.stringify({ doId }),
222
+ });
223
+ const json = (await res.json());
224
+ if (!(typeof json === "object" && json !== null && "mapContent" in json)) {
225
+ console.log(json);
226
+ throw new Error("Invalid response");
227
+ }
228
+ expect(json.mapContent).toEqual({
229
+ "0": 0,
230
+ });
231
+ });
232
+ test("should sync multiple sessions in a single content message", async () => {
233
+ const doId = randomUUID();
234
+ const res = await fetch(`${url}multiple-sessions`, {
235
+ method: "POST",
236
+ headers: {
237
+ "Content-Type": "application/json",
238
+ },
239
+ body: JSON.stringify({ doId }),
240
+ });
241
+ const json = (await res.json());
242
+ if (!(typeof json === "object" &&
243
+ json !== null &&
244
+ "messageRes1" in json &&
245
+ "map2Hello" in json &&
246
+ "map3Hello" in json)) {
247
+ console.log(json);
248
+ throw new Error("Invalid response");
249
+ }
250
+ expect(json.map2Hello).toBe("world");
251
+ expect(json.map3Hello).toBe("world2");
252
+ expect(json.messageRes1).toMatchInlineSnapshot(`
253
+ [
254
+ "client -> LOAD Map sessions: empty",
255
+ "storage -> CONTENT Group header: true new: After: 0 New: 3",
256
+ "storage -> CONTENT Map header: true new: After: 0 New: 1 | After: 0 New: 1",
257
+ ]
258
+ `);
259
+ });
260
+ test("large coValue upload streaming", async () => {
261
+ const doId = randomUUID();
262
+ const res = await fetch(`${url}large-covalue-upload`, {
263
+ method: "POST",
264
+ headers: {
265
+ "Content-Type": "application/json",
266
+ },
267
+ body: JSON.stringify({ doId }),
268
+ });
269
+ const json = (await res.json());
270
+ if (!(typeof json === "object" && json !== null && "messageRes1" in json)) {
271
+ console.log(json);
272
+ throw new Error("Invalid response");
273
+ }
274
+ expect(json.messageRes1).toMatchInlineSnapshot(`
275
+ [
276
+ "client -> LOAD Map sessions: empty",
277
+ "storage -> CONTENT Group header: true new: After: 0 New: 3",
278
+ "storage -> CONTENT Map header: true new: After: 0 New: 193",
279
+ "storage -> CONTENT Map header: true new: After: 193 New: 7",
280
+ ]
281
+ `);
282
+ });
283
+ });
284
+ //# sourceMappingURL=dosqlite.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dosqlite.test.js","sourceRoot":"","sources":["../../src/tests/dosqlite.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { CoValueCore, SyncMessage } from "cojson";
2
+ export declare function toSimplifiedMessages(coValues: Record<string, CoValueCore>, messages: {
3
+ from: "client" | "server" | "storage";
4
+ msg: SyncMessage;
5
+ }[]): string[];
6
+ export declare function debugMessages(coValues: Record<string, CoValueCore>, messages: {
7
+ from: "client" | "server" | "storage";
8
+ msg: SyncMessage;
9
+ }[]): void;
10
+ //# sourceMappingURL=messagesTestUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messagesTestUtils.d.ts","sourceRoot":"","sources":["../../src/tests/messagesTestUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAuB,WAAW,EAAE,MAAM,QAAQ,CAAC;AA2B5E,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACrC,QAAQ,EAAE;IACR,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,GAAG,EAAE,WAAW,CAAC;CAClB,EAAE,YA6BJ;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACrC,QAAQ,EAAE;IACR,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,GAAG,EAAE,WAAW,CAAC;CAClB,EAAE,QAGJ"}
@@ -0,0 +1,42 @@
1
+ function simplifySessions(msg) {
2
+ const count = Object.values(msg.sessions).reduce((acc, session) => acc + session, 0);
3
+ if (msg.header) {
4
+ return `header/${count}`;
5
+ }
6
+ return "empty";
7
+ }
8
+ function simplifyNewContent(content) {
9
+ if (!content) {
10
+ return undefined;
11
+ }
12
+ return Object.values(content)
13
+ .map((c) => `After: ${c.after} New: ${c.newTransactions.length}`)
14
+ .join(" | ");
15
+ }
16
+ export function toSimplifiedMessages(coValues, messages) {
17
+ function getCoValue(id) {
18
+ for (const [name, coValue] of Object.entries(coValues)) {
19
+ if (coValue.id === id) {
20
+ return name;
21
+ }
22
+ }
23
+ return `unknown/${id}`;
24
+ }
25
+ function toDebugString(from, msg) {
26
+ switch (msg.action) {
27
+ case "known":
28
+ return `${from} -> KNOWN ${msg.isCorrection ? "CORRECTION " : ""}${getCoValue(msg.id)} sessions: ${simplifySessions(msg)}`;
29
+ case "load":
30
+ return `${from} -> LOAD ${getCoValue(msg.id)} sessions: ${simplifySessions(msg)}`;
31
+ case "done":
32
+ return `${from} -> DONE ${getCoValue(msg.id)}`;
33
+ case "content":
34
+ return `${from} -> CONTENT ${getCoValue(msg.id)} header: ${Boolean(msg.header)} new: ${simplifyNewContent(msg.new)}`;
35
+ }
36
+ }
37
+ return messages.map((m) => toDebugString(m.from, m.msg));
38
+ }
39
+ export function debugMessages(coValues, messages) {
40
+ console.log(toSimplifiedMessages(coValues, messages));
41
+ }
42
+ //# sourceMappingURL=messagesTestUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messagesTestUtils.js","sourceRoot":"","sources":["../../src/tests/messagesTestUtils.ts"],"names":[],"mappings":"AAEA,SAAS,gBAAgB,CAAC,GAA0C;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC9C,CAAC,GAAW,EAAE,OAAe,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,EAC/C,CAAC,CACF,CAAC;IAEF,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,UAAU,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAqD;IAErD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;SAChE,IAAI,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAAqC,EACrC,QAGG;IAEH,SAAS,UAAU,CAAC,EAAU;QAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,WAAW,EAAE,EAAE,CAAC;IACzB,CAAC;IAED,SAAS,aAAa,CACpB,IAAqC,EACrC,GAAgB;QAEhB,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,OAAO;gBACV,OAAO,GAAG,IAAI,aAAa,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7H,KAAK,MAAM;gBACT,OAAO,GAAG,IAAI,YAAY,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACpF,KAAK,MAAM;gBACT,OAAO,GAAG,IAAI,YAAY,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,KAAK,SAAS;gBACZ,OAAO,GAAG,IAAI,eAAe,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACzH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,QAAqC,EACrC,QAGG;IAEH,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { SyncMessage } from "cojson";
2
+ export declare function trackMessages(): {
3
+ messages: {
4
+ from: "client" | "server" | "storage";
5
+ msg: SyncMessage;
6
+ }[];
7
+ restore: () => void;
8
+ };
9
+ export declare function waitFor(callback: () => boolean | undefined | Promise<boolean | undefined>): Promise<void>;
10
+ //# sourceMappingURL=testUtils.d.ts.map
@@ -0,0 +1 @@
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;;;EA2EnB;AACD,wBAAgB,OAAO,CACrB,QAAQ,EAAE,MAAM,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,iBA2BnE"}
@@ -0,0 +1,88 @@
1
+ import { StorageApiSync } from "cojson";
2
+ import { onTestFinished } from "vitest";
3
+ export function trackMessages() {
4
+ const messages = [];
5
+ const originalLoad = StorageApiSync.prototype.load;
6
+ const originalStore = StorageApiSync.prototype.store;
7
+ StorageApiSync.prototype.load = async function (id, callback, done) {
8
+ messages.push({
9
+ from: "client",
10
+ msg: {
11
+ action: "load",
12
+ id: id,
13
+ header: false,
14
+ sessions: {},
15
+ },
16
+ });
17
+ return originalLoad.call(this, id, (msg) => {
18
+ messages.push({
19
+ from: "storage",
20
+ msg,
21
+ });
22
+ callback(msg);
23
+ }, done);
24
+ };
25
+ StorageApiSync.prototype.store = function (data, correctionCallback) {
26
+ messages.push({
27
+ from: "client",
28
+ msg: data,
29
+ });
30
+ return originalStore.call(this, data, (msg) => {
31
+ messages.push({
32
+ from: "storage",
33
+ msg: {
34
+ action: "known",
35
+ isCorrection: true,
36
+ ...msg,
37
+ },
38
+ });
39
+ const correctionMessages = correctionCallback(msg);
40
+ if (correctionMessages) {
41
+ for (const msg of correctionMessages) {
42
+ messages.push({
43
+ from: "client",
44
+ msg,
45
+ });
46
+ }
47
+ }
48
+ return correctionMessages;
49
+ });
50
+ };
51
+ const restore = () => {
52
+ StorageApiSync.prototype.load = originalLoad;
53
+ StorageApiSync.prototype.store = originalStore;
54
+ messages.length = 0;
55
+ };
56
+ onTestFinished(() => {
57
+ restore();
58
+ });
59
+ return {
60
+ messages,
61
+ restore,
62
+ };
63
+ }
64
+ export function waitFor(callback) {
65
+ return new Promise((resolve, reject) => {
66
+ const checkPassed = async () => {
67
+ try {
68
+ return { ok: await callback(), error: null };
69
+ }
70
+ catch (error) {
71
+ return { ok: false, error };
72
+ }
73
+ };
74
+ let retries = 0;
75
+ const interval = setInterval(async () => {
76
+ const { ok, error } = await checkPassed();
77
+ if (ok !== false) {
78
+ clearInterval(interval);
79
+ resolve();
80
+ }
81
+ if (++retries > 10) {
82
+ clearInterval(interval);
83
+ reject(error);
84
+ }
85
+ }, 100);
86
+ });
87
+ }
88
+ //# sourceMappingURL=testUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("vitest/config").UserWorkspaceConfig;
2
+ export default _default;
3
+ //# sourceMappingURL=vitest.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../../src/tests/vitest.config.ts"],"names":[],"mappings":";AAEA,wBAKG"}
@@ -0,0 +1,8 @@
1
+ import { defineProject } from "vitest/config";
2
+ export default defineProject({
3
+ test: {
4
+ name: "cloudflare-do-storage",
5
+ testTimeout: 10000,
6
+ },
7
+ });
8
+ //# sourceMappingURL=vitest.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../../src/tests/vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,eAAe,aAAa,CAAC;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,KAAM;KACpB;CACF,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "cojson-storage-do-sqlite",
3
+ "type": "module",
4
+ "version": "0.18.28",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "license": "MIT",
8
+ "dependencies": {
9
+ "cojson": "0.18.32"
10
+ },
11
+ "devDependencies": {
12
+ "@cloudflare/workers-types": "^4.20250214.0",
13
+ "@cloudflare/vitest-pool-workers": "^0.9.10",
14
+ "execa": "^9.5.2",
15
+ "typescript": "5.6.2",
16
+ "wrangler": "^4.37.0"
17
+ },
18
+ "peerDependencies": {
19
+ "@cloudflare/workers-types": "^4.20250214.0"
20
+ },
21
+ "gitHead": "33c27053293b4801b968c61d5c4c989f93a67d13",
22
+ "scripts": {
23
+ "dev": "tsc --watch --sourceMap --outDir dist",
24
+ "format-and-lint": "biome check .",
25
+ "format-and-lint:fix": "biome check . --write",
26
+ "build": "rm -rf ./dist && tsc --sourceMap --outDir dist"
27
+ }
28
+ }
package/src/index.ts ADDED
@@ -0,0 +1,60 @@
1
+ import type { SQLiteDatabaseDriver } from "cojson";
2
+ import { getSqliteStorage } from "cojson";
3
+ import type { DurableObjectStorage } from "@cloudflare/workers-types";
4
+
5
+ export class DurableObjectSqlDriver implements SQLiteDatabaseDriver {
6
+ private readonly storage: DurableObjectStorage;
7
+
8
+ constructor(durableObjectStorage: DurableObjectStorage) {
9
+ this.storage = durableObjectStorage;
10
+ }
11
+
12
+ run(sql: string, params: unknown[]) {
13
+ this.storage.sql.exec(sql, ...params);
14
+ }
15
+
16
+ query<T>(sql: string, params: unknown[]): T[] {
17
+ return this.storage.sql.exec(sql, ...params).toArray() as T[];
18
+ }
19
+
20
+ get<T>(sql: string, params: unknown[]): T | undefined {
21
+ const res = this.storage.sql.exec(sql, ...params);
22
+ if (res.rowsRead === 0) {
23
+ return undefined;
24
+ }
25
+ return res.one() as T;
26
+ }
27
+
28
+ transaction(callback: () => unknown) {
29
+ return this.storage.transactionSync(callback);
30
+ }
31
+
32
+ closeDb() {
33
+ return;
34
+ }
35
+
36
+ getMigrationVersion(): number {
37
+ this.run(
38
+ "CREATE TABLE IF NOT EXISTS _migration_version (version INTEGER);",
39
+ [],
40
+ );
41
+ return (
42
+ this.get<{ version: number }>(
43
+ "SELECT max(version) as version FROM _migration_version;",
44
+ [],
45
+ )?.version ?? 0
46
+ );
47
+ }
48
+
49
+ saveMigrationVersion(version: number): void {
50
+ this.run("INSERT INTO _migration_version (version) VALUES (?);", [version]);
51
+ }
52
+ }
53
+
54
+ export function getDurableObjectSqlStorage(
55
+ durableObjectStorage: DurableObjectStorage,
56
+ ) {
57
+ const db = new DurableObjectSqlDriver(durableObjectStorage);
58
+
59
+ return getSqliteStorage(db);
60
+ }