@powersync/op-sqlite 0.0.3 → 0.0.4
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 +26 -1
- package/lib/commonjs/db/OPSqliteAdapter.js +30 -25
- package/lib/commonjs/db/OPSqliteAdapter.js.map +1 -1
- package/lib/commonjs/db/SqliteOptions.js +2 -1
- package/lib/commonjs/db/SqliteOptions.js.map +1 -1
- package/lib/module/db/OPSqliteAdapter.js +30 -25
- package/lib/module/db/OPSqliteAdapter.js.map +1 -1
- package/lib/module/db/SqliteOptions.js +2 -1
- package/lib/module/db/SqliteOptions.js.map +1 -1
- package/lib/typescript/commonjs/src/db/OPSqliteAdapter.d.ts +2 -1
- package/lib/typescript/commonjs/src/db/OPSqliteAdapter.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/db/SqliteOptions.d.ts +5 -0
- package/lib/typescript/commonjs/src/db/SqliteOptions.d.ts.map +1 -1
- package/lib/typescript/commonjs/tsconfig.build.tsbuildinfo +1 -1
- package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts +2 -1
- package/lib/typescript/module/src/db/OPSqliteAdapter.d.ts.map +1 -1
- package/lib/typescript/module/src/db/SqliteOptions.d.ts +5 -0
- package/lib/typescript/module/src/db/SqliteOptions.d.ts.map +1 -1
- package/lib/typescript/module/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/db/OPSqliteAdapter.ts +31 -28
- package/src/db/SqliteOptions.ts +9 -2
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:
|
|
@@ -34,21 +34,16 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
|
|
|
34
34
|
lockTimeoutMs,
|
|
35
35
|
journalMode,
|
|
36
36
|
journalSizeLimit,
|
|
37
|
-
synchronous
|
|
37
|
+
synchronous,
|
|
38
|
+
encryptionKey
|
|
38
39
|
} = this.options.sqliteOptions;
|
|
39
|
-
// const { dbFilename, dbLocation } = this.options;
|
|
40
40
|
const dbFilename = this.options.name;
|
|
41
|
-
|
|
42
|
-
const location = this.getDbLocation(this.options.dbLocation);
|
|
43
|
-
const DB = (0, _opSqlite.open)({
|
|
44
|
-
name: dbFilename,
|
|
45
|
-
location: location
|
|
46
|
-
});
|
|
41
|
+
this.writeConnection = await this.openConnection(dbFilename);
|
|
47
42
|
const statements = [`PRAGMA busy_timeout = ${lockTimeoutMs}`, `PRAGMA journal_mode = ${journalMode}`, `PRAGMA journal_size_limit = ${journalSizeLimit}`, `PRAGMA synchronous = ${synchronous}`];
|
|
48
43
|
for (const statement of statements) {
|
|
49
44
|
for (let tries = 0; tries < 30; tries++) {
|
|
50
45
|
try {
|
|
51
|
-
await
|
|
46
|
+
await this.writeConnection.execute(statement);
|
|
52
47
|
break;
|
|
53
48
|
} catch (e) {
|
|
54
49
|
if (e instanceof Error && e.message.includes('database is locked') && tries < 29) {
|
|
@@ -59,30 +54,23 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
|
|
|
59
54
|
}
|
|
60
55
|
}
|
|
61
56
|
}
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
|
|
58
|
+
// Changes should only occur in the write connection
|
|
59
|
+
this.writeConnection.registerListener({
|
|
60
|
+
tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
|
|
61
|
+
});
|
|
64
62
|
this.readConnections = [];
|
|
65
63
|
for (let i = 0; i < READ_CONNECTIONS; i++) {
|
|
66
64
|
// Workaround to create read-only connections
|
|
67
65
|
let dbName = './'.repeat(i + 1) + dbFilename;
|
|
68
|
-
const conn = await this.openConnection(
|
|
66
|
+
const conn = await this.openConnection(dbName);
|
|
69
67
|
await conn.execute('PRAGMA query_only = true');
|
|
70
68
|
this.readConnections.push(conn);
|
|
71
69
|
}
|
|
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
70
|
}
|
|
81
|
-
async openConnection(
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
location: dbLocation
|
|
85
|
-
});
|
|
71
|
+
async openConnection(filenameOverride) {
|
|
72
|
+
const dbFilename = filenameOverride ?? this.options.name;
|
|
73
|
+
const DB = this.openDatabase(dbFilename, this.options.sqliteOptions.encryptionKey);
|
|
86
74
|
|
|
87
75
|
//Load extension for all connections
|
|
88
76
|
this.loadExtension(DB);
|
|
@@ -98,6 +86,23 @@ class OPSQLiteDBAdapter extends _common.BaseObserver {
|
|
|
98
86
|
return dbLocation ?? _opSqlite.ANDROID_DATABASE_PATH;
|
|
99
87
|
}
|
|
100
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 (0, _opSqlite.open)({
|
|
95
|
+
name: dbFilename,
|
|
96
|
+
location: location,
|
|
97
|
+
encryptionKey: encryptionKey
|
|
98
|
+
});
|
|
99
|
+
} else {
|
|
100
|
+
return (0, _opSqlite.open)({
|
|
101
|
+
name: dbFilename,
|
|
102
|
+
location: location
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
101
106
|
loadExtension(DB) {
|
|
102
107
|
if (_reactNative.Platform.OS === 'ios') {
|
|
103
108
|
const bundlePath = _reactNative.NativeModules.PowerSyncOpSqlite.getBundlePath();
|
|
@@ -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","
|
|
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","encryptionKey","sqliteOptions","dbFilename","openConnection","statements","statement","tries","execute","Error","message","includes","registerListener","tablesUpdated","notification","iterateListeners","cb","i","dbName","repeat","conn","push","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","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":[]}
|
|
@@ -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":";;;;;;
|
|
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":[]}
|
|
@@ -30,21 +30,16 @@ export class OPSQLiteDBAdapter extends BaseObserver {
|
|
|
30
30
|
lockTimeoutMs,
|
|
31
31
|
journalMode,
|
|
32
32
|
journalSizeLimit,
|
|
33
|
-
synchronous
|
|
33
|
+
synchronous,
|
|
34
|
+
encryptionKey
|
|
34
35
|
} = this.options.sqliteOptions;
|
|
35
|
-
// const { dbFilename, dbLocation } = this.options;
|
|
36
36
|
const dbFilename = this.options.name;
|
|
37
|
-
|
|
38
|
-
const location = this.getDbLocation(this.options.dbLocation);
|
|
39
|
-
const DB = open({
|
|
40
|
-
name: dbFilename,
|
|
41
|
-
location: location
|
|
42
|
-
});
|
|
37
|
+
this.writeConnection = await this.openConnection(dbFilename);
|
|
43
38
|
const statements = [`PRAGMA busy_timeout = ${lockTimeoutMs}`, `PRAGMA journal_mode = ${journalMode}`, `PRAGMA journal_size_limit = ${journalSizeLimit}`, `PRAGMA synchronous = ${synchronous}`];
|
|
44
39
|
for (const statement of statements) {
|
|
45
40
|
for (let tries = 0; tries < 30; tries++) {
|
|
46
41
|
try {
|
|
47
|
-
await
|
|
42
|
+
await this.writeConnection.execute(statement);
|
|
48
43
|
break;
|
|
49
44
|
} catch (e) {
|
|
50
45
|
if (e instanceof Error && e.message.includes('database is locked') && tries < 29) {
|
|
@@ -55,30 +50,23 @@ export class OPSQLiteDBAdapter extends BaseObserver {
|
|
|
55
50
|
}
|
|
56
51
|
}
|
|
57
52
|
}
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
|
|
54
|
+
// Changes should only occur in the write connection
|
|
55
|
+
this.writeConnection.registerListener({
|
|
56
|
+
tablesUpdated: notification => this.iterateListeners(cb => cb.tablesUpdated?.(notification))
|
|
57
|
+
});
|
|
60
58
|
this.readConnections = [];
|
|
61
59
|
for (let i = 0; i < READ_CONNECTIONS; i++) {
|
|
62
60
|
// Workaround to create read-only connections
|
|
63
61
|
let dbName = './'.repeat(i + 1) + dbFilename;
|
|
64
|
-
const conn = await this.openConnection(
|
|
62
|
+
const conn = await this.openConnection(dbName);
|
|
65
63
|
await conn.execute('PRAGMA query_only = true');
|
|
66
64
|
this.readConnections.push(conn);
|
|
67
65
|
}
|
|
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
66
|
}
|
|
77
|
-
async openConnection(
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
location: dbLocation
|
|
81
|
-
});
|
|
67
|
+
async openConnection(filenameOverride) {
|
|
68
|
+
const dbFilename = filenameOverride ?? this.options.name;
|
|
69
|
+
const DB = this.openDatabase(dbFilename, this.options.sqliteOptions.encryptionKey);
|
|
82
70
|
|
|
83
71
|
//Load extension for all connections
|
|
84
72
|
this.loadExtension(DB);
|
|
@@ -94,6 +82,23 @@ export class OPSQLiteDBAdapter extends BaseObserver {
|
|
|
94
82
|
return dbLocation ?? ANDROID_DATABASE_PATH;
|
|
95
83
|
}
|
|
96
84
|
}
|
|
85
|
+
openDatabase(dbFilename, encryptionKey) {
|
|
86
|
+
//This is needed because an undefined/null dbLocation will cause the open function to fail
|
|
87
|
+
const location = this.getDbLocation(this.options.dbLocation);
|
|
88
|
+
//Simarlily if the encryption key is undefined/null when using SQLCipher it will cause the open function to fail
|
|
89
|
+
if (encryptionKey) {
|
|
90
|
+
return open({
|
|
91
|
+
name: dbFilename,
|
|
92
|
+
location: location,
|
|
93
|
+
encryptionKey: encryptionKey
|
|
94
|
+
});
|
|
95
|
+
} else {
|
|
96
|
+
return open({
|
|
97
|
+
name: dbFilename,
|
|
98
|
+
location: location
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
97
102
|
loadExtension(DB) {
|
|
98
103
|
if (Platform.OS === 'ios') {
|
|
99
104
|
const bundlePath = NativeModules.PowerSyncOpSqlite.getBundlePath();
|
|
@@ -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","
|
|
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","encryptionKey","sqliteOptions","dbFilename","openConnection","statements","statement","tries","execute","e","Error","message","includes","registerListener","tablesUpdated","notification","iterateListeners","cb","i","dbName","repeat","conn","push","filenameOverride","DB","openDatabase","loadExtension","baseDB","getDbLocation","dbLocation","OS","location","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":[]}
|
|
@@ -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":";;
|
|
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":[]}
|
|
@@ -19,8 +19,9 @@ export declare class OPSQLiteDBAdapter extends BaseObserver<DBAdapterListener> i
|
|
|
19
19
|
protected writeConnection: OPSQLiteConnection | null;
|
|
20
20
|
constructor(options: OPSQLiteAdapterOptions);
|
|
21
21
|
protected init(): Promise<void>;
|
|
22
|
-
protected openConnection(
|
|
22
|
+
protected openConnection(filenameOverride?: string): Promise<OPSQLiteConnection>;
|
|
23
23
|
private getDbLocation;
|
|
24
|
+
private openDatabase;
|
|
24
25
|
private loadExtension;
|
|
25
26
|
close(): void;
|
|
26
27
|
readLock<T>(fn: (tx: OPSQLiteConnection) => 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,
|
|
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;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;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;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"}
|
|
@@ -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,
|
|
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"}
|