@framers/sql-storage-adapter 0.6.5 → 0.6.6
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.
|
@@ -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