@monoes/memory 2.24.0 → 2.24.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 +8 -6
- package/dist/hnsw-distance.d.ts +1 -0
- package/dist/hnsw-distance.d.ts.map +1 -1
- package/dist/hnsw-distance.js +7 -13
- package/dist/hnsw-distance.js.map +1 -1
- package/dist/hnsw-index.d.ts.map +1 -1
- package/dist/hnsw-index.js +0 -2
- package/dist/hnsw-index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/math-utils.d.ts +9 -0
- package/dist/math-utils.d.ts.map +1 -1
- package/dist/math-utils.js +23 -1
- package/dist/math-utils.js.map +1 -1
- package/dist/pattern-store.d.ts +39 -0
- package/dist/pattern-store.d.ts.map +1 -0
- package/dist/pattern-store.js +9 -0
- package/dist/pattern-store.js.map +1 -0
- package/dist/schema-migrations.d.ts +59 -0
- package/dist/schema-migrations.d.ts.map +1 -0
- package/dist/schema-migrations.js +97 -0
- package/dist/schema-migrations.js.map +1 -0
- package/dist/sql-backend.d.ts.map +1 -1
- package/dist/sql-backend.js +31 -7
- package/dist/sql-backend.js.map +1 -1
- package/dist/sql-driver.d.ts +3 -1
- package/dist/sql-driver.d.ts.map +1 -1
- package/dist/sql-driver.js +20 -2
- package/dist/sql-driver.js.map +1 -1
- package/dist/sql-schema.d.ts +25 -13
- package/dist/sql-schema.d.ts.map +1 -1
- package/dist/sql-schema.js +107 -40
- package/dist/sql-schema.js.map +1 -1
- package/dist/sqlite-backend.d.ts.map +1 -1
- package/dist/sqlite-backend.js +31 -6
- package/dist/sqlite-backend.js.map +1 -1
- package/dist/sqljs-backend.d.ts.map +1 -1
- package/dist/sqljs-backend.js +61 -8
- package/dist/sqljs-backend.js.map +1 -1
- package/package.json +5 -4
package/dist/sql-backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-backend.js","sourceRoot":"","sources":["../src/sql-backend.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sql-backend.js","sourceRoot":"","sources":["../src/sql-backend.ts"],"names":[],"mappings":"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"}
|
package/dist/sql-driver.d.ts
CHANGED
|
@@ -120,7 +120,9 @@ export declare class SqlJsDriver implements SqlDriver {
|
|
|
120
120
|
* @param flush writes the exported bytes to durable storage; omitted for
|
|
121
121
|
* :memory: databases, where persistence is meaningless
|
|
122
122
|
*/
|
|
123
|
-
constructor(db: SqlJsDb, flush?: ((bytes: Uint8Array) => Promise<void>) | undefined);
|
|
123
|
+
constructor(db: SqlJsDb, flush?: ((bytes: Uint8Array) => Promise<void>) | undefined, cleanAtOpen?: boolean);
|
|
124
|
+
private persistedChanges;
|
|
125
|
+
private totalChanges;
|
|
124
126
|
run(sql: string, params?: SqlParam[]): number;
|
|
125
127
|
get(sql: string, params?: SqlParam[]): SqlRow | null;
|
|
126
128
|
all(sql: string, params?: SqlParam[]): SqlRow[];
|
package/dist/sql-driver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-driver.d.ts","sourceRoot":"","sources":["../src/sql-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC;AACpE,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7C,MAAM,WAAW,SAAS;IACxB;;;;;;;OAOG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAC9C,yDAAyD;IACzD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;IACrD,yBAAyB;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;IAChD,gFAAgF;IAChF,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5D,wCAAwC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,8DAA8D;IAC9D,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,4EAA4E;IAC5E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,sDAAsD;IACtD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;IACd,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,QAAQ,CAAC;CAC5C;AAMD,UAAU,cAAc;IACtB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QACpB,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC7C,CAAC;IACF,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;IAChE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACzE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,qBAAa,kBAAmB,YAAW,SAAS;IActC,OAAO,CAAC,EAAE;IAbtB,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAE1C;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS,CAA4D;IAE7E,YAAoB,EAAE,EAAE,cAAc,EAAI;IAE1C,OAAO,CAAC,IAAI;IASZ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,QAAQ,EAAO,GAAG,MAAM,CAEhD;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,QAAQ,EAAO,GAAG,MAAM,GAAG,IAAI,CAEvD;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,QAAQ,EAAO,GAAG,MAAM,EAAE,CAElD;IAED,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,QAAQ,EAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAE9D;IAED,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtB;IAED,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE7B;IAED,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEjC;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7B;IAED,KAAK,IAAI,IAAI,CAKZ;CACF;AAWD,UAAU,cAAc;IACtB,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAClC,IAAI,IAAI,OAAO,CAAC;IAChB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,IAAI,IAAI,CAAC;CACd;AAED,UAAU,OAAO;IACf,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;IACrC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC9C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,MAAM,IAAI,UAAU,CAAC;IACrB,eAAe,IAAI,MAAM,CAAC;IAC1B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,qBAAa,WAAY,YAAW,SAAS;IASzC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,KAAK,CAAC;IAThB,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAElC;;;;OAIG;IACH,YACU,EAAE,EAAE,OAAO,EACX,KAAK,CAAC,GAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,aAAA,
|
|
1
|
+
{"version":3,"file":"sql-driver.d.ts","sourceRoot":"","sources":["../src/sql-driver.ts"],"names":[],"mappings":"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"}
|
package/dist/sql-driver.js
CHANGED
|
@@ -90,9 +90,17 @@ export class SqlJsDriver {
|
|
|
90
90
|
* @param flush writes the exported bytes to durable storage; omitted for
|
|
91
91
|
* :memory: databases, where persistence is meaningless
|
|
92
92
|
*/
|
|
93
|
-
constructor(db, flush) {
|
|
93
|
+
constructor(db, flush, cleanAtOpen = false) {
|
|
94
94
|
this.db = db;
|
|
95
95
|
this.flush = flush;
|
|
96
|
+
// Row changes seen at the last export (or at open, for an existing file that
|
|
97
|
+
// has not been touched yet). -1 forces the first persist, e.g. a new database.
|
|
98
|
+
this.persistedChanges = cleanAtOpen ? this.totalChanges() : -1;
|
|
99
|
+
}
|
|
100
|
+
persistedChanges;
|
|
101
|
+
totalChanges() {
|
|
102
|
+
const result = this.db.exec('SELECT total_changes()');
|
|
103
|
+
return Number(result[0]?.values[0]?.[0] ?? 0);
|
|
96
104
|
}
|
|
97
105
|
run(sql, params = []) {
|
|
98
106
|
this.db.run(sql, params);
|
|
@@ -178,7 +186,17 @@ export class SqlJsDriver {
|
|
|
178
186
|
async persist() {
|
|
179
187
|
if (!this.flush)
|
|
180
188
|
return; // :memory: — nothing durable to write
|
|
181
|
-
|
|
189
|
+
// Exporting writes the whole in-memory snapshot over the file, so an unchanged
|
|
190
|
+
// snapshot must not be exported: it would erase whatever other processes wrote
|
|
191
|
+
// since this one loaded it.
|
|
192
|
+
if (this.totalChanges() === this.persistedChanges)
|
|
193
|
+
return;
|
|
194
|
+
const bytes = this.db.export();
|
|
195
|
+
// export() reopens the database, which restarts the change counter. Record it
|
|
196
|
+
// before awaiting the write so changes made during the write stay dirty.
|
|
197
|
+
const changesAtExport = this.totalChanges();
|
|
198
|
+
await this.flush(bytes);
|
|
199
|
+
this.persistedChanges = changesAtExport;
|
|
182
200
|
}
|
|
183
201
|
close() {
|
|
184
202
|
this.db.close();
|
package/dist/sql-driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-driver.js","sourceRoot":"","sources":["../src/sql-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAmDH,MAAM,OAAO,kBAAkB;IAcT,EAAE;IAbb,IAAI,GAAG,gBAAyB,CAAC;IAE1C;;;;;;;;OAQG;IACK,SAAS,GAAG,IAAI,GAAG,EAAiD,CAAC;IAE7E,YAAoB,EAAkB;kBAAlB,EAAE;IAAmB,CAAC;IAElC,IAAI,CAAC,GAAW;QACtB,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,MAAM,GAAe,EAAE;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,MAAM,GAAe,EAAE;QACtC,OAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAwB,IAAI,IAAI,CAAC;IACvE,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,MAAM,GAAe,EAAE;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAa,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,MAAM,GAAe,EAAE;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAqB,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,WAAW,CAAI,EAAW;QACxB,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAA4B,CAAC,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,+DAA+D;IACjE,CAAC;IAED,KAAK;QACH,wEAAwE;QACxE,sEAAsE;QACtE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF;AA2BD,MAAM,OAAO,WAAW;IASZ,EAAE;IACF,KAAK;IATN,IAAI,GAAG,QAAiB,CAAC;IAElC;;;;OAIG;IACH,YACU,EAAW,EACX,KAA4C;
|
|
1
|
+
{"version":3,"file":"sql-driver.js","sourceRoot":"","sources":["../src/sql-driver.ts"],"names":[],"mappings":"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"}
|
package/dist/sql-schema.d.ts
CHANGED
|
@@ -23,12 +23,17 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import type { SqlDriver } from './sql-driver.js';
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
26
|
+
* The PRAGMA user_version stamp, frozen at 4. Schema changes are now numbered
|
|
27
|
+
* migrations (memoryMigrations(), recorded in `schema_migrations`); do not bump
|
|
28
|
+
* this for them.
|
|
29
|
+
*
|
|
30
|
+
* It is still written on every open because releases before the migration
|
|
31
|
+
* runner gate their full-table repairs (namespace+key dedupe, FTS5 row dedupe,
|
|
32
|
+
* issue #426) on `user_version < 4`, and write their own value back when they
|
|
33
|
+
* open the file. Here it serves two purposes: a store at 4 with no
|
|
34
|
+
* `schema_migrations` table was left by that code at the current schema and is
|
|
35
|
+
* adopted as a baseline; a tracked store found below 4 was opened by an older
|
|
36
|
+
* release since, so the repairs run again.
|
|
32
37
|
*/
|
|
33
38
|
export declare const SCHEMA_VERSION = 4;
|
|
34
39
|
/**
|
|
@@ -93,15 +98,22 @@ export declare function hasFTS5Table(driver: SqlDriver): boolean;
|
|
|
93
98
|
* Returns true if the FTS5 table is usable after this call.
|
|
94
99
|
*/
|
|
95
100
|
export declare function createFTS5Index(driver: SqlDriver, repair?: boolean): boolean;
|
|
101
|
+
/** Version of the newest migration this build knows. */
|
|
102
|
+
export declare const LATEST_MEMORY_MIGRATION: number;
|
|
96
103
|
/**
|
|
97
|
-
* Bring a database to the
|
|
98
|
-
*
|
|
99
|
-
* the
|
|
104
|
+
* Bring a database to the latest schema: refuse one from a newer release,
|
|
105
|
+
* adopt or migrate it (see memoryMigrations), then re-assert the invariants an
|
|
106
|
+
* older release that opened the file since may have undone.
|
|
107
|
+
*
|
|
108
|
+
* Those invariants are not one-shot migrations on purpose:
|
|
109
|
+
* - FTS5 sync triggers are redefined on every open (cheap, no data), since
|
|
110
|
+
* an older release reinstalls its own definitions;
|
|
111
|
+
* - the FTS5 table is built whenever it is missing, so a store first opened
|
|
112
|
+
* where FTS5 was unavailable gains it once a build that has FTS5 opens it;
|
|
113
|
+
* - the namespace+key repair re-runs whenever the unique index is missing;
|
|
114
|
+
* - both dedupe repairs re-run when user_version has dropped below 4.
|
|
100
115
|
*
|
|
101
|
-
*
|
|
102
|
-
* version is below SCHEMA_VERSION (an older release that opens the file
|
|
103
|
-
* writes its own lower version back, so it gets repaired again next time).
|
|
104
|
-
* The namespace+key repair also re-runs whenever the unique index is missing.
|
|
116
|
+
* Throws SchemaTooNewError for a store from a newer release.
|
|
105
117
|
*/
|
|
106
118
|
export declare function initializeSchema(driver: SqlDriver): MigrationReport;
|
|
107
119
|
//# sourceMappingURL=sql-schema.d.ts.map
|
package/dist/sql-schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-schema.d.ts","sourceRoot":"","sources":["../src/sql-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"sql-schema.d.ts","sourceRoot":"","sources":["../src/sql-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqD7D;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmBjE;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAOnE;AAED,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,eAAe,CAIhF;AA6BD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CASvD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,UAAO,GAAG,OAAO,CAkDzE;AAqID,wDAAwD;AACxD,eAAO,MAAM,uBAAuB,QAI3B,CAAC;AAYV;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,eAAe,CAgBnE"}
|
package/dist/sql-schema.js
CHANGED
|
@@ -21,13 +21,19 @@
|
|
|
21
21
|
* conservative — it copies before it drops, is idempotent, and leaves the
|
|
22
22
|
* legacy column in place rather than rewriting the table.
|
|
23
23
|
*/
|
|
24
|
+
import { runMigrations } from './schema-migrations.js';
|
|
24
25
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
26
|
+
* The PRAGMA user_version stamp, frozen at 4. Schema changes are now numbered
|
|
27
|
+
* migrations (memoryMigrations(), recorded in `schema_migrations`); do not bump
|
|
28
|
+
* this for them.
|
|
29
|
+
*
|
|
30
|
+
* It is still written on every open because releases before the migration
|
|
31
|
+
* runner gate their full-table repairs (namespace+key dedupe, FTS5 row dedupe,
|
|
32
|
+
* issue #426) on `user_version < 4`, and write their own value back when they
|
|
33
|
+
* open the file. Here it serves two purposes: a store at 4 with no
|
|
34
|
+
* `schema_migrations` table was left by that code at the current schema and is
|
|
35
|
+
* adopted as a baseline; a tracked store found below 4 was opened by an older
|
|
36
|
+
* release since, so the repairs run again.
|
|
31
37
|
*/
|
|
32
38
|
export const SCHEMA_VERSION = 4;
|
|
33
39
|
/**
|
|
@@ -146,30 +152,30 @@ export function hasLegacyInlineEmbedding(driver) {
|
|
|
146
152
|
*/
|
|
147
153
|
export function migrateLegacyInlineEmbeddings(driver) {
|
|
148
154
|
const report = { legacyColumnFound: false, migrated: 0, skipped: 0 };
|
|
155
|
+
driver.transaction(() => copyLegacyInlineEmbeddings(driver, report));
|
|
156
|
+
return report;
|
|
157
|
+
}
|
|
158
|
+
/** Body of migrateLegacyInlineEmbeddings without its transaction, for use inside a migration. */
|
|
159
|
+
function copyLegacyInlineEmbeddings(driver, report) {
|
|
149
160
|
if (!hasLegacyInlineEmbedding(driver))
|
|
150
|
-
return
|
|
161
|
+
return;
|
|
151
162
|
report.legacyColumnFound = true;
|
|
152
|
-
driver.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if (existing) {
|
|
162
|
-
report.skipped++;
|
|
163
|
-
continue;
|
|
164
|
-
}
|
|
165
|
-
driver.run('INSERT OR IGNORE INTO memory_embeddings (entry_id, embedding) VALUES (?, ?)', [
|
|
166
|
-
id,
|
|
167
|
-
row.embedding,
|
|
168
|
-
]);
|
|
169
|
-
report.migrated++;
|
|
163
|
+
const rows = driver.all(`SELECT e.id AS id, e.embedding AS embedding
|
|
164
|
+
FROM memory_entries e
|
|
165
|
+
WHERE e.embedding IS NOT NULL`);
|
|
166
|
+
for (const row of rows) {
|
|
167
|
+
const id = String(row.id);
|
|
168
|
+
const existing = driver.get('SELECT entry_id FROM memory_embeddings WHERE entry_id = ?', [id]);
|
|
169
|
+
if (existing) {
|
|
170
|
+
report.skipped++;
|
|
171
|
+
continue;
|
|
170
172
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
+
driver.run('INSERT OR IGNORE INTO memory_embeddings (entry_id, embedding) VALUES (?, ?)', [
|
|
174
|
+
id,
|
|
175
|
+
row.embedding,
|
|
176
|
+
]);
|
|
177
|
+
report.migrated++;
|
|
178
|
+
}
|
|
173
179
|
}
|
|
174
180
|
// ===== FTS5 Full-Text Search Index (Issue #66) =============================
|
|
175
181
|
/**
|
|
@@ -335,28 +341,89 @@ function hasNamespaceKeyUniqueIndex(driver) {
|
|
|
335
341
|
return false;
|
|
336
342
|
}
|
|
337
343
|
}
|
|
344
|
+
const CANONICAL_TABLES = [
|
|
345
|
+
'memory_entries',
|
|
346
|
+
'memory_embeddings',
|
|
347
|
+
'memory_entry_tags',
|
|
348
|
+
'agent_reads',
|
|
349
|
+
];
|
|
338
350
|
/**
|
|
339
|
-
*
|
|
340
|
-
*
|
|
341
|
-
*
|
|
351
|
+
* The memory schema as numbered migrations. 1-4 are the schema the pre-runner
|
|
352
|
+
* `initializeSchema()` produced, split into the steps it took; a store it
|
|
353
|
+
* left at user_version 4 is adopted at version 4 without any of them running.
|
|
354
|
+
* Each is idempotent, because a store below user_version 4 (or an untracked
|
|
355
|
+
* one in an unknown state) runs all of them.
|
|
342
356
|
*
|
|
343
|
-
*
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
357
|
+
* Append new migrations at the end; never edit or renumber a shipped one.
|
|
358
|
+
*/
|
|
359
|
+
function memoryMigrations(report) {
|
|
360
|
+
return [
|
|
361
|
+
{
|
|
362
|
+
id: 1,
|
|
363
|
+
description: 'canonical tables and indexes (memory_entries, memory_embeddings, memory_entry_tags, agent_reads)',
|
|
364
|
+
up: createCanonicalSchema,
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
id: 2,
|
|
368
|
+
description: 'copy legacy inline memory_entries.embedding into memory_embeddings (column kept)',
|
|
369
|
+
up: (driver) => copyLegacyInlineEmbeddings(driver, report),
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
id: 3,
|
|
373
|
+
description: 'dedupe namespace+key and add UNIQUE index idx_namespace_key_unique',
|
|
374
|
+
up: enforceNamespaceKeyUnique,
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
id: 4,
|
|
378
|
+
description: 'FTS5 index memory_entries_fts with sync triggers, deduping stale rows',
|
|
379
|
+
up: (driver) => void createFTS5Index(driver, true),
|
|
380
|
+
},
|
|
381
|
+
];
|
|
382
|
+
}
|
|
383
|
+
/** Version of the newest migration this build knows. */
|
|
384
|
+
export const LATEST_MEMORY_MIGRATION = memoryMigrations({
|
|
385
|
+
legacyColumnFound: false,
|
|
386
|
+
migrated: 0,
|
|
387
|
+
skipped: 0,
|
|
388
|
+
}).length;
|
|
389
|
+
/** An untracked store left at user_version 4 by the pre-runner code is already at migration 4. */
|
|
390
|
+
function detectBaseline(driver) {
|
|
391
|
+
const tables = new Set(driver.all("SELECT name FROM sqlite_master WHERE type = 'table'").map((r) => String(r.name)));
|
|
392
|
+
return readSchemaVersion(driver) >= SCHEMA_VERSION && CANONICAL_TABLES.every((t) => tables.has(t))
|
|
393
|
+
? 4
|
|
394
|
+
: 0;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Bring a database to the latest schema: refuse one from a newer release,
|
|
398
|
+
* adopt or migrate it (see memoryMigrations), then re-assert the invariants an
|
|
399
|
+
* older release that opened the file since may have undone.
|
|
400
|
+
*
|
|
401
|
+
* Those invariants are not one-shot migrations on purpose:
|
|
402
|
+
* - FTS5 sync triggers are redefined on every open (cheap, no data), since
|
|
403
|
+
* an older release reinstalls its own definitions;
|
|
404
|
+
* - the FTS5 table is built whenever it is missing, so a store first opened
|
|
405
|
+
* where FTS5 was unavailable gains it once a build that has FTS5 opens it;
|
|
406
|
+
* - the namespace+key repair re-runs whenever the unique index is missing;
|
|
407
|
+
* - both dedupe repairs re-run when user_version has dropped below 4.
|
|
408
|
+
*
|
|
409
|
+
* Throws SchemaTooNewError for a store from a newer release.
|
|
347
410
|
*/
|
|
348
411
|
export function initializeSchema(driver) {
|
|
349
|
-
const
|
|
350
|
-
|
|
351
|
-
const
|
|
352
|
-
if (
|
|
412
|
+
const storedUserVersion = readSchemaVersion(driver);
|
|
413
|
+
const report = { legacyColumnFound: false, migrated: 0, skipped: 0 };
|
|
414
|
+
const run = runMigrations(driver, memoryMigrations(report), { baseline: detectBaseline });
|
|
415
|
+
if (!report.legacyColumnFound)
|
|
416
|
+
report.legacyColumnFound = hasLegacyInlineEmbedding(driver);
|
|
417
|
+
// run.from >= 4: the repairs did not just run as migrations 3-4.
|
|
418
|
+
const regressed = storedUserVersion < SCHEMA_VERSION && run.from >= 4;
|
|
419
|
+
if (regressed || !hasNamespaceKeyUniqueIndex(driver))
|
|
353
420
|
enforceNamespaceKeyUnique(driver);
|
|
354
|
-
createFTS5Index(driver,
|
|
421
|
+
createFTS5Index(driver, regressed);
|
|
355
422
|
try {
|
|
356
423
|
driver.exec(`PRAGMA user_version = ${SCHEMA_VERSION}`);
|
|
357
424
|
}
|
|
358
425
|
catch {
|
|
359
|
-
/* pragma unsupported on this driver —
|
|
426
|
+
/* pragma unsupported on this driver — the stamp is advisory */
|
|
360
427
|
}
|
|
361
428
|
return report;
|
|
362
429
|
}
|
package/dist/sql-schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-schema.js","sourceRoot":"","sources":["../src/sql-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"sql-schema.js","sourceRoot":"","sources":["../src/sql-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-backend.d.ts","sourceRoot":"","sources":["../src/sqlite-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IAEjB,gCAAgC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAElB,wBAAwB;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAEzB,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;uCAImC;IACnC,aAAa,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"sqlite-backend.d.ts","sourceRoot":"","sources":["../src/sqlite-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IAEjB,gCAAgC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAElB,wBAAwB;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAEzB,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;uCAImC;IACnC,aAAa,EAAE,MAAM,CAAC;CACvB;AAsCD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,OAAO,CAAC,YAAY,CAAsB;IAE1C,YAAY,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM,EASpD;IAED,UAAgB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,CAyC/C;IAED,SAAS,CAAC,cAAc,IAAI,MAAM,GAAG,IAAI,CAIxC;CACF;eAEc,aAAa"}
|
package/dist/sqlite-backend.js
CHANGED
|
@@ -31,6 +31,21 @@ const DEFAULT_CONFIG = {
|
|
|
31
31
|
verbose: false,
|
|
32
32
|
busyTimeoutMs: 0,
|
|
33
33
|
};
|
|
34
|
+
/** Code on the error SQLiteBackend throws when better-sqlite3 itself cannot be loaded. */
|
|
35
|
+
const NATIVE_SQLITE_UNAVAILABLE = 'MEMORY_NATIVE_UNAVAILABLE';
|
|
36
|
+
function nativeUnavailable(cause) {
|
|
37
|
+
return Object.assign(new Error('SQLiteBackend requires the optional dependency better-sqlite3, which is not installed ' +
|
|
38
|
+
`(${cause.message}). Use SqlJsBackend, or select the 'sql.js' provider, ` +
|
|
39
|
+
'for environments where the native module cannot be built.'), { code: NATIVE_SQLITE_UNAVAILABLE });
|
|
40
|
+
}
|
|
41
|
+
function isBindingLoadError(error) {
|
|
42
|
+
const { code, message } = error;
|
|
43
|
+
if (typeof code === 'string' && code.startsWith('SQLITE_'))
|
|
44
|
+
return false;
|
|
45
|
+
return (code === 'ERR_DLOPEN_FAILED' ||
|
|
46
|
+
code === 'MODULE_NOT_FOUND' ||
|
|
47
|
+
/could not locate the bindings file|NODE_MODULE_VERSION|better_sqlite3\.node/i.test(message ?? ''));
|
|
48
|
+
}
|
|
34
49
|
/**
|
|
35
50
|
* SQLite backend for structured memory storage.
|
|
36
51
|
*
|
|
@@ -59,13 +74,23 @@ export class SQLiteBackend extends SqlBackend {
|
|
|
59
74
|
// Reaching here means this backend was chosen explicitly while the native
|
|
60
75
|
// module is unavailable. Say so, instead of surfacing a bare
|
|
61
76
|
// ERR_MODULE_NOT_FOUND from deep inside the driver.
|
|
62
|
-
throw
|
|
63
|
-
|
|
64
|
-
|
|
77
|
+
throw nativeUnavailable(error);
|
|
78
|
+
}
|
|
79
|
+
let db;
|
|
80
|
+
try {
|
|
81
|
+
db = new Database(this.sqliteConfig.databasePath, {
|
|
82
|
+
verbose: this.sqliteConfig.verbose ? console.log : undefined,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
// The native binding is loaded lazily by the first constructor call, so a
|
|
87
|
+
// missing or ABI-mismatched build surfaces here rather than at import. Any
|
|
88
|
+
// other failure (locked, corrupt, unwritable) is about the database, and
|
|
89
|
+
// falling back to another engine would not fix it.
|
|
90
|
+
if (isBindingLoadError(error))
|
|
91
|
+
throw nativeUnavailable(error);
|
|
92
|
+
throw error;
|
|
65
93
|
}
|
|
66
|
-
const db = new Database(this.sqliteConfig.databasePath, {
|
|
67
|
-
verbose: this.sqliteConfig.verbose ? console.log : undefined,
|
|
68
|
-
});
|
|
69
94
|
if (this.sqliteConfig.busyTimeoutMs > 0)
|
|
70
95
|
db.pragma(`busy_timeout = ${this.sqliteConfig.busyTimeoutMs}`);
|
|
71
96
|
if (this.sqliteConfig.walMode)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-backend.js","sourceRoot":"","sources":["../src/sqlite-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,+EAA+E;AAC/E,4FAA4F;AAC5F,EAAE;AACF,2EAA2E;AAC3E,2DAA2D;AAC3D,8EAA8E;AAC9E,6EAA6E;AAC7E,qEAAqE;AACrE,2CAA2C;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAkB,MAAM,iBAAiB,CAAC;AAoCrE,MAAM,cAAc,GAAwB;IAC1C,YAAY,EAAE,UAAU;IACxB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,gBAAgB,EAAE,SAAS;IAC3B,UAAU,EAAE,OAAO;IACnB,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IACnC,YAAY,CAAsB;IAE1C,YAAY,MAAM,GAAiC,EAAE;QACnD,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAChD,KAAK,CAAC;YACJ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,UAAU;QAMxB,IAAI,QAA2E,CAAC;QAChF,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC3C,QAAQ,GAAI,GAA+C,CAAC,OAAO,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0EAA0E;YAC1E,6DAA6D;YAC7D,oDAAoD;YACpD,MAAM,
|
|
1
|
+
{"version":3,"file":"sqlite-backend.js","sourceRoot":"","sources":["../src/sqlite-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqljs-backend.d.ts","sourceRoot":"","sources":["../src/sqljs-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IAErB,gCAAgC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAElB,wBAAwB;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAEzB,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IAEjB,8DAA8D;IAC9D,mBAAmB,EAAE,MAAM,CAAC;IAE5B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;4EAEwE;IACxE,aAAa,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"sqljs-backend.d.ts","sourceRoot":"","sources":["../src/sqljs-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IAErB,gCAAgC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAElB,wBAAwB;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAEzB,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IAEjB,8DAA8D;IAC9D,mBAAmB,EAAE,MAAM,CAAC;IAE5B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;4EAEwE;IACxE,aAAa,EAAE,MAAM,CAAC;CACvB;AA+ED,qBAAa,YAAa,SAAQ,UAAU;IAC1C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,YAAY,CAA+B;IAEnD;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAQ9B,YAAY,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM,EASnD;IAED,UAAgB,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC,CAmD/C;IAED,SAAS,CAAC,cAAc,IAAI,MAAM,GAAG,IAAI,CAIxC;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAUhC;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAO9B;CACF;eAEc,YAAY"}
|
package/dist/sqljs-backend.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
*
|
|
21
21
|
* @module v1/memory/sqljs-backend
|
|
22
22
|
*/
|
|
23
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
23
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
24
24
|
import { createRequire } from 'node:module';
|
|
25
25
|
import { dirname } from 'node:path';
|
|
26
26
|
import initSqlJs from 'sql.js';
|
|
@@ -45,6 +45,45 @@ function resolveLocalWasmPath() {
|
|
|
45
45
|
return null;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
/** Identity of the file's current contents (inode changes on every atomic rename). */
|
|
49
|
+
function fileSignature(path) {
|
|
50
|
+
try {
|
|
51
|
+
const st = statSync(path);
|
|
52
|
+
return `${st.ino}:${st.size}:${st.mtimeMs}`;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function unsafeDatabase(path, reason) {
|
|
59
|
+
return Object.assign(new Error(`SqlJsBackend cannot safely open ${path}: ${reason}. Opening it with sql.js would lose ` +
|
|
60
|
+
'data written by the native backend; install better-sqlite3 (or rebuild it) instead.'), { code: 'SQLJS_UNSAFE_DATABASE' });
|
|
61
|
+
}
|
|
62
|
+
/** sql.js ignores the write-ahead log, so frames still in it would be lost or overwritten. */
|
|
63
|
+
function assertNoWalSidecar(path) {
|
|
64
|
+
try {
|
|
65
|
+
if (statSync(`${path}-wal`).size > 0)
|
|
66
|
+
throw unsafeDatabase(path, 'a non-empty -wal file exists');
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
if (error.code === 'SQLJS_UNSAFE_DATABASE')
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** Header bytes 18-19 (file format write/read version) are 2 for a WAL-mode database. */
|
|
74
|
+
function assertHeaderNotWal(path, bytes) {
|
|
75
|
+
if (bytes.length > 19 && (bytes[18] === 2 || bytes[19] === 2)) {
|
|
76
|
+
throw unsafeDatabase(path, 'it is in WAL journal mode');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** The sql.js build has no FTS5, so writes to a database with an FTS5 index fail midway. */
|
|
80
|
+
function assertNoFts5Index(path, db) {
|
|
81
|
+
const found = db.exec("SELECT 1 FROM sqlite_master WHERE name = 'memory_entries_fts'");
|
|
82
|
+
if (found.length > 0) {
|
|
83
|
+
db.close();
|
|
84
|
+
throw unsafeDatabase(path, 'it has an FTS5 index that sql.js cannot maintain');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
48
87
|
const DEFAULT_CONFIG = {
|
|
49
88
|
databasePath: ':memory:',
|
|
50
89
|
optimize: true,
|
|
@@ -89,26 +128,40 @@ export class SqlJsBackend extends SqlBackend {
|
|
|
89
128
|
});
|
|
90
129
|
const path = this.sqlJsConfig.databasePath;
|
|
91
130
|
const isMemory = path === ':memory:';
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
131
|
+
const existed = !isMemory && existsSync(path);
|
|
132
|
+
// Signature of the file as loaded; the flush below refuses to overwrite a file
|
|
133
|
+
// that no longer matches it. Taken before the read so a change in between shows.
|
|
134
|
+
let loadedSignature = existed ? fileSignature(path) : null;
|
|
135
|
+
if (existed)
|
|
136
|
+
assertNoWalSidecar(path);
|
|
137
|
+
const bytes = existed ? new Uint8Array(readFileSync(path)) : null;
|
|
138
|
+
if (bytes)
|
|
139
|
+
assertHeaderNotWal(path, bytes);
|
|
140
|
+
const db = bytes ? new SQL.Database(bytes) : new SQL.Database();
|
|
141
|
+
if (bytes)
|
|
142
|
+
assertNoFts5Index(path, db);
|
|
95
143
|
if (this.sqlJsConfig.verbose) {
|
|
96
|
-
console.log(
|
|
144
|
+
console.log(existed
|
|
97
145
|
? `[SqlJsBackend] Loaded database from ${path}`
|
|
98
146
|
: '[SqlJsBackend] Created new in-memory database');
|
|
99
147
|
}
|
|
100
148
|
// Only give the driver a flush function when there is somewhere to flush to.
|
|
101
149
|
const flush = isMemory
|
|
102
150
|
? undefined
|
|
103
|
-
: async (
|
|
104
|
-
|
|
151
|
+
: async (out) => {
|
|
152
|
+
if (fileSignature(path) !== loadedSignature) {
|
|
153
|
+
throw Object.assign(new Error(`${path} changed on disk since this process loaded it; refusing to overwrite ` +
|
|
154
|
+
"another process's writes with a stale snapshot"), { code: 'SQLJS_STALE_SNAPSHOT' });
|
|
155
|
+
}
|
|
156
|
+
const buffer = Buffer.from(out);
|
|
105
157
|
writeFileAtomicSync(path, buffer);
|
|
158
|
+
loadedSignature = fileSignature(path);
|
|
106
159
|
if (this.sqlJsConfig.verbose) {
|
|
107
160
|
console.log(`[SqlJsBackend] Persisted ${buffer.length} bytes to ${path}`);
|
|
108
161
|
}
|
|
109
162
|
this.emit('persisted', { size: buffer.length, path });
|
|
110
163
|
};
|
|
111
|
-
return new SqlJsDriver(db, flush);
|
|
164
|
+
return new SqlJsDriver(db, flush, existed);
|
|
112
165
|
}
|
|
113
166
|
getAnnCacheDir() {
|
|
114
167
|
return this.sqlJsConfig.databasePath === ':memory:'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqljs-backend.js","sourceRoot":"","sources":["../src/sqljs-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"sqljs-backend.js","sourceRoot":"","sources":["../src/sqljs-backend.ts"],"names":[],"mappings":"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"}
|