@powersync/op-sqlite 0.0.0-dev-20260202160933 → 0.0.0-dev-20260202163643

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 (45) hide show
  1. package/lib/commonjs/db/OPSQLiteConnection.js +106 -0
  2. package/lib/commonjs/db/OPSQLiteConnection.js.map +1 -0
  3. package/lib/commonjs/db/OPSqliteAdapter.js +261 -0
  4. package/lib/commonjs/db/OPSqliteAdapter.js.map +1 -0
  5. package/lib/commonjs/db/OPSqliteDBOpenFactory.js +26 -0
  6. package/lib/commonjs/db/OPSqliteDBOpenFactory.js.map +1 -0
  7. package/lib/commonjs/db/SqliteOptions.js +41 -0
  8. package/lib/commonjs/db/SqliteOptions.js.map +1 -0
  9. package/lib/commonjs/index.js +19 -0
  10. package/lib/commonjs/index.js.map +1 -0
  11. package/lib/commonjs/package.json +1 -0
  12. package/lib/module/db/OPSQLiteConnection.js +101 -0
  13. package/lib/module/db/OPSQLiteConnection.js.map +1 -0
  14. package/lib/module/db/OPSqliteAdapter.js +257 -0
  15. package/lib/module/db/OPSqliteAdapter.js.map +1 -0
  16. package/lib/module/db/OPSqliteDBOpenFactory.js +21 -0
  17. package/lib/module/db/OPSqliteDBOpenFactory.js.map +1 -0
  18. package/lib/module/db/SqliteOptions.js +39 -0
  19. package/lib/module/db/SqliteOptions.js.map +1 -0
  20. package/lib/module/index.js +4 -0
  21. package/lib/module/index.js.map +1 -0
  22. package/lib/module/package.json +1 -0
  23. package/lib/typescript/commonjs/package.json +1 -0
  24. package/lib/typescript/commonjs/src/db/OPSQLiteConnection.d.ts +28 -0
  25. package/lib/typescript/commonjs/src/db/OPSQLiteConnection.d.ts.map +1 -0
  26. package/lib/typescript/commonjs/src/db/OPSqliteAdapter.d.ts +46 -0
  27. package/lib/typescript/commonjs/src/db/OPSqliteAdapter.d.ts.map +1 -0
  28. package/lib/typescript/commonjs/src/db/OPSqliteDBOpenFactory.d.ts +12 -0
  29. package/lib/typescript/commonjs/src/db/OPSqliteDBOpenFactory.d.ts.map +1 -0
  30. package/lib/typescript/commonjs/src/db/SqliteOptions.d.ts +69 -0
  31. package/lib/typescript/commonjs/src/db/SqliteOptions.d.ts.map +1 -0
  32. package/lib/typescript/commonjs/src/index.d.ts +2 -0
  33. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  34. package/lib/typescript/module/package.json +1 -0
  35. package/lib/typescript/module/src/db/OPSQLiteConnection.d.ts +28 -0
  36. package/lib/typescript/module/src/db/OPSQLiteConnection.d.ts.map +1 -0
  37. package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts +46 -0
  38. package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts.map +1 -0
  39. package/lib/typescript/module/src/db/OPSqliteDBOpenFactory.d.ts +12 -0
  40. package/lib/typescript/module/src/db/OPSqliteDBOpenFactory.d.ts.map +1 -0
  41. package/lib/typescript/module/src/db/SqliteOptions.d.ts +69 -0
  42. package/lib/typescript/module/src/db/SqliteOptions.d.ts.map +1 -0
  43. package/lib/typescript/module/src/index.d.ts +2 -0
  44. package/lib/typescript/module/src/index.d.ts.map +1 -0
  45. package/package.json +3 -3
@@ -0,0 +1,106 @@
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
+ this.updateBuffer = [];
14
+ this.DB.rollbackHook(() => {
15
+ this.updateBuffer = [];
16
+ });
17
+ this.DB.updateHook(update => {
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
38
+ });
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
+ }
60
+ close() {
61
+ return this.DB.close();
62
+ }
63
+ async execute(query, params) {
64
+ const res = await this.DB.execute(query, params);
65
+ return {
66
+ insertId: res.insertId,
67
+ rowsAffected: res.rowsAffected,
68
+ rows: {
69
+ _array: res.rows ?? [],
70
+ length: res.rows?.length ?? 0,
71
+ item: index => res.rows?.[index]
72
+ }
73
+ };
74
+ }
75
+ async executeRaw(query, params) {
76
+ return await this.DB.executeRaw(query, params);
77
+ }
78
+ async executeBatch(query, params = []) {
79
+ const tuple = [[query, params[0]]];
80
+ params.slice(1).forEach(p => tuple.push([query, p]));
81
+ const result = await this.DB.executeBatch(tuple);
82
+ return {
83
+ rowsAffected: result.rowsAffected ?? 0
84
+ };
85
+ }
86
+ async getAll(sql, parameters) {
87
+ const result = await this.DB.execute(sql, parameters);
88
+ return result.rows ?? [];
89
+ }
90
+ async getOptional(sql, parameters) {
91
+ const result = await this.DB.execute(sql, parameters);
92
+ return result.rows?.[0] ?? null;
93
+ }
94
+ async get(sql, parameters) {
95
+ const result = await this.getOptional(sql, parameters);
96
+ if (!result) {
97
+ throw new Error('Result set is empty');
98
+ }
99
+ return result;
100
+ }
101
+ async refreshSchema() {
102
+ await this.get("PRAGMA table_info('sqlite_master')");
103
+ }
104
+ }
105
+ exports.OPSQLiteConnection = OPSQLiteConnection;
106
+ //# sourceMappingURL=OPSQLiteConnection.js.map
@@ -0,0 +1 @@
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","executeRaw","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":[]}
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OPSQLiteDBAdapter = void 0;
7
+ var _opSqlite = require("@op-engineering/op-sqlite");
8
+ var _common = require("@powersync/common");
9
+ var _asyncMutex = require("async-mutex");
10
+ var _reactNative = require("react-native");
11
+ var _OPSQLiteConnection = require("./OPSQLiteConnection.js");
12
+ /**
13
+ * Adapter for React Native Quick SQLite
14
+ */
15
+
16
+ const READ_CONNECTIONS = 5;
17
+ class OPSQLiteDBAdapter extends _common.BaseObserver {
18
+ readQueue = [];
19
+ constructor(options) {
20
+ super();
21
+ this.options = options;
22
+ this.name = this.options.name;
23
+ this.writeMutex = new _asyncMutex.Mutex();
24
+ this.readConnections = null;
25
+ this.writeConnection = null;
26
+ this.abortController = new AbortController();
27
+ this.initialized = this.init();
28
+ }
29
+ async init() {
30
+ const {
31
+ lockTimeoutMs,
32
+ journalMode,
33
+ journalSizeLimit,
34
+ synchronous,
35
+ cacheSizeKb,
36
+ temporaryStorage
37
+ } = this.options.sqliteOptions;
38
+ const dbFilename = this.options.name;
39
+ this.writeConnection = await this.openConnection(dbFilename);
40
+ const baseStatements = [`PRAGMA busy_timeout = ${lockTimeoutMs}`, `PRAGMA cache_size = -${cacheSizeKb}`, `PRAGMA temp_store = ${temporaryStorage}`];
41
+ const writeConnectionStatements = [...baseStatements, `PRAGMA journal_mode = ${journalMode}`, `PRAGMA journal_size_limit = ${journalSizeLimit}`, `PRAGMA synchronous = ${synchronous}`];
42
+ const readConnectionStatements = [...baseStatements, 'PRAGMA query_only = true'];
43
+ for (const statement of writeConnectionStatements) {
44
+ for (let tries = 0; tries < 30; tries++) {
45
+ try {
46
+ await this.writeConnection.execute(statement);
47
+ break;
48
+ } catch (e) {
49
+ if (e instanceof Error && e.message.includes('database is locked') && tries < 29) {
50
+ continue;
51
+ } else {
52
+ throw e;
53
+ }
54
+ }
55
+ }
56
+ }
57
+
58
+ // Changes should only occur in the write connection
59
+ this.writeConnection.registerListener({
60
+ tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
61
+ });
62
+ this.readConnections = [];
63
+ for (let i = 0; i < READ_CONNECTIONS; i++) {
64
+ const conn = await this.openConnection(dbFilename);
65
+ for (let statement of readConnectionStatements) {
66
+ await conn.execute(statement);
67
+ }
68
+ this.readConnections.push({
69
+ busy: false,
70
+ connection: conn
71
+ });
72
+ }
73
+ }
74
+ async openConnection(filenameOverride) {
75
+ const dbFilename = filenameOverride ?? this.options.name;
76
+ const DB = this.openDatabase(dbFilename, this.options.sqliteOptions?.encryptionKey ?? undefined);
77
+
78
+ //Load extensions for all connections
79
+ this.loadAdditionalExtensions(DB);
80
+ this.loadPowerSyncExtension(DB);
81
+ await DB.execute('SELECT powersync_init()');
82
+ return new _OPSQLiteConnection.OPSQLiteConnection({
83
+ baseDB: DB
84
+ });
85
+ }
86
+ openDatabase(dbFilename, encryptionKey) {
87
+ const openOptions = {
88
+ name: dbFilename
89
+ };
90
+ if (this.options.dbLocation) {
91
+ openOptions.location = this.options.dbLocation;
92
+ }
93
+
94
+ // If the encryption key is undefined/null when using SQLCipher it will cause the open function to fail
95
+ if (encryptionKey) {
96
+ openOptions.encryptionKey = encryptionKey;
97
+ }
98
+ return (0, _opSqlite.open)(openOptions);
99
+ }
100
+ loadAdditionalExtensions(DB) {
101
+ if (this.options.sqliteOptions?.extensions && this.options.sqliteOptions.extensions.length > 0) {
102
+ for (const extension of this.options.sqliteOptions.extensions) {
103
+ DB.loadExtension(extension.path, extension.entryPoint);
104
+ }
105
+ }
106
+ }
107
+ async loadPowerSyncExtension(DB) {
108
+ if (_reactNative.Platform.OS === 'ios') {
109
+ const libPath = (0, _opSqlite.getDylibPath)('co.powersync.sqlitecore', 'powersync-sqlite-core');
110
+ DB.loadExtension(libPath, 'sqlite3_powersync_init');
111
+ } else {
112
+ DB.loadExtension('libpowersync', 'sqlite3_powersync_init');
113
+ }
114
+ }
115
+ async close() {
116
+ await this.initialized;
117
+ // Abort any pending operations
118
+ this.abortController.abort();
119
+ this.readQueue = [];
120
+ this.writeConnection.close();
121
+ this.readConnections.forEach(c => c.connection.close());
122
+ }
123
+ async readLock(fn, options) {
124
+ await this.initialized;
125
+ return new Promise(async (resolve, reject) => {
126
+ const execute = async () => {
127
+ // Find an available connection that is not busy
128
+ const availableConnection = this.readConnections.find(conn => !conn.busy);
129
+
130
+ // If we have an available connection, use it
131
+ if (availableConnection) {
132
+ availableConnection.busy = true;
133
+ try {
134
+ resolve(await fn(availableConnection.connection));
135
+ } catch (error) {
136
+ reject(error);
137
+ } finally {
138
+ availableConnection.busy = false;
139
+ // After query execution, process any queued tasks
140
+ this.processQueue();
141
+ }
142
+ } else {
143
+ // If no available connections, add to the queue
144
+ this.readQueue.push(execute);
145
+ }
146
+ };
147
+ execute();
148
+ });
149
+ }
150
+ async processQueue() {
151
+ if (this.readQueue.length > 0) {
152
+ const next = this.readQueue.shift();
153
+ if (next) {
154
+ next();
155
+ }
156
+ }
157
+ }
158
+ async writeLock(fn, options) {
159
+ await this.initialized;
160
+ return new Promise(async (resolve, reject) => {
161
+ // Set up abort signal listener
162
+ const abortListener = () => {
163
+ reject(new Error('Database connection was closed'));
164
+ };
165
+ this.abortController.signal.addEventListener('abort', abortListener);
166
+ try {
167
+ await (0, _common.mutexRunExclusive)(this.writeMutex, async () => {
168
+ // Check if operation was aborted before executing
169
+ if (this.abortController.signal.aborted) {
170
+ reject(new Error('Database connection was closed'));
171
+ }
172
+ resolve(await fn(this.writeConnection));
173
+ }, options);
174
+ // flush updates once a write lock has been released
175
+ this.writeConnection.flushUpdates();
176
+ } catch (ex) {
177
+ reject(ex);
178
+ } finally {
179
+ this.abortController.signal.removeEventListener('abort', abortListener);
180
+ }
181
+ });
182
+ }
183
+ readTransaction(fn, options) {
184
+ return this.readLock(ctx => this.internalTransaction(ctx, fn));
185
+ }
186
+ writeTransaction(fn, options) {
187
+ return this.writeLock(ctx => this.internalTransaction(ctx, fn));
188
+ }
189
+ getAll(sql, parameters) {
190
+ return this.readLock(ctx => ctx.getAll(sql, parameters));
191
+ }
192
+ getOptional(sql, parameters) {
193
+ return this.readLock(ctx => ctx.getOptional(sql, parameters));
194
+ }
195
+ get(sql, parameters) {
196
+ return this.readLock(ctx => ctx.get(sql, parameters));
197
+ }
198
+ execute(query, params) {
199
+ return this.writeLock(ctx => ctx.execute(query, params));
200
+ }
201
+ executeRaw(query, params) {
202
+ return this.writeLock(ctx => ctx.executeRaw(query, params));
203
+ }
204
+ async executeBatch(query, params = []) {
205
+ return this.writeLock(ctx => ctx.executeBatch(query, params));
206
+ }
207
+ async internalTransaction(connection, fn) {
208
+ let finalized = false;
209
+ const commit = async () => {
210
+ if (finalized) {
211
+ return {
212
+ rowsAffected: 0
213
+ };
214
+ }
215
+ finalized = true;
216
+ return connection.execute('COMMIT');
217
+ };
218
+ const rollback = async () => {
219
+ if (finalized) {
220
+ return {
221
+ rowsAffected: 0
222
+ };
223
+ }
224
+ finalized = true;
225
+ return connection.execute('ROLLBACK');
226
+ };
227
+ try {
228
+ await connection.execute('BEGIN');
229
+ const result = await fn({
230
+ execute: (query, params) => connection.execute(query, params),
231
+ executeRaw: (query, params) => connection.executeRaw(query, params),
232
+ get: (query, params) => connection.get(query, params),
233
+ getAll: (query, params) => connection.getAll(query, params),
234
+ getOptional: (query, params) => connection.getOptional(query, params),
235
+ commit,
236
+ rollback
237
+ });
238
+ await commit();
239
+ return result;
240
+ } catch (ex) {
241
+ try {
242
+ await rollback();
243
+ } catch (ex2) {
244
+ // In rare cases, a rollback may fail.
245
+ // Safe to ignore.
246
+ }
247
+ throw ex;
248
+ }
249
+ }
250
+ async refreshSchema() {
251
+ await this.initialized;
252
+ await this.writeConnection.refreshSchema();
253
+ if (this.readConnections) {
254
+ for (let readConnection of this.readConnections) {
255
+ await readConnection.connection.refreshSchema();
256
+ }
257
+ }
258
+ }
259
+ }
260
+ exports.OPSQLiteDBAdapter = OPSQLiteDBAdapter;
261
+ //# sourceMappingURL=OPSqliteAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_opSqlite","require","_common","_asyncMutex","_reactNative","_OPSQLiteConnection","READ_CONNECTIONS","OPSQLiteDBAdapter","BaseObserver","readQueue","constructor","options","name","writeMutex","Mutex","readConnections","writeConnection","abortController","AbortController","initialized","init","lockTimeoutMs","journalMode","journalSizeLimit","synchronous","cacheSizeKb","temporaryStorage","sqliteOptions","dbFilename","openConnection","baseStatements","writeConnectionStatements","readConnectionStatements","statement","tries","execute","e","Error","message","includes","registerListener","tablesUpdated","notification","iterateListeners","cb","i","conn","push","busy","connection","filenameOverride","DB","openDatabase","encryptionKey","undefined","loadAdditionalExtensions","loadPowerSyncExtension","OPSQLiteConnection","baseDB","openOptions","dbLocation","location","open","extensions","length","extension","loadExtension","path","entryPoint","Platform","OS","libPath","getDylibPath","close","abort","forEach","c","readLock","fn","Promise","resolve","reject","availableConnection","find","error","processQueue","next","shift","writeLock","abortListener","signal","addEventListener","mutexRunExclusive","aborted","flushUpdates","ex","removeEventListener","readTransaction","ctx","internalTransaction","writeTransaction","getAll","sql","parameters","getOptional","get","query","params","executeRaw","executeBatch","finalized","commit","rowsAffected","rollback","result","ex2","refreshSchema","readConnection","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,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TemporaryStorageOption = exports.DEFAULT_SQLITE_OPTIONS = void 0;
7
+ let TemporaryStorageOption = exports.TemporaryStorageOption = /*#__PURE__*/function (TemporaryStorageOption) {
8
+ TemporaryStorageOption["MEMORY"] = "memory";
9
+ TemporaryStorageOption["FILESYSTEM"] = "file";
10
+ return TemporaryStorageOption;
11
+ }({}); // SQLite journal mode. Set on the primary connection.
12
+ // This library is written with WAL mode in mind - other modes may cause
13
+ // unexpected locking behavior.
14
+ var SqliteJournalMode = /*#__PURE__*/function (SqliteJournalMode) {
15
+ // Use a write-ahead log instead of a rollback journal.
16
+ // This provides good performance and concurrency.
17
+ SqliteJournalMode["wal"] = "WAL";
18
+ SqliteJournalMode["delete"] = "DELETE";
19
+ SqliteJournalMode["truncate"] = "TRUNCATE";
20
+ SqliteJournalMode["persist"] = "PERSIST";
21
+ SqliteJournalMode["memory"] = "MEMORY";
22
+ SqliteJournalMode["off"] = "OFF";
23
+ return SqliteJournalMode;
24
+ }(SqliteJournalMode || {}); // SQLite file commit mode.
25
+ var SqliteSynchronous = /*#__PURE__*/function (SqliteSynchronous) {
26
+ SqliteSynchronous["normal"] = "NORMAL";
27
+ SqliteSynchronous["full"] = "FULL";
28
+ SqliteSynchronous["off"] = "OFF";
29
+ return SqliteSynchronous;
30
+ }(SqliteSynchronous || {});
31
+ const DEFAULT_SQLITE_OPTIONS = exports.DEFAULT_SQLITE_OPTIONS = {
32
+ journalMode: SqliteJournalMode.wal,
33
+ synchronous: SqliteSynchronous.normal,
34
+ journalSizeLimit: 6 * 1024 * 1024,
35
+ cacheSizeKb: 50 * 1024,
36
+ temporaryStorage: TemporaryStorageOption.MEMORY,
37
+ lockTimeoutMs: 30000,
38
+ encryptionKey: null,
39
+ extensions: []
40
+ };
41
+ //# sourceMappingURL=SqliteOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TemporaryStorageOption","exports","SqliteJournalMode","SqliteSynchronous","DEFAULT_SQLITE_OPTIONS","journalMode","wal","synchronous","normal","journalSizeLimit","cacheSizeKb","temporaryStorage","MEMORY","lockTimeoutMs","encryptionKey","extensions"],"sourceRoot":"../../../src","sources":["db/SqliteOptions.ts"],"mappings":";;;;;;IAyDYA,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA,OAKlC;AACA;AACA;AAAA,IACKE,iBAAiB,0BAAjBA,iBAAiB;EACpB;EACA;EAFGA,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,GAAAH,OAAA,CAAAG,sBAAA,GAAG;EAC7DC,WAAW,EAAEH,iBAAiB,CAACI,GAAG;EAClCC,WAAW,EAAEJ,iBAAiB,CAACK,MAAM;EACrCC,gBAAgB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;EACjCC,WAAW,EAAE,EAAE,GAAG,IAAI;EACtBC,gBAAgB,EAAEX,sBAAsB,CAACY,MAAM;EAC/CC,aAAa,EAAE,KAAK;EACpBC,aAAa,EAAE,IAAI;EACnBC,UAAU,EAAE;AACd,CAAC","ignoreList":[]}
@@ -0,0 +1,19 @@
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
+ var _OPSqliteDBOpenFactory = require("./db/OPSqliteDBOpenFactory.js");
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_OPSqliteDBOpenFactory","require"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,101 @@
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
+ this.updateBuffer = [];
10
+ this.DB.rollbackHook(() => {
11
+ this.updateBuffer = [];
12
+ });
13
+ this.DB.updateHook(update => {
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
34
+ });
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
+ }
56
+ close() {
57
+ return this.DB.close();
58
+ }
59
+ async execute(query, params) {
60
+ const res = await this.DB.execute(query, params);
61
+ return {
62
+ insertId: res.insertId,
63
+ rowsAffected: res.rowsAffected,
64
+ rows: {
65
+ _array: res.rows ?? [],
66
+ length: res.rows?.length ?? 0,
67
+ item: index => res.rows?.[index]
68
+ }
69
+ };
70
+ }
71
+ async executeRaw(query, params) {
72
+ return await this.DB.executeRaw(query, params);
73
+ }
74
+ async executeBatch(query, params = []) {
75
+ const tuple = [[query, params[0]]];
76
+ params.slice(1).forEach(p => tuple.push([query, p]));
77
+ const result = await this.DB.executeBatch(tuple);
78
+ return {
79
+ rowsAffected: result.rowsAffected ?? 0
80
+ };
81
+ }
82
+ async getAll(sql, parameters) {
83
+ const result = await this.DB.execute(sql, parameters);
84
+ return result.rows ?? [];
85
+ }
86
+ async getOptional(sql, parameters) {
87
+ const result = await this.DB.execute(sql, parameters);
88
+ return result.rows?.[0] ?? null;
89
+ }
90
+ async get(sql, parameters) {
91
+ const result = await this.getOptional(sql, parameters);
92
+ if (!result) {
93
+ throw new Error('Result set is empty');
94
+ }
95
+ return result;
96
+ }
97
+ async refreshSchema() {
98
+ await this.get("PRAGMA table_info('sqlite_master')");
99
+ }
100
+ }
101
+ //# sourceMappingURL=OPSQLiteConnection.js.map
@@ -0,0 +1 @@
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","executeRaw","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":[]}