@powersync/op-sqlite 0.0.0-dev-20250121114305 → 0.0.0-dev-20250128125736

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 (64) hide show
  1. package/android/build.gradle +124 -0
  2. package/android/gradle.properties +5 -0
  3. package/android/src/main/AndroidManifest.xml +3 -0
  4. package/android/src/main/AndroidManifestNew.xml +2 -0
  5. package/android/src/main/java/com/powersync/opsqlite/PowerSyncOpSqlitePackage.kt +31 -0
  6. package/ios/PowerSyncOpSqlite.h +5 -0
  7. package/ios/PowerSyncOpSqlite.mm +6 -0
  8. package/lib/commonjs/db/OPSQLiteConnection.js +103 -0
  9. package/lib/commonjs/db/OPSQLiteConnection.js.map +1 -0
  10. package/lib/commonjs/db/OPSqliteAdapter.js +255 -0
  11. package/lib/commonjs/db/OPSqliteAdapter.js.map +1 -0
  12. package/lib/commonjs/db/OPSqliteDBOpenFactory.js +26 -0
  13. package/lib/commonjs/db/OPSqliteDBOpenFactory.js.map +1 -0
  14. package/lib/commonjs/db/SqliteOptions.js +33 -0
  15. package/lib/commonjs/db/SqliteOptions.js.map +1 -0
  16. package/lib/commonjs/index.js +19 -0
  17. package/lib/commonjs/index.js.map +1 -0
  18. package/lib/module/db/OPSQLiteConnection.js +98 -0
  19. package/lib/module/db/OPSQLiteConnection.js.map +1 -0
  20. package/lib/module/db/OPSqliteAdapter.js +250 -0
  21. package/lib/module/db/OPSqliteAdapter.js.map +1 -0
  22. package/lib/module/db/OPSqliteDBOpenFactory.js +21 -0
  23. package/lib/module/db/OPSqliteDBOpenFactory.js.map +1 -0
  24. package/lib/module/db/SqliteOptions.js +29 -0
  25. package/lib/module/db/SqliteOptions.js.map +1 -0
  26. package/lib/module/index.js +4 -0
  27. package/lib/module/index.js.map +1 -0
  28. package/lib/typescript/commonjs/package.json +1 -0
  29. package/lib/{src → typescript/commonjs/src}/db/OPSQLiteConnection.d.ts +1 -0
  30. package/lib/typescript/commonjs/src/db/OPSQLiteConnection.d.ts.map +1 -0
  31. package/lib/{src → typescript/commonjs/src}/db/OPSqliteAdapter.d.ts +1 -0
  32. package/lib/typescript/commonjs/src/db/OPSqliteAdapter.d.ts.map +1 -0
  33. package/lib/{src → typescript/commonjs/src}/db/OPSqliteDBOpenFactory.d.ts +1 -0
  34. package/lib/typescript/commonjs/src/db/OPSqliteDBOpenFactory.d.ts.map +1 -0
  35. package/lib/{src → typescript/commonjs/src}/db/SqliteOptions.d.ts +1 -0
  36. package/lib/typescript/commonjs/src/db/SqliteOptions.d.ts.map +1 -0
  37. package/lib/{src → typescript/commonjs/src}/index.d.ts +1 -0
  38. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/tsconfig.build.tsbuildinfo +1 -0
  40. package/lib/typescript/module/package.json +1 -0
  41. package/lib/typescript/module/src/db/OPSQLiteConnection.d.ts +27 -0
  42. package/lib/typescript/module/src/db/OPSQLiteConnection.d.ts.map +1 -0
  43. package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts +45 -0
  44. package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts.map +1 -0
  45. package/lib/typescript/module/src/db/OPSqliteDBOpenFactory.d.ts +12 -0
  46. package/lib/typescript/module/src/db/OPSqliteDBOpenFactory.d.ts.map +1 -0
  47. package/lib/typescript/module/src/db/SqliteOptions.d.ts +52 -0
  48. package/lib/typescript/module/src/db/SqliteOptions.d.ts.map +1 -0
  49. package/lib/typescript/module/src/index.d.ts +2 -0
  50. package/lib/typescript/module/src/index.d.ts.map +1 -0
  51. package/lib/typescript/module/tsconfig.build.tsbuildinfo +1 -0
  52. package/package.json +75 -6
  53. package/powersync-op-sqlite.podspec +26 -0
  54. package/src/db/OPSQLiteConnection.ts +131 -0
  55. package/src/db/OPSqliteAdapter.ts +293 -0
  56. package/src/db/OPSqliteDBOpenFactory.ts +25 -0
  57. package/src/db/SqliteOptions.ts +71 -0
  58. package/src/index.ts +4 -0
  59. package/lib/src/db/OPSQLiteConnection.js +0 -118
  60. package/lib/src/db/OPSqliteAdapter.js +0 -267
  61. package/lib/src/db/OPSqliteDBOpenFactory.js +0 -15
  62. package/lib/src/db/SqliteOptions.js +0 -29
  63. package/lib/src/index.js +0 -1
  64. package/lib/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,124 @@
1
+ buildscript {
2
+ // Buildscript is evaluated before everything else so we can't use getExtOrDefault
3
+ def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["OpSqlite_kotlinVersion"]
4
+
5
+ repositories {
6
+ google()
7
+ mavenCentral()
8
+ }
9
+
10
+ dependencies {
11
+ classpath "com.android.tools.build:gradle:7.2.1"
12
+ // noinspection DifferentKotlinGradleVersion
13
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14
+ }
15
+ }
16
+
17
+ def reactNativeArchitectures() {
18
+ def value = rootProject.getProperties().get("reactNativeArchitectures")
19
+ return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
20
+ }
21
+
22
+ def isNewArchitectureEnabled() {
23
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
24
+ }
25
+
26
+ apply plugin: "com.android.library"
27
+ apply plugin: "kotlin-android"
28
+
29
+ if (isNewArchitectureEnabled()) {
30
+ apply plugin: "com.facebook.react"
31
+ }
32
+
33
+ def getExtOrDefault(name) {
34
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["PowerSyncOpSqlite_" + name]
35
+ }
36
+
37
+ def getExtOrIntegerDefault(name) {
38
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["PowerSyncOpSqlite_" + name]).toInteger()
39
+ }
40
+
41
+ def supportsNamespace() {
42
+ def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
43
+ def major = parsed[0].toInteger()
44
+ def minor = parsed[1].toInteger()
45
+
46
+ // Namespace support was added in 7.3.0
47
+ return (major == 7 && minor >= 3) || major >= 8
48
+ }
49
+
50
+ android {
51
+ if (supportsNamespace()) {
52
+ namespace "com.powersync.opsqlite"
53
+
54
+ sourceSets {
55
+ main {
56
+ manifest.srcFile "src/main/AndroidManifestNew.xml"
57
+ }
58
+ }
59
+ }
60
+
61
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
62
+
63
+ defaultConfig {
64
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
65
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
66
+ buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
67
+
68
+ }
69
+
70
+ buildFeatures {
71
+ buildConfig true
72
+ }
73
+
74
+ buildTypes {
75
+ release {
76
+ minifyEnabled false
77
+ }
78
+ }
79
+
80
+ lintOptions {
81
+ disable "GradleCompatible"
82
+ }
83
+
84
+ compileOptions {
85
+ sourceCompatibility JavaVersion.VERSION_1_8
86
+ targetCompatibility JavaVersion.VERSION_1_8
87
+ }
88
+
89
+ sourceSets {
90
+ main {
91
+ if (isNewArchitectureEnabled()) {
92
+ java.srcDirs += [
93
+ "src/newarch"
94
+ ]
95
+ } else {
96
+ java.srcDirs += ["src/oldarch"]
97
+ }
98
+ }
99
+ }
100
+ }
101
+
102
+ repositories {
103
+ mavenCentral()
104
+ google()
105
+ }
106
+
107
+ def kotlin_version = getExtOrDefault("kotlinVersion")
108
+
109
+ dependencies {
110
+ implementation 'co.powersync:powersync-sqlite-core:0.3.8'
111
+ // For < 0.71, this will be from the local maven repo
112
+ // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
113
+ //noinspection GradleDynamicVersion
114
+ implementation "com.facebook.react:react-native:+"
115
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
116
+ }
117
+
118
+ if (isNewArchitectureEnabled()) {
119
+ react {
120
+ jsRootDir = file("../src/")
121
+ libraryName = "PowerSyncOpSqlite"
122
+ codegenJavaPackageName = "com.powersync.opsqlite"
123
+ }
124
+ }
@@ -0,0 +1,5 @@
1
+ PowerSyncOpSqlite_kotlinVersion=1.7.0
2
+ PowerSyncOpSqlite_minSdkVersion=21
3
+ PowerSyncOpSqlite_targetSdkVersion=31
4
+ PowerSyncOpSqlite_compileSdkVersion=31
5
+ PowerSyncOpSqlite_ndkversion=21.4.7075529
@@ -0,0 +1,3 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
+ package="com.powersync.opsqlite">
3
+ </manifest>
@@ -0,0 +1,2 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+ </manifest>
@@ -0,0 +1,31 @@
1
+ package com.powersync.opsqlite
2
+
3
+ import com.facebook.react.TurboReactPackage
4
+ import com.facebook.react.bridge.ReactApplicationContext
5
+ import com.facebook.react.bridge.NativeModule
6
+ import com.facebook.react.module.model.ReactModuleInfoProvider
7
+ import com.facebook.react.module.model.ReactModuleInfo
8
+ import java.util.HashMap
9
+
10
+ class PowerSyncOpSqlitePackage : TurboReactPackage() {
11
+ override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
12
+ return null
13
+ }
14
+
15
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
16
+ return ReactModuleInfoProvider {
17
+ val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
18
+ val isTurboModule: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
19
+ moduleInfos["PowerSyncOpSqlite"] = ReactModuleInfo(
20
+ "PowerSyncOpSqlite",
21
+ "PowerSyncOpSqlite",
22
+ false, // canOverrideExistingModule
23
+ false, // needsEagerInit
24
+ true, // hasConstants
25
+ false, // isCxxModule
26
+ isTurboModule // isTurboModule
27
+ )
28
+ moduleInfos
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,5 @@
1
+ #import <React/RCTBridgeModule.h>
2
+
3
+ @interface PowerSyncOpSqlite : NSObject <RCTBridgeModule>
4
+
5
+ @end
@@ -0,0 +1,6 @@
1
+ #import "PowerSyncOpSqlite.h"
2
+
3
+ @implementation PowerSyncOpSqlite
4
+ RCT_EXPORT_MODULE()
5
+
6
+ @end
@@ -0,0 +1,103 @@
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 executeBatch(query, params = []) {
76
+ const tuple = [[query, params[0]]];
77
+ params.slice(1).forEach(p => tuple.push([query, p]));
78
+ const result = await this.DB.executeBatch(tuple);
79
+ return {
80
+ rowsAffected: result.rowsAffected ?? 0
81
+ };
82
+ }
83
+ async getAll(sql, parameters) {
84
+ const result = await this.DB.execute(sql, parameters);
85
+ return result.rows ?? [];
86
+ }
87
+ async getOptional(sql, parameters) {
88
+ const result = await this.DB.execute(sql, parameters);
89
+ return result.rows?.[0] ?? null;
90
+ }
91
+ async get(sql, parameters) {
92
+ const result = await this.getOptional(sql, parameters);
93
+ if (!result) {
94
+ throw new Error('Result set is empty');
95
+ }
96
+ return result;
97
+ }
98
+ async refreshSchema() {
99
+ await this.get("PRAGMA table_info('sqlite_master')");
100
+ }
101
+ }
102
+ exports.OPSQLiteConnection = OPSQLiteConnection;
103
+ //# 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","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,255 @@
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
+ readQueue = [];
24
+ constructor(options) {
25
+ super();
26
+ this.options = options;
27
+ this.name = this.options.name;
28
+ this.locks = new _asyncLock.default();
29
+ this.readConnections = null;
30
+ this.writeConnection = null;
31
+ this.initialized = this.init();
32
+ }
33
+ async init() {
34
+ const {
35
+ lockTimeoutMs,
36
+ journalMode,
37
+ journalSizeLimit,
38
+ synchronous
39
+ } = this.options.sqliteOptions;
40
+ const dbFilename = this.options.name;
41
+ this.writeConnection = await this.openConnection(dbFilename);
42
+ const statements = [`PRAGMA busy_timeout = ${lockTimeoutMs}`, `PRAGMA journal_mode = ${journalMode}`, `PRAGMA journal_size_limit = ${journalSizeLimit}`, `PRAGMA synchronous = ${synchronous}`];
43
+ for (const statement of statements) {
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
+ await conn.execute('PRAGMA query_only = true');
66
+ this.readConnections.push({
67
+ busy: false,
68
+ connection: conn
69
+ });
70
+ }
71
+ }
72
+ async openConnection(filenameOverride) {
73
+ const dbFilename = filenameOverride ?? this.options.name;
74
+ const DB = this.openDatabase(dbFilename, this.options.sqliteOptions?.encryptionKey ?? undefined);
75
+
76
+ //Load extensions for all connections
77
+ this.loadAdditionalExtensions(DB);
78
+ this.loadPowerSyncExtension(DB);
79
+ await DB.execute('SELECT powersync_init()');
80
+ return new _OPSQLiteConnection.OPSQLiteConnection({
81
+ baseDB: DB
82
+ });
83
+ }
84
+ getDbLocation(dbLocation) {
85
+ if (_reactNative.Platform.OS === 'ios') {
86
+ return dbLocation ?? _opSqlite.IOS_LIBRARY_PATH;
87
+ } else {
88
+ return dbLocation ?? _opSqlite.ANDROID_DATABASE_PATH;
89
+ }
90
+ }
91
+ openDatabase(dbFilename, encryptionKey) {
92
+ //This is needed because an undefined/null dbLocation will cause the open function to fail
93
+ const location = this.getDbLocation(this.options.dbLocation);
94
+ //Simarlily if the encryption key is undefined/null when using SQLCipher it will cause the open function to fail
95
+ if (encryptionKey) {
96
+ return (0, _opSqlite.open)({
97
+ name: dbFilename,
98
+ location: location,
99
+ encryptionKey: encryptionKey
100
+ });
101
+ } else {
102
+ return (0, _opSqlite.open)({
103
+ name: dbFilename,
104
+ location: location
105
+ });
106
+ }
107
+ }
108
+ loadAdditionalExtensions(DB) {
109
+ if (this.options.sqliteOptions?.extensions && this.options.sqliteOptions.extensions.length > 0) {
110
+ for (const extension of this.options.sqliteOptions.extensions) {
111
+ DB.loadExtension(extension.path, extension.entryPoint);
112
+ }
113
+ }
114
+ }
115
+ async loadPowerSyncExtension(DB) {
116
+ if (_reactNative.Platform.OS === 'ios') {
117
+ const libPath = (0, _opSqlite.getDylibPath)('co.powersync.sqlitecore', 'powersync-sqlite-core');
118
+ DB.loadExtension(libPath, 'sqlite3_powersync_init');
119
+ } else {
120
+ DB.loadExtension('libpowersync', 'sqlite3_powersync_init');
121
+ }
122
+ }
123
+ close() {
124
+ this.initialized.then(() => {
125
+ this.writeConnection.close();
126
+ this.readConnections.forEach(c => c.connection.close());
127
+ });
128
+ }
129
+ async readLock(fn, options) {
130
+ await this.initialized;
131
+ return new Promise(async (resolve, reject) => {
132
+ const execute = async () => {
133
+ // Find an available connection that is not busy
134
+ const availableConnection = this.readConnections.find(conn => !conn.busy);
135
+
136
+ // If we have an available connection, use it
137
+ if (availableConnection) {
138
+ availableConnection.busy = true;
139
+ try {
140
+ resolve(await fn(availableConnection.connection));
141
+ } catch (error) {
142
+ reject(error);
143
+ } finally {
144
+ availableConnection.busy = false;
145
+ // After query execution, process any queued tasks
146
+ this.processQueue();
147
+ }
148
+ } else {
149
+ // If no available connections, add to the queue
150
+ this.readQueue.push(execute);
151
+ }
152
+ };
153
+ execute();
154
+ });
155
+ }
156
+ async processQueue() {
157
+ if (this.readQueue.length > 0) {
158
+ const next = this.readQueue.shift();
159
+ if (next) {
160
+ next();
161
+ }
162
+ }
163
+ }
164
+ async writeLock(fn, options) {
165
+ await this.initialized;
166
+ return new Promise(async (resolve, reject) => {
167
+ try {
168
+ await this.locks.acquire(LockType.WRITE, async () => {
169
+ resolve(await fn(this.writeConnection));
170
+ }, {
171
+ timeout: options?.timeoutMs
172
+ }).then(() => {
173
+ // flush updates once a write lock has been released
174
+ this.writeConnection.flushUpdates();
175
+ });
176
+ } catch (ex) {
177
+ reject(ex);
178
+ }
179
+ });
180
+ }
181
+ readTransaction(fn, options) {
182
+ return this.readLock(ctx => this.internalTransaction(ctx, fn));
183
+ }
184
+ writeTransaction(fn, options) {
185
+ return this.writeLock(ctx => this.internalTransaction(ctx, fn));
186
+ }
187
+ getAll(sql, parameters) {
188
+ return this.readLock(ctx => ctx.getAll(sql, parameters));
189
+ }
190
+ getOptional(sql, parameters) {
191
+ return this.readLock(ctx => ctx.getOptional(sql, parameters));
192
+ }
193
+ get(sql, parameters) {
194
+ return this.readLock(ctx => ctx.get(sql, parameters));
195
+ }
196
+ execute(query, params) {
197
+ return this.writeLock(ctx => ctx.execute(query, params));
198
+ }
199
+ async executeBatch(query, params = []) {
200
+ return this.writeLock(ctx => ctx.executeBatch(query, params));
201
+ }
202
+ async internalTransaction(connection, fn) {
203
+ let finalized = false;
204
+ const commit = async () => {
205
+ if (finalized) {
206
+ return {
207
+ rowsAffected: 0
208
+ };
209
+ }
210
+ finalized = true;
211
+ return connection.execute('COMMIT');
212
+ };
213
+ const rollback = async () => {
214
+ if (finalized) {
215
+ return {
216
+ rowsAffected: 0
217
+ };
218
+ }
219
+ finalized = true;
220
+ return connection.execute('ROLLBACK');
221
+ };
222
+ try {
223
+ await connection.execute('BEGIN');
224
+ const result = await fn({
225
+ execute: (query, params) => connection.execute(query, params),
226
+ get: (query, params) => connection.get(query, params),
227
+ getAll: (query, params) => connection.getAll(query, params),
228
+ getOptional: (query, params) => connection.getOptional(query, params),
229
+ commit,
230
+ rollback
231
+ });
232
+ await commit();
233
+ return result;
234
+ } catch (ex) {
235
+ try {
236
+ await rollback();
237
+ } catch (ex2) {
238
+ // In rare cases, a rollback may fail.
239
+ // Safe to ignore.
240
+ }
241
+ throw ex;
242
+ }
243
+ }
244
+ async refreshSchema() {
245
+ await this.initialized;
246
+ await this.writeConnection.refreshSchema();
247
+ if (this.readConnections) {
248
+ for (let readConnection of this.readConnections) {
249
+ await readConnection.connection.refreshSchema();
250
+ }
251
+ }
252
+ }
253
+ }
254
+ exports.OPSQLiteDBAdapter = OPSQLiteDBAdapter;
255
+ //# 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","readQueue","constructor","options","name","locks","Lock","readConnections","writeConnection","initialized","init","lockTimeoutMs","journalMode","journalSizeLimit","synchronous","sqliteOptions","dbFilename","openConnection","statements","statement","tries","execute","Error","message","includes","registerListener","tablesUpdated","notification","iterateListeners","cb","i","conn","push","busy","connection","filenameOverride","DB","openDatabase","encryptionKey","undefined","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","ex2","refreshSchema","readConnection","exports"],"sourceRoot":"../../../src","sources":["db/OPSqliteAdapter.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AAAwC,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGxC;AACA;AACA;AAFA,IASKG,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA,EAARA,QAAQ;AAKb,MAAMC,gBAAgB,GAAG,CAAC;AAEnB,MAAMC,iBAAiB,SAASC,oBAAY,CAAyC;EAUlFC,SAAS,GAAsB,EAAE;EAEzCC,WAAWA,CAAWC,OAA+B,EAAE;IACrD,KAAK,CAAC,CAAC;IAAC,KADYA,OAA+B,GAA/BA,OAA+B;IAEnD,IAAI,CAACC,IAAI,GAAG,IAAI,CAACD,OAAO,CAACC,IAAI;IAE7B,IAAI,CAACC,KAAK,GAAG,IAAIC,kBAAI,CAAC,CAAC;IACvB,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,WAAW,GAAG,IAAI,CAACC,IAAI,CAAC,CAAC;EAChC;EAEA,MAAgBA,IAAIA,CAAA,EAAG;IACrB,MAAM;MAAEC,aAAa;MAAEC,WAAW;MAAEC,gBAAgB;MAAEC;IAAY,CAAC,GAAG,IAAI,CAACX,OAAO,CAACY,aAAc;IACjG,MAAMC,UAAU,GAAG,IAAI,CAACb,OAAO,CAACC,IAAI;IAEpC,IAAI,CAACI,eAAe,GAAG,MAAM,IAAI,CAACS,cAAc,CAACD,UAAU,CAAC;IAE5D,MAAME,UAAoB,GAAG,CAC3B,yBAAyBP,aAAa,EAAE,EACxC,yBAAyBC,WAAW,EAAE,EACtC,+BAA+BC,gBAAgB,EAAE,EACjD,wBAAwBC,WAAW,EAAE,CACtC;IAED,KAAK,MAAMK,SAAS,IAAID,UAAU,EAAE;MAClC,KAAK,IAAIE,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,EAAE,EAAEA,KAAK,EAAE,EAAE;QACvC,IAAI;UACF,MAAM,IAAI,CAACZ,eAAe,CAAEa,OAAO,CAACF,SAAS,CAAC;UAC9C;QACF,CAAC,CAAC,OAAOzB,CAAM,EAAE;UACf,IAAIA,CAAC,YAAY4B,KAAK,IAAI5B,CAAC,CAAC6B,OAAO,CAACC,QAAQ,CAAC,oBAAoB,CAAC,IAAIJ,KAAK,GAAG,EAAE,EAAE;YAChF;UACF,CAAC,MAAM;YACL,MAAM1B,CAAC;UACT;QACF;MACF;IACF;;IAEA;IACA,IAAI,CAACc,eAAe,CAAEiB,gBAAgB,CAAC;MACrCC,aAAa,EAAGC,YAAY,IAAK,IAAI,CAACC,gBAAgB,CAAEC,EAAE,IAAKA,EAAE,CAACH,aAAa,GAAGC,YAAY,CAAC;IACjG,CAAC,CAAC;IAEF,IAAI,CAACpB,eAAe,GAAG,EAAE;IACzB,KAAK,IAAIuB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhC,gBAAgB,EAAEgC,CAAC,EAAE,EAAE;MACzC,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACd,cAAc,CAACD,UAAU,CAAC;MAClD,MAAMe,IAAI,CAACV,OAAO,CAAC,0BAA0B,CAAC;MAC9C,IAAI,CAACd,eAAe,CAACyB,IAAI,CAAC;QAAEC,IAAI,EAAE,KAAK;QAAEC,UAAU,EAAEH;MAAK,CAAC,CAAC;IAC9D;EACF;EAEA,MAAgBd,cAAcA,CAACkB,gBAAyB,EAA+B;IACrF,MAAMnB,UAAU,GAAGmB,gBAAgB,IAAI,IAAI,CAAChC,OAAO,CAACC,IAAI;IACxD,MAAMgC,EAAM,GAAG,IAAI,CAACC,YAAY,CAACrB,UAAU,EAAE,IAAI,CAACb,OAAO,CAACY,aAAa,EAAEuB,aAAa,IAAIC,SAAS,CAAC;;IAEpG;IACA,IAAI,CAACC,wBAAwB,CAACJ,EAAE,CAAC;IACjC,IAAI,CAACK,sBAAsB,CAACL,EAAE,CAAC;IAE/B,MAAMA,EAAE,CAACf,OAAO,CAAC,yBAAyB,CAAC;IAE3C,OAAO,IAAIqB,sCAAkB,CAAC;MAC5BC,MAAM,EAAEP;IACV,CAAC,CAAC;EACJ;EAEQQ,aAAaA,CAACC,UAAmB,EAAU;IACjD,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;MACzB,OAAOF,UAAU,IAAIG,0BAAgB;IACvC,CAAC,MAAM;MACL,OAAOH,UAAU,IAAII,+BAAqB;IAC5C;EACF;EAEQZ,YAAYA,CAACrB,UAAkB,EAAEsB,aAAsB,EAAM;IACnE;IACA,MAAMY,QAAQ,GAAG,IAAI,CAACN,aAAa,CAAC,IAAI,CAACzC,OAAO,CAAC0C,UAAU,CAAC;IAC5D;IACA,IAAIP,aAAa,EAAE;MACjB,OAAO,IAAAa,cAAI,EAAC;QACV/C,IAAI,EAAEY,UAAU;QAChBkC,QAAQ,EAAEA,QAAQ;QAClBZ,aAAa,EAAEA;MACjB,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,OAAO,IAAAa,cAAI,EAAC;QACV/C,IAAI,EAAEY,UAAU;QAChBkC,QAAQ,EAAEA;MACZ,CAAC,CAAC;IACJ;EACF;EAEQV,wBAAwBA,CAACJ,EAAM,EAAE;IACvC,IAAI,IAAI,CAACjC,OAAO,CAACY,aAAa,EAAEqC,UAAU,IAAI,IAAI,CAACjD,OAAO,CAACY,aAAa,CAACqC,UAAU,CAACC,MAAM,GAAG,CAAC,EAAE;MAC9F,KAAK,MAAMC,SAAS,IAAI,IAAI,CAACnD,OAAO,CAACY,aAAa,CAACqC,UAAU,EAAE;QAC7DhB,EAAE,CAACmB,aAAa,CAACD,SAAS,CAACE,IAAI,EAAEF,SAAS,CAACG,UAAU,CAAC;MACxD;IACF;EACF;EAEA,MAAchB,sBAAsBA,CAACL,EAAM,EAAE;IAC3C,IAAIU,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;MACzB,MAAMW,OAAO,GAAG,IAAAC,sBAAY,EAAC,yBAAyB,EAAE,uBAAuB,CAAC;MAChFvB,EAAE,CAACmB,aAAa,CAACG,OAAO,EAAE,wBAAwB,CAAC;IACrD,CAAC,MAAM;MACLtB,EAAE,CAACmB,aAAa,CAAC,cAAc,EAAE,wBAAwB,CAAC;IAC5D;EACF;EAEAK,KAAKA,CAAA,EAAG;IACN,IAAI,CAACnD,WAAW,CAACoD,IAAI,CAAC,MAAM;MAC1B,IAAI,CAACrD,eAAe,CAAEoD,KAAK,CAAC,CAAC;MAC7B,IAAI,CAACrD,eAAe,CAAEuD,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAAC7B,UAAU,CAAC0B,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC;EACJ;EAEA,MAAMI,QAAQA,CAAIC,EAA0C,EAAE9D,OAAuB,EAAc;IACjG,MAAM,IAAI,CAACM,WAAW;IACtB,OAAO,IAAIyD,OAAO,CAAC,OAAOC,OAAO,EAAEC,MAAM,KAAK;MAC5C,MAAM/C,OAAO,GAAG,MAAAA,CAAA,KAAY;QAC1B;QACA,MAAMgD,mBAAmB,GAAG,IAAI,CAAC9D,eAAe,CAAE+D,IAAI,CAAEvC,IAAI,IAAK,CAACA,IAAI,CAACE,IAAI,CAAC;;QAE5E;QACA,IAAIoC,mBAAmB,EAAE;UACvBA,mBAAmB,CAACpC,IAAI,GAAG,IAAI;UAC/B,IAAI;YACFkC,OAAO,CAAC,MAAMF,EAAE,CAACI,mBAAmB,CAACnC,UAAU,CAAC,CAAC;UACnD,CAAC,CAAC,OAAOqC,KAAK,EAAE;YACdH,MAAM,CAACG,KAAK,CAAC;UACf,CAAC,SAAS;YACRF,mBAAmB,CAACpC,IAAI,GAAG,KAAK;YAChC;YACA,IAAI,CAACuC,YAAY,CAAC,CAAC;UACrB;QACF,CAAC,MAAM;UACL;UACA,IAAI,CAACvE,SAAS,CAAC+B,IAAI,CAACX,OAAO,CAAC;QAC9B;MACF,CAAC;MAEDA,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;EACJ;EAEA,MAAcmD,YAAYA,CAAA,EAAkB;IAC1C,IAAI,IAAI,CAACvE,SAAS,CAACoD,MAAM,GAAG,CAAC,EAAE;MAC7B,MAAMoB,IAAI,GAAG,IAAI,CAACxE,SAAS,CAACyE,KAAK,CAAC,CAAC;MACnC,IAAID,IAAI,EAAE;QACRA,IAAI,CAAC,CAAC;MACR;IACF;EACF;EAEA,MAAME,SAASA,CAAIV,EAA0C,EAAE9D,OAAuB,EAAc;IAClG,MAAM,IAAI,CAACM,WAAW;IAEtB,OAAO,IAAIyD,OAAO,CAAC,OAAOC,OAAO,EAAEC,MAAM,KAAK;MAC5C,IAAI;QACF,MAAM,IAAI,CAAC/D,KAAK,CACbuE,OAAO,CACN/E,QAAQ,CAACgF,KAAK,EACd,YAAY;UACVV,OAAO,CAAC,MAAMF,EAAE,CAAC,IAAI,CAACzD,eAAgB,CAAC,CAAC;QAC1C,CAAC,EACD;UAAEsE,OAAO,EAAE3E,OAAO,EAAE4E;QAAU,CAChC,CAAC,CACAlB,IAAI,CAAC,MAAM;UACV;UACA,IAAI,CAACrD,eAAe,CAAEwE,YAAY,CAAC,CAAC;QACtC,CAAC,CAAC;MACN,CAAC,CAAC,OAAOC,EAAE,EAAE;QACXb,MAAM,CAACa,EAAE,CAAC;MACZ;IACF,CAAC,CAAC;EACJ;EAEAC,eAAeA,CAAIjB,EAAmC,EAAE9D,OAAuB,EAAc;IAC3F,OAAO,IAAI,CAAC6D,QAAQ,CAAEmB,GAAG,IAAK,IAAI,CAACC,mBAAmB,CAACD,GAAG,EAAElB,EAAE,CAAC,CAAC;EAClE;EAEAoB,gBAAgBA,CAAIpB,EAAmC,EAAE9D,OAAuB,EAAc;IAC5F,OAAO,IAAI,CAACwE,SAAS,CAAEQ,GAAG,IAAK,IAAI,CAACC,mBAAmB,CAACD,GAAG,EAAElB,EAAE,CAAC,CAAC;EACnE;EAEAqB,MAAMA,CAAIC,GAAW,EAAEC,UAAkB,EAAgB;IACvD,OAAO,IAAI,CAACxB,QAAQ,CAAEmB,GAAG,IAAKA,GAAG,CAACG,MAAM,CAACC,GAAG,EAAEC,UAAU,CAAC,CAAC;EAC5D;EAEAC,WAAWA,CAAIF,GAAW,EAAEC,UAAkB,EAAqB;IACjE,OAAO,IAAI,CAACxB,QAAQ,CAAEmB,GAAG,IAAKA,GAAG,CAACM,WAAW,CAACF,GAAG,EAAEC,UAAU,CAAC,CAAC;EACjE;EAEAE,GAAGA,CAAIH,GAAW,EAAEC,UAAkB,EAAc;IAClD,OAAO,IAAI,CAACxB,QAAQ,CAAEmB,GAAG,IAAKA,GAAG,CAACO,GAAG,CAACH,GAAG,EAAEC,UAAU,CAAC,CAAC;EACzD;EAEAnE,OAAOA,CAACsE,KAAa,EAAEC,MAAc,EAAE;IACrC,OAAO,IAAI,CAACjB,SAAS,CAAEQ,GAAG,IAAKA,GAAG,CAAC9D,OAAO,CAACsE,KAAK,EAAEC,MAAM,CAAC,CAAC;EAC5D;EAEA,MAAMC,YAAYA,CAACF,KAAa,EAAEC,MAAe,GAAG,EAAE,EAAwB;IAC5E,OAAO,IAAI,CAACjB,SAAS,CAAEQ,GAAG,IAAKA,GAAG,CAACU,YAAY,CAACF,KAAK,EAAEC,MAAM,CAAC,CAAC;EACjE;EAEA,MAAgBR,mBAAmBA,CACjClD,UAA8B,EAC9B+B,EAAmC,EACvB;IACZ,IAAI6B,SAAS,GAAG,KAAK;IACrB,MAAMC,MAAM,GAAG,MAAAA,CAAA,KAAkC;MAC/C,IAAID,SAAS,EAAE;QACb,OAAO;UAAEE,YAAY,EAAE;QAAE,CAAC;MAC5B;MACAF,SAAS,GAAG,IAAI;MAChB,OAAO5D,UAAU,CAACb,OAAO,CAAC,QAAQ,CAAC;IACrC,CAAC;IACD,MAAM4E,QAAQ,GAAG,MAAAA,CAAA,KAAkC;MACjD,IAAIH,SAAS,EAAE;QACb,OAAO;UAAEE,YAAY,EAAE;QAAE,CAAC;MAC5B;MACAF,SAAS,GAAG,IAAI;MAChB,OAAO5D,UAAU,CAACb,OAAO,CAAC,UAAU,CAAC;IACvC,CAAC;IACD,IAAI;MACF,MAAMa,UAAU,CAACb,OAAO,CAAC,OAAO,CAAC;MACjC,MAAM6E,MAAM,GAAG,MAAMjC,EAAE,CAAC;QACtB5C,OAAO,EAAEA,CAACsE,KAAK,EAAEC,MAAM,KAAK1D,UAAU,CAACb,OAAO,CAACsE,KAAK,EAAEC,MAAM,CAAC;QAC7DF,GAAG,EAAEA,CAACC,KAAK,EAAEC,MAAM,KAAK1D,UAAU,CAACwD,GAAG,CAACC,KAAK,EAAEC,MAAM,CAAC;QACrDN,MAAM,EAAEA,CAACK,KAAK,EAAEC,MAAM,KAAK1D,UAAU,CAACoD,MAAM,CAACK,KAAK,EAAEC,MAAM,CAAC;QAC3DH,WAAW,EAAEA,CAACE,KAAK,EAAEC,MAAM,KAAK1D,UAAU,CAACuD,WAAW,CAACE,KAAK,EAAEC,MAAM,CAAC;QACrEG,MAAM;QACNE;MACF,CAAC,CAAC;MACF,MAAMF,MAAM,CAAC,CAAC;MACd,OAAOG,MAAM;IACf,CAAC,CAAC,OAAOjB,EAAE,EAAE;MACX,IAAI;QACF,MAAMgB,QAAQ,CAAC,CAAC;MAClB,CAAC,CAAC,OAAOE,GAAG,EAAE;QACZ;QACA;MAAA;MAEF,MAAMlB,EAAE;IACV;EACF;EAEA,MAAMmB,aAAaA,CAAA,EAAkB;IACnC,MAAM,IAAI,CAAC3F,WAAW;IACtB,MAAM,IAAI,CAACD,eAAe,CAAE4F,aAAa,CAAC,CAAC;IAE3C,IAAI,IAAI,CAAC7F,eAAe,EAAE;MACxB,KAAK,IAAI8F,cAAc,IAAI,IAAI,CAAC9F,eAAe,EAAE;QAC/C,MAAM8F,cAAc,CAACnE,UAAU,CAACkE,aAAa,CAAC,CAAC;MACjD;IACF;EACF;AACF;AAACE,OAAA,CAAAvG,iBAAA,GAAAA,iBAAA","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,33 @@
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
+ encryptionKey: null,
31
+ extensions: []
32
+ };
33
+ //# sourceMappingURL=SqliteOptions.js.map
@@ -0,0 +1 @@
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":[]}
@@ -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":[]}