@framers/sql-storage-adapter 0.6.4 → 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.
- package/dist/adapters/postgresAdapter.d.ts.map +1 -1
- package/dist/adapters/postgresAdapter.js +2 -5
- 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 +161 -22
- package/dist/adapters/sqlJsAdapter.js.map +1 -1
- package/dist/features/migrations/dataImport.d.ts.map +1 -1
- package/dist/features/migrations/dataImport.js +4 -11
- package/dist/features/migrations/dataImport.js.map +1 -1
- package/dist/shared/splitSqlStatements.d.ts +27 -0
- package/dist/shared/splitSqlStatements.d.ts.map +1 -0
- package/dist/shared/splitSqlStatements.js +183 -0
- package/dist/shared/splitSqlStatements.js.map +1 -0
- package/package.json +8 -2
|
@@ -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;
|
|
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;AA0CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,mBAAmB,CAA2B;IACtD,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;IAWjF,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAO5E,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;IAQnC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAoBnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAOrB,WAAW;CAS1B;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,cAAc,CAAC;AAEhF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,cAAc,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// execution actually occurs in a browser.
|
|
4
4
|
const __isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
|
|
5
5
|
import { normaliseParameters } from '../shared/parameterUtils.js';
|
|
6
|
+
import { splitSqlStatements } from '../shared/splitSqlStatements.js';
|
|
6
7
|
const isPositional = (statement) => statement.includes('?');
|
|
7
8
|
const buildNamedStatement = (statement, named) => {
|
|
8
9
|
const order = [];
|
|
@@ -34,10 +35,6 @@ const prepareStatement = (statement, parameters) => {
|
|
|
34
35
|
}
|
|
35
36
|
return { text: statement, values: [] };
|
|
36
37
|
};
|
|
37
|
-
const splitStatements = (script) => script
|
|
38
|
-
.split(';')
|
|
39
|
-
.map((part) => part.trim())
|
|
40
|
-
.filter((part) => part.length > 0);
|
|
41
38
|
/**
|
|
42
39
|
* PostgreSQL adapter for production-grade SQL operations.
|
|
43
40
|
*
|
|
@@ -262,7 +259,7 @@ export class PostgresAdapter {
|
|
|
262
259
|
}
|
|
263
260
|
async exec(script) {
|
|
264
261
|
const executor = await this.getExecutor();
|
|
265
|
-
const statements =
|
|
262
|
+
const statements = splitSqlStatements(script);
|
|
266
263
|
for (const text of statements) {
|
|
267
264
|
await executor.query(text);
|
|
268
265
|
}
|
|
@@ -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;
|
|
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,40 +169,80 @@ export class SqlJsAdapter {
|
|
|
123
169
|
}
|
|
124
170
|
async exec(script) {
|
|
125
171
|
this.ensureOpen();
|
|
126
|
-
|
|
127
|
-
|
|
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.
|
|
202
|
+
await this.persistIfNeeded();
|
|
203
|
+
}
|
|
128
204
|
}
|
|
129
205
|
async transaction(fn) {
|
|
130
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.
|
|
131
211
|
this.db.run('BEGIN TRANSACTION;');
|
|
212
|
+
this.transactionDepth += 1;
|
|
213
|
+
let committed = false;
|
|
132
214
|
try {
|
|
133
215
|
const result = await fn(this);
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
catch (commitError) {
|
|
138
|
-
const message = commitError instanceof Error ? commitError.message : String(commitError);
|
|
139
|
-
if (!message.includes('no transaction is active')) {
|
|
140
|
-
throw commitError;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
await this.persistIfNeeded();
|
|
216
|
+
this.db.run('COMMIT;');
|
|
217
|
+
committed = true;
|
|
144
218
|
return result;
|
|
145
219
|
}
|
|
146
220
|
catch (error) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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
|
+
}
|
|
156
233
|
}
|
|
157
234
|
}
|
|
158
235
|
throw error;
|
|
159
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
|
+
}
|
|
160
246
|
}
|
|
161
247
|
async close() {
|
|
162
248
|
if (this.db) {
|
|
@@ -187,4 +273,57 @@ export class SqlJsAdapter {
|
|
|
187
273
|
}
|
|
188
274
|
}
|
|
189
275
|
export const createSqlJsAdapter = (options) => new SqlJsAdapter(options);
|
|
276
|
+
/**
|
|
277
|
+
* Return true when `script` is purely a transaction-control statement
|
|
278
|
+
* (BEGIN, SAVEPOINT, COMMIT, ROLLBACK, RELEASE). Used by `exec()` to
|
|
279
|
+
* skip persistence on BEGIN/SAVEPOINT — `db.export()` ends any open
|
|
280
|
+
* transaction in sql.js, so writing the snapshot mid-transaction
|
|
281
|
+
* makes the matching COMMIT throw "no transaction is active". Callers
|
|
282
|
+
* that COMMIT or ROLLBACK explicitly are still safe because the
|
|
283
|
+
* subsequent write or close-time persistence runs `export()` after the
|
|
284
|
+
* transaction has already closed.
|
|
285
|
+
*
|
|
286
|
+
* Pattern: tolerate leading whitespace, an optional trailing
|
|
287
|
+
* semicolon, and statement-modifying keywords (BEGIN DEFERRED,
|
|
288
|
+
* BEGIN IMMEDIATE, BEGIN EXCLUSIVE, BEGIN TRANSACTION, RELEASE
|
|
289
|
+
* SAVEPOINT, ROLLBACK TO SAVEPOINT). Anything more complex falls
|
|
290
|
+
* through to normal persistence.
|
|
291
|
+
*/
|
|
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) {
|
|
314
|
+
const trimmed = script.trim().replace(/;\s*$/, '').toUpperCase();
|
|
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';
|
|
328
|
+
}
|
|
190
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataImport.d.ts","sourceRoot":"","sources":["../../../src/features/migrations/dataImport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"dataImport.d.ts","sourceRoot":"","sources":["../../../src/features/migrations/dataImport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,cAAc,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,YAAY,CAAC,CA4FvB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAavB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,YAAY,CAAC,CA4CvB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAkCvB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,cAAc,EAC7B,aAAa,EAAE,cAAc,EAC7B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAWvB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Data import utilities for cross-adapter migration and restoration.
|
|
3
3
|
* Supports importing from JSON, SQL dumps, and CSV files.
|
|
4
4
|
*/
|
|
5
|
+
import { splitSqlStatements } from '../../shared/splitSqlStatements.js';
|
|
5
6
|
/**
|
|
6
7
|
* Import data from exported JSON format.
|
|
7
8
|
*/
|
|
@@ -117,17 +118,9 @@ export async function importFromSQL(adapter, sqlDump, options = {}) {
|
|
|
117
118
|
const errors = [];
|
|
118
119
|
let statementsExecuted = 0;
|
|
119
120
|
try {
|
|
120
|
-
//
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
.filter(line => !line.trim().startsWith('--'))
|
|
124
|
-
.join('\n');
|
|
125
|
-
// Split SQL dump into individual statements
|
|
126
|
-
// Handle both inline and multi-line statements
|
|
127
|
-
const statements = withoutComments
|
|
128
|
-
.split(';')
|
|
129
|
-
.map(s => s.trim())
|
|
130
|
-
.filter(s => s.length > 0);
|
|
121
|
+
// Comment- and string-aware split so semicolons inside `--`, `/* */`,
|
|
122
|
+
// quoted strings, or dollar-quoted bodies do not slice statements.
|
|
123
|
+
const statements = splitSqlStatements(sqlDump);
|
|
131
124
|
for (const statement of statements) {
|
|
132
125
|
try {
|
|
133
126
|
// Skip if filtering by tables
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataImport.js","sourceRoot":"","sources":["../../../src/features/migrations/dataImport.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"dataImport.js","sourceRoot":"","sources":["../../../src/features/migrations/dataImport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splits a multi-statement SQL script into individual statements without
|
|
3
|
+
* cutting inside the SQL surface forms a naive `.split(';')` mishandles.
|
|
4
|
+
*
|
|
5
|
+
* Recognised constructs that suppress top-level `;` splitting:
|
|
6
|
+
* - `--` line comments (terminate at the next newline or EOF)
|
|
7
|
+
* - `/* ... *\/` block comments, with Postgres-style nesting
|
|
8
|
+
* - `'...'` single-quoted strings, including the `''` escape for an apostrophe
|
|
9
|
+
* - `"..."` double-quoted identifiers, including the `""` escape
|
|
10
|
+
* - `$$...$$` and `$tag$...$tag$` dollar-quoted strings
|
|
11
|
+
*
|
|
12
|
+
* A bare `$` not followed by a valid tag character or another `$` is treated
|
|
13
|
+
* as a literal `$` so positional parameters (`$1`, `$2`, ...) round-trip.
|
|
14
|
+
*
|
|
15
|
+
* The function returns trimmed, non-empty statements. It does not parse SQL
|
|
16
|
+
* beyond what's needed to find top-level statement separators, and it does
|
|
17
|
+
* not validate or modify statement contents.
|
|
18
|
+
*
|
|
19
|
+
* Postgres E-string escape syntax (`E'...\n...'`) is parsed conservatively:
|
|
20
|
+
* the `E` prefix is ignored and standard `''` escape rules apply. Migrations
|
|
21
|
+
* in this codebase do not rely on backslash escapes, so this is sufficient.
|
|
22
|
+
*
|
|
23
|
+
* @param script - Multi-statement SQL script (may include comments and strings).
|
|
24
|
+
* @returns Array of trimmed individual statements, in input order.
|
|
25
|
+
*/
|
|
26
|
+
export declare const splitSqlStatements: (script: string) => string[];
|
|
27
|
+
//# sourceMappingURL=splitSqlStatements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splitSqlStatements.d.ts","sourceRoot":"","sources":["../../src/shared/splitSqlStatements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,kBAAkB,WAAY,MAAM,KAAG,MAAM,EAoKzD,CAAC"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splits a multi-statement SQL script into individual statements without
|
|
3
|
+
* cutting inside the SQL surface forms a naive `.split(';')` mishandles.
|
|
4
|
+
*
|
|
5
|
+
* Recognised constructs that suppress top-level `;` splitting:
|
|
6
|
+
* - `--` line comments (terminate at the next newline or EOF)
|
|
7
|
+
* - `/* ... *\/` block comments, with Postgres-style nesting
|
|
8
|
+
* - `'...'` single-quoted strings, including the `''` escape for an apostrophe
|
|
9
|
+
* - `"..."` double-quoted identifiers, including the `""` escape
|
|
10
|
+
* - `$$...$$` and `$tag$...$tag$` dollar-quoted strings
|
|
11
|
+
*
|
|
12
|
+
* A bare `$` not followed by a valid tag character or another `$` is treated
|
|
13
|
+
* as a literal `$` so positional parameters (`$1`, `$2`, ...) round-trip.
|
|
14
|
+
*
|
|
15
|
+
* The function returns trimmed, non-empty statements. It does not parse SQL
|
|
16
|
+
* beyond what's needed to find top-level statement separators, and it does
|
|
17
|
+
* not validate or modify statement contents.
|
|
18
|
+
*
|
|
19
|
+
* Postgres E-string escape syntax (`E'...\n...'`) is parsed conservatively:
|
|
20
|
+
* the `E` prefix is ignored and standard `''` escape rules apply. Migrations
|
|
21
|
+
* in this codebase do not rely on backslash escapes, so this is sufficient.
|
|
22
|
+
*
|
|
23
|
+
* @param script - Multi-statement SQL script (may include comments and strings).
|
|
24
|
+
* @returns Array of trimmed individual statements, in input order.
|
|
25
|
+
*/
|
|
26
|
+
export const splitSqlStatements = (script) => {
|
|
27
|
+
const length = script.length;
|
|
28
|
+
const statements = [];
|
|
29
|
+
let buffer = '';
|
|
30
|
+
let i = 0;
|
|
31
|
+
const pushBuffer = () => {
|
|
32
|
+
const trimmed = buffer.trim();
|
|
33
|
+
if (trimmed.length > 0) {
|
|
34
|
+
statements.push(trimmed);
|
|
35
|
+
}
|
|
36
|
+
buffer = '';
|
|
37
|
+
};
|
|
38
|
+
const isIdentStart = (ch) => (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') || ch === '_';
|
|
39
|
+
const isIdentCont = (ch) => isIdentStart(ch) || (ch >= '0' && ch <= '9');
|
|
40
|
+
/**
|
|
41
|
+
* Attempts to read a dollar-quote opener starting at `start` (the index of
|
|
42
|
+
* the leading `$`). Returns the full tag including both `$` delimiters
|
|
43
|
+
* (e.g. `"$$"` or `"$func$"`) on success, or `null` if no valid opener
|
|
44
|
+
* begins at `start`. Used both to detect openers and to recognise closers.
|
|
45
|
+
*/
|
|
46
|
+
const readDollarTag = (start) => {
|
|
47
|
+
if (script[start] !== '$')
|
|
48
|
+
return null;
|
|
49
|
+
if (start + 1 >= length)
|
|
50
|
+
return null;
|
|
51
|
+
// Empty-tag form: $$
|
|
52
|
+
if (script[start + 1] === '$') {
|
|
53
|
+
return '$$';
|
|
54
|
+
}
|
|
55
|
+
// Tagged form: $ident$ where ident starts with letter/_ and continues with
|
|
56
|
+
// letters/digits/_. A digit-led suffix like $1 is NOT a dollar-quote.
|
|
57
|
+
if (!isIdentStart(script[start + 1]))
|
|
58
|
+
return null;
|
|
59
|
+
let j = start + 2;
|
|
60
|
+
while (j < length && isIdentCont(script[j])) {
|
|
61
|
+
j += 1;
|
|
62
|
+
}
|
|
63
|
+
if (j >= length || script[j] !== '$')
|
|
64
|
+
return null;
|
|
65
|
+
return script.slice(start, j + 1);
|
|
66
|
+
};
|
|
67
|
+
while (i < length) {
|
|
68
|
+
const ch = script[i];
|
|
69
|
+
const next = i + 1 < length ? script[i + 1] : '';
|
|
70
|
+
// Line comment: -- ... \n
|
|
71
|
+
if (ch === '-' && next === '-') {
|
|
72
|
+
buffer += ch + next;
|
|
73
|
+
i += 2;
|
|
74
|
+
while (i < length && script[i] !== '\n') {
|
|
75
|
+
buffer += script[i];
|
|
76
|
+
i += 1;
|
|
77
|
+
}
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
// Block comment: /* ... */ with nesting
|
|
81
|
+
if (ch === '/' && next === '*') {
|
|
82
|
+
buffer += ch + next;
|
|
83
|
+
i += 2;
|
|
84
|
+
let depth = 1;
|
|
85
|
+
while (i < length && depth > 0) {
|
|
86
|
+
const c = script[i];
|
|
87
|
+
const n = i + 1 < length ? script[i + 1] : '';
|
|
88
|
+
if (c === '/' && n === '*') {
|
|
89
|
+
buffer += c + n;
|
|
90
|
+
i += 2;
|
|
91
|
+
depth += 1;
|
|
92
|
+
}
|
|
93
|
+
else if (c === '*' && n === '/') {
|
|
94
|
+
buffer += c + n;
|
|
95
|
+
i += 2;
|
|
96
|
+
depth -= 1;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
buffer += c;
|
|
100
|
+
i += 1;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
// Single-quoted string: '...' with '' escape
|
|
106
|
+
if (ch === "'") {
|
|
107
|
+
buffer += ch;
|
|
108
|
+
i += 1;
|
|
109
|
+
while (i < length) {
|
|
110
|
+
const c = script[i];
|
|
111
|
+
if (c === "'") {
|
|
112
|
+
// Doubled '' inside string = escaped apostrophe; consume both.
|
|
113
|
+
if (i + 1 < length && script[i + 1] === "'") {
|
|
114
|
+
buffer += "''";
|
|
115
|
+
i += 2;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
buffer += c;
|
|
119
|
+
i += 1;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
buffer += c;
|
|
123
|
+
i += 1;
|
|
124
|
+
}
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
// Double-quoted identifier: "..." with "" escape
|
|
128
|
+
if (ch === '"') {
|
|
129
|
+
buffer += ch;
|
|
130
|
+
i += 1;
|
|
131
|
+
while (i < length) {
|
|
132
|
+
const c = script[i];
|
|
133
|
+
if (c === '"') {
|
|
134
|
+
if (i + 1 < length && script[i + 1] === '"') {
|
|
135
|
+
buffer += '""';
|
|
136
|
+
i += 2;
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
buffer += c;
|
|
140
|
+
i += 1;
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
buffer += c;
|
|
144
|
+
i += 1;
|
|
145
|
+
}
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
// Dollar-quoted string: $tag$...$tag$ or $$...$$
|
|
149
|
+
if (ch === '$') {
|
|
150
|
+
const tag = readDollarTag(i);
|
|
151
|
+
if (tag !== null) {
|
|
152
|
+
buffer += tag;
|
|
153
|
+
i += tag.length;
|
|
154
|
+
while (i < length) {
|
|
155
|
+
if (script[i] === '$') {
|
|
156
|
+
const close = readDollarTag(i);
|
|
157
|
+
if (close === tag) {
|
|
158
|
+
buffer += close;
|
|
159
|
+
i += close.length;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
buffer += script[i];
|
|
164
|
+
i += 1;
|
|
165
|
+
}
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
// Not a dollar-quote -- fall through to default handling so `$1`,
|
|
169
|
+
// `$2`, and `$,` are emitted as literal characters.
|
|
170
|
+
}
|
|
171
|
+
// Top-level statement separator
|
|
172
|
+
if (ch === ';') {
|
|
173
|
+
pushBuffer();
|
|
174
|
+
i += 1;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
buffer += ch;
|
|
178
|
+
i += 1;
|
|
179
|
+
}
|
|
180
|
+
pushBuffer();
|
|
181
|
+
return statements;
|
|
182
|
+
};
|
|
183
|
+
//# sourceMappingURL=splitSqlStatements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splitSqlStatements.js","sourceRoot":"","sources":["../../src/shared/splitSqlStatements.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.6",
|
|
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",
|
|
@@ -73,7 +73,13 @@
|
|
|
73
73
|
"fallback",
|
|
74
74
|
"webassembly",
|
|
75
75
|
"pwa",
|
|
76
|
-
"offline-first"
|
|
76
|
+
"offline-first",
|
|
77
|
+
"agentos",
|
|
78
|
+
"framers-agentos",
|
|
79
|
+
"ai-agent-storage",
|
|
80
|
+
"agent-memory-storage",
|
|
81
|
+
"framers",
|
|
82
|
+
"frame-dev"
|
|
77
83
|
],
|
|
78
84
|
"author": "Framers (https://frame.dev)",
|
|
79
85
|
"license": "MIT",
|