@powersync/op-sqlite 0.0.1 → 0.0.3

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 +3 -3
  2. package/android/build.gradle +1 -1
  3. package/lib/commonjs/NativePowerSyncOpSqlite.js +9 -0
  4. package/lib/commonjs/NativePowerSyncOpSqlite.js.map +1 -0
  5. package/lib/commonjs/db/OPSQLiteConnection.js +77 -0
  6. package/lib/commonjs/db/OPSQLiteConnection.js.map +1 -0
  7. package/lib/commonjs/db/OPSqliteAdapter.js +214 -0
  8. package/lib/commonjs/db/OPSqliteAdapter.js.map +1 -0
  9. package/lib/commonjs/db/OPSqliteDBOpenFactory.js +26 -0
  10. package/lib/commonjs/db/OPSqliteDBOpenFactory.js.map +1 -0
  11. package/lib/commonjs/db/SqliteOptions.js +31 -0
  12. package/lib/commonjs/db/SqliteOptions.js.map +1 -0
  13. package/lib/commonjs/index.js +35 -0
  14. package/lib/commonjs/index.js.map +1 -0
  15. package/lib/module/NativePowerSyncOpSqlite.js +5 -0
  16. package/lib/module/NativePowerSyncOpSqlite.js.map +1 -0
  17. package/lib/module/db/OPSQLiteConnection.js +72 -0
  18. package/lib/module/db/OPSQLiteConnection.js.map +1 -0
  19. package/lib/module/db/OPSqliteAdapter.js +209 -0
  20. package/lib/module/db/OPSqliteAdapter.js.map +1 -0
  21. package/lib/module/db/OPSqliteDBOpenFactory.js +21 -0
  22. package/lib/module/db/OPSqliteDBOpenFactory.js.map +1 -0
  23. package/lib/module/db/SqliteOptions.js +27 -0
  24. package/lib/module/db/SqliteOptions.js.map +1 -0
  25. package/lib/module/index.js +19 -0
  26. package/lib/module/index.js.map +1 -0
  27. package/lib/typescript/commonjs/package.json +1 -0
  28. package/lib/typescript/commonjs/src/NativePowerSyncOpSqlite.d.ts +7 -0
  29. package/lib/typescript/commonjs/src/NativePowerSyncOpSqlite.d.ts.map +1 -0
  30. package/lib/typescript/commonjs/src/db/OPSQLiteConnection.d.ts +17 -0
  31. package/lib/typescript/commonjs/src/db/OPSQLiteConnection.d.ts.map +1 -0
  32. package/lib/typescript/commonjs/src/db/OPSqliteAdapter.d.ts +37 -0
  33. package/lib/typescript/commonjs/src/db/OPSqliteAdapter.d.ts.map +1 -0
  34. package/lib/typescript/commonjs/src/db/OPSqliteDBOpenFactory.d.ts +12 -0
  35. package/lib/typescript/commonjs/src/db/OPSqliteDBOpenFactory.d.ts.map +1 -0
  36. package/lib/typescript/commonjs/src/db/SqliteOptions.d.ts +39 -0
  37. package/lib/typescript/commonjs/src/db/SqliteOptions.d.ts.map +1 -0
  38. package/lib/typescript/commonjs/src/index.d.ts +3 -0
  39. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  40. package/lib/typescript/commonjs/tsconfig.build.tsbuildinfo +1 -0
  41. package/lib/typescript/module/package.json +1 -0
  42. package/lib/typescript/module/src/NativePowerSyncOpSqlite.d.ts +7 -0
  43. package/lib/typescript/module/src/NativePowerSyncOpSqlite.d.ts.map +1 -0
  44. package/lib/typescript/module/src/db/OPSQLiteConnection.d.ts +17 -0
  45. package/lib/typescript/module/src/db/OPSQLiteConnection.d.ts.map +1 -0
  46. package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts +37 -0
  47. package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts.map +1 -0
  48. package/lib/typescript/module/src/db/OPSqliteDBOpenFactory.d.ts +12 -0
  49. package/lib/typescript/module/src/db/OPSqliteDBOpenFactory.d.ts.map +1 -0
  50. package/lib/typescript/module/src/db/SqliteOptions.d.ts +39 -0
  51. package/lib/typescript/module/src/db/SqliteOptions.d.ts.map +1 -0
  52. package/lib/typescript/module/src/index.d.ts +3 -0
  53. package/lib/typescript/module/src/index.d.ts.map +1 -0
  54. package/lib/typescript/module/tsconfig.build.tsbuildinfo +1 -0
  55. package/package.json +13 -10
  56. package/powersync-op-sqlite.podspec +2 -2
package/README.md CHANGED
@@ -2,9 +2,9 @@
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](../react-native/README.md).
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
- If you are not yet familiar with PowerSync, please see the [PowerSync React Native SDK](../react-native/README.md) for more information.
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
 
9
9
  ### Alpha release
10
10
 
@@ -12,7 +12,7 @@ This package is currently in an alpha release. If you find a bug or issue, pleas
12
12
 
13
13
  ## Installation
14
14
 
15
- Follow the installation instructions for the [React Native SDK](../react-native/README.md) if you haven't yet set up PowerSync in your project. However, note that this package cannot be installed alongside `@journeyapps/react-native-quick-sqlite`. Skip the step about installing it as a peer dependency, or uninstall it if it is already installed.
15
+ Follow the installation instructions for the [React Native SDK](https://github.com/powersync-ja/powersync-js/tree/main/packages/react-native) if you haven't yet set up PowerSync in your project. However, note that this package cannot be installed alongside `@journeyapps/react-native-quick-sqlite`. Skip the step about installing it as a peer dependency, or uninstall it if it is already installed.
16
16
 
17
17
  ### Install Package
18
18
 
@@ -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.2.1'
110
+ implementation 'co.powersync:powersync-sqlite-core:0.3.0'
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
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _default = exports.default = _reactNative.TurboModuleRegistry.getEnforcing('PowerSyncOpSqlite');
9
+ //# sourceMappingURL=NativePowerSyncOpSqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativePowerSyncOpSqlite.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMpCC,gCAAmB,CAACC,YAAY,CAAO,mBAAmB,CAAC","ignoreList":[]}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OPSQLiteConnection = void 0;
7
+ var _common = require("@powersync/common");
8
+ class OPSQLiteConnection extends _common.BaseObserver {
9
+ constructor(options) {
10
+ super();
11
+ this.options = options;
12
+ this.DB = options.baseDB;
13
+
14
+ // link table update commands
15
+ 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
+ });
35
+ });
36
+ }
37
+ close() {
38
+ return this.DB.close();
39
+ }
40
+ async execute(query, params) {
41
+ const res = await this.DB.execute(query, params);
42
+ return {
43
+ insertId: res.insertId,
44
+ rowsAffected: res.rowsAffected,
45
+ rows: {
46
+ _array: res.rows ?? [],
47
+ length: res.rows?.length ?? 0,
48
+ item: index => res.rows?.[index]
49
+ }
50
+ };
51
+ }
52
+ async executeBatch(query, params = []) {
53
+ const tuple = [[query, params[0]]];
54
+ params.slice(1).forEach(p => tuple.push([query, p]));
55
+ const result = await this.DB.executeBatch(tuple);
56
+ return {
57
+ rowsAffected: result.rowsAffected ?? 0
58
+ };
59
+ }
60
+ async getAll(sql, parameters) {
61
+ const result = await this.DB.execute(sql, parameters);
62
+ return result.rows ?? [];
63
+ }
64
+ async getOptional(sql, parameters) {
65
+ const result = await this.DB.execute(sql, parameters);
66
+ return result.rows?.[0] ?? null;
67
+ }
68
+ async get(sql, parameters) {
69
+ const result = await this.getOptional(sql, parameters);
70
+ if (!result) {
71
+ throw new Error('Result set is empty');
72
+ }
73
+ return result;
74
+ }
75
+ }
76
+ exports.OPSQLiteConnection = OPSQLiteConnection;
77
+ //# sourceMappingURL=OPSQLiteConnection.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OPSQLiteDBAdapter = void 0;
7
+ var _common = require("@powersync/common");
8
+ var _opSqlite = require("@op-engineering/op-sqlite");
9
+ var _asyncLock = _interopRequireDefault(require("async-lock"));
10
+ var _OPSQLiteConnection = require("./OPSQLiteConnection.js");
11
+ var _reactNative = require("react-native");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ /**
14
+ * Adapter for React Native Quick SQLite
15
+ */
16
+ var LockType = /*#__PURE__*/function (LockType) {
17
+ LockType["READ"] = "read";
18
+ LockType["WRITE"] = "write";
19
+ return LockType;
20
+ }(LockType || {});
21
+ const READ_CONNECTIONS = 5;
22
+ class OPSQLiteDBAdapter extends _common.BaseObserver {
23
+ constructor(options) {
24
+ super();
25
+ this.options = options;
26
+ this.name = this.options.name;
27
+ this.locks = new _asyncLock.default();
28
+ this.readConnections = null;
29
+ this.writeConnection = null;
30
+ this.initialized = this.init();
31
+ }
32
+ async init() {
33
+ const {
34
+ lockTimeoutMs,
35
+ journalMode,
36
+ journalSizeLimit,
37
+ synchronous
38
+ } = this.options.sqliteOptions;
39
+ // const { dbFilename, dbLocation } = this.options;
40
+ 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
+ });
47
+ const statements = [`PRAGMA busy_timeout = ${lockTimeoutMs}`, `PRAGMA journal_mode = ${journalMode}`, `PRAGMA journal_size_limit = ${journalSizeLimit}`, `PRAGMA synchronous = ${synchronous}`];
48
+ for (const statement of statements) {
49
+ for (let tries = 0; tries < 30; tries++) {
50
+ try {
51
+ await DB.execute(statement);
52
+ break;
53
+ } catch (e) {
54
+ if (e instanceof Error && e.message.includes('database is locked') && tries < 29) {
55
+ continue;
56
+ } else {
57
+ throw e;
58
+ }
59
+ }
60
+ }
61
+ }
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
+
76
+ // Changes should only occur in the write connection
77
+ this.writeConnection.registerListener({
78
+ tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
79
+ });
80
+ }
81
+ async openConnection(dbLocation, filenameOverride) {
82
+ const DB = (0, _opSqlite.open)({
83
+ name: filenameOverride ?? this.options.name,
84
+ location: dbLocation
85
+ });
86
+
87
+ //Load extension for all connections
88
+ this.loadExtension(DB);
89
+ await DB.execute('SELECT powersync_init()');
90
+ return new _OPSQLiteConnection.OPSQLiteConnection({
91
+ baseDB: DB
92
+ });
93
+ }
94
+ getDbLocation(dbLocation) {
95
+ if (_reactNative.Platform.OS === 'ios') {
96
+ return dbLocation ?? _opSqlite.IOS_LIBRARY_PATH;
97
+ } else {
98
+ return dbLocation ?? _opSqlite.ANDROID_DATABASE_PATH;
99
+ }
100
+ }
101
+ loadExtension(DB) {
102
+ if (_reactNative.Platform.OS === 'ios') {
103
+ const bundlePath = _reactNative.NativeModules.PowerSyncOpSqlite.getBundlePath();
104
+ const libPath = `${bundlePath}/Frameworks/powersync-sqlite-core.framework/powersync-sqlite-core`;
105
+ DB.loadExtension(libPath, 'sqlite3_powersync_init');
106
+ } else {
107
+ DB.loadExtension('libpowersync', 'sqlite3_powersync_init');
108
+ }
109
+ }
110
+ close() {
111
+ this.initialized.then(() => {
112
+ this.writeConnection.close();
113
+ this.readConnections.forEach(c => c.close());
114
+ });
115
+ }
116
+ async readLock(fn, options) {
117
+ 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
+ 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
+ }
138
+ });
139
+ }
140
+ async writeLock(fn, options) {
141
+ await this.initialized;
142
+ return new Promise(async (resolve, reject) => {
143
+ try {
144
+ await this.locks.acquire(LockType.WRITE, async () => {
145
+ resolve(await fn(this.writeConnection));
146
+ }, {
147
+ timeout: options?.timeoutMs
148
+ });
149
+ } catch (ex) {
150
+ reject(ex);
151
+ }
152
+ });
153
+ }
154
+ readTransaction(fn, options) {
155
+ return this.readLock(ctx => this.internalTransaction(ctx, fn));
156
+ }
157
+ writeTransaction(fn, options) {
158
+ return this.writeLock(ctx => this.internalTransaction(ctx, fn));
159
+ }
160
+ getAll(sql, parameters) {
161
+ return this.readLock(ctx => ctx.getAll(sql, parameters));
162
+ }
163
+ getOptional(sql, parameters) {
164
+ return this.readLock(ctx => ctx.getOptional(sql, parameters));
165
+ }
166
+ get(sql, parameters) {
167
+ return this.readLock(ctx => ctx.get(sql, parameters));
168
+ }
169
+ execute(query, params) {
170
+ return this.writeLock(ctx => ctx.execute(query, params));
171
+ }
172
+ async executeBatch(query, params = []) {
173
+ return this.writeLock(ctx => ctx.executeBatch(query, params));
174
+ }
175
+ async internalTransaction(connection, fn) {
176
+ let finalized = false;
177
+ const commit = async () => {
178
+ if (finalized) {
179
+ return {
180
+ rowsAffected: 0
181
+ };
182
+ }
183
+ finalized = true;
184
+ return connection.execute('COMMIT');
185
+ };
186
+ const rollback = async () => {
187
+ if (finalized) {
188
+ return {
189
+ rowsAffected: 0
190
+ };
191
+ }
192
+ finalized = true;
193
+ return connection.execute('ROLLBACK');
194
+ };
195
+ try {
196
+ await connection.execute('BEGIN');
197
+ const result = await fn({
198
+ execute: (query, params) => connection.execute(query, params),
199
+ get: (query, params) => connection.get(query, params),
200
+ getAll: (query, params) => connection.getAll(query, params),
201
+ getOptional: (query, params) => connection.getOptional(query, params),
202
+ commit,
203
+ rollback
204
+ });
205
+ await commit();
206
+ return result;
207
+ } catch (ex) {
208
+ await rollback();
209
+ throw ex;
210
+ }
211
+ }
212
+ }
213
+ exports.OPSQLiteDBAdapter = OPSQLiteDBAdapter;
214
+ //# sourceMappingURL=OPSqliteAdapter.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OPSqliteOpenFactory = void 0;
7
+ var _OPSqliteAdapter = require("./OPSqliteAdapter.js");
8
+ var _SqliteOptions = require("./SqliteOptions.js");
9
+ class OPSqliteOpenFactory {
10
+ constructor(options) {
11
+ this.options = options;
12
+ this.sqliteOptions = {
13
+ ..._SqliteOptions.DEFAULT_SQLITE_OPTIONS,
14
+ ...this.options.sqliteOptions
15
+ };
16
+ }
17
+ openDB() {
18
+ return new _OPSqliteAdapter.OPSQLiteDBAdapter({
19
+ name: this.options.dbFilename,
20
+ dbLocation: this.options.dbLocation,
21
+ sqliteOptions: this.sqliteOptions
22
+ });
23
+ }
24
+ }
25
+ exports.OPSqliteOpenFactory = OPSqliteOpenFactory;
26
+ //# sourceMappingURL=OPSqliteDBOpenFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_OPSqliteAdapter","require","_SqliteOptions","OPSqliteOpenFactory","constructor","options","sqliteOptions","DEFAULT_SQLITE_OPTIONS","openDB","OPSQLiteDBAdapter","name","dbFilename","dbLocation","exports"],"sourceRoot":"../../../src","sources":["db/OPSqliteDBOpenFactory.ts"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAKO,MAAME,mBAAmB,CAA2B;EAGzDC,WAAWA,CAAWC,OAAmC,EAAE;IAAA,KAArCA,OAAmC,GAAnCA,OAAmC;IACvD,IAAI,CAACC,aAAa,GAAG;MACnB,GAAGC,qCAAsB;MACzB,GAAG,IAAI,CAACF,OAAO,CAACC;IAClB,CAAC;EACH;EAEAE,MAAMA,CAAA,EAAc;IAClB,OAAO,IAAIC,kCAAiB,CAAC;MAC3BC,IAAI,EAAE,IAAI,CAACL,OAAO,CAACM,UAAU;MAC7BC,UAAU,EAAE,IAAI,CAACP,OAAO,CAACO,UAAU;MACnCN,aAAa,EAAE,IAAI,CAACA;IACtB,CAAC,CAAC;EACJ;AACF;AAACO,OAAA,CAAAV,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DEFAULT_SQLITE_OPTIONS = void 0;
7
+ // SQLite journal mode. Set on the primary connection.
8
+ // This library is written with WAL mode in mind - other modes may cause
9
+ // unexpected locking behavior.
10
+ var SqliteJournalMode = /*#__PURE__*/function (SqliteJournalMode) {
11
+ SqliteJournalMode["wal"] = "WAL";
12
+ SqliteJournalMode["delete"] = "DELETE";
13
+ SqliteJournalMode["truncate"] = "TRUNCATE";
14
+ SqliteJournalMode["persist"] = "PERSIST";
15
+ SqliteJournalMode["memory"] = "MEMORY";
16
+ SqliteJournalMode["off"] = "OFF";
17
+ return SqliteJournalMode;
18
+ }(SqliteJournalMode || {}); // SQLite file commit mode.
19
+ var SqliteSynchronous = /*#__PURE__*/function (SqliteSynchronous) {
20
+ SqliteSynchronous["normal"] = "NORMAL";
21
+ SqliteSynchronous["full"] = "FULL";
22
+ SqliteSynchronous["off"] = "OFF";
23
+ return SqliteSynchronous;
24
+ }(SqliteSynchronous || {});
25
+ const DEFAULT_SQLITE_OPTIONS = exports.DEFAULT_SQLITE_OPTIONS = {
26
+ journalMode: SqliteJournalMode.wal,
27
+ synchronous: SqliteSynchronous.normal,
28
+ journalSizeLimit: 6 * 1024 * 1024,
29
+ lockTimeoutMs: 30000
30
+ };
31
+ //# sourceMappingURL=SqliteOptions.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "OPSQLiteOpenFactoryOptions", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _OPSqliteDBOpenFactory.OPSQLiteOpenFactoryOptions;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "OPSqliteOpenFactory", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _OPSqliteDBOpenFactory.OPSqliteOpenFactory;
16
+ }
17
+ });
18
+ exports.getBundlePath = getBundlePath;
19
+ var _reactNative = require("react-native");
20
+ 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
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ export default TurboModuleRegistry.getEnforcing('PowerSyncOpSqlite');
5
+ //# sourceMappingURL=NativePowerSyncOpSqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativePowerSyncOpSqlite.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAMlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,mBAAmB,CAAC","ignoreList":[]}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ import { BaseObserver, RowUpdateType } from '@powersync/common';
4
+ export class OPSQLiteConnection extends BaseObserver {
5
+ constructor(options) {
6
+ super();
7
+ this.options = options;
8
+ this.DB = options.baseDB;
9
+
10
+ // link table update commands
11
+ 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
+ });
31
+ });
32
+ }
33
+ close() {
34
+ return this.DB.close();
35
+ }
36
+ async execute(query, params) {
37
+ const res = await this.DB.execute(query, params);
38
+ return {
39
+ insertId: res.insertId,
40
+ rowsAffected: res.rowsAffected,
41
+ rows: {
42
+ _array: res.rows ?? [],
43
+ length: res.rows?.length ?? 0,
44
+ item: index => res.rows?.[index]
45
+ }
46
+ };
47
+ }
48
+ async executeBatch(query, params = []) {
49
+ const tuple = [[query, params[0]]];
50
+ params.slice(1).forEach(p => tuple.push([query, p]));
51
+ const result = await this.DB.executeBatch(tuple);
52
+ return {
53
+ rowsAffected: result.rowsAffected ?? 0
54
+ };
55
+ }
56
+ async getAll(sql, parameters) {
57
+ const result = await this.DB.execute(sql, parameters);
58
+ return result.rows ?? [];
59
+ }
60
+ async getOptional(sql, parameters) {
61
+ const result = await this.DB.execute(sql, parameters);
62
+ return result.rows?.[0] ?? null;
63
+ }
64
+ async get(sql, parameters) {
65
+ const result = await this.getOptional(sql, parameters);
66
+ if (!result) {
67
+ throw new Error('Result set is empty');
68
+ }
69
+ return result;
70
+ }
71
+ }
72
+ //# sourceMappingURL=OPSQLiteConnection.js.map
@@ -0,0 +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":[]}