@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
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- This package (`packages/powersync-op-sqlite`) enables using [OP-SQLite](https://github.com/op-engineering/op-sqlite) with PowerSync alongside the [React Native SDK](https://docs.powersync.com/client-sdk-references/react-native-and-expo).
5
+ This package (`packages/powersync-op-sqlite`) enables using [OP-SQLite](https://github.com/op-engineering/op-sqlite) with PowerSync alongside the [React Native SDK](https://docs.powersync.com/client-sdk-references/react-native-and-expo).
6
6
 
7
7
  If you are not yet familiar with PowerSync, please see the [PowerSync React Native SDK README](https://github.com/powersync-ja/powersync-js/tree/main/packages/react-native) for more information.
8
8
 
@@ -43,6 +43,67 @@ const factory = new OPSqliteOpenFactory({
43
43
  this.powersync = new PowerSyncDatabase({ database: factory, schema: AppSchema });
44
44
  ```
45
45
 
46
+ ### Encryption with SQLCipher
47
+
48
+ To enable SQLCipher you need to add the following configuration option to your application's `package.json`
49
+
50
+ ```json
51
+ {
52
+ // your normal package.json
53
+ // ...
54
+ "op-sqlite": {
55
+ "sqlcipher": true
56
+ }
57
+ }
58
+ ```
59
+
60
+ Additionally you will need to add an [encryption key](https://www.zetetic.net/sqlcipher/sqlcipher-api/#key) to the OPSQLite factory constructor
61
+
62
+ ```typescript
63
+ const factory = new OPSqliteOpenFactory({
64
+ dbFilename: 'sqlite.db',
65
+ sqliteOptions: {
66
+ encryptionKey: 'your-encryption-key'
67
+ }
68
+ });
69
+ ```
70
+
71
+ ### Loading SQLite extensions
72
+
73
+ To load additional SQLite extensions include the `extensions` option in `sqliteOptions` which expects an array of objects with a `path` and an `entryPoint`:
74
+
75
+ ```js
76
+ sqliteOptions: {
77
+ extensions: [
78
+ { path: libPath, entryPoint: 'sqlite3_powersync_init' }
79
+ ]
80
+ }
81
+ ```
82
+
83
+ More info can be found in the [OP-SQLite docs](https://op-engineering.github.io/op-sqlite/docs/api/#loading-extensions).
84
+
85
+ Example usage:
86
+
87
+ ```ts
88
+ import { getDylibPath } from '@op-engineering/op-sqlite';
89
+
90
+ let libPath: string
91
+ if (Platform.OS === 'ios') {
92
+ libPath = getDylibPath('co.powersync.sqlitecore', 'powersync-sqlite-core')
93
+ } else {
94
+ libPath = 'libpowersync';
95
+ }
96
+
97
+ const factory = new OPSqliteOpenFactory({
98
+ dbFilename: 'sqlite.db',
99
+ sqliteOptions: {
100
+ extensions: [
101
+ { path: libPath, entryPoint: 'sqlite3_powersync_init' }
102
+ ]
103
+ }
104
+ });
105
+ ```
106
+
46
107
  ## Native Projects
47
108
 
48
109
  This package uses native libraries. Create native Android and iOS projects (if not created already) by running:
@@ -107,7 +107,7 @@ repositories {
107
107
  def kotlin_version = getExtOrDefault("kotlinVersion")
108
108
 
109
109
  dependencies {
110
- implementation 'co.powersync:powersync-sqlite-core:0.3.0'
110
+ implementation 'co.powersync:powersync-sqlite-core:0.3.8'
111
111
  // For < 0.71, this will be from the local maven repo
112
112
  // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
113
113
  //noinspection GradleDynamicVersion
@@ -9,20 +9,16 @@ import java.util.HashMap
9
9
 
10
10
  class PowerSyncOpSqlitePackage : TurboReactPackage() {
11
11
  override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
12
- return if (name == PowerSyncOpSqliteModule.NAME) {
13
- PowerSyncOpSqliteModule(reactContext)
14
- } else {
15
- null
16
- }
12
+ return null
17
13
  }
18
14
 
19
15
  override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
20
16
  return ReactModuleInfoProvider {
21
17
  val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
22
18
  val isTurboModule: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
23
- moduleInfos[PowerSyncOpSqliteModule.NAME] = ReactModuleInfo(
24
- PowerSyncOpSqliteModule.NAME,
25
- PowerSyncOpSqliteModule.NAME,
19
+ moduleInfos["PowerSyncOpSqlite"] = ReactModuleInfo(
20
+ "PowerSyncOpSqlite",
21
+ "PowerSyncOpSqlite",
26
22
  false, // canOverrideExistingModule
27
23
  false, // needsEagerInit
28
24
  true, // hasConstants
@@ -3,9 +3,4 @@
3
3
  @implementation PowerSyncOpSqlite
4
4
  RCT_EXPORT_MODULE()
5
5
 
6
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getBundlePath)
7
- {
8
- return [NSBundle mainBundle].bundlePath;
9
- }
10
-
11
6
  @end
@@ -10,30 +10,53 @@ class OPSQLiteConnection extends _common.BaseObserver {
10
10
  super();
11
11
  this.options = options;
12
12
  this.DB = options.baseDB;
13
-
14
- // link table update commands
13
+ this.updateBuffer = [];
14
+ this.DB.rollbackHook(() => {
15
+ this.updateBuffer = [];
16
+ });
15
17
  this.DB.updateHook(update => {
16
- this.iterateListeners(cb => {
17
- let opType;
18
- switch (update.operation) {
19
- case 'INSERT':
20
- opType = _common.RowUpdateType.SQLITE_INSERT;
21
- break;
22
- case 'DELETE':
23
- opType = _common.RowUpdateType.SQLITE_DELETE;
24
- break;
25
- case 'UPDATE':
26
- opType = _common.RowUpdateType.SQLITE_UPDATE;
27
- break;
28
- }
29
- cb.tablesUpdated?.({
30
- table: update.table,
31
- opType,
32
- rowId: update.rowId
33
- });
34
- });
18
+ this.addTableUpdate(update);
19
+ });
20
+ }
21
+ addTableUpdate(update) {
22
+ let opType;
23
+ switch (update.operation) {
24
+ case 'INSERT':
25
+ opType = _common.RowUpdateType.SQLITE_INSERT;
26
+ break;
27
+ case 'DELETE':
28
+ opType = _common.RowUpdateType.SQLITE_DELETE;
29
+ break;
30
+ case 'UPDATE':
31
+ opType = _common.RowUpdateType.SQLITE_UPDATE;
32
+ break;
33
+ }
34
+ this.updateBuffer.push({
35
+ table: update.table,
36
+ opType,
37
+ rowId: update.rowId
35
38
  });
36
39
  }
40
+ flushUpdates() {
41
+ if (!this.updateBuffer.length) {
42
+ return;
43
+ }
44
+ const groupedUpdates = this.updateBuffer.reduce((grouping, update) => {
45
+ const {
46
+ table
47
+ } = update;
48
+ const updateGroup = grouping[table] || (grouping[table] = []);
49
+ updateGroup.push(update);
50
+ return grouping;
51
+ }, {});
52
+ const batchedUpdate = {
53
+ groupedUpdates,
54
+ rawUpdates: this.updateBuffer,
55
+ tables: Object.keys(groupedUpdates)
56
+ };
57
+ this.updateBuffer = [];
58
+ this.iterateListeners(l => l.tablesUpdated?.(batchedUpdate));
59
+ }
37
60
  close() {
38
61
  return this.DB.close();
39
62
  }
@@ -72,6 +95,9 @@ class OPSQLiteConnection extends _common.BaseObserver {
72
95
  }
73
96
  return result;
74
97
  }
98
+ async refreshSchema() {
99
+ await this.get("PRAGMA table_info('sqlite_master')");
100
+ }
75
101
  }
76
102
  exports.OPSQLiteConnection = OPSQLiteConnection;
77
103
  //# sourceMappingURL=OPSQLiteConnection.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_common","require","OPSQLiteConnection","BaseObserver","constructor","options","DB","baseDB","updateHook","update","iterateListeners","cb","opType","operation","RowUpdateType","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","exports"],"sourceRoot":"../../../src","sources":["db/OPSQLiteConnection.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_common","require","OPSQLiteConnection","BaseObserver","constructor","options","DB","baseDB","updateBuffer","rollbackHook","updateHook","update","addTableUpdate","opType","operation","RowUpdateType","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","exports"],"sourceRoot":"../../../src","sources":["db/OPSQLiteConnection.ts"],"mappings":"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","ignoreList":[]}
@@ -20,6 +20,7 @@ var LockType = /*#__PURE__*/function (LockType) {
20
20
  }(LockType || {});
21
21
  const READ_CONNECTIONS = 5;
22
22
  class OPSQLiteDBAdapter extends _common.BaseObserver {
23
+ readQueue = [];
23
24
  constructor(options) {
24
25
  super();
25
26
  this.options = options;
@@ -34,21 +35,16 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
34
35
  lockTimeoutMs,
35
36
  journalMode,
36
37
  journalSizeLimit,
37
- synchronous
38
+ synchronous,
39
+ encryptionKey
38
40
  } = this.options.sqliteOptions;
39
- // const { dbFilename, dbLocation } = this.options;
40
41
  const dbFilename = this.options.name;
41
- //This is needed because an undefined dbLocation will cause the open function to fail
42
- const location = this.getDbLocation(this.options.dbLocation);
43
- const DB = (0, _opSqlite.open)({
44
- name: dbFilename,
45
- location: location
46
- });
42
+ this.writeConnection = await this.openConnection(dbFilename);
47
43
  const statements = [`PRAGMA busy_timeout = ${lockTimeoutMs}`, `PRAGMA journal_mode = ${journalMode}`, `PRAGMA journal_size_limit = ${journalSizeLimit}`, `PRAGMA synchronous = ${synchronous}`];
48
44
  for (const statement of statements) {
49
45
  for (let tries = 0; tries < 30; tries++) {
50
46
  try {
51
- await DB.execute(statement);
47
+ await this.writeConnection.execute(statement);
52
48
  break;
53
49
  } catch (e) {
54
50
  if (e instanceof Error && e.message.includes('database is locked') && tries < 29) {
@@ -59,33 +55,28 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
59
55
  }
60
56
  }
61
57
  }
62
- this.loadExtension(DB);
63
- await DB.execute('SELECT powersync_init()');
64
- this.readConnections = [];
65
- for (let i = 0; i < READ_CONNECTIONS; i++) {
66
- // Workaround to create read-only connections
67
- let dbName = './'.repeat(i + 1) + dbFilename;
68
- const conn = await this.openConnection(location, dbName);
69
- await conn.execute('PRAGMA query_only = true');
70
- this.readConnections.push(conn);
71
- }
72
- this.writeConnection = new _OPSQLiteConnection.OPSQLiteConnection({
73
- baseDB: DB
74
- });
75
58
 
76
59
  // Changes should only occur in the write connection
77
60
  this.writeConnection.registerListener({
78
61
  tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
79
62
  });
63
+ this.readConnections = [];
64
+ for (let i = 0; i < READ_CONNECTIONS; i++) {
65
+ const conn = await this.openConnection(dbFilename);
66
+ await conn.execute('PRAGMA query_only = true');
67
+ this.readConnections.push({
68
+ busy: false,
69
+ connection: conn
70
+ });
71
+ }
80
72
  }
81
- async openConnection(dbLocation, filenameOverride) {
82
- const DB = (0, _opSqlite.open)({
83
- name: filenameOverride ?? this.options.name,
84
- location: dbLocation
85
- });
73
+ async openConnection(filenameOverride) {
74
+ const dbFilename = filenameOverride ?? this.options.name;
75
+ const DB = this.openDatabase(dbFilename, this.options.sqliteOptions.encryptionKey);
86
76
 
87
- //Load extension for all connections
88
- this.loadExtension(DB);
77
+ //Load extensions for all connections
78
+ this.loadAdditionalExtensions(DB);
79
+ this.loadPowerSyncExtension(DB);
89
80
  await DB.execute('SELECT powersync_init()');
90
81
  return new _OPSQLiteConnection.OPSQLiteConnection({
91
82
  baseDB: DB
@@ -98,10 +89,33 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
98
89
  return dbLocation ?? _opSqlite.ANDROID_DATABASE_PATH;
99
90
  }
100
91
  }
101
- loadExtension(DB) {
92
+ openDatabase(dbFilename, encryptionKey) {
93
+ //This is needed because an undefined/null dbLocation will cause the open function to fail
94
+ const location = this.getDbLocation(this.options.dbLocation);
95
+ //Simarlily if the encryption key is undefined/null when using SQLCipher it will cause the open function to fail
96
+ if (encryptionKey) {
97
+ return (0, _opSqlite.open)({
98
+ name: dbFilename,
99
+ location: location,
100
+ encryptionKey: encryptionKey
101
+ });
102
+ } else {
103
+ return (0, _opSqlite.open)({
104
+ name: dbFilename,
105
+ location: location
106
+ });
107
+ }
108
+ }
109
+ loadAdditionalExtensions(DB) {
110
+ if (this.options.sqliteOptions.extensions.length > 0) {
111
+ for (const extension of this.options.sqliteOptions.extensions) {
112
+ DB.loadExtension(extension.path, extension.entryPoint);
113
+ }
114
+ }
115
+ }
116
+ async loadPowerSyncExtension(DB) {
102
117
  if (_reactNative.Platform.OS === 'ios') {
103
- const bundlePath = _reactNative.NativeModules.PowerSyncOpSqlite.getBundlePath();
104
- const libPath = `${bundlePath}/Frameworks/powersync-sqlite-core.framework/powersync-sqlite-core`;
118
+ const libPath = (0, _opSqlite.getDylibPath)('co.powersync.sqlitecore', 'powersync-sqlite-core');
105
119
  DB.loadExtension(libPath, 'sqlite3_powersync_init');
106
120
  } else {
107
121
  DB.loadExtension('libpowersync', 'sqlite3_powersync_init');
@@ -110,33 +124,44 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
110
124
  close() {
111
125
  this.initialized.then(() => {
112
126
  this.writeConnection.close();
113
- this.readConnections.forEach(c => c.close());
127
+ this.readConnections.forEach(c => c.connection.close());
114
128
  });
115
129
  }
116
130
  async readLock(fn, options) {
117
131
  await this.initialized;
118
- // TODO: Use async queues to handle multiple read connections
119
- const sortedConnections = this.readConnections.map((connection, index) => ({
120
- lockKey: `${LockType.READ}-${index}`,
121
- connection
122
- })).sort((a, b) => {
123
- const aBusy = this.locks.isBusy(a.lockKey);
124
- const bBusy = this.locks.isBusy(b.lockKey);
125
- // Sort by ones which are not busy
126
- return aBusy > bBusy ? 1 : 0;
127
- });
128
132
  return new Promise(async (resolve, reject) => {
129
- try {
130
- await this.locks.acquire(sortedConnections[0].lockKey, async () => {
131
- resolve(await fn(sortedConnections[0].connection));
132
- }, {
133
- timeout: options?.timeoutMs
134
- });
135
- } catch (ex) {
136
- reject(ex);
137
- }
133
+ const execute = async () => {
134
+ // Find an available connection that is not busy
135
+ const availableConnection = this.readConnections.find(conn => !conn.busy);
136
+
137
+ // If we have an available connection, use it
138
+ if (availableConnection) {
139
+ availableConnection.busy = true;
140
+ try {
141
+ resolve(await fn(availableConnection.connection));
142
+ } catch (error) {
143
+ reject(error);
144
+ } finally {
145
+ availableConnection.busy = false;
146
+ // After query execution, process any queued tasks
147
+ this.processQueue();
148
+ }
149
+ } else {
150
+ // If no available connections, add to the queue
151
+ this.readQueue.push(execute);
152
+ }
153
+ };
154
+ execute();
138
155
  });
139
156
  }
157
+ async processQueue() {
158
+ if (this.readQueue.length > 0) {
159
+ const next = this.readQueue.shift();
160
+ if (next) {
161
+ next();
162
+ }
163
+ }
164
+ }
140
165
  async writeLock(fn, options) {
141
166
  await this.initialized;
142
167
  return new Promise(async (resolve, reject) => {
@@ -145,6 +170,9 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
145
170
  resolve(await fn(this.writeConnection));
146
171
  }, {
147
172
  timeout: options?.timeoutMs
173
+ }).then(() => {
174
+ // flush updates once a write lock has been released
175
+ this.writeConnection.flushUpdates();
148
176
  });
149
177
  } catch (ex) {
150
178
  reject(ex);
@@ -209,6 +237,13 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
209
237
  throw ex;
210
238
  }
211
239
  }
240
+ async refreshSchema() {
241
+ await this.initialized;
242
+ await this.writeConnection.refreshSchema();
243
+ for (let readConnection of this.readConnections) {
244
+ await readConnection.connection.refreshSchema();
245
+ }
246
+ }
212
247
  }
213
248
  exports.OPSQLiteDBAdapter = OPSQLiteDBAdapter;
214
249
  //# sourceMappingURL=OPSqliteAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_common","require","_opSqlite","_asyncLock","_interopRequireDefault","_OPSQLiteConnection","_reactNative","e","__esModule","default","LockType","READ_CONNECTIONS","OPSQLiteDBAdapter","BaseObserver","constructor","options","name","locks","Lock","readConnections","writeConnection","initialized","init","lockTimeoutMs","journalMode","journalSizeLimit","synchronous","sqliteOptions","dbFilename","location","getDbLocation","dbLocation","DB","open","statements","statement","tries","execute","Error","message","includes","loadExtension","i","dbName","repeat","conn","openConnection","push","OPSQLiteConnection","baseDB","registerListener","tablesUpdated","notification","iterateListeners","cb","filenameOverride","Platform","OS","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","bundlePath","NativeModules","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","exports"],"sourceRoot":"../../../src","sources":["db/OPSqliteAdapter.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_common","require","_opSqlite","_asyncLock","_interopRequireDefault","_OPSQLiteConnection","_reactNative","e","__esModule","default","LockType","READ_CONNECTIONS","OPSQLiteDBAdapter","BaseObserver","readQueue","constructor","options","name","locks","Lock","readConnections","writeConnection","initialized","init","lockTimeoutMs","journalMode","journalSizeLimit","synchronous","encryptionKey","sqliteOptions","dbFilename","openConnection","statements","statement","tries","execute","Error","message","includes","registerListener","tablesUpdated","notification","iterateListeners","cb","i","conn","push","busy","connection","filenameOverride","DB","openDatabase","loadAdditionalExtensions","loadPowerSyncExtension","OPSQLiteConnection","baseDB","getDbLocation","dbLocation","Platform","OS","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","location","open","extensions","length","extension","loadExtension","path","entryPoint","libPath","getDylibPath","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","exports"],"sourceRoot":"../../../src","sources":["db/OPSqliteAdapter.ts"],"mappings":"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","ignoreList":[]}
@@ -26,6 +26,8 @@ const DEFAULT_SQLITE_OPTIONS = exports.DEFAULT_SQLITE_OPTIONS = {
26
26
  journalMode: SqliteJournalMode.wal,
27
27
  synchronous: SqliteSynchronous.normal,
28
28
  journalSizeLimit: 6 * 1024 * 1024,
29
- lockTimeoutMs: 30000
29
+ lockTimeoutMs: 30000,
30
+ encryptionKey: null,
31
+ extensions: []
30
32
  };
31
33
  //# sourceMappingURL=SqliteOptions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SqliteJournalMode","SqliteSynchronous","DEFAULT_SQLITE_OPTIONS","exports","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;AAMf,MAAMC,sBAA+C,GAAAC,OAAA,CAAAD,sBAAA,GAAG;EAC7DE,WAAW,EAAEJ,iBAAiB,CAACK,GAAG;EAClCC,WAAW,EAAEL,iBAAiB,CAACM,MAAM;EACrCC,gBAAgB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;EACjCC,aAAa,EAAE;AACjB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["SqliteJournalMode","SqliteSynchronous","DEFAULT_SQLITE_OPTIONS","exports","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;AAMf,MAAMC,sBAA+C,GAAAC,OAAA,CAAAD,sBAAA,GAAG;EAC7DE,WAAW,EAAEJ,iBAAiB,CAACK,GAAG;EAClCC,WAAW,EAAEL,iBAAiB,CAACM,MAAM;EACrCC,gBAAgB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;EACjCC,aAAa,EAAE,KAAK;EACpBC,aAAa,EAAE,IAAI;EACnBC,UAAU,EAAE;AACd,CAAC","ignoreList":[]}
@@ -15,21 +15,5 @@ Object.defineProperty(exports, "OPSqliteOpenFactory", {
15
15
  return _OPSqliteDBOpenFactory.OPSqliteOpenFactory;
16
16
  }
17
17
  });
18
- exports.getBundlePath = getBundlePath;
19
- var _reactNative = require("react-native");
20
18
  var _OPSqliteDBOpenFactory = require("./db/OPSqliteDBOpenFactory.js");
21
- const LINKING_ERROR = `The package '@powersync/op-sqlite' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
22
- ios: "- You have run 'pod install'\n",
23
- default: ''
24
- }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
25
- const isTurboModuleEnabled = global.__turboModuleProxy != null;
26
- const PowerSyncOpSqliteModule = isTurboModuleEnabled ? require('./NativePowerSyncOpSqlite').default : _reactNative.NativeModules.PowerSyncOpSqlite;
27
- const PowerSyncOpSqlite = PowerSyncOpSqliteModule ? PowerSyncOpSqliteModule : new Proxy({}, {
28
- get() {
29
- throw new Error(LINKING_ERROR);
30
- }
31
- });
32
- function getBundlePath() {
33
- return PowerSyncOpSqlite.getBundlePath();
34
- }
35
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_OPSqliteDBOpenFactory","LINKING_ERROR","Platform","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","PowerSyncOpSqliteModule","NativeModules","PowerSyncOpSqlite","Proxy","get","Error","getBundlePath"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AA6BA,IAAAC,sBAAA,GAAAD,OAAA;AA3BA,MAAME,aAAa,GACjB,+EAA+E,GAC/EC,qBAAQ,CAACC,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,GAChDP,OAAO,CAAC,2BAA2B,CAAC,CAACM,OAAO,GAC5CK,0BAAa,CAACC,iBAAiB;AAEnC,MAAMA,iBAAiB,GAAGF,uBAAuB,GAC7CA,uBAAuB,GACvB,IAAIG,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACb,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEE,SAASc,aAAaA,CAAA,EAAW;EACtC,OAAOJ,iBAAiB,CAACI,aAAa,CAAC,CAAC;AAC1C","ignoreList":[]}
1
+ {"version":3,"names":["_OPSqliteDBOpenFactory","require"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA","ignoreList":[]}
@@ -6,30 +6,53 @@ export class OPSQLiteConnection extends BaseObserver {
6
6
  super();
7
7
  this.options = options;
8
8
  this.DB = options.baseDB;
9
-
10
- // link table update commands
9
+ this.updateBuffer = [];
10
+ this.DB.rollbackHook(() => {
11
+ this.updateBuffer = [];
12
+ });
11
13
  this.DB.updateHook(update => {
12
- this.iterateListeners(cb => {
13
- let opType;
14
- switch (update.operation) {
15
- case 'INSERT':
16
- opType = RowUpdateType.SQLITE_INSERT;
17
- break;
18
- case 'DELETE':
19
- opType = RowUpdateType.SQLITE_DELETE;
20
- break;
21
- case 'UPDATE':
22
- opType = RowUpdateType.SQLITE_UPDATE;
23
- break;
24
- }
25
- cb.tablesUpdated?.({
26
- table: update.table,
27
- opType,
28
- rowId: update.rowId
29
- });
30
- });
14
+ this.addTableUpdate(update);
15
+ });
16
+ }
17
+ addTableUpdate(update) {
18
+ let opType;
19
+ switch (update.operation) {
20
+ case 'INSERT':
21
+ opType = RowUpdateType.SQLITE_INSERT;
22
+ break;
23
+ case 'DELETE':
24
+ opType = RowUpdateType.SQLITE_DELETE;
25
+ break;
26
+ case 'UPDATE':
27
+ opType = RowUpdateType.SQLITE_UPDATE;
28
+ break;
29
+ }
30
+ this.updateBuffer.push({
31
+ table: update.table,
32
+ opType,
33
+ rowId: update.rowId
31
34
  });
32
35
  }
36
+ flushUpdates() {
37
+ if (!this.updateBuffer.length) {
38
+ return;
39
+ }
40
+ const groupedUpdates = this.updateBuffer.reduce((grouping, update) => {
41
+ const {
42
+ table
43
+ } = update;
44
+ const updateGroup = grouping[table] || (grouping[table] = []);
45
+ updateGroup.push(update);
46
+ return grouping;
47
+ }, {});
48
+ const batchedUpdate = {
49
+ groupedUpdates,
50
+ rawUpdates: this.updateBuffer,
51
+ tables: Object.keys(groupedUpdates)
52
+ };
53
+ this.updateBuffer = [];
54
+ this.iterateListeners(l => l.tablesUpdated?.(batchedUpdate));
55
+ }
33
56
  close() {
34
57
  return this.DB.close();
35
58
  }
@@ -68,5 +91,8 @@ export class OPSQLiteConnection extends BaseObserver {
68
91
  }
69
92
  return result;
70
93
  }
94
+ async refreshSchema() {
95
+ await this.get("PRAGMA table_info('sqlite_master')");
96
+ }
71
97
  }
72
98
  //# sourceMappingURL=OPSQLiteConnection.js.map