@cello-protocol/client 0.0.18 → 0.0.20
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.
|
@@ -4,12 +4,33 @@
|
|
|
4
4
|
* PERSIST-009: Implements the ClientStore interface backed by SQLCipher-encrypted SQLite.
|
|
5
5
|
* Used only by the composition root. Never exported from packages/client/src/index.ts.
|
|
6
6
|
*
|
|
7
|
+
* CELLO-M6B-013: Replaced @journeyapps/sqlcipher (always compiles from source, 20-40s)
|
|
8
|
+
* with @signalapp/sqlcipher (ships prebuilt binaries for darwin-arm64, darwin-x64,
|
|
9
|
+
* linux-arm64, linux-x64, win32-arm64, win32-x64). The prebuilt binaries are bundled
|
|
10
|
+
* inside the npm tarball — no node-gyp invocation occurs on install.
|
|
11
|
+
*
|
|
12
|
+
* @signalapp/sqlcipher is a SQLCipher 4 binding with the same AES-256-CBC defaults
|
|
13
|
+
* as @journeyapps/sqlcipher. Databases created by @journeyapps/sqlcipher are readable
|
|
14
|
+
* by @signalapp/sqlcipher using the same PRAGMA key = "x'<hexkey>'" format. Verified
|
|
15
|
+
* by the cross-library compatibility test in m6b-013-sqlcipher-compat.test.ts (AC-002).
|
|
16
|
+
*
|
|
17
|
+
* API: @signalapp/sqlcipher uses a synchronous better-sqlite3-style API:
|
|
18
|
+
* db.prepare(sql).run([params]) / .get([params]) / .all([params])
|
|
19
|
+
* db.exec(sql)
|
|
20
|
+
* db.pragma(source, { simple: true })
|
|
21
|
+
* db.transaction(fn)
|
|
22
|
+
*
|
|
7
23
|
* Security invariants (PERSIST-009):
|
|
8
24
|
* SI-001: db_key is NEVER logged, serialized, or included in any error message.
|
|
9
25
|
* SI-002: Constructor takes db_key (Uint8Array), NOT identity_key. The caller
|
|
10
26
|
* must derive db_key via deriveDbKey() before constructing this store.
|
|
11
27
|
* SI-003: No PRAGMA cipher_* commands that would weaken AES-256-CBC defaults.
|
|
12
28
|
*
|
|
29
|
+
* Security invariants (CELLO-M6B-005):
|
|
30
|
+
* SI-001 (M6B-005): WAL mode PRAGMA is issued only AFTER key verification.
|
|
31
|
+
* Order: (1) PRAGMA key, (2) verify key, (3) PRAGMA journal_mode=WAL,
|
|
32
|
+
* (4) migrations. Ensures WAL files are encrypted at rest.
|
|
33
|
+
*
|
|
13
34
|
* Degraded behavior (DB-001):
|
|
14
35
|
* On corrupt file or wrong key, logs client.store.open.failed and throws.
|
|
15
36
|
* Never creates a new empty database over a corrupt file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlcipher-client-store.d.ts","sourceRoot":"","sources":["../src/sqlcipher-client-store.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sqlcipher-client-store.d.ts","sourceRoot":"","sources":["../src/sqlcipher-client-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAmCtE,MAAM,WAAW,2BAA2B;IAC1C,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;CAChB;AAID;;;;;;;GAOG;AACH,qBAAa,oBAAqB,YAAW,WAAW;;IAWtD;;;;OAIG;gBACS,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,2BAA2B;IAkBnE;;;;;;;;;;;OAWG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkE3B,oEAAoE;IAC9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAIlD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6LzC;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAM5F;;OAEG;IACG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAKtG;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAK7F;;OAEG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC;;OAEG;IACH,MAAM,IAAI,OAAO;CAGlB"}
|
|
@@ -4,12 +4,33 @@
|
|
|
4
4
|
* PERSIST-009: Implements the ClientStore interface backed by SQLCipher-encrypted SQLite.
|
|
5
5
|
* Used only by the composition root. Never exported from packages/client/src/index.ts.
|
|
6
6
|
*
|
|
7
|
+
* CELLO-M6B-013: Replaced @journeyapps/sqlcipher (always compiles from source, 20-40s)
|
|
8
|
+
* with @signalapp/sqlcipher (ships prebuilt binaries for darwin-arm64, darwin-x64,
|
|
9
|
+
* linux-arm64, linux-x64, win32-arm64, win32-x64). The prebuilt binaries are bundled
|
|
10
|
+
* inside the npm tarball — no node-gyp invocation occurs on install.
|
|
11
|
+
*
|
|
12
|
+
* @signalapp/sqlcipher is a SQLCipher 4 binding with the same AES-256-CBC defaults
|
|
13
|
+
* as @journeyapps/sqlcipher. Databases created by @journeyapps/sqlcipher are readable
|
|
14
|
+
* by @signalapp/sqlcipher using the same PRAGMA key = "x'<hexkey>'" format. Verified
|
|
15
|
+
* by the cross-library compatibility test in m6b-013-sqlcipher-compat.test.ts (AC-002).
|
|
16
|
+
*
|
|
17
|
+
* API: @signalapp/sqlcipher uses a synchronous better-sqlite3-style API:
|
|
18
|
+
* db.prepare(sql).run([params]) / .get([params]) / .all([params])
|
|
19
|
+
* db.exec(sql)
|
|
20
|
+
* db.pragma(source, { simple: true })
|
|
21
|
+
* db.transaction(fn)
|
|
22
|
+
*
|
|
7
23
|
* Security invariants (PERSIST-009):
|
|
8
24
|
* SI-001: db_key is NEVER logged, serialized, or included in any error message.
|
|
9
25
|
* SI-002: Constructor takes db_key (Uint8Array), NOT identity_key. The caller
|
|
10
26
|
* must derive db_key via deriveDbKey() before constructing this store.
|
|
11
27
|
* SI-003: No PRAGMA cipher_* commands that would weaken AES-256-CBC defaults.
|
|
12
28
|
*
|
|
29
|
+
* Security invariants (CELLO-M6B-005):
|
|
30
|
+
* SI-001 (M6B-005): WAL mode PRAGMA is issued only AFTER key verification.
|
|
31
|
+
* Order: (1) PRAGMA key, (2) verify key, (3) PRAGMA journal_mode=WAL,
|
|
32
|
+
* (4) migrations. Ensures WAL files are encrypted at rest.
|
|
33
|
+
*
|
|
13
34
|
* Degraded behavior (DB-001):
|
|
14
35
|
* On corrupt file or wrong key, logs client.store.open.failed and throws.
|
|
15
36
|
* Never creates a new empty database over a corrupt file.
|
|
@@ -71,34 +92,51 @@ export class SQLCipherClientStore {
|
|
|
71
92
|
* database over the corrupt file (DB-001).
|
|
72
93
|
*/
|
|
73
94
|
async open() {
|
|
74
|
-
// Load the native module. Using createRequire because @
|
|
95
|
+
// Load the native module. Using createRequire because @signalapp/sqlcipher
|
|
75
96
|
// is a CJS module and this file is ESM.
|
|
76
97
|
const require = createRequire(import.meta.url);
|
|
77
|
-
let
|
|
98
|
+
let signalModule;
|
|
78
99
|
try {
|
|
79
|
-
|
|
100
|
+
signalModule = require("@signalapp/sqlcipher");
|
|
80
101
|
}
|
|
81
102
|
catch (loadErr) {
|
|
82
103
|
const reason = loadErr instanceof Error ? loadErr.message : String(loadErr);
|
|
83
104
|
this.#logger.error("client.store.open.failed", { reason: `SQLCipher native module unavailable: ${reason}`, agentId: this.#agentId });
|
|
84
105
|
throw new Error(`SQLCipher native module unavailable: ${reason}`);
|
|
85
106
|
}
|
|
86
|
-
|
|
107
|
+
// @signalapp/sqlcipher exports { default: Database, Database, setLogger }
|
|
108
|
+
// The Database constructor takes a file path.
|
|
109
|
+
const DatabaseCtor = signalModule.Database ?? signalModule.default;
|
|
110
|
+
let db;
|
|
111
|
+
try {
|
|
112
|
+
db = new DatabaseCtor(this.#dbPath);
|
|
113
|
+
}
|
|
114
|
+
catch (openErr) {
|
|
115
|
+
const reason = openErr instanceof Error ? openErr.message : String(openErr);
|
|
116
|
+
this.#logger.error("client.store.open.failed", { reason, agentId: this.#agentId });
|
|
117
|
+
throw openErr;
|
|
118
|
+
}
|
|
87
119
|
// NOTE: do not assign this.#db yet — #applyKey and #verifyKey must succeed first.
|
|
88
120
|
try {
|
|
89
121
|
// Apply PRAGMA key (SI-003: only the key PRAGMA — no weakening cipher settings)
|
|
90
|
-
|
|
122
|
+
this.#applyKey(db);
|
|
91
123
|
// Verify the key is correct by reading the sqlite_master table.
|
|
92
|
-
// If the key is wrong or the file is corrupt, this will
|
|
93
|
-
|
|
124
|
+
// If the key is wrong or the file is corrupt, this will throw.
|
|
125
|
+
this.#verifyKey(db);
|
|
126
|
+
// SI-001 (M6B-005): WAL mode is set AFTER key verification and BEFORE migrations.
|
|
127
|
+
// Order: (1) PRAGMA key, (2) verify key, (3) PRAGMA journal_mode=WAL, (4) migrations.
|
|
128
|
+
// WAL mode is issued on a key-verified database — attackers with filesystem access
|
|
129
|
+
// see encrypted WAL files, not plaintext.
|
|
130
|
+
const journalMode = this.#setWalMode(db);
|
|
94
131
|
// Key is verified — safe to make the database accessible to other methods.
|
|
95
132
|
this.#db = db;
|
|
96
133
|
// Run migration runner — applies pending V{n}__*.sql files
|
|
97
|
-
|
|
134
|
+
this.#runMigrations(db);
|
|
98
135
|
this.#logger.info("client.store.opened", {
|
|
99
136
|
env: this.#env,
|
|
100
137
|
dbPath: this.#dbPath,
|
|
101
138
|
agentId: this.#agentId,
|
|
139
|
+
journalMode,
|
|
102
140
|
});
|
|
103
141
|
}
|
|
104
142
|
catch (err) {
|
|
@@ -109,9 +147,10 @@ export class SQLCipherClientStore {
|
|
|
109
147
|
agentId: this.#agentId,
|
|
110
148
|
});
|
|
111
149
|
// Close the DB to release the file handle
|
|
112
|
-
|
|
113
|
-
db.close(
|
|
114
|
-
}
|
|
150
|
+
try {
|
|
151
|
+
db.close();
|
|
152
|
+
}
|
|
153
|
+
catch { /* ignore close error */ }
|
|
115
154
|
this.#db = null;
|
|
116
155
|
throw err;
|
|
117
156
|
}
|
|
@@ -122,14 +161,7 @@ export class SQLCipherClientStore {
|
|
|
122
161
|
return;
|
|
123
162
|
const db = this.#db;
|
|
124
163
|
this.#db = null;
|
|
125
|
-
|
|
126
|
-
db.close((err) => {
|
|
127
|
-
if (err)
|
|
128
|
-
reject(err);
|
|
129
|
-
else
|
|
130
|
-
resolve();
|
|
131
|
-
});
|
|
132
|
-
});
|
|
164
|
+
db.close();
|
|
133
165
|
}
|
|
134
166
|
// ─── ClientStore interface ─────────────────────────────────────────────────
|
|
135
167
|
async set(_key, _value) {
|
|
@@ -150,41 +182,20 @@ export class SQLCipherClientStore {
|
|
|
150
182
|
throw new Error("SQLCipherClientStore: database is not open. Call open() first.");
|
|
151
183
|
}
|
|
152
184
|
}
|
|
153
|
-
/** Open the SQLite database file. Returns the Database instance on success. */
|
|
154
|
-
async #openDatabase(sqlite3Module) {
|
|
155
|
-
return new Promise((resolve, reject) => {
|
|
156
|
-
// OPEN_CREATE creates the file if absent (first run). On an existing corrupt file,
|
|
157
|
-
// SQLite opens it without error at the OS level; #verifyKey detects the corruption
|
|
158
|
-
// and throws without writing to the file — satisfying DB-001 (never overwrite a
|
|
159
|
-
// corrupt database).
|
|
160
|
-
const mode = sqlite3Module.OPEN_READWRITE | sqlite3Module.OPEN_CREATE;
|
|
161
|
-
const db = new sqlite3Module.Database(this.#dbPath, mode, (err) => {
|
|
162
|
-
if (err)
|
|
163
|
-
reject(err);
|
|
164
|
-
else
|
|
165
|
-
resolve(db);
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
185
|
/**
|
|
170
186
|
* Apply the SQLCipher PRAGMA key using the raw hex format.
|
|
171
187
|
* The key is passed as x'<hex>' which is the SQLCipher raw key format.
|
|
172
188
|
* SI-001: The key hex is used only in the PRAGMA string and never logged.
|
|
173
189
|
* SI-003: Only the `key` PRAGMA is set — no cipher_* weakening PRAGMAs.
|
|
190
|
+
*
|
|
191
|
+
* @signalapp/sqlcipher's synchronous pragma() throws on error — no callback needed.
|
|
174
192
|
*/
|
|
175
|
-
|
|
193
|
+
#applyKey(db) {
|
|
176
194
|
const keyHex = Buffer.from(this.#dbKey).toString("hex");
|
|
177
|
-
const
|
|
195
|
+
const pragmaSource = `key = "x'${keyHex}'"`;
|
|
178
196
|
// SI-001: keyHex is used only in the PRAGMA string and is never logged.
|
|
179
197
|
// SI-003: only the `key` PRAGMA is issued — no cipher_* weakening PRAGMAs.
|
|
180
|
-
|
|
181
|
-
db.run(pragmaSql, [], function (err) {
|
|
182
|
-
if (err)
|
|
183
|
-
reject(err);
|
|
184
|
-
else
|
|
185
|
-
resolve();
|
|
186
|
-
});
|
|
187
|
-
});
|
|
198
|
+
db.pragma(pragmaSource);
|
|
188
199
|
}
|
|
189
200
|
/**
|
|
190
201
|
* Verify the PRAGMA key is correct by executing a test query.
|
|
@@ -194,15 +205,27 @@ export class SQLCipherClientStore {
|
|
|
194
205
|
* DB-001: We do NOT catch and recover here — the error propagates to open()
|
|
195
206
|
* which logs client.store.open.failed and throws, halting the client.
|
|
196
207
|
*/
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
208
|
+
#verifyKey(db) {
|
|
209
|
+
db.prepare(`SELECT count(*) as c FROM sqlite_master`).get([]);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Enable WAL (Write-Ahead Log) journal mode on the database.
|
|
213
|
+
*
|
|
214
|
+
* @signalapp/sqlcipher's synchronous pragma() with { simple: true } returns
|
|
215
|
+
* the first column of the first result row directly.
|
|
216
|
+
*
|
|
217
|
+
* Implements SI-001 (M6B-005): Must only be called AFTER #verifyKey() succeeds.
|
|
218
|
+
* WAL mode on an unverified database would operate on plaintext; by calling this after
|
|
219
|
+
* key verification, we guarantee WAL files are encrypted at rest.
|
|
220
|
+
*
|
|
221
|
+
* Returns the active journal mode string (normally 'wal').
|
|
222
|
+
*/
|
|
223
|
+
#setWalMode(db) {
|
|
224
|
+
const mode = db.pragma("journal_mode=WAL", { simple: true });
|
|
225
|
+
if (mode !== "wal") {
|
|
226
|
+
throw new Error(`WAL mode failed: expected 'wal', got '${mode}'. This may occur on network filesystems (NFS, SMB). Move your CELLO_DB_PATH to a local filesystem.`);
|
|
227
|
+
}
|
|
228
|
+
return mode;
|
|
206
229
|
}
|
|
207
230
|
/**
|
|
208
231
|
* Run the custom migration runner.
|
|
@@ -215,18 +238,18 @@ export class SQLCipherClientStore {
|
|
|
215
238
|
* 5. Record the version in schema_migrations.
|
|
216
239
|
* 6. Log client.store.migration.applied for each applied migration.
|
|
217
240
|
*/
|
|
218
|
-
|
|
241
|
+
#runMigrations(db) {
|
|
219
242
|
// Bootstrap the migrations table before any migration runs — this is not a migration
|
|
220
243
|
// itself and must not be inside a migration transaction.
|
|
221
244
|
// Step 1: bootstrap the schema_migrations table itself
|
|
222
|
-
|
|
245
|
+
db.exec(`CREATE TABLE IF NOT EXISTS schema_migrations (
|
|
223
246
|
version TEXT PRIMARY KEY,
|
|
224
247
|
applied_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
225
248
|
)`);
|
|
226
249
|
// Step 2: read migration files
|
|
227
250
|
const migrationFiles = this.#readMigrationFiles();
|
|
228
251
|
// Step 3: find already-applied migrations
|
|
229
|
-
const appliedVersions =
|
|
252
|
+
const appliedVersions = this.#queryAppliedVersions(db);
|
|
230
253
|
// Step 4-6: apply pending migrations in order
|
|
231
254
|
let v2Applied = false;
|
|
232
255
|
const v2StartTime = Date.now();
|
|
@@ -236,7 +259,7 @@ export class SQLCipherClientStore {
|
|
|
236
259
|
const sql = readFileSync(filename, "utf-8");
|
|
237
260
|
const startTime = Date.now();
|
|
238
261
|
try {
|
|
239
|
-
|
|
262
|
+
this.#applyMigration(db, sql, version);
|
|
240
263
|
const executionTime = Date.now() - startTime;
|
|
241
264
|
this.#logger.info("client.store.migration.applied", {
|
|
242
265
|
version,
|
|
@@ -303,59 +326,22 @@ export class SQLCipherClientStore {
|
|
|
303
326
|
return migrations;
|
|
304
327
|
}
|
|
305
328
|
/** Query the schema_migrations table and return the set of applied version strings. */
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
if (err)
|
|
310
|
-
return reject(err);
|
|
311
|
-
const versions = new Set((rows ?? []).map((r) => String(r.version)));
|
|
312
|
-
resolve(versions);
|
|
313
|
-
});
|
|
314
|
-
});
|
|
329
|
+
#queryAppliedVersions(db) {
|
|
330
|
+
const rows = db.prepare(`SELECT version FROM schema_migrations`).all([]);
|
|
331
|
+
return new Set(rows.map((r) => r.version));
|
|
315
332
|
}
|
|
316
333
|
/**
|
|
317
334
|
* Apply a single migration SQL within a transaction and record it in schema_migrations.
|
|
318
335
|
*
|
|
319
|
-
*
|
|
320
|
-
*
|
|
321
|
-
* and COMMIT are already queued when a ROLLBACK fires. This method uses a linear await
|
|
322
|
-
* chain instead, which gives correct sequencing with real error propagation.
|
|
336
|
+
* @signalapp/sqlcipher's synchronous db.transaction(fn) wraps fn in a BEGIN/COMMIT pair.
|
|
337
|
+
* If fn throws, the transaction is automatically rolled back.
|
|
323
338
|
*/
|
|
324
|
-
|
|
325
|
-
const
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
else
|
|
329
|
-
res();
|
|
330
|
-
}));
|
|
331
|
-
const exec = (stmt) => new Promise((res, rej) => db.exec(stmt, (err) => {
|
|
332
|
-
if (err)
|
|
333
|
-
rej(err);
|
|
334
|
-
else
|
|
335
|
-
res();
|
|
336
|
-
}));
|
|
337
|
-
await run("BEGIN");
|
|
338
|
-
try {
|
|
339
|
-
await exec(sql);
|
|
340
|
-
await run(`INSERT OR IGNORE INTO schema_migrations (version, applied_at) VALUES (?, datetime('now'))`, [version]);
|
|
341
|
-
await run("COMMIT");
|
|
342
|
-
}
|
|
343
|
-
catch (err) {
|
|
344
|
-
// Best-effort rollback — if ROLLBACK itself fails we still re-throw the original error.
|
|
345
|
-
await run("ROLLBACK").catch(() => { });
|
|
346
|
-
throw err;
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
/** Execute a SQL statement with no parameters. */
|
|
350
|
-
async #execSql(db, sql) {
|
|
351
|
-
return new Promise((resolve, reject) => {
|
|
352
|
-
db.exec(sql, (err) => {
|
|
353
|
-
if (err)
|
|
354
|
-
reject(err);
|
|
355
|
-
else
|
|
356
|
-
resolve();
|
|
357
|
-
});
|
|
339
|
+
#applyMigration(db, sql, version) {
|
|
340
|
+
const applyFn = db.transaction(() => {
|
|
341
|
+
db.exec(sql);
|
|
342
|
+
db.prepare(`INSERT OR IGNORE INTO schema_migrations (version, applied_at) VALUES (?, datetime('now'))`).run([version]);
|
|
358
343
|
});
|
|
344
|
+
applyFn();
|
|
359
345
|
}
|
|
360
346
|
// ─── Structured DB access (PERSIST-024) ───────────────────────────────────────
|
|
361
347
|
/**
|
|
@@ -364,50 +350,29 @@ export class SQLCipherClientStore {
|
|
|
364
350
|
*/
|
|
365
351
|
async run(sql, params = []) {
|
|
366
352
|
this.#assertOpen();
|
|
367
|
-
const
|
|
368
|
-
return
|
|
369
|
-
db.run(sql, params, function (err) {
|
|
370
|
-
if (err)
|
|
371
|
-
reject(err);
|
|
372
|
-
else
|
|
373
|
-
resolve({ lastID: this.lastID, changes: this.changes });
|
|
374
|
-
});
|
|
375
|
-
});
|
|
353
|
+
const result = this.#db.prepare(sql).run(params);
|
|
354
|
+
return { lastID: result.lastInsertRowid, changes: result.changes };
|
|
376
355
|
}
|
|
377
356
|
/**
|
|
378
357
|
* Execute a parameterized query returning a single row (or undefined).
|
|
379
358
|
*/
|
|
380
359
|
async getRow(sql, params = []) {
|
|
381
360
|
this.#assertOpen();
|
|
382
|
-
|
|
383
|
-
return new Promise((resolve, reject) => {
|
|
384
|
-
db.get(sql, params, (err, row) => {
|
|
385
|
-
if (err)
|
|
386
|
-
return reject(err);
|
|
387
|
-
resolve(row);
|
|
388
|
-
});
|
|
389
|
-
});
|
|
361
|
+
return this.#db.prepare(sql).get(params);
|
|
390
362
|
}
|
|
391
363
|
/**
|
|
392
364
|
* Execute a parameterized query returning all matching rows.
|
|
393
365
|
*/
|
|
394
366
|
async allRows(sql, params = []) {
|
|
395
367
|
this.#assertOpen();
|
|
396
|
-
|
|
397
|
-
return new Promise((resolve, reject) => {
|
|
398
|
-
db.all(sql, params, (err, rows) => {
|
|
399
|
-
if (err)
|
|
400
|
-
return reject(err);
|
|
401
|
-
resolve((rows ?? []));
|
|
402
|
-
});
|
|
403
|
-
});
|
|
368
|
+
return this.#db.prepare(sql).all(params);
|
|
404
369
|
}
|
|
405
370
|
/**
|
|
406
371
|
* Execute raw SQL without parameters (for multi-statement DDL or pragmas).
|
|
407
372
|
*/
|
|
408
373
|
async exec(sql) {
|
|
409
374
|
this.#assertOpen();
|
|
410
|
-
|
|
375
|
+
this.#db.exec(sql);
|
|
411
376
|
}
|
|
412
377
|
/**
|
|
413
378
|
* Check if the database is open.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlcipher-client-store.js","sourceRoot":"","sources":["../src/sqlcipher-client-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sqlcipher-client-store.js","sourceRoot":"","sources":["../src/sqlcipher-client-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cello-protocol/client",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.20",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -25,20 +25,21 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@aws-sdk/client-s3": "3.1051.0",
|
|
27
27
|
"@cello-protocol/interfaces": "0.0.3",
|
|
28
|
-
"@journeyapps/sqlcipher": "^6.0.0",
|
|
29
28
|
"@libp2p/interface": "^3.2.2",
|
|
30
29
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
31
30
|
"@noble/curves": "^2.2.0",
|
|
31
|
+
"@signalapp/sqlcipher": "^3.3.5",
|
|
32
32
|
"cbor-x": "^1.6.0",
|
|
33
33
|
"it-length-prefixed": "^10.0.1",
|
|
34
34
|
"it-pipe": "^3.0.1",
|
|
35
35
|
"zod": "^4.4.2",
|
|
36
|
-
"@cello-protocol/transport": "0.0.4",
|
|
37
36
|
"@cello-protocol/crypto": "0.0.7",
|
|
37
|
+
"@cello-protocol/transport": "0.0.4",
|
|
38
38
|
"@cello-protocol/protocol-types": "0.0.3"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@claude-flow/testing": "3.0.0-alpha.6",
|
|
42
|
+
"@journeyapps/sqlcipher": "^6.0.0",
|
|
42
43
|
"@types/node": "^25.6.2",
|
|
43
44
|
"@cello-protocol/test-fixtures": "0.0.3"
|
|
44
45
|
},
|