@framers/sql-storage-adapter 0.6.11 → 0.6.12

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.
@@ -43,6 +43,12 @@ export declare class BetterSqliteAdapter implements StorageAdapter {
43
43
  private db;
44
44
  private preparedStatements;
45
45
  private readonly runSerializedTransaction;
46
+ /**
47
+ * Holds statements from outside an open transaction until it ends, so they
48
+ * neither join it nor read what it has not committed. open() gives it Node's
49
+ * AsyncLocalStorage, which tells the transaction's own statements apart.
50
+ */
51
+ private gate;
46
52
  /**
47
53
  * Creates a new better-sqlite3 adapter instance.
48
54
  *
@@ -60,6 +66,16 @@ export declare class BetterSqliteAdapter implements StorageAdapter {
60
66
  get<T = unknown>(statement: string, parameters?: StorageParameters): Promise<T | null>;
61
67
  all<T>(statement: string, parameters?: StorageParameters): Promise<T[]>;
62
68
  exec(script: string): Promise<void>;
69
+ private runNow;
70
+ private getNow;
71
+ private allNow;
72
+ private execNow;
73
+ /**
74
+ * The statements of one transaction's handle: they carry the transaction's
75
+ * token, so the gate admits them whatever async context runs them (a callback
76
+ * may reach its handle through an AsyncResource made before the transaction).
77
+ */
78
+ private handleStatements;
63
79
  transaction<T>(fn: (trx: StorageAdapter) => Promise<T>): Promise<T>;
64
80
  close(): Promise<void>;
65
81
  /**
@@ -72,6 +88,7 @@ export declare class BetterSqliteAdapter implements StorageAdapter {
72
88
  * @returns Results of the batch operation
73
89
  */
74
90
  batch(operations: BatchOperation[]): Promise<BatchResult>;
91
+ private batchNow;
75
92
  private prepareInternal;
76
93
  private ensureOpen;
77
94
  }
@@ -1 +1 @@
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;AAmGjK;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAuB5C,OAAO,CAAC,QAAQ,CAAC,eAAe;IAtB5C,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;IACtE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuC;IAEhF;;;;;OAKG;gBAC0B,eAAe,EAAE,MAAM;IAEpD;;;;OAIG;IACU,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCjD,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;IAmBnE,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
+ {"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;AAwHjK;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IA6B5C,OAAO,CAAC,QAAQ,CAAC,eAAe;IA5B5C,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;IACtE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuC;IAChF;;;;OAIG;IACH,OAAO,CAAC,IAAI,CAA8C;IAE1D;;;;;OAKG;gBAC0B,eAAe,EAAE,MAAM;IAEpD;;;;OAIG;IACU,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCjD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIjF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItF,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAIvE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,OAAO;IAKf;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAkBX,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA8BnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnC;;;;;;;;OAQG;IACU,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAItE,OAAO,CAAC,QAAQ;IA+ChB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,UAAU;CAKnB;AAED;;GAEG;AACH;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,aAAc,MAAM,KAAG,cAQ5D,CAAC"}
@@ -9,6 +9,7 @@ import path from 'path';
9
9
  const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
10
10
  import { normaliseParameters } from '../shared/parameterUtils.js';
11
11
  import { createSerializedTransactionRunner, createSharedConnectionTransactionAdapter, } from '../shared/serializedTransaction.js';
12
+ import { createConnectionGate, whenAdmitted, } from '../shared/connectionGate.js';
12
13
  /** The version of the better-sqlite3 that `require` resolves; undefined when it cannot be read. */
13
14
  const versionOf = (require) => {
14
15
  try {
@@ -82,6 +83,21 @@ const betterSqliteRuntimeRefusal = (version, nodeApi) => {
82
83
  return (`better-sqlite3 ${version} needs Node-API 10 (Node.js 22.14+ or 23.6+, Electron 35+), and this runtime has ${has}. ` +
83
84
  'Install better-sqlite3 12 for this runtime, or choose another adapter.');
84
85
  };
86
+ /**
87
+ * Node's AsyncLocalStorage for the connection gate, or null where it cannot be
88
+ * loaded (the gate then admits every statement at once). Loaded when the
89
+ * adapter opens, like the native module, so that browser bundles never import
90
+ * a Node built-in.
91
+ */
92
+ const loadTransactionContext = async () => {
93
+ try {
94
+ const { AsyncLocalStorage } = await import('async_hooks');
95
+ return new AsyncLocalStorage();
96
+ }
97
+ catch {
98
+ return null;
99
+ }
100
+ };
85
101
  const normaliseRowId = (rowId) => {
86
102
  if (rowId === null || rowId === undefined) {
87
103
  return null;
@@ -147,6 +163,12 @@ export class BetterSqliteAdapter {
147
163
  this.db = null;
148
164
  this.preparedStatements = new Map();
149
165
  this.runSerializedTransaction = createSerializedTransactionRunner();
166
+ /**
167
+ * Holds statements from outside an open transaction until it ends, so they
168
+ * neither join it nor read what it has not committed. open() gives it Node's
169
+ * AsyncLocalStorage, which tells the transaction's own statements apart.
170
+ */
171
+ this.gate = createConnectionGate(null);
150
172
  }
151
173
  /**
152
174
  * Open (or no-op if already open) the underlying native database.
@@ -182,38 +204,80 @@ export class BetterSqliteAdapter {
182
204
  }
183
205
  }
184
206
  const databaseOptions = options?.readOnly ? { readonly: true } : undefined;
207
+ this.gate = createConnectionGate(await loadTransactionContext());
185
208
  this.db = new DatabaseCtor(resolvedPath, databaseOptions);
186
209
  }
187
210
  async run(statement, parameters) {
211
+ return whenAdmitted(this.gate, () => this.runNow(statement, parameters));
212
+ }
213
+ async get(statement, parameters) {
214
+ return whenAdmitted(this.gate, () => this.getNow(statement, parameters));
215
+ }
216
+ async all(statement, parameters) {
217
+ return whenAdmitted(this.gate, () => this.allNow(statement, parameters));
218
+ }
219
+ async exec(script) {
220
+ return whenAdmitted(this.gate, () => this.execNow(script));
221
+ }
222
+ runNow(statement, parameters) {
188
223
  const stmt = this.prepareInternal(statement);
189
224
  const { named, positional } = normaliseParameters(parameters);
190
225
  const result = named ? stmt.run(named) : stmt.run(positional ?? []);
191
226
  return { changes: result.changes, lastInsertRowid: normaliseRowId(result.lastInsertRowid) };
192
227
  }
193
- async get(statement, parameters) {
228
+ getNow(statement, parameters) {
194
229
  const stmt = this.prepareInternal(statement);
195
230
  const { named, positional } = normaliseParameters(parameters);
196
231
  const row = named ? stmt.get(named) : stmt.get(positional ?? []);
197
232
  return row ?? null;
198
233
  }
199
- async all(statement, parameters) {
234
+ allNow(statement, parameters) {
200
235
  const stmt = this.prepareInternal(statement);
201
236
  const { named, positional } = normaliseParameters(parameters);
202
237
  const rows = named ? stmt.all(named) : stmt.all(positional ?? []);
203
238
  return rows;
204
239
  }
205
- async exec(script) {
240
+ execNow(script) {
206
241
  this.ensureOpen();
207
242
  this.db.exec(script);
208
243
  }
244
+ /**
245
+ * The statements of one transaction's handle: they carry the transaction's
246
+ * token, so the gate admits them whatever async context runs them (a callback
247
+ * may reach its handle through an AsyncResource made before the transaction).
248
+ */
249
+ handleStatements(token) {
250
+ return {
251
+ kind: this.kind,
252
+ capabilities: this.capabilities,
253
+ open: async () => { },
254
+ close: async () => { },
255
+ run: (statement, parameters) => whenAdmitted(this.gate, () => this.runNow(statement, parameters), token),
256
+ get: (statement, parameters) => whenAdmitted(this.gate, () => this.getNow(statement, parameters), token),
257
+ all: (statement, parameters) => whenAdmitted(this.gate, () => this.allNow(statement, parameters), token),
258
+ exec: (script) => whenAdmitted(this.gate, () => this.execNow(script), token),
259
+ batch: (operations) => whenAdmitted(this.gate, () => this.batchNow(operations), token),
260
+ // The handle answers a nested transaction() itself and never calls this.
261
+ transaction: (fn) => fn(this),
262
+ };
263
+ }
209
264
  async transaction(fn) {
210
265
  this.ensureOpen();
211
- return this.runSerializedTransaction(async () => {
212
- // The adapter has one physical connection. Queue top-level callbacks so
213
- // overlapping callers cannot issue a second BEGIN inside the first tx.
266
+ const openToken = this.gate.inside() ? this.gate.openToken() : null;
267
+ if (openToken) {
268
+ // Code the open transaction runs called the adapter itself: the callback
269
+ // joins the open transaction, as one given to the handle's transaction()
270
+ // does, instead of queueing behind the transaction it belongs to. Its
271
+ // handle carries the open transaction's token, as the outer one does.
272
+ return fn(createSharedConnectionTransactionAdapter(this.handleStatements(openToken)));
273
+ }
274
+ // The adapter has one physical connection. Queue top-level callbacks so
275
+ // overlapping callers cannot issue a second BEGIN inside the first tx, and
276
+ // hold the gate so other callers' statements wait for its end.
277
+ return this.runSerializedTransaction(() => this.gate.hold(async (token) => {
214
278
  this.ensureOpen();
215
279
  this.db.exec('BEGIN');
216
- const transactionAdapter = createSharedConnectionTransactionAdapter(this);
280
+ const transactionAdapter = createSharedConnectionTransactionAdapter(this.handleStatements(token));
217
281
  try {
218
282
  const result = await fn(transactionAdapter);
219
283
  this.db.exec('COMMIT');
@@ -226,9 +290,11 @@ export class BetterSqliteAdapter {
226
290
  catch { /* ignore rollback errors */ }
227
291
  throw error;
228
292
  }
229
- });
293
+ }));
230
294
  }
231
295
  async close() {
296
+ this.gate.dispose();
297
+ this.gate = createConnectionGate(null);
232
298
  if (this.db) {
233
299
  // Finalize all prepared statements
234
300
  this.preparedStatements.clear();
@@ -246,6 +312,9 @@ export class BetterSqliteAdapter {
246
312
  * @returns Results of the batch operation
247
313
  */
248
314
  async batch(operations) {
315
+ return whenAdmitted(this.gate, () => this.batchNow(operations));
316
+ }
317
+ batchNow(operations) {
249
318
  this.ensureOpen();
250
319
  const results = [];
251
320
  const errors = [];
@@ -1 +1 @@
1
- {"version":3,"file":"betterSqliteAdapter.js","sourceRoot":"","sources":["../../src/adapters/betterSqliteAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"betterSqliteAdapter.js","sourceRoot":"","sources":["../../src/adapters/betterSqliteAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Keeps statements from outside an open transaction out of it.
3
+ *
4
+ * An adapter whose transactions share one connection runs BEGIN, the
5
+ * callback's statements and COMMIT on that connection. While the callback
6
+ * awaits, a statement another caller issues would otherwise run on the same
7
+ * connection inside the open transaction: a write would be undone if the
8
+ * transaction rolled back, and a read would see rows the transaction has not
9
+ * committed. The gate makes such a statement wait until the transaction ends.
10
+ *
11
+ * A statement issued from inside the transaction runs in it. Through the
12
+ * callback's handle it carries the transaction's token, so it is admitted
13
+ * whatever async context runs it. Through the adapter itself, from code the
14
+ * callback runs, the callback's async context tells it apart, so the gate needs
15
+ * a context store (Node's AsyncLocalStorage); without one it admits every
16
+ * statement that carries no token at once, which is how the adapters behaved
17
+ * before the gate.
18
+ *
19
+ * This module imports nothing from Node, so browser bundles can include it;
20
+ * the adapter that runs on Node passes the store in.
21
+ */
22
+ /** The part of Node's `AsyncLocalStorage` the gate uses. */
23
+ export interface TransactionContextStore {
24
+ run<R>(store: symbol, callback: () => R): R;
25
+ getStore(): symbol | undefined;
26
+ /** Releases the store; Node collects an enabled store only after this. */
27
+ disable(): void;
28
+ }
29
+ /** The gate of one shared connection. */
30
+ export interface ConnectionGate {
31
+ /**
32
+ * True when a statement must wait: a transaction is open and the statement
33
+ * is not its own. A transaction handle passes its token; any other caller is
34
+ * judged by its async context.
35
+ */
36
+ blocks(token?: symbol): boolean;
37
+ /** True when a transaction is open and the caller runs inside it. */
38
+ inside(): boolean;
39
+ /** The open transaction's token, for a handle made inside it; null when none is open. */
40
+ openToken(): symbol | null;
41
+ /** Settles when the open transaction ends; at once when none is open. */
42
+ ended(): Promise<void>;
43
+ /**
44
+ * Runs one transaction's body with the gate closed to callers outside it.
45
+ * The body receives the transaction's token for its handle, and runs in its
46
+ * own async context, so code it runs is admitted too. The caller runs one
47
+ * body at a time (the adapter's transaction queue).
48
+ */
49
+ hold<T>(body: (token: symbol) => Promise<T>): Promise<T>;
50
+ /** Releases the context store when the connection closes. */
51
+ dispose(): void;
52
+ }
53
+ /**
54
+ * Creates the gate of one shared connection.
55
+ *
56
+ * @param context - Node's AsyncLocalStorage, or null where there is none (the
57
+ * gate then admits every statement at once).
58
+ */
59
+ export declare const createConnectionGate: (context: TransactionContextStore | null) => ConnectionGate;
60
+ /**
61
+ * Runs `work`, a synchronous statement, once the gate admits it. The last check
62
+ * and the work happen in the same turn, so no transaction can open between
63
+ * them; a caller woken when a transaction ends checks again, since the next
64
+ * transaction may already be open.
65
+ *
66
+ * @param token - The transaction's token when the statement comes through a
67
+ * transaction handle; a handle whose transaction has ended waits like any
68
+ * outside caller.
69
+ */
70
+ export declare const whenAdmitted: <T>(gate: ConnectionGate, work: () => T, token?: symbol) => Promise<T>;
71
+ //# sourceMappingURL=connectionGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionGate.d.ts","sourceRoot":"","sources":["../../src/shared/connectionGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,4DAA4D;AAC5D,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAC;IAC/B,0EAA0E;IAC1E,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,qEAAqE;IACrE,MAAM,IAAI,OAAO,CAAC;IAClB,yFAAyF;IACzF,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;IAC3B,yEAAyE;IACzE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;;;;;OAKG;IACH,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzD,6DAA6D;IAC7D,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,YAAa,uBAAuB,GAAG,IAAI,KAAG,cA8B9E,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,GAAU,CAAC,QAAQ,cAAc,QAAQ,MAAM,CAAC,UAAU,MAAM,KAAG,OAAO,CAAC,CAAC,CAKpG,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Keeps statements from outside an open transaction out of it.
3
+ *
4
+ * An adapter whose transactions share one connection runs BEGIN, the
5
+ * callback's statements and COMMIT on that connection. While the callback
6
+ * awaits, a statement another caller issues would otherwise run on the same
7
+ * connection inside the open transaction: a write would be undone if the
8
+ * transaction rolled back, and a read would see rows the transaction has not
9
+ * committed. The gate makes such a statement wait until the transaction ends.
10
+ *
11
+ * A statement issued from inside the transaction runs in it. Through the
12
+ * callback's handle it carries the transaction's token, so it is admitted
13
+ * whatever async context runs it. Through the adapter itself, from code the
14
+ * callback runs, the callback's async context tells it apart, so the gate needs
15
+ * a context store (Node's AsyncLocalStorage); without one it admits every
16
+ * statement that carries no token at once, which is how the adapters behaved
17
+ * before the gate.
18
+ *
19
+ * This module imports nothing from Node, so browser bundles can include it;
20
+ * the adapter that runs on Node passes the store in.
21
+ */
22
+ /**
23
+ * Creates the gate of one shared connection.
24
+ *
25
+ * @param context - Node's AsyncLocalStorage, or null where there is none (the
26
+ * gate then admits every statement at once).
27
+ */
28
+ export const createConnectionGate = (context) => {
29
+ let open = null;
30
+ return {
31
+ blocks: (token) => {
32
+ if (open === null)
33
+ return false;
34
+ if (token !== undefined)
35
+ return token !== open.id;
36
+ return context !== null && context.getStore() !== open.id;
37
+ },
38
+ inside: () => open !== null && context !== null && context.getStore() === open.id,
39
+ openToken: () => open?.id ?? null,
40
+ ended: () => open?.done ?? Promise.resolve(),
41
+ async hold(body) {
42
+ const id = Symbol('transaction');
43
+ let release;
44
+ const done = new Promise((resolve) => {
45
+ release = resolve;
46
+ });
47
+ open = { id, done };
48
+ try {
49
+ return await (context ? context.run(id, () => body(id)) : body(id));
50
+ }
51
+ finally {
52
+ open = null;
53
+ release();
54
+ }
55
+ },
56
+ dispose: () => {
57
+ context?.disable();
58
+ },
59
+ };
60
+ };
61
+ /**
62
+ * Runs `work`, a synchronous statement, once the gate admits it. The last check
63
+ * and the work happen in the same turn, so no transaction can open between
64
+ * them; a caller woken when a transaction ends checks again, since the next
65
+ * transaction may already be open.
66
+ *
67
+ * @param token - The transaction's token when the statement comes through a
68
+ * transaction handle; a handle whose transaction has ended waits like any
69
+ * outside caller.
70
+ */
71
+ export const whenAdmitted = async (gate, work, token) => {
72
+ while (gate.blocks(token)) {
73
+ await gate.ended();
74
+ }
75
+ return work();
76
+ };
77
+ //# sourceMappingURL=connectionGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connectionGate.js","sourceRoot":"","sources":["../../src/shared/connectionGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAmCH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAuC,EAAkB,EAAE;IAC9F,IAAI,IAAI,GAA+C,IAAI,CAAC;IAE5D,OAAO;QACL,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YAChC,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;YAClD,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5D,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;QACjF,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI;QACjC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;QAC5C,KAAK,CAAC,IAAI,CAAI,IAAmC;YAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;YACjC,IAAI,OAAoB,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACzC,OAAO,GAAG,OAAO,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;oBAAS,CAAC;gBACT,IAAI,GAAG,IAAI,CAAC;gBACZ,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAK,IAAoB,EAAE,IAAa,EAAE,KAAc,EAAc,EAAE;IACvG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@framers/sql-storage-adapter",
3
- "version": "0.6.11",
3
+ "version": "0.6.12",
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",