@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.
- package/lib/commonjs/db/OPSQLiteConnection.js +4 -17
- package/lib/commonjs/db/OPSQLiteConnection.js.map +1 -1
- package/lib/commonjs/db/OPSqliteAdapter.js +89 -137
- package/lib/commonjs/db/OPSqliteAdapter.js.map +1 -1
- package/lib/module/db/OPSQLiteConnection.js +5 -18
- package/lib/module/db/OPSQLiteConnection.js.map +1 -1
- package/lib/module/db/OPSqliteAdapter.js +90 -138
- package/lib/module/db/OPSqliteAdapter.js.map +1 -1
- package/lib/typescript/commonjs/src/db/OPSQLiteConnection.d.ts +11 -3
- package/lib/typescript/commonjs/src/db/OPSQLiteConnection.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/db/OPSqliteAdapter.d.ts +18 -13
- package/lib/typescript/commonjs/src/db/OPSqliteAdapter.d.ts.map +1 -1
- package/lib/typescript/module/src/db/OPSQLiteConnection.d.ts +11 -3
- package/lib/typescript/module/src/db/OPSQLiteConnection.d.ts.map +1 -1
- package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts +18 -13
- package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts.map +1 -1
- package/package.json +3 -4
- package/src/db/OPSQLiteConnection.ts +7 -20
- package/src/db/OPSqliteAdapter.ts +75 -150
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { getDylibPath, open } from '@op-engineering/op-sqlite';
|
|
4
|
-
import { BaseObserver,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
53
|
+
underlyingWriteConnection.registerListener({
|
|
57
54
|
tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
|
|
58
55
|
});
|
|
59
|
-
|
|
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
|
-
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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
|
-
|
|
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
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
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
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
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.
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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","
|
|
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":";;AAAA,SAASA,YAAY,EAAEC,IAAI,QAAiB,2BAA2B;AACvE,SACEC,YAAY,EAGZC,qBAAqB,EAKrBC,aAAa,EACbC,SAAS,QACJ,mBAAmB;AAC1B,SAASC,QAAQ,QAAQ,cAAc;AACvC,SAASC,kBAAkB,QAAQ,yBAAsB;;AAGzD;AACA;AACA;;AAOA,MAAMC,gBAAgB,GAAG,CAAC;AAE1B,MAAMC,sBAAsB,SAASP,YAAY,CAA8C;EAU7FQ,WAAWA,CAAWC,OAA+B,EAAE;IACrD,KAAK,CAAC,CAAC;IAAC,KADYA,OAA+B,GAA/BA,OAA+B;IAEnD,IAAI,CAACC,IAAI,GAAG,IAAI,CAACD,OAAO,CAACC,IAAI;IAE7B,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,eAAe,GAAG,IAAIC,eAAe,CAAC,CAAC;IAC5C,IAAI,CAACC,WAAW,GAAG,IAAI,CAACC,IAAI,CAAC,CAAC;EAChC;EAEA,MAAgBA,IAAIA,CAAA,EAAG;IACrB,MAAM;MAAEC,aAAa;MAAEC,WAAW;MAAEC,gBAAgB;MAAEC,WAAW;MAAEC,WAAW;MAAEC;IAAiB,CAAC,GAChG,IAAI,CAACb,OAAO,CAACc,aAAc;IAC7B,MAAMC,UAAU,GAAG,IAAI,CAACf,OAAO,CAACC,IAAI;IAEpC,MAAMe,yBAAyB,GAAG,MAAM,IAAI,CAACC,cAAc,CAACF,UAAU,CAAC;IAEvE,MAAMG,cAAc,GAAG,CACrB,yBAAyBV,aAAa,EAAE,EACxC,wBAAwBI,WAAW,EAAE,EACrC,uBAAuBC,gBAAgB,EAAE,CAC1C;IAED,MAAMM,yBAAyB,GAAG,CAChC,GAAGD,cAAc,EACjB,yBAAyBT,WAAW,EAAE,EACtC,+BAA+BC,gBAAgB,EAAE,EACjD,wBAAwBC,WAAW,EAAE,CACtC;IAED,MAAMS,wBAAwB,GAAG,CAAC,GAAGF,cAAc,EAAE,0BAA0B,CAAC;IAEhF,KAAK,MAAMG,SAAS,IAAIF,yBAAyB,EAAE;MACjD,KAAK,IAAIG,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,EAAE,EAAEA,KAAK,EAAE,EAAE;QACvC,IAAI;UACF,MAAMN,yBAAyB,CAACO,OAAO,CAACF,SAAS,CAAC;UAClD;QACF,CAAC,CAAC,OAAOG,CAAM,EAAE;UACf,IAAIA,CAAC,YAAYC,KAAK,IAAID,CAAC,CAACE,OAAO,CAACC,QAAQ,CAAC,oBAAoB,CAAC,IAAIL,KAAK,GAAG,EAAE,EAAE;YAChF;UACF,CAAC,MAAM;YACL,MAAME,CAAC;UACT;QACF;MACF;IACF;;IAEA;IACAR,yBAAyB,CAACY,gBAAgB,CAAC;MACzCC,aAAa,EAAGC,YAAY,IAAK,IAAI,CAACC,gBAAgB,CAAEC,EAAE,IAAKA,EAAE,CAACH,aAAa,GAAGC,YAAY,CAAC;IACjG,CAAC,CAAC;IAEF,MAAMG,yBAAyB,GAAG,EAAE;IACpC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGrC,gBAAgB,EAAEqC,CAAC,EAAE,EAAE;MACzC,MAAMC,IAAI,GAAG,MAAM,IAAI,CAAClB,cAAc,CAACF,UAAU,CAAC;MAClD,KAAK,IAAIM,SAAS,IAAID,wBAAwB,EAAE;QAC9C,MAAMe,IAAI,CAACZ,OAAO,CAACF,SAAS,CAAC;MAC/B;MACAY,yBAAyB,CAACG,IAAI,CAACD,IAAI,CAAC;IACtC;IAEA,IAAI,CAAChC,eAAe,GAAG,IAAIT,SAAS,CAAC,CAACsB,yBAAyB,CAAC,CAAC;IACjE,IAAI,CAACd,eAAe,GAAG,IAAIR,SAAS,CAACuC,yBAAyB,CAAC;EACjE;EAEA,MAAgBhB,cAAcA,CAACoB,gBAAyB,EAA+B;IACrF,MAAMtB,UAAU,GAAGsB,gBAAgB,IAAI,IAAI,CAACrC,OAAO,CAACC,IAAI;IACxD,MAAMqC,EAAM,GAAG,IAAI,CAACC,YAAY,CAACxB,UAAU,EAAE,IAAI,CAACf,OAAO,CAACc,aAAa,EAAE0B,aAAa,IAAIC,SAAS,CAAC;;IAEpG;IACA,IAAI,CAACC,wBAAwB,CAACJ,EAAE,CAAC;IACjC,IAAI,CAACK,sBAAsB,CAACL,EAAE,CAAC;IAE/B,MAAMA,EAAE,CAACf,OAAO,CAAC,yBAAyB,CAAC;IAE3C,OAAO,IAAI3B,kBAAkB,CAAC;MAC5BgD,MAAM,EAAEN;IACV,CAAC,CAAC;EACJ;EAEQC,YAAYA,CAACxB,UAAkB,EAAEyB,aAAsB,EAAM;IACnE,MAAMK,WAAuC,GAAG;MAC9C5C,IAAI,EAAEc;IACR,CAAC;IAED,IAAI,IAAI,CAACf,OAAO,CAAC8C,UAAU,EAAE;MAC3BD,WAAW,CAACE,QAAQ,GAAG,IAAI,CAAC/C,OAAO,CAAC8C,UAAU;IAChD;;IAEA;IACA,IAAIN,aAAa,EAAE;MACjBK,WAAW,CAACL,aAAa,GAAGA,aAAa;IAC3C;IAEA,OAAOlD,IAAI,CAACuD,WAAW,CAAC;EAC1B;EAEQH,wBAAwBA,CAACJ,EAAM,EAAE;IACvC,IAAI,IAAI,CAACtC,OAAO,CAACc,aAAa,EAAEkC,UAAU,IAAI,IAAI,CAAChD,OAAO,CAACc,aAAa,CAACkC,UAAU,CAACC,MAAM,GAAG,CAAC,EAAE;MAC9F,KAAK,MAAMC,SAAS,IAAI,IAAI,CAAClD,OAAO,CAACc,aAAa,CAACkC,UAAU,EAAE;QAC7DV,EAAE,CAACa,aAAa,CAACD,SAAS,CAACE,IAAI,EAAEF,SAAS,CAACG,UAAU,CAAC;MACxD;IACF;EACF;EAEA,MAAcV,sBAAsBA,CAACL,EAAM,EAAE;IAC3C,IAAI3C,QAAQ,CAAC2D,EAAE,KAAK,KAAK,EAAE;MACzB,MAAMC,OAAO,GAAGlE,YAAY,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;MAChFiD,EAAE,CAACa,aAAa,CAACI,OAAO,EAAE,wBAAwB,CAAC;IACrD,CAAC,MAAM;MACLjB,EAAE,CAACa,aAAa,CAAC,cAAc,EAAE,wBAAwB,CAAC;IAC5D;EACF;EAEA,MAAMK,KAAKA,CAAA,EAAG;IACZ,MAAM,IAAI,CAAClD,WAAW;IACtB;IACA,IAAI,CAACF,eAAe,CAACqD,KAAK,CAAC,CAAC;IAE5B,MAAM;MAAEC,IAAI,EAAEvD,eAAe;MAAEwD,OAAO,EAAEC;IAAY,CAAC,GAAG,MAAM,IAAI,CAACzD,eAAe,CAAE0D,UAAU,CAAC,CAAC;IAChG,MAAM;MAAEC,KAAK,EAAEC,OAAO;MAAEJ,OAAO,EAAEK;IAAc,CAAC,GAAG,MAAM,IAAI,CAAC9D,eAAe,CAAE+D,UAAU,CAAC,CAAC;IAE3F,IAAI;MACF9D,eAAe,CAACqD,KAAK,CAAC,CAAC;MACvBO,OAAO,CAACG,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAACX,KAAK,CAAC,CAAC,CAAC;IACnC,CAAC,SAAS;MACRI,WAAW,CAAC,CAAC;MACbI,aAAa,CAAC,CAAC;IACjB;EACF;EAEQI,yBAAyBA,CAACpE,OAAuB,EAAE;IACzD,MAAMqE,WAAW,GAAG,IAAI,CAACjE,eAAe,CAACkE,MAAM;IAC/C,IAAIA,MAAmB;IACvB,IAAIC,kBAA4C;IAEhD,IAAIvE,OAAO,EAAEwE,SAAS,IAAI,CAACH,WAAW,CAACI,OAAO,EAAE;MAC9C;MACA,MAAMC,eAAe,GAAG,IAAIrE,eAAe,CAAC,CAAC;MAC7CkE,kBAAkB,GAAGA,CAAA,KAAM;QACzBG,eAAe,CAACjB,KAAK,CAAC,CAAC;QACvBY,WAAW,CAACM,mBAAmB,CAAC,OAAO,EAAEJ,kBAAmB,CAAC;QAC7DK,OAAO,CAACD,mBAAmB,CAAC,OAAO,EAAEJ,kBAAmB,CAAC;MAC3D,CAAC;MAEDF,WAAW,CAACQ,gBAAgB,CAAC,OAAO,EAAEN,kBAAkB,CAAC;MACzD,MAAMK,OAAO,GAAGnF,aAAa,CAACO,OAAO,CAACwE,SAAS,CAAC;MAChDI,OAAO,CAACC,gBAAgB,CAAC,OAAO,EAAEN,kBAAkB,CAAC;MAErDD,MAAM,GAAGI,eAAe,CAACJ,MAAM;IACjC,CAAC,MAAM;MACLA,MAAM,GAAGD,WAAW;IACtB;IAEA,OAAO;MAAEC,MAAM;MAAEC;IAAmB,CAAC;EACvC;EAEA,MAAMO,QAAQA,CAAIC,EAA0C,EAAE/E,OAAuB,EAAc;IACjG,MAAM,IAAI,CAACM,WAAW;IAEtB,MAAM;MAAEgE,MAAM;MAAEC;IAAmB,CAAC,GAAG,IAAI,CAACH,yBAAyB,CAACpE,OAAO,CAAC;IAC9E,MAAM;MAAE0D,IAAI;MAAEC;IAAQ,CAAC,GAAG,MAAM,IAAI,CAACzD,eAAe,CAAE2D,UAAU,CAACS,MAAM,CAAC;IACxE,IAAI;MACF,OAAO,MAAMS,EAAE,CAACrB,IAAI,CAAC;IACvB,CAAC,SAAS;MACRC,OAAO,CAAC,CAAC;MACTY,kBAAkB,GAAG,CAAC;IACxB;EACF;EAEA,MAAMS,SAASA,CAAID,EAA0C,EAAE/E,OAAuB,EAAc;IAClG,MAAM,IAAI,CAACM,WAAW;IAEtB,MAAM;MAAEgE,MAAM;MAAEC;IAAmB,CAAC,GAAG,IAAI,CAACH,yBAAyB,CAACpE,OAAO,CAAC;IAC9E,MAAM;MAAE0D,IAAI;MAAEC;IAAQ,CAAC,GAAG,MAAM,IAAI,CAACxD,eAAe,CAAE0D,UAAU,CAACS,MAAM,CAAC;IACxE,IAAI;MACF,OAAO,MAAMS,EAAE,CAACrB,IAAI,CAAC,CAACuB,OAAO,CAAC,MAAMvB,IAAI,CAACwB,YAAY,CAAC,CAAC,CAAC;IAC1D,CAAC,SAAS;MACRvB,OAAO,CAAC,CAAC;MACTY,kBAAkB,GAAG,CAAC;IACxB;EACF;EAEA,MAAMY,aAAaA,CAAA,EAAkB;IACnC,MAAM,IAAI,CAAC7E,WAAW;IACtB,MAAM,IAAI,CAAC0E,SAAS,CAAEI,CAAC,IAAKA,CAAC,CAACD,aAAa,CAAC,CAAC,CAAC;IAC9C,MAAM;MAAErB,KAAK;MAAEH;IAAQ,CAAC,GAAG,MAAM,IAAI,CAACzD,eAAe,CAAE+D,UAAU,CAAC,CAAC;IACnE,IAAI;MACF,KAAK,IAAIoB,cAAc,IAAIvB,KAAK,EAAE;QAChC,MAAMuB,cAAc,CAACF,aAAa,CAAC,CAAC;MACtC;IACF,CAAC,SAAS;MACRxB,OAAO,CAAC,CAAC;IACX;EACF;AACF;AAEA,OAAO,MAAM2B,iBAAiB,SAAS9F,qBAAqB,CAACM,sBAAsB,CAAC,CAAsB;EACxG,MAAMyF,YAAYA,CAACC,KAAa,EAAEC,MAAe,GAAG,EAAE,EAAwB;IAC5E,OAAO,MAAM,IAAI,CAACT,SAAS,CAAC,MAAOU,EAAE,IAAK;MACxC,OAAO,MAAOA,EAAE,CAAwBC,kBAAkB,CAACH,KAAK,EAAEC,MAAM,CAAC;IAC3E,CAAC,CAAC;EACJ;AACF","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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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:
|
|
19
|
-
|
|
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
|
-
|
|
44
|
-
|
|
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":"AACA,OAAO,EACL,YAAY,EACZ,SAAS,
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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:
|
|
19
|
-
|
|
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
|
-
|
|
44
|
-
|
|
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":"AACA,OAAO,EACL,YAAY,EACZ,SAAS,
|
|
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-
|
|
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-
|
|
62
|
+
"@powersync/common": "0.0.0-dev-20260414110516",
|
|
63
63
|
"react": "*",
|
|
64
64
|
"react-native": "*"
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"
|
|
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",
|