@powersync/op-sqlite 0.0.0-dev-20241014170110 → 0.0.0-dev-20250121082529

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.
Files changed (56) hide show
  1. package/README.md +62 -1
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/com/powersync/opsqlite/PowerSyncOpSqlitePackage.kt +4 -8
  4. package/ios/PowerSyncOpSqlite.mm +0 -5
  5. package/lib/commonjs/db/OPSQLiteConnection.js +47 -21
  6. package/lib/commonjs/db/OPSQLiteConnection.js.map +1 -1
  7. package/lib/commonjs/db/OPSqliteAdapter.js +87 -52
  8. package/lib/commonjs/db/OPSqliteAdapter.js.map +1 -1
  9. package/lib/commonjs/db/SqliteOptions.js +3 -1
  10. package/lib/commonjs/db/SqliteOptions.js.map +1 -1
  11. package/lib/commonjs/index.js +0 -16
  12. package/lib/commonjs/index.js.map +1 -1
  13. package/lib/module/db/OPSQLiteConnection.js +47 -21
  14. package/lib/module/db/OPSQLiteConnection.js.map +1 -1
  15. package/lib/module/db/OPSqliteAdapter.js +89 -54
  16. package/lib/module/db/OPSqliteAdapter.js.map +1 -1
  17. package/lib/module/db/SqliteOptions.js +3 -1
  18. package/lib/module/db/SqliteOptions.js.map +1 -1
  19. package/lib/module/index.js +0 -15
  20. package/lib/module/index.js.map +1 -1
  21. package/lib/typescript/commonjs/src/db/OPSQLiteConnection.d.ts +11 -1
  22. package/lib/typescript/commonjs/src/db/OPSQLiteConnection.d.ts.map +1 -1
  23. package/lib/typescript/commonjs/src/db/OPSqliteAdapter.d.ts +11 -3
  24. package/lib/typescript/commonjs/src/db/OPSqliteAdapter.d.ts.map +1 -1
  25. package/lib/typescript/commonjs/src/db/SqliteOptions.d.ts +13 -0
  26. package/lib/typescript/commonjs/src/db/SqliteOptions.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/src/index.d.ts +0 -1
  28. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  29. package/lib/typescript/commonjs/tsconfig.build.tsbuildinfo +1 -1
  30. package/lib/typescript/module/src/db/OPSQLiteConnection.d.ts +11 -1
  31. package/lib/typescript/module/src/db/OPSQLiteConnection.d.ts.map +1 -1
  32. package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts +11 -3
  33. package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts.map +1 -1
  34. package/lib/typescript/module/src/db/SqliteOptions.d.ts +13 -0
  35. package/lib/typescript/module/src/db/SqliteOptions.d.ts.map +1 -1
  36. package/lib/typescript/module/src/index.d.ts +0 -1
  37. package/lib/typescript/module/src/index.d.ts.map +1 -1
  38. package/lib/typescript/module/tsconfig.build.tsbuildinfo +1 -1
  39. package/package.json +7 -7
  40. package/powersync-op-sqlite.podspec +2 -2
  41. package/src/db/OPSQLiteConnection.ts +73 -24
  42. package/src/db/OPSqliteAdapter.ts +109 -69
  43. package/src/db/SqliteOptions.ts +19 -2
  44. package/src/index.ts +4 -30
  45. package/android/src/main/java/com/powersync/opsqlite/PowerSyncOpSqliteModule.kt +0 -25
  46. package/android/src/newarch/PowerSyncOpSqliteSpec.kt +0 -7
  47. package/android/src/oldarch/PowerSyncOpSqliteSpec.kt +0 -11
  48. package/lib/commonjs/NativePowerSyncOpSqlite.js +0 -9
  49. package/lib/commonjs/NativePowerSyncOpSqlite.js.map +0 -1
  50. package/lib/module/NativePowerSyncOpSqlite.js +0 -5
  51. package/lib/module/NativePowerSyncOpSqlite.js.map +0 -1
  52. package/lib/typescript/commonjs/src/NativePowerSyncOpSqlite.d.ts +0 -7
  53. package/lib/typescript/commonjs/src/NativePowerSyncOpSqlite.d.ts.map +0 -1
  54. package/lib/typescript/module/src/NativePowerSyncOpSqlite.d.ts +0 -7
  55. package/lib/typescript/module/src/NativePowerSyncOpSqlite.d.ts.map +0 -1
  56. package/src/NativePowerSyncOpSqlite.ts +0 -8
@@ -1 +1 @@
1
- {"version":3,"names":["BaseObserver","RowUpdateType","OPSQLiteConnection","constructor","options","DB","baseDB","updateHook","update","iterateListeners","cb","opType","operation","SQLITE_INSERT","SQLITE_DELETE","SQLITE_UPDATE","tablesUpdated","table","rowId","close","execute","query","params","res","insertId","rowsAffected","rows","_array","length","item","index","executeBatch","tuple","slice","forEach","p","push","result","getAll","sql","parameters","getOptional","get","Error"],"sourceRoot":"../../../src","sources":["db/OPSQLiteConnection.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BaseObserver","RowUpdateType","OPSQLiteConnection","constructor","options","DB","baseDB","updateBuffer","rollbackHook","updateHook","update","addTableUpdate","opType","operation","SQLITE_INSERT","SQLITE_DELETE","SQLITE_UPDATE","push","table","rowId","flushUpdates","length","groupedUpdates","reduce","grouping","updateGroup","batchedUpdate","rawUpdates","tables","Object","keys","iterateListeners","l","tablesUpdated","close","execute","query","params","res","insertId","rowsAffected","rows","_array","item","index","executeBatch","tuple","slice","forEach","p","result","getAll","sql","parameters","getOptional","get","Error","refreshSchema"],"sourceRoot":"../../../src","sources":["db/OPSQLiteConnection.ts"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  import { BaseObserver } from '@powersync/common';
4
- import { ANDROID_DATABASE_PATH, IOS_LIBRARY_PATH, open } from '@op-engineering/op-sqlite';
4
+ import { ANDROID_DATABASE_PATH, getDylibPath, IOS_LIBRARY_PATH, open } from '@op-engineering/op-sqlite';
5
5
  import Lock from 'async-lock';
6
6
  import { OPSQLiteConnection } from "./OPSQLiteConnection.js";
7
- import { NativeModules, Platform } from 'react-native';
7
+ import { Platform } from 'react-native';
8
8
 
9
9
  /**
10
10
  * Adapter for React Native Quick SQLite
@@ -16,6 +16,7 @@ var LockType = /*#__PURE__*/function (LockType) {
16
16
  }(LockType || {});
17
17
  const READ_CONNECTIONS = 5;
18
18
  export class OPSQLiteDBAdapter extends BaseObserver {
19
+ readQueue = [];
19
20
  constructor(options) {
20
21
  super();
21
22
  this.options = options;
@@ -30,21 +31,16 @@ export class OPSQLiteDBAdapter extends BaseObserver {
30
31
  lockTimeoutMs,
31
32
  journalMode,
32
33
  journalSizeLimit,
33
- synchronous
34
+ synchronous,
35
+ encryptionKey
34
36
  } = this.options.sqliteOptions;
35
- // const { dbFilename, dbLocation } = this.options;
36
37
  const dbFilename = this.options.name;
37
- //This is needed because an undefined dbLocation will cause the open function to fail
38
- const location = this.getDbLocation(this.options.dbLocation);
39
- const DB = open({
40
- name: dbFilename,
41
- location: location
42
- });
38
+ this.writeConnection = await this.openConnection(dbFilename);
43
39
  const statements = [`PRAGMA busy_timeout = ${lockTimeoutMs}`, `PRAGMA journal_mode = ${journalMode}`, `PRAGMA journal_size_limit = ${journalSizeLimit}`, `PRAGMA synchronous = ${synchronous}`];
44
40
  for (const statement of statements) {
45
41
  for (let tries = 0; tries < 30; tries++) {
46
42
  try {
47
- await DB.execute(statement);
43
+ await this.writeConnection.execute(statement);
48
44
  break;
49
45
  } catch (e) {
50
46
  if (e instanceof Error && e.message.includes('database is locked') && tries < 29) {
@@ -55,33 +51,28 @@ export class OPSQLiteDBAdapter extends BaseObserver {
55
51
  }
56
52
  }
57
53
  }
58
- this.loadExtension(DB);
59
- await DB.execute('SELECT powersync_init()');
60
- this.readConnections = [];
61
- for (let i = 0; i < READ_CONNECTIONS; i++) {
62
- // Workaround to create read-only connections
63
- let dbName = './'.repeat(i + 1) + dbFilename;
64
- const conn = await this.openConnection(location, dbName);
65
- await conn.execute('PRAGMA query_only = true');
66
- this.readConnections.push(conn);
67
- }
68
- this.writeConnection = new OPSQLiteConnection({
69
- baseDB: DB
70
- });
71
54
 
72
55
  // Changes should only occur in the write connection
73
56
  this.writeConnection.registerListener({
74
57
  tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
75
58
  });
59
+ this.readConnections = [];
60
+ for (let i = 0; i < READ_CONNECTIONS; i++) {
61
+ const conn = await this.openConnection(dbFilename);
62
+ await conn.execute('PRAGMA query_only = true');
63
+ this.readConnections.push({
64
+ busy: false,
65
+ connection: conn
66
+ });
67
+ }
76
68
  }
77
- async openConnection(dbLocation, filenameOverride) {
78
- const DB = open({
79
- name: filenameOverride ?? this.options.name,
80
- location: dbLocation
81
- });
69
+ async openConnection(filenameOverride) {
70
+ const dbFilename = filenameOverride ?? this.options.name;
71
+ const DB = this.openDatabase(dbFilename, this.options.sqliteOptions.encryptionKey);
82
72
 
83
- //Load extension for all connections
84
- this.loadExtension(DB);
73
+ //Load extensions for all connections
74
+ this.loadAdditionalExtensions(DB);
75
+ this.loadPowerSyncExtension(DB);
85
76
  await DB.execute('SELECT powersync_init()');
86
77
  return new OPSQLiteConnection({
87
78
  baseDB: DB
@@ -94,10 +85,33 @@ export class OPSQLiteDBAdapter extends BaseObserver {
94
85
  return dbLocation ?? ANDROID_DATABASE_PATH;
95
86
  }
96
87
  }
97
- loadExtension(DB) {
88
+ openDatabase(dbFilename, encryptionKey) {
89
+ //This is needed because an undefined/null dbLocation will cause the open function to fail
90
+ const location = this.getDbLocation(this.options.dbLocation);
91
+ //Simarlily if the encryption key is undefined/null when using SQLCipher it will cause the open function to fail
92
+ if (encryptionKey) {
93
+ return open({
94
+ name: dbFilename,
95
+ location: location,
96
+ encryptionKey: encryptionKey
97
+ });
98
+ } else {
99
+ return open({
100
+ name: dbFilename,
101
+ location: location
102
+ });
103
+ }
104
+ }
105
+ loadAdditionalExtensions(DB) {
106
+ if (this.options.sqliteOptions.extensions.length > 0) {
107
+ for (const extension of this.options.sqliteOptions.extensions) {
108
+ DB.loadExtension(extension.path, extension.entryPoint);
109
+ }
110
+ }
111
+ }
112
+ async loadPowerSyncExtension(DB) {
98
113
  if (Platform.OS === 'ios') {
99
- const bundlePath = NativeModules.PowerSyncOpSqlite.getBundlePath();
100
- const libPath = `${bundlePath}/Frameworks/powersync-sqlite-core.framework/powersync-sqlite-core`;
114
+ const libPath = getDylibPath('co.powersync.sqlitecore', 'powersync-sqlite-core');
101
115
  DB.loadExtension(libPath, 'sqlite3_powersync_init');
102
116
  } else {
103
117
  DB.loadExtension('libpowersync', 'sqlite3_powersync_init');
@@ -106,33 +120,44 @@ export class OPSQLiteDBAdapter extends BaseObserver {
106
120
  close() {
107
121
  this.initialized.then(() => {
108
122
  this.writeConnection.close();
109
- this.readConnections.forEach(c => c.close());
123
+ this.readConnections.forEach(c => c.connection.close());
110
124
  });
111
125
  }
112
126
  async readLock(fn, options) {
113
127
  await this.initialized;
114
- // TODO: Use async queues to handle multiple read connections
115
- const sortedConnections = this.readConnections.map((connection, index) => ({
116
- lockKey: `${LockType.READ}-${index}`,
117
- connection
118
- })).sort((a, b) => {
119
- const aBusy = this.locks.isBusy(a.lockKey);
120
- const bBusy = this.locks.isBusy(b.lockKey);
121
- // Sort by ones which are not busy
122
- return aBusy > bBusy ? 1 : 0;
123
- });
124
128
  return new Promise(async (resolve, reject) => {
125
- try {
126
- await this.locks.acquire(sortedConnections[0].lockKey, async () => {
127
- resolve(await fn(sortedConnections[0].connection));
128
- }, {
129
- timeout: options?.timeoutMs
130
- });
131
- } catch (ex) {
132
- reject(ex);
133
- }
129
+ const execute = async () => {
130
+ // Find an available connection that is not busy
131
+ const availableConnection = this.readConnections.find(conn => !conn.busy);
132
+
133
+ // If we have an available connection, use it
134
+ if (availableConnection) {
135
+ availableConnection.busy = true;
136
+ try {
137
+ resolve(await fn(availableConnection.connection));
138
+ } catch (error) {
139
+ reject(error);
140
+ } finally {
141
+ availableConnection.busy = false;
142
+ // After query execution, process any queued tasks
143
+ this.processQueue();
144
+ }
145
+ } else {
146
+ // If no available connections, add to the queue
147
+ this.readQueue.push(execute);
148
+ }
149
+ };
150
+ execute();
134
151
  });
135
152
  }
153
+ async processQueue() {
154
+ if (this.readQueue.length > 0) {
155
+ const next = this.readQueue.shift();
156
+ if (next) {
157
+ next();
158
+ }
159
+ }
160
+ }
136
161
  async writeLock(fn, options) {
137
162
  await this.initialized;
138
163
  return new Promise(async (resolve, reject) => {
@@ -141,6 +166,9 @@ export class OPSQLiteDBAdapter extends BaseObserver {
141
166
  resolve(await fn(this.writeConnection));
142
167
  }, {
143
168
  timeout: options?.timeoutMs
169
+ }).then(() => {
170
+ // flush updates once a write lock has been released
171
+ this.writeConnection.flushUpdates();
144
172
  });
145
173
  } catch (ex) {
146
174
  reject(ex);
@@ -205,5 +233,12 @@ export class OPSQLiteDBAdapter extends BaseObserver {
205
233
  throw ex;
206
234
  }
207
235
  }
236
+ async refreshSchema() {
237
+ await this.initialized;
238
+ await this.writeConnection.refreshSchema();
239
+ for (let readConnection of this.readConnections) {
240
+ await readConnection.connection.refreshSchema();
241
+ }
242
+ }
208
243
  }
209
244
  //# sourceMappingURL=OPSqliteAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BaseObserver","ANDROID_DATABASE_PATH","IOS_LIBRARY_PATH","open","Lock","OPSQLiteConnection","NativeModules","Platform","LockType","READ_CONNECTIONS","OPSQLiteDBAdapter","constructor","options","name","locks","readConnections","writeConnection","initialized","init","lockTimeoutMs","journalMode","journalSizeLimit","synchronous","sqliteOptions","dbFilename","location","getDbLocation","dbLocation","DB","statements","statement","tries","execute","e","Error","message","includes","loadExtension","i","dbName","repeat","conn","openConnection","push","baseDB","registerListener","tablesUpdated","notification","iterateListeners","cb","filenameOverride","OS","bundlePath","PowerSyncOpSqlite","getBundlePath","libPath","close","then","forEach","c","readLock","fn","sortedConnections","map","connection","index","lockKey","READ","sort","a","b","aBusy","isBusy","bBusy","Promise","resolve","reject","acquire","timeout","timeoutMs","ex","writeLock","WRITE","readTransaction","ctx","internalTransaction","writeTransaction","getAll","sql","parameters","getOptional","get","query","params","executeBatch","finalized","commit","rowsAffected","rollback","result"],"sourceRoot":"../../../src","sources":["db/OPSqliteAdapter.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BaseObserver","ANDROID_DATABASE_PATH","getDylibPath","IOS_LIBRARY_PATH","open","Lock","OPSQLiteConnection","Platform","LockType","READ_CONNECTIONS","OPSQLiteDBAdapter","readQueue","constructor","options","name","locks","readConnections","writeConnection","initialized","init","lockTimeoutMs","journalMode","journalSizeLimit","synchronous","encryptionKey","sqliteOptions","dbFilename","openConnection","statements","statement","tries","execute","e","Error","message","includes","registerListener","tablesUpdated","notification","iterateListeners","cb","i","conn","push","busy","connection","filenameOverride","DB","openDatabase","loadAdditionalExtensions","loadPowerSyncExtension","baseDB","getDbLocation","dbLocation","OS","location","extensions","length","extension","loadExtension","path","entryPoint","libPath","close","then","forEach","c","readLock","fn","Promise","resolve","reject","availableConnection","find","error","processQueue","next","shift","writeLock","acquire","WRITE","timeout","timeoutMs","flushUpdates","ex","readTransaction","ctx","internalTransaction","writeTransaction","getAll","sql","parameters","getOptional","get","query","params","executeBatch","finalized","commit","rowsAffected","rollback","result","refreshSchema","readConnection"],"sourceRoot":"../../../src","sources":["db/OPSqliteAdapter.ts"],"mappings":"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","ignoreList":[]}
@@ -22,6 +22,8 @@ export const DEFAULT_SQLITE_OPTIONS = {
22
22
  journalMode: SqliteJournalMode.wal,
23
23
  synchronous: SqliteSynchronous.normal,
24
24
  journalSizeLimit: 6 * 1024 * 1024,
25
- lockTimeoutMs: 30000
25
+ lockTimeoutMs: 30000,
26
+ encryptionKey: null,
27
+ extensions: []
26
28
  };
27
29
  //# sourceMappingURL=SqliteOptions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SqliteJournalMode","SqliteSynchronous","DEFAULT_SQLITE_OPTIONS","journalMode","wal","synchronous","normal","journalSizeLimit","lockTimeoutMs"],"sourceRoot":"../../../src","sources":["db/SqliteOptions.ts"],"mappings":";;AA2BA;AACA;AACA;AAAA,IACKA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA,EAAjBA,iBAAiB,SAWtB;AAAA,IACKC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA,EAAjBA,iBAAiB;AAMtB,OAAO,MAAMC,sBAA+C,GAAG;EAC7DC,WAAW,EAAEH,iBAAiB,CAACI,GAAG;EAClCC,WAAW,EAAEJ,iBAAiB,CAACK,MAAM;EACrCC,gBAAgB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;EACjCC,aAAa,EAAE;AACjB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["SqliteJournalMode","SqliteSynchronous","DEFAULT_SQLITE_OPTIONS","journalMode","wal","synchronous","normal","journalSizeLimit","lockTimeoutMs","encryptionKey","extensions"],"sourceRoot":"../../../src","sources":["db/SqliteOptions.ts"],"mappings":";;AA0CA;AACA;AACA;AAAA,IACKA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA,EAAjBA,iBAAiB,SAWtB;AAAA,IACKC,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA,EAAjBA,iBAAiB;AAMtB,OAAO,MAAMC,sBAA+C,GAAG;EAC7DC,WAAW,EAAEH,iBAAiB,CAACI,GAAG;EAClCC,WAAW,EAAEJ,iBAAiB,CAACK,MAAM;EACrCC,gBAAgB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;EACjCC,aAAa,EAAE,KAAK;EACpBC,aAAa,EAAE,IAAI;EACnBC,UAAU,EAAE;AACd,CAAC","ignoreList":[]}
@@ -1,19 +1,4 @@
1
1
  "use strict";
2
2
 
3
- import { NativeModules, Platform } from 'react-native';
4
- const LINKING_ERROR = `The package '@powersync/op-sqlite' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
5
- ios: "- You have run 'pod install'\n",
6
- default: ''
7
- }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
8
- const isTurboModuleEnabled = global.__turboModuleProxy != null;
9
- const PowerSyncOpSqliteModule = isTurboModuleEnabled ? require('./NativePowerSyncOpSqlite').default : NativeModules.PowerSyncOpSqlite;
10
- const PowerSyncOpSqlite = PowerSyncOpSqliteModule ? PowerSyncOpSqliteModule : new Proxy({}, {
11
- get() {
12
- throw new Error(LINKING_ERROR);
13
- }
14
- });
15
- export function getBundlePath() {
16
- return PowerSyncOpSqlite.getBundlePath();
17
- }
18
3
  export { OPSqliteOpenFactory, OPSQLiteOpenFactoryOptions } from "./db/OPSqliteDBOpenFactory.js";
19
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","PowerSyncOpSqliteModule","require","PowerSyncOpSqlite","Proxy","get","Error","getBundlePath","OPSqliteOpenFactory","OPSQLiteOpenFactoryOptions"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,MAAMC,aAAa,GACjB,+EAA+E,GAC/ED,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,oBAAoB,GAAGC,MAAM,CAACC,kBAAkB,IAAI,IAAI;AAE9D,MAAMC,uBAAuB,GAAGH,oBAAoB,GAChDI,OAAO,CAAC,2BAA2B,CAAC,CAACL,OAAO,GAC5CL,aAAa,CAACW,iBAAiB;AAEnC,MAAMA,iBAAiB,GAAGF,uBAAuB,GAC7CA,uBAAuB,GACvB,IAAIG,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACZ,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,OAAO,SAASa,aAAaA,CAAA,EAAW;EACtC,OAAOJ,iBAAiB,CAACI,aAAa,CAAC,CAAC;AAC1C;AAEA,SAASC,mBAAmB,EAAEC,0BAA0B,QAAQ,+BAA4B","ignoreList":[]}
1
+ {"version":3,"names":["OPSqliteOpenFactory","OPSQLiteOpenFactoryOptions"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SACEA,mBAAmB,EACnBC,0BAA0B,QACrB,+BAA4B","ignoreList":[]}
@@ -1,17 +1,27 @@
1
- import { DB } from '@op-engineering/op-sqlite';
1
+ import { DB, UpdateHookOperation } from '@op-engineering/op-sqlite';
2
2
  import { BaseObserver, DBAdapterListener, QueryResult } from '@powersync/common';
3
3
  export type OPSQLiteConnectionOptions = {
4
4
  baseDB: DB;
5
5
  };
6
+ export type OPSQLiteUpdateNotification = {
7
+ table: string;
8
+ operation: UpdateHookOperation;
9
+ row?: any;
10
+ rowId: number;
11
+ };
6
12
  export declare class OPSQLiteConnection extends BaseObserver<DBAdapterListener> {
7
13
  protected options: OPSQLiteConnectionOptions;
8
14
  protected DB: DB;
15
+ private updateBuffer;
9
16
  constructor(options: OPSQLiteConnectionOptions);
17
+ addTableUpdate(update: OPSQLiteUpdateNotification): void;
18
+ flushUpdates(): void;
10
19
  close(): void;
11
20
  execute(query: string, params?: any[]): Promise<QueryResult>;
12
21
  executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
13
22
  getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
14
23
  getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
15
24
  get<T>(sql: string, parameters?: any[]): Promise<T>;
25
+ refreshSchema(): Promise<void>;
16
26
  }
17
27
  //# 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,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAiB,MAAM,mBAAmB,CAAC;AAEhG,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,EAAE,CAAC;CACZ,CAAC;AAEF,qBAAa,kBAAmB,SAAQ,YAAY,CAAC,iBAAiB,CAAC;IAEzD,SAAS,CAAC,OAAO,EAAE,yBAAyB;IADxD,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;gBACK,OAAO,EAAE,yBAAyB;IA4BxD,KAAK;IAIC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAa5D,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;CAO1D"}
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,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"}
@@ -15,15 +15,22 @@ export declare class OPSQLiteDBAdapter extends BaseObserver<DBAdapterListener> i
15
15
  name: string;
16
16
  protected locks: Lock;
17
17
  protected initialized: Promise<void>;
18
- protected readConnections: OPSQLiteConnection[] | null;
18
+ protected readConnections: Array<{
19
+ busy: boolean;
20
+ connection: OPSQLiteConnection;
21
+ }> | null;
19
22
  protected writeConnection: OPSQLiteConnection | null;
23
+ private readQueue;
20
24
  constructor(options: OPSQLiteAdapterOptions);
21
25
  protected init(): Promise<void>;
22
- protected openConnection(dbLocation: string, filenameOverride?: string): Promise<OPSQLiteConnection>;
26
+ protected openConnection(filenameOverride?: string): Promise<OPSQLiteConnection>;
23
27
  private getDbLocation;
24
- private loadExtension;
28
+ private openDatabase;
29
+ private loadAdditionalExtensions;
30
+ private loadPowerSyncExtension;
25
31
  close(): void;
26
32
  readLock<T>(fn: (tx: OPSQLiteConnection) => Promise<T>, options?: DBLockOptions): Promise<T>;
33
+ private processQueue;
27
34
  writeLock<T>(fn: (tx: OPSQLiteConnection) => Promise<T>, options?: DBLockOptions): Promise<T>;
28
35
  readTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
29
36
  writeTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
@@ -33,5 +40,6 @@ export declare class OPSQLiteDBAdapter extends BaseObserver<DBAdapterListener> i
33
40
  execute(query: string, params?: any[]): Promise<QueryResult>;
34
41
  executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
35
42
  protected internalTransaction<T>(connection: OPSQLiteConnection, fn: (tx: Transaction) => Promise<T>): Promise<T>;
43
+ refreshSchema(): Promise<void>;
36
44
  }
37
45
  //# sourceMappingURL=OPSqliteAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OPSqliteAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/db/OPSqliteAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,WAAW,EAEX,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAA0B,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAExE;;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;AASF,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,iBAAiB,CAAE,YAAW,SAAS;IAU7E,SAAS,CAAC,OAAO,EAAE,sBAAsB;IATrD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;IAEtB,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,SAAS,CAAC,eAAe,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IAEvD,SAAS,CAAC,eAAe,EAAE,kBAAkB,GAAG,IAAI,CAAC;gBAE/B,OAAO,EAAE,sBAAsB;cAUrC,IAAI;cAwDJ,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgB1G,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,aAAa;IAUrB,KAAK;IAOC,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;IA4B5F,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;IAkBnG,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5F,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7F,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAIxD,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAIlE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAInD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE;IAI/B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAE,EAAO,GAAG,OAAO,CAAC,WAAW,CAAC;cAI7D,mBAAmB,CAAC,CAAC,EACnC,UAAU,EAAE,kBAAkB,EAC9B,EAAE,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC;CAiCd"}
1
+ {"version":3,"file":"OPSqliteAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/db/OPSqliteAdapter.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,19 @@ export interface SqliteOptions {
20
20
  * Set to null or zero to fail immediately when the database is locked.
21
21
  */
22
22
  lockTimeoutMs?: number;
23
+ /**
24
+ * Encryption key for the database.
25
+ * If set, the database will be encrypted using SQLCipher.
26
+ */
27
+ encryptionKey?: string;
28
+ /**
29
+ * Load extensions using the path and entryPoint.
30
+ * More info can be found here https://op-engineering.github.io/op-sqlite/docs/api#loading-extensions.
31
+ */
32
+ extensions?: Array<{
33
+ path: string;
34
+ entryPoint?: string;
35
+ }>;
23
36
  }
24
37
  declare enum SqliteJournalMode {
25
38
  wal = "WAL",
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteOptions.d.ts","sourceRoot":"","sources":["../../../../../src/db/SqliteOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAKD,aAAK,iBAAiB;IAGpB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAGD,aAAK,iBAAiB;IACpB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ;AAED,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,aAAa,CAK1D,CAAC"}
1
+ {"version":3,"file":"SqliteOptions.d.ts","sourceRoot":"","sources":["../../../../../src/db/SqliteOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAKD,aAAK,iBAAiB;IAGpB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAGD,aAAK,iBAAiB;IACpB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ;AAED,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,aAAa,CAO1D,CAAC"}
@@ -1,3 +1,2 @@
1
- export declare function getBundlePath(): string;
2
1
  export { OPSqliteOpenFactory, OPSQLiteOpenFactoryOptions } from './db/OPSqliteDBOpenFactory';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAyBA,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,4BAA4B,CAAC"}