@evolu/web 1.0.1-preview.2 → 1.0.1-preview.4

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 (32) hide show
  1. package/dist/src/Evolu/AppState.d.ts.map +1 -0
  2. package/dist/{Evolu → src/Evolu}/Db.worker.d.ts.map +1 -1
  3. package/dist/src/Evolu/index.d.ts.map +1 -0
  4. package/dist/src/SharedWebWorker.d.ts.map +1 -0
  5. package/dist/src/WasmSqliteDriver.d.ts.map +1 -0
  6. package/dist/{WasmSqliteDriver.js → src/WasmSqliteDriver.js} +4 -3
  7. package/dist/src/WebWorker.d.ts.map +1 -0
  8. package/dist/src/index.d.ts.map +1 -0
  9. package/dist/test/SharedWebWorker.test.d.ts +2 -0
  10. package/dist/test/SharedWebWorker.test.d.ts.map +1 -0
  11. package/dist/test/SharedWebWorker.test.js +246 -0
  12. package/package.json +9 -7
  13. package/src/WasmSqliteDriver.ts +10 -3
  14. package/dist/Evolu/AppState.d.ts.map +0 -1
  15. package/dist/Evolu/index.d.ts.map +0 -1
  16. package/dist/SharedWebWorker.d.ts.map +0 -1
  17. package/dist/WasmSqliteDriver.d.ts.map +0 -1
  18. package/dist/WebWorker.d.ts.map +0 -1
  19. package/dist/index.d.ts.map +0 -1
  20. /package/dist/{Evolu → src/Evolu}/AppState.d.ts +0 -0
  21. /package/dist/{Evolu → src/Evolu}/AppState.js +0 -0
  22. /package/dist/{Evolu → src/Evolu}/Db.worker.d.ts +0 -0
  23. /package/dist/{Evolu → src/Evolu}/Db.worker.js +0 -0
  24. /package/dist/{Evolu → src/Evolu}/index.d.ts +0 -0
  25. /package/dist/{Evolu → src/Evolu}/index.js +0 -0
  26. /package/dist/{SharedWebWorker.d.ts → src/SharedWebWorker.d.ts} +0 -0
  27. /package/dist/{SharedWebWorker.js → src/SharedWebWorker.js} +0 -0
  28. /package/dist/{WasmSqliteDriver.d.ts → src/WasmSqliteDriver.d.ts} +0 -0
  29. /package/dist/{WebWorker.d.ts → src/WebWorker.d.ts} +0 -0
  30. /package/dist/{WebWorker.js → src/WebWorker.js} +0 -0
  31. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  32. /package/dist/{index.js → src/index.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppState.d.ts","sourceRoot":"","sources":["../../../src/Evolu/AppState.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE/D,eAAO,MAAM,cAAc,EAAE,cAe5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Db.worker.d.ts","sourceRoot":"","sources":["../../src/Evolu/Db.worker.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"Db.worker.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Db.worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Evolu/index.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,SAAS,EACV,MAAM,qBAAqB,CAAC;AAa7B,eAAO,MAAM,YAAY,EAAE,SAM1B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedWebWorker.d.ts","sourceRoot":"","sources":["../../src/SharedWebWorker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAa,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AA8B9D;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,EAAE,MAAM,EACjD,MAAM,UAAU,EAChB,iBAAiB,MAAM,UAAU,CAAC,MAAM,KACvC,MAAM,CAAC,KAAK,EAAE,MAAM,CAuFtB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WasmSqliteDriver.d.ts","sourceRoot":"","sources":["../../src/WasmSqliteDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAGnB,MAAM,eAAe,CAAC;AAavB,eAAO,MAAM,sBAAsB,EAAE,kBAsEpC,CAAC"}
@@ -8,10 +8,11 @@ globalThis.sqlite3ApiConfig = {
8
8
  };
9
9
  // Init ASAP.
10
10
  const sqlite3Promise = sqlite3InitModule();
11
- export const createWasmSqliteDriver = async (name) => {
11
+ export const createWasmSqliteDriver = async (name, options) => {
12
12
  const sqlite3 = await sqlite3Promise;
13
- const poolUtil = await sqlite3.installOpfsSAHPoolVfs({ name });
14
- const db = new poolUtil.OpfsSAHPoolDb("/evolu1.db");
13
+ const db = options?.memory
14
+ ? new sqlite3.oo1.DB(":memory:")
15
+ : new (await sqlite3.installOpfsSAHPoolVfs({ name })).OpfsSAHPoolDb("/evolu1.db");
15
16
  let isDisposed = false;
16
17
  const cache = createPreparedStatementsCache((sql) => db.prepare(sql), (statement) => {
17
18
  statement.finalize();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebWorker.d.ts","sourceRoot":"","sources":["../../src/WebWorker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,EAAE,MAAM,EACzC,iBAAiB,MAAM,UAAU,CAAC,MAAM,KACvC,MAAM,CAAC,KAAK,EAAE,MAAM,CAuBtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,KAAK,EAAE,MAAM,EAC7C,QAAQ,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAC5B,IAQF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SharedWebWorker.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedWebWorker.test.d.ts","sourceRoot":"","sources":["../../test/SharedWebWorker.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,246 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
3
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
4
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
+ import { expect, test, vi, beforeEach, afterEach } from "vitest";
6
+ import { createSharedWebWorker } from "../src/SharedWebWorker.js";
7
+ import { getOrThrow, SimpleName, wait } from "@evolu/common";
8
+ // Mock BroadcastChannel
9
+ class MockBroadcastChannel {
10
+ name;
11
+ onmessage = null;
12
+ constructor(name) {
13
+ this.name = name;
14
+ }
15
+ postMessage = vi.fn();
16
+ close = vi.fn();
17
+ }
18
+ // Mock Web Locks API
19
+ const mockLocks = {
20
+ request: vi.fn(),
21
+ };
22
+ // Mock Web Worker
23
+ class MockWorker {
24
+ onmessage = null;
25
+ postMessage = vi.fn();
26
+ terminate = vi.fn();
27
+ }
28
+ beforeEach(() => {
29
+ // Create a spy for BroadcastChannel constructor
30
+ global.BroadcastChannel = vi
31
+ .fn()
32
+ .mockImplementation((name) => new MockBroadcastChannel(name));
33
+ global.document = {}; // Simulate browser environment
34
+ // Mock navigator.locks properly - remove the global.navigator assignment
35
+ Object.defineProperty(global.navigator, "locks", {
36
+ value: mockLocks,
37
+ writable: true,
38
+ configurable: true,
39
+ });
40
+ vi.clearAllMocks();
41
+ });
42
+ afterEach(() => {
43
+ vi.restoreAllMocks();
44
+ });
45
+ test("createSharedWebWorker creates BroadcastChannel and requests lock", () => {
46
+ const mockCreateWorker = vi.fn(() => new MockWorker());
47
+ const sharedWorker = createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
48
+ // Should create BroadcastChannel with namespaced name
49
+ expect(global.BroadcastChannel).toHaveBeenCalledWith("evolu-sharedwebworker-test-worker");
50
+ // Should request owner-ready immediately
51
+ const channelInstance = vi.mocked(global.BroadcastChannel).mock.results[0]
52
+ .value;
53
+ expect(channelInstance.postMessage).toHaveBeenCalledWith({
54
+ type: "request-owner-ready",
55
+ });
56
+ // Should attempt to acquire Web Lock
57
+ expect(mockLocks.request).toHaveBeenCalledWith("evolu-sharedwebworker-test-worker", expect.any(Function));
58
+ // Should return worker interface
59
+ expect(sharedWorker).toHaveProperty("postMessage");
60
+ expect(sharedWorker).toHaveProperty("onMessage");
61
+ expect(typeof sharedWorker.postMessage).toBe("function");
62
+ expect(typeof sharedWorker.onMessage).toBe("function");
63
+ });
64
+ test("createSharedWebWorker returns no-op on server", () => {
65
+ // Simulate server environment
66
+ delete global.document;
67
+ const mockCreateWorker = vi.fn();
68
+ const sharedWorker = createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
69
+ // Should not create BroadcastChannel or request locks
70
+ expect(global.BroadcastChannel).not.toHaveBeenCalled();
71
+ expect(mockLocks.request).not.toHaveBeenCalled();
72
+ // Should return no-op worker
73
+ expect(sharedWorker.postMessage).toBeDefined();
74
+ expect(sharedWorker.onMessage).toBeDefined();
75
+ // Restore document for other tests
76
+ global.document = {};
77
+ });
78
+ test("createSharedWebWorker queues messages when owner not ready", () => {
79
+ const mockCreateWorker = vi.fn(() => new MockWorker());
80
+ const sharedWorker = createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
81
+ const channelInstance = vi.mocked(global.BroadcastChannel).mock.results[0]
82
+ .value;
83
+ // Send message before owner is ready
84
+ sharedWorker.postMessage({ type: "test-message" });
85
+ // Should not send to channel yet (owner not ready)
86
+ expect(channelInstance.postMessage).toHaveBeenCalledTimes(1); // Only request-owner-ready
87
+ // Simulate owner-ready message
88
+ const ownerReadyEvent = new MessageEvent("message", {
89
+ data: { type: "owner-ready" },
90
+ });
91
+ channelInstance.onmessage?.(ownerReadyEvent);
92
+ // Should now send the queued message
93
+ expect(channelInstance.postMessage).toHaveBeenCalledWith({
94
+ type: "to-worker",
95
+ message: { type: "test-message" },
96
+ });
97
+ });
98
+ test("createSharedWebWorker forwards messages when owner ready", () => {
99
+ const mockCreateWorker = vi.fn(() => new MockWorker());
100
+ const sharedWorker = createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
101
+ const channelInstance = vi.mocked(global.BroadcastChannel).mock.results[0]
102
+ .value;
103
+ // Simulate owner-ready message
104
+ const ownerReadyEvent = new MessageEvent("message", {
105
+ data: { type: "owner-ready" },
106
+ });
107
+ channelInstance.onmessage?.(ownerReadyEvent);
108
+ // Send message after owner is ready
109
+ sharedWorker.postMessage({ type: "test-message" });
110
+ // Should send directly to channel
111
+ expect(channelInstance.postMessage).toHaveBeenCalledWith({
112
+ type: "to-worker",
113
+ message: { type: "test-message" },
114
+ });
115
+ });
116
+ test("createSharedWebWorker handles onMessage callback", () => {
117
+ const mockCreateWorker = vi.fn(() => new MockWorker());
118
+ const onMessageCallback = vi.fn();
119
+ const sharedWorker = createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
120
+ sharedWorker.onMessage(onMessageCallback);
121
+ const channelInstance = vi.mocked(global.BroadcastChannel).mock.results[0]
122
+ .value;
123
+ // Simulate message from worker
124
+ const workerMessage = new MessageEvent("message", {
125
+ data: { type: "from-worker", message: { result: "test" } },
126
+ });
127
+ channelInstance.onmessage?.(workerMessage);
128
+ // Should call the callback
129
+ expect(onMessageCallback).toHaveBeenCalledWith({ result: "test" });
130
+ });
131
+ test("createSharedWebWorker handles multiple tabs - first tab becomes owner", async () => {
132
+ let lockCallback;
133
+ // Mock locks.request to capture the callback but not execute it immediately
134
+ mockLocks.request.mockImplementation((_name, callback) => {
135
+ if (!lockCallback) {
136
+ lockCallback = callback;
137
+ // Simulate first tab acquiring the lock
138
+ setTimeout(() => {
139
+ void lockCallback?.();
140
+ }, 0);
141
+ }
142
+ return Promise.resolve();
143
+ });
144
+ const mockCreateWorker = vi.fn(() => new MockWorker());
145
+ // Create first tab (will become owner)
146
+ createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
147
+ // Create second tab
148
+ createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
149
+ // Both tabs should create BroadcastChannels
150
+ expect(global.BroadcastChannel).toHaveBeenCalledTimes(2);
151
+ const tab1Channel = vi.mocked(global.BroadcastChannel).mock.results[0].value;
152
+ const tab2Channel = vi.mocked(global.BroadcastChannel).mock.results[1].value;
153
+ // Both tabs should request owner-ready
154
+ expect(tab1Channel.postMessage).toHaveBeenCalledWith({
155
+ type: "request-owner-ready",
156
+ });
157
+ expect(tab2Channel.postMessage).toHaveBeenCalledWith({
158
+ type: "request-owner-ready",
159
+ });
160
+ // Wait for lock acquisition
161
+ await wait(10);
162
+ // Only first tab should create worker (it became owner)
163
+ expect(mockCreateWorker).toHaveBeenCalledTimes(1);
164
+ // First tab should announce ownership
165
+ expect(tab1Channel.postMessage).toHaveBeenCalledWith({ type: "owner-ready" });
166
+ });
167
+ test("createSharedWebWorker handles cross-tab message forwarding", () => {
168
+ const mockCreateWorker = vi.fn(() => new MockWorker());
169
+ // Create two tabs
170
+ const tab1 = createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
171
+ const tab2 = createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
172
+ const tab1Channel = vi.mocked(global.BroadcastChannel).mock.results[0].value;
173
+ const tab2Channel = vi.mocked(global.BroadcastChannel).mock.results[1].value;
174
+ // Simulate tab1 receiving owner-ready (tab1 becomes aware of owner)
175
+ const ownerReadyEvent = new MessageEvent("message", {
176
+ data: { type: "owner-ready" },
177
+ });
178
+ tab1Channel.onmessage?.(ownerReadyEvent);
179
+ // Simulate tab2 receiving owner-ready
180
+ tab2Channel.onmessage?.(ownerReadyEvent);
181
+ // Both tabs send messages
182
+ tab1.postMessage({ from: "tab1" });
183
+ tab2.postMessage({ from: "tab2" });
184
+ // Both should forward to channel
185
+ expect(tab1Channel.postMessage).toHaveBeenCalledWith({
186
+ type: "to-worker",
187
+ message: { from: "tab1" },
188
+ });
189
+ expect(tab2Channel.postMessage).toHaveBeenCalledWith({
190
+ type: "to-worker",
191
+ message: { from: "tab2" },
192
+ });
193
+ });
194
+ test("createSharedWebWorker handles worker responses across tabs", () => {
195
+ const mockCreateWorker = vi.fn(() => new MockWorker());
196
+ const tab1Callback = vi.fn();
197
+ const tab2Callback = vi.fn();
198
+ // Create two tabs
199
+ const tab1 = createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
200
+ const tab2 = createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
201
+ // Set up message callbacks
202
+ tab1.onMessage(tab1Callback);
203
+ tab2.onMessage(tab2Callback);
204
+ const tab1Channel = vi.mocked(global.BroadcastChannel).mock.results[0].value;
205
+ const tab2Channel = vi.mocked(global.BroadcastChannel).mock.results[1].value;
206
+ // Simulate worker response broadcast
207
+ const workerResponse = new MessageEvent("message", {
208
+ data: { type: "from-worker", message: { result: "shared-result" } },
209
+ });
210
+ // Both tabs receive the same worker response
211
+ tab1Channel.onmessage?.(workerResponse);
212
+ tab2Channel.onmessage?.(workerResponse);
213
+ // Both callbacks should be called with the same data
214
+ expect(tab1Callback).toHaveBeenCalledWith({ result: "shared-result" });
215
+ expect(tab2Callback).toHaveBeenCalledWith({ result: "shared-result" });
216
+ });
217
+ test("createSharedWebWorker multi-tab scenario", () => {
218
+ const mockCreateWorker = vi.fn(() => new MockWorker());
219
+ const channelInstances = [];
220
+ // Track all BroadcastChannel instances
221
+ global.BroadcastChannel = vi.fn().mockImplementation((name) => {
222
+ const instance = new MockBroadcastChannel(name);
223
+ channelInstances.push(instance);
224
+ // Override postMessage to broadcast to all instances with same name
225
+ instance.postMessage = vi.fn().mockImplementation((data) => {
226
+ channelInstances
227
+ .filter((ch) => ch.name === name)
228
+ .forEach((ch) => ch.onmessage?.(new MessageEvent("message", { data })));
229
+ });
230
+ return instance;
231
+ });
232
+ // Mock lock - only first caller gets the lock
233
+ let lockAcquired = false;
234
+ mockLocks.request.mockImplementation((_name, callback) => {
235
+ if (!lockAcquired) {
236
+ lockAcquired = true;
237
+ void callback(); // First tab becomes owner
238
+ }
239
+ return Promise.resolve();
240
+ });
241
+ // Create two tabs
242
+ createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
243
+ createSharedWebWorker(getOrThrow(SimpleName.from("test-worker")), mockCreateWorker);
244
+ // Only first tab should create worker (owner)
245
+ expect(mockCreateWorker).toHaveBeenCalledTimes(1);
246
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evolu/web",
3
- "version": "1.0.1-preview.2",
3
+ "version": "1.0.1-preview.4",
4
4
  "description": "Evolu for web",
5
5
  "keywords": [
6
6
  "evolu",
@@ -17,9 +17,9 @@
17
17
  "types": "./dist/index.d.ts",
18
18
  "exports": {
19
19
  ".": {
20
- "types": "./dist/index.d.ts",
21
- "import": "./dist/index.js",
22
- "browser": "./dist/index.js"
20
+ "types": "./dist/src/index.d.ts",
21
+ "import": "./dist/src/index.js",
22
+ "browser": "./dist/src/index.js"
23
23
  }
24
24
  },
25
25
  "files": [
@@ -28,18 +28,18 @@
28
28
  "README.md"
29
29
  ],
30
30
  "dependencies": {
31
- "@sqlite.org/sqlite-wasm": "3.50.1-build1"
31
+ "@sqlite.org/sqlite-wasm": "3.50.3-build1"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/web-locks-api": "^0.0.5",
35
35
  "typescript": "^5.8.3",
36
36
  "user-agent-data-types": "^0.4.2",
37
37
  "vitest": "^3.2.3",
38
- "@evolu/common": "6.0.1-preview.3",
38
+ "@evolu/common": "6.0.1-preview.17",
39
39
  "@evolu/tsconfig": "0.0.2"
40
40
  },
41
41
  "peerDependencies": {
42
- "@evolu/common": "^6.0.1-preview.3"
42
+ "@evolu/common": "^6.0.1-preview.17"
43
43
  },
44
44
  "publishConfig": {
45
45
  "access": "public"
@@ -51,6 +51,8 @@
51
51
  "scripts": {
52
52
  "dev": "tsc --watch",
53
53
  "build": "shx rm -rf dist && tsc",
54
+ "test": "vitest run",
55
+ "test:watch": "vitest",
54
56
  "clean": "shx rm -rf .turbo node_modules dist",
55
57
  "format": "prettier --write \"src/*.{ts,tsx,md}\""
56
58
  }
@@ -17,10 +17,17 @@ globalThis.sqlite3ApiConfig = {
17
17
  // Init ASAP.
18
18
  const sqlite3Promise = sqlite3InitModule();
19
19
 
20
- export const createWasmSqliteDriver: CreateSqliteDriver = async (name) => {
20
+ export const createWasmSqliteDriver: CreateSqliteDriver = async (
21
+ name,
22
+ options,
23
+ ) => {
21
24
  const sqlite3 = await sqlite3Promise;
22
- const poolUtil = await sqlite3.installOpfsSAHPoolVfs({ name });
23
- const db = new poolUtil.OpfsSAHPoolDb("/evolu1.db");
25
+
26
+ const db = options?.memory
27
+ ? new sqlite3.oo1.DB(":memory:")
28
+ : new (await sqlite3.installOpfsSAHPoolVfs({ name })).OpfsSAHPoolDb(
29
+ "/evolu1.db",
30
+ );
24
31
  let isDisposed = false;
25
32
 
26
33
  const cache = createPreparedStatementsCache<PreparedStatement>(
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppState.d.ts","sourceRoot":"","sources":["../../src/Evolu/AppState.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE/D,eAAO,MAAM,cAAc,EAAE,cAe5B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Evolu/index.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,SAAS,EACV,MAAM,qBAAqB,CAAC;AAa7B,eAAO,MAAM,YAAY,EAAE,SAM1B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SharedWebWorker.d.ts","sourceRoot":"","sources":["../src/SharedWebWorker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAa,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AA8B9D;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,EAAE,MAAM,EACjD,MAAM,UAAU,EAChB,iBAAiB,MAAM,UAAU,CAAC,MAAM,KACvC,MAAM,CAAC,KAAK,EAAE,MAAM,CAuFtB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WasmSqliteDriver.d.ts","sourceRoot":"","sources":["../src/WasmSqliteDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAGnB,MAAM,eAAe,CAAC;AAavB,eAAO,MAAM,sBAAsB,EAAE,kBA+DpC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebWorker.d.ts","sourceRoot":"","sources":["../src/WebWorker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,EAAE,MAAM,EACzC,iBAAiB,MAAM,UAAU,CAAC,MAAM,KACvC,MAAM,CAAC,KAAK,EAAE,MAAM,CAuBtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,KAAK,EAAE,MAAM,EAC7C,QAAQ,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAC5B,IAQF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes