@framers/sql-storage-adapter 0.1.0 → 0.3.0
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/LICENSE +20 -20
- package/README.md +241 -363
- package/dist/adapters/__tests__/indexedDbAdapter.spec.d.ts +2 -0
- package/dist/adapters/__tests__/indexedDbAdapter.spec.d.ts.map +1 -0
- package/dist/adapters/__tests__/indexedDbAdapter.spec.js +137 -0
- package/dist/adapters/__tests__/indexedDbAdapter.spec.js.map +1 -0
- package/dist/adapters/baseStorageAdapter.d.ts +1 -1
- package/dist/adapters/baseStorageAdapter.d.ts.map +1 -1
- package/dist/adapters/betterSqliteAdapter.d.ts +27 -1
- package/dist/adapters/betterSqliteAdapter.d.ts.map +1 -1
- package/dist/adapters/betterSqliteAdapter.js +81 -16
- package/dist/adapters/betterSqliteAdapter.js.map +1 -1
- package/dist/adapters/capacitorSqliteAdapter.d.ts +1 -1
- package/dist/adapters/capacitorSqliteAdapter.d.ts.map +1 -1
- package/dist/adapters/capacitorSqliteAdapter.js +27 -4
- package/dist/adapters/capacitorSqliteAdapter.js.map +1 -1
- package/dist/adapters/indexedDbAdapter.d.ts +189 -0
- package/dist/adapters/indexedDbAdapter.d.ts.map +1 -0
- package/dist/adapters/indexedDbAdapter.js +367 -0
- package/dist/adapters/indexedDbAdapter.js.map +1 -0
- package/dist/adapters/postgresAdapter.d.ts +7 -1
- package/dist/adapters/postgresAdapter.d.ts.map +1 -1
- package/dist/adapters/postgresAdapter.js +19 -2
- package/dist/adapters/postgresAdapter.js.map +1 -1
- package/dist/adapters/sqlJsAdapter.d.ts +1 -1
- package/dist/adapters/sqlJsAdapter.d.ts.map +1 -1
- package/dist/adapters/sqlJsAdapter.js +16 -2
- package/dist/adapters/sqlJsAdapter.js.map +1 -1
- package/dist/adapters/supabase.d.ts +3 -3
- package/dist/adapters/supabase.d.ts.map +1 -1
- package/dist/adapters/supabase.js +11 -7
- package/dist/adapters/supabase.js.map +1 -1
- package/dist/agentos/AgentOSStorageAdapter.d.ts +320 -0
- package/dist/agentos/AgentOSStorageAdapter.d.ts.map +1 -0
- package/dist/agentos/AgentOSStorageAdapter.js +406 -0
- package/dist/agentos/AgentOSStorageAdapter.js.map +1 -0
- package/dist/agentos/index.d.ts +7 -0
- package/dist/agentos/index.d.ts.map +1 -0
- package/dist/agentos/index.js +7 -0
- package/dist/agentos/index.js.map +1 -0
- package/dist/{types → core/contracts}/context.d.ts +2 -2
- package/dist/core/contracts/context.d.ts.map +1 -0
- package/dist/core/contracts/context.js.map +1 -0
- package/dist/{types → core/contracts}/events.d.ts +1 -1
- package/dist/core/contracts/events.d.ts.map +1 -0
- package/dist/core/contracts/events.js.map +1 -0
- package/dist/{types → core/contracts}/extensions.d.ts +3 -3
- package/dist/core/contracts/extensions.d.ts.map +1 -0
- package/dist/core/contracts/extensions.js.map +1 -0
- package/dist/{types.d.ts → core/contracts/index.d.ts} +1 -1
- package/dist/core/contracts/index.d.ts.map +1 -0
- package/dist/{types.js → core/contracts/index.js} +1 -1
- package/dist/core/contracts/index.js.map +1 -0
- package/dist/core/contracts/limitations.d.ts.map +1 -0
- package/dist/core/contracts/limitations.js.map +1 -0
- package/dist/{database.d.ts → core/database.d.ts} +16 -3
- package/dist/core/database.d.ts.map +1 -0
- package/dist/{database.js → core/database.js} +39 -8
- package/dist/core/database.js.map +1 -0
- package/dist/{resolver.d.ts → core/resolver.d.ts} +4 -4
- package/dist/core/resolver.d.ts.map +1 -0
- package/dist/{resolver.js → core/resolver.js} +24 -8
- package/dist/core/resolver.js.map +1 -0
- package/dist/{utils → features/backup}/cloudBackup.d.ts +1 -1
- package/dist/features/backup/cloudBackup.d.ts.map +1 -0
- package/dist/{utils → features/backup}/cloudBackup.js +2 -2
- package/dist/features/backup/cloudBackup.js.map +1 -0
- package/dist/{utils → features/migrations}/dataExport.d.ts +1 -1
- package/dist/features/migrations/dataExport.d.ts.map +1 -0
- package/dist/features/migrations/dataExport.js.map +1 -0
- package/dist/{utils → features/migrations}/dataImport.d.ts +1 -1
- package/dist/features/migrations/dataImport.d.ts.map +1 -0
- package/dist/features/migrations/dataImport.js.map +1 -0
- package/dist/{utils → features/migrations}/migration.d.ts +2 -2
- package/dist/features/migrations/migration.d.ts.map +1 -0
- package/dist/{utils → features/migrations}/migration.js +6 -6
- package/dist/features/migrations/migration.js.map +1 -0
- package/dist/{utils → features/sync}/syncManager.d.ts +11 -5
- package/dist/features/sync/syncManager.d.ts.map +1 -0
- package/dist/{utils → features/sync}/syncManager.js +40 -10
- package/dist/features/sync/syncManager.js.map +1 -0
- package/dist/index.d.ts +12 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -19
- package/dist/index.js.map +1 -1
- package/dist/{utils → shared}/parameterUtils.d.ts +1 -1
- package/dist/shared/parameterUtils.d.ts.map +1 -0
- package/dist/shared/parameterUtils.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +22 -6
- package/dist/database.d.ts.map +0 -1
- package/dist/database.js.map +0 -1
- package/dist/resolver.d.ts.map +0 -1
- package/dist/resolver.js.map +0 -1
- package/dist/types/context.d.ts.map +0 -1
- package/dist/types/context.js.map +0 -1
- package/dist/types/events.d.ts.map +0 -1
- package/dist/types/events.js.map +0 -1
- package/dist/types/extensions.d.ts.map +0 -1
- package/dist/types/extensions.js.map +0 -1
- package/dist/types/limitations.d.ts.map +0 -1
- package/dist/types/limitations.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/cloudBackup.d.ts.map +0 -1
- package/dist/utils/cloudBackup.js.map +0 -1
- package/dist/utils/dataExport.d.ts.map +0 -1
- package/dist/utils/dataExport.js.map +0 -1
- package/dist/utils/dataImport.d.ts.map +0 -1
- package/dist/utils/dataImport.js.map +0 -1
- package/dist/utils/migration.d.ts.map +0 -1
- package/dist/utils/migration.js.map +0 -1
- package/dist/utils/parameterUtils.d.ts.map +0 -1
- package/dist/utils/parameterUtils.js.map +0 -1
- package/dist/utils/syncManager.d.ts.map +0 -1
- package/dist/utils/syncManager.js.map +0 -1
- /package/dist/{types → core/contracts}/context.js +0 -0
- /package/dist/{types → core/contracts}/events.js +0 -0
- /package/dist/{types → core/contracts}/extensions.js +0 -0
- /package/dist/{types → core/contracts}/limitations.d.ts +0 -0
- /package/dist/{types → core/contracts}/limitations.js +0 -0
- /package/dist/{utils → features/migrations}/dataExport.js +0 -0
- /package/dist/{utils → features/migrations}/dataImport.js +0 -0
- /package/dist/{utils → shared}/parameterUtils.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexedDbAdapter.spec.d.ts","sourceRoot":"","sources":["../../../src/adapters/__tests__/indexedDbAdapter.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { IndexedDbAdapter } from '../indexedDbAdapter';
|
|
3
|
+
// Mock IndexedDB for Node.js tests
|
|
4
|
+
const setupIndexedDbMock = () => {
|
|
5
|
+
const stores = new Map();
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
|
+
global.indexedDB = {
|
|
8
|
+
open: (_name, _version) => {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
|
+
const req = {
|
|
11
|
+
result: {
|
|
12
|
+
objectStoreNames: { contains: () => false },
|
|
13
|
+
createObjectStore: (_storeName) => {
|
|
14
|
+
stores.set(_storeName, new Map());
|
|
15
|
+
},
|
|
16
|
+
transaction: (_storeName, _mode) => ({
|
|
17
|
+
objectStore: (name) => {
|
|
18
|
+
const store = stores.get(name) || new Map();
|
|
19
|
+
return {
|
|
20
|
+
get: (key) => ({
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
+
onsuccess: null,
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
+
onerror: null,
|
|
25
|
+
result: store.get(key),
|
|
26
|
+
}),
|
|
27
|
+
put: (value, key) => {
|
|
28
|
+
store.set(key, value);
|
|
29
|
+
return {
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
+
onsuccess: null,
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
onerror: null,
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
}),
|
|
39
|
+
close: () => { },
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
if (req.onupgradeneeded)
|
|
44
|
+
req.onupgradeneeded();
|
|
45
|
+
if (req.onsuccess)
|
|
46
|
+
req.onsuccess();
|
|
47
|
+
}, 0);
|
|
48
|
+
return req;
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
describe('IndexedDbAdapter', () => {
|
|
53
|
+
let adapter;
|
|
54
|
+
beforeEach(async () => {
|
|
55
|
+
setupIndexedDbMock();
|
|
56
|
+
adapter = new IndexedDbAdapter({
|
|
57
|
+
dbName: 'test-db',
|
|
58
|
+
autoSave: false, // Disable for tests
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
afterEach(async () => {
|
|
62
|
+
if (adapter) {
|
|
63
|
+
await adapter.close();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
it('should initialize with correct capabilities', () => {
|
|
67
|
+
expect(adapter.kind).toBe('indexeddb');
|
|
68
|
+
expect(adapter.capabilities.has('transactions')).toBe(true);
|
|
69
|
+
expect(adapter.capabilities.has('persistence')).toBe(true);
|
|
70
|
+
});
|
|
71
|
+
it('should open database successfully', async () => {
|
|
72
|
+
await adapter.open();
|
|
73
|
+
// No error means success
|
|
74
|
+
expect(true).toBe(true);
|
|
75
|
+
});
|
|
76
|
+
it('should create table and insert data', async () => {
|
|
77
|
+
await adapter.open();
|
|
78
|
+
await adapter.run('CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)');
|
|
79
|
+
const result = await adapter.run('INSERT INTO test (name) VALUES (?)', ['Alice']);
|
|
80
|
+
expect(result.changes).toBe(1);
|
|
81
|
+
expect(result.lastInsertRowid).toBeDefined();
|
|
82
|
+
});
|
|
83
|
+
it('should retrieve inserted data', async () => {
|
|
84
|
+
await adapter.open();
|
|
85
|
+
await adapter.run('CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)');
|
|
86
|
+
await adapter.run('INSERT INTO test (name) VALUES (?)', ['Bob']);
|
|
87
|
+
const row = await adapter.get('SELECT * FROM test WHERE name = ?', ['Bob']);
|
|
88
|
+
expect(row).toBeDefined();
|
|
89
|
+
expect(row?.name).toBe('Bob');
|
|
90
|
+
});
|
|
91
|
+
it('should return all rows', async () => {
|
|
92
|
+
await adapter.open();
|
|
93
|
+
await adapter.run('CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)');
|
|
94
|
+
await adapter.run('INSERT INTO test (name) VALUES (?)', ['Alice']);
|
|
95
|
+
await adapter.run('INSERT INTO test (name) VALUES (?)', ['Bob']);
|
|
96
|
+
const rows = await adapter.all('SELECT * FROM test');
|
|
97
|
+
expect(rows.length).toBe(2);
|
|
98
|
+
expect(rows.map(r => r.name)).toContain('Alice');
|
|
99
|
+
expect(rows.map(r => r.name)).toContain('Bob');
|
|
100
|
+
});
|
|
101
|
+
it('should support transactions', async () => {
|
|
102
|
+
await adapter.open();
|
|
103
|
+
await adapter.run('CREATE TABLE test (id INTEGER PRIMARY KEY, value INTEGER)');
|
|
104
|
+
await adapter.beginTransaction();
|
|
105
|
+
await adapter.run('INSERT INTO test (value) VALUES (?)', [100]);
|
|
106
|
+
await adapter.run('INSERT INTO test (value) VALUES (?)', [200]);
|
|
107
|
+
await adapter.commit();
|
|
108
|
+
const rows = await adapter.all('SELECT value FROM test');
|
|
109
|
+
expect(rows.length).toBe(2);
|
|
110
|
+
expect(rows.map(r => r.value)).toEqual([100, 200]);
|
|
111
|
+
});
|
|
112
|
+
it('should rollback transactions', async () => {
|
|
113
|
+
await adapter.open();
|
|
114
|
+
await adapter.run('CREATE TABLE test (id INTEGER PRIMARY KEY, value INTEGER)');
|
|
115
|
+
await adapter.beginTransaction();
|
|
116
|
+
await adapter.run('INSERT INTO test (value) VALUES (?)', [100]);
|
|
117
|
+
await adapter.rollback();
|
|
118
|
+
const rows = await adapter.all('SELECT * FROM test');
|
|
119
|
+
expect(rows.length).toBe(0);
|
|
120
|
+
});
|
|
121
|
+
it('should export and import database', async () => {
|
|
122
|
+
await adapter.open();
|
|
123
|
+
await adapter.run('CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)');
|
|
124
|
+
await adapter.run('INSERT INTO test (name) VALUES (?)', ['Export Test']);
|
|
125
|
+
const exported = adapter.exportDatabase();
|
|
126
|
+
expect(exported).toBeInstanceOf(Uint8Array);
|
|
127
|
+
expect(exported.length).toBeGreaterThan(0);
|
|
128
|
+
// Create new adapter and import
|
|
129
|
+
const adapter2 = new IndexedDbAdapter({ dbName: 'test-db-2', autoSave: false });
|
|
130
|
+
await adapter2.open();
|
|
131
|
+
await adapter2.importDatabase(exported);
|
|
132
|
+
const row = await adapter2.get('SELECT * FROM test WHERE name = ?', ['Export Test']);
|
|
133
|
+
expect(row?.name).toBe('Export Test');
|
|
134
|
+
await adapter2.close();
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=indexedDbAdapter.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexedDbAdapter.spec.js","sourceRoot":"","sources":["../../../src/adapters/__tests__/indexedDbAdapter.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* }
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
|
-
import type { StorageAdapter, StorageCapability, StorageOpenOptions, StorageParameters, StorageRunResult, BatchOperation, BatchResult, PreparedStatement } from '../
|
|
30
|
+
import type { StorageAdapter, StorageCapability, StorageOpenOptions, StorageParameters, StorageRunResult, BatchOperation, BatchResult, PreparedStatement } from '../core/contracts';
|
|
31
31
|
/**
|
|
32
32
|
* Options for BaseStorageAdapter configuration.
|
|
33
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseStorageAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/baseStorageAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,iBAAiB,EAClB,MAAM,
|
|
1
|
+
{"version":3,"file":"baseStorageAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/baseStorageAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { StorageAdapter, StorageOpenOptions, StorageParameters, StorageRunResult, StorageCapability, BatchOperation, BatchResult } from '../
|
|
1
|
+
import type { StorageAdapter, StorageOpenOptions, StorageParameters, StorageRunResult, StorageCapability, BatchOperation, BatchResult } from '../core/contracts';
|
|
2
2
|
/**
|
|
3
3
|
* Native SQLite adapter using better-sqlite3.
|
|
4
4
|
*
|
|
@@ -23,6 +23,18 @@ import type { StorageAdapter, StorageOpenOptions, StorageParameters, StorageRunR
|
|
|
23
23
|
* - Automatically enables WAL mode for better concurrency
|
|
24
24
|
* - Handles database corruption with automatic recovery
|
|
25
25
|
*/
|
|
26
|
+
/**
|
|
27
|
+
* Native SQLite adapter backed by the `better-sqlite3` module.
|
|
28
|
+
*
|
|
29
|
+
* Features:
|
|
30
|
+
* - Synchronous & high-performance local storage
|
|
31
|
+
* - WAL support, prepared statements, batched writes
|
|
32
|
+
* - Graceful degradation when the native module is absent
|
|
33
|
+
*
|
|
34
|
+
* Browser Safety:
|
|
35
|
+
* This class can be imported in browser bundles without immediate failure.
|
|
36
|
+
* A runtime error is only thrown if `open()` is invoked in a browser context.
|
|
37
|
+
*/
|
|
26
38
|
export declare class BetterSqliteAdapter implements StorageAdapter {
|
|
27
39
|
private readonly defaultFilePath;
|
|
28
40
|
readonly kind = "better-sqlite3";
|
|
@@ -37,6 +49,11 @@ export declare class BetterSqliteAdapter implements StorageAdapter {
|
|
|
37
49
|
* Will be created if it doesn't exist.
|
|
38
50
|
*/
|
|
39
51
|
constructor(defaultFilePath: string);
|
|
52
|
+
/**
|
|
53
|
+
* Open (or no-op if already open) the underlying native database.
|
|
54
|
+
*
|
|
55
|
+
* Throws a descriptive error if called in a browser environment.
|
|
56
|
+
*/
|
|
40
57
|
open(options?: StorageOpenOptions): Promise<void>;
|
|
41
58
|
run(statement: string, parameters?: StorageParameters): Promise<StorageRunResult>;
|
|
42
59
|
get<T = unknown>(statement: string, parameters?: StorageParameters): Promise<T | null>;
|
|
@@ -60,5 +77,14 @@ export declare class BetterSqliteAdapter implements StorageAdapter {
|
|
|
60
77
|
/**
|
|
61
78
|
* Factory helper.
|
|
62
79
|
*/
|
|
80
|
+
/**
|
|
81
|
+
* Factory helper for creating a BetterSqliteAdapter.
|
|
82
|
+
*
|
|
83
|
+
* Path Resolution:
|
|
84
|
+
* - Absolute paths are used as-is.
|
|
85
|
+
* - Relative paths are resolved against the current working directory instead
|
|
86
|
+
* of the adapter file location (simpler & bundler neutral).
|
|
87
|
+
* - Special values like ':memory:' and 'file:' URIs are passed through.
|
|
88
|
+
*/
|
|
63
89
|
export declare const createBetterSqliteAdapter: (filePath: string) => StorageAdapter;
|
|
64
90
|
//# sourceMappingURL=betterSqliteAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"betterSqliteAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/betterSqliteAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"betterSqliteAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/betterSqliteAdapter.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAiDjK;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAsB5C,OAAO,CAAC,QAAQ,CAAC,eAAe;IArB5C,SAAgB,IAAI,oBAAoB;IACxC,SAAgB,YAAY,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAQzD;IAEH,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,EAAE,CAAqC;IAC/C,OAAO,CAAC,kBAAkB,CAA4C;IAEtE;;;;;OAKG;gBAC0B,eAAe,EAAE,MAAM;IAEpD;;;;OAIG;IACU,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBjD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOjF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAOtF,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAOvE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAenE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IASnC;;;;;;;;OAQG;IACU,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA+CtE,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,UAAU;CAKnB;AAED;;GAEG;AACH;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,aAAc,MAAM,KAAG,cAQ5D,CAAC"}
|
|
@@ -1,12 +1,30 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Internal environment flags - evaluated at module load but side-effect free.
|
|
4
|
+
* We deliberately avoid throwing here so that bundlers (Vite, Webpack, etc.)
|
|
5
|
+
* can safely include this module in a dependency graph for tree-shaking
|
|
6
|
+
* without immediately exploding in browser builds. Any actual attempt to
|
|
7
|
+
* OPEN the adapter in a browser will produce a clear runtime error.
|
|
8
|
+
*/
|
|
9
|
+
const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
|
|
10
|
+
import { normaliseParameters } from '../shared/parameterUtils';
|
|
4
11
|
/**
|
|
5
12
|
* Lazy loader for better-sqlite3 to keep the dependency optional.
|
|
6
13
|
*
|
|
7
14
|
* This allows the package to work even when better-sqlite3 isn't installed,
|
|
8
15
|
* falling back to other adapters gracefully.
|
|
9
16
|
*/
|
|
17
|
+
/**
|
|
18
|
+
* Lazy loader for the optional native `better-sqlite3` dependency.
|
|
19
|
+
*
|
|
20
|
+
* Strategy:
|
|
21
|
+
* 1. Attempt ESM dynamic import (works when the package is installed and
|
|
22
|
+
* supports ESM resolution).
|
|
23
|
+
* 2. Fallback to CommonJS require via createRequire for environments where
|
|
24
|
+
* only the CJS entry is available.
|
|
25
|
+
* 3. On failure, return null so the resolver can gracefully fall back to a
|
|
26
|
+
* different adapter (e.g., sql.js) instead of crashing.
|
|
27
|
+
*/
|
|
10
28
|
const loadBetterSqlite = async () => {
|
|
11
29
|
try {
|
|
12
30
|
// Attempt ESM import first (pnpm hoists as ESM-compatible).
|
|
@@ -14,8 +32,10 @@ const loadBetterSqlite = async () => {
|
|
|
14
32
|
}
|
|
15
33
|
catch {
|
|
16
34
|
try {
|
|
17
|
-
// Fallback to require
|
|
18
|
-
|
|
35
|
+
// Fallback to CJS require. Use createRequire relative to process.cwd()
|
|
36
|
+
// to avoid depending on url.fileURLToPath in browser bundles.
|
|
37
|
+
const { createRequire } = await import('module');
|
|
38
|
+
const require = createRequire(path.join(process.cwd(), 'noop.js'));
|
|
19
39
|
return require('better-sqlite3');
|
|
20
40
|
}
|
|
21
41
|
catch (error) {
|
|
@@ -24,6 +44,12 @@ const loadBetterSqlite = async () => {
|
|
|
24
44
|
}
|
|
25
45
|
}
|
|
26
46
|
};
|
|
47
|
+
const normaliseRowId = (rowId) => {
|
|
48
|
+
if (rowId === null || rowId === undefined) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
return typeof rowId === 'bigint' ? rowId.toString() : rowId;
|
|
52
|
+
};
|
|
27
53
|
/**
|
|
28
54
|
* Native SQLite adapter using better-sqlite3.
|
|
29
55
|
*
|
|
@@ -48,6 +74,18 @@ const loadBetterSqlite = async () => {
|
|
|
48
74
|
* - Automatically enables WAL mode for better concurrency
|
|
49
75
|
* - Handles database corruption with automatic recovery
|
|
50
76
|
*/
|
|
77
|
+
/**
|
|
78
|
+
* Native SQLite adapter backed by the `better-sqlite3` module.
|
|
79
|
+
*
|
|
80
|
+
* Features:
|
|
81
|
+
* - Synchronous & high-performance local storage
|
|
82
|
+
* - WAL support, prepared statements, batched writes
|
|
83
|
+
* - Graceful degradation when the native module is absent
|
|
84
|
+
*
|
|
85
|
+
* Browser Safety:
|
|
86
|
+
* This class can be imported in browser bundles without immediate failure.
|
|
87
|
+
* A runtime error is only thrown if `open()` is invoked in a browser context.
|
|
88
|
+
*/
|
|
51
89
|
export class BetterSqliteAdapter {
|
|
52
90
|
/**
|
|
53
91
|
* Creates a new better-sqlite3 adapter instance.
|
|
@@ -71,27 +109,34 @@ export class BetterSqliteAdapter {
|
|
|
71
109
|
this.db = null;
|
|
72
110
|
this.preparedStatements = new Map();
|
|
73
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Open (or no-op if already open) the underlying native database.
|
|
114
|
+
*
|
|
115
|
+
* Throws a descriptive error if called in a browser environment.
|
|
116
|
+
*/
|
|
74
117
|
async open(options) {
|
|
75
118
|
if (this.db) {
|
|
76
119
|
return;
|
|
77
120
|
}
|
|
121
|
+
if (isBrowser) {
|
|
122
|
+
throw new Error('[StorageAdapter] better-sqlite3 adapter cannot be opened in a browser environment.');
|
|
123
|
+
}
|
|
78
124
|
this.module = await loadBetterSqlite();
|
|
79
125
|
if (!this.module) {
|
|
80
126
|
throw new Error('better-sqlite3 module is not available. Install it or choose another adapter.');
|
|
81
127
|
}
|
|
82
128
|
// Handle ESM/CJS interop for better-sqlite3 constructor
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
DatabaseCtor = this.module.default;
|
|
86
|
-
}
|
|
129
|
+
const moduleReference = this.module;
|
|
130
|
+
const DatabaseCtor = moduleReference.default ?? moduleReference;
|
|
87
131
|
const resolvedPath = options?.filePath ?? this.defaultFilePath;
|
|
88
|
-
|
|
132
|
+
const databaseOptions = options?.readOnly ? { readonly: true } : undefined;
|
|
133
|
+
this.db = new DatabaseCtor(resolvedPath, databaseOptions);
|
|
89
134
|
}
|
|
90
135
|
async run(statement, parameters) {
|
|
91
136
|
const stmt = this.prepareInternal(statement);
|
|
92
137
|
const { named, positional } = normaliseParameters(parameters);
|
|
93
138
|
const result = named ? stmt.run(named) : stmt.run(positional ?? []);
|
|
94
|
-
return { changes: result.changes, lastInsertRowid: result.lastInsertRowid };
|
|
139
|
+
return { changes: result.changes, lastInsertRowid: normaliseRowId(result.lastInsertRowid) };
|
|
95
140
|
}
|
|
96
141
|
async get(statement, parameters) {
|
|
97
142
|
const stmt = this.prepareInternal(statement);
|
|
@@ -111,9 +156,21 @@ export class BetterSqliteAdapter {
|
|
|
111
156
|
}
|
|
112
157
|
async transaction(fn) {
|
|
113
158
|
this.ensureOpen();
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
159
|
+
// Manual transactional control to support async callback semantics
|
|
160
|
+
// without violating better-sqlite3's sync transaction callback contract.
|
|
161
|
+
this.db.exec('BEGIN');
|
|
162
|
+
try {
|
|
163
|
+
const result = await fn(this);
|
|
164
|
+
this.db.exec('COMMIT');
|
|
165
|
+
return result;
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
try {
|
|
169
|
+
this.db.exec('ROLLBACK');
|
|
170
|
+
}
|
|
171
|
+
catch { /* ignore rollback errors */ }
|
|
172
|
+
throw error;
|
|
173
|
+
}
|
|
117
174
|
}
|
|
118
175
|
async close() {
|
|
119
176
|
if (this.db) {
|
|
@@ -147,7 +204,7 @@ export class BetterSqliteAdapter {
|
|
|
147
204
|
const result = named ? stmt.run(named) : stmt.run(positional ?? []);
|
|
148
205
|
results.push({
|
|
149
206
|
changes: result.changes,
|
|
150
|
-
lastInsertRowid: result.lastInsertRowid
|
|
207
|
+
lastInsertRowid: normaliseRowId(result.lastInsertRowid)
|
|
151
208
|
});
|
|
152
209
|
successful++;
|
|
153
210
|
}
|
|
@@ -193,14 +250,22 @@ export class BetterSqliteAdapter {
|
|
|
193
250
|
/**
|
|
194
251
|
* Factory helper.
|
|
195
252
|
*/
|
|
253
|
+
/**
|
|
254
|
+
* Factory helper for creating a BetterSqliteAdapter.
|
|
255
|
+
*
|
|
256
|
+
* Path Resolution:
|
|
257
|
+
* - Absolute paths are used as-is.
|
|
258
|
+
* - Relative paths are resolved against the current working directory instead
|
|
259
|
+
* of the adapter file location (simpler & bundler neutral).
|
|
260
|
+
* - Special values like ':memory:' and 'file:' URIs are passed through.
|
|
261
|
+
*/
|
|
196
262
|
export const createBetterSqliteAdapter = (filePath) => {
|
|
197
|
-
// Don't resolve special SQLite paths
|
|
198
263
|
if (filePath === ':memory:' || filePath.startsWith('file:')) {
|
|
199
264
|
return new BetterSqliteAdapter(filePath);
|
|
200
265
|
}
|
|
201
266
|
const resolved = path.isAbsolute(filePath)
|
|
202
267
|
? filePath
|
|
203
|
-
: path.resolve(
|
|
268
|
+
: path.resolve(process.cwd(), filePath);
|
|
204
269
|
return new BetterSqliteAdapter(resolved);
|
|
205
270
|
};
|
|
206
271
|
//# sourceMappingURL=betterSqliteAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"betterSqliteAdapter.js","sourceRoot":"","sources":["../../src/adapters/betterSqliteAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"betterSqliteAdapter.js","sourceRoot":"","sources":["../../src/adapters/betterSqliteAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { StorageAdapter, StorageCapability, StorageOpenOptions, StorageParameters, StorageRunResult } from '../
|
|
1
|
+
import type { StorageAdapter, StorageCapability, StorageOpenOptions, StorageParameters, StorageRunResult } from '../core/contracts';
|
|
2
2
|
export interface CapacitorAdapterOptions {
|
|
3
3
|
/**
|
|
4
4
|
* Database name. Defaults to `app`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitorSqliteAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/capacitorSqliteAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"capacitorSqliteAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/capacitorSqliteAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAK3B,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAuCD;;GAEG;AACH,qBAAa,sBAAuB,YAAW,cAAc;IAa/C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZpC,SAAgB,IAAI,sBAAsB;IAC1C,SAAgB,YAAY,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAKzD;IAEH,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,MAAM,CAAS;gBAEM,OAAO,GAAE,uBAA4B;IAIrD,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BjD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOjF,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAK5E,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAOvE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAanE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOnC,OAAO,CAAC,gBAAgB;CAMzB;AAED,eAAO,MAAM,4BAA4B,aAAc,uBAAuB,KAAG,cAC5C,CAAC"}
|
|
@@ -1,7 +1,27 @@
|
|
|
1
|
-
import { normaliseParameters } from '../
|
|
1
|
+
import { normaliseParameters } from '../shared/parameterUtils';
|
|
2
|
+
const isCapacitorPlugin = (value) => {
|
|
3
|
+
if (!value || typeof value !== 'object') {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
const candidate = value;
|
|
7
|
+
return typeof candidate.createConnection === 'function';
|
|
8
|
+
};
|
|
2
9
|
const loadCapacitorSqlite = async () => {
|
|
3
10
|
try {
|
|
4
|
-
|
|
11
|
+
const mod = await import('@capacitor-community/sqlite');
|
|
12
|
+
if (isCapacitorPlugin(mod)) {
|
|
13
|
+
return mod;
|
|
14
|
+
}
|
|
15
|
+
if (mod && typeof mod === 'object') {
|
|
16
|
+
const { default: defaultExport, CapacitorSQLite } = mod;
|
|
17
|
+
if (isCapacitorPlugin(defaultExport)) {
|
|
18
|
+
return defaultExport;
|
|
19
|
+
}
|
|
20
|
+
if (isCapacitorPlugin(CapacitorSQLite)) {
|
|
21
|
+
return CapacitorSQLite;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
5
25
|
}
|
|
6
26
|
catch (error) {
|
|
7
27
|
console.warn('[StorageAdapter] @capacitor-community/sqlite module not available.', error);
|
|
@@ -33,8 +53,11 @@ export class CapacitorSqliteAdapter {
|
|
|
33
53
|
if (!this.plugin) {
|
|
34
54
|
throw new Error('@capacitor-community/sqlite is unavailable. Install the plugin or choose a different adapter.');
|
|
35
55
|
}
|
|
36
|
-
const
|
|
37
|
-
|
|
56
|
+
const adapterOptions = options?.adapterOptions;
|
|
57
|
+
const requestedName = typeof adapterOptions?.database === 'string' ? adapterOptions.database : undefined;
|
|
58
|
+
const configuredName = this.options.database;
|
|
59
|
+
const resolvedDbName = requestedName ?? configuredName ?? this.dbName;
|
|
60
|
+
this.connection = await this.plugin.createConnection(resolvedDbName, false, 'no-encryption', 1, false);
|
|
38
61
|
await this.connection.open();
|
|
39
62
|
if (this.options.enableWal ?? true) {
|
|
40
63
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitorSqliteAdapter.js","sourceRoot":"","sources":["../../src/adapters/capacitorSqliteAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capacitorSqliteAdapter.js","sourceRoot":"","sources":["../../src/adapters/capacitorSqliteAdapter.ts"],"names":[],"mappings":"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"}
|