@framers/sql-storage-adapter 0.6.5 → 0.6.7
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/README.md +4 -4
- package/dist/adapters/postgresAdapter.d.ts +0 -1
- package/dist/adapters/postgresAdapter.d.ts.map +1 -1
- package/dist/adapters/postgresAdapter.js +70 -24
- package/dist/adapters/postgresAdapter.js.map +1 -1
- package/dist/adapters/sqlJsAdapter.d.ts +17 -0
- package/dist/adapters/sqlJsAdapter.d.ts.map +1 -1
- package/dist/adapters/sqlJsAdapter.js +140 -35
- package/dist/adapters/sqlJsAdapter.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
6
|
<a href="https://frame.dev" target="_blank" rel="noopener">
|
|
7
|
-
<img src="https://raw.githubusercontent.com/
|
|
7
|
+
<img src="https://raw.githubusercontent.com/framerslab/sql-storage-adapter/master/logos/frame-square-black-1024x1024-transparent.png" alt="Frame.dev" width="120">
|
|
8
8
|
</a>
|
|
9
9
|
<br>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
[](https://www.npmjs.com/package/@framers/sql-storage-adapter)
|
|
13
|
-
[](https://github.com/framerslab/sql-storage-adapter/actions/workflows/ci.yml)
|
|
14
|
+
[](https://codecov.io/gh/framerslab/sql-storage-adapter)
|
|
15
15
|
[](https://www.typescriptlang.org/)
|
|
16
16
|
[](./LICENSE)
|
|
17
17
|
|
|
@@ -536,7 +536,7 @@ On Postgres, `features.exporter` requires a Node runtime plus an adapter that wa
|
|
|
536
536
|
- Website: https://frame.dev
|
|
537
537
|
- AgentOS: https://agentos.sh
|
|
538
538
|
- Marketplace: https://vca.chat
|
|
539
|
-
- GitHub: https://github.com/
|
|
539
|
+
- GitHub: https://github.com/framerslab/sql-storage-adapter
|
|
540
540
|
- npm: https://www.npmjs.com/package/@framers/sql-storage-adapter
|
|
541
541
|
## Contributing & Security
|
|
542
542
|
- Contributing: ./\.github/CONTRIBUTING.md
|
|
@@ -148,7 +148,6 @@ export declare class PostgresAdapter implements StorageAdapter {
|
|
|
148
148
|
readonly capabilities: ReadonlySet<StorageCapability>;
|
|
149
149
|
private options;
|
|
150
150
|
private pool;
|
|
151
|
-
private transactionalClient;
|
|
152
151
|
private pgModule;
|
|
153
152
|
constructor(options: PostgresAdapterOptions | string);
|
|
154
153
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/postgresAdapter.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIpI;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,GAAG,CAAC,EAAE,OAAO,GAAG;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3F,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"postgresAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/postgresAdapter.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIpI;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,GAAG,CAAC,EAAE,OAAO,GAAG;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3F,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAuID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkGG;AACH;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,cAAc;IACpD,SAAgB,IAAI,cAAc;IAClC,SAAgB,YAAY,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAQzD;IAEH,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,QAAQ,CAAyB;gBAE7B,OAAO,EAAE,sBAAsB,GAAG,MAAM;IASpD;;OAEG;YACW,YAAY;IAkBb,IAAI,CAAC,WAAW,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DrD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKjF,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;IAKvE,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;IAmBnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAOrB,WAAW;CAM1B;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,cAAc,CAAC;AAEhF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,cAAc,CAAC"}
|
|
@@ -35,6 +35,70 @@ const prepareStatement = (statement, parameters) => {
|
|
|
35
35
|
}
|
|
36
36
|
return { text: statement, values: [] };
|
|
37
37
|
};
|
|
38
|
+
/** Execute a mutation through a specific pool or transaction client. */
|
|
39
|
+
const runWithExecutor = async (executor, statement, parameters) => {
|
|
40
|
+
const { text, values } = prepareStatement(statement, parameters);
|
|
41
|
+
const result = await executor.query(text, values);
|
|
42
|
+
const firstRow = result.rows?.[0];
|
|
43
|
+
const lastInsertRowid = firstRow && typeof firstRow === 'object' && 'id' in firstRow
|
|
44
|
+
? firstRow.id
|
|
45
|
+
: null;
|
|
46
|
+
return { changes: result.rowCount ?? 0, lastInsertRowid };
|
|
47
|
+
};
|
|
48
|
+
/** Read one row through a specific pool or transaction client. */
|
|
49
|
+
const getWithExecutor = async (executor, statement, parameters) => {
|
|
50
|
+
const { text, values } = prepareStatement(statement, parameters);
|
|
51
|
+
const result = await executor.query(text, values);
|
|
52
|
+
return result.rows?.[0] ?? null;
|
|
53
|
+
};
|
|
54
|
+
/** Read every matching row through a specific pool or transaction client. */
|
|
55
|
+
const allWithExecutor = async (executor, statement, parameters) => {
|
|
56
|
+
const { text, values } = prepareStatement(statement, parameters);
|
|
57
|
+
const result = await executor.query(text, values);
|
|
58
|
+
return result.rows ?? [];
|
|
59
|
+
};
|
|
60
|
+
/** Execute a statement script through a specific pool or transaction client. */
|
|
61
|
+
const execWithExecutor = async (executor, script) => {
|
|
62
|
+
const statements = splitSqlStatements(script);
|
|
63
|
+
for (const text of statements) {
|
|
64
|
+
await executor.query(text);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Adapter view permanently bound to one checked-out transaction client.
|
|
69
|
+
* Each concurrent transaction receives its own instance, so callback queries
|
|
70
|
+
* cannot leak onto another callback's client through shared mutable state.
|
|
71
|
+
*/
|
|
72
|
+
class PostgresTransactionAdapter {
|
|
73
|
+
constructor(client, capabilities) {
|
|
74
|
+
this.client = client;
|
|
75
|
+
this.capabilities = capabilities;
|
|
76
|
+
this.kind = 'postgres';
|
|
77
|
+
}
|
|
78
|
+
async open() {
|
|
79
|
+
// The owning PostgresAdapter opens the pool before creating this view.
|
|
80
|
+
}
|
|
81
|
+
async run(statement, parameters) {
|
|
82
|
+
return runWithExecutor(this.client, statement, parameters);
|
|
83
|
+
}
|
|
84
|
+
async get(statement, parameters) {
|
|
85
|
+
return getWithExecutor(this.client, statement, parameters);
|
|
86
|
+
}
|
|
87
|
+
async all(statement, parameters) {
|
|
88
|
+
return allWithExecutor(this.client, statement, parameters);
|
|
89
|
+
}
|
|
90
|
+
async exec(script) {
|
|
91
|
+
await execWithExecutor(this.client, script);
|
|
92
|
+
}
|
|
93
|
+
async transaction(fn) {
|
|
94
|
+
// Nested callbacks share the outer transaction. Errors still reach the
|
|
95
|
+
// owning adapter, which rolls the entire transaction back.
|
|
96
|
+
return fn(this);
|
|
97
|
+
}
|
|
98
|
+
async close() {
|
|
99
|
+
// The owning transaction releases the checked-out client after completion.
|
|
100
|
+
}
|
|
101
|
+
}
|
|
38
102
|
/**
|
|
39
103
|
* PostgreSQL adapter for production-grade SQL operations.
|
|
40
104
|
*
|
|
@@ -153,7 +217,6 @@ export class PostgresAdapter {
|
|
|
153
217
|
'prepared' // Prepared statements for security/performance
|
|
154
218
|
]);
|
|
155
219
|
this.pool = null;
|
|
156
|
-
this.transactionalClient = null;
|
|
157
220
|
this.pgModule = null;
|
|
158
221
|
// Support both string and object initialization
|
|
159
222
|
if (typeof options === 'string') {
|
|
@@ -237,32 +300,19 @@ export class PostgresAdapter {
|
|
|
237
300
|
}
|
|
238
301
|
async run(statement, parameters) {
|
|
239
302
|
const executor = await this.getExecutor();
|
|
240
|
-
|
|
241
|
-
const result = await executor.query(text, values);
|
|
242
|
-
const firstRow = result.rows?.[0];
|
|
243
|
-
const lastInsertRowid = (firstRow && typeof firstRow === 'object' && 'id' in firstRow)
|
|
244
|
-
? firstRow.id
|
|
245
|
-
: null;
|
|
246
|
-
return { changes: result.rowCount ?? 0, lastInsertRowid };
|
|
303
|
+
return runWithExecutor(executor, statement, parameters);
|
|
247
304
|
}
|
|
248
305
|
async get(statement, parameters) {
|
|
249
306
|
const executor = await this.getExecutor();
|
|
250
|
-
|
|
251
|
-
const result = await executor.query(text, values);
|
|
252
|
-
return result.rows?.[0] ?? null;
|
|
307
|
+
return getWithExecutor(executor, statement, parameters);
|
|
253
308
|
}
|
|
254
309
|
async all(statement, parameters) {
|
|
255
310
|
const executor = await this.getExecutor();
|
|
256
|
-
|
|
257
|
-
const result = await executor.query(text, values);
|
|
258
|
-
return result.rows ?? [];
|
|
311
|
+
return allWithExecutor(executor, statement, parameters);
|
|
259
312
|
}
|
|
260
313
|
async exec(script) {
|
|
261
314
|
const executor = await this.getExecutor();
|
|
262
|
-
|
|
263
|
-
for (const text of statements) {
|
|
264
|
-
await executor.query(text);
|
|
265
|
-
}
|
|
315
|
+
await execWithExecutor(executor, script);
|
|
266
316
|
}
|
|
267
317
|
async transaction(fn) {
|
|
268
318
|
if (!this.pool) {
|
|
@@ -271,8 +321,8 @@ export class PostgresAdapter {
|
|
|
271
321
|
const client = await this.pool.connect();
|
|
272
322
|
try {
|
|
273
323
|
await client.query('BEGIN');
|
|
274
|
-
|
|
275
|
-
const result = await fn(
|
|
324
|
+
const transactionAdapter = new PostgresTransactionAdapter(client, this.capabilities);
|
|
325
|
+
const result = await fn(transactionAdapter);
|
|
276
326
|
await client.query('COMMIT');
|
|
277
327
|
return result;
|
|
278
328
|
}
|
|
@@ -281,7 +331,6 @@ export class PostgresAdapter {
|
|
|
281
331
|
throw error;
|
|
282
332
|
}
|
|
283
333
|
finally {
|
|
284
|
-
this.transactionalClient = null;
|
|
285
334
|
client.release();
|
|
286
335
|
}
|
|
287
336
|
}
|
|
@@ -292,9 +341,6 @@ export class PostgresAdapter {
|
|
|
292
341
|
}
|
|
293
342
|
}
|
|
294
343
|
async getExecutor() {
|
|
295
|
-
if (this.transactionalClient) {
|
|
296
|
-
return this.transactionalClient;
|
|
297
|
-
}
|
|
298
344
|
if (!this.pool) {
|
|
299
345
|
throw new Error('Postgres adapter not opened.');
|
|
300
346
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresAdapter.js","sourceRoot":"","sources":["../../src/adapters/postgresAdapter.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,gFAAgF;AAChF,0CAA0C;AAC1C,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AAS5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA0ClE,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAW,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAE7E,MAAM,mBAAmB,GAAG,CAAC,SAAiB,EAAE,KAA8B,EAAqB,EAAE;IACnG,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAY,EAAE,EAAE;QACtE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,SAAiB,EAAE,UAAqB,EAAqB,EAAE;IAC/F,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE;QACzC,KAAK,IAAI,CAAC,CAAC;QACX,OAAO,IAAI,KAAK,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAE,UAA8B,EAAqB,EAAE;IAChG,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC9D,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,wBAAwB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,wBAAwB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkGG;AACH;;;;;GAKG;AACH,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"postgresAdapter.js","sourceRoot":"","sources":["../../src/adapters/postgresAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,23 @@ export declare class SqlJsAdapter implements StorageAdapter {
|
|
|
11
11
|
private SQL;
|
|
12
12
|
private db;
|
|
13
13
|
private filePath?;
|
|
14
|
+
/**
|
|
15
|
+
* Open transaction depth. > 0 means a SQLite-level transaction is in
|
|
16
|
+
* flight on this connection and {@link persistIfNeeded} MUST be
|
|
17
|
+
* skipped until the outermost commit / rollback returns.
|
|
18
|
+
*
|
|
19
|
+
* Why this exists: sql.js's `db.export()` (called by persistIfNeeded
|
|
20
|
+
* to flush state to disk) ends any open transaction as a side
|
|
21
|
+
* effect. Persisting mid-transaction therefore SILENTLY closes the
|
|
22
|
+
* tx, making subsequent COMMIT / ROLLBACK throw "no transaction is
|
|
23
|
+
* active" and — worse — leaking partial writes onto disk that the
|
|
24
|
+
* matching rollback can no longer undo. Counter is bumped on
|
|
25
|
+
* BEGIN/SAVEPOINT and decremented on COMMIT/RELEASE/ROLLBACK
|
|
26
|
+
* regardless of whether the statement is issued via {@link run}
|
|
27
|
+
* (caller-managed transactions) or {@link transaction} (helper-
|
|
28
|
+
* managed). One source of truth for the in-tx flag.
|
|
29
|
+
*/
|
|
30
|
+
private transactionDepth;
|
|
14
31
|
constructor(adapterOptions?: SqlJsAdapterOptions);
|
|
15
32
|
open(options?: StorageOpenOptions): Promise<void>;
|
|
16
33
|
run(statement: string, parameters?: StorageParameters): Promise<StorageRunResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlJsAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/sqlJsAdapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,WAAW,EAA6B,MAAM,QAAQ,CAAC;AAGlF,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGpI,KAAK,mBAAmB,GAAG,WAAW,CAAC;AAqCvC;;GAEG;AACH,qBAAa,YAAa,YAAW,cAAc;
|
|
1
|
+
{"version":3,"file":"sqlJsAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/sqlJsAdapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,WAAW,EAA6B,MAAM,QAAQ,CAAC;AAGlF,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGpI,KAAK,mBAAmB,GAAG,WAAW,CAAC;AAqCvC;;GAEG;AACH,qBAAa,YAAa,YAAW,cAAc;IAyBrC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAxB3C,SAAgB,IAAI,WAAW;IAC/B,SAAgB,YAAY,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAE7D,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,EAAE,CAA8B;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,gBAAgB,CAAK;gBAEA,cAAc,GAAE,mBAAwB;IAQxD,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkDjF,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;IAwBvE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCnC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAyCnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnC,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,UAAU;YAMJ,eAAe;CAW9B;AAED,eAAO,MAAM,kBAAkB,aAAc,mBAAmB,KAAG,cAA2C,CAAC"}
|
|
@@ -50,6 +50,23 @@ export class SqlJsAdapter {
|
|
|
50
50
|
this.kind = 'sqljs';
|
|
51
51
|
this.SQL = null;
|
|
52
52
|
this.db = null;
|
|
53
|
+
/**
|
|
54
|
+
* Open transaction depth. > 0 means a SQLite-level transaction is in
|
|
55
|
+
* flight on this connection and {@link persistIfNeeded} MUST be
|
|
56
|
+
* skipped until the outermost commit / rollback returns.
|
|
57
|
+
*
|
|
58
|
+
* Why this exists: sql.js's `db.export()` (called by persistIfNeeded
|
|
59
|
+
* to flush state to disk) ends any open transaction as a side
|
|
60
|
+
* effect. Persisting mid-transaction therefore SILENTLY closes the
|
|
61
|
+
* tx, making subsequent COMMIT / ROLLBACK throw "no transaction is
|
|
62
|
+
* active" and — worse — leaking partial writes onto disk that the
|
|
63
|
+
* matching rollback can no longer undo. Counter is bumped on
|
|
64
|
+
* BEGIN/SAVEPOINT and decremented on COMMIT/RELEASE/ROLLBACK
|
|
65
|
+
* regardless of whether the statement is issued via {@link run}
|
|
66
|
+
* (caller-managed transactions) or {@link transaction} (helper-
|
|
67
|
+
* managed). One source of truth for the in-tx flag.
|
|
68
|
+
*/
|
|
69
|
+
this.transactionDepth = 0;
|
|
53
70
|
const caps = ['transactions', 'json', 'prepared'];
|
|
54
71
|
if (hasFsAccess()) {
|
|
55
72
|
caps.push('persistence');
|
|
@@ -71,6 +88,17 @@ export class SqlJsAdapter {
|
|
|
71
88
|
}
|
|
72
89
|
}
|
|
73
90
|
async run(statement, parameters) {
|
|
91
|
+
// Detect caller-managed transaction control (BEGIN / SAVEPOINT /
|
|
92
|
+
// COMMIT / ROLLBACK / RELEASE) so we can keep the tx depth in
|
|
93
|
+
// sync regardless of whether the caller uses {@link transaction}
|
|
94
|
+
// or issues control statements directly. Bump BEFORE execute on
|
|
95
|
+
// BEGIN-shaped statements; decrement AFTER on COMMIT-shaped ones
|
|
96
|
+
// so the persist gate in the finally block sees the correct
|
|
97
|
+
// post-statement depth.
|
|
98
|
+
const txKind = classifyTransactionControl(statement);
|
|
99
|
+
if (txKind === 'begin') {
|
|
100
|
+
this.transactionDepth += 1;
|
|
101
|
+
}
|
|
74
102
|
const stmt = this.prepareInternal(statement);
|
|
75
103
|
try {
|
|
76
104
|
const { named, positional } = normaliseParameters(parameters);
|
|
@@ -88,9 +116,27 @@ export class SqlJsAdapter {
|
|
|
88
116
|
lastInsertRowid: normaliseRowId(rawRowId)
|
|
89
117
|
};
|
|
90
118
|
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
// If the BEGIN-shaped statement itself failed (e.g. nested
|
|
121
|
+
// BEGIN in single-tx mode), undo the depth bump so the
|
|
122
|
+
// adapter doesn't get stuck thinking it's in a tx.
|
|
123
|
+
if (txKind === 'begin') {
|
|
124
|
+
this.transactionDepth = Math.max(0, this.transactionDepth - 1);
|
|
125
|
+
}
|
|
126
|
+
throw err;
|
|
127
|
+
}
|
|
91
128
|
finally {
|
|
92
129
|
stmt.free();
|
|
93
|
-
|
|
130
|
+
if (txKind === 'end' && this.transactionDepth > 0) {
|
|
131
|
+
this.transactionDepth -= 1;
|
|
132
|
+
}
|
|
133
|
+
// Persist only when we are NOT inside an open transaction. This
|
|
134
|
+
// is the load-bearing rule: a mid-tx db.export() would close
|
|
135
|
+
// the tx at the SQLite level and silently lose every
|
|
136
|
+
// uncommitted write up to that point.
|
|
137
|
+
if (this.transactionDepth === 0) {
|
|
138
|
+
await this.persistIfNeeded();
|
|
139
|
+
}
|
|
94
140
|
}
|
|
95
141
|
}
|
|
96
142
|
async get(statement, parameters) {
|
|
@@ -123,48 +169,80 @@ export class SqlJsAdapter {
|
|
|
123
169
|
}
|
|
124
170
|
async exec(script) {
|
|
125
171
|
this.ensureOpen();
|
|
126
|
-
|
|
127
|
-
//
|
|
128
|
-
//
|
|
129
|
-
//
|
|
130
|
-
//
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
|
|
172
|
+
// `exec()` accepts multi-statement scripts so we can't reliably
|
|
173
|
+
// classify the transactional intent the way {@link run} does.
|
|
174
|
+
// Keep the original "skip persist on transaction-control" guard
|
|
175
|
+
// for single-statement BEGIN/COMMIT calls AND additionally skip
|
|
176
|
+
// when we're already known to be in a tx (depth > 0) — that case
|
|
177
|
+
// covers `exec('CREATE TABLE …')` inside a {@link transaction}
|
|
178
|
+
// block where the script itself isn't transaction-control but
|
|
179
|
+
// persisting would still close the open tx.
|
|
180
|
+
const isControl = isTransactionControlStatement(script);
|
|
181
|
+
const txKind = isControl ? classifyTransactionControl(script) : 'none';
|
|
182
|
+
if (txKind === 'begin') {
|
|
183
|
+
this.transactionDepth += 1;
|
|
184
|
+
}
|
|
185
|
+
try {
|
|
186
|
+
this.db.exec(script);
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
if (txKind === 'begin') {
|
|
190
|
+
this.transactionDepth = Math.max(0, this.transactionDepth - 1);
|
|
191
|
+
}
|
|
192
|
+
throw err;
|
|
193
|
+
}
|
|
194
|
+
if (txKind === 'end' && this.transactionDepth > 0) {
|
|
195
|
+
this.transactionDepth -= 1;
|
|
196
|
+
}
|
|
197
|
+
if (!isControl && this.transactionDepth === 0) {
|
|
198
|
+
await this.persistIfNeeded();
|
|
199
|
+
}
|
|
200
|
+
else if (txKind === 'end' && this.transactionDepth === 0) {
|
|
201
|
+
// Just exited the outermost transaction — flush to disk.
|
|
134
202
|
await this.persistIfNeeded();
|
|
135
203
|
}
|
|
136
204
|
}
|
|
137
205
|
async transaction(fn) {
|
|
138
206
|
this.ensureOpen();
|
|
207
|
+
// BEGIN goes through raw sql.js (`this.db!.run`) to avoid the
|
|
208
|
+
// adapter-level run() pre-bump + persist-skip machinery — we
|
|
209
|
+
// manage the depth flag explicitly here so the inner fn()'s
|
|
210
|
+
// adapter.run() calls correctly see depth > 0 and skip persist.
|
|
139
211
|
this.db.run('BEGIN TRANSACTION;');
|
|
212
|
+
this.transactionDepth += 1;
|
|
213
|
+
let committed = false;
|
|
140
214
|
try {
|
|
141
215
|
const result = await fn(this);
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
catch (commitError) {
|
|
146
|
-
const message = commitError instanceof Error ? commitError.message : String(commitError);
|
|
147
|
-
if (!message.includes('no transaction is active')) {
|
|
148
|
-
throw commitError;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
await this.persistIfNeeded();
|
|
216
|
+
this.db.run('COMMIT;');
|
|
217
|
+
committed = true;
|
|
152
218
|
return result;
|
|
153
219
|
}
|
|
154
220
|
catch (error) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
221
|
+
if (!committed) {
|
|
222
|
+
try {
|
|
223
|
+
this.db.run('ROLLBACK;');
|
|
224
|
+
}
|
|
225
|
+
catch (rollbackError) {
|
|
226
|
+
const message = rollbackError instanceof Error ? rollbackError.message : String(rollbackError);
|
|
227
|
+
// SQL.js may auto-close the transaction during certain DDL
|
|
228
|
+
// failures. Preserve the original error rather than mask it
|
|
229
|
+
// with a rollback hiccup.
|
|
230
|
+
if (!message.includes('no transaction is active')) {
|
|
231
|
+
throw rollbackError;
|
|
232
|
+
}
|
|
164
233
|
}
|
|
165
234
|
}
|
|
166
235
|
throw error;
|
|
167
236
|
}
|
|
237
|
+
finally {
|
|
238
|
+
this.transactionDepth = Math.max(0, this.transactionDepth - 1);
|
|
239
|
+
// Only the outermost transaction triggers a flush to disk —
|
|
240
|
+
// nested savepoints inside would keep depth > 0 and rely on
|
|
241
|
+
// the eventual outer COMMIT to land.
|
|
242
|
+
if (this.transactionDepth === 0) {
|
|
243
|
+
await this.persistIfNeeded();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
168
246
|
}
|
|
169
247
|
async close() {
|
|
170
248
|
if (this.db) {
|
|
@@ -212,13 +290,40 @@ export const createSqlJsAdapter = (options) => new SqlJsAdapter(options);
|
|
|
212
290
|
* through to normal persistence.
|
|
213
291
|
*/
|
|
214
292
|
function isTransactionControlStatement(script) {
|
|
293
|
+
return classifyTransactionControl(script) !== 'none';
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Narrow classification of transaction-control SQL into the three
|
|
297
|
+
* categories the persistence gate needs to react to:
|
|
298
|
+
*
|
|
299
|
+
* - `'begin'` — BEGIN / BEGIN DEFERRED|IMMEDIATE|EXCLUSIVE / BEGIN
|
|
300
|
+
* TRANSACTION / SAVEPOINT <name>. Bumps depth before execution.
|
|
301
|
+
* - `'end'` — COMMIT / ROLLBACK / ROLLBACK TO [SAVEPOINT] <name> /
|
|
302
|
+
* RELEASE [SAVEPOINT] <name>. Decrements depth after execution.
|
|
303
|
+
* - `'none'` — any other statement; depth is unaffected.
|
|
304
|
+
*
|
|
305
|
+
* Pattern tolerates leading whitespace, an optional trailing
|
|
306
|
+
* semicolon, and the SQLite-specific modifiers
|
|
307
|
+
* (`BEGIN DEFERRED|IMMEDIATE|EXCLUSIVE`, `BEGIN TRANSACTION`,
|
|
308
|
+
* `RELEASE SAVEPOINT`, `ROLLBACK TO SAVEPOINT`). Anything more
|
|
309
|
+
* complex falls through to `'none'` — callers issuing multi-statement
|
|
310
|
+
* scripts via {@link exec} are responsible for not mixing
|
|
311
|
+
* transaction-control with other DML in a single call.
|
|
312
|
+
*/
|
|
313
|
+
function classifyTransactionControl(script) {
|
|
215
314
|
const trimmed = script.trim().replace(/;\s*$/, '').toUpperCase();
|
|
216
|
-
if (trimmed === 'BEGIN'
|
|
217
|
-
return
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
315
|
+
if (trimmed === 'BEGIN')
|
|
316
|
+
return 'begin';
|
|
317
|
+
if (trimmed === 'COMMIT' || trimmed === 'ROLLBACK')
|
|
318
|
+
return 'end';
|
|
319
|
+
if (/^BEGIN\s+(DEFERRED|IMMEDIATE|EXCLUSIVE|TRANSACTION)$/.test(trimmed))
|
|
320
|
+
return 'begin';
|
|
321
|
+
if (/^SAVEPOINT\s+\S+$/.test(trimmed))
|
|
322
|
+
return 'begin';
|
|
323
|
+
if (/^RELEASE(\s+SAVEPOINT)?\s+\S+$/.test(trimmed))
|
|
324
|
+
return 'end';
|
|
325
|
+
if (/^ROLLBACK(\s+TO(\s+SAVEPOINT)?)?\s+\S+$/.test(trimmed))
|
|
326
|
+
return 'end';
|
|
327
|
+
return 'none';
|
|
223
328
|
}
|
|
224
329
|
//# sourceMappingURL=sqlJsAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlJsAdapter.js","sourceRoot":"","sources":["../../src/adapters/sqlJsAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,MAAM,qBAAqB,GAAG,CAAC,KAA8B,EAA2B,EAAE;IACxF,MAAM,QAAQ,GAA4B,EAAE,GAAG,KAAK,EAAE,CAAC;IACvD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,6EAA6E;QAC7E,kFAAkF;QAClF,uEAAuE;QACvE,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC9C,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,QAAQ,CAAC;YAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;QAC1D,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,QAAQ,CAAC;YAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;QAC1D,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,QAAQ,CAAC;YAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;IAC5D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAc,EAA0B,EAAE;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,GAAY,EAAE;IAChC,IAAI,CAAC;QACH,OAAO,OAAO,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"sqlJsAdapter.js","sourceRoot":"","sources":["../../src/adapters/sqlJsAdapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@framers/sql-storage-adapter",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.7",
|
|
4
4
|
"description": "Robust cross-platform SQL storage abstraction with automatic fallbacks and runtime detection",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"scripts": {
|
|
41
41
|
"clean": "rimraf dist tsconfig.build.tsbuildinfo",
|
|
42
42
|
"build": "npm run clean && npx tsc -p tsconfig.build.json && node scripts/fix-esm-imports.mjs",
|
|
43
|
+
"prepare": "test -d dist || npm run build",
|
|
43
44
|
"prepublishOnly": "npm run build && npm run test",
|
|
44
45
|
"lint": "eslint \"src/**/*.{ts,tsx}\"",
|
|
45
46
|
"lint:fix": "eslint \"src/**/*.{ts,tsx}\" --fix",
|
|
@@ -85,13 +86,13 @@
|
|
|
85
86
|
"license": "MIT",
|
|
86
87
|
"repository": {
|
|
87
88
|
"type": "git",
|
|
88
|
-
"url": "https://github.com/
|
|
89
|
+
"url": "https://github.com/framerslab/sql-storage-adapter.git"
|
|
89
90
|
},
|
|
90
91
|
"bugs": {
|
|
91
|
-
"url": "https://github.com/
|
|
92
|
+
"url": "https://github.com/framerslab/sql-storage-adapter/issues",
|
|
92
93
|
"email": "team@frame.dev"
|
|
93
94
|
},
|
|
94
|
-
"homepage": "https://
|
|
95
|
+
"homepage": "https://framerslab.github.io/sql-storage-adapter/",
|
|
95
96
|
"sideEffects": false,
|
|
96
97
|
"devDependencies": {
|
|
97
98
|
"@aws-sdk/client-s3": "^3.709.0",
|