@powersync/op-sqlite 0.0.0-dev-20260311081226 → 0.0.0-dev-20260414110516

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.
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { getDylibPath, open } from '@op-engineering/op-sqlite';
4
- import { BaseObserver, mutexRunExclusive } from '@powersync/common';
5
- import { Mutex } from 'async-mutex';
4
+ import { BaseObserver, DBAdapterDefaultMixin, timeoutSignal, Semaphore } from '@powersync/common';
6
5
  import { Platform } from 'react-native';
7
6
  import { OPSQLiteConnection } from "./OPSQLiteConnection.js";
8
7
 
@@ -11,13 +10,11 @@ import { OPSQLiteConnection } from "./OPSQLiteConnection.js";
11
10
  */
12
11
 
13
12
  const READ_CONNECTIONS = 5;
14
- export class OPSQLiteDBAdapter extends BaseObserver {
15
- readQueue = [];
13
+ class OPSQLiteConnectionPool extends BaseObserver {
16
14
  constructor(options) {
17
15
  super();
18
16
  this.options = options;
19
17
  this.name = this.options.name;
20
- this.writeMutex = new Mutex();
21
18
  this.readConnections = null;
22
19
  this.writeConnection = null;
23
20
  this.abortController = new AbortController();
@@ -33,14 +30,14 @@ export class OPSQLiteDBAdapter extends BaseObserver {
33
30
  temporaryStorage
34
31
  } = this.options.sqliteOptions;
35
32
  const dbFilename = this.options.name;
36
- this.writeConnection = await this.openConnection(dbFilename);
33
+ const underlyingWriteConnection = await this.openConnection(dbFilename);
37
34
  const baseStatements = [`PRAGMA busy_timeout = ${lockTimeoutMs}`, `PRAGMA cache_size = -${cacheSizeKb}`, `PRAGMA temp_store = ${temporaryStorage}`];
38
35
  const writeConnectionStatements = [...baseStatements, `PRAGMA journal_mode = ${journalMode}`, `PRAGMA journal_size_limit = ${journalSizeLimit}`, `PRAGMA synchronous = ${synchronous}`];
39
36
  const readConnectionStatements = [...baseStatements, 'PRAGMA query_only = true'];
40
37
  for (const statement of writeConnectionStatements) {
41
38
  for (let tries = 0; tries < 30; tries++) {
42
39
  try {
43
- await this.writeConnection.execute(statement);
40
+ await underlyingWriteConnection.execute(statement);
44
41
  break;
45
42
  } catch (e) {
46
43
  if (e instanceof Error && e.message.includes('database is locked') && tries < 29) {
@@ -53,20 +50,19 @@ export class OPSQLiteDBAdapter extends BaseObserver {
53
50
  }
54
51
 
55
52
  // Changes should only occur in the write connection
56
- this.writeConnection.registerListener({
53
+ underlyingWriteConnection.registerListener({
57
54
  tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
58
55
  });
59
- this.readConnections = [];
56
+ const underlyingReadConnections = [];
60
57
  for (let i = 0; i < READ_CONNECTIONS; i++) {
61
58
  const conn = await this.openConnection(dbFilename);
62
59
  for (let statement of readConnectionStatements) {
63
60
  await conn.execute(statement);
64
61
  }
65
- this.readConnections.push({
66
- busy: false,
67
- connection: conn
68
- });
62
+ underlyingReadConnections.push(conn);
69
63
  }
64
+ this.writeConnection = new Semaphore([underlyingWriteConnection]);
65
+ this.readConnections = new Semaphore(underlyingReadConnections);
70
66
  }
71
67
  async openConnection(filenameOverride) {
72
68
  const dbFilename = filenameOverride ?? this.options.name;
@@ -113,145 +109,101 @@ export class OPSQLiteDBAdapter extends BaseObserver {
113
109
  await this.initialized;
114
110
  // Abort any pending operations
115
111
  this.abortController.abort();
116
- this.readQueue = [];
117
- this.writeConnection.close();
118
- this.readConnections.forEach(c => c.connection.close());
112
+ const {
113
+ item: writeConnection,
114
+ release: returnWrite
115
+ } = await this.writeConnection.requestOne();
116
+ const {
117
+ items: readers,
118
+ release: returnReaders
119
+ } = await this.readConnections.requestAll();
120
+ try {
121
+ writeConnection.close();
122
+ readers.forEach(c => c.close());
123
+ } finally {
124
+ returnWrite();
125
+ returnReaders();
126
+ }
119
127
  }
120
- async readLock(fn, options) {
121
- await this.initialized;
122
- return new Promise(async (resolve, reject) => {
123
- const execute = async () => {
124
- // Find an available connection that is not busy
125
- const availableConnection = this.readConnections.find(conn => !conn.busy);
126
-
127
- // If we have an available connection, use it
128
- if (availableConnection) {
129
- availableConnection.busy = true;
130
- try {
131
- resolve(await fn(availableConnection.connection));
132
- } catch (error) {
133
- reject(error);
134
- } finally {
135
- availableConnection.busy = false;
136
- // After query execution, process any queued tasks
137
- this.processQueue();
138
- }
139
- } else {
140
- // If no available connections, add to the queue
141
- this.readQueue.push(execute);
142
- }
128
+ generateNestedAbortSignal(options) {
129
+ const outerSignal = this.abortController.signal;
130
+ let signal;
131
+ let cleanUpInnerSignal;
132
+ if (options?.timeoutMs && !outerSignal.aborted) {
133
+ // This is essentially an AbortSignal.any() polyfill.
134
+ const innerController = new AbortController();
135
+ cleanUpInnerSignal = () => {
136
+ innerController.abort();
137
+ outerSignal.removeEventListener('abort', cleanUpInnerSignal);
138
+ timeout.removeEventListener('abort', cleanUpInnerSignal);
143
139
  };
144
- execute();
145
- });
140
+ outerSignal.addEventListener('abort', cleanUpInnerSignal);
141
+ const timeout = timeoutSignal(options.timeoutMs);
142
+ timeout.addEventListener('abort', cleanUpInnerSignal);
143
+ signal = innerController.signal;
144
+ } else {
145
+ signal = outerSignal;
146
+ }
147
+ return {
148
+ signal,
149
+ cleanUpInnerSignal
150
+ };
146
151
  }
147
- async processQueue() {
148
- if (this.readQueue.length > 0) {
149
- const next = this.readQueue.shift();
150
- if (next) {
151
- next();
152
- }
152
+ async readLock(fn, options) {
153
+ await this.initialized;
154
+ const {
155
+ signal,
156
+ cleanUpInnerSignal
157
+ } = this.generateNestedAbortSignal(options);
158
+ const {
159
+ item,
160
+ release
161
+ } = await this.readConnections.requestOne(signal);
162
+ try {
163
+ return await fn(item);
164
+ } finally {
165
+ release();
166
+ cleanUpInnerSignal?.();
153
167
  }
154
168
  }
155
169
  async writeLock(fn, options) {
156
170
  await this.initialized;
157
- return new Promise(async (resolve, reject) => {
158
- // Set up abort signal listener
159
- const abortListener = () => {
160
- reject(new Error('Database connection was closed'));
161
- };
162
- this.abortController.signal.addEventListener('abort', abortListener);
163
- try {
164
- await mutexRunExclusive(this.writeMutex, async () => {
165
- // Check if operation was aborted before executing
166
- if (this.abortController.signal.aborted) {
167
- reject(new Error('Database connection was closed'));
168
- }
169
- resolve(await fn(this.writeConnection));
170
- }, options);
171
- // flush updates once a write lock has been released
172
- this.writeConnection.flushUpdates();
173
- } catch (ex) {
174
- reject(ex);
175
- } finally {
176
- this.abortController.signal.removeEventListener('abort', abortListener);
177
- }
178
- });
179
- }
180
- readTransaction(fn, options) {
181
- return this.readLock(ctx => this.internalTransaction(ctx, fn));
182
- }
183
- writeTransaction(fn, options) {
184
- return this.writeLock(ctx => this.internalTransaction(ctx, fn));
185
- }
186
- getAll(sql, parameters) {
187
- return this.readLock(ctx => ctx.getAll(sql, parameters));
188
- }
189
- getOptional(sql, parameters) {
190
- return this.readLock(ctx => ctx.getOptional(sql, parameters));
191
- }
192
- get(sql, parameters) {
193
- return this.readLock(ctx => ctx.get(sql, parameters));
194
- }
195
- execute(query, params) {
196
- return this.writeLock(ctx => ctx.execute(query, params));
197
- }
198
- executeRaw(query, params) {
199
- return this.writeLock(ctx => ctx.executeRaw(query, params));
200
- }
201
- async executeBatch(query, params = []) {
202
- return this.writeLock(ctx => ctx.executeBatch(query, params));
203
- }
204
- async internalTransaction(connection, fn) {
205
- let finalized = false;
206
- const commit = async () => {
207
- if (finalized) {
208
- return {
209
- rowsAffected: 0
210
- };
211
- }
212
- finalized = true;
213
- return connection.execute('COMMIT');
214
- };
215
- const rollback = async () => {
216
- if (finalized) {
217
- return {
218
- rowsAffected: 0
219
- };
220
- }
221
- finalized = true;
222
- return connection.execute('ROLLBACK');
223
- };
171
+ const {
172
+ signal,
173
+ cleanUpInnerSignal
174
+ } = this.generateNestedAbortSignal(options);
175
+ const {
176
+ item,
177
+ release
178
+ } = await this.writeConnection.requestOne(signal);
224
179
  try {
225
- await connection.execute('BEGIN');
226
- const result = await fn({
227
- execute: (query, params) => connection.execute(query, params),
228
- executeRaw: (query, params) => connection.executeRaw(query, params),
229
- get: (query, params) => connection.get(query, params),
230
- getAll: (query, params) => connection.getAll(query, params),
231
- getOptional: (query, params) => connection.getOptional(query, params),
232
- commit,
233
- rollback
234
- });
235
- await commit();
236
- return result;
237
- } catch (ex) {
238
- try {
239
- await rollback();
240
- } catch (ex2) {
241
- // In rare cases, a rollback may fail.
242
- // Safe to ignore.
243
- }
244
- throw ex;
180
+ return await fn(item).finally(() => item.flushUpdates());
181
+ } finally {
182
+ release();
183
+ cleanUpInnerSignal?.();
245
184
  }
246
185
  }
247
186
  async refreshSchema() {
248
187
  await this.initialized;
249
- await this.writeConnection.refreshSchema();
250
- if (this.readConnections) {
251
- for (let readConnection of this.readConnections) {
252
- await readConnection.connection.refreshSchema();
188
+ await this.writeLock(l => l.refreshSchema());
189
+ const {
190
+ items,
191
+ release
192
+ } = await this.readConnections.requestAll();
193
+ try {
194
+ for (let readConnection of items) {
195
+ await readConnection.refreshSchema();
253
196
  }
197
+ } finally {
198
+ release();
254
199
  }
255
200
  }
256
201
  }
202
+ export class OPSQLiteDBAdapter extends DBAdapterDefaultMixin(OPSQLiteConnectionPool) {
203
+ async executeBatch(query, params = []) {
204
+ return await this.writeLock(async tx => {
205
+ return await tx.executeNativeBatch(query, params);
206
+ });
207
+ }
208
+ }
257
209
  //# sourceMappingURL=OPSqliteAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getDylibPath","open","BaseObserver","mutexRunExclusive","Mutex","Platform","OPSQLiteConnection","READ_CONNECTIONS","OPSQLiteDBAdapter","readQueue","constructor","options","name","writeMutex","readConnections","writeConnection","abortController","AbortController","initialized","init","lockTimeoutMs","journalMode","journalSizeLimit","synchronous","cacheSizeKb","temporaryStorage","sqliteOptions","dbFilename","openConnection","baseStatements","writeConnectionStatements","readConnectionStatements","statement","tries","execute","e","Error","message","includes","registerListener","tablesUpdated","notification","iterateListeners","cb","i","conn","push","busy","connection","filenameOverride","DB","openDatabase","encryptionKey","undefined","loadAdditionalExtensions","loadPowerSyncExtension","baseDB","openOptions","dbLocation","location","extensions","length","extension","loadExtension","path","entryPoint","OS","libPath","close","abort","forEach","c","readLock","fn","Promise","resolve","reject","availableConnection","find","error","processQueue","next","shift","writeLock","abortListener","signal","addEventListener","aborted","flushUpdates","ex","removeEventListener","readTransaction","ctx","internalTransaction","writeTransaction","getAll","sql","parameters","getOptional","get","query","params","executeRaw","executeBatch","finalized","commit","rowsAffected","rollback","result","ex2","refreshSchema","readConnection"],"sourceRoot":"../../../src","sources":["db/OPSqliteAdapter.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getDylibPath","open","BaseObserver","DBAdapterDefaultMixin","timeoutSignal","Semaphore","Platform","OPSQLiteConnection","READ_CONNECTIONS","OPSQLiteConnectionPool","constructor","options","name","readConnections","writeConnection","abortController","AbortController","initialized","init","lockTimeoutMs","journalMode","journalSizeLimit","synchronous","cacheSizeKb","temporaryStorage","sqliteOptions","dbFilename","underlyingWriteConnection","openConnection","baseStatements","writeConnectionStatements","readConnectionStatements","statement","tries","execute","e","Error","message","includes","registerListener","tablesUpdated","notification","iterateListeners","cb","underlyingReadConnections","i","conn","push","filenameOverride","DB","openDatabase","encryptionKey","undefined","loadAdditionalExtensions","loadPowerSyncExtension","baseDB","openOptions","dbLocation","location","extensions","length","extension","loadExtension","path","entryPoint","OS","libPath","close","abort","item","release","returnWrite","requestOne","items","readers","returnReaders","requestAll","forEach","c","generateNestedAbortSignal","outerSignal","signal","cleanUpInnerSignal","timeoutMs","aborted","innerController","removeEventListener","timeout","addEventListener","readLock","fn","writeLock","finally","flushUpdates","refreshSchema","l","readConnection","OPSQLiteDBAdapter","executeBatch","query","params","tx","executeNativeBatch"],"sourceRoot":"../../../src","sources":["db/OPSqliteAdapter.ts"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { DB, UpdateHookOperation } from '@op-engineering/op-sqlite';
2
- import { BaseObserver, DBAdapterListener, QueryResult } from '@powersync/common';
2
+ import { BaseObserver, DBAdapterListener, LockContext, QueryResult, SqlExecutor } from '@powersync/common';
3
3
  export type OPSQLiteConnectionOptions = {
4
4
  baseDB: DB;
5
5
  };
@@ -9,7 +9,7 @@ export type OPSQLiteUpdateNotification = {
9
9
  row?: any;
10
10
  rowId: number;
11
11
  };
12
- export declare class OPSQLiteConnection extends BaseObserver<DBAdapterListener> {
12
+ declare class OPSQLiteExecutor extends BaseObserver<DBAdapterListener> implements Omit<SqlExecutor, 'executeBatch'> {
13
13
  protected options: OPSQLiteConnectionOptions;
14
14
  protected DB: DB;
15
15
  private updateBuffer;
@@ -19,10 +19,18 @@ export declare class OPSQLiteConnection extends BaseObserver<DBAdapterListener>
19
19
  close(): void;
20
20
  execute(query: string, params?: any[]): Promise<QueryResult>;
21
21
  executeRaw(query: string, params?: any[]): Promise<any[][]>;
22
- executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
22
+ executeNativeBatch(query: string, params?: any[][]): Promise<QueryResult>;
23
+ }
24
+ declare const OPSQLiteConnection_base: (new (...args: any[]) => {
23
25
  getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
24
26
  getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
25
27
  get<T>(sql: string, parameters?: any[]): Promise<T>;
28
+ executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
29
+ execute: (query: string, params?: any[] | undefined) => Promise<QueryResult>;
30
+ executeRaw: (query: string, params?: any[] | undefined) => Promise<any[][]>;
31
+ }) & typeof OPSQLiteExecutor;
32
+ export declare class OPSQLiteConnection extends OPSQLiteConnection_base implements LockContext {
26
33
  refreshSchema(): Promise<void>;
27
34
  }
35
+ export {};
28
36
  //# sourceMappingURL=OPSQLiteConnection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OPSQLiteConnection.d.ts","sourceRoot":"","sources":["../../../../../src/db/OPSQLiteConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAiB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EACL,YAAY,EAEZ,iBAAiB,EACjB,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,mBAAmB,CAAC;IAC/B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,YAAY,CAAC,iBAAiB,CAAC;IAIzD,SAAS,CAAC,OAAO,EAAE,yBAAyB;IAHxD,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;IACjB,OAAO,CAAC,YAAY,CAAuB;gBAErB,OAAO,EAAE,yBAAyB;IAcxD,cAAc,CAAC,MAAM,EAAE,0BAA0B;IAqBjD,YAAY;IAsBZ,KAAK;IAIC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAa5D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAI3D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAE,EAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAUvE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAKxD,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKlE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAQnD,aAAa;CAGpB"}
1
+ {"version":3,"file":"OPSQLiteConnection.d.ts","sourceRoot":"","sources":["../../../../../src/db/OPSQLiteConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAiB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EACL,YAAY,EAEZ,iBAAiB,EAEjB,WAAW,EACX,WAAW,EAEX,WAAW,EAEZ,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,mBAAmB,CAAC;IAC/B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,cAAM,gBAAiB,SAAQ,YAAY,CAAC,iBAAiB,CAAE,YAAW,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC;IAI7F,SAAS,CAAC,OAAO,EAAE,yBAAyB;IAHxD,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;IACjB,OAAO,CAAC,YAAY,CAAuB;gBAErB,OAAO,EAAE,yBAAyB;IAcxD,cAAc,CAAC,MAAM,EAAE,0BAA0B;IAqBjD,YAAY;IAsBZ,KAAK;IAIC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAa5D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAI3D,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAE,EAAO,GAAG,OAAO,CAAC,WAAW,CAAC;CASpF;;qCAOM,CAAC;0CAAsE,CAAC;kCAAmE,CAAC;sCAAgE,CAAC;mCAAyE,CAAC;sCAAwF,CAAC;;AALvX,qBAAa,kBAAmB,SAAQ,uBAAyC,YAAW,WAAW;IAC/F,aAAa;CAGpB"}
@@ -1,5 +1,4 @@
1
- import { BaseObserver, DBAdapter, DBAdapterListener, DBLockOptions, QueryResult, Transaction } from '@powersync/common';
2
- import { Mutex } from 'async-mutex';
1
+ import { BaseObserver, ConnectionPool, DBAdapter, DBAdapterListener, DBLockOptions, QueryResult, Transaction, Semaphore } from '@powersync/common';
3
2
  import { OPSQLiteConnection } from './OPSQLiteConnection';
4
3
  import { SqliteOptions } from './SqliteOptions';
5
4
  /**
@@ -10,17 +9,12 @@ export type OPSQLiteAdapterOptions = {
10
9
  dbLocation?: string;
11
10
  sqliteOptions?: SqliteOptions;
12
11
  };
13
- export declare class OPSQLiteDBAdapter extends BaseObserver<DBAdapterListener> implements DBAdapter {
12
+ declare class OPSQLiteConnectionPool extends BaseObserver<DBAdapterListener> implements ConnectionPool {
14
13
  protected options: OPSQLiteAdapterOptions;
15
14
  name: string;
16
- protected writeMutex: Mutex;
17
15
  protected initialized: Promise<void>;
18
- protected readConnections: Array<{
19
- busy: boolean;
20
- connection: OPSQLiteConnection;
21
- }> | null;
22
- protected writeConnection: OPSQLiteConnection | null;
23
- private readQueue;
16
+ protected readConnections: Semaphore<OPSQLiteConnection> | null;
17
+ protected writeConnection: Semaphore<OPSQLiteConnection> | null;
24
18
  private abortController;
25
19
  constructor(options: OPSQLiteAdapterOptions);
26
20
  protected init(): Promise<void>;
@@ -29,9 +23,12 @@ export declare class OPSQLiteDBAdapter extends BaseObserver<DBAdapterListener> i
29
23
  private loadAdditionalExtensions;
30
24
  private loadPowerSyncExtension;
31
25
  close(): Promise<void>;
26
+ private generateNestedAbortSignal;
32
27
  readLock<T>(fn: (tx: OPSQLiteConnection) => Promise<T>, options?: DBLockOptions): Promise<T>;
33
- private processQueue;
34
28
  writeLock<T>(fn: (tx: OPSQLiteConnection) => Promise<T>, options?: DBLockOptions): Promise<T>;
29
+ refreshSchema(): Promise<void>;
30
+ }
31
+ declare const OPSQLiteDBAdapter_base: (new (...args: any[]) => {
35
32
  readTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
36
33
  writeTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
37
34
  getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
@@ -40,7 +37,15 @@ export declare class OPSQLiteDBAdapter extends BaseObserver<DBAdapterListener> i
40
37
  execute(query: string, params?: any[]): Promise<QueryResult>;
41
38
  executeRaw(query: string, params?: any[]): Promise<any[][]>;
42
39
  executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
43
- protected internalTransaction<T>(connection: OPSQLiteConnection, fn: (tx: Transaction) => Promise<T>): Promise<T>;
44
- refreshSchema(): Promise<void>;
40
+ name: string;
41
+ close: () => void | Promise<void>;
42
+ readLock: <T>(fn: (tx: import("@powersync/common").LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
43
+ writeLock: <T>(fn: (tx: import("@powersync/common").LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
44
+ refreshSchema: () => Promise<void>;
45
+ registerListener(listener: Partial<DBAdapterListener>): () => void;
46
+ }) & typeof OPSQLiteConnectionPool;
47
+ export declare class OPSQLiteDBAdapter extends OPSQLiteDBAdapter_base implements DBAdapter {
48
+ executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
45
49
  }
50
+ export {};
46
51
  //# sourceMappingURL=OPSqliteAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OPSqliteAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/db/OPSqliteAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OPSqliteAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/db/OPSqliteAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,SAAS,EAET,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,WAAW,EAEX,SAAS,EACV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAIF,cAAM,sBAAuB,SAAQ,YAAY,CAAC,iBAAiB,CAAE,YAAW,cAAc;IAUhF,SAAS,CAAC,OAAO,EAAE,sBAAsB;IATrD,IAAI,EAAE,MAAM,CAAC;IAEb,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;IAChE,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;IAEhE,OAAO,CAAC,eAAe,CAAkB;gBAEnB,OAAO,EAAE,sBAAsB;cAUrC,IAAI;cAuDJ,cAAc,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAetF,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,wBAAwB;YAQlB,sBAAsB;IAS9B,KAAK;IAiBX,OAAO,CAAC,yBAAyB;IA0B3B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAa5F,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAa7F,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAYrC;;mEAtC2D,CAAC;oEAG9B,CAAC;qCACb,CAAC;0CAEd,CAAH;kCAGK,CAAC;iCAIkB,CAAC;oCAAwE,CAAC;sCAG9D,CAAA;;;0FAGP,CAAC;2FAK/B,CAAF;;;;AAgBA,qBAAa,iBAAkB,SAAQ,sBAA8C,YAAW,SAAS;IACjG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAE,EAAO,GAAG,OAAO,CAAC,WAAW,CAAC;CAK9E"}
@@ -1,5 +1,5 @@
1
1
  import { DB, UpdateHookOperation } from '@op-engineering/op-sqlite';
2
- import { BaseObserver, DBAdapterListener, QueryResult } from '@powersync/common';
2
+ import { BaseObserver, DBAdapterListener, LockContext, QueryResult, SqlExecutor } from '@powersync/common';
3
3
  export type OPSQLiteConnectionOptions = {
4
4
  baseDB: DB;
5
5
  };
@@ -9,7 +9,7 @@ export type OPSQLiteUpdateNotification = {
9
9
  row?: any;
10
10
  rowId: number;
11
11
  };
12
- export declare class OPSQLiteConnection extends BaseObserver<DBAdapterListener> {
12
+ declare class OPSQLiteExecutor extends BaseObserver<DBAdapterListener> implements Omit<SqlExecutor, 'executeBatch'> {
13
13
  protected options: OPSQLiteConnectionOptions;
14
14
  protected DB: DB;
15
15
  private updateBuffer;
@@ -19,10 +19,18 @@ export declare class OPSQLiteConnection extends BaseObserver<DBAdapterListener>
19
19
  close(): void;
20
20
  execute(query: string, params?: any[]): Promise<QueryResult>;
21
21
  executeRaw(query: string, params?: any[]): Promise<any[][]>;
22
- executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
22
+ executeNativeBatch(query: string, params?: any[][]): Promise<QueryResult>;
23
+ }
24
+ declare const OPSQLiteConnection_base: (new (...args: any[]) => {
23
25
  getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
24
26
  getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
25
27
  get<T>(sql: string, parameters?: any[]): Promise<T>;
28
+ executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
29
+ execute: (query: string, params?: any[] | undefined) => Promise<QueryResult>;
30
+ executeRaw: (query: string, params?: any[] | undefined) => Promise<any[][]>;
31
+ }) & typeof OPSQLiteExecutor;
32
+ export declare class OPSQLiteConnection extends OPSQLiteConnection_base implements LockContext {
26
33
  refreshSchema(): Promise<void>;
27
34
  }
35
+ export {};
28
36
  //# sourceMappingURL=OPSQLiteConnection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OPSQLiteConnection.d.ts","sourceRoot":"","sources":["../../../../../src/db/OPSQLiteConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAiB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EACL,YAAY,EAEZ,iBAAiB,EACjB,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,mBAAmB,CAAC;IAC/B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,YAAY,CAAC,iBAAiB,CAAC;IAIzD,SAAS,CAAC,OAAO,EAAE,yBAAyB;IAHxD,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;IACjB,OAAO,CAAC,YAAY,CAAuB;gBAErB,OAAO,EAAE,yBAAyB;IAcxD,cAAc,CAAC,MAAM,EAAE,0BAA0B;IAqBjD,YAAY;IAsBZ,KAAK;IAIC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAa5D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAI3D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAE,EAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAUvE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAKxD,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKlE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAQnD,aAAa;CAGpB"}
1
+ {"version":3,"file":"OPSQLiteConnection.d.ts","sourceRoot":"","sources":["../../../../../src/db/OPSQLiteConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAiB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EACL,YAAY,EAEZ,iBAAiB,EAEjB,WAAW,EACX,WAAW,EAEX,WAAW,EAEZ,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,mBAAmB,CAAC;IAC/B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,cAAM,gBAAiB,SAAQ,YAAY,CAAC,iBAAiB,CAAE,YAAW,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC;IAI7F,SAAS,CAAC,OAAO,EAAE,yBAAyB;IAHxD,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;IACjB,OAAO,CAAC,YAAY,CAAuB;gBAErB,OAAO,EAAE,yBAAyB;IAcxD,cAAc,CAAC,MAAM,EAAE,0BAA0B;IAqBjD,YAAY;IAsBZ,KAAK;IAIC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAa5D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAI3D,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAE,EAAO,GAAG,OAAO,CAAC,WAAW,CAAC;CASpF;;qCAOM,CAAC;0CAAsE,CAAC;kCAAmE,CAAC;sCAAgE,CAAC;mCAAyE,CAAC;sCAAwF,CAAC;;AALvX,qBAAa,kBAAmB,SAAQ,uBAAyC,YAAW,WAAW;IAC/F,aAAa;CAGpB"}
@@ -1,5 +1,4 @@
1
- import { BaseObserver, DBAdapter, DBAdapterListener, DBLockOptions, QueryResult, Transaction } from '@powersync/common';
2
- import { Mutex } from 'async-mutex';
1
+ import { BaseObserver, ConnectionPool, DBAdapter, DBAdapterListener, DBLockOptions, QueryResult, Transaction, Semaphore } from '@powersync/common';
3
2
  import { OPSQLiteConnection } from './OPSQLiteConnection';
4
3
  import { SqliteOptions } from './SqliteOptions';
5
4
  /**
@@ -10,17 +9,12 @@ export type OPSQLiteAdapterOptions = {
10
9
  dbLocation?: string;
11
10
  sqliteOptions?: SqliteOptions;
12
11
  };
13
- export declare class OPSQLiteDBAdapter extends BaseObserver<DBAdapterListener> implements DBAdapter {
12
+ declare class OPSQLiteConnectionPool extends BaseObserver<DBAdapterListener> implements ConnectionPool {
14
13
  protected options: OPSQLiteAdapterOptions;
15
14
  name: string;
16
- protected writeMutex: Mutex;
17
15
  protected initialized: Promise<void>;
18
- protected readConnections: Array<{
19
- busy: boolean;
20
- connection: OPSQLiteConnection;
21
- }> | null;
22
- protected writeConnection: OPSQLiteConnection | null;
23
- private readQueue;
16
+ protected readConnections: Semaphore<OPSQLiteConnection> | null;
17
+ protected writeConnection: Semaphore<OPSQLiteConnection> | null;
24
18
  private abortController;
25
19
  constructor(options: OPSQLiteAdapterOptions);
26
20
  protected init(): Promise<void>;
@@ -29,9 +23,12 @@ export declare class OPSQLiteDBAdapter extends BaseObserver<DBAdapterListener> i
29
23
  private loadAdditionalExtensions;
30
24
  private loadPowerSyncExtension;
31
25
  close(): Promise<void>;
26
+ private generateNestedAbortSignal;
32
27
  readLock<T>(fn: (tx: OPSQLiteConnection) => Promise<T>, options?: DBLockOptions): Promise<T>;
33
- private processQueue;
34
28
  writeLock<T>(fn: (tx: OPSQLiteConnection) => Promise<T>, options?: DBLockOptions): Promise<T>;
29
+ refreshSchema(): Promise<void>;
30
+ }
31
+ declare const OPSQLiteDBAdapter_base: (new (...args: any[]) => {
35
32
  readTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
36
33
  writeTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
37
34
  getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
@@ -40,7 +37,15 @@ export declare class OPSQLiteDBAdapter extends BaseObserver<DBAdapterListener> i
40
37
  execute(query: string, params?: any[]): Promise<QueryResult>;
41
38
  executeRaw(query: string, params?: any[]): Promise<any[][]>;
42
39
  executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
43
- protected internalTransaction<T>(connection: OPSQLiteConnection, fn: (tx: Transaction) => Promise<T>): Promise<T>;
44
- refreshSchema(): Promise<void>;
40
+ name: string;
41
+ close: () => void | Promise<void>;
42
+ readLock: <T>(fn: (tx: import("@powersync/common").LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
43
+ writeLock: <T>(fn: (tx: import("@powersync/common").LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
44
+ refreshSchema: () => Promise<void>;
45
+ registerListener(listener: Partial<DBAdapterListener>): () => void;
46
+ }) & typeof OPSQLiteConnectionPool;
47
+ export declare class OPSQLiteDBAdapter extends OPSQLiteDBAdapter_base implements DBAdapter {
48
+ executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
45
49
  }
50
+ export {};
46
51
  //# sourceMappingURL=OPSqliteAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OPSqliteAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/db/OPSqliteAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OPSqliteAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/db/OPSqliteAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,SAAS,EAET,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,WAAW,EAEX,SAAS,EACV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAIF,cAAM,sBAAuB,SAAQ,YAAY,CAAC,iBAAiB,CAAE,YAAW,cAAc;IAUhF,SAAS,CAAC,OAAO,EAAE,sBAAsB;IATrD,IAAI,EAAE,MAAM,CAAC;IAEb,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;IAChE,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;IAEhE,OAAO,CAAC,eAAe,CAAkB;gBAEnB,OAAO,EAAE,sBAAsB;cAUrC,IAAI;cAuDJ,cAAc,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAetF,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,wBAAwB;YAQlB,sBAAsB;IAS9B,KAAK;IAiBX,OAAO,CAAC,yBAAyB;IA0B3B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAa5F,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAa7F,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAYrC;;mEAtC2D,CAAC;oEAG9B,CAAC;qCACb,CAAC;0CAEd,CAAH;kCAGK,CAAC;iCAIkB,CAAC;oCAAwE,CAAC;sCAG9D,CAAA;;;0FAGP,CAAC;2FAK/B,CAAF;;;;AAgBA,qBAAa,iBAAkB,SAAQ,sBAA8C,YAAW,SAAS;IACjG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAE,EAAO,GAAG,OAAO,CAAC,WAAW,CAAC;CAK9E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powersync/op-sqlite",
3
- "version": "0.0.0-dev-20260311081226",
3
+ "version": "0.0.0-dev-20260414110516",
4
4
  "description": "PowerSync - sync Postgres or MongoDB with SQLite in your React Native app for offline-first and real-time data",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/commonjs/index.js",
@@ -59,13 +59,12 @@
59
59
  },
60
60
  "peerDependencies": {
61
61
  "@op-engineering/op-sqlite": "^13.0.0 || ^14.0.0 || ^15.0.0",
62
- "@powersync/common": "0.0.0-dev-20260311081226",
62
+ "@powersync/common": "0.0.0-dev-20260414110516",
63
63
  "react": "*",
64
64
  "react-native": "*"
65
65
  },
66
66
  "dependencies": {
67
- "async-mutex": "^0.5.0",
68
- "@powersync/common": "0.0.0-dev-20260311081226"
67
+ "@powersync/common": "0.0.0-dev-20260414110516"
69
68
  },
70
69
  "devDependencies": {
71
70
  "@op-engineering/op-sqlite": "^15.2.2",