@livestore/sqlite-wasm 0.4.0-dev.2 → 0.4.0-dev.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/FacadeVFS.d.ts.map +1 -1
- package/dist/FacadeVFS.js +4 -0
- package/dist/FacadeVFS.js.map +1 -1
- package/dist/browser/mod.d.ts +15 -7
- package/dist/browser/mod.d.ts.map +1 -1
- package/dist/browser/mod.js +49 -43
- package/dist/browser/mod.js.map +1 -1
- package/dist/browser/opfs/AccessHandlePoolVFS.d.ts +40 -17
- package/dist/browser/opfs/AccessHandlePoolVFS.d.ts.map +1 -1
- package/dist/browser/opfs/AccessHandlePoolVFS.js +211 -143
- package/dist/browser/opfs/AccessHandlePoolVFS.js.map +1 -1
- package/dist/browser/opfs/index.d.ts +3 -2
- package/dist/browser/opfs/index.d.ts.map +1 -1
- package/dist/browser/opfs/index.js +1 -1
- package/dist/browser/opfs/index.js.map +1 -1
- package/dist/browser/opfs/opfs-sah-pool.d.ts +1 -1
- package/dist/browser/opfs/opfs-sah-pool.d.ts.map +1 -1
- package/dist/browser/opfs/opfs-sah-pool.js +1 -1
- package/dist/browser/opfs/opfs-sah-pool.js.map +1 -1
- package/dist/cf/BlockManager.d.ts +61 -0
- package/dist/cf/BlockManager.d.ts.map +1 -0
- package/dist/cf/BlockManager.js +157 -0
- package/dist/cf/BlockManager.js.map +1 -0
- package/dist/cf/CloudflareSqlVFS.d.ts +51 -0
- package/dist/cf/CloudflareSqlVFS.d.ts.map +1 -0
- package/dist/cf/CloudflareSqlVFS.js +351 -0
- package/dist/cf/CloudflareSqlVFS.js.map +1 -0
- package/dist/cf/CloudflareWorkerVFS.d.ts +72 -0
- package/dist/cf/CloudflareWorkerVFS.d.ts.map +1 -0
- package/dist/cf/CloudflareWorkerVFS.js +552 -0
- package/dist/cf/CloudflareWorkerVFS.js.map +1 -0
- package/dist/cf/mod.d.ts +43 -0
- package/dist/cf/mod.d.ts.map +1 -0
- package/dist/cf/mod.js +74 -0
- package/dist/cf/mod.js.map +1 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.d.ts +2 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.d.ts.map +1 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.js +314 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.js.map +1 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-core.test.d.ts +2 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-core.test.d.ts.map +1 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-core.test.js +266 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-core.test.js.map +1 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-integration.test.d.ts +2 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-integration.test.d.ts.map +1 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-integration.test.js +462 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-integration.test.js.map +1 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.d.ts +2 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.d.ts.map +1 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.js +334 -0
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.js.map +1 -0
- package/dist/cf/test/sql/cloudflare-sql-vfs-core.test.d.ts +2 -0
- package/dist/cf/test/sql/cloudflare-sql-vfs-core.test.d.ts.map +1 -0
- package/dist/cf/test/sql/cloudflare-sql-vfs-core.test.js +354 -0
- package/dist/cf/test/sql/cloudflare-sql-vfs-core.test.js.map +1 -0
- package/dist/load-wasm/mod.node.d.ts.map +1 -1
- package/dist/load-wasm/mod.node.js +1 -2
- package/dist/load-wasm/mod.node.js.map +1 -1
- package/dist/load-wasm/mod.workerd.d.ts +2 -0
- package/dist/load-wasm/mod.workerd.d.ts.map +1 -0
- package/dist/load-wasm/mod.workerd.js +28 -0
- package/dist/load-wasm/mod.workerd.js.map +1 -0
- package/dist/make-sqlite-db.d.ts +1 -0
- package/dist/make-sqlite-db.d.ts.map +1 -1
- package/dist/make-sqlite-db.js +29 -8
- package/dist/make-sqlite-db.js.map +1 -1
- package/dist/node/NodeFS.d.ts +1 -2
- package/dist/node/NodeFS.d.ts.map +1 -1
- package/dist/node/NodeFS.js +1 -6
- package/dist/node/NodeFS.js.map +1 -1
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +5 -10
- package/dist/node/mod.js.map +1 -1
- package/package.json +21 -8
- package/src/FacadeVFS.ts +5 -0
- package/src/browser/mod.ts +39 -13
- package/src/browser/opfs/AccessHandlePoolVFS.ts +387 -225
- package/src/browser/opfs/index.ts +4 -3
- package/src/browser/opfs/opfs-sah-pool.ts +1 -1
- package/src/cf/BlockManager.ts +225 -0
- package/src/cf/CloudflareSqlVFS.ts +450 -0
- package/src/cf/CloudflareWorkerVFS.ts +664 -0
- package/src/cf/README.md +60 -0
- package/src/cf/mod.ts +143 -0
- package/src/cf/test/README.md +224 -0
- package/src/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.ts +389 -0
- package/src/cf/test/async-storage/cloudflare-worker-vfs-core.test.ts +322 -0
- package/src/cf/test/async-storage/cloudflare-worker-vfs-integration.test.ts +585 -0
- package/src/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.ts +403 -0
- package/src/cf/test/sql/cloudflare-sql-vfs-core.test.ts +433 -0
- package/src/load-wasm/mod.node.ts +1 -2
- package/src/load-wasm/mod.workerd.ts +28 -0
- package/src/make-sqlite-db.ts +39 -8
- package/src/node/NodeFS.ts +1 -9
- package/src/node/mod.ts +5 -12
- package/src/ambient.d.ts +0 -18
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
/// <reference types="vitest/globals" />
|
|
2
|
+
import * as VFS from '@livestore/wa-sqlite/src/VFS.js';
|
|
3
|
+
import { beforeEach, describe, expect, it } from 'vitest';
|
|
4
|
+
import { CloudflareSqlVFS } from "../../mod.js";
|
|
5
|
+
describe('CloudflareSqlVFS - Core Functionality', () => {
|
|
6
|
+
let vfs;
|
|
7
|
+
let mockSql;
|
|
8
|
+
let mockDatabase;
|
|
9
|
+
let queryLog;
|
|
10
|
+
beforeEach(async () => {
|
|
11
|
+
mockDatabase = new Map();
|
|
12
|
+
queryLog = [];
|
|
13
|
+
// Mock SQL storage that mimics the Cloudflare DurableObject SQL API
|
|
14
|
+
mockSql = {
|
|
15
|
+
exec: (query, ...bindings) => {
|
|
16
|
+
queryLog.push(`${query} [${bindings.join(', ')}]`);
|
|
17
|
+
// Simple SQL parser for testing - handles basic CREATE, INSERT, SELECT, UPDATE, DELETE
|
|
18
|
+
const normalizedQuery = query.trim().toUpperCase();
|
|
19
|
+
if (normalizedQuery.includes('CREATE TABLE') ||
|
|
20
|
+
normalizedQuery.includes('CREATE INDEX') ||
|
|
21
|
+
normalizedQuery.includes('CREATE TRIGGER')) {
|
|
22
|
+
// Handle schema creation
|
|
23
|
+
return createMockCursor([]);
|
|
24
|
+
}
|
|
25
|
+
if (normalizedQuery.startsWith('INSERT OR REPLACE INTO VFS_BLOCKS')) {
|
|
26
|
+
const [filePath, blockId, blockData] = bindings;
|
|
27
|
+
const key = `blocks:${filePath}`;
|
|
28
|
+
if (!mockDatabase.has(key)) {
|
|
29
|
+
mockDatabase.set(key, []);
|
|
30
|
+
}
|
|
31
|
+
const blocks = mockDatabase.get(key);
|
|
32
|
+
const existingIndex = blocks.findIndex((b) => b.block_id === blockId);
|
|
33
|
+
const blockEntry = { file_path: filePath, block_id: blockId, block_data: blockData };
|
|
34
|
+
if (existingIndex >= 0) {
|
|
35
|
+
blocks[existingIndex] = blockEntry;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
blocks.push(blockEntry);
|
|
39
|
+
}
|
|
40
|
+
return createMockCursor([]);
|
|
41
|
+
}
|
|
42
|
+
if (normalizedQuery.startsWith('INSERT INTO VFS_FILES')) {
|
|
43
|
+
const [filePath, fileSize, flags, createdAt, modifiedAt] = bindings;
|
|
44
|
+
mockDatabase.set(`file:${filePath}`, {
|
|
45
|
+
file_path: filePath,
|
|
46
|
+
file_size: fileSize,
|
|
47
|
+
flags: flags,
|
|
48
|
+
created_at: createdAt,
|
|
49
|
+
modified_at: modifiedAt,
|
|
50
|
+
});
|
|
51
|
+
return createMockCursor([]);
|
|
52
|
+
}
|
|
53
|
+
if (normalizedQuery.startsWith('SELECT') && normalizedQuery.includes('FROM VFS_FILES')) {
|
|
54
|
+
if (normalizedQuery.includes('WHERE FILE_PATH = ?')) {
|
|
55
|
+
const [filePath] = bindings;
|
|
56
|
+
const fileData = mockDatabase.get(`file:${filePath}`);
|
|
57
|
+
return createMockCursor(fileData ? [fileData] : []);
|
|
58
|
+
}
|
|
59
|
+
return createMockCursor([]);
|
|
60
|
+
}
|
|
61
|
+
if (normalizedQuery.startsWith('SELECT') && normalizedQuery.includes('FROM VFS_BLOCKS')) {
|
|
62
|
+
if (normalizedQuery.includes('WHERE FILE_PATH = ?')) {
|
|
63
|
+
const filePath = bindings[0];
|
|
64
|
+
const blocks = mockDatabase.get(`blocks:${filePath}`) || [];
|
|
65
|
+
if (normalizedQuery.includes('AND BLOCK_ID IN')) {
|
|
66
|
+
const requestedBlockIds = bindings.slice(1);
|
|
67
|
+
const matchingBlocks = blocks.filter((b) => requestedBlockIds.includes(b.block_id));
|
|
68
|
+
return createMockCursor(matchingBlocks);
|
|
69
|
+
}
|
|
70
|
+
return createMockCursor(blocks);
|
|
71
|
+
}
|
|
72
|
+
return createMockCursor([]);
|
|
73
|
+
}
|
|
74
|
+
if (normalizedQuery.startsWith('UPDATE VFS_FILES')) {
|
|
75
|
+
if (normalizedQuery.includes('SET FILE_SIZE = ?')) {
|
|
76
|
+
const [newSize, filePath] = bindings;
|
|
77
|
+
const fileData = mockDatabase.get(`file:${filePath}`);
|
|
78
|
+
if (fileData) {
|
|
79
|
+
fileData.file_size = newSize;
|
|
80
|
+
fileData.modified_at = Math.floor(Date.now() / 1000);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return createMockCursor([]);
|
|
84
|
+
}
|
|
85
|
+
if (normalizedQuery.startsWith('DELETE FROM VFS_BLOCKS')) {
|
|
86
|
+
const [filePath, minBlockId] = bindings;
|
|
87
|
+
const blocks = mockDatabase.get(`blocks:${filePath}`);
|
|
88
|
+
if (blocks) {
|
|
89
|
+
const filteredBlocks = blocks.filter((b) => b.block_id < minBlockId);
|
|
90
|
+
mockDatabase.set(`blocks:${filePath}`, filteredBlocks);
|
|
91
|
+
}
|
|
92
|
+
return createMockCursor([]);
|
|
93
|
+
}
|
|
94
|
+
if (normalizedQuery.startsWith('DELETE FROM VFS_FILES')) {
|
|
95
|
+
const [filePath] = bindings;
|
|
96
|
+
mockDatabase.delete(`file:${filePath}`);
|
|
97
|
+
mockDatabase.delete(`blocks:${filePath}`);
|
|
98
|
+
return createMockCursor([]);
|
|
99
|
+
}
|
|
100
|
+
// Default empty result for unhandled queries
|
|
101
|
+
console.warn('Unhandled query:', query, bindings);
|
|
102
|
+
return createMockCursor([]);
|
|
103
|
+
},
|
|
104
|
+
get databaseSize() {
|
|
105
|
+
return 1024 * 1024; // Mock 1MB database
|
|
106
|
+
},
|
|
107
|
+
Cursor: {},
|
|
108
|
+
Statement: {},
|
|
109
|
+
};
|
|
110
|
+
function createMockCursor(data) {
|
|
111
|
+
let index = 0;
|
|
112
|
+
return {
|
|
113
|
+
next: () => {
|
|
114
|
+
if (index < data.length) {
|
|
115
|
+
return { done: false, value: data[index++] };
|
|
116
|
+
}
|
|
117
|
+
return { done: true };
|
|
118
|
+
},
|
|
119
|
+
toArray: () => data,
|
|
120
|
+
one: () => {
|
|
121
|
+
if (data.length === 0) {
|
|
122
|
+
throw new Error('No results');
|
|
123
|
+
}
|
|
124
|
+
return data[0];
|
|
125
|
+
},
|
|
126
|
+
raw: function* () {
|
|
127
|
+
for (const item of data) {
|
|
128
|
+
yield Object.values(item);
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
columnNames: Object.keys(data[0] || {}),
|
|
132
|
+
get rowsRead() {
|
|
133
|
+
return data.length;
|
|
134
|
+
},
|
|
135
|
+
get rowsWritten() {
|
|
136
|
+
return 0;
|
|
137
|
+
},
|
|
138
|
+
[Symbol.iterator]: function* () {
|
|
139
|
+
for (const item of data) {
|
|
140
|
+
yield item;
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
vfs = new CloudflareSqlVFS('test-sql-vfs', mockSql, {});
|
|
146
|
+
await vfs.isReady();
|
|
147
|
+
});
|
|
148
|
+
describe('Basic File Operations', () => {
|
|
149
|
+
it('should create and open files', async () => {
|
|
150
|
+
const path = '/test/basic.db';
|
|
151
|
+
const fileId = 1;
|
|
152
|
+
const flags = VFS.SQLITE_OPEN_CREATE | VFS.SQLITE_OPEN_READWRITE;
|
|
153
|
+
const pOutFlags = new DataView(new ArrayBuffer(4));
|
|
154
|
+
const result = vfs.jOpen(path, fileId, flags, pOutFlags);
|
|
155
|
+
expect(result).toBe(VFS.SQLITE_OK);
|
|
156
|
+
expect(pOutFlags.getUint32(0, true)).toBe(flags);
|
|
157
|
+
expect(vfs.jClose(fileId)).toBe(VFS.SQLITE_OK);
|
|
158
|
+
// Verify file was created in mock database
|
|
159
|
+
expect(mockDatabase.has(`file:${path}`)).toBe(true);
|
|
160
|
+
});
|
|
161
|
+
it('should handle file access checks', async () => {
|
|
162
|
+
const path = '/test/access.db';
|
|
163
|
+
const fileId = 1;
|
|
164
|
+
const flags = VFS.SQLITE_OPEN_CREATE | VFS.SQLITE_OPEN_READWRITE;
|
|
165
|
+
const pOutFlags = new DataView(new ArrayBuffer(4));
|
|
166
|
+
// File doesn't exist initially
|
|
167
|
+
const pResOut = new DataView(new ArrayBuffer(4));
|
|
168
|
+
expect(vfs.jAccess(path, VFS.SQLITE_ACCESS_EXISTS, pResOut)).toBe(VFS.SQLITE_OK);
|
|
169
|
+
expect(pResOut.getUint32(0, true)).toBe(0);
|
|
170
|
+
// Create file
|
|
171
|
+
vfs.jOpen(path, fileId, flags, pOutFlags);
|
|
172
|
+
vfs.jClose(fileId);
|
|
173
|
+
// File should exist now
|
|
174
|
+
expect(vfs.jAccess(path, VFS.SQLITE_ACCESS_EXISTS, pResOut)).toBe(VFS.SQLITE_OK);
|
|
175
|
+
expect(pResOut.getUint32(0, true)).toBe(1);
|
|
176
|
+
});
|
|
177
|
+
it('should handle basic read/write operations', async () => {
|
|
178
|
+
const path = '/test/readwrite.db';
|
|
179
|
+
const fileId = 1;
|
|
180
|
+
const flags = VFS.SQLITE_OPEN_CREATE | VFS.SQLITE_OPEN_READWRITE;
|
|
181
|
+
const pOutFlags = new DataView(new ArrayBuffer(4));
|
|
182
|
+
vfs.jOpen(path, fileId, flags, pOutFlags);
|
|
183
|
+
// Write data
|
|
184
|
+
const testData = new TextEncoder().encode('Hello, SQL VFS!');
|
|
185
|
+
expect(vfs.jWrite(fileId, testData, 0)).toBe(VFS.SQLITE_OK);
|
|
186
|
+
// Read data back
|
|
187
|
+
const readBuffer = new Uint8Array(testData.length);
|
|
188
|
+
expect(vfs.jRead(fileId, readBuffer, 0)).toBe(VFS.SQLITE_OK);
|
|
189
|
+
expect(readBuffer).toEqual(testData);
|
|
190
|
+
vfs.jClose(fileId);
|
|
191
|
+
});
|
|
192
|
+
it('should handle file size operations', async () => {
|
|
193
|
+
const path = '/test/size.db';
|
|
194
|
+
const fileId = 1;
|
|
195
|
+
const flags = VFS.SQLITE_OPEN_CREATE | VFS.SQLITE_OPEN_READWRITE;
|
|
196
|
+
const pOutFlags = new DataView(new ArrayBuffer(4));
|
|
197
|
+
vfs.jOpen(path, fileId, flags, pOutFlags);
|
|
198
|
+
// Initial size should be 0
|
|
199
|
+
const pSize64 = new DataView(new ArrayBuffer(8));
|
|
200
|
+
expect(vfs.jFileSize(fileId, pSize64)).toBe(VFS.SQLITE_OK);
|
|
201
|
+
expect(pSize64.getBigInt64(0, true)).toBe(0n);
|
|
202
|
+
// Write data and check size
|
|
203
|
+
const testData = new Uint8Array(1000);
|
|
204
|
+
testData.fill(0xaa);
|
|
205
|
+
vfs.jWrite(fileId, testData, 0);
|
|
206
|
+
expect(vfs.jFileSize(fileId, pSize64)).toBe(VFS.SQLITE_OK);
|
|
207
|
+
expect(pSize64.getBigInt64(0, true)).toBe(1000n);
|
|
208
|
+
vfs.jClose(fileId);
|
|
209
|
+
});
|
|
210
|
+
it('should handle file truncation', async () => {
|
|
211
|
+
const path = '/test/truncate.db';
|
|
212
|
+
const fileId = 1;
|
|
213
|
+
const flags = VFS.SQLITE_OPEN_CREATE | VFS.SQLITE_OPEN_READWRITE;
|
|
214
|
+
const pOutFlags = new DataView(new ArrayBuffer(4));
|
|
215
|
+
vfs.jOpen(path, fileId, flags, pOutFlags);
|
|
216
|
+
// Write data
|
|
217
|
+
const testData = new Uint8Array(2000);
|
|
218
|
+
testData.fill(0xbb);
|
|
219
|
+
vfs.jWrite(fileId, testData, 0);
|
|
220
|
+
// Truncate to smaller size
|
|
221
|
+
expect(vfs.jTruncate(fileId, 500)).toBe(VFS.SQLITE_OK);
|
|
222
|
+
// Verify size
|
|
223
|
+
const pSize64 = new DataView(new ArrayBuffer(8));
|
|
224
|
+
expect(vfs.jFileSize(fileId, pSize64)).toBe(VFS.SQLITE_OK);
|
|
225
|
+
expect(pSize64.getBigInt64(0, true)).toBe(500n);
|
|
226
|
+
vfs.jClose(fileId);
|
|
227
|
+
});
|
|
228
|
+
it('should handle sync operations', async () => {
|
|
229
|
+
const path = '/test/sync.db';
|
|
230
|
+
const fileId = 1;
|
|
231
|
+
const flags = VFS.SQLITE_OPEN_CREATE | VFS.SQLITE_OPEN_READWRITE;
|
|
232
|
+
const pOutFlags = new DataView(new ArrayBuffer(4));
|
|
233
|
+
vfs.jOpen(path, fileId, flags, pOutFlags);
|
|
234
|
+
const testData = new TextEncoder().encode('Sync test data');
|
|
235
|
+
vfs.jWrite(fileId, testData, 0);
|
|
236
|
+
// Test different sync modes - should all be no-ops for SQL VFS
|
|
237
|
+
expect(vfs.jSync(fileId, VFS.SQLITE_SYNC_NORMAL)).toBe(VFS.SQLITE_OK);
|
|
238
|
+
expect(vfs.jSync(fileId, VFS.SQLITE_SYNC_FULL)).toBe(VFS.SQLITE_OK);
|
|
239
|
+
expect(vfs.jSync(fileId, VFS.SQLITE_SYNC_DATAONLY)).toBe(VFS.SQLITE_OK);
|
|
240
|
+
vfs.jClose(fileId);
|
|
241
|
+
});
|
|
242
|
+
it('should handle file deletion', async () => {
|
|
243
|
+
const path = '/test/delete.db';
|
|
244
|
+
const fileId = 1;
|
|
245
|
+
const flags = VFS.SQLITE_OPEN_CREATE | VFS.SQLITE_OPEN_READWRITE;
|
|
246
|
+
const pOutFlags = new DataView(new ArrayBuffer(4));
|
|
247
|
+
// Create file
|
|
248
|
+
vfs.jOpen(path, fileId, flags, pOutFlags);
|
|
249
|
+
const testData = new TextEncoder().encode('Delete test');
|
|
250
|
+
vfs.jWrite(fileId, testData, 0);
|
|
251
|
+
vfs.jClose(fileId);
|
|
252
|
+
// Delete file
|
|
253
|
+
expect(vfs.jDelete(path, 0)).toBe(VFS.SQLITE_OK);
|
|
254
|
+
// Verify file is gone
|
|
255
|
+
expect(mockDatabase.has(`file:${path}`)).toBe(false);
|
|
256
|
+
expect(mockDatabase.has(`blocks:${path}`)).toBe(false);
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
describe('VFS Management', () => {
|
|
260
|
+
it('should provide correct VFS characteristics', () => {
|
|
261
|
+
expect(vfs.jSectorSize(1)).toBe(4096);
|
|
262
|
+
expect(vfs.jDeviceCharacteristics(1)).toBe(VFS.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN);
|
|
263
|
+
});
|
|
264
|
+
it('should handle multiple files', async () => {
|
|
265
|
+
const files = [
|
|
266
|
+
{ path: '/test/file1.db', id: 1 },
|
|
267
|
+
{ path: '/test/file2.db', id: 2 },
|
|
268
|
+
{ path: '/test/file3.db', id: 3 },
|
|
269
|
+
];
|
|
270
|
+
const flags = VFS.SQLITE_OPEN_CREATE | VFS.SQLITE_OPEN_READWRITE;
|
|
271
|
+
const pOutFlags = new DataView(new ArrayBuffer(4));
|
|
272
|
+
// Open all files
|
|
273
|
+
for (const file of files) {
|
|
274
|
+
expect(vfs.jOpen(file.path, file.id, flags, pOutFlags)).toBe(VFS.SQLITE_OK);
|
|
275
|
+
}
|
|
276
|
+
// Write different data to each
|
|
277
|
+
for (let i = 0; i < files.length; i++) {
|
|
278
|
+
const data = new TextEncoder().encode(`File ${i + 1} data`);
|
|
279
|
+
expect(vfs.jWrite(files[i]?.id ?? 0, data, 0)).toBe(VFS.SQLITE_OK);
|
|
280
|
+
}
|
|
281
|
+
// Read back and verify
|
|
282
|
+
for (let i = 0; i < files.length; i++) {
|
|
283
|
+
const expected = new TextEncoder().encode(`File ${i + 1} data`);
|
|
284
|
+
const actual = new Uint8Array(expected.length);
|
|
285
|
+
expect(vfs.jRead(files[i]?.id ?? 0, actual, 0)).toBe(VFS.SQLITE_OK);
|
|
286
|
+
expect(actual).toEqual(expected);
|
|
287
|
+
}
|
|
288
|
+
// Close all files
|
|
289
|
+
for (const file of files) {
|
|
290
|
+
expect(vfs.jClose(file.id)).toBe(VFS.SQLITE_OK);
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
it('should provide VFS statistics', () => {
|
|
294
|
+
const stats = vfs.getStats();
|
|
295
|
+
expect(stats).toHaveProperty('activeFiles');
|
|
296
|
+
expect(stats).toHaveProperty('openFiles');
|
|
297
|
+
expect(stats).toHaveProperty('maxFiles');
|
|
298
|
+
expect(stats).toHaveProperty('blockSize');
|
|
299
|
+
expect(stats).toHaveProperty('totalStoredBytes');
|
|
300
|
+
expect(stats.blockSize).toBe(64 * 1024);
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
describe('Error Handling', () => {
|
|
304
|
+
it('should handle invalid file IDs', () => {
|
|
305
|
+
const invalidFileId = 999;
|
|
306
|
+
const buffer = new Uint8Array(100);
|
|
307
|
+
expect(vfs.jRead(invalidFileId, buffer, 0)).toBe(VFS.SQLITE_IOERR);
|
|
308
|
+
expect(vfs.jWrite(invalidFileId, buffer, 0)).toBe(VFS.SQLITE_IOERR);
|
|
309
|
+
expect(vfs.jTruncate(invalidFileId, 50)).toBe(VFS.SQLITE_IOERR);
|
|
310
|
+
expect(vfs.jSync(invalidFileId, 0)).toBe(VFS.SQLITE_IOERR);
|
|
311
|
+
expect(vfs.jClose(invalidFileId)).toBe(VFS.SQLITE_OK);
|
|
312
|
+
});
|
|
313
|
+
it('should handle invalid paths', () => {
|
|
314
|
+
const invalidPath = '';
|
|
315
|
+
const fileId = 1;
|
|
316
|
+
const flags = VFS.SQLITE_OPEN_CREATE | VFS.SQLITE_OPEN_READWRITE;
|
|
317
|
+
const pOutFlags = new DataView(new ArrayBuffer(4));
|
|
318
|
+
expect(vfs.jOpen(invalidPath, fileId, flags, pOutFlags)).toBe(VFS.SQLITE_OK);
|
|
319
|
+
});
|
|
320
|
+
it('should handle file operations on closed files', () => {
|
|
321
|
+
const path = '/test/closed.db';
|
|
322
|
+
const fileId = 1;
|
|
323
|
+
const flags = VFS.SQLITE_OPEN_CREATE | VFS.SQLITE_OPEN_READWRITE;
|
|
324
|
+
const pOutFlags = new DataView(new ArrayBuffer(4));
|
|
325
|
+
// Open and close file
|
|
326
|
+
vfs.jOpen(path, fileId, flags, pOutFlags);
|
|
327
|
+
vfs.jClose(fileId);
|
|
328
|
+
// Try to operate on closed file
|
|
329
|
+
const buffer = new Uint8Array(10);
|
|
330
|
+
expect(vfs.jRead(fileId, buffer, 0)).toBe(VFS.SQLITE_IOERR);
|
|
331
|
+
expect(vfs.jWrite(fileId, buffer, 0)).toBe(VFS.SQLITE_IOERR);
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
describe('Constants and Compatibility', () => {
|
|
335
|
+
it('should define correct VFS constants', () => {
|
|
336
|
+
expect(VFS.SQLITE_OK).toBe(0);
|
|
337
|
+
expect(VFS.SQLITE_IOERR).toBe(10);
|
|
338
|
+
expect(VFS.SQLITE_CANTOPEN).toBe(14);
|
|
339
|
+
expect(VFS.SQLITE_READONLY).toBe(8);
|
|
340
|
+
expect(VFS.SQLITE_IOERR_SHORT_READ).toBe(522);
|
|
341
|
+
expect(VFS.SQLITE_IOERR_WRITE).toBe(778);
|
|
342
|
+
expect(VFS.SQLITE_IOERR_TRUNCATE).toBe(1546);
|
|
343
|
+
});
|
|
344
|
+
it('should handle VFS flags correctly', () => {
|
|
345
|
+
expect(VFS.SQLITE_OPEN_CREATE).toBeTruthy();
|
|
346
|
+
expect(VFS.SQLITE_OPEN_READWRITE).toBeTruthy();
|
|
347
|
+
expect(VFS.SQLITE_OPEN_READONLY).toBeTruthy();
|
|
348
|
+
expect(VFS.SQLITE_OPEN_MAIN_DB).toBeTruthy();
|
|
349
|
+
expect(VFS.SQLITE_OPEN_WAL).toBeTruthy();
|
|
350
|
+
expect(VFS.SQLITE_OPEN_MAIN_JOURNAL).toBeTruthy();
|
|
351
|
+
});
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
//# sourceMappingURL=cloudflare-sql-vfs-core.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-sql-vfs-core.test.js","sourceRoot":"","sources":["../../../../src/cf/test/sql/cloudflare-sql-vfs-core.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.node.d.ts","sourceRoot":"","sources":["../../src/load-wasm/mod.node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mod.node.d.ts","sourceRoot":"","sources":["../../src/load-wasm/mod.node.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,0BAQ3B,CAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import * as WaSqlite from '@livestore/wa-sqlite';
|
|
2
|
-
// @ts-expect-error TODO fix types in wa-sqlite
|
|
3
1
|
import WaSqliteFactory from '@livestore/wa-sqlite/dist/wa-sqlite.node.mjs';
|
|
2
|
+
import * as WaSqlite from '@livestore/wa-sqlite/src/sqlite-api.js';
|
|
4
3
|
export const loadSqlite3Wasm = async () => {
|
|
5
4
|
const module = await WaSqliteFactory();
|
|
6
5
|
// https://github.com/rhashimoto/wa-sqlite/issues/143#issuecomment-1899060056
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.node.js","sourceRoot":"","sources":["../../src/load-wasm/mod.node.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"mod.node.js","sourceRoot":"","sources":["../../src/load-wasm/mod.node.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,8CAA8C,CAAA;AAC1E,OAAO,KAAK,QAAQ,MAAM,wCAAwC,CAAA;AAElE,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;IACxC,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAA;IACtC,6EAA6E;IAC7E,uDAAuD;IACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,kCAAkC;IAClC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;IACvB,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.workerd.d.ts","sourceRoot":"","sources":["../../src/load-wasm/mod.workerd.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,0BAoB3B,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as WaSqlite from '@livestore/wa-sqlite';
|
|
2
|
+
import WaSqliteFactory from '@livestore/wa-sqlite/dist/wa-sqlite.mjs';
|
|
3
|
+
// @ts-expect-error TODO fix types in wa-sqlite
|
|
4
|
+
import wasm from '@livestore/wa-sqlite/dist/wa-sqlite.wasm';
|
|
5
|
+
// Note that it's important that the `workerd` entry is the first one in the `exports` map in the `package.json` file.
|
|
6
|
+
export const loadSqlite3Wasm = async () => {
|
|
7
|
+
// It seems we need to pass in the wasm binary directly for workerd to work
|
|
8
|
+
// This is due to workerd not supporting the same patterns as Vite for automatically loading WASM.
|
|
9
|
+
const module = await WaSqliteFactory({
|
|
10
|
+
instantiateWasm: (info, receiveInstance) => {
|
|
11
|
+
try {
|
|
12
|
+
// Use the pre-compiled module directly
|
|
13
|
+
const instance = new WebAssembly.Instance(wasm, info);
|
|
14
|
+
receiveInstance(instance, wasm);
|
|
15
|
+
return instance.exports;
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
console.error('Failed to instantiate WASM:', error);
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
const sqlite3 = WaSqlite.Factory(module);
|
|
24
|
+
// @ts-expect-error TODO fix types
|
|
25
|
+
sqlite3.module = module;
|
|
26
|
+
return sqlite3;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=mod.workerd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.workerd.js","sourceRoot":"","sources":["../../src/load-wasm/mod.workerd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAChD,OAAO,eAAe,MAAM,yCAAyC,CAAA;AAErE,+CAA+C;AAC/C,OAAO,IAAI,MAAM,0CAA0C,CAAA;AAE3D,sHAAsH;AACtH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;IACxC,2EAA2E;IAC3E,kGAAkG;IAClG,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,eAAe,EAAE,CAAC,IAAS,EAAE,eAAoB,EAAE,EAAE;YACnD,IAAI,CAAC;gBACH,uCAAuC;gBACvC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBACrD,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;gBAC/B,OAAO,QAAQ,CAAC,OAAO,CAAA;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;gBACnD,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;KACF,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,kCAAkC;IAClC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;IACvB,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
package/dist/make-sqlite-db.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-sqlite-db.d.ts","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,QAAQ,EAET,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"make-sqlite-db.d.ts","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,QAAQ,EAET,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAIrD,eAAO,MAAM,YAAY,GACvB,SAAS,SAAS;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC/C,EACD,wBAGC;IACD,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;CACpB,KAAG,QAAQ,CAAC,SAAS,CA8OrB,CAAA"}
|
package/dist/make-sqlite-db.js
CHANGED
|
@@ -11,7 +11,7 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
11
11
|
metadata,
|
|
12
12
|
debug: {
|
|
13
13
|
// Setting initially to root but will be set to correct value shortly after
|
|
14
|
-
head: EventSequenceNumber.ROOT,
|
|
14
|
+
head: EventSequenceNumber.Client.ROOT,
|
|
15
15
|
},
|
|
16
16
|
prepare: (queryStr) => {
|
|
17
17
|
try {
|
|
@@ -115,9 +115,6 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
115
115
|
destroy: () => {
|
|
116
116
|
sqliteDb.close();
|
|
117
117
|
metadata.deleteDb();
|
|
118
|
-
// if (metadata._tag === 'opfs') {
|
|
119
|
-
// metadata.vfs.resetAccessHandle(metadata.fileName)
|
|
120
|
-
// }
|
|
121
118
|
},
|
|
122
119
|
close: () => {
|
|
123
120
|
if (isClosed) {
|
|
@@ -140,16 +137,40 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
140
137
|
// if (readOnly === true) {
|
|
141
138
|
// sqlite3.deserialize(db, 'main', bytes, bytes.length, bytes.length, FREE_ON_CLOSE | RESIZEABLE)
|
|
142
139
|
// } else {
|
|
140
|
+
const ensureSuccess = (rc, operation) => {
|
|
141
|
+
if (rc !== SqliteConstants.SQLITE_OK) {
|
|
142
|
+
throw new SqliteError({
|
|
143
|
+
code: rc,
|
|
144
|
+
cause: new Error(`${operation} failed with rc=${rc}`),
|
|
145
|
+
note: 'Snapshot import failed during SQLite copy',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
};
|
|
143
149
|
if (source instanceof Uint8Array) {
|
|
150
|
+
const WAL_FILE_FORMAT = 2;
|
|
151
|
+
if (source.length >= 24 && (source[18] === WAL_FILE_FORMAT || source[19] === WAL_FILE_FORMAT)) {
|
|
152
|
+
throw new SqliteError({
|
|
153
|
+
code: SqliteConstants.SQLITE_CANTOPEN,
|
|
154
|
+
cause: new Error('WAL snapshots are not supported'),
|
|
155
|
+
note: 'Import expects rollback-journal snapshots (journal_mode=DELETE). Please convert snapshot before importing.',
|
|
156
|
+
});
|
|
157
|
+
}
|
|
144
158
|
const tmpDb = makeInMemoryDb(sqlite3);
|
|
145
159
|
// TODO find a way to do this more efficiently with sqlite to avoid either of the deserialize + backup call
|
|
146
160
|
// Maybe this can be done via the VFS API
|
|
147
|
-
sqlite3.deserialize(tmpDb.dbPointer, 'main', source, source.length, source.length, FREE_ON_CLOSE | RESIZEABLE);
|
|
148
|
-
|
|
149
|
-
|
|
161
|
+
const rcDeserialize = sqlite3.deserialize(tmpDb.dbPointer, 'main', source, source.length, source.length, FREE_ON_CLOSE | RESIZEABLE);
|
|
162
|
+
ensureSuccess(rcDeserialize, 'sqlite3.deserialize');
|
|
163
|
+
try {
|
|
164
|
+
const rcBackup = sqlite3.backup(dbPointer, 'main', tmpDb.dbPointer, 'main');
|
|
165
|
+
ensureSuccess(rcBackup, 'sqlite3.backup');
|
|
166
|
+
}
|
|
167
|
+
finally {
|
|
168
|
+
sqlite3.close(tmpDb.dbPointer);
|
|
169
|
+
}
|
|
150
170
|
}
|
|
151
171
|
else {
|
|
152
|
-
sqlite3.backup(dbPointer, 'main', source.metadata.dbPointer, 'main');
|
|
172
|
+
const rcBackup = sqlite3.backup(dbPointer, 'main', source.metadata.dbPointer, 'main');
|
|
173
|
+
ensureSuccess(rcBackup, 'sqlite3.backup');
|
|
153
174
|
}
|
|
154
175
|
metadata.configureDb(sqliteDb);
|
|
155
176
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-sqlite-db.js","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"make-sqlite-db.js","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"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"}
|
package/dist/node/NodeFS.d.ts
CHANGED
|
@@ -4,8 +4,7 @@ export declare class NodeFS extends FacadeVFS {
|
|
|
4
4
|
private mapIdToFile;
|
|
5
5
|
private lastError;
|
|
6
6
|
private readonly directory;
|
|
7
|
-
|
|
8
|
-
constructor(name: string, sqlite3: WaSqlite.SQLiteAPI, directory: string, onShutdown: () => void);
|
|
7
|
+
constructor(name: string, sqlite3: WaSqlite.SQLiteAPI, directory: string);
|
|
9
8
|
getFilename(fileId: number): string;
|
|
10
9
|
jOpen(zName: string | null, fileId: number, flags: number, pOutFlags: DataView): number;
|
|
11
10
|
jRead(fileId: number, pData: Uint8Array<ArrayBuffer>, iOffset: number): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeFS.d.ts","sourceRoot":"","sources":["../../src/node/NodeFS.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQ3C,qBAAa,MAAO,SAAQ,SAAS;IACnC,OAAO,CAAC,WAAW,CAAgC;IAEnD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;
|
|
1
|
+
{"version":3,"file":"NodeFS.d.ts","sourceRoot":"","sources":["../../src/node/NodeFS.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQ3C,qBAAa,MAAO,SAAQ,SAAS;IACnC,OAAO,CAAC,WAAW,CAAgC;IAEnD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBACtB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM;IAMxE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKnC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,MAAM;IAmCvF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAoB9E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAe/E,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAoB9B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM;IAcpD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAahD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAc7C,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAWhD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM;IAYjE,QAAQ,CAAC,QAAQ,EAAE,MAAM;CAG1B"}
|
package/dist/node/NodeFS.js
CHANGED
|
@@ -8,11 +8,9 @@ export class NodeFS extends FacadeVFS {
|
|
|
8
8
|
// biome-ignore lint/correctness/noUnusedPrivateClassMembers: for debugging
|
|
9
9
|
lastError = null;
|
|
10
10
|
directory;
|
|
11
|
-
|
|
12
|
-
constructor(name, sqlite3, directory, onShutdown) {
|
|
11
|
+
constructor(name, sqlite3, directory) {
|
|
13
12
|
super(name, sqlite3);
|
|
14
13
|
this.directory = directory;
|
|
15
|
-
this.onShutdown = onShutdown;
|
|
16
14
|
}
|
|
17
15
|
getFilename(fileId) {
|
|
18
16
|
const pathname = this.mapIdToFile.get(fileId)?.pathname;
|
|
@@ -88,7 +86,6 @@ export class NodeFS extends FacadeVFS {
|
|
|
88
86
|
}
|
|
89
87
|
jClose(fileId) {
|
|
90
88
|
try {
|
|
91
|
-
this.onShutdown();
|
|
92
89
|
const file = this.mapIdToFile.get(fileId);
|
|
93
90
|
if (!file)
|
|
94
91
|
return VFS.SQLITE_OK;
|
|
@@ -149,7 +146,6 @@ export class NodeFS extends FacadeVFS {
|
|
|
149
146
|
}
|
|
150
147
|
jDelete(zName, _syncDir) {
|
|
151
148
|
try {
|
|
152
|
-
this.onShutdown();
|
|
153
149
|
const pathname = path.resolve(this.directory, zName);
|
|
154
150
|
fs.unlinkSync(pathname);
|
|
155
151
|
return VFS.SQLITE_OK;
|
|
@@ -172,7 +168,6 @@ export class NodeFS extends FacadeVFS {
|
|
|
172
168
|
}
|
|
173
169
|
}
|
|
174
170
|
deleteDb(fileName) {
|
|
175
|
-
this.onShutdown();
|
|
176
171
|
fs.unlinkSync(path.join(this.directory, fileName));
|
|
177
172
|
}
|
|
178
173
|
}
|