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

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/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,31 @@ 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
+
46
71
  ## Native Projects
47
72
 
48
73
  This package uses native libraries. Create native Android and iOS projects (if not created already) by running:
@@ -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,30 +55,26 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
59
55
  }
60
56
  }
61
57
  }
62
- this.loadExtension(DB);
63
- await DB.execute('SELECT powersync_init()');
58
+
59
+ // Changes should only occur in the write connection
60
+ this.writeConnection.registerListener({
61
+ tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
62
+ });
64
63
  this.readConnections = [];
65
64
  for (let i = 0; i < READ_CONNECTIONS; i++) {
66
65
  // Workaround to create read-only connections
67
66
  let dbName = './'.repeat(i + 1) + dbFilename;
68
- const conn = await this.openConnection(location, dbName);
67
+ const conn = await this.openConnection(dbName);
69
68
  await conn.execute('PRAGMA query_only = true');
70
- this.readConnections.push(conn);
69
+ this.readConnections.push({
70
+ busy: false,
71
+ connection: conn
72
+ });
71
73
  }
72
- this.writeConnection = new _OPSQLiteConnection.OPSQLiteConnection({
73
- baseDB: DB
74
- });
75
-
76
- // Changes should only occur in the write connection
77
- this.writeConnection.registerListener({
78
- tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
79
- });
80
74
  }
81
- async openConnection(dbLocation, filenameOverride) {
82
- const DB = (0, _opSqlite.open)({
83
- name: filenameOverride ?? this.options.name,
84
- location: dbLocation
85
- });
75
+ async openConnection(filenameOverride) {
76
+ const dbFilename = filenameOverride ?? this.options.name;
77
+ const DB = this.openDatabase(dbFilename, this.options.sqliteOptions.encryptionKey);
86
78
 
87
79
  //Load extension for all connections
88
80
  this.loadExtension(DB);
@@ -98,6 +90,23 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
98
90
  return dbLocation ?? _opSqlite.ANDROID_DATABASE_PATH;
99
91
  }
100
92
  }
93
+ openDatabase(dbFilename, encryptionKey) {
94
+ //This is needed because an undefined/null dbLocation will cause the open function to fail
95
+ const location = this.getDbLocation(this.options.dbLocation);
96
+ //Simarlily if the encryption key is undefined/null when using SQLCipher it will cause the open function to fail
97
+ if (encryptionKey) {
98
+ return (0, _opSqlite.open)({
99
+ name: dbFilename,
100
+ location: location,
101
+ encryptionKey: encryptionKey
102
+ });
103
+ } else {
104
+ return (0, _opSqlite.open)({
105
+ name: dbFilename,
106
+ location: location
107
+ });
108
+ }
109
+ }
101
110
  loadExtension(DB) {
102
111
  if (_reactNative.Platform.OS === 'ios') {
103
112
  const bundlePath = _reactNative.NativeModules.PowerSyncOpSqlite.getBundlePath();
@@ -110,33 +119,44 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
110
119
  close() {
111
120
  this.initialized.then(() => {
112
121
  this.writeConnection.close();
113
- this.readConnections.forEach(c => c.close());
122
+ this.readConnections.forEach(c => c.connection.close());
114
123
  });
115
124
  }
116
125
  async readLock(fn, options) {
117
126
  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
127
  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
- }
128
+ const execute = async () => {
129
+ // Find an available connection that is not busy
130
+ const availableConnection = this.readConnections.find(conn => !conn.busy);
131
+
132
+ // If we have an available connection, use it
133
+ if (availableConnection) {
134
+ availableConnection.busy = true;
135
+ try {
136
+ resolve(await fn(availableConnection.connection));
137
+ } catch (error) {
138
+ reject(error);
139
+ } finally {
140
+ availableConnection.busy = false;
141
+ // After query execution, process any queued tasks
142
+ this.processQueue();
143
+ }
144
+ } else {
145
+ // If no available connections, add to the queue
146
+ this.readQueue.push(execute);
147
+ }
148
+ };
149
+ execute();
138
150
  });
139
151
  }
152
+ async processQueue() {
153
+ if (this.readQueue.length > 0) {
154
+ const next = this.readQueue.shift();
155
+ if (next) {
156
+ next();
157
+ }
158
+ }
159
+ }
140
160
  async writeLock(fn, options) {
141
161
  await this.initialized;
142
162
  return new Promise(async (resolve, reject) => {
@@ -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","dbName","repeat","conn","push","busy","connection","filenameOverride","DB","openDatabase","loadExtension","OPSQLiteConnection","baseDB","getDbLocation","dbLocation","Platform","OS","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","location","open","bundlePath","NativeModules","PowerSyncOpSqlite","getBundlePath","libPath","close","then","forEach","c","readLock","fn","Promise","resolve","reject","availableConnection","find","error","processQueue","length","next","shift","writeLock","acquire","WRITE","timeout","timeoutMs","ex","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":[]}
@@ -26,6 +26,7 @@ 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
30
31
  };
31
32
  //# 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"],"sourceRoot":"../../../src","sources":["db/SqliteOptions.ts"],"mappings":";;;;;;AAiCA;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;AACjB,CAAC","ignoreList":[]}
@@ -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,30 +51,26 @@ export class OPSQLiteDBAdapter extends BaseObserver {
55
51
  }
56
52
  }
57
53
  }
58
- this.loadExtension(DB);
59
- await DB.execute('SELECT powersync_init()');
54
+
55
+ // Changes should only occur in the write connection
56
+ this.writeConnection.registerListener({
57
+ tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
58
+ });
60
59
  this.readConnections = [];
61
60
  for (let i = 0; i < READ_CONNECTIONS; i++) {
62
61
  // Workaround to create read-only connections
63
62
  let dbName = './'.repeat(i + 1) + dbFilename;
64
- const conn = await this.openConnection(location, dbName);
63
+ const conn = await this.openConnection(dbName);
65
64
  await conn.execute('PRAGMA query_only = true');
66
- this.readConnections.push(conn);
65
+ this.readConnections.push({
66
+ busy: false,
67
+ connection: conn
68
+ });
67
69
  }
68
- this.writeConnection = new OPSQLiteConnection({
69
- baseDB: DB
70
- });
71
-
72
- // Changes should only occur in the write connection
73
- this.writeConnection.registerListener({
74
- tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
75
- });
76
70
  }
77
- async openConnection(dbLocation, filenameOverride) {
78
- const DB = open({
79
- name: filenameOverride ?? this.options.name,
80
- location: dbLocation
81
- });
71
+ async openConnection(filenameOverride) {
72
+ const dbFilename = filenameOverride ?? this.options.name;
73
+ const DB = this.openDatabase(dbFilename, this.options.sqliteOptions.encryptionKey);
82
74
 
83
75
  //Load extension for all connections
84
76
  this.loadExtension(DB);
@@ -94,6 +86,23 @@ export class OPSQLiteDBAdapter extends BaseObserver {
94
86
  return dbLocation ?? ANDROID_DATABASE_PATH;
95
87
  }
96
88
  }
89
+ openDatabase(dbFilename, encryptionKey) {
90
+ //This is needed because an undefined/null dbLocation will cause the open function to fail
91
+ const location = this.getDbLocation(this.options.dbLocation);
92
+ //Simarlily if the encryption key is undefined/null when using SQLCipher it will cause the open function to fail
93
+ if (encryptionKey) {
94
+ return open({
95
+ name: dbFilename,
96
+ location: location,
97
+ encryptionKey: encryptionKey
98
+ });
99
+ } else {
100
+ return open({
101
+ name: dbFilename,
102
+ location: location
103
+ });
104
+ }
105
+ }
97
106
  loadExtension(DB) {
98
107
  if (Platform.OS === 'ios') {
99
108
  const bundlePath = NativeModules.PowerSyncOpSqlite.getBundlePath();
@@ -106,33 +115,44 @@ export class OPSQLiteDBAdapter extends BaseObserver {
106
115
  close() {
107
116
  this.initialized.then(() => {
108
117
  this.writeConnection.close();
109
- this.readConnections.forEach(c => c.close());
118
+ this.readConnections.forEach(c => c.connection.close());
110
119
  });
111
120
  }
112
121
  async readLock(fn, options) {
113
122
  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
123
  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
- }
124
+ const execute = async () => {
125
+ // Find an available connection that is not busy
126
+ const availableConnection = this.readConnections.find(conn => !conn.busy);
127
+
128
+ // If we have an available connection, use it
129
+ if (availableConnection) {
130
+ availableConnection.busy = true;
131
+ try {
132
+ resolve(await fn(availableConnection.connection));
133
+ } catch (error) {
134
+ reject(error);
135
+ } finally {
136
+ availableConnection.busy = false;
137
+ // After query execution, process any queued tasks
138
+ this.processQueue();
139
+ }
140
+ } else {
141
+ // If no available connections, add to the queue
142
+ this.readQueue.push(execute);
143
+ }
144
+ };
145
+ execute();
134
146
  });
135
147
  }
148
+ async processQueue() {
149
+ if (this.readQueue.length > 0) {
150
+ const next = this.readQueue.shift();
151
+ if (next) {
152
+ next();
153
+ }
154
+ }
155
+ }
136
156
  async writeLock(fn, options) {
137
157
  await this.initialized;
138
158
  return new Promise(async (resolve, reject) => {
@@ -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","IOS_LIBRARY_PATH","open","Lock","OPSQLiteConnection","NativeModules","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","dbName","repeat","conn","push","busy","connection","filenameOverride","DB","openDatabase","loadExtension","baseDB","getDbLocation","dbLocation","OS","location","bundlePath","PowerSyncOpSqlite","getBundlePath","libPath","close","then","forEach","c","readLock","fn","Promise","resolve","reject","availableConnection","find","error","processQueue","length","next","shift","writeLock","acquire","WRITE","timeout","timeoutMs","ex","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":[]}
@@ -22,6 +22,7 @@ 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
26
27
  };
27
28
  //# 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"],"sourceRoot":"../../../src","sources":["db/SqliteOptions.ts"],"mappings":";;AAiCA;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;AACjB,CAAC","ignoreList":[]}
@@ -15,15 +15,21 @@ 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;
28
+ private openDatabase;
24
29
  private loadExtension;
25
30
  close(): void;
26
31
  readLock<T>(fn: (tx: OPSQLiteConnection) => Promise<T>, options?: DBLockOptions): Promise<T>;
32
+ private processQueue;
27
33
  writeLock<T>(fn: (tx: OPSQLiteConnection) => Promise<T>, options?: DBLockOptions): Promise<T>;
28
34
  readTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
29
35
  writeTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
@@ -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":"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,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;AASF,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,iBAAiB,CAAE,YAAW,SAAS;IAY7E,SAAS,CAAC,OAAO,EAAE,sBAAsB;IAXrD,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,KAAK,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,kBAAkB,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAE3F,SAAS,CAAC,eAAe,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAErD,OAAO,CAAC,SAAS,CAAyB;gBAEpB,OAAO,EAAE,sBAAsB;cAUrC,IAAI;cA2CJ,cAAc,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IActF,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,YAAY;IAkBpB,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;YA6BpF,YAAY;IASpB,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"}
@@ -20,6 +20,11 @@ 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;
23
28
  }
24
29
  declare enum SqliteJournalMode {
25
30
  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;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,CAM1D,CAAC"}